diff --git a/.gitattributes b/.gitattributes index a62bab440760..d039b6c2377b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -75,6 +75,9 @@ /ruby/extractor/cargo-bazel-lock.json linguist-generated=true /ruby/extractor/cargo-bazel-lock.json -merge +# GitHub Agentic Workflows compiled output +.github/workflows/*.lock.yml linguist-generated=true + # auto-generated files for the C# build /csharp/paket.lock linguist-generated=true # needs eol=crlf, as `paket` touches this file and saves it as crlf diff --git a/.github/labeler.yml b/.github/labeler.yml index 65f820799716..83dabb7302dd 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -38,6 +38,10 @@ Swift: - swift/**/* - change-notes/**/*swift* +Unified: + - unified/**/* + - change-notes/**/*unified* + Actions: - actions/**/* - change-notes/**/*actions* diff --git a/.github/skills/bazel/SKILL.md b/.github/skills/bazel/SKILL.md new file mode 100644 index 000000000000..dc30ce30c57f --- /dev/null +++ b/.github/skills/bazel/SKILL.md @@ -0,0 +1,175 @@ +--- +name: bazel +description: Conventions for editing Bazel files in the github/codeql repository: the shared `misc/bazel` helpers, `codeql_platform_select` and the `{CODEQL_PLATFORM}` packaging placeholder, adding `MODULE.bazel` dependencies, and the `semmle_code` stub that keeps the standalone build working. Use when editing any `BUILD.bazel`, `*.bzl`, `MODULE.bazel` or `.bazelrc` here, and before validating such an edit. +--- + +# Bazel in the codeql repository + +A bzlmod module named `ql`, repo name `@codeql` ([`MODULE.bazel`](../../../MODULE.bazel)). It builds standalone, and is +also consumed by an internal module; standalone builds replace that module with a stub. + +## Traps + +Things that will waste your time or produce a wrong edit here. Read this section even if you skip the rest. + +* **`//...` does not work.** `bazel build //...`, and even `bazel query //...`, fail at the repo root: the patched + modules under [`misc/bazel/registry`](../../../misc/bazel/registry) are real packages referencing repos that are not + visible from the main repo, and [`.bazelrc`](../../../.bazelrc) notes separately that transitions break `...` builds. + The error names a registry directory unrelated to your edit, so it is easy to misdiagnose. **Validate the specific + target or package you changed**, not a recursive pattern. +* **There is no `MODULE.bazel.lock`, deliberately.** [`.bazelrc`](../../../.bazelrc) sets `--lockfile_mode=off` because + the workspace-relative module override makes a lockfile unstable. Do not add one, and do not "fix" its absence. +* **`linux_arm64` vs `linux-arm64`.** The keyword argument and config setting use an underscore; the platform *string* + substituted into paths and zip names uses a hyphen. They are not interchangeable. +* **Do not stub your way out of a missing internal dependency.** See [Building standalone](#building-standalone) for the + one narrow case where extending the stub is correct. + +## Conventions + +* **Copy a neighboring target rather than inventing a shape.** Packaging is not uniform: some packages use the + `codeql_*` wrappers, others still use `pkg_files` directly. Copy the closest *working* neighbor, and prefer the + wrapper for new code. +* **Pin anything fetched over the network** with `sha256` or `integrity`. Bazel only *warns* on an unpinned download, so + nothing fails loudly, but the build stops being reproducible and a retagged upstream release silently changes what you + build. `lfs_archive` is the exception: content is pinned by git object. +* **Format with `bazel run //misc/bazel/buildifier`.** It rewrites in place, so do not hand-tune formatting. Also wired + as a `pre-commit` hook ([`.pre-commit-config.yaml`](../../../.pre-commit-config.yaml)). + +## Where new code goes + +Bazel's own macro / rule / repository-rule distinction applies as usual. What is repo-specific: + +| Adding | Goes in | +| --- | --- | +| a new packaging shape | extend [`misc/bazel/pkg.bzl`](../../../misc/bazel/pkg.bzl), do not fork `pkg_files` | +| a new OS or arch split | [`misc/bazel/os.bzl`](../../../misc/bazel/os.bzl), do not hand-roll a `select()` over `@platforms//` | +| a fetch of something external | a repository rule ([`lfs.bzl`](../../../misc/bazel/lfs.bzl), [`ripunzip.bzl`](../../../misc/ripunzip/ripunzip.bzl)), not a `genrule` | +| a wrapper used by one language | next to that language ([`swift/rules.bzl`](../../../swift/rules.bzl)) | +| a wrapper used across languages | `misc/bazel/` | + +Prefer inline rules in `BUILD.bazel`. A `.bzl` file earns its `load()` only when the shape repeats across packages or a +value must be computed: [`rust.bzl`](../../../misc/bazel/rust.bzl) is worth it because every Rust binary that ships in a +pack must get the same universal-binary wrapper and symbols test, and forgetting either is a release bug. A local +debugging aid opts out and declares a plain `rust_binary`; see `swift-syntax-parse` in +[`unified/swift-syntax-rs/BUILD.bazel`](../../../unified/swift-syntax-rs/BUILD.bazel). The `_gen_binaries` list in +[`go/BUILD.bazel`](../../../go/BUILD.bazel) does not earn a `.bzl`, because it is shared within a single file, where a +local variable does the job. + +Macros here are typically a thin public wrapper around a private rule (`codeql_csharp_binary`, `swift_cc_binary`). Keep +the rule narrow and the ergonomics in the macro. Each macro decorates the caller's `name` to mint its helper targets, +for example `internal/` or `single_arch/`. Their visibility is that macro's choice (private, package +default, or the caller's own), so read the macro instead of assuming. When an error names a target you cannot find in +any source file, a macro minted it: grep the suffix under `misc/bazel/`. + +## Shared helpers + +Frequently-used pieces, so you load the existing one instead of rewriting it. Read the file for its actual exports. + +| `load()` path | Covers | +| --- | --- | +| `//misc/bazel:pkg.bzl` | CodeQL packs and packaging | +| `//misc/bazel:os.bzl` | platform and architecture selection | +| `//misc/bazel:lfs.bzl` | on-demand git-LFS repositories | +| `//misc/bazel:rust.bzl` | Rust binary wrapper | +| `//misc/bazel:csharp.bzl` | C# binary/library/test wrappers | +| `//misc/bazel:utils.bzl` | `select_os`; prefer `os.bzl`'s `os_select` in new code | + +[`defs.bzl`](../../../defs.bzl) at the root exports `codeql_platform` for *dependent* modules. It is not the way to get +the platform string here; use `os.bzl`. + +## Platform selection + +[`codeql_platform_select`](../../../misc/bazel/os.bzl) takes one keyword argument per CodeQL platform: `linux64`, +`linux_arm64`, `osx64` and `win64`. `otherwise` supplies the value for whichever of those you leave unset; it is **not** +a `//conditions:default`. **There is deliberately no fallback from `linux_arm64` to `linux64`.** If you only care about +the OS, use `os_select`, which gives Linux the same value on both architectures and has a `posix` shorthand for the +shared Linux/macOS value. + +In a macro (no `ctx`) it returns a `select()`: + +```python +load("//misc/bazel:os.bzl", "codeql_platform_select") +load("//misc/bazel:pkg.bzl", "codeql_pkg_files") + +codeql_pkg_files( + name = "extractor-arch", + exes = codeql_platform_select( + otherwise = ["//unified/extractor"], + win64 = ["//unified/extractor-unsupported-os:extractor"], + ), + prefix = "tools/{CODEQL_PLATFORM}", +) +``` + +If implementation code needs to *branch* on the value rather than pass it through, pass `ctx` and add +`OS_DETECTION_ATTRS` to the rule's attributes. The value is then resolved eagerly instead of being an opaque `select()`: + +```python +load("//misc/bazel:os.bzl", "OS_DETECTION_ATTRS", "os_select") + +def _impl(ctx): + ext = os_select(ctx, windows = ".exe", posix = "") + ... + +my_rule = rule( + implementation = _impl, + attrs = {"src": attr.label()} | OS_DETECTION_ATTRS, +) +``` + +## Packs + +`codeql_pack` assembles the files that become an extractor pack. See [`unified/BUILD.bazel`](../../../unified/BUILD.bazel) +for a minimal complete example and [`pkg.bzl`](../../../misc/bazel/pkg.bzl) for the arguments. The non-obvious parts: + +* **`{CODEQL_PLATFORM}` in a destination path is the routing mechanism**, not just a substitution. A path containing it + is *arch-specific* and lands in the per-architecture zip; every other path is *common*. So `prefix = + "tools/{CODEQL_PLATFORM}"` both places the file and marks it arch-specific. `arch_overrides` forces named + destinations into the arch-specific part without a placeholder. +* **`codeql_pkg_files` splits `srcs` (plain) from `exes` (mode 755)** and **rejects `attributes =`** with an explicit + error. Use `exes` rather than hand-rolling `pkg_attributes(mode = "755")`. +* **`pkg_dirs` and `pkg_symlinks` are unsupported** and fail at analysis time. +* `codeql_pack` also generates an installer and an `install` alias, hence `bazel run //unified:install`. Pass + `installer_alias = None` if one package defines several packs. +* `codeql_pack_group` exists for bundling packs into distribution zips, but nothing in this repo instantiates it. + +## Adding a dependency + +In order of preference: + +1. **A [Bazel Central Registry](https://registry.bazel.build/) module.** Add a `bazel_dep` in + [`MODULE.bazel`](../../../MODULE.bazel). +2. **A patched upstream module.** Add it under [`misc/bazel/registry`](../../../misc/bazel/registry), which `.bazelrc` + puts ahead of the BCR. Put patches in `modules///patches`, rename the version with a `-codeql.N` + suffix, and run [`fix.py`](../../../misc/bazel/registry/fix.py) to realign the metadata. +3. **A raw archive.** Use `http_archive` via `use_repo_rule`, or a repository rule. Copy an adjacent declaration and + keep its checksum field populated. + +Vendored Rust crates under [`misc/bazel/3rdparty`](../../../misc/bazel/3rdparty) are generated. Regenerate with +[`update_cargo_deps.sh`](../../../misc/bazel/3rdparty/update_cargo_deps.sh) rather than editing, and keep the +`use_repo` lists in sync, which `bazel mod tidy` does for module extensions. + +## Building standalone + +[`MODULE.bazel`](../../../MODULE.bazel) declares `semmle_code` with a `local_path_override` pointing at `..`, which +resolves when this repo is checked out inside the internal module. [`.bazelrc`](../../../.bazelrc), which Bazel reads +when invoked in *this* workspace, overrides that with a stub. This line is the whole reason a standalone build resolves: + +``` +common --override_module=semmle_code=%workspace%/misc/bazel/semmle_code_stub +``` + +Do not change either the override path or the `local_path_override`; they work as a pair. + +[`misc/bazel/semmle_code_stub`](../../../misc/bazel/semmle_code_stub) is an otherwise empty module supplying no-op +versions of the internal helpers that shared `.bzl` files load *unconditionally*. That is its only job, and it is small +enough to read. + +**Extend the stub only when a `.bzl` file every standalone target loads gains a new internal `load()`**, which breaks +package loading outright, for everyone. Prefer not needing one. **Never add a stub so that an internal-only target +appears to build**: some targets depend on internal libraries (`grep -rl @semmle_code --include=*.bazel` finds them) and +are correctly unbuildable here. Unlike a `load()`, such a dependency only fails when that target is actually requested. + +[`.bazelrc.internal`](../../../.bazelrc.internal) is **not** read here; it carries settings for the internal build. A +setting needed by both has to be written in both files, with paths differing because this repo sits at a different depth +there. diff --git a/.github/workflows/csharp-qltest.yml b/.github/workflows/csharp-qltest.yml index fc8bc218fe76..38ea2790dbf0 100644 --- a/.github/workflows/csharp-qltest.yml +++ b/.github/workflows/csharp-qltest.yml @@ -5,6 +5,10 @@ on: paths: - "csharp/**" - "shared/**" + - "!shared/tree-sitter-extractor/**" + - "!shared/yeast/**" + - "!shared/yeast-macros/**" + - "!shared/yeast-schema/**" - "misc/bazel/**" - .github/actions/fetch-codeql/action.yml - codeql-workspace.yml @@ -16,6 +20,10 @@ on: paths: - "csharp/**" - "shared/**" + - "!shared/tree-sitter-extractor/**" + - "!shared/yeast/**" + - "!shared/yeast-macros/**" + - "!shared/yeast-schema/**" - "misc/bazel/**" - .github/workflows/csharp-qltest.yml - .github/actions/fetch-codeql/action.yml diff --git a/.github/workflows/go-tests.yml b/.github/workflows/go-tests.yml index 6578f09b8dfc..5a3bc9342855 100644 --- a/.github/workflows/go-tests.yml +++ b/.github/workflows/go-tests.yml @@ -5,6 +5,10 @@ on: - "go/**" - "!go/documentation/**" - "shared/**" + - "!shared/tree-sitter-extractor/**" + - "!shared/yeast/**" + - "!shared/yeast-macros/**" + - "!shared/yeast-schema/**" - .github/workflows/go-tests.yml - .github/actions/** - codeql-workspace.yml diff --git a/.github/workflows/label-external-contributions.yml b/.github/workflows/label-external-contributions.yml new file mode 100644 index 000000000000..6538066e6768 --- /dev/null +++ b/.github/workflows/label-external-contributions.yml @@ -0,0 +1,120 @@ +name: Label external contributions + +on: + schedule: + - cron: "7,22,37,52 * * * *" + workflow_dispatch: + +permissions: {} + +concurrency: + group: label-external-contributions + cancel-in-progress: false + +jobs: + label: + if: github.ref_name == github.event.repository.default_branch + runs-on: ubuntu-latest + timeout-minutes: 10 + permissions: + pull-requests: write + + steps: + - name: Create organization membership token + id: membership-token + uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 + with: + client-id: ${{ vars.CODEQL_ORG_MEMBERS_APP_CLIENT_ID }} + private-key: ${{ secrets.CODEQL_ORG_MEMBERS_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + permission-members: read + + - name: Label external contributions + env: + API_URL: ${{ github.api_url }} + GH_TOKEN: ${{ github.token }} + MEMBERS_TOKEN: ${{ steps.membership-token.outputs.token }} + ORG: ${{ github.repository_owner }} + REPO: ${{ github.repository }} + run: | + set -euo pipefail + + label="external-contribution" + updated_cutoff=$(date -u -d "1 hour ago" "+%Y-%m-%dT%H:%M:%SZ") + + while IFS= read -r pr_number; do + if [[ ! "$pr_number" =~ ^[1-9][0-9]*$ ]]; then + echo "Skipping malformed pull request number." + continue + fi + + pr_json=$(gh api "repos/$REPO/pulls/$pr_number") + if ! jq -e \ + --arg repo "$REPO" \ + --arg label "$label" \ + '.state == "open" and + .draft == false and + .base.repo.full_name == $repo and + (.head.repo.full_name | type == "string") and + .head.repo.full_name != $repo and + .user.type == "User" and + (.user.login | type == "string" and length > 0) and + (any(.labels[]?; .name == $label) | not)' \ + >/dev/null <<<"$pr_json"; then + continue + fi + + author=$(jq -r '.user.login' <<<"$pr_json") + events=$(gh api --paginate \ + "repos/$REPO/issues/$pr_number/events?per_page=100" | + jq -cs 'add') + + if jq -e --arg label "$label" \ + 'any(.[]; .event == "labeled" and .label.name == $label)' \ + >/dev/null <<<"$events"; then + continue + fi + + if ! membership_status=$(curl \ + --silent \ + --show-error \ + --output /dev/null \ + --write-out '%{http_code}' \ + --connect-timeout 10 \ + --max-time 30 \ + --header "Accept: application/vnd.github+json" \ + --header "Authorization: Bearer $MEMBERS_TOKEN" \ + --header "X-GitHub-Api-Version: 2022-11-28" \ + "$API_URL/orgs/$ORG/members/$author"); then + echo "::error::Membership check failed for pull request #$pr_number." + exit 1 + fi + + case "$membership_status" in + 204) + echo "Pull request #$pr_number was opened by an organization member; skipping." + continue + ;; + 404) + ;; + *) + echo "::error::Membership check for pull request #$pr_number returned HTTP $membership_status." + exit 1 + ;; + esac + + jq -n --arg label "$label" '{labels: [$label]}' | + gh api --method POST \ + "repos/$REPO/issues/$pr_number/labels" \ + --input - \ + >/dev/null + echo "Labelled pull request #$pr_number." + done < <( + gh api --method GET --paginate "repos/$REPO/issues" \ + -f state=open \ + -f since="$updated_cutoff" \ + -f sort=updated \ + -f direction=desc \ + -f per_page=100 | + jq -r '.[] | select(.pull_request != null) | .number' + ) diff --git a/.github/workflows/ql-for-ql-build.yml b/.github/workflows/ql-for-ql-build.yml index e05a7c39c4b8..4885b614fb56 100644 --- a/.github/workflows/ql-for-ql-build.yml +++ b/.github/workflows/ql-for-ql-build.yml @@ -24,9 +24,8 @@ jobs: fetch-depth: 0 - name: Find codeql id: find-codeql - uses: github/codeql-action/init@main + uses: github/codeql-action/setup-codeql@main with: - languages: javascript # does not matter tools: nightly - uses: ./.github/actions/os-version id: os_version @@ -61,7 +60,7 @@ jobs: - name: Make database and analyze run: | ./ql/target/release/buramu | tee deprecated.blame # Add a blame file for the extractor to parse. - ${CODEQL} database create -l=ql ${DB} --search-path "${{ github.workspace }}" + ${CODEQL} database create --threads=0 -l=ql ${DB} --search-path "${{ github.workspace }}" ${CODEQL} database analyze -j0 --format=sarif-latest --output=ql-for-ql.sarif ${DB} ql/ql/src/codeql-suites/ql-code-scanning.qls --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" env: CODEQL: ${{ steps.find-codeql.outputs.codeql-path }} diff --git a/.github/workflows/ql-for-ql-dataset_measure.yml b/.github/workflows/ql-for-ql-dataset_measure.yml index b4561c04a965..21c27b9efb79 100644 --- a/.github/workflows/ql-for-ql-dataset_measure.yml +++ b/.github/workflows/ql-for-ql-dataset_measure.yml @@ -17,8 +17,6 @@ permissions: jobs: measure: - env: - CODEQL_THREADS: 4 # TODO: remove this once it's set by the CLI strategy: matrix: repo: @@ -29,9 +27,7 @@ jobs: - name: Find codeql id: find-codeql - uses: github/codeql-action/init@main - with: - languages: javascript # does not matter + uses: github/codeql-action/setup-codeql@main - uses: ./.github/actions/os-version id: os_version - uses: actions/cache@v3 diff --git a/.github/workflows/ql-for-ql-tests.yml b/.github/workflows/ql-for-ql-tests.yml index e21860519041..0454fe043fd3 100644 --- a/.github/workflows/ql-for-ql-tests.yml +++ b/.github/workflows/ql-for-ql-tests.yml @@ -27,9 +27,8 @@ jobs: - uses: actions/checkout@v5 - name: Find codeql id: find-codeql - uses: github/codeql-action/init@main + uses: github/codeql-action/setup-codeql@main with: - languages: javascript # does not matter tools: nightly - uses: ./.github/actions/os-version id: os_version @@ -54,7 +53,7 @@ jobs: key: ql-for-ql-tests - name: Run QL tests run: | - "${CODEQL}" test run --check-databases --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --search-path "${{ github.workspace }}" --consistency-queries ql/ql/consistency-queries --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" ql/ql/test + "${CODEQL}" test run --threads=0 --check-databases --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --search-path "${{ github.workspace }}" --consistency-queries ql/ql/consistency-queries --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" ql/ql/test env: CODEQL: ${{ steps.find-codeql.outputs.codeql-path }} @@ -73,9 +72,8 @@ jobs: echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH - name: Find codeql id: find-codeql - uses: github/codeql-action/init@main + uses: github/codeql-action/setup-codeql@main with: - languages: javascript # does not matter tools: nightly - uses: ./.github/actions/os-version id: os_version @@ -102,7 +100,7 @@ jobs: - name: Run a single QL tests - Unix if: runner.os != 'Windows' run: | - "${CODEQL}" test run --check-databases --search-path "${{ github.workspace }}" ql/ql/test/queries/style/DeadCode/DeadCode.qlref + "${CODEQL}" test run --threads=0 --check-databases --search-path "${{ github.workspace }}" ql/ql/test/queries/style/DeadCode/DeadCode.qlref env: CODEQL: ${{ steps.find-codeql.outputs.codeql-path }} - name: Run a single QL tests - Windows @@ -110,4 +108,4 @@ jobs: shell: pwsh run: | $Env:PATH += ";$(dirname ${{ steps.find-codeql.outputs.codeql-path }})" - codeql test run --check-databases --search-path "${{ github.workspace }}" ql/ql/test/queries/style/DeadCode/DeadCode.qlref + codeql test run --threads=0 --check-databases --search-path "${{ github.workspace }}" ql/ql/test/queries/style/DeadCode/DeadCode.qlref diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 34f5efb74ba6..6782733f7d2d 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -7,6 +7,9 @@ on: - "misc/bazel/**" - "misc/codegen/**" - "shared/**" + - "!shared/yeast/**" + - "!shared/yeast-macros/**" + - "!shared/yeast-schema/**" - "MODULE.bazel" - .github/workflows/rust.yml - .github/actions/** diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index 4a5613f988e5..3c9b0deb4a1f 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -7,6 +7,10 @@ on: - "misc/bazel/**" - "misc/codegen/**" - "shared/**" + - "!shared/tree-sitter-extractor/**" + - "!shared/yeast/**" + - "!shared/yeast-macros/**" + - "!shared/yeast-schema/**" - "*.bazel*" - .github/workflows/swift.yml - .github/actions/** diff --git a/.github/workflows/update-rust-analyzer.lock.yml b/.github/workflows/update-rust-analyzer.lock.yml new file mode 100644 index 000000000000..6a403c04f04c --- /dev/null +++ b/.github/workflows/update-rust-analyzer.lock.yml @@ -0,0 +1,1824 @@ +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"89825e14c90fc1af478d2ac55eb66b5a0df973d37da033c508e957ec5cea2543","body_hash":"ba6be270b77cdf21fed3489d4d8178200f5de7cfbab7ab7c273de57ad45f2383","compiler_version":"v0.88.7","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.80"}} +# gh-aw-manifest: {"version":1,"secrets":["GH_AW_CI_TRIGGER_TOKEN","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/cache/restore","sha":"55cc8345863c7cc4c66a329aec7e433d2d1c52a9","version":"v6.1.0"},{"repo":"actions/cache/save","sha":"55cc8345863c7cc4c66a329aec7e433d2d1c52a9","version":"v6.1.0"},{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"5e508589e03a7757a7e05b26e834292f5445bfb6","version":"v0.88.7"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.28.14","digest":"sha256:f7df036c86575527b61f3f7df91c4412349a12b2a74988d929eafa2999230c98","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.28.14@sha256:f7df036c86575527b61f3f7df91c4412349a12b2a74988d929eafa2999230c98"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.14","digest":"sha256:6f95e2234dd9bd6333a8ff28ccea7ecf0204acd4a09108723844dbd2bf6268c5","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.14@sha256:6f95e2234dd9bd6333a8ff28ccea7ecf0204acd4a09108723844dbd2bf6268c5"},{"image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.28.14","digest":"sha256:3a379c5e96e29499c815e9dd2a71334d01c326a9b73991c76544fda9cae35c34","pinned_image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.28.14@sha256:3a379c5e96e29499c815e9dd2a71334d01c326a9b73991c76544fda9cae35c34"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.28.14","digest":"sha256:2ce8df3abf3e9b76e9c0cf5863da41f1ab3f89b20ad14b988806ab89e7bf2cd5","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.28.14@sha256:2ce8df3abf3e9b76e9c0cf5863da41f1ab3f89b20ad14b988806ab89e7bf2cd5"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.18","digest":"sha256:85b940556a8faa4e1fdbef124bfd75f2c4ebd855a10b88a1c3b6f3e97f6f1a53","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.18@sha256:85b940556a8faa4e1fdbef124bfd75f2c4ebd855a10b88a1c3b6f3e97f6f1a53"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:0daa8971fa4732b647150cb6524a6b0804b68d5d24f6f58b5dd1af23bd63fb23","pinned_image":"ghcr.io/github/gh-aw-node@sha256:0daa8971fa4732b647150cb6524a6b0804b68d5d24f6f58b5dd1af23bd63fb23"},{"image":"ghcr.io/github/github-mcp-server:v1.11.0","digest":"sha256:fbec75de11c255213fa08d80fb166abe73d851fff631c51c0079872967720699","pinned_image":"ghcr.io/github/github-mcp-server:v1.11.0@sha256:fbec75de11c255213fa08d80fb166abe73d851fff631c51c0079872967720699"}],"mcp_servers":[{"name":"safeoutputs","tools":["create_pull_request","missing_data","missing_tool","noop"]}]} +# This file was automatically generated by gh-aw (v0.88.7). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md +# +# ___ _ _ +# / _ \ | | (_) +# | |_| | __ _ ___ _ __ | |_ _ ___ +# | _ |/ _` |/ _ \ '_ \| __| |/ __| +# | | | | (_| | __/ | | | |_| | (__ +# \_| |_/\__, |\___|_| |_|\__|_|\___| +# __/ | +# _ _ |___/ +# | | | | / _| | +# | | | | ___ _ __ _ __| |_| | _____ ____ +# | |/\| |/ _ \ '__| |/ /| _| |/ _ \ \ /\ / / ___| +# \ /\ / (_) | | | | ( | | | | (_) \ V V /\__ \ +# \/ \/ \___/|_| |_|\_\|_| |_|\___/ \_/\_/ |___/ +# +# +# To update this file, edit the corresponding .md file and run: +# gh aw compile +# Not all edits will cause changes to this file. +# +# For more information: https://github.github.com/gh-aw/introduction/overview/ +# +# Update the rust-analyzer version used by the Rust extractor and prepare a pull request. +# +# Intent: Keep the Rust extractor on the latest compatible rust-analyzer version with a reviewable, validated pull request. +# +# Secrets used: +# - GH_AW_CI_TRIGGER_TOKEN +# - GH_AW_DEFAULT_OTLP_HEADERS +# - GH_AW_GITHUB_MCP_SERVER_TOKEN +# - GH_AW_GITHUB_TOKEN +# - GITHUB_TOKEN +# +# Custom actions used: +# - actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 +# - actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 +# - actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 +# - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 +# - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 +# - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 (source v9) +# - actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 +# - actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 +# - github/gh-aw-actions/setup@5e508589e03a7757a7e05b26e834292f5445bfb6 # v0.88.7 +# +# Container images used: +# - ghcr.io/github/gh-aw-firewall/agent:0.28.14@sha256:f7df036c86575527b61f3f7df91c4412349a12b2a74988d929eafa2999230c98 +# - ghcr.io/github/gh-aw-firewall/api-proxy:0.28.14@sha256:6f95e2234dd9bd6333a8ff28ccea7ecf0204acd4a09108723844dbd2bf6268c5 +# - ghcr.io/github/gh-aw-firewall/cli-proxy:0.28.14@sha256:3a379c5e96e29499c815e9dd2a71334d01c326a9b73991c76544fda9cae35c34 +# - ghcr.io/github/gh-aw-firewall/squid:0.28.14@sha256:2ce8df3abf3e9b76e9c0cf5863da41f1ab3f89b20ad14b988806ab89e7bf2cd5 +# - ghcr.io/github/gh-aw-mcpg:v0.4.18@sha256:85b940556a8faa4e1fdbef124bfd75f2c4ebd855a10b88a1c3b6f3e97f6f1a53 +# - ghcr.io/github/gh-aw-node@sha256:0daa8971fa4732b647150cb6524a6b0804b68d5d24f6f58b5dd1af23bd63fb23 +# - ghcr.io/github/github-mcp-server:v1.11.0@sha256:fbec75de11c255213fa08d80fb166abe73d851fff631c51c0079872967720699 + +name: "Update rust-analyzer" +on: + # roles: # Roles processed as role check in pre-activation job + # - admin # Roles processed as role check in pre-activation job + # - maintainer # Roles processed as role check in pre-activation job + # - write # Roles processed as role check in pre-activation job + workflow_dispatch: + inputs: + aw_context: + default: "" + description: "Agent caller context (used internally by Agentic Workflows)." + required: false + type: string + +permissions: {} + +concurrency: + cancel-in-progress: false + group: update-rust-analyzer + +run-name: "Update rust-analyzer" + +env: + OTEL_EXPORTER_OTLP_ENDPOINT: ${{ vars.GH_AW_DEFAULT_OTLP_ENDPOINT }} + OTEL_SERVICE_NAME: gh-aw.update-rust-analyzer + OTEL_RESOURCE_ATTRIBUTES: 'gh-aw.workflow.name=Update%20rust-analyzer,gh-aw.repository=${{ github.repository }},gh-aw.run.id=${{ github.run_id }},github.run_id=${{ github.run_id }},gh-aw.engine.id=copilot' + OTEL_EXPORTER_OTLP_HEADERS: ${{ secrets.GH_AW_DEFAULT_OTLP_HEADERS }} + GH_AW_OTLP_ENDPOINTS: '[{"url":"${{ vars.GH_AW_DEFAULT_OTLP_ENDPOINT }}","headers":"${{ secrets.GH_AW_DEFAULT_OTLP_HEADERS }}"}]' + GH_AW_OTLP_IF_MISSING: ignore + +jobs: + activation: + runs-on: ubuntu-slim + permissions: + actions: read + contents: read + env: + GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} + outputs: + comment_id: "" + comment_repo: "" + daily_ai_credits_exceeded: ${{ steps.daily-effective-workflow-guardrail.outputs.daily_ai_credits_exceeded == 'true' }} + daily_ai_credits_guardrail_status: ${{ steps.daily-effective-workflow-guardrail.outputs.daily_ai_credits_guardrail_status || '' }} + daily_ai_credits_threshold: ${{ steps.daily-effective-workflow-guardrail.outputs.daily_ai_credits_threshold || '' }} + daily_ai_credits_total_effective_tokens: ${{ steps.daily-effective-workflow-guardrail.outputs.daily_ai_credits_total_effective_tokens || '' }} + engine_id: ${{ steps.generate_aw_info.outputs.engine_id }} + lockdown_check_failed: ${{ steps.generate_aw_info.outputs.lockdown_check_failed == 'true' }} + model: ${{ steps.generate_aw_info.outputs.model }} + oauth_token_check_failed: ${{ steps.check-oauth-tokens.outputs.oauth_token_check_failed == 'true' }} + setup-parent-span-id: ${{ steps.setup.outputs.parent-span-id || steps.setup.outputs.span-id }} + setup-span-id: ${{ steps.setup.outputs.span-id }} + setup-trace-id: ${{ steps.setup.outputs.trace-id }} + stale_lock_file_failed: ${{ steps.check-lock-file.outputs.stale_lock_file_failed == 'true' }} + steps: + - name: Setup Scripts + id: setup + uses: github/gh-aw-actions/setup@5e508589e03a7757a7e05b26e834292f5445bfb6 # v0.88.7 + with: + destination: ${{ runner.temp }}/gh-aw/actions + job-name: ${{ github.job }} + safe-output-artifact-client: ${{ env.GH_AW_MAX_DAILY_AI_CREDITS != '' }} + env: + GH_AW_SETUP_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_CURRENT_WORKFLOW_REF: ${{ github.repository }}/.github/workflows/update-rust-analyzer.lock.yml@${{ github.ref }} + GH_AW_INFO_VERSION: "1.0.80" + GH_AW_INFO_AWF_VERSION: "v0.28.14" + GH_AW_INFO_ENGINE_ID: "copilot" + - name: Mask OTLP telemetry headers + run: bash "${RUNNER_TEMP}/gh-aw/actions/mask_otlp_headers.sh" + - name: Generate agentic run info + id: generate_aw_info + env: + GH_AW_INFO_ENGINE_ID: "copilot" + GH_AW_INFO_ENGINE_NAME: "GitHub Copilot CLI" + GH_AW_INFO_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || vars.GH_AW_DEFAULT_MODEL_COPILOT || 'auto' }} + GH_AW_INFO_VERSION: "1.0.80" + GH_AW_INFO_AGENT_VERSION: "1.0.80" + GH_AW_INFO_CLI_VERSION: "v0.88.7" + GH_AW_INFO_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_INFO_EXPERIMENTAL: "false" + GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: "true" + GH_AW_INFO_STAGED: "false" + GH_AW_INFO_ALLOWED_DOMAINS: '["defaults","github","github-actions","rust","bazel","python"]' + GH_AW_INFO_FIREWALL_ENABLED: "true" + GH_AW_INFO_AWF_VERSION: "v0.28.14" + GH_AW_INFO_AWMG_VERSION: "" + GH_AW_INFO_FIREWALL_TYPE: "squid" + GH_AW_INFO_AGENT_RUNTIME: "" + GH_AW_INFO_FRONTMATTER_EMOJI: "🦀" + GH_AW_COMPILED_STRICT: "true" + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'generate_aw_info.cjs')); + await main(core, context); + - name: Restore daily AIC usage cache + id: restore-daily-aic-cache + if: ${{ env.GH_AW_MAX_DAILY_AI_CREDITS != '' }} + continue-on-error: true + uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + with: + key: agentic-workflow-usage-updaterustanalyzer-${{ github.run_id }} + restore-keys: agentic-workflow-usage-updaterustanalyzer- + path: /tmp/gh-aw/agentic-workflow-usage-cache.jsonl + - name: Restore daily AIC usage cache (artifact fallback) + id: restore-daily-aic-cache-fallback + if: ${{ env.GH_AW_MAX_DAILY_AI_CREDITS != '' }} + continue-on-error: true + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_RESTORE_DAILY_AIC_CACHE_HIT: ${{ steps.restore-daily-aic-cache.outputs.cache-hit }} + GH_AW_RESTORE_DAILY_AIC_CACHE_MATCHED_KEY: ${{ steps.restore-daily-aic-cache.outputs.cache-matched-key }} + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'restore_aic_usage_cache_fallback.cjs')); + await main(); + - name: Check daily workflow token guardrail + id: daily-effective-workflow-guardrail + if: ${{ env.GH_AW_MAX_DAILY_AI_CREDITS != '' }} + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_WORKFLOW_ID: "update-rust-analyzer" + GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + GH_AW_WORKFLOW_DISPATCH_AW_CONTEXT: ${{ github.event.inputs.aw_context || '' }} + GH_AW_HAS_SLASH_COMMAND: "false" + GH_AW_HAS_LABEL_COMMAND: "false" + GH_AW_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'check_daily_aic_workflow_guardrail.cjs')); + await main(); + - name: Check for OAuth tokens + id: check-oauth-tokens + run: bash "${RUNNER_TEMP}/gh-aw/actions/check_oauth_tokens.sh" + env: + GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} + - name: Checkout .github and .agents folders + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + sparse-checkout: | + .github + .agents + .claude + .codex + .gemini + .pi + sparse-checkout-cone-mode: true + fetch-depth: 1 + - name: Save agent config folders for base branch restoration + env: + GH_AW_AGENT_FOLDERS: ".agents .github" + GH_AW_AGENT_FILES: "AGENTS.md" + run: | + bash "${RUNNER_TEMP}/gh-aw/actions/save_base_github_folders.sh" + - name: Check workflow lock file + id: check-lock-file + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_WORKFLOW_FILE: "update-rust-analyzer.lock.yml" + GH_AW_CONTEXT_WORKFLOW_REF: "${{ github.workflow_ref }}" + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'check_workflow_timestamp_api.cjs')); + await main(); + - name: Check compile-agentic version + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_COMPILED_VERSION: "v0.88.7" + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'check_version_updates.cjs')); + await main(); + - name: Log runtime features + if: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} + run: bash "${RUNNER_TEMP}/gh-aw/actions/log_runtime_features_summary.sh" + - name: Create prompt with built-in context + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_ACTIONS_DIR: ${{ runner.temp }}/gh-aw/actions + GH_AW_PROMPT: ${{ runner.temp }}/gh-aw/aw-prompts/prompt.txt + GH_AW_SAFE_OUTPUTS: ${{ runner.temp }}/gh-aw/safeoutputs/outputs.jsonl + GH_AW_PROMPT_CONFIG: "{\"items\":[{\"content_env\":\"GH_AW_PROMPT_CONTENT_0000\"},{\"file\":\"xpia.md\"},{\"file\":\"temp_folder_prompt.md\"},{\"file\":\"markdown.md\"},{\"file\":\"safe_outputs_prompt.md\"},{\"content_env\":\"GH_AW_PROMPT_CONTENT_0001\"},{\"file\":\"safe_outputs_create_pull_request.md\"},{\"content_env\":\"GH_AW_PROMPT_CONTENT_0002\"},{\"file\":\"mcp_cli_tools_with_safeoutputs_prompt.md\"},{\"content_env\":\"GH_AW_PROMPT_CONTENT_0003\"},{\"file\":\"cli_proxy_with_safeoutputs_prompt.md\"},{\"content_env\":\"GH_AW_PROMPT_CONTENT_0004\"},{\"content_env\":\"GH_AW_PROMPT_CONTENT_0005\"}]}" + GH_AW_EXPR_1A3A194A: ${{ github.event.discussion.number || (fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_type == 'discussion' && fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_number) }} + GH_AW_EXPR_463A214A: ${{ github.event.pull_request.number || (fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_type == 'pull_request' && fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_number) }} + GH_AW_EXPR_802A9F6A: ${{ github.event.issue.number || (fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_type == 'issue' && fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_number) }} + GH_AW_EXPR_FF1D34CE: ${{ github.event.comment.id || fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').comment_id }} + GH_AW_GITHUB_ACTOR: ${{ github.actor }} + GH_AW_GITHUB_REPOSITORY: ${{ github.repository }} + GH_AW_GITHUB_RUN_ID: ${{ github.run_id }} + GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }} + GH_AW_PROMPT_CONTENT_0000: "\n" + GH_AW_PROMPT_CONTENT_0001: "\nTools: create_pull_request, missing_tool, missing_data, noop\n" + GH_AW_PROMPT_CONTENT_0002: "\n" + GH_AW_PROMPT_CONTENT_0003: "\nThe following GitHub context information is available for this workflow:\n{{#if github.actor}}\n- **actor**: __GH_AW_GITHUB_ACTOR__\n{{/if}}\n{{#if github.repository}}\n- **repository**: __GH_AW_GITHUB_REPOSITORY__\n{{/if}}\n{{#if github.workspace}}\n- **workspace**: __GH_AW_GITHUB_WORKSPACE__\n{{/if}}\n{{#if github.event.issue.number || (github.aw.context.item_type == 'issue' && github.aw.context.item_number)}}\n- **issue-number**: #__GH_AW_EXPR_802A9F6A__\n{{/if}}\n{{#if github.event.discussion.number || (github.aw.context.item_type == 'discussion' && github.aw.context.item_number)}}\n- **discussion-number**: #__GH_AW_EXPR_1A3A194A__\n{{/if}}\n{{#if github.event.pull_request.number || (github.aw.context.item_type == 'pull_request' && github.aw.context.item_number)}}\n- **pull-request-number**: #__GH_AW_EXPR_463A214A__\n{{/if}}\n{{#if github.event.comment.id || github.aw.context.comment_id}}\n- **comment-id**: __GH_AW_EXPR_FF1D34CE__\n{{/if}}\n{{#if github.run_id}}\n- **workflow-run-id**: __GH_AW_GITHUB_RUN_ID__\n{{/if}}\n- **checkouts**: The following repositories have been checked out and are available in the workspace:\n - repo `__GH_AW_GITHUB_REPOSITORY__` → `$GITHUB_WORKSPACE` (cwd) [full history, all branches available as remote-tracking refs]\n - **Note**: If a branch you need is not in the list above and is not listed as an additional fetched ref, it has NOT been checked out. For private repositories you cannot fetch it. If the branch is required and not available, exit with an error and ask the user to add it to the `fetch:` option of the `checkout:` configuration (e.g., `fetch: [\"refs/pulls/open/*\"]` for all open PR refs, or `fetch: [\"main\", \"feature/my-branch\"]` for specific branches).\n - **Warning: No git credentials are available to the agent.** Credentials are\n intentionally removed after the checkout step for security. This means any git\n operation that needs to authenticate to the remote will fail. In private repositories, that includes:\n - `git fetch`, `git pull`, `git clone`, and `git push` (direct push, not via safe-output tools)\n - Checking out or switching to a remote branch that is not already fetched\n - Deepening a shallow clone (`git fetch --unshallow`)\n - On-demand blob fetches in partial/blobless clones (operations on files not in the initial checkout)\n Do NOT attempt to configure credentials, run `git credential fill`, or modify `.gitconfig` —\n authentication will not succeed. If you encounter credential prompts or authentication errors,\n stop immediately and report the limitation rather than spending turns trying to work around it.\n\n\n" + GH_AW_PROMPT_CONTENT_0004: "\n" + GH_AW_PROMPT_CONTENT_0005: "{{#runtime-import .github/workflows/update-rust-analyzer.md}}\n" + with: + script: | + const { setupGlobals } = require(process.env.GH_AW_ACTIONS_DIR + '/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(process.env.GH_AW_ACTIONS_DIR + '/create_prompt.cjs'); + await main(core); + - name: Interpolate variables and render templates + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_PROMPT: ${{ runner.temp }}/gh-aw/aw-prompts/prompt.txt + GH_AW_ENGINE_ID: "copilot" + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'interpolate_prompt.cjs')); + await main(); + - name: Substitute placeholders + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_PROMPT: ${{ runner.temp }}/gh-aw/aw-prompts/prompt.txt + GH_AW_EXPR_1A3A194A: ${{ github.event.discussion.number || (fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_type == 'discussion' && fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_number) }} + GH_AW_EXPR_463A214A: ${{ github.event.pull_request.number || (fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_type == 'pull_request' && fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_number) }} + GH_AW_EXPR_802A9F6A: ${{ github.event.issue.number || (fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_type == 'issue' && fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').item_number) }} + GH_AW_EXPR_FF1D34CE: ${{ github.event.comment.id || fromJSON(github.event.inputs.aw_context || github.event.client_payload.aw_context || '{}').comment_id }} + GH_AW_GITHUB_ACTOR: ${{ github.actor }} + GH_AW_GITHUB_REPOSITORY: ${{ github.repository }} + GH_AW_GITHUB_RUN_ID: ${{ github.run_id }} + GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }} + GH_AW_MCP_CLI_SERVERS_LIST: '- `safeoutputs` — run `safeoutputs --help` to see available tools' + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + + const substitutePlaceholders = require(path.join(actionsDir, 'substitute_placeholders.cjs')); + + // Call the substitution function + return await substitutePlaceholders({ + file: process.env.GH_AW_PROMPT, + substitutions: { + GH_AW_EXPR_1A3A194A: process.env.GH_AW_EXPR_1A3A194A, + GH_AW_EXPR_463A214A: process.env.GH_AW_EXPR_463A214A, + GH_AW_EXPR_802A9F6A: process.env.GH_AW_EXPR_802A9F6A, + GH_AW_EXPR_FF1D34CE: process.env.GH_AW_EXPR_FF1D34CE, + GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, + GH_AW_GITHUB_REPOSITORY: process.env.GH_AW_GITHUB_REPOSITORY, + GH_AW_GITHUB_RUN_ID: process.env.GH_AW_GITHUB_RUN_ID, + GH_AW_GITHUB_WORKSPACE: process.env.GH_AW_GITHUB_WORKSPACE, + GH_AW_MCP_CLI_SERVERS_LIST: process.env.GH_AW_MCP_CLI_SERVERS_LIST + } + }); + - name: Validate prompt placeholders + env: + GH_AW_PROMPT: ${{ runner.temp }}/gh-aw/aw-prompts/prompt.txt + run: | + bash "${RUNNER_TEMP}/gh-aw/actions/validate_prompt_placeholders.sh" + - name: Print prompt + env: + GH_AW_PROMPT: ${{ runner.temp }}/gh-aw/aw-prompts/prompt.txt + run: | + bash "${RUNNER_TEMP}/gh-aw/actions/print_prompt_summary.sh" + - name: Stage prompt files for artifact upload + run: | + mkdir -p /tmp/gh-aw/aw-prompts + cp -a "${RUNNER_TEMP}/gh-aw/aw-prompts/." /tmp/gh-aw/aw-prompts/ + - name: Upload activation artifact + if: success() || failure() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: activation + include-hidden-files: true + path: | + /tmp/gh-aw/aw_info.json + /tmp/gh-aw/models.json + /tmp/gh-aw/aw-prompts/prompt.txt + /tmp/gh-aw/aw-prompts/prompt-template.txt + /tmp/gh-aw/aw-prompts/prompt-import-tree.json + /tmp/gh-aw/github_rate_limits.jsonl + /tmp/gh-aw/base + /tmp/gh-aw/.github/agents + /tmp/gh-aw/.github/skills + if-no-files-found: ignore + retention-days: 1 + + agent: + needs: activation + if: needs.activation.outputs.daily_ai_credits_exceeded != 'true' + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + copilot-requests: write + pull-requests: read + timeout-minutes: 180 + env: + DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} + GH_AW_ASSETS_ALLOWED_EXTS: "" + GH_AW_ASSETS_BRANCH: "" + GH_AW_ASSETS_MAX_SIZE_KB: 0 + GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs + GH_AW_PR_HEAD_BASE_BRANCH: "" + GH_AW_PR_HEAD_BASE_PR_NUMBER: "" + GH_AW_PR_HEAD_BASE_REF: "" + GH_AW_PR_HEAD_BASE_REPO: "" + GH_AW_PR_HEAD_BASE_SHA: "" + GH_AW_PR_HEAD_REPO: "" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} + GH_AW_WORKFLOW_ID_SANITIZED: updaterustanalyzer + outputs: + agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} + ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} + aic: ${{ steps.parse-mcp-gateway.outputs.aic }} + ambient_context: ${{ steps.parse-mcp-gateway.outputs.ambient_context }} + checkout_pr_success: ${{ steps.checkout-pr.outputs.checkout_pr_success || 'true' }} + effective_tokens: ${{ steps.parse-mcp-gateway.outputs.effective_tokens }} + has_patch: ${{ steps.collect_output.outputs.has_patch }} + http_400_response_error: ${{ steps.detect-agent-errors.outputs.http_400_response_error || 'false' }} + inference_access_error: ${{ steps.detect-agent-errors.outputs.inference_access_error || 'false' }} + invocation_cap_exceeded: ${{ steps.detect-agent-errors.outputs.invocation_cap_exceeded || 'false' }} + max_cache_misses_exceeded: ${{ steps.detect-agent-errors.outputs.max_cache_misses_exceeded || 'false' }} + mcp_policy_error: ${{ steps.detect-agent-errors.outputs.mcp_policy_error || 'false' }} + missing_model_pricing_error: ${{ steps.detect-agent-errors.outputs.missing_model_pricing_error || 'false' }} + missing_model_pricing_model_name: ${{ steps.detect-agent-errors.outputs.missing_model_pricing_model_name || '' }} + model: ${{ needs.activation.outputs.model }} + model_not_supported_error: ${{ steps.detect-agent-errors.outputs.model_not_supported_error || 'false' }} + output: ${{ steps.collect_output.outputs.output }} + output_types: ${{ steps.collect_output.outputs.output_types }} + setup-parent-span-id: ${{ steps.setup.outputs.parent-span-id || steps.setup.outputs.span-id }} + setup-span-id: ${{ steps.setup.outputs.span-id }} + setup-trace-id: ${{ steps.setup.outputs.trace-id }} + shell_expansion_guard_rejected: ${{ steps.detect-agent-errors.outputs.shell_expansion_guard_rejected || 'false' }} + unknown_model_ai_credits: ${{ steps.parse-mcp-gateway.outputs.unknown_model_ai_credits || 'false' }} + steps: + - name: Setup Scripts + id: setup + uses: github/gh-aw-actions/setup@5e508589e03a7757a7e05b26e834292f5445bfb6 # v0.88.7 + with: + destination: ${{ runner.temp }}/gh-aw/actions + job-name: ${{ github.job }} + trace-id: ${{ needs.activation.outputs.setup-trace-id }} + parent-span-id: ${{ needs.activation.outputs.setup-parent-span-id || needs.activation.outputs.setup-span-id }} + env: + GH_AW_SETUP_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_CURRENT_WORKFLOW_REF: ${{ github.repository }}/.github/workflows/update-rust-analyzer.lock.yml@${{ github.ref }} + GH_AW_INFO_VERSION: "1.0.80" + GH_AW_INFO_AWF_VERSION: "v0.28.14" + GH_AW_INFO_ENGINE_ID: "copilot" + - name: Set runtime paths + id: set-runtime-paths + env: + GH_AW_RUNNER_TOOL_CACHE: ${{ runner.tool_cache }} + run: | + if [ -z "${RUNNER_TOOL_CACHE:-}" ]; then + echo "RUNNER_TOOL_CACHE=${GH_AW_RUNNER_TOOL_CACHE}" >> "$GITHUB_ENV" + fi + { + echo "GH_AW_SAFE_OUTPUTS=${RUNNER_TEMP}/gh-aw/safeoutputs/outputs.jsonl" + echo "GH_AW_SAFE_OUTPUTS_CONFIG_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" + echo "GH_AW_SAFE_OUTPUTS_TOOLS_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/tools.json" + } >> "$GITHUB_OUTPUT" + - name: Mask OTLP telemetry headers + run: bash "${RUNNER_TEMP}/gh-aw/actions/mask_otlp_headers.sh" + - name: Check OTLP telemetry configuration + run: bash "${RUNNER_TEMP}/gh-aw/actions/check_otlp_default_credentials.sh" + - name: Checkout repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + fetch-depth: 0 + - name: Create gh-aw temp directory + run: bash "${RUNNER_TEMP}/gh-aw/actions/create_gh_aw_tmp_dir.sh" + - name: Configure gh CLI for GitHub Enterprise + run: bash "${RUNNER_TEMP}/gh-aw/actions/configure_gh_for_ghe.sh" + env: + GH_TOKEN: ${{ github.token }} + - name: Download activation artifact + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: activation + path: /tmp/gh-aw + - name: Set up CodeQL + uses: ./.github/actions/fetch-codeql + - name: Configure Git + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + - continue-on-error: true + name: Install cargo-edit + run: cargo install cargo-edit@0.13.0 --locked + - name: Run rust-analyzer updater script + run: "mkdir -p /tmp/gh-aw/agent\nset +e\npython3 rust/scripts/update_rust_analyzer.py \\\n 2>&1 | tee /tmp/gh-aw/agent/rust-analyzer-update.log\nstatus=${PIPESTATUS[0]}\nset -e\n\nprintf '%s\\n' \"$status\" > /tmp/gh-aw/agent/rust-analyzer-update-status.txt\nif grep -Fxq \"No new rust-analyzer version available.\" \\\n /tmp/gh-aw/agent/rust-analyzer-update.log; then\n printf '%s\\n' \"no-update\" > /tmp/gh-aw/agent/rust-analyzer-update-result.txt\nelse\n printf '%s\\n' \"update\" > /tmp/gh-aw/agent/rust-analyzer-update-result.txt\nfi" + + - name: Configure Git credentials + env: + GITHUB_REPOSITORY: ${{ github.repository }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_TOKEN: ${{ github.token }} + run: bash "${RUNNER_TEMP}/gh-aw/actions/configure_git_credentials.sh" + - name: Checkout PR branch + id: checkout-pr + if: | + github.event.pull_request || github.event.issue.pull_request || github.event_name == 'workflow_dispatch' && fromJSON(github.event.inputs.aw_context || '{}').item_type == 'pull_request' + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + with: + github-token: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'checkout_pr_branch.cjs')); + await main(); + - name: Install GitHub Copilot CLI + run: bash "${RUNNER_TEMP}/gh-aw/actions/install_copilot_cli.sh" + env: + GH_HOST: github.com + GH_AW_COMPILED_VERSION: v0.88.7 + - name: Install AWF binary + run: bash "${RUNNER_TEMP}/gh-aw/actions/install_awf_binary.sh" v0.28.14 --rootless + - name: Determine automatic lockdown mode for GitHub MCP Server + id: determine-automatic-lockdown + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 (source v9) + env: + GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const determineAutomaticLockdown = require(path.join(actionsDir, 'determine_automatic_lockdown.cjs')); + await determineAutomaticLockdown(github, context, core); + - name: Restore agent config folders from base branch + if: steps.checkout-pr.outcome == 'success' + env: + GH_AW_AGENT_FOLDERS: ".agents .github" + GH_AW_AGENT_FILES: "AGENTS.md" + run: bash "${RUNNER_TEMP}/gh-aw/actions/restore_base_github_folders.sh" + - name: Restore inline sub-agents from activation artifact + env: + GH_AW_SUB_AGENT_DIR: ".github/agents" + GH_AW_SUB_AGENT_EXT: ".agent.md" + run: bash "${RUNNER_TEMP}/gh-aw/actions/restore_inline_sub_agents.sh" + - name: Restore inline skills from activation artifact + env: + GH_AW_SKILL_DIR: ".github/skills" + run: bash "${RUNNER_TEMP}/gh-aw/actions/restore_inline_skills.sh" + - name: Download container images + run: bash "${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh" ghcr.io/github/gh-aw-firewall/agent:0.28.14@sha256:f7df036c86575527b61f3f7df91c4412349a12b2a74988d929eafa2999230c98 ghcr.io/github/gh-aw-firewall/api-proxy:0.28.14@sha256:6f95e2234dd9bd6333a8ff28ccea7ecf0204acd4a09108723844dbd2bf6268c5 ghcr.io/github/gh-aw-firewall/cli-proxy:0.28.14@sha256:3a379c5e96e29499c815e9dd2a71334d01c326a9b73991c76544fda9cae35c34 ghcr.io/github/gh-aw-firewall/squid:0.28.14@sha256:2ce8df3abf3e9b76e9c0cf5863da41f1ab3f89b20ad14b988806ab89e7bf2cd5 ghcr.io/github/gh-aw-mcpg:v0.4.18@sha256:85b940556a8faa4e1fdbef124bfd75f2c4ebd855a10b88a1c3b6f3e97f6f1a53 ghcr.io/github/gh-aw-node@sha256:0daa8971fa4732b647150cb6524a6b0804b68d5d24f6f58b5dd1af23bd63fb23 ghcr.io/github/github-mcp-server:v1.11.0@sha256:fbec75de11c255213fa08d80fb166abe73d851fff631c51c0079872967720699 + - name: Prepare Safe Outputs Directories + run: | + mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" + mkdir -p /tmp/gh-aw/safeoutputs + mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs + - name: Generate Safe Outputs Config + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_FILE_ROOT: "${{ runner.temp }}/gh-aw" + GH_AW_FILE_CONFIG: "{\"files\":[{\"path\":\"safeoutputs/config.json\",\"content_env\":\"GH_AW_SAFE_OUTPUTS_CONFIG\"}]}" + GH_AW_SAFE_OUTPUTS_CONFIG: "{\"create_pull_request\":{\"allowed_files\":[\"Cargo.lock\",\"shared/tree-sitter-extractor/Cargo.toml\",\"shared/yeast/Cargo.toml\",\"shared/yeast-macros/Cargo.toml\",\"shared/yeast-schema/Cargo.toml\",\"ruby/extractor/Cargo.toml\",\"unified/extractor/Cargo.toml\",\"unified/swift-syntax-rs/Cargo.toml\",\"shared/yeast/src/**\",\"shared/yeast-macros/src/**\",\"shared/yeast-schema/src/**\",\"shared/tree-sitter-extractor/src/**\",\"MODULE.bazel\",\"MODULE.bazel.lock\",\"rust-toolchain.toml\",\"rust/**\",\"misc/bazel/3rdparty/**\"],\"branch_prefix\":\"automation/update-rust-analyzer/\",\"draft\":true,\"max\":1,\"max_patch_files\":1000,\"max_patch_size\":10240,\"protect_top_level_dot_folders\":true,\"protected_files\":[\"package.json\",\"bun.lockb\",\"bunfig.toml\",\"deno.json\",\"deno.jsonc\",\"deno.lock\",\"global.json\",\"NuGet.Config\",\"Directory.Packages.props\",\"mix.exs\",\"mix.lock\",\"go.mod\",\"go.sum\",\"stack.yaml\",\"stack.yaml.lock\",\"pom.xml\",\"build.gradle\",\"build.gradle.kts\",\"settings.gradle\",\"settings.gradle.kts\",\"gradle.properties\",\"package-lock.json\",\"yarn.lock\",\"pnpm-lock.yaml\",\"npm-shrinkwrap.json\",\"requirements.txt\",\"Pipfile\",\"Pipfile.lock\",\"pyproject.toml\",\"setup.py\",\"setup.cfg\",\"Gemfile\",\"Gemfile.lock\",\"uv.lock\",\"CODEOWNERS\",\"DESIGN.md\",\"README.md\",\"CONTRIBUTING.md\",\"CHANGELOG.md\",\"SECURITY.md\",\"CODE_OF_CONDUCT.md\",\"AGENTS.md\"],\"protected_files_policy\":\"request_review\",\"title_prefix\":\"Rust: \"},\"create_report_incomplete_issue\":{\"title-prefix\":\"[incomplete]\"},\"missing_data\":{},\"missing_tool\":{},\"noop\":{\"max\":1,\"report-as-issue\":\"false\"},\"report_incomplete\":{}}" + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'create_files.cjs')); + await main(); + - name: Generate Safe Outputs Tools + env: + GH_AW_TOOLS_META_JSON: | + { + "description_suffixes": { + "create_pull_request": " CONSTRAINTS: Maximum 1 pull request(s) can be created. Branch name will be prefixed with \"automation/update-rust-analyzer/\". Title will be prefixed with \"Rust: \". PRs will be created as drafts." + }, + "repo_params": {}, + "dynamic_tools": [] + } + GH_AW_VALIDATION_JSON: | + { + "create_pull_request": { + "defaultMax": 1, + "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, + "body": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 65000 + }, + "branch": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 256 + }, + "dependencies": { + "type": "array", + "itemType": "string", + "itemSanitize": true, + "itemMaxLength": 256 + }, + "draft": { + "type": "boolean" + }, + "labels": { + "type": "array", + "itemType": "string", + "itemSanitize": true, + "itemMaxLength": 128 + }, + "repo": { + "type": "string", + "maxLength": 256 + }, + "stack_position": { + "optionalPositiveInteger": true + }, + "stack_root": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, + "temporary_id": { + "type": "string", + "pattern": "^#?aw_[A-Za-z0-9_]{3,12}$" + }, + "title": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 128 + } + } + }, + "missing_data": { + "defaultMax": 20, + "fields": { + "alternatives": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, + "context": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, + "data_type": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, + "reason": { + "type": "string", + "sanitize": true, + "maxLength": 256 + } + } + }, + "missing_tool": { + "defaultMax": 20, + "fields": { + "alternatives": { + "type": "string", + "sanitize": true, + "maxLength": 512 + }, + "reason": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 256 + }, + "tool": { + "type": "string", + "sanitize": true, + "maxLength": 128 + } + } + }, + "noop": { + "defaultMax": 1, + "fields": { + "message": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 65000 + } + } + }, + "report_incomplete": { + "defaultMax": 5, + "fields": { + "details": { + "type": "string", + "sanitize": true, + "maxLength": 65000 + }, + "reason": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 1024 + } + } + } + } + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'generate_safe_outputs_tools.cjs')); + await main(); + - name: Start MCP Gateway + id: start-mcp-gateway + env: + GH_AW_POLICY_ALLOW_CREATE_PULL_REQUEST: ${{ vars.GH_AW_POLICY_ALLOW_CREATE_PULL_REQUEST || 'true' }} + GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }} + GH_AW_SAFE_OUTPUTS_CONFIG_PATH: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS_CONFIG_PATH }} + GH_AW_SAFE_OUTPUTS_TOOLS_PATH: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS_TOOLS_PATH }} + GH_AW_SINK_VISIBILITY: ${{ steps.determine-automatic-lockdown.outputs.visibility }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -eo pipefail + mkdir -p "${RUNNER_TEMP}/gh-aw/mcp-config" + if [ -n "${GITHUB_EVENT_PATH:-}" ] && [ -r "${GITHUB_EVENT_PATH}" ]; then + GH_AW_SAFEOUTPUTS_EVENT_PATH="${RUNNER_TEMP}/gh-aw/safeoutputs/github_event.json" + cp "${GITHUB_EVENT_PATH}" "${GH_AW_SAFEOUTPUTS_EVENT_PATH}" + export GITHUB_EVENT_PATH="${GH_AW_SAFEOUTPUTS_EVENT_PATH}" + fi + + # Export gateway environment variables for MCP config and gateway script + export MCP_GATEWAY_PORT="8080" + export MCP_GATEWAY_DOMAIN="awmg-mcpg" + export MCP_GATEWAY_HOST_DOMAIN="localhost" + MCP_GATEWAY_AGENT_ID=$(openssl rand -base64 45 | tr -d '/+=') + echo "::add-mask::${MCP_GATEWAY_AGENT_ID}" + export MCP_GATEWAY_AGENT_ID + export MCP_GATEWAY_PAYLOAD_DIR="/tmp/gh-aw/mcp-payloads" + mkdir -p "${MCP_GATEWAY_PAYLOAD_DIR}" + export MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD="524288" + export MCP_GATEWAY_ALLOWED_MOUNT_ROOTS="${GITHUB_WORKSPACE}:rw,${RUNNER_TEMP}/gh-aw:ro,${RUNNER_TEMP}/gh-aw/safeoutputs:rw,/opt:ro,/tmp:rw,/usr/bin/gh:ro" + export GH_AW_PR_HEAD_BASE_BRANCH="${GH_AW_PR_HEAD_BASE_BRANCH:-}" + export GH_AW_PR_HEAD_BASE_SHA="${GH_AW_PR_HEAD_BASE_SHA:-}" + export GH_AW_PR_HEAD_BASE_REPO="${GH_AW_PR_HEAD_BASE_REPO:-}" + export GH_AW_PR_HEAD_BASE_PR_NUMBER="${GH_AW_PR_HEAD_BASE_PR_NUMBER:-}" + export GH_AW_PR_HEAD_BASE_REF="${GH_AW_PR_HEAD_BASE_REF:-}" + export GH_AW_PR_HEAD_REPO="${GH_AW_PR_HEAD_REPO:-}" + export DEBUG="*" + + export GH_AW_ENGINE="copilot" + MCP_GATEWAY_UID=$(id -u 2>/dev/null || echo '0') + MCP_GATEWAY_GID=$(id -g 2>/dev/null || echo '0') + source "${RUNNER_TEMP}/gh-aw/actions/resolve_docker_socket_gid.sh" + export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network bridge -p 127.0.0.1:'"${MCP_GATEWAY_PORT}"':'"${MCP_GATEWAY_PORT}"' --name awmg-mcpg --add-host host.docker.internal:host-gateway --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_AGENT_ID -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_PR_HEAD_BASE_BRANCH -e GH_AW_PR_HEAD_BASE_SHA -e GH_AW_PR_HEAD_BASE_REPO -e GH_AW_PR_HEAD_BASE_PR_NUMBER -e GH_AW_PR_HEAD_BASE_REF -e GH_AW_PR_HEAD_REPO -e GH_AW_POLICY_ALLOW_CREATE_PULL_REQUEST -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GH_AW_SINK_VISIBILITY -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e RUNNER_TOOL_CACHE -e MCP_GATEWAY_ALLOWED_MOUNT_ROOTS -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.4.18' + + mkdir -p "$HOME/.copilot" + GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) + cat << GH_AW_MCP_CONFIG_da213146dab3586b_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + { + "mcpServers": { + "safeoutputs": { + "type": "stdio", + "container": "ghcr.io/github/gh-aw-node", + "mounts": ["\${GITHUB_WORKSPACE}:\${GITHUB_WORKSPACE}:rw", "${RUNNER_TEMP}/gh-aw/safeoutputs:${RUNNER_TEMP}/gh-aw/safeoutputs:rw", "/tmp/gh-aw:/tmp/gh-aw:rw"], + "args": ["-w", "\${GITHUB_WORKSPACE}"], + "entrypoint": "sh", + "entrypointArgs": ["-c", "sh ${RUNNER_TEMP}/gh-aw/safeoutputs/start_safe_outputs_mcp.sh"], + "env": { + "DEBUG": "*", + "DEFAULT_BRANCH": "\${DEFAULT_BRANCH}", + "GH_AW_ASSETS_ALLOWED_EXTS": "\${GH_AW_ASSETS_ALLOWED_EXTS}", + "GH_AW_ASSETS_BRANCH": "\${GH_AW_ASSETS_BRANCH}", + "GH_AW_ASSETS_MAX_SIZE_KB": "\${GH_AW_ASSETS_MAX_SIZE_KB}", + "GH_AW_MCP_LOG_DIR": "\${GH_AW_MCP_LOG_DIR}", + "GH_AW_SAFE_OUTPUTS": "\${GH_AW_SAFE_OUTPUTS}", + "GH_AW_SAFE_OUTPUTS_CONFIG_PATH": "\${GH_AW_SAFE_OUTPUTS_CONFIG_PATH}", + "GH_AW_SAFE_OUTPUTS_TOOLS_PATH": "\${GH_AW_SAFE_OUTPUTS_TOOLS_PATH}", + "GH_AW_POLICY_ALLOW_CREATE_PULL_REQUEST": "\${GH_AW_POLICY_ALLOW_CREATE_PULL_REQUEST}", + "GH_AW_PR_HEAD_BASE_BRANCH": "\${GH_AW_PR_HEAD_BASE_BRANCH}", + "GH_AW_PR_HEAD_BASE_SHA": "\${GH_AW_PR_HEAD_BASE_SHA}", + "GH_AW_PR_HEAD_BASE_REPO": "\${GH_AW_PR_HEAD_BASE_REPO}", + "GH_AW_PR_HEAD_BASE_PR_NUMBER": "\${GH_AW_PR_HEAD_BASE_PR_NUMBER}", + "GH_AW_PR_HEAD_BASE_REF": "\${GH_AW_PR_HEAD_BASE_REF}", + "GH_AW_PR_HEAD_REPO": "\${GH_AW_PR_HEAD_REPO}", + "GITHUB_EVENT_NAME": "\${GITHUB_EVENT_NAME}", + "GITHUB_EVENT_PATH": "\${GITHUB_EVENT_PATH}", + "GITHUB_REPOSITORY": "\${GITHUB_REPOSITORY}", + "GITHUB_SHA": "\${GITHUB_SHA}", + "GITHUB_TOKEN": "\${GITHUB_TOKEN}", + "GITHUB_WORKSPACE": "\${GITHUB_WORKSPACE}", + "RUNNER_TEMP": "\${RUNNER_TEMP}" + }, + "guard-policies": { + "write-sink": { + "accept": [ + "*" + ], + "sink-visibility": "${GH_AW_SINK_VISIBILITY}" + } + } + } + }, + "gateway": { + "port": $MCP_GATEWAY_PORT, + "domain": "${MCP_GATEWAY_DOMAIN}", + "agentId": "${MCP_GATEWAY_AGENT_ID}", + "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}", + "startupTimeout": 120, + "opentelemetry": { + "endpoint": "${OTEL_EXPORTER_OTLP_ENDPOINT}", + "traceId": "${GITHUB_AW_OTEL_TRACE_ID}", + "spanId": "${GITHUB_AW_OTEL_PARENT_SPAN_ID}" + } + } + } + GH_AW_MCP_CONFIG_da213146dab3586b_EOF + - name: Mount MCP servers as CLIs + id: mount-mcp-clis + continue-on-error: true + env: + MCP_GATEWAY_AGENT_ID: ${{ steps.start-mcp-gateway.outputs.gateway-agent-id }} + MCP_GATEWAY_DOMAIN: ${{ steps.start-mcp-gateway.outputs.gateway-domain }} + MCP_GATEWAY_PORT: ${{ steps.start-mcp-gateway.outputs.gateway-port }} + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io); + const { main } = require(path.join(actionsDir, 'mount_mcp_as_cli.cjs')); + await main(); + - name: Clean credentials + continue-on-error: true + run: bash "${RUNNER_TEMP}/gh-aw/actions/clean_git_credentials.sh" + - name: Audit pre-agent workspace + id: pre_agent_audit + continue-on-error: true + run: bash "${RUNNER_TEMP}/gh-aw/actions/audit_pre_agent_workspace.sh" + - name: Start CLI Proxy + env: + GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_API_URL: ${{ github.api_url }} + GH_HOST: ${{ env.GH_HOST }} + GITHUB_HOST: ${{ env.GITHUB_HOST }} + GITHUB_ENTERPRISE_HOST: ${{ env.GITHUB_ENTERPRISE_HOST }} + GITHUB_GRAPHQL_URL: ${{ env.GITHUB_GRAPHQL_URL }} + GITHUB_COPILOT_BASE_URL: ${{ env.GITHUB_COPILOT_BASE_URL }} + GH_AW_NETWORK_ISOLATION: 'true' + CLI_PROXY_POLICY: '{"allow-only":{"repos":"${{ steps.determine-automatic-lockdown.outputs.repos }}","min-integrity":"${{ steps.determine-automatic-lockdown.outputs.min_integrity }}"}}' + CLI_PROXY_IMAGE: 'ghcr.io/github/gh-aw-mcpg:v0.4.18' + run: | + bash "${RUNNER_TEMP}/gh-aw/actions/start_cli_proxy.sh" + - name: Execute GitHub Copilot CLI + id: agentic_execution + # Copilot CLI tool arguments (sorted): + timeout-minutes: 180 + run: | + set -o pipefail + printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + trap 'gh_aw_exit_code=$?; mkdir -p /tmp/gh-aw >/dev/null 2>&1 || true; printf "%s" "$gh_aw_exit_code" > /tmp/gh-aw/agent_execution_exit_code.txt || true; rm -f "$HOME/.copilot/settings.json"; if [ "$gh_aw_exit_code" -ne 0 ]; then echo "::error::Agent execution exited with code $gh_aw_exit_code"; fi' EXIT + mkdir -p "$HOME/.copilot" + printf '%s' '{"builtInAgents":{"rubberDuck":false}}' > "$HOME/.copilot/settings.json" + export XDG_CONFIG_HOME="$HOME" + export GH_AW_MCP_CONFIG="$HOME/.copilot/mcp-config.json" + GH_AW_COPILOT_SRC="$(command -v copilot 2>/dev/null || true)" + if [ -z "$GH_AW_COPILOT_SRC" ] || [ ! -x "$GH_AW_COPILOT_SRC" ]; then + echo "GitHub Copilot CLI executable not found on PATH after installation" >&2 + exit 127 + fi + GH_AW_COPILOT_BIN="${RUNNER_TEMP}/gh-aw/bin/copilot" + mkdir -p "${RUNNER_TEMP}/gh-aw/bin" + if [ "$GH_AW_COPILOT_SRC" != "$GH_AW_COPILOT_BIN" ]; then + cp "$GH_AW_COPILOT_SRC" "$GH_AW_COPILOT_BIN" + fi + chmod 755 "$GH_AW_COPILOT_BIN" + + touch /tmp/gh-aw/agent-step-summary.md + GH_AW_NODE_BIN=$(command -v node 2>/dev/null || true) + export GH_AW_NODE_BIN + export COPILOT_API_KEY="$COPILOT_DUMMY_BYOK" + (umask 177 && touch /tmp/gh-aw/agent-stdio.log) + GH_AW_MAX_AI_CREDITS="${GH_AW_MAX_AI_CREDITS:-1000}" + if [[ ! "$GH_AW_MAX_AI_CREDITS" =~ ^[0-9]+$ ]]; then + GH_AW_MAX_AI_CREDITS="1000" + fi + printf '%s\n' "{\"\$schema\":\"https://github.com/github/gh-aw-firewall/releases/download/v0.28.14/awf-config.schema.json\",\"network\":{\"allowDomains\":[\"*.githubusercontent.com\",\"*.pythonhosted.org\",\"anaconda.org\",\"api.snapcraft.io\",\"archive.ubuntu.com\",\"azure.archive.ubuntu.com\",\"bcr.bazel.build\",\"binstar.org\",\"blog.bazel.build\",\"bootstrap.pypa.io\",\"codeload.github.com\",\"conda.anaconda.org\",\"conda.binstar.org\",\"crates.io\",\"crl.geotrust.com\",\"crl.globalsign.com\",\"crl.identrust.com\",\"crl.sectigo.com\",\"crl.thawte.com\",\"crl.usertrust.com\",\"crl.verisign.com\",\"crl3.digicert.com\",\"crl4.digicert.com\",\"crls.ssl.com\",\"docs.github.com\",\"files.pythonhosted.org\",\"github-cloud.githubusercontent.com\",\"github-cloud.s3.amazonaws.com\",\"github.blog\",\"github.com\",\"github.githubassets.com\",\"index.crates.io\",\"json-schema.org\",\"json.schemastore.org\",\"keyserver.ubuntu.com\",\"lfs.github.com\",\"mirror.bazel.build\",\"objects.githubusercontent.com\",\"ocsp.digicert.com\",\"ocsp.geotrust.com\",\"ocsp.globalsign.com\",\"ocsp.identrust.com\",\"ocsp.sectigo.com\",\"ocsp.ssl.com\",\"ocsp.thawte.com\",\"ocsp.usertrust.com\",\"ocsp.verisign.com\",\"packagecloud.io\",\"packages.cloud.google.com\",\"packages.microsoft.com\",\"patch-diff.githubusercontent.com\",\"patchdiff.githubusercontent.com\",\"pip.pypa.io\",\"ppa.launchpad.net\",\"productionresultssa0.blob.core.windows.net\",\"productionresultssa1.blob.core.windows.net\",\"productionresultssa10.blob.core.windows.net\",\"productionresultssa11.blob.core.windows.net\",\"productionresultssa12.blob.core.windows.net\",\"productionresultssa13.blob.core.windows.net\",\"productionresultssa14.blob.core.windows.net\",\"productionresultssa15.blob.core.windows.net\",\"productionresultssa16.blob.core.windows.net\",\"productionresultssa17.blob.core.windows.net\",\"productionresultssa18.blob.core.windows.net\",\"productionresultssa19.blob.core.windows.net\",\"productionresultssa2.blob.core.windows.net\",\"productionresultssa3.blob.core.windows.net\",\"productionresultssa4.blob.core.windows.net\",\"productionresultssa5.blob.core.windows.net\",\"productionresultssa6.blob.core.windows.net\",\"productionresultssa7.blob.core.windows.net\",\"productionresultssa8.blob.core.windows.net\",\"productionresultssa9.blob.core.windows.net\",\"pypi.org\",\"pypi.python.org\",\"raw.githubusercontent.com\",\"releases.bazel.build\",\"repo.anaconda.com\",\"repo.continuum.io\",\"s.symcb.com\",\"s.symcd.com\",\"security.ubuntu.com\",\"sh.rustup.rs\",\"static.crates.io\",\"static.rust-lang.org\",\"ts-crl.ws.symantec.com\",\"ts-ocsp.ws.symantec.com\",\"www.googleapis.com\"],\"isolation\":true,\"topologyAttach\":[\"awmg-mcpg\",\"awmg-cli-proxy\"]},\"apiProxy\":{\"enabled\":true,\"enableTokenSteering\":true,\"maxRuns\":500,\"maxAiCredits\":${GH_AW_MAX_AI_CREDITS},\"maxCacheMisses\":5,\"models\":{\"agent\":[\"sonnet-6x\",\"gpt-5.4\",\"gpt-5.5\",\"gpt-5.6\",\"gpt-5.3\",\"gemini-pro\",\"any\"],\"antigravity\":[\"copilot/antigravity*\",\"google/antigravity*\",\"gemini/antigravity*\"],\"any\":[\"copilot/*\",\"anthropic/*\",\"openai/*\",\"google/*\",\"gemini/*\"],\"auto\":[\"copilot/auto\",\"large\"],\"claude\":[\"agent\"],\"codex\":[\"agent\"],\"coding\":[\"copilot/gpt-5*codex*\",\"openai/gpt-5*codex*\",\"gpt-5-codex\",\"kimi\"],\"computer-use\":[\"copilot/*computer-use*\",\"google/*computer-use*\",\"gemini/*computer-use*\",\"openai/*computer-use*\"],\"copilot\":[\"agent\"],\"deep-research\":[\"copilot/deep-research*\",\"copilot/o3-deep-research*\",\"copilot/o4-mini-deep-research*\",\"google/deep-research*\",\"gemini/deep-research*\",\"openai/o3-deep-research*\",\"openai/o4-mini-deep-research*\"],\"detection\":[\"small\"],\"evals\":[\"small\"],\"fable\":[\"copilot/*fable*\",\"anthropic/*fable*\"],\"gemini\":[\"agent\"],\"gemini-3-flash\":[\"copilot/gemini-3*flash*\",\"google/gemini-3*flash*\",\"gemini/gemini-3*flash*\"],\"gemini-3-pro\":[\"copilot/gemini-3*pro*\",\"google/gemini-3*pro*\",\"google/nano-banana*\",\"gemini/gemini-3*pro*\"],\"gemini-3.1-flash\":[\"copilot/gemini-3.1*flash*\",\"google/gemini-3.1*flash*\",\"gemini/gemini-3.1*flash*\"],\"gemini-3.1-pro\":[\"copilot/gemini-3.1*pro*\",\"google/gemini-3.1*pro*\",\"gemini/gemini-3.1*pro*\"],\"gemini-3.5-flash\":[\"copilot/gemini-3.5*flash*\",\"google/gemini-3.5*flash*\",\"gemini/gemini-3.5*flash*\"],\"gemini-3.6-flash\":[\"copilot/gemini-3.6*flash*\",\"google/gemini-3.6*flash*\",\"gemini/gemini-3.6*flash*\"],\"gemini-3.7-flash\":[\"copilot/gemini-3.7*flash*\",\"google/gemini-3.7*flash*\",\"gemini/gemini-3.7*flash*\"],\"gemini-flash\":[\"copilot/gemini-*flash*\",\"google/gemini-*flash*\",\"gemini/gemini-*flash*\"],\"gemini-flash-lite\":[\"copilot/gemini-*flash*lite*\",\"google/gemini-*flash*lite*\",\"gemini/gemini-*flash*lite*\"],\"gemini-omni\":[\"copilot/gemini-omni*\",\"google/gemini-omni*\",\"gemini/gemini-omni*\"],\"gemini-pro\":[\"copilot/gemini-*pro*\",\"google/gemini-*pro*\",\"gemini/gemini-*pro*\"],\"gemma\":[\"copilot/gemma*\",\"google/gemma*\",\"gemini/gemma*\"],\"gpt-5\":[\"copilot/gpt-5*\",\"openai/gpt-5*\"],\"gpt-5-codex\":[\"copilot/gpt-5*codex*\",\"openai/gpt-5*codex*\"],\"gpt-5-mini\":[\"copilot/gpt-5*mini*\",\"openai/gpt-5*mini*\"],\"gpt-5-nano\":[\"copilot/gpt-5*nano*\",\"openai/gpt-5*nano*\"],\"gpt-5-pro\":[\"copilot/gpt-5*pro*\",\"openai/gpt-5*pro*\"],\"gpt-5.1\":[\"copilot/gpt-5.1*\",\"openai/gpt-5.1*\"],\"gpt-5.2\":[\"copilot/gpt-5.2*\",\"openai/gpt-5.2*\"],\"gpt-5.3\":[\"copilot/gpt-5.3*\",\"openai/gpt-5.3*\"],\"gpt-5.4\":[\"copilot/gpt-5.4*\",\"openai/gpt-5.4*\"],\"gpt-5.5\":[\"copilot/gpt-5.5*\",\"openai/gpt-5.5*\"],\"gpt-5.6\":[\"copilot/gpt-5.6*\",\"openai/gpt-5.6*\"],\"grok\":[\"copilot/*grok*\",\"openai/*grok*\"],\"haiku\":[\"copilot/*haiku*\",\"anthropic/*haiku*\"],\"image-generation\":[\"copilot/gpt-image*\",\"openai/gpt-image*\",\"openai/chatgpt-image*\",\"copilot/gemini-*image*\",\"google/gemini-*image*\",\"gemini/gemini-*image*\",\"google/imagen*\"],\"kimi\":[\"copilot/kimi*\",\"openai/kimi*\"],\"kiwi\":[\"copilot/kiwi*\",\"openai/kiwi*\"],\"large\":[\"sonnet\",\"gpt-5-pro\",\"gpt-5\",\"gemini-pro\"],\"lyria\":[\"google/lyria*\",\"gemini/lyria*\",\"copilot/lyria*\"],\"mai-code\":[\"copilot/MAI-Code*\",\"copilot/mai-code*\",\"openai/MAI-Code*\"],\"mai-code-1-flash-picker\":[\"copilot/MAI-Code-1-Flash-picker*\",\"copilot/mai-code-1-flash-picker*\",\"openai/MAI-Code-1-Flash-picker*\"],\"mini\":[\"haiku\",\"gpt-5-mini\",\"gpt-5-nano\",\"gemini-flash-lite\"],\"nano-banana\":[\"copilot/nano-banana*\",\"google/nano-banana*\",\"gemini/nano-banana*\"],\"opus\":[\"copilot/*opus*\",\"anthropic/*opus*\"],\"opusplan\":[\"opus?effort=high\"],\"raptor-mini\":[\"copilot/raptor*\",\"openai/raptor*\"],\"reasoning\":[\"copilot/o1*\",\"copilot/o3*\",\"copilot/o4*\",\"openai/o1*\",\"openai/o3*\",\"openai/o4*\"],\"robotics\":[\"copilot/*robotics*\",\"google/*robotics*\",\"gemini/*robotics*\"],\"small\":[\"mini\"],\"small-agent\":[\"haiku\",\"gpt-5-mini\",\"gemini-flash\"],\"sonnet\":[\"copilot/*sonnet*\",\"anthropic/*sonnet*\"],\"sonnet-6x\":[\"copilot/*sonnet-4.5*\",\"copilot/*sonnet-4.6*\",\"copilot/*sonnet-5*\",\"copilot/*sonnet-4-5-*\",\"anthropic/*sonnet-4-5-*\",\"copilot/*sonnet-4-6*\",\"anthropic/*sonnet-4-6*\",\"anthropic/*sonnet-5*\"],\"summarization\":[\"haiku\",\"gpt-5-mini\",\"gemini-flash-lite\",\"mini\"],\"veo\":[\"google/veo*\",\"gemini/veo*\"],\"vision\":[\"copilot/gemini-*image*\",\"google/gemini-*image*\",\"gemini/gemini-*image*\",\"copilot/gemini-*flash*\",\"google/gemini-*flash*\",\"gemini/gemini-*flash*\"]}},\"container\":{\"imageTag\":\"0.28.14,squid=sha256:2ce8df3abf3e9b76e9c0cf5863da41f1ab3f89b20ad14b988806ab89e7bf2cd5,agent=sha256:f7df036c86575527b61f3f7df91c4412349a12b2a74988d929eafa2999230c98,api-proxy=sha256:6f95e2234dd9bd6333a8ff28ccea7ecf0204acd4a09108723844dbd2bf6268c5,cli-proxy=sha256:3a379c5e96e29499c815e9dd2a71334d01c326a9b73991c76544fda9cae35c34\"},\"logging\":{\"proxyLogsDir\":\"/tmp/gh-aw/sandbox/firewall/logs\",\"auditDir\":\"/tmp/gh-aw/sandbox/firewall/audit\"}}" > "${RUNNER_TEMP}/gh-aw/awf-config.json" + cp "${RUNNER_TEMP}/gh-aw/awf-config.json" /tmp/gh-aw/awf-config.json + export GH_AW_MODELS_JSON_PATH="/tmp/gh-aw/models.json" + GH_AW_DOCKER_HOST="" + if [[ "${DOCKER_HOST:-}" =~ ^tcp:// ]]; then + GH_AW_DOCKER_HOST="${DOCKER_HOST}" + fi + if [[ "${DOCKER_HOST:-}" =~ ^tcp:// ]]; then + GH_AW_CHROOT_BINARIES_SOURCE_PATH="${RUNNER_TEMP}/gh-aw" GH_AW_CHROOT_IDENTITY_HOME="${RUNNER_TEMP}/gh-aw/home" node "${RUNNER_TEMP}/gh-aw/actions/patch_awf_chroot_config.cjs" + fi + GH_AW_TOOL_CACHE_MOUNT="" + GH_AW_TOOL_CACHE="${RUNNER_TOOL_CACHE:?RUNNER_TOOL_CACHE must be set}" + if [ -d "$GH_AW_TOOL_CACHE" ]; then + if [[ "$GH_AW_TOOL_CACHE" != /opt/* ]]; then + GH_AW_TOOL_CACHE_MOUNT="$GH_AW_TOOL_CACHE:$GH_AW_TOOL_CACHE:ro" + fi + fi + # shellcheck disable=SC1003,SC2016,SC2086 + GH_AW_AWF_ENGINE_NAME=copilot \ + GH_AW_AWF_HARNESS_MARKER='[copilot-harness]' \ + GH_AW_AWF_LOG_FILE=/tmp/gh-aw/agent-stdio.log \ + GH_AW_AWF_ATTEMPT_LOG_NAME=copilot \ + bash "${RUNNER_TEMP}/gh-aw/actions/run_awf_with_startup_retries.sh" -- \ + awf --config "${RUNNER_TEMP}/gh-aw/awf-config.json" --container-workdir "${GITHUB_WORKSPACE}" --mount "${RUNNER_TEMP}/gh-aw:${RUNNER_TEMP}/gh-aw:ro" --mount "${RUNNER_TEMP}/gh-aw:/host${RUNNER_TEMP}/gh-aw:ro" ${GH_AW_TOOL_CACHE_MOUNT:+--mount "$GH_AW_TOOL_CACHE_MOUNT"} ${GH_AW_DOCKER_HOST:+--docker-host "$GH_AW_DOCKER_HOST"} --env-all --exclude-env ACTIONS_ID_TOKEN_REQUEST_TOKEN --exclude-env ACTIONS_ID_TOKEN_REQUEST_URL --exclude-env COPILOT_GITHUB_TOKEN --exclude-env GH_TOKEN --exclude-env GITHUB_MCP_SERVER_TOKEN --exclude-env MCP_GATEWAY_AGENT_ID --mount /tmp/gh-aw:/tmp/gh-aw:rw --log-level info --skip-pull --difc-proxy-host awmg-cli-proxy:18443 --difc-proxy-ca-cert /tmp/gh-aw/difc-proxy-tls/ca.crt \ + -- /bin/bash -c 'set +o histexpand; export PATH="${RUNNER_TEMP}/gh-aw/mcp-cli/bin:$PATH" && : "${RUNNER_TOOL_CACHE:?RUNNER_TOOL_CACHE must be set}"; GH_AW_TOOL_CACHE="$RUNNER_TOOL_CACHE"; GH_AW_TOOL_BINS="$(find "$GH_AW_TOOL_CACHE" -maxdepth 5 -type d -name bin 2>/dev/null | tr '\''\n'\'' '\'':'\'')"; GH_AW_TOOL_BINS="${GH_AW_TOOL_BINS%:}"; export PATH="$PATH${GH_AW_TOOL_BINS:+:}$GH_AW_TOOL_BINS"; [ -n "$GOROOT" ] && export PATH="$GOROOT/bin:$PATH" || true; [ -n "$ERLANG_HOME" ] && export PATH="$ERLANG_HOME/bin:$PATH" || true && GH_AW_NODE_EXEC="${GH_AW_NODE_BIN:-}"; if [ -z "$GH_AW_NODE_EXEC" ] || [ ! -x "$GH_AW_NODE_EXEC" ]; then GH_AW_NODE_EXEC="$(command -v node 2>/dev/null || true)"; fi; if [ -z "$GH_AW_NODE_EXEC" ]; then echo "node runtime missing on this runner — check runtimes.node in workflow YAML" >&2; exit 127; fi; GH_AW_NPM_GLOBAL_ROOT="$(npm root -g 2>/dev/null || true)"; if [ -n "$GH_AW_NPM_GLOBAL_ROOT" ]; then export NODE_PATH="${GH_AW_NPM_GLOBAL_ROOT}${NODE_PATH:+:${NODE_PATH}}"; fi; "$GH_AW_NODE_EXEC" "${RUNNER_TEMP}/gh-aw/actions/copilot_harness.cjs" "${RUNNER_TEMP}/gh-aw/bin/copilot" --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --disable-builtin-mcps --no-ask-user --allow-all-tools --allow-all-paths --add-dir "${GITHUB_WORKSPACE}" --prompt-file /tmp/gh-aw/aw-prompts/prompt.txt' + env: + AWF_REFLECT_ENABLED: 1 + COPILOT_AGENT_RUNNER_TYPE: STANDALONE + COPILOT_DUMMY_BYOK: dummy-byok-key-for-offline-mode + COPILOT_GITHUB_TOKEN: ${{ github.token }} + COPILOT_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || vars.GH_AW_DEFAULT_MODEL_COPILOT || 'auto' }} + GH_AW_LLM_PROVIDER: github + GH_AW_MAX_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_AI_CREDITS || '1000' }} + GH_AW_MAX_TURNS: ${{ vars.GH_AW_DEFAULT_MAX_TURNS || '' }} + GH_AW_PHASE: agent + GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }} + GH_AW_TIMEOUT_MINUTES: 180 + GH_AW_VERSION: v0.88.7 + GH_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN || github.token }} + GITHUB_API_URL: ${{ github.api_url }} + GITHUB_AW: true + GITHUB_COPILOT_INTEGRATION_ID: agentic-workflows + GITHUB_HEAD_REF: ${{ github.head_ref }} + GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + GITHUB_REF_NAME: ${{ github.ref_name }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md + GITHUB_WORKSPACE: ${{ github.workspace }} + GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com + GIT_AUTHOR_NAME: github-actions[bot] + GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com + GIT_COMMITTER_NAME: github-actions[bot] + RUNNER_TEMP: ${{ runner.temp }} + S2STOKENS: true + TRACEPARENT: ${{ env.GITHUB_AW_OTEL_TRACE_ID != '' && env.GITHUB_AW_OTEL_PARENT_SPAN_ID != '' && format('00-{0}-{1}-01', env.GITHUB_AW_OTEL_TRACE_ID, env.GITHUB_AW_OTEL_PARENT_SPAN_ID) || '' }} + - name: Stop CLI Proxy + if: always() + continue-on-error: true + run: bash "${RUNNER_TEMP}/gh-aw/actions/stop_cli_proxy.sh" + - name: Detect agent errors + if: always() + id: detect-agent-errors + continue-on-error: true + env: + GH_AW_AGENTIC_EXECUTION_OUTCOME: ${{ steps.agentic_execution.outcome }} + GH_AW_ENGINE_STEP_TIMEOUT_MINUTES: 180 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'detect_agent_errors.cjs')); + await main(); + - name: Configure Git credentials + env: + GITHUB_REPOSITORY: ${{ github.repository }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_TOKEN: ${{ github.token }} + run: bash "${RUNNER_TEMP}/gh-aw/actions/configure_git_credentials.sh" + - name: Copy Copilot session state files to logs + if: always() + continue-on-error: true + run: bash "${RUNNER_TEMP}/gh-aw/actions/copy_copilot_session_state.sh" + - name: Stop MCP Gateway + if: always() + continue-on-error: true + env: + MCP_GATEWAY_PORT: ${{ steps.start-mcp-gateway.outputs.gateway-port }} + MCP_GATEWAY_AGENT_ID: ${{ steps.start-mcp-gateway.outputs.gateway-agent-id }} + GATEWAY_PID: ${{ steps.start-mcp-gateway.outputs.gateway-pid }} + run: | + bash "${RUNNER_TEMP}/gh-aw/actions/stop_mcp_gateway.sh" "$GATEWAY_PID" + - name: Redact secrets in logs + if: always() + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'redact_secrets.cjs')); + await main(); + env: + GH_AW_SECRET_NAMES: 'GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN' + SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} + SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Append agent step summary + if: always() + run: bash "${RUNNER_TEMP}/gh-aw/actions/append_agent_step_summary.sh" + - name: Copy Safe Outputs + if: always() + env: + GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }} + run: | + mkdir -p /tmp/gh-aw + cp "$GH_AW_SAFE_OUTPUTS" /tmp/gh-aw/safeoutputs.jsonl 2>/dev/null || true + - name: Ingest agent output + id: collect_output + if: always() + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }} + GH_AW_ALLOWED_DOMAINS: "*.githubusercontent.com,*.pythonhosted.org,anaconda.org,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,bcr.bazel.build,binstar.org,blog.bazel.build,bootstrap.pypa.io,codeload.github.com,conda.anaconda.org,conda.binstar.org,crates.io,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,docs.github.com,files.pythonhosted.org,github-cloud.githubusercontent.com,github-cloud.s3.amazonaws.com,github.blog,github.com,github.githubassets.com,index.crates.io,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,lfs.github.com,mirror.bazel.build,objects.githubusercontent.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,patch-diff.githubusercontent.com,patchdiff.githubusercontent.com,pip.pypa.io,ppa.launchpad.net,productionresultssa0.blob.core.windows.net,productionresultssa1.blob.core.windows.net,productionresultssa10.blob.core.windows.net,productionresultssa11.blob.core.windows.net,productionresultssa12.blob.core.windows.net,productionresultssa13.blob.core.windows.net,productionresultssa14.blob.core.windows.net,productionresultssa15.blob.core.windows.net,productionresultssa16.blob.core.windows.net,productionresultssa17.blob.core.windows.net,productionresultssa18.blob.core.windows.net,productionresultssa19.blob.core.windows.net,productionresultssa2.blob.core.windows.net,productionresultssa3.blob.core.windows.net,productionresultssa4.blob.core.windows.net,productionresultssa5.blob.core.windows.net,productionresultssa6.blob.core.windows.net,productionresultssa7.blob.core.windows.net,productionresultssa8.blob.core.windows.net,productionresultssa9.blob.core.windows.net,pypi.org,pypi.python.org,raw.githubusercontent.com,releases.bazel.build,repo.anaconda.com,repo.continuum.io,s.symcb.com,s.symcd.com,security.ubuntu.com,sh.rustup.rs,static.crates.io,static.rust-lang.org,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.googleapis.com" + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_API_URL: ${{ github.api_url }} + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'collect_ndjson_output.cjs')); + await main(); + - name: Parse agent logs for step summary + if: always() + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_AGENT_OUTPUT: /tmp/gh-aw/sandbox/agent/logs/ + GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }} + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'parse_copilot_log.cjs')); + await main(); + - name: Parse MCP Gateway logs for step summary + if: always() + id: parse-mcp-gateway + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'parse_mcp_gateway_log.cjs')); + await main(); + - name: Print firewall logs + if: always() + continue-on-error: true + env: + AWF_LOGS_DIR: /tmp/gh-aw/sandbox/firewall/logs + run: bash "${RUNNER_TEMP}/gh-aw/actions/print_firewall_logs.sh" --rootless + - name: Parse token usage for step summary + if: always() + continue-on-error: true + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'parse_token_usage.cjs')); + await main(); + - name: Print AWF reflect summary + if: always() + continue-on-error: true + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'awf_reflect_summary.cjs')); + await main(); + - name: Generate observability summary + if: always() + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'generate_observability_summary.cjs')); + await main(core); + - name: Write agent output placeholder if missing + if: always() + run: | + if [ ! -f /tmp/gh-aw/agent_output.json ]; then + echo '{"items":[]}' > /tmp/gh-aw/agent_output.json + fi + # Small dedicated copy of the agent output so safe-output processing + # survives a failed or timed-out upload of the larger agent artifact + - name: Upload agent output fallback artifact + if: always() + continue-on-error: true + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: agent-output-fallback + path: | + /tmp/gh-aw/agent_output.json + /tmp/gh-aw/safeoutputs.jsonl + if-no-files-found: ignore + - name: Upload agent artifacts + if: always() + continue-on-error: true + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: agent + path: | + /tmp/gh-aw/aw-prompts/prompt.txt + /tmp/gh-aw/sandbox/agent/logs/ + /tmp/gh-aw/redacted-urls.log + /tmp/gh-aw/mcp-logs/ + /tmp/gh-aw/agent_usage.json + /tmp/gh-aw/agent-stdio.log + /tmp/gh-aw/pre-agent-audit.txt + /tmp/gh-aw/github_rate_limits.jsonl + /tmp/gh-aw/otel.jsonl + /tmp/gh-aw/otlp-export-errors.jsonl + /tmp/gh-aw/safeoutputs.jsonl + /tmp/gh-aw/agent_output.json + /tmp/gh-aw/aw-*.patch + /tmp/gh-aw/aw-*.bundle + /tmp/gh-aw/awf-config.json + /tmp/gh-aw/sandbox/firewall/logs/ + /tmp/gh-aw/sandbox/firewall/audit/ + /tmp/gh-aw/sandbox/firewall/awf-reflect.json + if-no-files-found: ignore + + conclusion: + needs: + - activation + - agent + - detection + - safe_outputs + if: > + always() && (needs.agent.result != 'skipped' || needs.activation.outputs.lockdown_check_failed == 'true' || + needs.activation.outputs.oauth_token_check_failed == 'true' || needs.activation.outputs.stale_lock_file_failed == 'true' || + needs.activation.outputs.daily_ai_credits_exceeded == 'true') + runs-on: ubuntu-slim + permissions: + actions: read + contents: write + issues: write + pull-requests: write + concurrency: + group: "gh-aw-conclusion-update-rust-analyzer" + cancel-in-progress: false + queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} + outputs: + incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} + noop_message: ${{ steps.noop.outputs.noop_message }} + tools_reported: ${{ steps.missing_tool.outputs.tools_reported }} + total_count: ${{ steps.missing_tool.outputs.total_count }} + steps: + - name: Setup Scripts + id: setup + uses: github/gh-aw-actions/setup@5e508589e03a7757a7e05b26e834292f5445bfb6 # v0.88.7 + with: + destination: ${{ runner.temp }}/gh-aw/actions + job-name: ${{ github.job }} + trace-id: ${{ needs.activation.outputs.setup-trace-id }} + parent-span-id: ${{ needs.activation.outputs.setup-parent-span-id || needs.activation.outputs.setup-span-id }} + env: + GH_AW_SETUP_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_CURRENT_WORKFLOW_REF: ${{ github.repository }}/.github/workflows/update-rust-analyzer.lock.yml@${{ github.ref }} + GH_AW_INFO_VERSION: "1.0.80" + GH_AW_INFO_AWF_VERSION: "v0.28.14" + GH_AW_INFO_ENGINE_ID: "copilot" + - name: Download agent output artifact + id: download-agent-output + continue-on-error: true + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + pattern: "{agent,agent-output-fallback}" + merge-multiple: true + path: /tmp/gh-aw/ + - name: Setup agent output environment variable + id: setup-agent-output-env + if: steps.download-agent-output.outcome == 'success' + run: | + mkdir -p /tmp/gh-aw/ + find "/tmp/gh-aw/" -type f -print + if [ -f "/tmp/gh-aw/agent_output.json" ]; then + echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_OUTPUT" + fi + - name: Download detection artifact + id: download-detection-artifact + continue-on-error: true + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: detection + path: /tmp/gh-aw/threat-detection/ + - name: Download Safe Outputs Items Manifest + id: download-safe-outputs-manifest + if: always() + continue-on-error: true + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + pattern: safe-outputs-items + merge-multiple: true + path: /tmp/gh-aw/ + - name: Collect usage artifact files + if: always() + continue-on-error: true + run: bash "${RUNNER_TEMP}/gh-aw/actions/collect_usage_artifact_files.sh" + - name: Upload usage artifact + if: always() + continue-on-error: true + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: usage + path: | + /tmp/gh-aw/usage/aw_info.json + /tmp/gh-aw/usage/aw-info.jsonl + /tmp/gh-aw/usage/agent_usage.json + /tmp/gh-aw/usage/agent_usage.jsonl + /tmp/gh-aw/usage/detection_usage.jsonl + /tmp/gh-aw/usage/evals.jsonl + /tmp/gh-aw/usage/graders/grader_manifest.json + /tmp/gh-aw/usage/graders/grader_results.json + /tmp/gh-aw/usage/github_rate_limits.jsonl + /tmp/gh-aw/usage/agent/token_usage.jsonl + /tmp/gh-aw/usage/detection/token_usage.jsonl + /tmp/gh-aw/usage/activity/summary.json + if-no-files-found: ignore + - name: Restore daily AIC usage cache + id: restore-daily-aic-cache-conclusion + if: always() + continue-on-error: true + uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + with: + key: agentic-workflow-usage-updaterustanalyzer-${{ github.run_id }} + restore-keys: agentic-workflow-usage-updaterustanalyzer- + path: /tmp/gh-aw/agentic-workflow-usage-cache.jsonl + - name: Write daily AIC usage cache entry + id: write-daily-aic-cache + if: always() + continue-on-error: true + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + github-token: ${{ github.token }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context); + const { main } = require(path.join(actionsDir, 'write_daily_aic_usage_cache.cjs')); + await main(); + - name: Save daily AIC usage cache + id: save-daily-aic-cache + if: always() + continue-on-error: true + uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + with: + key: agentic-workflow-usage-updaterustanalyzer-${{ github.run_id }} + path: /tmp/gh-aw/agentic-workflow-usage-cache.jsonl + - name: Upload daily AIC usage cache artifact + id: upload-daily-aic-cache + if: always() + continue-on-error: true + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: aic-usage-cache + path: /tmp/gh-aw/agentic-workflow-usage-cache.jsonl + if-no-files-found: ignore + retention-days: 7 + - name: Process no-op messages + id: noop + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }} + GH_AW_NOOP_MAX: "1" + GH_AW_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/${{ github.repository }}/blob/${{ github.ref_name }}/.github/workflows/update-rust-analyzer.md" + GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }} + GH_AW_NOOP_REPORT_AS_ISSUE: "false" + GH_AW_AIC: ${{ needs.agent.outputs.aic }} + GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} + GH_AW_AMBIENT_CONTEXT: ${{ needs.agent.outputs.ambient_context }} + GH_AW_WORKFLOW_ID: "update-rust-analyzer" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'handle_noop_message.cjs')); + await main(); + - name: Log detection run + id: detection_runs + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }} + GH_AW_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/${{ github.repository }}/blob/${{ github.ref_name }}/.github/workflows/update-rust-analyzer.md" + GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + GH_AW_DETECTION_CONCLUSION: ${{ needs.detection.outputs.detection_conclusion }} + GH_AW_DETECTION_REASON: ${{ needs.detection.outputs.detection_reason }} + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'handle_detection_runs.cjs')); + await main(); + - name: Record missing tool + id: missing_tool + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }} + GH_AW_MISSING_TOOL_CREATE_ISSUE: "true" + GH_AW_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/${{ github.repository }}/blob/${{ github.ref_name }}/.github/workflows/update-rust-analyzer.md" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'missing_tool.cjs')); + await main(); + - name: Record incomplete + id: report_incomplete + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }} + GH_AW_REPORT_INCOMPLETE_CREATE_ISSUE: "true" + GH_AW_REPORT_INCOMPLETE_TITLE_PREFIX: "[incomplete]" + GH_AW_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/${{ github.repository }}/blob/${{ github.ref_name }}/.github/workflows/update-rust-analyzer.md" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'report_incomplete_handler.cjs')); + await main(); + - name: Handle agent failure + id: handle_agent_failure + if: always() + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }} + GH_AW_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/${{ github.repository }}/blob/${{ github.ref_name }}/.github/workflows/update-rust-analyzer.md" + GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }} + GH_AW_WORKFLOW_ID: "update-rust-analyzer" + GH_AW_ACTION_FAILURE_ISSUE_EXPIRES_HOURS: "0" + GH_AW_ENGINE_ID: "copilot" + GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} + GH_AW_EFFECTIVE_TOKENS: ${{ needs.agent.outputs.effective_tokens || '' }} + GH_AW_AI_CREDITS_RATE_LIMIT_ERROR: ${{ needs.agent.outputs.ai_credits_rate_limit_error || 'false' }} + GH_AW_UNKNOWN_MODEL_AI_CREDITS: ${{ needs.agent.outputs.unknown_model_ai_credits || 'false' }} + GH_AW_AIC: ${{ needs.agent.outputs.aic }} + GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} + GH_AW_MAX_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_AI_CREDITS || '1000' }} + GH_AW_INFERENCE_ACCESS_ERROR: ${{ needs.agent.outputs.inference_access_error }} + GH_AW_MCP_POLICY_ERROR: ${{ needs.agent.outputs.mcp_policy_error }} + GH_AW_AGENTIC_ENGINE_TIMEOUT: ${{ needs.agent.outputs.agentic_engine_timeout }} + GH_AW_MODEL_NOT_SUPPORTED_ERROR: ${{ needs.agent.outputs.model_not_supported_error }} + GH_AW_HTTP_400_RESPONSE_ERROR: ${{ needs.agent.outputs.http_400_response_error }} + GH_AW_MAX_CACHE_MISSES_EXCEEDED: ${{ needs.agent.outputs.max_cache_misses_exceeded }} + GH_AW_MISSING_MODEL_PRICING_ERROR: ${{ needs.agent.outputs.missing_model_pricing_error }} + GH_AW_MISSING_MODEL_PRICING_MODEL_NAME: ${{ needs.agent.outputs.missing_model_pricing_model_name }} + GH_AW_SHELL_EXPANSION_GUARD_REJECTED: ${{ needs.agent.outputs.shell_expansion_guard_rejected }} + GH_AW_ENGINE_API_HOSTS: "api.enterprise.githubcopilot.com,api.githubcopilot.com,api.business.githubcopilot.com,api.individual.githubcopilot.com" + GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }} + GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }} + GH_AW_LOCKDOWN_CHECK_FAILED: ${{ needs.activation.outputs.lockdown_check_failed }} + GH_AW_OAUTH_TOKEN_CHECK_FAILED: ${{ needs.activation.outputs.oauth_token_check_failed }} + GH_AW_STALE_LOCK_FILE_FAILED: ${{ needs.activation.outputs.stale_lock_file_failed }} + GH_AW_DAILY_AI_CREDITS_EXCEEDED: ${{ needs.activation.outputs.daily_ai_credits_exceeded }} + GH_AW_DAILY_AI_CREDITS_TOTAL_EFFECTIVE_TOKENS: ${{ needs.activation.outputs.daily_ai_credits_total_effective_tokens }} + GH_AW_DAILY_AI_CREDITS_THRESHOLD: ${{ needs.activation.outputs.daily_ai_credits_threshold }} + GH_AW_GROUP_REPORTS: "false" + GH_AW_FAILURE_REPORT_AS_ISSUE: "true" + GH_AW_MISSING_TOOL_REPORT_AS_FAILURE: "true" + GH_AW_MISSING_DATA_REPORT_AS_FAILURE: "true" + GH_AW_TIMEOUT_MINUTES: "180" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'handle_agent_failure.cjs')); + await main(); + - name: Report failed jobs + id: report_failed_jobs + if: always() + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }} + GH_AW_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/${{ github.repository }}/blob/${{ github.ref_name }}/.github/workflows/update-rust-analyzer.md" + GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + GH_AW_REPORT_FAILED_JOBS: "true" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'report_failed_jobs.cjs')); + await main(); + + detection: + needs: + - activation + - agent + if: always() && needs.agent.result != 'skipped' + runs-on: ubuntu-latest + permissions: + contents: read + copilot-requests: write + timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} + outputs: + aic: ${{ steps.parse_detection_token_usage.outputs.aic }} + detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} + detection_reason: ${{ steps.detection_conclusion.outputs.reason }} + detection_success: ${{ steps.detection_conclusion.outputs.success }} + steps: + - name: Setup Scripts + id: setup + uses: github/gh-aw-actions/setup@5e508589e03a7757a7e05b26e834292f5445bfb6 # v0.88.7 + with: + destination: ${{ runner.temp }}/gh-aw/actions + job-name: ${{ github.job }} + trace-id: ${{ needs.activation.outputs.setup-trace-id }} + parent-span-id: ${{ needs.activation.outputs.setup-parent-span-id || needs.activation.outputs.setup-span-id }} + env: + GH_AW_SETUP_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_CURRENT_WORKFLOW_REF: ${{ github.repository }}/.github/workflows/update-rust-analyzer.lock.yml@${{ github.ref }} + GH_AW_INFO_VERSION: "1.0.80" + GH_AW_INFO_AWF_VERSION: "v0.28.14" + GH_AW_INFO_ENGINE_ID: "copilot" + - name: Download activation artifact + continue-on-error: true + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: activation + path: /tmp/gh-aw + - name: Download agent output artifact + id: download-agent-output + continue-on-error: true + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + pattern: "{agent,agent-output-fallback}" + merge-multiple: true + path: /tmp/gh-aw/ + - name: Setup agent output environment variable + id: setup-agent-output-env + if: steps.download-agent-output.outcome == 'success' + run: | + mkdir -p /tmp/gh-aw/ + find "/tmp/gh-aw/" -type f -print + if [ -f "/tmp/gh-aw/agent_output.json" ]; then + echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_OUTPUT" + fi + - name: Checkout repository for patch context + if: needs.agent.outputs.has_patch == 'true' + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + # --- Threat Detection --- + - name: Clean stale firewall files from agent artifact + run: | + rm -rf /tmp/gh-aw/sandbox/firewall/logs + rm -rf /tmp/gh-aw/sandbox/firewall/audit + - name: Download container images + run: bash "${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh" ghcr.io/github/gh-aw-firewall/agent:0.28.14@sha256:f7df036c86575527b61f3f7df91c4412349a12b2a74988d929eafa2999230c98 ghcr.io/github/gh-aw-firewall/api-proxy:0.28.14@sha256:6f95e2234dd9bd6333a8ff28ccea7ecf0204acd4a09108723844dbd2bf6268c5 ghcr.io/github/gh-aw-firewall/squid:0.28.14@sha256:2ce8df3abf3e9b76e9c0cf5863da41f1ab3f89b20ad14b988806ab89e7bf2cd5 + - name: Check if detection needed + id: detection_guard + if: always() + env: + OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} + run: | + if [[ -n "$OUTPUT_TYPES" || "$HAS_PATCH" == "true" ]]; then + echo "run_detection=true" >> "$GITHUB_OUTPUT" + echo "Detection will run: output_types=$OUTPUT_TYPES, has_patch=$HAS_PATCH" + else + echo "run_detection=false" >> "$GITHUB_OUTPUT" + echo "Detection skipped: no agent outputs or patches to analyze" + fi + - name: Clear MCP Config for detection + if: always() && steps.detection_guard.outputs.run_detection == 'true' + run: | + rm -f "${RUNNER_TEMP}/gh-aw/mcp-config/mcp-servers.json" + rm -f "$HOME/.copilot/mcp-config.json" + rm -f "$GITHUB_WORKSPACE/.gemini/settings.json" + - name: Prepare threat detection files + if: always() && steps.detection_guard.outputs.run_detection == 'true' + run: | + bash "${RUNNER_TEMP}/gh-aw/actions/prepare_threat_detection_files.sh" + - name: Setup threat detection + if: always() && steps.detection_guard.outputs.run_detection == 'true' + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + WORKFLOW_NAME: "Update rust-analyzer" + WORKFLOW_DESCRIPTION: "Update the rust-analyzer version used by the Rust extractor and prepare a pull request." + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} + GH_AW_DETECTION_CONTINUE_ON_ERROR: "true" + GH_AW_DETECTION_SKIP_PROMPT_SUMMARY: "true" + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'setup_threat_detection.cjs')); + await main(); + - name: Ensure threat-detection directory and log + if: always() && steps.detection_guard.outputs.run_detection == 'true' + run: | + mkdir -p /tmp/gh-aw/threat-detection + touch /tmp/gh-aw/threat-detection/detection.log + - name: Install AWF binary + run: bash "${RUNNER_TEMP}/gh-aw/actions/install_awf_binary.sh" v0.28.14 --rootless + - name: Setup Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: '24' + package-manager-cache: false + - name: Install GitHub Copilot CLI + run: bash "${RUNNER_TEMP}/gh-aw/actions/install_copilot_cli.sh" + env: + GH_HOST: github.com + GH_AW_COMPILED_VERSION: v0.88.7 + - name: Install threat-detect binary + if: always() && steps.detection_guard.outputs.run_detection == 'true' + continue-on-error: true + run: | + bash "${RUNNER_TEMP}/gh-aw/actions/install_threat_detect_binary.sh" v0.5.1 + - name: Execute threat detection with AWF + id: detection_agentic_execution + if: always() && steps.detection_guard.outputs.run_detection == 'true' + continue-on-error: true + timeout-minutes: 10 + env: + AWF_REFLECT_ENABLED: 1 + COPILOT_AGENT_RUNNER_TYPE: STANDALONE + COPILOT_DUMMY_BYOK: dummy-byok-key-for-offline-mode + COPILOT_GITHUB_TOKEN: ${{ github.token }} + COPILOT_MODEL: detection + GH_AW_HARNESS_MAX_RETRIES: 0 + GH_AW_LLM_PROVIDER: github + GH_AW_MAX_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_DETECTION_MAX_AI_CREDITS || '400' }} + GH_AW_MAX_TURNS: ${{ vars.GH_AW_DEFAULT_MAX_TURNS || '' }} + GH_AW_PHASE: detection + GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_TIMEOUT_MINUTES: 10 + GH_AW_VERSION: v0.88.7 + GITHUB_API_URL: ${{ github.api_url }} + GITHUB_AW: true + GITHUB_COPILOT_INTEGRATION_ID: agentic-workflows + GITHUB_HEAD_REF: ${{ github.head_ref }} + GITHUB_REF_NAME: ${{ github.ref_name }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md + GITHUB_WORKSPACE: ${{ github.workspace }} + GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com + GIT_AUTHOR_NAME: github-actions[bot] + GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com + GIT_COMMITTER_NAME: github-actions[bot] + RUNNER_TEMP: ${{ runner.temp }} + S2STOKENS: true + TRACEPARENT: ${{ env.GITHUB_AW_OTEL_TRACE_ID != '' && env.GITHUB_AW_OTEL_PARENT_SPAN_ID != '' && format('00-{0}-{1}-01', env.GITHUB_AW_OTEL_TRACE_ID, env.GITHUB_AW_OTEL_PARENT_SPAN_ID) || '' }} + WORKFLOW_NAME: "Update rust-analyzer" + WORKFLOW_DESCRIPTION: "Update the rust-analyzer version used by the Rust extractor and prepare a pull request." + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} + GH_AW_DETECTION_CONTINUE_ON_ERROR: "true" + run: | + set -o pipefail + printf '%s' "$(date +%s%3N)" > /tmp/gh-aw/agent_cli_start_ms.txt + GH_AW_COPILOT_SRC="$(command -v copilot 2>/dev/null || true)" + if [ -z "$GH_AW_COPILOT_SRC" ] || [ ! -x "$GH_AW_COPILOT_SRC" ]; then + echo "GitHub Copilot CLI executable not found on PATH after installation" >&2 + exit 127 + fi + GH_AW_COPILOT_BIN="${RUNNER_TEMP}/gh-aw/bin/copilot" + mkdir -p "${RUNNER_TEMP}/gh-aw/bin" + if [ "$GH_AW_COPILOT_SRC" != "$GH_AW_COPILOT_BIN" ]; then + cp "$GH_AW_COPILOT_SRC" "$GH_AW_COPILOT_BIN" + fi + chmod 755 "$GH_AW_COPILOT_BIN" + + (umask 177 && touch /tmp/gh-aw/threat-detection/detection.log) + GH_AW_MAX_AI_CREDITS="${GH_AW_MAX_AI_CREDITS:-400}" + if [[ ! "$GH_AW_MAX_AI_CREDITS" =~ ^[0-9]+$ ]]; then + GH_AW_MAX_AI_CREDITS="400" + fi + printf '%s\n' "{\"\$schema\":\"https://github.com/github/gh-aw-firewall/releases/download/v0.28.14/awf-config.schema.json\",\"apiProxy\":{\"enabled\":true,\"enableTokenSteering\":true,\"maxRuns\":500,\"maxAiCredits\":${GH_AW_MAX_AI_CREDITS},\"maxCacheMisses\":5,\"models\":{\"agent\":[\"sonnet-6x\",\"gpt-5.4\",\"gpt-5.5\",\"gpt-5.6\",\"gpt-5.3\",\"gemini-pro\",\"any\"],\"antigravity\":[\"copilot/antigravity*\",\"google/antigravity*\",\"gemini/antigravity*\"],\"any\":[\"copilot/*\",\"anthropic/*\",\"openai/*\",\"google/*\",\"gemini/*\"],\"auto\":[\"copilot/auto\",\"large\"],\"claude\":[\"agent\"],\"codex\":[\"agent\"],\"coding\":[\"copilot/gpt-5*codex*\",\"openai/gpt-5*codex*\",\"gpt-5-codex\",\"kimi\"],\"computer-use\":[\"copilot/*computer-use*\",\"google/*computer-use*\",\"gemini/*computer-use*\",\"openai/*computer-use*\"],\"copilot\":[\"agent\"],\"deep-research\":[\"copilot/deep-research*\",\"copilot/o3-deep-research*\",\"copilot/o4-mini-deep-research*\",\"google/deep-research*\",\"gemini/deep-research*\",\"openai/o3-deep-research*\",\"openai/o4-mini-deep-research*\"],\"detection\":[\"small\"],\"evals\":[\"small\"],\"fable\":[\"copilot/*fable*\",\"anthropic/*fable*\"],\"gemini\":[\"agent\"],\"gemini-3-flash\":[\"copilot/gemini-3*flash*\",\"google/gemini-3*flash*\",\"gemini/gemini-3*flash*\"],\"gemini-3-pro\":[\"copilot/gemini-3*pro*\",\"google/gemini-3*pro*\",\"google/nano-banana*\",\"gemini/gemini-3*pro*\"],\"gemini-3.1-flash\":[\"copilot/gemini-3.1*flash*\",\"google/gemini-3.1*flash*\",\"gemini/gemini-3.1*flash*\"],\"gemini-3.1-pro\":[\"copilot/gemini-3.1*pro*\",\"google/gemini-3.1*pro*\",\"gemini/gemini-3.1*pro*\"],\"gemini-3.5-flash\":[\"copilot/gemini-3.5*flash*\",\"google/gemini-3.5*flash*\",\"gemini/gemini-3.5*flash*\"],\"gemini-3.6-flash\":[\"copilot/gemini-3.6*flash*\",\"google/gemini-3.6*flash*\",\"gemini/gemini-3.6*flash*\"],\"gemini-3.7-flash\":[\"copilot/gemini-3.7*flash*\",\"google/gemini-3.7*flash*\",\"gemini/gemini-3.7*flash*\"],\"gemini-flash\":[\"copilot/gemini-*flash*\",\"google/gemini-*flash*\",\"gemini/gemini-*flash*\"],\"gemini-flash-lite\":[\"copilot/gemini-*flash*lite*\",\"google/gemini-*flash*lite*\",\"gemini/gemini-*flash*lite*\"],\"gemini-omni\":[\"copilot/gemini-omni*\",\"google/gemini-omni*\",\"gemini/gemini-omni*\"],\"gemini-pro\":[\"copilot/gemini-*pro*\",\"google/gemini-*pro*\",\"gemini/gemini-*pro*\"],\"gemma\":[\"copilot/gemma*\",\"google/gemma*\",\"gemini/gemma*\"],\"gpt-5\":[\"copilot/gpt-5*\",\"openai/gpt-5*\"],\"gpt-5-codex\":[\"copilot/gpt-5*codex*\",\"openai/gpt-5*codex*\"],\"gpt-5-mini\":[\"copilot/gpt-5*mini*\",\"openai/gpt-5*mini*\"],\"gpt-5-nano\":[\"copilot/gpt-5*nano*\",\"openai/gpt-5*nano*\"],\"gpt-5-pro\":[\"copilot/gpt-5*pro*\",\"openai/gpt-5*pro*\"],\"gpt-5.1\":[\"copilot/gpt-5.1*\",\"openai/gpt-5.1*\"],\"gpt-5.2\":[\"copilot/gpt-5.2*\",\"openai/gpt-5.2*\"],\"gpt-5.3\":[\"copilot/gpt-5.3*\",\"openai/gpt-5.3*\"],\"gpt-5.4\":[\"copilot/gpt-5.4*\",\"openai/gpt-5.4*\"],\"gpt-5.5\":[\"copilot/gpt-5.5*\",\"openai/gpt-5.5*\"],\"gpt-5.6\":[\"copilot/gpt-5.6*\",\"openai/gpt-5.6*\"],\"grok\":[\"copilot/*grok*\",\"openai/*grok*\"],\"haiku\":[\"copilot/*haiku*\",\"anthropic/*haiku*\"],\"image-generation\":[\"copilot/gpt-image*\",\"openai/gpt-image*\",\"openai/chatgpt-image*\",\"copilot/gemini-*image*\",\"google/gemini-*image*\",\"gemini/gemini-*image*\",\"google/imagen*\"],\"kimi\":[\"copilot/kimi*\",\"openai/kimi*\"],\"kiwi\":[\"copilot/kiwi*\",\"openai/kiwi*\"],\"large\":[\"sonnet\",\"gpt-5-pro\",\"gpt-5\",\"gemini-pro\"],\"lyria\":[\"google/lyria*\",\"gemini/lyria*\",\"copilot/lyria*\"],\"mai-code\":[\"copilot/MAI-Code*\",\"copilot/mai-code*\",\"openai/MAI-Code*\"],\"mai-code-1-flash-picker\":[\"copilot/MAI-Code-1-Flash-picker*\",\"copilot/mai-code-1-flash-picker*\",\"openai/MAI-Code-1-Flash-picker*\"],\"mini\":[\"haiku\",\"gpt-5-mini\",\"gpt-5-nano\",\"gemini-flash-lite\"],\"nano-banana\":[\"copilot/nano-banana*\",\"google/nano-banana*\",\"gemini/nano-banana*\"],\"opus\":[\"copilot/*opus*\",\"anthropic/*opus*\"],\"opusplan\":[\"opus?effort=high\"],\"raptor-mini\":[\"copilot/raptor*\",\"openai/raptor*\"],\"reasoning\":[\"copilot/o1*\",\"copilot/o3*\",\"copilot/o4*\",\"openai/o1*\",\"openai/o3*\",\"openai/o4*\"],\"robotics\":[\"copilot/*robotics*\",\"google/*robotics*\",\"gemini/*robotics*\"],\"small\":[\"mini\"],\"small-agent\":[\"haiku\",\"gpt-5-mini\",\"gemini-flash\"],\"sonnet\":[\"copilot/*sonnet*\",\"anthropic/*sonnet*\"],\"sonnet-6x\":[\"copilot/*sonnet-4.5*\",\"copilot/*sonnet-4.6*\",\"copilot/*sonnet-5*\",\"copilot/*sonnet-4-5-*\",\"anthropic/*sonnet-4-5-*\",\"copilot/*sonnet-4-6*\",\"anthropic/*sonnet-4-6*\",\"anthropic/*sonnet-5*\"],\"summarization\":[\"haiku\",\"gpt-5-mini\",\"gemini-flash-lite\",\"mini\"],\"veo\":[\"google/veo*\",\"gemini/veo*\"],\"vision\":[\"copilot/gemini-*image*\",\"google/gemini-*image*\",\"gemini/gemini-*image*\",\"copilot/gemini-*flash*\",\"google/gemini-*flash*\",\"gemini/gemini-*flash*\"]}},\"container\":{\"imageTag\":\"0.28.14,squid=sha256:2ce8df3abf3e9b76e9c0cf5863da41f1ab3f89b20ad14b988806ab89e7bf2cd5,agent=sha256:f7df036c86575527b61f3f7df91c4412349a12b2a74988d929eafa2999230c98,api-proxy=sha256:6f95e2234dd9bd6333a8ff28ccea7ecf0204acd4a09108723844dbd2bf6268c5,cli-proxy=sha256:3a379c5e96e29499c815e9dd2a71334d01c326a9b73991c76544fda9cae35c34\"},\"logging\":{\"proxyLogsDir\":\"/tmp/gh-aw/sandbox/firewall/logs\",\"auditDir\":\"/tmp/gh-aw/sandbox/firewall/audit\"}}" > "${RUNNER_TEMP}/gh-aw/awf-config.json" + cp "${RUNNER_TEMP}/gh-aw/awf-config.json" /tmp/gh-aw/awf-config.json + export GH_AW_MODELS_JSON_PATH="/tmp/gh-aw/models.json" + GH_AW_DOCKER_HOST="" + if [[ "${DOCKER_HOST:-}" =~ ^tcp:// ]]; then + GH_AW_DOCKER_HOST="${DOCKER_HOST}" + fi + if [[ "${DOCKER_HOST:-}" =~ ^tcp:// ]]; then + _GH_AW_CHROOT_JSON=$(jq -c --arg src "${RUNNER_TEMP}/gh-aw" --arg user "$(id -un)" --argjson uid "$(id -u)" --argjson gid "$(id -g)" --arg home "${RUNNER_TEMP}/gh-aw/home" '.chroot={"binariesSourcePath":$src,"identity":{"user":$user,"uid":$uid,"gid":$gid,"home":$home}}' "${RUNNER_TEMP}/gh-aw/awf-config.json") || { echo "chroot config patch failed" >&2; exit 1; } + printf '%s\n' "$_GH_AW_CHROOT_JSON" > "${RUNNER_TEMP}/gh-aw/awf-config.json" + fi + GH_AW_TOOL_CACHE_MOUNT="" + GH_AW_TOOL_CACHE="${RUNNER_TOOL_CACHE:?RUNNER_TOOL_CACHE must be set}" + if [ -d "$GH_AW_TOOL_CACHE" ]; then + if [[ "$GH_AW_TOOL_CACHE" != /opt/* ]]; then + GH_AW_TOOL_CACHE_MOUNT="$GH_AW_TOOL_CACHE:$GH_AW_TOOL_CACHE:ro" + fi + fi + # shellcheck disable=SC1003,SC2016,SC2086 + awf --config "${RUNNER_TEMP}/gh-aw/awf-config.json" --container-workdir "${GITHUB_WORKSPACE}" --mount "${RUNNER_TEMP}/gh-aw:${RUNNER_TEMP}/gh-aw:ro" --mount "${RUNNER_TEMP}/gh-aw:/host${RUNNER_TEMP}/gh-aw:ro" ${GH_AW_TOOL_CACHE_MOUNT:+--mount "$GH_AW_TOOL_CACHE_MOUNT"} ${GH_AW_DOCKER_HOST:+--docker-host "$GH_AW_DOCKER_HOST"} --env-all --exclude-env ACTIONS_ID_TOKEN_REQUEST_TOKEN --exclude-env ACTIONS_ID_TOKEN_REQUEST_URL --exclude-env COPILOT_GITHUB_TOKEN --mount /tmp/gh-aw:/tmp/gh-aw:rw --mount /tmp/gh-aw/threat-detection:/tmp/gh-aw/threat-detection:rw --log-level info --skip-pull \ + -- /bin/bash -c 'set +o histexpand; export PATH="${RUNNER_TEMP}/gh-aw/bin:$PATH" && : "${RUNNER_TOOL_CACHE:?RUNNER_TOOL_CACHE must be set}"; GH_AW_TOOL_CACHE="$RUNNER_TOOL_CACHE"; GH_AW_TOOL_BINS="$(find "$GH_AW_TOOL_CACHE" -maxdepth 5 -type d -name bin 2>/dev/null | tr '\''\n'\'' '\'':'\'')"; GH_AW_TOOL_BINS="${GH_AW_TOOL_BINS%:}"; export PATH="$PATH${GH_AW_TOOL_BINS:+:}$GH_AW_TOOL_BINS"; [ -n "$GOROOT" ] && export PATH="$GOROOT/bin:$PATH" || true; [ -n "$ERLANG_HOME" ] && export PATH="$ERLANG_HOME/bin:$PATH" || true && threat-detect --engine copilot --output /tmp/gh-aw/threat-detection/detection_result.json /tmp/gh-aw/threat-detection' 2>&1 | tee -a /tmp/gh-aw/threat-detection/detection.log + - name: Render detection log + if: always() && steps.detection_guard.outputs.run_detection == 'true' + continue-on-error: true + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'render_detection_log.cjs')); + await main(); + - name: Copy detection firewall logs + if: always() && steps.detection_guard.outputs.run_detection == 'true' + continue-on-error: true + run: | + mkdir -p /tmp/gh-aw/threat-detection/sandbox/firewall + if [ -d /tmp/gh-aw/sandbox/firewall/logs ]; then mkdir -p /tmp/gh-aw/threat-detection/sandbox/firewall/logs && cp -r /tmp/gh-aw/sandbox/firewall/logs/. /tmp/gh-aw/threat-detection/sandbox/firewall/logs/; fi + if [ -d /tmp/gh-aw/sandbox/firewall/audit ]; then mkdir -p /tmp/gh-aw/threat-detection/sandbox/firewall/audit && cp -r /tmp/gh-aw/sandbox/firewall/audit/. /tmp/gh-aw/threat-detection/sandbox/firewall/audit/; fi + - name: Upload threat detection artifact + if: always() && steps.detection_guard.outputs.run_detection == 'true' + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: detection + path: | + /tmp/gh-aw/threat-detection/detection_result.json + /tmp/gh-aw/threat-detection/sandbox/firewall/logs/ + /tmp/gh-aw/threat-detection/sandbox/firewall/audit/ + if-no-files-found: ignore + - name: Parse threat detection token usage for step summary + id: parse_detection_token_usage + if: always() + continue-on-error: true + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_TOKEN_USAGE_SUMMARY_TITLE: Threat Detection Token Usage + with: + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'parse_token_usage.cjs')); + await main(); + - name: Conclude threat detection + id: detection_conclusion + if: always() + continue-on-error: true + env: + RUN_DETECTION: ${{ steps.detection_guard.outputs.run_detection }} + DETECTION_AGENTIC_EXECUTION_OUTCOME: ${{ steps.detection_agentic_execution.outcome }} + GH_AW_DETECTION_CONTINUE_ON_ERROR: "true" + run: | + bash "${RUNNER_TEMP}/gh-aw/actions/conclude_threat_detection.sh" /tmp/gh-aw/threat-detection/detection_result.json + + safe_outputs: + needs: + - activation + - agent + - detection + if: (!cancelled()) && needs.agent.result != 'skipped' && needs.detection.result == 'success' + runs-on: ubuntu-slim + permissions: + contents: write + issues: write + pull-requests: write + timeout-minutes: 45 + env: + GH_AW_AGENT_AIC: ${{ needs.agent.outputs.aic }} + GH_AW_AIC: ${{ needs.agent.outputs.aic }} + GH_AW_AMBIENT_CONTEXT: ${{ needs.agent.outputs.ambient_context }} + GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/update-rust-analyzer" + GH_AW_DETECTION_CONCLUSION: ${{ needs.detection.outputs.detection_conclusion }} + GH_AW_DETECTION_REASON: ${{ needs.detection.outputs.detection_reason }} + GH_AW_EFFECTIVE_TOKENS: ${{ needs.agent.outputs.effective_tokens }} + GH_AW_ENGINE_ID: "copilot" + GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} + GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} + GH_AW_WORKFLOW_EMOJI: "🦀" + GH_AW_WORKFLOW_ID: "update-rust-analyzer" + GH_AW_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/${{ github.repository }}/blob/${{ github.ref_name }}/.github/workflows/update-rust-analyzer.md" + outputs: + code_push_failure_count: ${{ steps.process_safe_outputs.outputs.code_push_failure_count }} + code_push_failure_errors: ${{ steps.process_safe_outputs.outputs.code_push_failure_errors }} + create_discussion_error_count: ${{ steps.process_safe_outputs.outputs.create_discussion_error_count }} + create_discussion_errors: ${{ steps.process_safe_outputs.outputs.create_discussion_errors }} + created_pr_number: ${{ steps.process_safe_outputs.outputs.created_pr_number }} + created_pr_url: ${{ steps.process_safe_outputs.outputs.created_pr_url }} + process_safe_outputs_items_applied: ${{ steps.process_safe_outputs.outputs.items_applied }} + process_safe_outputs_items_cancelled: ${{ steps.process_safe_outputs.outputs.items_cancelled }} + process_safe_outputs_items_deferred: ${{ steps.process_safe_outputs.outputs.items_deferred }} + process_safe_outputs_items_failed: ${{ steps.process_safe_outputs.outputs.items_failed }} + process_safe_outputs_items_skipped: ${{ steps.process_safe_outputs.outputs.items_skipped }} + process_safe_outputs_items_succeeded: ${{ steps.process_safe_outputs.outputs.items_succeeded }} + process_safe_outputs_items_warnings: ${{ steps.process_safe_outputs.outputs.items_warnings }} + process_safe_outputs_processed_count: ${{ steps.process_safe_outputs.outputs.processed_count }} + process_safe_outputs_status: ${{ steps.process_safe_outputs.outputs.status }} + process_safe_outputs_temporary_id_map: ${{ steps.process_safe_outputs.outputs.temporary_id_map }} + steps: + - name: Setup Scripts + id: setup + uses: github/gh-aw-actions/setup@5e508589e03a7757a7e05b26e834292f5445bfb6 # v0.88.7 + with: + destination: ${{ runner.temp }}/gh-aw/actions + job-name: ${{ github.job }} + trace-id: ${{ needs.activation.outputs.setup-trace-id }} + parent-span-id: ${{ needs.activation.outputs.setup-parent-span-id || needs.activation.outputs.setup-span-id }} + env: + GH_AW_SETUP_WORKFLOW_NAME: "Update rust-analyzer" + GH_AW_CURRENT_WORKFLOW_REF: ${{ github.repository }}/.github/workflows/update-rust-analyzer.lock.yml@${{ github.ref }} + GH_AW_INFO_VERSION: "1.0.80" + GH_AW_INFO_AWF_VERSION: "v0.28.14" + GH_AW_INFO_ENGINE_ID: "copilot" + - name: Mask OTLP telemetry headers + run: bash "${RUNNER_TEMP}/gh-aw/actions/mask_otlp_headers.sh" + - name: Download agent output artifact + id: download-agent-output + continue-on-error: true + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + pattern: "{agent,agent-output-fallback}" + merge-multiple: true + path: /tmp/gh-aw/ + - name: Setup agent output environment variable + id: setup-agent-output-env + if: steps.download-agent-output.outcome == 'success' + run: | + mkdir -p /tmp/gh-aw/ + find "/tmp/gh-aw/" -type f -print + if [ -f "/tmp/gh-aw/agent_output.json" ]; then + echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_OUTPUT" + fi + - name: Download patch artifact + continue-on-error: true + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: agent + path: /tmp/gh-aw/ + - name: Checkout repository + if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: true + fetch-depth: 0 + token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + - name: Configure Git credentials + if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') + env: + GITHUB_REPOSITORY: ${{ github.repository }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GIT_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + run: bash "${RUNNER_TEMP}/gh-aw/actions/configure_git_credentials.sh" + - name: Configure GH_HOST for enterprise compatibility + id: ghes-host-config + shell: bash + run: | # zizmor: ignore[github-env] - GITHUB_SERVER_URL is set by GitHub Actions, not user input. + # Derive GH_HOST from GITHUB_SERVER_URL so the gh CLI targets the correct + # GitHub instance (GHES/GHEC). On github.com this is a harmless no-op. + GH_HOST="${GITHUB_SERVER_URL#https://}" + GH_HOST="${GH_HOST#http://}" + echo "GH_HOST=${GH_HOST}" >> "$GITHUB_ENV" + - name: Process Safe Outputs + id: process_safe_outputs + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }} + GH_AW_COMMENT_ID: ${{ needs.activation.outputs.comment_id }} + GH_AW_ALLOWED_DOMAINS: "*.githubusercontent.com,*.pythonhosted.org,anaconda.org,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,bcr.bazel.build,binstar.org,blog.bazel.build,bootstrap.pypa.io,codeload.github.com,conda.anaconda.org,conda.binstar.org,crates.io,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,docs.github.com,files.pythonhosted.org,github-cloud.githubusercontent.com,github-cloud.s3.amazonaws.com,github.blog,github.com,github.githubassets.com,index.crates.io,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,lfs.github.com,mirror.bazel.build,objects.githubusercontent.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,patch-diff.githubusercontent.com,patchdiff.githubusercontent.com,pip.pypa.io,ppa.launchpad.net,productionresultssa0.blob.core.windows.net,productionresultssa1.blob.core.windows.net,productionresultssa10.blob.core.windows.net,productionresultssa11.blob.core.windows.net,productionresultssa12.blob.core.windows.net,productionresultssa13.blob.core.windows.net,productionresultssa14.blob.core.windows.net,productionresultssa15.blob.core.windows.net,productionresultssa16.blob.core.windows.net,productionresultssa17.blob.core.windows.net,productionresultssa18.blob.core.windows.net,productionresultssa19.blob.core.windows.net,productionresultssa2.blob.core.windows.net,productionresultssa3.blob.core.windows.net,productionresultssa4.blob.core.windows.net,productionresultssa5.blob.core.windows.net,productionresultssa6.blob.core.windows.net,productionresultssa7.blob.core.windows.net,productionresultssa8.blob.core.windows.net,productionresultssa9.blob.core.windows.net,pypi.org,pypi.python.org,raw.githubusercontent.com,releases.bazel.build,repo.anaconda.com,repo.continuum.io,s.symcb.com,s.symcd.com,security.ubuntu.com,sh.rustup.rs,static.crates.io,static.rust-lang.org,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.googleapis.com" + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_API_URL: ${{ github.api_url }} + GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"create_pull_request\":{\"allowed_files\":[\"Cargo.lock\",\"shared/tree-sitter-extractor/Cargo.toml\",\"shared/yeast/Cargo.toml\",\"shared/yeast-macros/Cargo.toml\",\"shared/yeast-schema/Cargo.toml\",\"ruby/extractor/Cargo.toml\",\"unified/extractor/Cargo.toml\",\"unified/swift-syntax-rs/Cargo.toml\",\"shared/yeast/src/**\",\"shared/yeast-macros/src/**\",\"shared/yeast-schema/src/**\",\"shared/tree-sitter-extractor/src/**\",\"MODULE.bazel\",\"MODULE.bazel.lock\",\"rust-toolchain.toml\",\"rust/**\",\"misc/bazel/3rdparty/**\"],\"branch_prefix\":\"automation/update-rust-analyzer/\",\"draft\":true,\"max\":1,\"max_patch_files\":1000,\"max_patch_size\":10240,\"protect_top_level_dot_folders\":true,\"protected_files\":[\"package.json\",\"bun.lockb\",\"bunfig.toml\",\"deno.json\",\"deno.jsonc\",\"deno.lock\",\"global.json\",\"NuGet.Config\",\"Directory.Packages.props\",\"mix.exs\",\"mix.lock\",\"go.mod\",\"go.sum\",\"stack.yaml\",\"stack.yaml.lock\",\"pom.xml\",\"build.gradle\",\"build.gradle.kts\",\"settings.gradle\",\"settings.gradle.kts\",\"gradle.properties\",\"package-lock.json\",\"yarn.lock\",\"pnpm-lock.yaml\",\"npm-shrinkwrap.json\",\"requirements.txt\",\"Pipfile\",\"Pipfile.lock\",\"pyproject.toml\",\"setup.py\",\"setup.cfg\",\"Gemfile\",\"Gemfile.lock\",\"uv.lock\",\"CODEOWNERS\",\"DESIGN.md\",\"README.md\",\"CONTRIBUTING.md\",\"CHANGELOG.md\",\"SECURITY.md\",\"CODE_OF_CONDUCT.md\",\"AGENTS.md\"],\"protected_files_policy\":\"request_review\",\"title_prefix\":\"Rust: \"},\"create_report_incomplete_issue\":{\"title-prefix\":\"[incomplete]\"},\"missing_data\":{},\"missing_tool\":{},\"noop\":{\"max\":1,\"report-as-issue\":\"false\"},\"report_incomplete\":{}}" + GH_AW_CI_TRIGGER_TOKEN: ${{ secrets.GH_AW_CI_TRIGGER_TOKEN }} + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const path = require('path'); + const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions'); + const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs')); + setupGlobals(core, github, context, exec, io, getOctokit); + const { main } = require(path.join(actionsDir, 'process_safe_outputs.cjs')); + await main(); + - name: Upload Safe Outputs Items + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: safe-outputs-items + path: | + /tmp/gh-aw/safe-output-items.jsonl + /tmp/gh-aw/temporary-id-map.json + /tmp/gh-aw/safe-output-errors.json + if-no-files-found: ignore diff --git a/.github/workflows/update-rust-analyzer.md b/.github/workflows/update-rust-analyzer.md new file mode 100644 index 000000000000..23c6aebb4e44 --- /dev/null +++ b/.github/workflows/update-rust-analyzer.md @@ -0,0 +1,129 @@ +--- +name: Update rust-analyzer +emoji: 🦀 +description: Update the rust-analyzer version used by the Rust extractor and prepare a pull request. +intent: Keep the Rust extractor on the latest compatible rust-analyzer version with a reviewable, validated pull request. +on: + workflow_dispatch: + roles: [admin, maintainer, write] +permissions: + contents: read + actions: read + pull-requests: read + copilot-requests: write +strict: true +checkout: + fetch-depth: 0 +concurrency: + group: update-rust-analyzer + cancel-in-progress: false +timeout-minutes: 180 +tools: + github: + mode: gh-proxy + toolsets: [repos, pull_requests, actions] + bash: ["*"] + edit: true +network: + allowed: + - defaults + - github + - github-actions + - rust + - bazel + - python +steps: + - name: Set up CodeQL + uses: ./.github/actions/fetch-codeql + + - name: Configure Git + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + + - name: Install cargo-edit + continue-on-error: true + run: cargo install cargo-edit@0.13.0 --locked + + - name: Run rust-analyzer updater script + run: | + mkdir -p /tmp/gh-aw/agent + set +e + python3 rust/scripts/update_rust_analyzer.py \ + 2>&1 | tee /tmp/gh-aw/agent/rust-analyzer-update.log + status=${PIPESTATUS[0]} + set -e + + printf '%s\n' "$status" > /tmp/gh-aw/agent/rust-analyzer-update-status.txt + if grep -Fxq "No new rust-analyzer version available." \ + /tmp/gh-aw/agent/rust-analyzer-update.log; then + printf '%s\n' "no-update" > /tmp/gh-aw/agent/rust-analyzer-update-result.txt + else + printf '%s\n' "update" > /tmp/gh-aw/agent/rust-analyzer-update-result.txt + fi +safe-outputs: + report-incomplete: {} + create-pull-request: + title-prefix: "Rust: " + branch-prefix: "automation/update-rust-analyzer/" + draft: true + max-patch-size: 10240 + max-patch-files: 1000 + allowed-files: + - "Cargo.lock" + - "shared/tree-sitter-extractor/Cargo.toml" + - "shared/yeast/Cargo.toml" + - "shared/yeast-macros/Cargo.toml" + - "shared/yeast-schema/Cargo.toml" + - "ruby/extractor/Cargo.toml" + - "unified/extractor/Cargo.toml" + - "unified/swift-syntax-rs/Cargo.toml" + # A rust-analyzer update can require a newer Rust toolchain whose Clippy + # lints require compatibility fixes in any of the Rust sources. + # rust-analyzer dependency updates can also update tree-sitter APIs, + # requiring compatibility fixes in the shared extractor implementation. + - "shared/yeast/src/**" + - "shared/yeast-macros/src/**" + - "shared/yeast-schema/src/**" + - "shared/tree-sitter-extractor/src/**" + - "MODULE.bazel" + - "MODULE.bazel.lock" + - "rust-toolchain.toml" + - "rust/**" + - "misc/bazel/3rdparty/**" +--- + +# Update rust-analyzer + +## Task + +The workflow has already run `rust/scripts/update_rust_analyzer.py`. Read: + +- `/tmp/gh-aw/agent/rust-analyzer-update.log` for its complete output. +- `/tmp/gh-aw/agent/rust-analyzer-update-status.txt` for its exit status. +- `/tmp/gh-aw/agent/rust-analyzer-update-result.txt` for the deterministic result classification. + +If the result is `no-update`, call `noop` with the reason +`No new rust-analyzer version available.` and stop immediately. Do not inspect +CI, modify files, or create a pull request. + +Otherwise, continue the update from the existing working tree and commits: + +1. Review the updater log, exit status, commits, and working tree. Do not rerun + the updater script or undo changes that it successfully made. +2. Read `rust/updating-rust-analyzer.md` and all applicable repository + instructions, then complete the remaining update steps. +3. Review the complete diff and commits. Do not include secrets. Do not refer + to private repositories, internal issues, or internal pull requests in the + public pull request. +4. Use `create_pull_request` exactly once. Summarize the updater output, + changes, and validation. If the update cannot be finished, still create a + partial draft pull request when + there are useful changes, and clearly list failures, missing work, and the + next commands for a maintainer. + +The pull request is created after this agent execution, so its newly triggered +CI cannot be awaited in this run. Compensate with the strongest practical +local validation and state this limitation accurately in the pull request. +If the updater did not report `no-update` but no useful patch can be produced, +call `report_incomplete` with the updater failure and exact blocker. diff --git a/.github/workflows/yeast-test.yml b/.github/workflows/yeast-test.yml new file mode 100644 index 000000000000..48e0ca01498f --- /dev/null +++ b/.github/workflows/yeast-test.yml @@ -0,0 +1,32 @@ +name: Test Yeast + +on: + push: + paths: + - "shared/yeast/**" + - "shared/yeast-macros/**" + - "shared/yeast-schema/**" + - .github/workflows/yeast-test.yml + branches: + - main + - "rc/*" + pull_request: + paths: + - "shared/yeast/**" + - "shared/yeast-macros/**" + - "shared/yeast-schema/**" + - .github/workflows/yeast-test.yml + +env: + CARGO_TERM_COLOR: always + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Run tests + run: cargo test --verbose --package codeql-extractor --package yeast --package yeast-macros --package yeast-schema diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0f2906dab310..fdbc68e86d7e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ default_language_version: python: python3.12 repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.2.0 + rev: v6.0.0 hooks: - id: trailing-whitespace exclude: /test([^/]*)/.*$(? 10 - * x = x - 1 - * end - * end - * puts x - * end - * ``` - * - * The basic block on line 8 is in the dominance frontier - * of the basic block starting on line 3 because that block - * dominates the basic block on line 4, which is a predecessor of - * `puts x`. Also, the basic block starting on line 3 does not - * dominate the basic block on line 8. - */ - predicate inDominanceFrontier(BasicBlock df) { - this.dominatesPredecessor(df) and - not this.strictlyDominates(df) - } - - /** - * Holds if this basic block dominates a predecessor of `df`. - */ - private predicate dominatesPredecessor(BasicBlock df) { this.dominates(df.getAPredecessor()) } - - /** - * Gets the basic block that immediately dominates this basic block, if any. - * - * That is, all paths reaching this basic block from some entry point - * basic block must go through the result, which is an immediate basic block - * predecessor of this basic block. - * - * Example: - * - * ```rb - * def m b - * if b - * return 0 - * end - * return 1 - * end - * ``` - * - * The basic block starting on line 2 is an immediate dominator of - * the basic block on line 5 (all paths from the entry point of `m` - * to `return 1` must go through the `if` block, and the `if` block - * is an immediate predecessor of `return 1`). - */ - BasicBlock getImmediateDominator() { bbIDominates(result, this) } - - /** - * Holds if this basic block strictly post-dominates basic block `bb`. - * - * That is, all paths reaching a normal exit point basic block from basic - * block `bb` must go through this basic block (which must be different - * from `bb`). - * - * Example: - * - * ```rb - * def m b - * if b - * puts "b" - * end - * puts "m" - * end - * ``` - * - * The basic block on line 5 strictly post-dominates the basic block on - * line 3 (all paths to the exit point of `m` from `puts "b"` must go - * through `puts "m"`). - */ - predicate strictlyPostDominates(BasicBlock bb) { bbIPostDominates+(this, bb) } - - /** - * Holds if this basic block post-dominates basic block `bb`. - * - * That is, all paths reaching a normal exit point basic block from basic - * block `bb` must go through this basic block. - * - * Example: - * - * ```rb - * def m b - * if b - * puts "b" - * end - * puts "m" - * end - * ``` - * - * The basic block on line 5 post-dominates the basic block on line 3 - * (all paths to the exit point of `m` from `puts "b"` must go through - * `puts "m"`). - */ - predicate postDominates(BasicBlock bb) { - this.strictlyPostDominates(bb) or - this = bb - } - - /** Holds if this basic block is in a loop in the control flow graph. */ - predicate inLoop() { this.getASuccessor+() = this } - - /** Gets a textual representation of this basic block. */ - string toString() { result = this.getFirstNode().toString() } - - /** Gets the location of this basic block. */ - Location getLocation() { result = this.getFirstNode().getLocation() } -} - -cached -private module Cached { - /** Internal representation of basic blocks. */ - cached - newtype TBasicBlock = TBasicBlockStart(Node cfn) { startsBB(cfn) } - - /** Holds if `cfn` starts a new basic block. */ - private predicate startsBB(Node cfn) { - not exists(cfn.getAPredecessor()) and exists(cfn.getASuccessor()) - or - cfn.isJoin() - or - cfn.getAPredecessor().isBranch() - or - /* - * In cases such as - * - * ```rb - * if x or y - * foo - * else - * bar - * ``` - * - * we have a CFG that looks like - * - * x --false--> [false] x or y --false--> bar - * \ | - * --true--> y --false-- - * \ - * --true--> [true] x or y --true--> foo - * - * and we want to ensure that both `foo` and `bar` start a new basic block, - * in order to get a `ConditionalBlock` out of the disjunction. - */ - - exists(cfn.getAPredecessor(any(BooleanSuccessor s))) - } - - /** - * Holds if `succ` is a control flow successor of `pred` within - * the same basic block. - */ - private predicate intraBBSucc(Node pred, Node succ) { - succ = pred.getASuccessor() and - not startsBB(succ) - } - - /** - * Holds if `cfn` is the `i`th node in basic block `bb`. - * - * In other words, `i` is the shortest distance from a node `bbStart` - * that starts a basic block to `cfn` along the `intraBBSucc` relation. - */ - cached - predicate bbIndex(Node bbStart, Node cfn, int i) = - shortestDistances(startsBB/1, intraBBSucc/2)(bbStart, cfn, i) - - /** - * Holds if the first node of basic block `succ` is a control flow - * successor of the last node of basic block `pred`. - */ - private predicate succBB(BasicBlock pred, BasicBlock succ) { succ = pred.getASuccessor() } - - /** Holds if `dom` is an immediate dominator of `bb`. */ - cached - predicate bbIDominates(BasicBlock dom, BasicBlock bb) = - idominance(entryBB/1, succBB/2)(_, dom, bb) - - /** Holds if `pred` is a basic block predecessor of `succ`. */ - private predicate predBB(BasicBlock succ, BasicBlock pred) { succBB(pred, succ) } - - /** Holds if `bb` is an exit basic block that represents normal exit. */ - private predicate normalExitBB(BasicBlock bb) { bb.getANode().(AnnotatedExitNode).isNormal() } - - /** Holds if `dom` is an immediate post-dominator of `bb`. */ - cached - predicate bbIPostDominates(BasicBlock dom, BasicBlock bb) = - idominance(normalExitBB/1, predBB/2)(_, dom, bb) - - /** - * Gets the `i`th predecessor of join block `jb`, with respect to some - * arbitrary order. - */ - cached - JoinBlockPredecessor getJoinBlockPredecessor(JoinBlock jb, int i) { - none() - /* - * result = - * rank[i + 1](JoinBlockPredecessor jbp | - * jbp = jb.getAPredecessor() - * | - * jbp order by JoinBlockPredecessors::getId(jbp), JoinBlockPredecessors::getSplitString(jbp) - * ) - */ - - } - - cached - predicate immediatelyControls(ConditionBlock cb, BasicBlock succ, BooleanSuccessor s) { - succ = cb.getASuccessor(s) and - forall(BasicBlock pred | pred = succ.getAPredecessor() and pred != cb | succ.dominates(pred)) - } - - cached - predicate controls(ConditionBlock cb, BasicBlock controlled, BooleanSuccessor s) { - exists(BasicBlock succ | cb.immediatelyControls(succ, s) | succ.dominates(controlled)) - } -} - -private import Cached - -/** Holds if `bb` is an entry basic block. */ -private predicate entryBB(BasicBlock bb) { bb.getFirstNode() instanceof EntryNode } - -/** - * An entry basic block, that is, a basic block whose first node is - * an entry node. - */ -class EntryBasicBlock extends BasicBlock { - EntryBasicBlock() { entryBB(this) } -} - -/** - * An annotated exit basic block, that is, a basic block whose last node is - * an annotated exit node. - */ -class AnnotatedExitBasicBlock extends BasicBlock { - private boolean normal; - - AnnotatedExitBasicBlock() { - exists(AnnotatedExitNode n | - n = this.getANode() and - if n.isNormal() then normal = true else normal = false - ) - } - - /** Holds if this block represent a normal exit. */ - final predicate isNormal() { normal = true } -} - -/** - * An exit basic block, that is, a basic block whose last node is - * an exit node. - */ -class ExitBasicBlock extends BasicBlock { - ExitBasicBlock() { this.getLastNode() instanceof ExitNode } -} - -/* - * private module JoinBlockPredecessors { - * private predicate id(AstNode x, AstNode y) { x = y } - * - * private predicate idOf(AstNode x, int y) = equivalenceRelation(id/2)(x, y) - * - * int getId(JoinBlockPredecessor jbp) { - * idOf(Ast::toTreeSitter(jbp.getFirstNode().(AstCfgNode).getAstNode()), result) - * or - * idOf(Ast::toTreeSitter(jbp.(EntryBasicBlock).getScope()), result) - * } - * - * string getSplitString(JoinBlockPredecessor jbp) { - * result = jbp.getFirstNode().(AstCfgNode).getSplitsString() - * or - * not exists(jbp.getFirstNode().(AstCfgNode).getSplitsString()) and - * result = "" - * } - * } - */ - -/** A basic block with more than one predecessor. */ -class JoinBlock extends BasicBlock { - JoinBlock() { this.getFirstNode().isJoin() } - - /** - * Gets the `i`th predecessor of this join block, with respect to some - * arbitrary order. - */ - JoinBlockPredecessor getJoinBlockPredecessor(int i) { result = getJoinBlockPredecessor(this, i) } -} - -/** A basic block that is an immediate predecessor of a join block. */ -class JoinBlockPredecessor extends BasicBlock { - JoinBlockPredecessor() { this.getASuccessor() instanceof JoinBlock } -} - -/** A basic block that terminates in a condition, splitting the subsequent control flow. */ -class ConditionBlock extends BasicBlock { - ConditionBlock() { this.getLastNode().isCondition() } - - /** - * Holds if basic block `succ` is immediately controlled by this basic - * block with conditional value `s`. That is, `succ` is an immediate - * successor of this block, and `succ` can only be reached from - * the callable entry point by going via the `s` edge out of this basic block. - */ - predicate immediatelyControls(BasicBlock succ, BooleanSuccessor s) { - immediatelyControls(this, succ, s) - } - - /** - * Holds if basic block `controlled` is controlled by this basic block with - * conditional value `s`. That is, `controlled` can only be reached from - * the callable entry point by going via the `s` edge out of this basic block. - */ - predicate controls(BasicBlock controlled, BooleanSuccessor s) { controls(this, controlled, s) } -} diff --git a/actions/ql/lib/codeql/actions/controlflow/internal/Cfg.qll b/actions/ql/lib/codeql/actions/controlflow/internal/Cfg.qll index 38ce9e7e03db..f01fdbd0e4a1 100644 --- a/actions/ql/lib/codeql/actions/controlflow/internal/Cfg.qll +++ b/actions/ql/lib/codeql/actions/controlflow/internal/Cfg.qll @@ -1,288 +1,418 @@ private import codeql.actions.Ast -private import codeql.controlflow.Cfg as CfgShared +private import codeql.controlflow.ControlFlowGraph as CfgShared private import codeql.Locations +private import codeql.util.Void -module Completion { - import codeql.controlflow.SuccessorType +private class ActionsAstNode = AstNode; - private newtype TCompletion = - TSimpleCompletion() or - TBooleanCompletion(boolean b) { b in [false, true] } or - TReturnCompletion() +module CfgImpl { + private predicate isDeclaredEnvExpr(AstNode parent, AstNode child) { + exists(Workflow workflow | parent = workflow and child = workflow.getEnv().getAnEnvVarExpr()) + or + exists(Job job | parent = job and child = job.getEnv().getAnEnvVarExpr()) + or + exists(Step step | parent = step and child = step.getEnv().getAnEnvVarExpr()) + } - abstract class Completion extends TCompletion { - abstract string toString(); + private predicate isCfgChild(AstNode parent, AstNode child) { + isDeclaredEnvExpr(parent, child) + or + exists(CompositeAction action | + parent = action and + (child = action.getAnInput() or child = action.getOutputs() or child = action.getRuns()) + ) + or + exists(ReusableWorkflow workflow | + parent = workflow and + ( + child = workflow.getAnInput() or + child = workflow.getOutputs() or + child = workflow.getStrategy() or + child = workflow.getAJob() + ) + ) + or + exists(Workflow workflow | + parent = workflow and + not workflow instanceof ReusableWorkflow and + (child = workflow.getStrategy() or child = workflow.getAJob()) + ) + or + exists(Runs runs | parent = runs and child = runs.getStep(_)) + or + exists(Outputs outputs | parent = outputs and child = outputs.getAnOutputExpr()) + or + exists(Strategy strategy | parent = strategy and child = strategy.getAMatrixVarExpr()) + or + exists(LocalJob job | + parent = job and + (child = job.getAStep() or child = job.getOutputs() or child = job.getStrategy()) + ) + or + exists(ExternalJob job | + parent = job and + ( + child = job.getArgumentExpr(_) or + child = job.getOutputs() or + child = job.getStrategy() + ) + ) + or + exists(UsesStep uses | parent = uses and child = uses.getArgumentExpr(_)) + or + exists(Run run | + parent = run and + (child = run.getAnScriptExpr() or child = run.getScript()) + ) + } - predicate isValidForSpecific(AstNode e) { none() } + private AstNode getCfgChild(AstNode parent, int index) { + result = + rank[index](AstNode child, Location l | + isCfgChild(parent, child) and l = child.getLocation() + | + child + order by + l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() + ) + } - predicate isValidFor(AstNode e) { this.isValidForSpecific(e) } + private module CfgAst implements CfgShared::AstSig { + class AstNode = ActionsAstNode; + + AstNode getChild(AstNode node, int index) { result = getCfgChild(node, index) } + + class Callable extends AstNode { + Callable() { + this instanceof CompositeAction + or + this instanceof Workflow and + not exists(CompositeAction action | action.getLocation() = this.getLocation()) + } + } + + AstNode callableGetBody(Callable callable) { result = callable } + + /** + * Gets the unique callable containing `node`. + * + * An Actions AST node may have multiple parent paths, but they converge on + * the same root. + */ + Callable getEnclosingCallable(AstNode node) { + result = node + or + not node instanceof Callable and + result = getEnclosingCallable(node.getParentNode()) + } - abstract SuccessorType getAMatchingSuccessorType(); - } + class Parameter extends AstNode { + Parameter() { none() } - abstract class NormalCompletion extends Completion { } + AstNode getPattern() { none() } - class SimpleCompletion extends NormalCompletion, TSimpleCompletion { - override string toString() { result = "SimpleCompletion" } + Expr getDefaultValue() { none() } + } - override predicate isValidFor(AstNode e) { not any(Completion c).isValidForSpecific(e) } + Parameter callableGetParameter(Callable callable, int index) { none() } - override DirectSuccessor getAMatchingSuccessorType() { any() } - } + class Stmt extends AstNode { + Stmt() { none() } + } - class BooleanCompletion extends NormalCompletion, TBooleanCompletion { - boolean value; + class LabeledStmt extends Stmt { + LabeledStmt() { none() } - BooleanCompletion() { this = TBooleanCompletion(value) } + Stmt getStmt() { none() } + } - override string toString() { result = "BooleanCompletion(" + value + ")" } + class Expr extends AstNode { + Expr() { none() } + } - override predicate isValidForSpecific(AstNode e) { none() } + class BlockStmt extends Stmt { + BlockStmt() { none() } - override BooleanSuccessor getAMatchingSuccessorType() { result.getValue() = value } + Stmt getStmt(int index) { none() } - final boolean getValue() { result = value } - } + Stmt getLastStmt() { none() } + } - class ReturnCompletion extends Completion, TReturnCompletion { - override string toString() { result = "ReturnCompletion" } + class ExprStmt extends Stmt { + ExprStmt() { none() } - override predicate isValidForSpecific(AstNode e) { none() } + Expr getExpr() { none() } + } - override ReturnSuccessor getAMatchingSuccessorType() { any() } - } -} + class IfStmt extends Stmt { + IfStmt() { none() } -module CfgScope { - abstract class CfgScope extends AstNode { } + Expr getCondition() { none() } - class WorkflowScope extends CfgScope instanceof Workflow { } + Stmt getThen() { none() } - class CompositeActionScope extends CfgScope instanceof CompositeAction { } -} + Stmt getElse() { none() } + } -private module Implementation implements CfgShared::InputSig { - import codeql.actions.Ast - import Completion - import CfgScope + class LoopStmt extends Stmt { + LoopStmt() { none() } - predicate completionIsNormal(Completion c) { not c instanceof ReturnCompletion } + Stmt getBody() { none() } + } - // Not using CFG splitting, so the following are just dummy types. - private newtype TUnit = Unit() + class WhileStmt extends LoopStmt { + WhileStmt() { none() } - additional class SplitKindBase = TUnit; + Expr getCondition() { none() } + } - additional class Split extends TUnit { - abstract string toString(); - } + class DoStmt extends LoopStmt { + DoStmt() { none() } - predicate completionIsSimple(Completion c) { c instanceof SimpleCompletion } + Expr getCondition() { none() } + } - predicate completionIsValidFor(Completion c, AstNode e) { c.isValidFor(e) } + class UntilStmt extends LoopStmt { + UntilStmt() { none() } - CfgScope getCfgScope(AstNode e) { - exists(AstNode p | p = e.getParentNode() | - result = p - or - not p instanceof CfgScope and result = getCfgScope(p) - ) - } + Expr getCondition() { none() } + } - additional int maxSplits() { result = 0 } + class ForStmt extends LoopStmt { + ForStmt() { none() } - predicate scopeFirst(CfgScope scope, AstNode e) { - first(scope.(Workflow), e) or - first(scope.(CompositeAction), e) - } + AstNode getInit(int index) { none() } - predicate scopeLast(CfgScope scope, AstNode e, Completion c) { - last(scope.(Workflow), e, c) or - last(scope.(CompositeAction), e, c) - } + Expr getCondition() { none() } - SuccessorType getAMatchingSuccessorType(Completion c) { result = c.getAMatchingSuccessorType() } + AstNode getUpdate(int index) { none() } + } - int idOfAstNode(AstNode node) { none() } + class ForEachStmt extends LoopStmt { + ForEachStmt() { none() } - int idOfCfgScope(CfgScope scope) { none() } -} + Expr getVariable() { none() } -module CfgImpl = CfgShared::Make; + Expr getCollection() { none() } + } -private import CfgImpl -private import Completion -private import CfgScope + class BreakStmt extends Stmt { + BreakStmt() { none() } + } -private class CompositeActionTree extends StandardPreOrderTree instanceof CompositeAction { - override ControlFlowTree getChildNode(int i) { - result = - rank[i](AstNode child, Location l | - ( - child = this.(CompositeAction).getAnInput() or - child = this.(CompositeAction).getOutputs() or - child = this.(CompositeAction).getRuns() - ) and - l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) - } -} + class ContinueStmt extends Stmt { + ContinueStmt() { none() } + } -private class RunsTree extends StandardPreOrderTree instanceof Runs { - override ControlFlowTree getChildNode(int i) { result = super.getStep(i) } -} + class GotoStmt extends Stmt { + GotoStmt() { none() } + } -private class WorkflowTree extends StandardPreOrderTree instanceof Workflow { - override ControlFlowTree getChildNode(int i) { - if this instanceof ReusableWorkflow - then - result = - rank[i](AstNode child, Location l | - ( - child = this.(ReusableWorkflow).getAnInput() or - child = this.(ReusableWorkflow).getOutputs() or - child = this.(ReusableWorkflow).getStrategy() or - child = this.(ReusableWorkflow).getAJob() - ) and - l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) - else - result = - rank[i](AstNode child, Location l | - ( - child = super.getStrategy() or - child = super.getAJob() - ) and - l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) - } -} + class ReturnStmt extends Stmt { + ReturnStmt() { none() } -private class OutputsTree extends StandardPreOrderTree instanceof Outputs { - override ControlFlowTree getChildNode(int i) { - result = - rank[i](AstNode child, Location l | - child = super.getAnOutputExpr() and l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) - } -} + Expr getExpr() { none() } + } -private class StrategyTree extends StandardPreOrderTree instanceof Strategy { - override ControlFlowTree getChildNode(int i) { - result = - rank[i](AstNode child, Location l | - child = super.getAMatrixVarExpr() and l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) - } -} + class Throw extends AstNode { + Throw() { none() } -private class JobTree extends StandardPreOrderTree instanceof LocalJob { - override ControlFlowTree getChildNode(int i) { - result = - rank[i](AstNode child, Location l | - ( - child = super.getAStep() or - child = super.getOutputs() or - child = super.getStrategy() - ) and - l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) - } -} + Expr getExpr() { none() } + } -private class ExternalJobTree extends StandardPreOrderTree instanceof ExternalJob { - override ControlFlowTree getChildNode(int i) { - result = - rank[i](AstNode child, Location l | - ( - child = super.getArgumentExpr(_) or - child = super.getInScopeEnvVarExpr(_) or - child = super.getOutputs() or - child = super.getStrategy() - ) and - l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) - } -} + class TryStmt extends Stmt { + TryStmt() { none() } -private class UsesTree extends StandardPreOrderTree instanceof UsesStep { - override ControlFlowTree getChildNode(int i) { - result = - rank[i](AstNode child, Location l | - (child = super.getArgumentExpr(_) or child = super.getInScopeEnvVarExpr(_)) and - l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) + AstNode getBody(int index) { none() } + + CatchClause getCatch(int index) { none() } + + Stmt getFinally() { none() } + } + + class CatchClause extends AstNode { + CatchClause() { none() } + + AstNode getPattern() { none() } + + AstNode getVariable() { none() } + + Expr getCondition() { none() } + + Stmt getBody() { none() } + } + + class Switch extends AstNode { + Switch() { none() } + + Expr getExpr() { none() } + + Case getCase(int index) { none() } + + Stmt getStmt(int index) { none() } + } + + class Case extends AstNode { + Case() { none() } + + AstNode getPattern(int index) { none() } + + Expr getGuard() { none() } + + AstNode getBody() { none() } + } + + class DefaultCase extends Case { + DefaultCase() { none() } + } + + class ConditionalExpr extends Expr { + ConditionalExpr() { none() } + + Expr getCondition() { none() } + + Expr getThen() { none() } + + Expr getElse() { none() } + } + + class BinaryExpr extends Expr { + BinaryExpr() { none() } + + Expr getLeftOperand() { none() } + + Expr getRightOperand() { none() } + } + + class LogicalAndExpr extends BinaryExpr { + LogicalAndExpr() { none() } + } + + class LogicalOrExpr extends BinaryExpr { + LogicalOrExpr() { none() } + } + + class NullCoalescingExpr extends BinaryExpr { + NullCoalescingExpr() { none() } + } + + class UnaryExpr extends Expr { + UnaryExpr() { none() } + + Expr getOperand() { none() } + } + + class LogicalNotExpr extends UnaryExpr { + LogicalNotExpr() { none() } + } + + class Assignment extends BinaryExpr { + Assignment() { none() } + } + + class AssignExpr extends Assignment { + AssignExpr() { none() } + } + + class CompoundAssignment extends Assignment { + CompoundAssignment() { none() } + } + + class AssignLogicalAndExpr extends CompoundAssignment { + AssignLogicalAndExpr() { none() } + } + + class AssignLogicalOrExpr extends CompoundAssignment { + AssignLogicalOrExpr() { none() } + } + + class AssignNullCoalescingExpr extends CompoundAssignment { + AssignNullCoalescingExpr() { none() } + } + + class BooleanLiteral extends Expr { + BooleanLiteral() { none() } + + boolean getValue() { none() } + } + + class PatternMatchExpr extends Expr { + PatternMatchExpr() { none() } + + Expr getExpr() { none() } + + AstNode getPattern() { none() } + } } -} -private class RunTree extends StandardPreOrderTree instanceof Run { - override ControlFlowTree getChildNode(int i) { - result = - rank[i](AstNode child, Location l | - ( - child = super.getInScopeEnvVarExpr(_) or - child = super.getAnScriptExpr() or - child = super.getScript() - ) and - l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) + private module Cfg0 = CfgShared::Make0; + + private module Input1 implements Cfg0::InputSig1 { + predicate cfgCachedStageRef() { CfgCachedStage::ref() } + + class Label = Void; + + class CallableContext = Void; } -} -private class ScalarValueTree extends StandardPreOrderTree instanceof ScalarValue { - override ControlFlowTree getChildNode(int i) { - result = - rank[i](Expression child, Location l | - child = super.getAChildNode() and - l = child.getLocation() - | - child - order by - l.getStartLine(), l.getStartColumn(), l.getEndColumn(), l.getEndLine(), child.toString() - ) + private module Cfg1 = Cfg0::Make1; + + private module Input2 implements Cfg1::InputSig2 { + predicate beginAbruptCompletion( + AstNode ast, PreControlFlowNode node, AbruptCompletion completion, boolean always + ) { + none() + } + + predicate endAbruptCompletion(AstNode ast, PreControlFlowNode node, AbruptCompletion completion) { + none() + } + + predicate step(PreControlFlowNode predecessor, PreControlFlowNode successor) { none() } } -} -private class UsesLeaf extends LeafTree instanceof Uses { } + private module Cfg2 = Cfg1::Make2; + + private import Cfg0 + private import Cfg1 + private import Cfg2 + import Public + import ControlFlow -private class InputTree extends LeafTree instanceof Input { } + class CfgScope = CfgAst::Callable; -private class ScalarValueLeaf extends LeafTree instanceof ScalarValue { } + /** A CFG scope for a workflow. */ + class WorkflowScope extends CfgScope instanceof Workflow { } + + /** A CFG scope for a composite action. */ + class CompositeActionScope extends CfgScope instanceof CompositeAction { } -private class ExpressionLeaf extends LeafTree instanceof Expression { } + /** A control flow node. */ + class Node = ControlFlowNode; + + /** The control flow node at the entry point of a scope. */ + class EntryNode = ControlFlow::EntryNode; + + /** A control flow node indicating normal or exceptional termination of a scope. */ + class AnnotatedExitNode = ControlFlow::AnnotatedExitNode; + + /** A control flow node indicating normal termination of a scope. */ + class NormalExitNode = ControlFlow::NormalExitNode; + + /** A control flow node indicating exceptional termination of a scope. */ + class ExceptionalExitNode = ControlFlow::ExceptionalExitNode; + + /** A control flow node indicating the termination of a scope. */ + class ExitNode = ControlFlow::ExitNode; + + /** + * A node that uniquely represents an AST node. + * + * Unreachable AST nodes do not have an `AstCfgNode`. + */ + class AstCfgNode extends Node { + AstCfgNode() { this.injects(_) } + + AstNode getAstNode() { this.injects(result) } + } +} diff --git a/actions/ql/lib/codeql/actions/dataflow/internal/DataFlowPrivate.qll b/actions/ql/lib/codeql/actions/dataflow/internal/DataFlowPrivate.qll index cf95292588c3..1576377e0804 100644 --- a/actions/ql/lib/codeql/actions/dataflow/internal/DataFlowPrivate.qll +++ b/actions/ql/lib/codeql/actions/dataflow/internal/DataFlowPrivate.qll @@ -3,7 +3,6 @@ private import codeql.dataflow.DataFlow private import codeql.actions.Ast private import codeql.actions.Cfg as Cfg private import codeql.Locations -private import codeql.actions.controlflow.BasicBlocks private import DataFlowPublic private import codeql.actions.dataflow.ExternalFlow private import codeql.actions.dataflow.FlowSteps @@ -50,7 +49,7 @@ predicate isArgumentNode(ArgumentNode arg, DataFlowCall call, ArgumentPosition p } DataFlowCallable nodeGetEnclosingCallable(Node node) { - node = TExprNode(any(DataFlowExpr e | result = e.getScope())) + node = TExprNode(any(DataFlowExpr e | result = e.getEnclosingCallable())) } DataFlowType getNodeType(Node node) { any() } @@ -59,13 +58,16 @@ predicate nodeIsHidden(Node node) { none() } class DataFlowExpr extends Cfg::Node { DataFlowExpr() { - this.getAstNode() instanceof Job or - this.getAstNode() instanceof Expression or - this.getAstNode() instanceof Uses or - this.getAstNode() instanceof Run or - this.getAstNode() instanceof Outputs or - this.getAstNode() instanceof Input or - this.getAstNode() instanceof ScalarValue + this.injects(this.getAstNode()) and + ( + this.getAstNode() instanceof Job or + this.getAstNode() instanceof Expression or + this.getAstNode() instanceof Uses or + this.getAstNode() instanceof Run or + this.getAstNode() instanceof Outputs or + this.getAstNode() instanceof Input or + this.getAstNode() instanceof ScalarValue + ) } } @@ -73,14 +75,17 @@ class DataFlowExpr extends Cfg::Node { * A call corresponds to a Uses steps where a composite action or a reusable workflow get called */ class DataFlowCall instanceof Cfg::Node { - DataFlowCall() { super.getAstNode() instanceof Uses } + DataFlowCall() { + this.injects(this.getAstNode()) and + super.getAstNode() instanceof Uses + } /** Gets a textual representation of this element. */ string toString() { result = super.toString() } string getName() { result = super.getAstNode().(Uses).getCallee() } - DataFlowCallable getEnclosingCallable() { result = super.getScope() } + DataFlowCallable getEnclosingCallable() { result = super.getEnclosingCallable() } /** Gets a best-effort total ordering. */ int totalorder() { none() } diff --git a/actions/ql/lib/codeql/actions/security/ControlChecks.qll b/actions/ql/lib/codeql/actions/security/ControlChecks.qll index aea57fdc4b71..733c92559d70 100644 --- a/actions/ql/lib/codeql/actions/security/ControlChecks.qll +++ b/actions/ql/lib/codeql/actions/security/ControlChecks.qll @@ -276,9 +276,19 @@ abstract class LabelCheck extends ControlCheck { } } +/** + * A deployment environment that may serve as a sanitizer for + * various vulnerabilities. + * + * It is possible to customize which deployment environments apply. The default behavior + * of this model is for any environment to be considered a sanitizer. + * If values are provided then those names + * will be used to define the valid sanitizer set. + * To describe the situation where there is no acceptable sanitizer environment + * populate the predicate `enabledDeploymentEnvironmentDataModel` to contain a single empty string. + */ class EnvironmentCheck extends ControlCheck instanceof Environment { EnvironmentCheck() { - // if there are any custom tuples use those if enabledDeploymentEnvironmentDataModel(_) then enabledDeploymentEnvironmentDataModel(this.(Environment).getName()) else this instanceof Environment diff --git a/actions/ql/lib/codeql/actions/test/InlineExpectationsTestQuery.ql b/actions/ql/lib/codeql/actions/test/InlineExpectationsTestQuery.ql new file mode 100644 index 000000000000..deb797b553e6 --- /dev/null +++ b/actions/ql/lib/codeql/actions/test/InlineExpectationsTestQuery.ql @@ -0,0 +1,9 @@ +/** + * @kind test-postprocess + */ + +private import actions +private import codeql.util.test.InlineExpectationsTest as T +private import codeql.actions.test.internal.InlineExpectationsTestImpl +import T::TestPostProcessing +import T::TestPostProcessing::Make diff --git a/actions/ql/lib/codeql/actions/test/internal/InlineExpectationsTestImpl.qll b/actions/ql/lib/codeql/actions/test/internal/InlineExpectationsTestImpl.qll new file mode 100644 index 000000000000..f1f275fa136a --- /dev/null +++ b/actions/ql/lib/codeql/actions/test/internal/InlineExpectationsTestImpl.qll @@ -0,0 +1,24 @@ +private import codeql.Locations as L +private import codeql.actions.ast.internal.Yaml as Yaml +private import codeql.util.test.InlineExpectationsTest + +/** Provides the Actions implementation of inline expectation parsing. */ +module Impl implements InlineExpectationsTestSig { + /** A class representing YAML comments that may contain inline expectations. */ + class ExpectationComment extends Yaml::YamlComment { + /** Gets the contents of this comment. */ + string getContents() { result = this.getText() } + } + + class Location = L::Location; + + string getRelativeUrl(Location location) { + exists(int startLine, int startColumn, int endLine, int endColumn | + location.hasLocationInfo(_, startLine, startColumn, endLine, endColumn) + | + result = + location.getFile().getRelativePath() + ":" + startLine + ":" + startColumn + ":" + endLine + + ":" + endColumn + ) + } +} diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 612e631c6f8b..34de9308ea72 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.6.1 +version: 0.7.0 library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index 9676c26efaff..d99ca36e7cc6 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 0.6.38 + +No user-facing changes. + +## 0.6.37 + +No user-facing changes. + +## 0.6.36 + +### Minor Analysis Improvements + +* The `actions/unpinned-tag` query no longer reports action references pinned by a structurally valid `.github/workflows/actions.lock` entry for the enclosing workflow. +* The `actions/unpinned-tag` query no longer reports `$/` self repository references (e.g. `uses: $/path/to/action`), which resolve to the same repository at the running commit and are therefore inherently pinned, just like `./` self workspace (local) references. + ## 0.6.35 No user-facing changes. diff --git a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql index f98439063712..8a1f821d073a 100644 --- a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql +++ b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql @@ -33,6 +33,12 @@ private predicate isPinnedContainer(string version) { bindingset[nwo] private predicate isContainerImage(string nwo) { nwo.regexpMatch("^docker://.+") } +// A `$/` reference is a same-repository (self repository) reference (e.g. `$/path/to/action`), +// resolved at the commit the calling workflow is running. Like `./` local (self workspace) +// references, it is inherently pinned and can never be an unpinned-tag finding, so we never flag it. +bindingset[nwo] +private predicate isSelfRepository(string nwo) { nwo.matches("$/%") } + private predicate hasUsesContainerName(Uses uses, string name) { exists(Workflow workflow | uses.getEnclosingWorkflow() = workflow and @@ -55,6 +61,8 @@ where hasUsesContainerName(uses, name) and uses.getVersion() = version and not isTrustedOwner(nwo) and + not isSelfRepository(nwo) and + not any(ActionsLock lock).pins(uses, version) and not ( if uses instanceof UsesStep and isContainerImage(nwo) then isPinnedContainer(version) diff --git a/actions/ql/src/change-notes/released/0.6.36.md b/actions/ql/src/change-notes/released/0.6.36.md new file mode 100644 index 000000000000..1dce71ce8b9d --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.36.md @@ -0,0 +1,6 @@ +## 0.6.36 + +### Minor Analysis Improvements + +* The `actions/unpinned-tag` query no longer reports action references pinned by a structurally valid `.github/workflows/actions.lock` entry for the enclosing workflow. +* The `actions/unpinned-tag` query no longer reports `$/` self repository references (e.g. `uses: $/path/to/action`), which resolve to the same repository at the running commit and are therefore inherently pinned, just like `./` self workspace (local) references. diff --git a/actions/ql/src/change-notes/released/0.6.37.md b/actions/ql/src/change-notes/released/0.6.37.md new file mode 100644 index 000000000000..1740f508517b --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.37.md @@ -0,0 +1,3 @@ +## 0.6.37 + +No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.38.md b/actions/ql/src/change-notes/released/0.6.38.md new file mode 100644 index 000000000000..2e9de7e7bd69 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.38.md @@ -0,0 +1,3 @@ +## 0.6.38 + +No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index 0a9561ad0b98..5953c00e4a81 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.35 +lastReleaseVersion: 0.6.38 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 5e4877698e63..fc604c700879 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.35 +version: 0.6.38 library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/actions/ql/test/library-tests/actions-lock/actions.lock b/actions/ql/test/library-tests/actions-lock/.github/workflows/actions.lock similarity index 100% rename from actions/ql/test/library-tests/actions-lock/actions.lock rename to actions/ql/test/library-tests/actions-lock/.github/workflows/actions.lock diff --git a/actions/ql/test/library-tests/actions-lock/options b/actions/ql/test/library-tests/actions-lock/options index fa6fe3a34854..af54d6532407 100644 --- a/actions/ql/test/library-tests/actions-lock/options +++ b/actions/ql/test/library-tests/actions-lock/options @@ -1 +1 @@ -semmle-extractor-options: actions.lock +semmle-extractor-options: --file-type YAML .github/workflows/actions.lock diff --git a/actions/ql/test/library-tests/actions-lock/test.expected b/actions/ql/test/library-tests/actions-lock/test.expected index 128df0e9ae0e..bd9b029ccd89 100644 --- a/actions/ql/test/library-tests/actions-lock/test.expected +++ b/actions/ql/test/library-tests/actions-lock/test.expected @@ -1 +1 @@ -| actions.lock:0:0:0:0 | actions.lock | +| .github/workflows/actions.lock:0:0:0:0 | .github/workflows/actions.lock | diff --git a/actions/ql/test/library-tests/basic/test.expected b/actions/ql/test/library-tests/basic/test.expected index 7c1c560c87e1..d29f21b8360a 100644 --- a/actions/ql/test/library-tests/basic/test.expected +++ b/actions/ql/test/library-tests/basic/test.expected @@ -931,254 +931,368 @@ parentNodes | .github/workflows/test.yml:40:14:40:52 | echo ${{needs.job1.outputs.job_output}} | .github/workflows/test.yml:39:9:40:53 | Run Step: sink | | .github/workflows/test.yml:40:20:40:53 | needs.job1.outputs.job_output | .github/workflows/test.yml:40:14:40:52 | echo ${{needs.job1.outputs.job_output}} | cfgNodes -| .github/workflows/commands.yml:1:1:39:30 | enter on: push | -| .github/workflows/commands.yml:1:1:39:30 | exit on: push | -| .github/workflows/commands.yml:1:1:39:30 | exit on: push (normal) | +| .github/workflows/commands.yml:1:1:39:30 | After on: push | +| .github/workflows/commands.yml:1:1:39:30 | Entry | +| .github/workflows/commands.yml:1:1:39:30 | Exit | +| .github/workflows/commands.yml:1:1:39:30 | Normal Exit | | .github/workflows/commands.yml:1:1:39:30 | on: push | +| .github/workflows/commands.yml:9:5:31:2 | After Job: local_commands | | .github/workflows/commands.yml:9:5:31:2 | Job: local_commands | +| .github/workflows/commands.yml:15:9:18:6 | After Run Step | | .github/workflows/commands.yml:15:9:18:6 | Run Step | | .github/workflows/commands.yml:16:14:17:30 | command1 ; command2\n | +| .github/workflows/commands.yml:18:9:20:6 | After Run Step | | .github/workflows/commands.yml:18:9:20:6 | Run Step | | .github/workflows/commands.yml:18:14:19:30 | command3 \| command4\n | +| .github/workflows/commands.yml:20:9:22:6 | After Run Step | | .github/workflows/commands.yml:20:9:22:6 | Run Step | | .github/workflows/commands.yml:20:14:21:33 | command5 "$(command6)"\n | +| .github/workflows/commands.yml:22:9:24:6 | After Run Step | | .github/workflows/commands.yml:22:9:24:6 | Run Step | | .github/workflows/commands.yml:22:14:23:31 | command7 && command8\n | +| .github/workflows/commands.yml:24:9:26:6 | After Run Step | | .github/workflows/commands.yml:24:9:26:6 | Run Step | | .github/workflows/commands.yml:24:14:25:32 | command9 \|\| command10\n | +| .github/workflows/commands.yml:26:9:28:6 | After Run Step | | .github/workflows/commands.yml:26:9:28:6 | Run Step | | .github/workflows/commands.yml:26:14:27:34 | command11 "`command12`"\n | +| .github/workflows/commands.yml:28:9:31:2 | After Run Step | | .github/workflows/commands.yml:28:9:31:2 | Run Step | | .github/workflows/commands.yml:28:14:29:50 | command13 "`command14` $(date \| wc -l)"\n | +| .github/workflows/commands.yml:32:5:39:30 | After Job: local_commands2 | | .github/workflows/commands.yml:32:5:39:30 | Job: local_commands2 | +| .github/workflows/commands.yml:34:9:37:6 | After Run Step | | .github/workflows/commands.yml:34:9:37:6 | Run Step | | .github/workflows/commands.yml:35:14:36:30 | command1 ; command2\n | +| .github/workflows/commands.yml:37:9:39:30 | After Run Step | | .github/workflows/commands.yml:37:9:39:30 | Run Step | | .github/workflows/commands.yml:38:14:39:30 | command3 \| command4\n | -| .github/workflows/controlcheck.yml:1:1:16:25 | enter on: | -| .github/workflows/controlcheck.yml:1:1:16:25 | exit on: | -| .github/workflows/controlcheck.yml:1:1:16:25 | exit on: (normal) | +| .github/workflows/controlcheck.yml:1:1:16:25 | After on: | +| .github/workflows/controlcheck.yml:1:1:16:25 | Entry | +| .github/workflows/controlcheck.yml:1:1:16:25 | Exit | +| .github/workflows/controlcheck.yml:1:1:16:25 | Normal Exit | | .github/workflows/controlcheck.yml:1:1:16:25 | on: | +| .github/workflows/controlcheck.yml:6:5:11:2 | After Job: test1 | | .github/workflows/controlcheck.yml:6:5:11:2 | Job: test1 | +| .github/workflows/controlcheck.yml:9:9:11:2 | After Run Step | | .github/workflows/controlcheck.yml:9:9:11:2 | Run Step | | .github/workflows/controlcheck.yml:10:14:10:25 | echo "test1" | +| .github/workflows/controlcheck.yml:12:5:16:25 | After Job: test2 | | .github/workflows/controlcheck.yml:12:5:16:25 | Job: test2 | +| .github/workflows/controlcheck.yml:15:9:16:25 | After Run Step | | .github/workflows/controlcheck.yml:15:9:16:25 | Run Step | | .github/workflows/controlcheck.yml:16:14:16:25 | echo "test2" | -| .github/workflows/expression_nodes.yml:1:1:21:47 | enter on: issue_comment | -| .github/workflows/expression_nodes.yml:1:1:21:47 | exit on: issue_comment | -| .github/workflows/expression_nodes.yml:1:1:21:47 | exit on: issue_comment (normal) | +| .github/workflows/expression_nodes.yml:1:1:21:47 | After on: issue_comment | +| .github/workflows/expression_nodes.yml:1:1:21:47 | Entry | +| .github/workflows/expression_nodes.yml:1:1:21:47 | Exit | +| .github/workflows/expression_nodes.yml:1:1:21:47 | Normal Exit | | .github/workflows/expression_nodes.yml:1:1:21:47 | on: issue_comment | +| .github/workflows/expression_nodes.yml:5:5:21:47 | After Job: echo-chamber | | .github/workflows/expression_nodes.yml:5:5:21:47 | Job: echo-chamber | +| .github/workflows/expression_nodes.yml:7:9:8:6 | After Run Step | | .github/workflows/expression_nodes.yml:7:9:8:6 | Run Step | | .github/workflows/expression_nodes.yml:7:14:7:58 | LINE 1echo '${{ github.event.comment.body }}' | | .github/workflows/expression_nodes.yml:7:27:7:58 | github.event.comment.body | +| .github/workflows/expression_nodes.yml:8:9:10:6 | After Run Step | | .github/workflows/expression_nodes.yml:8:9:10:6 | Run Step | | .github/workflows/expression_nodes.yml:8:14:9:57 | LINE 1 echo '${{ github.event.comment.body }}'\n | | .github/workflows/expression_nodes.yml:9:25:9:56 | github.event.comment.body | +| .github/workflows/expression_nodes.yml:10:9:13:6 | After Run Step | | .github/workflows/expression_nodes.yml:10:9:13:6 | Run Step | | .github/workflows/expression_nodes.yml:10:14:12:53 | LINE 1 echo '${{ github.event.comment.body }}'\nLINE 2 echo '${{github.event.issue.body}}'\n | | .github/workflows/expression_nodes.yml:11:25:11:56 | github.event.comment.body | | .github/workflows/expression_nodes.yml:12:24:12:51 | github.event.issue.body | +| .github/workflows/expression_nodes.yml:13:9:16:6 | After Run Step | | .github/workflows/expression_nodes.yml:13:9:16:6 | Run Step | | .github/workflows/expression_nodes.yml:13:14:15:46 | LINE 1 echo '${{ github.event.comment.body }}' echo '${{github.event.issue.body}}'\n | | .github/workflows/expression_nodes.yml:14:9:15:46 | github.event.comment.body | | .github/workflows/expression_nodes.yml:14:9:15:46 | github.event.issue.body | +| .github/workflows/expression_nodes.yml:16:9:20:6 | After Run Step | | .github/workflows/expression_nodes.yml:16:9:20:6 | Run Step | | .github/workflows/expression_nodes.yml:16:14:19:57 | LINE 1 echo '${{ github.event.comment.body }}'\nLINE 2 echo '${{github.event.issue.body}}'\nLINE 3 echo '${{ github.event.comment.body }}'\n | | .github/workflows/expression_nodes.yml:17:25:17:56 | github.event.comment.body | | .github/workflows/expression_nodes.yml:18:24:18:51 | github.event.issue.body | | .github/workflows/expression_nodes.yml:19:24:19:55 | github.event.comment.body | +| .github/workflows/expression_nodes.yml:20:9:21:47 | After Run Step | | .github/workflows/expression_nodes.yml:20:9:21:47 | Run Step | | .github/workflows/expression_nodes.yml:20:14:21:46 | LINE 1 echo '${{ github.event.comment.body }}' echo '${{github.event.issue.body}}' | | .github/workflows/expression_nodes.yml:20:14:21:46 | github.event.comment.body | | .github/workflows/expression_nodes.yml:20:14:21:46 | github.event.issue.body | -| .github/workflows/many_strings.yml:1:1:18:1211 | enter on: | -| .github/workflows/many_strings.yml:1:1:18:1211 | exit on: | -| .github/workflows/many_strings.yml:1:1:18:1211 | exit on: (normal) | +| .github/workflows/many_strings.yml:1:1:18:1211 | After on: | +| .github/workflows/many_strings.yml:1:1:18:1211 | Entry | +| .github/workflows/many_strings.yml:1:1:18:1211 | Exit | +| .github/workflows/many_strings.yml:1:1:18:1211 | Normal Exit | | .github/workflows/many_strings.yml:1:1:18:1211 | on: | +| .github/workflows/many_strings.yml:9:5:18:1211 | After Job: Test | | .github/workflows/many_strings.yml:9:5:18:1211 | Job: Test | +| .github/workflows/many_strings.yml:11:9:18:1211 | After Run Step | | .github/workflows/many_strings.yml:11:9:18:1211 | Run Step | | .github/workflows/many_strings.yml:11:14:18:1211 | # Avoid choking on large chunks of data containing quotes\necho '["string1", "string2", "string3", "string4", "string5", "string6", "string7", "string8", "string9", "string10", "string11", "string12", "string13", "string14", "string15", "string16", "string17", "string18", "string19", "string20", "string21", "string22", "string23", "string24", "string25", "string26", "string27", "string28", "string29", "string30", "string31", "string32", "string33", "string34", "string35", "string36", "string37", "string38", "string39", "string40", "string41", "string42", "string43", "string44", "string45", "string46", "string47", "string48", "string49", "string50", "string51", "string52", "string53", "string54", "string55", "string56", "string57", "string58", "string59", "string60", "string61", "string62", "string63", "string64", "string65", "string66", "string67", "string68", "string69", "string70", "string71", "string72", "string73", "string74", "string75", "string76", "string77", "string78", "string79", "string80", "string81", "string82", "string83", "string84", "string85", "string86", "string87", "string88", "string89", "string90", "string91", "string92", "string93", "string94", "string95", "string96", "string97", "string98", "string99", "string100"]'\necho "['string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9', 'string10', 'string11', 'string12', 'string13', 'string14', 'string15', 'string16', 'string17', 'string18', 'string19', 'string20', 'string21', 'string22', 'string23', 'string24', 'string25', 'string26', 'string27', 'string28', 'string29', 'string30', 'string31', 'string32', 'string33', 'string34', 'string35', 'string36', 'string37', 'string38', 'string39', 'string40', 'string41', 'string42', 'string43', 'string44', 'string45', 'string46', 'string47', 'string48', 'string49', 'string50', 'string51', 'string52', 'string53', 'string54', 'string55', 'string56', 'string57', 'string58', 'string59', 'string60', 'string61', 'string62', 'string63', 'string64', 'string65', 'string66', 'string67', 'string68', 'string69', 'string70', 'string71', 'string72', 'string73', 'string74', 'string75', 'string76', 'string77', 'string78', 'string79', 'string80', 'string81', 'string82', 'string83', 'string84', 'string85', 'string86', 'string87', 'string88', 'string89', 'string90', 'string91', 'string92', 'string93', 'string94', 'string95', 'string96', 'string97', 'string98', 'string99', 'string100']"\n\n# Same as above but where each line has an unbalanced internal quote near the end\necho '["string1", "string2", "string3", "string4", "string5", "string6", "string7", "string8", "string9", "string10", "string11", "string12", "string13", "string14", "string15", "string16", "string17", "string18", "string19", "string20", "string21", "string22", "string23", "string24", "string25", "string26", "string27", "string28", "string29", "string30", "string31", "string32", "string33", "string34", "string35", "string36", "string37", "string38", "string39", "string40", "string41", "string42", "string43", "string44", "string45", "string46", "string47", "string48", "string49", "string50", "string51", "string52", "string53", "string54", "string55", "string56", "string57", "string58", "string59", "string60", "string61", "string62", "string63", "string64", "string65", "string66", "string67", "string68", "string69", "string70", "string71", "string72", "string73", "string74", "string75", "string76", "string77", "string78", "string79", "string80", "string81", "string82", "string83", "string84", "string85", "string86", "string87", "string88", "string89", "string90", "string91", "string92", "string93", "string94", "string95", "string96", "string97", "string98", "string99", "string100"]"'\necho "['string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9', 'string10', 'string11', 'string12', 'string13', 'string14', 'string15', 'string16', 'string17', 'string18', 'string19', 'string20', 'string21', 'string22', 'string23', 'string24', 'string25', 'string26', 'string27', 'string28', 'string29', 'string30', 'string31', 'string32', 'string33', 'string34', 'string35', 'string36', 'string37', 'string38', 'string39', 'string40', 'string41', 'string42', 'string43', 'string44', 'string45', 'string46', 'string47', 'string48', 'string49', 'string50', 'string51', 'string52', 'string53', 'string54', 'string55', 'string56', 'string57', 'string58', 'string59', 'string60', 'string61', 'string62', 'string63', 'string64', 'string65', 'string66', 'string67', 'string68', 'string69', 'string70', 'string71', 'string72', 'string73', 'string74', 'string75', 'string76', 'string77', 'string78', 'string79', 'string80', 'string81', 'string82', 'string83', 'string84', 'string85', 'string86', 'string87', 'string88', 'string89', 'string90', 'string91', 'string92', 'string93', 'string94', 'string95', 'string96', 'string97', 'string98', 'string99', 'string100']'"\n | -| .github/workflows/multiline2.yml:1:1:89:35 | enter on: | -| .github/workflows/multiline2.yml:1:1:89:35 | exit on: | -| .github/workflows/multiline2.yml:1:1:89:35 | exit on: (normal) | +| .github/workflows/multiline2.yml:1:1:89:35 | After on: | +| .github/workflows/multiline2.yml:1:1:89:35 | Entry | +| .github/workflows/multiline2.yml:1:1:89:35 | Exit | +| .github/workflows/multiline2.yml:1:1:89:35 | Normal Exit | | .github/workflows/multiline2.yml:1:1:89:35 | on: | +| .github/workflows/multiline2.yml:9:5:89:35 | After Job: Test | | .github/workflows/multiline2.yml:9:5:89:35 | Job: Test | +| .github/workflows/multiline2.yml:11:9:15:6 | After Run Step | | .github/workflows/multiline2.yml:11:9:15:6 | Run Step | | .github/workflows/multiline2.yml:11:14:14:54 | echo "changelog< event.json\n ${{ toJson(github.event) }}\nEOF\n | | .github/workflows/multiline2.yml:32:13:32:39 | toJson(github.event) | +| .github/workflows/multiline2.yml:34:9:40:6 | After Run Step | | .github/workflows/multiline2.yml:34:9:40:6 | Run Step | | .github/workflows/multiline2.yml:35:14:39:14 | cat \| tee -a $GITHUB_ENV << EOL\n${ISSUE_BODY}\nFOO\nEOL\n | +| .github/workflows/multiline2.yml:40:9:46:6 | After Run Step | | .github/workflows/multiline2.yml:40:9:46:6 | Run Step | | .github/workflows/multiline2.yml:41:14:45:14 | cat > issue.txt << EOL\n${ISSUE_BODY}\nFOO\nEOL\n | +| .github/workflows/multiline2.yml:46:9:52:6 | After Run Step | | .github/workflows/multiline2.yml:46:9:52:6 | Run Step | | .github/workflows/multiline2.yml:47:14:51:14 | cat << EOL \| tee -a $GITHUB_ENV\n${ISSUE_BODY}\nFOO\nEOL\n | +| .github/workflows/multiline2.yml:52:9:58:6 | After Run Step | | .github/workflows/multiline2.yml:52:9:58:6 | Run Step | | .github/workflows/multiline2.yml:53:14:57:14 | cat < file.txt\nHello\nWorld\nEOF\n | +| .github/workflows/multiline2.yml:58:9:63:6 | After Run Step | | .github/workflows/multiline2.yml:58:9:63:6 | Run Step | | .github/workflows/multiline2.yml:59:14:62:14 | cat <<-EOF \| tee -a "$GITHUB_ENV"\necho "FOO=$TITLE"\nEOF\n | +| .github/workflows/multiline2.yml:63:9:66:6 | After Run Step | | .github/workflows/multiline2.yml:63:9:66:6 | Run Step | | .github/workflows/multiline2.yml:64:14:65:142 | echo REPO_NAME=$(cat issue.txt \| sed 's/\\\\r/\\\\n/g' \| grep -ioE '\\\\s*[a-z0-9_-]+/[a-z0-9_-]+\\\\s*$' \| tr -d ' ') \| tee -a $GITHUB_ENV\n | +| .github/workflows/multiline2.yml:66:9:71:6 | After Run Step | | .github/workflows/multiline2.yml:66:9:71:6 | Run Step | | .github/workflows/multiline2.yml:67:14:70:42 | echo "PR_TITLE<> $GITHUB_OUTPUT\necho -e "$FILTERED_CHANGELOG" >> $GITHUB_OUTPUT\necho "CHANGELOGEOF" >> $GITHUB_OUTPUT\n | +| .github/workflows/multiline.yml:15:9:20:6 | After Run Step | | .github/workflows/multiline.yml:15:9:20:6 | Run Step | | .github/workflows/multiline.yml:15:14:19:40 | EOF=$(dd if=/dev/urandom bs=15 count=1 status=none \| base64)\necho "status<<$EOF" >> $GITHUB_OUTPUT\necho "$(cat status.output.json)" >> $GITHUB_OUTPUT\necho "$EOF" >> $GITHUB_OUTPUT\n | +| .github/workflows/multiline.yml:20:9:24:6 | After Run Step | | .github/workflows/multiline.yml:20:9:24:6 | Run Step | | .github/workflows/multiline.yml:20:14:23:40 | echo "response<<$EOF" >> $GITHUB_OUTPUT\necho $output >> $GITHUB_OUTPUT\necho "$EOF" >> $GITHUB_OUTPUT\n | +| .github/workflows/multiline.yml:24:9:30:6 | After Run Step | | .github/workflows/multiline.yml:24:9:30:6 | Run Step | | .github/workflows/multiline.yml:24:14:29:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | +| .github/workflows/multiline.yml:30:9:34:6 | After Run Step | | .github/workflows/multiline.yml:30:9:34:6 | Run Step | | .github/workflows/multiline.yml:30:14:33:14 | cat <<-"EOF" > event.json\n ${{ toJson(github.event) }}\nEOF\n | | .github/workflows/multiline.yml:32:13:32:39 | toJson(github.event) | +| .github/workflows/multiline.yml:34:9:40:6 | After Run Step | | .github/workflows/multiline.yml:34:9:40:6 | Run Step | | .github/workflows/multiline.yml:35:14:39:14 | cat >> $GITHUB_ENV << EOL\n${ISSUE_BODY}\nFOO\nEOL\n | +| .github/workflows/multiline.yml:40:9:46:6 | After Run Step | | .github/workflows/multiline.yml:40:9:46:6 | Run Step | | .github/workflows/multiline.yml:41:14:45:14 | cat > issue.txt << EOL\n${ISSUE_BODY}\nFOO\nEOL\n | +| .github/workflows/multiline.yml:46:9:52:6 | After Run Step | | .github/workflows/multiline.yml:46:9:52:6 | Run Step | | .github/workflows/multiline.yml:47:14:51:14 | cat << EOL >> $GITHUB_ENV\n${ISSUE_BODY}\nFOO\nEOL\n | +| .github/workflows/multiline.yml:52:9:58:6 | After Run Step | | .github/workflows/multiline.yml:52:9:58:6 | Run Step | | .github/workflows/multiline.yml:53:14:57:14 | cat < file.txt\nHello\nWorld\nEOF\n | +| .github/workflows/multiline.yml:58:9:63:6 | After Run Step | | .github/workflows/multiline.yml:58:9:63:6 | Run Step | | .github/workflows/multiline.yml:59:14:62:14 | cat <<-EOF >> "$GITHUB_ENV"\necho "FOO=$TITLE"\nEOF\n | +| .github/workflows/multiline.yml:63:9:66:6 | After Run Step | | .github/workflows/multiline.yml:63:9:66:6 | Run Step | | .github/workflows/multiline.yml:64:14:65:136 | echo REPO_NAME=$(cat issue.txt \| sed 's/\\\\r/\\\\n/g' \| grep -ioE '\\\\s*[a-z0-9_-]+/[a-z0-9_-]+\\\\s*$' \| tr -d ' ') >> $GITHUB_ENV\n | +| .github/workflows/multiline.yml:66:9:71:6 | After Run Step | | .github/workflows/multiline.yml:66:9:71:6 | Run Step | | .github/workflows/multiline.yml:67:14:70:36 | echo "PR_TITLE<> $GITHUB_ENV\necho "$TITLE" >> $GITHUB_ENV\necho "EOF" >> $GITHUB_ENV\n | +| .github/workflows/multiline.yml:71:9:78:6 | After Run Step | | .github/workflows/multiline.yml:71:9:78:6 | Run Step | | .github/workflows/multiline.yml:72:14:77:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | +| .github/workflows/multiline.yml:78:9:85:6 | After Run Step | | .github/workflows/multiline.yml:78:9:85:6 | Run Step | | .github/workflows/multiline.yml:79:14:84:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | +| .github/workflows/multiline.yml:85:9:89:29 | After Run Step | | .github/workflows/multiline.yml:85:9:89:29 | Run Step | | .github/workflows/multiline.yml:86:14:89:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | -| .github/workflows/poisonable_steps.yml:1:1:46:111 | enter on: push | -| .github/workflows/poisonable_steps.yml:1:1:46:111 | exit on: push | -| .github/workflows/poisonable_steps.yml:1:1:46:111 | exit on: push (normal) | +| .github/workflows/poisonable_steps.yml:1:1:46:111 | After on: push | +| .github/workflows/poisonable_steps.yml:1:1:46:111 | Entry | +| .github/workflows/poisonable_steps.yml:1:1:46:111 | Exit | +| .github/workflows/poisonable_steps.yml:1:1:46:111 | Normal Exit | | .github/workflows/poisonable_steps.yml:1:1:46:111 | on: push | +| .github/workflows/poisonable_steps.yml:5:5:46:111 | After Job: local_commands | | .github/workflows/poisonable_steps.yml:5:5:46:111 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:7:9:8:6 | After Run Step | | .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | | .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | +| .github/workflows/poisonable_steps.yml:8:9:13:6 | After Uses Step | | .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | | .github/workflows/poisonable_steps.yml:11:53:11:75 | github.workspace | +| .github/workflows/poisonable_steps.yml:13:9:14:6 | After Run Step | | .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | | .github/workflows/poisonable_steps.yml:13:14:13:32 | . venv/bin/activate | +| .github/workflows/poisonable_steps.yml:14:9:15:6 | After Run Step | | .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | | .github/workflows/poisonable_steps.yml:14:14:14:42 | echo foo; . venv/bin/activate | +| .github/workflows/poisonable_steps.yml:15:9:16:6 | After Run Step | | .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | | .github/workflows/poisonable_steps.yml:15:14:15:41 | echo foo;. venv/bin/activate | +| .github/workflows/poisonable_steps.yml:16:9:17:6 | After Run Step | | .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | | .github/workflows/poisonable_steps.yml:16:14:16:42 | echo foo \|. venv/bin/activate | +| .github/workflows/poisonable_steps.yml:17:9:18:6 | After Run Step | | .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | | .github/workflows/poisonable_steps.yml:17:14:17:32 | ./venv/bin/activate | +| .github/workflows/poisonable_steps.yml:18:9:19:6 | After Run Step | | .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | | .github/workflows/poisonable_steps.yml:18:14:18:36 | sh venv/bin/activate.sh | +| .github/workflows/poisonable_steps.yml:19:9:20:6 | After Run Step | | .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | | .github/workflows/poisonable_steps.yml:19:14:19:44 | echo $(sh venv/bin/activate.sh) | +| .github/workflows/poisonable_steps.yml:20:9:21:6 | After Run Step | | .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | | .github/workflows/poisonable_steps.yml:20:14:20:56 | echo foo; sh venv/bin/activate.sh; echo bar | +| .github/workflows/poisonable_steps.yml:21:9:22:6 | After Run Step | | .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | | .github/workflows/poisonable_steps.yml:21:14:21:56 | echo foo \| sh venv/bin/activate.sh > output | +| .github/workflows/poisonable_steps.yml:22:9:23:6 | After Run Step | | .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | | .github/workflows/poisonable_steps.yml:22:14:22:40 | python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:23:9:24:6 | After Run Step | | .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | | .github/workflows/poisonable_steps.yml:23:14:23:50 | echo foo; python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:24:9:25:6 | After Run Step | | .github/workflows/poisonable_steps.yml:24:9:25:6 | Run Step | | .github/workflows/poisonable_steps.yml:24:14:24:29 | pnpm run test:ct | +| .github/workflows/poisonable_steps.yml:25:9:26:6 | After Run Step | | .github/workflows/poisonable_steps.yml:25:9:26:6 | Run Step | | .github/workflows/poisonable_steps.yml:25:14:25:73 | pip install nbformat && python scripts/generate_notebooks.py | +| .github/workflows/poisonable_steps.yml:26:9:27:6 | After Run Step | | .github/workflows/poisonable_steps.yml:26:9:27:6 | Run Step | | .github/workflows/poisonable_steps.yml:26:14:26:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:27:9:28:6 | After Run Step | | .github/workflows/poisonable_steps.yml:27:9:28:6 | Run Step | | .github/workflows/poisonable_steps.yml:27:14:27:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:28:9:29:6 | After Run Step | | .github/workflows/poisonable_steps.yml:28:9:29:6 | Run Step | | .github/workflows/poisonable_steps.yml:28:14:28:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:29:9:30:6 | After Run Step | | .github/workflows/poisonable_steps.yml:29:9:30:6 | Run Step | | .github/workflows/poisonable_steps.yml:29:14:29:42 | xvfb-run ./mvnw clean package | +| .github/workflows/poisonable_steps.yml:30:9:31:6 | After Run Step | | .github/workflows/poisonable_steps.yml:30:9:31:6 | Run Step | | .github/workflows/poisonable_steps.yml:30:14:30:46 | echo "foo" && npm i && echo "bar" | +| .github/workflows/poisonable_steps.yml:31:9:32:6 | After Run Step | | .github/workflows/poisonable_steps.yml:31:9:32:6 | Run Step | | .github/workflows/poisonable_steps.yml:31:14:31:44 | echo "foo" \| npm i \| echo "bar" | +| .github/workflows/poisonable_steps.yml:32:9:33:6 | After Run Step | | .github/workflows/poisonable_steps.yml:32:9:33:6 | Run Step | | .github/workflows/poisonable_steps.yml:32:14:32:44 | echo "foo" \| npm i \| echo "bar" | +| .github/workflows/poisonable_steps.yml:33:9:34:6 | After Run Step | | .github/workflows/poisonable_steps.yml:33:9:34:6 | Run Step | | .github/workflows/poisonable_steps.yml:33:14:33:35 | echo "foo `npm i` bar" | +| .github/workflows/poisonable_steps.yml:34:9:35:6 | After Run Step | | .github/workflows/poisonable_steps.yml:34:9:35:6 | Run Step | | .github/workflows/poisonable_steps.yml:34:14:34:52 | dotnet test foo/Tests.csproj -c Release | +| .github/workflows/poisonable_steps.yml:35:9:36:6 | After Run Step | | .github/workflows/poisonable_steps.yml:35:9:36:6 | Run Step | | .github/workflows/poisonable_steps.yml:35:14:35:26 | go run foo.go | +| .github/workflows/poisonable_steps.yml:36:9:37:6 | After Run Step | | .github/workflows/poisonable_steps.yml:36:9:37:6 | Run Step | | .github/workflows/poisonable_steps.yml:36:14:36:86 | sed -i "s\|git_branch = .*\|git_branch = \\"$GITHUB_HEAD_REF\\"\|" config.json | +| .github/workflows/poisonable_steps.yml:37:9:38:6 | After Run Step | | .github/workflows/poisonable_steps.yml:37:9:38:6 | Run Step | | .github/workflows/poisonable_steps.yml:37:14:37:51 | sed -f ./config.sed file.txt > foo.txt | +| .github/workflows/poisonable_steps.yml:38:9:39:6 | After Run Step | | .github/workflows/poisonable_steps.yml:38:9:39:6 | Run Step | | .github/workflows/poisonable_steps.yml:38:14:38:45 | sed -f config file.txt > foo.txt | +| .github/workflows/poisonable_steps.yml:39:9:40:6 | After Run Step | | .github/workflows/poisonable_steps.yml:39:9:40:6 | Run Step | | .github/workflows/poisonable_steps.yml:39:14:39:55 | echo "foo" \| awk -f ./config.awk > foo.txt | +| .github/workflows/poisonable_steps.yml:40:9:41:6 | After Run Step | | .github/workflows/poisonable_steps.yml:40:9:41:6 | Run Step | | .github/workflows/poisonable_steps.yml:40:14:40:73 | gcloud builds submit --quiet --substitutions="COMMIT_SHA=foo | +| .github/workflows/poisonable_steps.yml:41:9:42:6 | After Run Step | | .github/workflows/poisonable_steps.yml:41:9:42:6 | Run Step | | .github/workflows/poisonable_steps.yml:41:14:41:22 | ./foo/cmd | +| .github/workflows/poisonable_steps.yml:42:9:46:111 | After Run Step | | .github/workflows/poisonable_steps.yml:42:9:46:111 | Run Step | | .github/workflows/poisonable_steps.yml:42:14:46:111 | sed -e 's##TITLE#' \\\n -e 's##${{ env.sot_repo }}#' \\\n -e 's##${TITLE}#' \\\n .github/workflows/common-copybara.bara.sky.template > .github/workflows/common-copybara.bara.sky\n | | .github/workflows/poisonable_steps.yml:44:32:44:50 | env.sot_repo | -| .github/workflows/shell.yml:1:1:22:32 | enter on: push | -| .github/workflows/shell.yml:1:1:22:32 | exit on: push | -| .github/workflows/shell.yml:1:1:22:32 | exit on: push (normal) | +| .github/workflows/shell.yml:1:1:22:32 | After on: push | +| .github/workflows/shell.yml:1:1:22:32 | Entry | +| .github/workflows/shell.yml:1:1:22:32 | Exit | +| .github/workflows/shell.yml:1:1:22:32 | Normal Exit | | .github/workflows/shell.yml:1:1:22:32 | on: push | +| .github/workflows/shell.yml:5:5:9:2 | After Job: job1 | | .github/workflows/shell.yml:5:5:9:2 | Job: job1 | +| .github/workflows/shell.yml:7:9:9:2 | After Run Step | | .github/workflows/shell.yml:7:9:9:2 | Run Step | | .github/workflows/shell.yml:8:14:8:31 | Write-Output "foo" | +| .github/workflows/shell.yml:10:5:14:2 | After Job: job2 | | .github/workflows/shell.yml:10:5:14:2 | Job: job2 | +| .github/workflows/shell.yml:12:9:14:2 | After Run Step | | .github/workflows/shell.yml:12:9:14:2 | Run Step | | .github/workflows/shell.yml:12:14:12:23 | echo "foo" | +| .github/workflows/shell.yml:15:5:19:2 | After Job: job3 | | .github/workflows/shell.yml:15:5:19:2 | Job: job3 | +| .github/workflows/shell.yml:17:9:19:2 | After Run Step | | .github/workflows/shell.yml:17:9:19:2 | Run Step | | .github/workflows/shell.yml:18:14:18:23 | echo "foo" | +| .github/workflows/shell.yml:20:5:22:32 | After Job: job4 | | .github/workflows/shell.yml:20:5:22:32 | Job: job4 | +| .github/workflows/shell.yml:22:9:22:32 | After Run Step | | .github/workflows/shell.yml:22:9:22:32 | Run Step | | .github/workflows/shell.yml:22:14:22:31 | Write-Output "foo" | -| .github/workflows/test.yml:1:1:40:53 | enter on: push | -| .github/workflows/test.yml:1:1:40:53 | exit on: push | -| .github/workflows/test.yml:1:1:40:53 | exit on: push (normal) | +| .github/workflows/test.yml:1:1:40:53 | After on: push | +| .github/workflows/test.yml:1:1:40:53 | Entry | +| .github/workflows/test.yml:1:1:40:53 | Exit | +| .github/workflows/test.yml:1:1:40:53 | Normal Exit | | .github/workflows/test.yml:1:1:40:53 | on: push | +| .github/workflows/test.yml:5:5:31:2 | After Job: job1 | | .github/workflows/test.yml:5:5:31:2 | Job: job1 | +| .github/workflows/test.yml:8:7:10:4 | After Job outputs node | | .github/workflows/test.yml:8:7:10:4 | Job outputs node | | .github/workflows/test.yml:8:20:8:50 | steps.step.outputs.value | | .github/workflows/test.yml:11:9:15:6 | Uses Step | | .github/workflows/test.yml:15:9:19:6 | Uses Step: source | +| .github/workflows/test.yml:19:9:26:6 | After Uses Step: step | | .github/workflows/test.yml:19:9:26:6 | Uses Step: step | | .github/workflows/test.yml:23:20:23:64 | steps.source.outputs.all_changed_files | +| .github/workflows/test.yml:26:9:28:6 | After Run Step: simplesink1 | | .github/workflows/test.yml:26:9:28:6 | Run Step: simplesink1 | | .github/workflows/test.yml:27:14:27:63 | echo ${{ steps.source.outputs.all_changed_files }} | | .github/workflows/test.yml:27:20:27:64 | steps.source.outputs.all_changed_files | +| .github/workflows/test.yml:28:9:31:2 | After Run Step: simplesink2 | | .github/workflows/test.yml:28:9:31:2 | Run Step: simplesink2 | | .github/workflows/test.yml:29:14:29:54 | ${{ github.event.pull_request.head.ref }} | | .github/workflows/test.yml:29:15:29:55 | github.event.pull_request.head.ref | +| .github/workflows/test.yml:32:5:40:53 | After Job: job2 | | .github/workflows/test.yml:32:5:40:53 | Job: job2 | +| .github/workflows/test.yml:39:9:40:53 | After Run Step: sink | | .github/workflows/test.yml:39:9:40:53 | Run Step: sink | | .github/workflows/test.yml:40:14:40:52 | echo ${{needs.job1.outputs.job_output}} | | .github/workflows/test.yml:40:20:40:53 | needs.job1.outputs.job_output | +cfgCycles dfNodes | .github/workflows/commands.yml:9:5:31:2 | Job: local_commands | | .github/workflows/commands.yml:15:9:18:6 | Run Step | @@ -1621,6 +1735,47 @@ scopes | .github/workflows/poisonable_steps.yml:1:1:46:111 | on: push | | .github/workflows/shell.yml:1:1:22:32 | on: push | | .github/workflows/test.yml:1:1:40:53 | on: push | +workflowScopes +| .github/workflows/commands.yml:1:1:39:30 | on: push | +| .github/workflows/controlcheck.yml:1:1:16:25 | on: | +| .github/workflows/expression_nodes.yml:1:1:21:47 | on: issue_comment | +| .github/workflows/many_strings.yml:1:1:18:1211 | on: | +| .github/workflows/multiline2.yml:1:1:89:35 | on: | +| .github/workflows/multiline.yml:1:1:89:29 | on: | +| .github/workflows/poisonable_steps.yml:1:1:46:111 | on: push | +| .github/workflows/shell.yml:1:1:22:32 | on: push | +| .github/workflows/test.yml:1:1:40:53 | on: push | +compositeActionScopes +workflowCfgNodes +| .github/workflows/commands.yml:1:1:39:30 | on: push | +| .github/workflows/controlcheck.yml:1:1:16:25 | on: | +| .github/workflows/expression_nodes.yml:1:1:21:47 | on: issue_comment | +| .github/workflows/many_strings.yml:1:1:18:1211 | on: | +| .github/workflows/multiline2.yml:1:1:89:35 | on: | +| .github/workflows/multiline.yml:1:1:89:29 | on: | +| .github/workflows/poisonable_steps.yml:1:1:46:111 | on: push | +| .github/workflows/shell.yml:1:1:22:32 | on: push | +| .github/workflows/test.yml:1:1:40:53 | on: push | +entryScopes +| .github/workflows/commands.yml:1:1:39:30 | Entry | .github/workflows/commands.yml:1:1:39:30 | on: push | +| .github/workflows/controlcheck.yml:1:1:16:25 | Entry | .github/workflows/controlcheck.yml:1:1:16:25 | on: | +| .github/workflows/expression_nodes.yml:1:1:21:47 | Entry | .github/workflows/expression_nodes.yml:1:1:21:47 | on: issue_comment | +| .github/workflows/many_strings.yml:1:1:18:1211 | Entry | .github/workflows/many_strings.yml:1:1:18:1211 | on: | +| .github/workflows/multiline2.yml:1:1:89:35 | Entry | .github/workflows/multiline2.yml:1:1:89:35 | on: | +| .github/workflows/multiline.yml:1:1:89:29 | Entry | .github/workflows/multiline.yml:1:1:89:29 | on: | +| .github/workflows/poisonable_steps.yml:1:1:46:111 | Entry | .github/workflows/poisonable_steps.yml:1:1:46:111 | on: push | +| .github/workflows/shell.yml:1:1:22:32 | Entry | .github/workflows/shell.yml:1:1:22:32 | on: push | +| .github/workflows/test.yml:1:1:40:53 | Entry | .github/workflows/test.yml:1:1:40:53 | on: push | +normalExitNodes +| .github/workflows/commands.yml:1:1:39:30 | Normal Exit | +| .github/workflows/controlcheck.yml:1:1:16:25 | Normal Exit | +| .github/workflows/expression_nodes.yml:1:1:21:47 | Normal Exit | +| .github/workflows/many_strings.yml:1:1:18:1211 | Normal Exit | +| .github/workflows/multiline2.yml:1:1:89:35 | Normal Exit | +| .github/workflows/multiline.yml:1:1:89:29 | Normal Exit | +| .github/workflows/poisonable_steps.yml:1:1:46:111 | Normal Exit | +| .github/workflows/shell.yml:1:1:22:32 | Normal Exit | +| .github/workflows/test.yml:1:1:40:53 | Normal Exit | sources | AvraamMavridis/files-changed-action | * | output.CHANGED_FILES | filename | manual | | AvraamMavridis/files-changed-action | * | output.CHANGED_FILES_EXTENSIONS | filename | manual | diff --git a/actions/ql/test/library-tests/basic/test.ql b/actions/ql/test/library-tests/basic/test.ql index e4c1d9e443d0..fe44a0f4dcf5 100644 --- a/actions/ql/test/library-tests/basic/test.ql +++ b/actions/ql/test/library-tests/basic/test.ql @@ -37,6 +37,8 @@ query predicate parentNodes(AstNode child, AstNode parent) { child.getParentNode query predicate cfgNodes(Cfg::Node n) { any() } +query predicate cfgCycles(Cfg::Node n) { n.getASuccessor+() = n } + query predicate dfNodes(DataFlow::Node e) { any() } query predicate argumentNodes(DataFlow::ArgumentNode e) { any() } @@ -47,6 +49,21 @@ query predicate nodeLocations(DataFlow::Node n, Location l) { n.getLocation() = query predicate scopes(Cfg::CfgScope c) { any() } +query predicate workflowScopes(Cfg::WorkflowScope c) { any() } + +query predicate compositeActionScopes(Cfg::CompositeActionScope c) { any() } + +query predicate workflowCfgNodes(Cfg::AstCfgNode node) { + node.getAstNode() instanceof Workflow and + node.getEnclosingCallable() = node.getAstNode() +} + +query predicate entryScopes(Cfg::EntryNode entry, Cfg::CfgScope scope) { + scope = entry.getEnclosingCallable() +} + +query predicate normalExitNodes(Cfg::AnnotatedExitNode exit) { exit instanceof Cfg::NormalExitNode } + query predicate sources(string action, string version, string output, string kind, string provenance) { actionsSourceModel(action, version, output, kind, provenance) } diff --git a/actions/ql/test/library-tests/cfg-callable/action.yml b/actions/ql/test/library-tests/cfg-callable/action.yml new file mode 100644 index 000000000000..81aa1df95a00 --- /dev/null +++ b/actions/ql/test/library-tests/cfg-callable/action.yml @@ -0,0 +1,12 @@ +name: Ambiguous root + +runs: + using: composite + steps: + - run: echo "${{ github.actor }}" + +jobs: + unexpected: + runs-on: ubuntu-latest + steps: + - run: echo "This must not make action.yml a workflow" diff --git a/actions/ql/test/library-tests/cfg-callable/test.expected b/actions/ql/test/library-tests/cfg-callable/test.expected new file mode 100644 index 000000000000..17687b33ef7d --- /dev/null +++ b/actions/ql/test/library-tests/cfg-callable/test.expected @@ -0,0 +1,4 @@ +roots +| 1 | 1 | +cfgScopes +| action.yml:1:1:12:61 | name: Ambiguous root | composite action | diff --git a/actions/ql/test/library-tests/cfg-callable/test.ql b/actions/ql/test/library-tests/cfg-callable/test.ql new file mode 100644 index 000000000000..5b66c1c4d314 --- /dev/null +++ b/actions/ql/test/library-tests/cfg-callable/test.ql @@ -0,0 +1,18 @@ +import codeql.actions.Ast +import codeql.actions.Cfg as Cfg + +query predicate roots(int workflows, int compositeActions) { + workflows = + strictcount(Workflow workflow | workflow.getLocation().getFile().getBaseName() = "action.yml") and + compositeActions = + strictcount(CompositeAction action | action.getLocation().getFile().getBaseName() = "action.yml") +} + +query predicate cfgScopes(Cfg::CfgScope scope, string kind) { + scope.getLocation().getFile().getBaseName() = "action.yml" and + ( + scope instanceof Cfg::WorkflowScope and kind = "workflow" + or + scope instanceof Cfg::CompositeActionScope and kind = "composite action" + ) +} diff --git a/actions/ql/test/library-tests/cfg-environment/.github/workflows/test.yml b/actions/ql/test/library-tests/cfg-environment/.github/workflows/test.yml new file mode 100644 index 000000000000..1bd23112154a --- /dev/null +++ b/actions/ql/test/library-tests/cfg-environment/.github/workflows/test.yml @@ -0,0 +1,21 @@ +on: issues + +env: + GLOBAL_VALUE: ${{ github.event.issue.title }} + +jobs: + local: + runs-on: ubuntu-latest + env: + JOB_VALUE: ${{ github.event.issue.body }} + steps: + - uses: actions/checkout@v4 + - run: echo "$GLOBAL_VALUE $JOB_VALUE" + - run: echo "$GLOBAL_VALUE $JOB_VALUE $STEP_VALUE" + env: + STEP_VALUE: ${{ github.actor }} + + external: + uses: octo/example/.github/workflows/reusable.yml@main + with: + value: ${{ github.event.issue.number }} diff --git a/actions/ql/test/library-tests/cfg-environment/test.expected b/actions/ql/test/library-tests/cfg-environment/test.expected new file mode 100644 index 000000000000..21d55030e278 --- /dev/null +++ b/actions/ql/test/library-tests/cfg-environment/test.expected @@ -0,0 +1,5 @@ +envCfgNodes +| .github/workflows/test.yml:4:18:4:48 | github.event.issue.title | +| .github/workflows/test.yml:10:19:10:48 | github.event.issue.body | +| .github/workflows/test.yml:16:24:16:42 | github.actor | +cfgCycles diff --git a/actions/ql/test/library-tests/cfg-environment/test.ql b/actions/ql/test/library-tests/cfg-environment/test.ql new file mode 100644 index 000000000000..b4a94fa80bc6 --- /dev/null +++ b/actions/ql/test/library-tests/cfg-environment/test.ql @@ -0,0 +1,9 @@ +import codeql.actions.Ast +import codeql.actions.Cfg as Cfg + +query predicate envCfgNodes(Expression expression) { + expression = any(Env env).getAnEnvVarExpr() and + exists(Cfg::AstCfgNode node | node.getAstNode() = expression) +} + +query predicate cfgCycles(Cfg::Node node) { node.getASuccessor+() = node } diff --git a/actions/ql/test/query-tests/Security/CWE-078/CONSISTENCY/CfgConsistency.expected b/actions/ql/test/query-tests/Security/CWE-078/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/actions/ql/test/query-tests/Security/CWE-088/CONSISTENCY/CfgConsistency.expected b/actions/ql/test/query-tests/Security/CWE-088/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/actions/ql/test/query-tests/Security/CWE-094/CONSISTENCY/CfgConsistency.expected b/actions/ql/test/query-tests/Security/CWE-094/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/actions/ql/test/query-tests/Security/CWE-829-Lockfile/.github/workflows/actions.lock b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/.github/workflows/actions.lock new file mode 100644 index 000000000000..8f42f6f8181f --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/.github/workflows/actions.lock @@ -0,0 +1,30 @@ +version: future-version +workflows: + .github/workflows/rust-ci.yml: + - DToLnAy/RuSt-ToOlChAiN@v1 + - mismatched/action@v1 + - malformed/action@v1 + - missing/action@v1 + .github/workflows/other.yml: + - other-workflow/action@v1 +dependencies: + DToLnAy/RuSt-ToOlChAiN@v1: + ref: v1 + commit: sha1-6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 + owner_id: 1940490 + repo_id: 260749683 + other-workflow/action@v1: + ref: v1 + commit: sha1-1111111111111111111111111111111111111111 + owner_id: 1 + repo_id: 2 + mismatched/action@v1: + ref: V1 + commit: sha1-2222222222222222222222222222222222222222 + owner_id: 3 + repo_id: 4 + malformed/action@v1: + ref: v1 + commit: 6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 + owner_id: 5 + repo_id: 6 diff --git a/actions/ql/test/query-tests/Security/CWE-829-Lockfile/.github/workflows/rust-ci.yml b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/.github/workflows/rust-ci.yml new file mode 100644 index 000000000000..3838b3589dc5 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/.github/workflows/rust-ci.yml @@ -0,0 +1,16 @@ +on: + pull_request + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: dtolnay/rust-toolchain@v1 + - uses: DToLnAy/RuSt-ToOlChAiN/save@v1 + - uses: dtolnay/rust-toolchain@V1 # $ Alert + - uses: other-workflow/action@v1 # $ Alert + - uses: mismatched/action@v1 # $ Alert + - uses: malformed/action@v1 # $ Alert + - uses: missing/action@v1 # $ Alert + reusable: + uses: dtolnay/rust-toolchain/.github/workflows/reusable.yml@v1 # $ Alert diff --git a/actions/ql/test/query-tests/Security/CWE-829-Lockfile/UnpinnedActionsTag.expected b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/UnpinnedActionsTag.expected new file mode 100644 index 000000000000..98fd715f4a81 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/UnpinnedActionsTag.expected @@ -0,0 +1,6 @@ +| .github/workflows/rust-ci.yml:10:13:10:37 | dtolnay/rust-toolchain@V1 | Unpinned 3rd party Action 'rust-ci.yml' step $@ uses 'dtolnay/rust-toolchain' with ref 'V1', not a pinned commit hash | .github/workflows/rust-ci.yml:10:7:11:4 | Uses Step | Uses Step | +| .github/workflows/rust-ci.yml:11:13:11:36 | other-workflow/action@v1 | Unpinned 3rd party Action 'rust-ci.yml' step $@ uses 'other-workflow/action' with ref 'v1', not a pinned commit hash | .github/workflows/rust-ci.yml:11:7:12:4 | Uses Step | Uses Step | +| .github/workflows/rust-ci.yml:12:13:12:32 | mismatched/action@v1 | Unpinned 3rd party Action 'rust-ci.yml' step $@ uses 'mismatched/action' with ref 'v1', not a pinned commit hash | .github/workflows/rust-ci.yml:12:7:13:4 | Uses Step | Uses Step | +| .github/workflows/rust-ci.yml:13:13:13:31 | malformed/action@v1 | Unpinned 3rd party Action 'rust-ci.yml' step $@ uses 'malformed/action' with ref 'v1', not a pinned commit hash | .github/workflows/rust-ci.yml:13:7:14:4 | Uses Step | Uses Step | +| .github/workflows/rust-ci.yml:14:13:14:29 | missing/action@v1 | Unpinned 3rd party Action 'rust-ci.yml' step $@ uses 'missing/action' with ref 'v1', not a pinned commit hash | .github/workflows/rust-ci.yml:14:7:15:2 | Uses Step | Uses Step | +| .github/workflows/rust-ci.yml:16:11:16:66 | dtolnay/rust-toolchain/.github/workflows/reusable.yml@v1 | Job $@ in 'rust-ci.yml' uses reusable workflow 'dtolnay/rust-toolchain/.github/workflows/reusable.yml' with ref 'v1', not a pinned commit hash | .github/workflows/rust-ci.yml:16:5:16:77 | Job: reusable | Job: reusable | diff --git a/actions/ql/test/query-tests/Security/CWE-829-Lockfile/UnpinnedActionsTag.qlref b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/UnpinnedActionsTag.qlref new file mode 100644 index 000000000000..d33a5b380859 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/UnpinnedActionsTag.qlref @@ -0,0 +1,2 @@ +query: Security/CWE-829/UnpinnedActionsTag.ql +postprocess: utils/ActionsInlineExpectationsTestQuery.ql diff --git a/actions/ql/test/query-tests/Security/CWE-829-Lockfile/options b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/options new file mode 100644 index 000000000000..af54d6532407 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829-Lockfile/options @@ -0,0 +1 @@ +semmle-extractor-options: --file-type YAML .github/workflows/actions.lock diff --git a/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/.github/workflows/unpinned_first_party.yml b/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/.github/workflows/unpinned_first_party.yml new file mode 100644 index 000000000000..6617f509693d --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/.github/workflows/unpinned_first_party.yml @@ -0,0 +1,13 @@ +name: Unpinned first-party actions +on: push +jobs: + build: + runs-on: ubuntu-latest + steps: + # `actions` is distrusted via `!actions`, and this action is not immutable, + # so this unpinned tag is reported. + - uses: actions/first-interaction@v1 # $ Alert + # `github` remains trusted, so this unpinned tag is not reported. + - uses: github/issue-labeler@v3.0 + # Third-party owner is always reported. + - uses: foo/bar@v1 # $ Alert diff --git a/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/UnpinnedActionsTag.expected b/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/UnpinnedActionsTag.expected new file mode 100644 index 000000000000..a047196d85fa --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/UnpinnedActionsTag.expected @@ -0,0 +1,2 @@ +| .github/workflows/unpinned_first_party.yml:9:15:9:42 | actions/first-interaction@v1 | Unpinned 3rd party Action 'Unpinned first-party actions' step $@ uses 'actions/first-interaction' with ref 'v1', not a pinned commit hash | .github/workflows/unpinned_first_party.yml:9:9:11:6 | Uses Step | Uses Step | +| .github/workflows/unpinned_first_party.yml:13:15:13:24 | foo/bar@v1 | Unpinned 3rd party Action 'Unpinned first-party actions' step $@ uses 'foo/bar' with ref 'v1', not a pinned commit hash | .github/workflows/unpinned_first_party.yml:13:9:13:35 | Uses Step | Uses Step | diff --git a/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/UnpinnedActionsTag.ext.yml b/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/UnpinnedActionsTag.ext.yml new file mode 100644 index 000000000000..45aea89e7186 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/UnpinnedActionsTag.ext.yml @@ -0,0 +1,8 @@ +extensions: + - addsTo: + pack: codeql/actions-all + extensible: trustedActionsOwnerDataModel + data: + # Distrust the first-party `actions` owner so unpinned tags for its + # Actions are reported. `github` is intentionally left trusted. + - ["!actions"] diff --git a/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/UnpinnedActionsTag.qlref b/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/UnpinnedActionsTag.qlref new file mode 100644 index 000000000000..9d46bb88b264 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829-untrusted-owner/UnpinnedActionsTag.qlref @@ -0,0 +1,2 @@ +query: Security/CWE-829/UnpinnedActionsTag.ql +postprocess: codeql/actions/test/InlineExpectationsTestQuery.ql diff --git a/actions/ql/test/query-tests/Security/CWE-829/.github/workflows/self_ref_dollar.yml b/actions/ql/test/query-tests/Security/CWE-829/.github/workflows/self_ref_dollar.yml new file mode 100644 index 000000000000..0d651b0bb0f6 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829/.github/workflows/self_ref_dollar.yml @@ -0,0 +1,15 @@ +on: + pull_request + +jobs: + build: + name: Build and test + runs-on: ubuntu-latest + steps: + # `$/` is a same-repository (self repository) reference resolved at the running commit. It is + # inherently pinned (like `./` self workspace refs) and must never be reported as an unpinned tag. + - uses: $/actions/foo + # `$/…@ref` is rejected by the `$/` rule, but a user could still write it. It must also + # never be flagged; this case exercises the `not isSelfRepository(nwo)` suppression, since + # without it `$/actions/foo@v1` would otherwise be reported as an unpinned tag. + - uses: $/actions/foo@v1 diff --git a/actions/ql/test/query-tests/Security/CWE-829/CONSISTENCY/CfgConsistency.expected b/actions/ql/test/query-tests/Security/CWE-829/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/actions/ql/test/query-tests/Security/CWE-829/UntrustedCheckoutCritical.expected b/actions/ql/test/query-tests/Security/CWE-829/UntrustedCheckoutCritical.expected index 32999ec70e27..381ca41243f1 100644 --- a/actions/ql/test/query-tests/Security/CWE-829/UntrustedCheckoutCritical.expected +++ b/actions/ql/test/query-tests/Security/CWE-829/UntrustedCheckoutCritical.expected @@ -241,6 +241,7 @@ edges | .github/workflows/resolve-args.yml:20:9:22:6 | Uses Step | .github/workflows/resolve-args.yml:22:9:36:13 | Run Step: resolve-step | | .github/workflows/reusable_local.yml:23:9:26:6 | Uses Step | .github/workflows/reusable_local.yml:26:9:29:7 | Run Step | | .github/workflows/reusable_local.yml:25:17:25:36 | inputs.branch | .github/workflows/reusable_local.yml:23:9:26:6 | Uses Step | +| .github/workflows/self_ref_dollar.yml:11:7:15:4 | Uses Step | .github/workflows/self_ref_dollar.yml:15:7:15:29 | Uses Step | | .github/workflows/test1.yml:18:9:21:6 | Uses Step | .github/workflows/test1.yml:21:9:24:6 | Run Step | | .github/workflows/test1.yml:21:9:24:6 | Run Step | .github/workflows/test1.yml:24:9:25:39 | Run Step | | .github/workflows/test2.yml:13:9:16:6 | Uses Step | .github/workflows/test2.yml:16:9:20:52 | Uses Step | diff --git a/actions/ql/test/utils/ActionsInlineExpectationsTestQuery.ql b/actions/ql/test/utils/ActionsInlineExpectationsTestQuery.ql new file mode 100644 index 000000000000..cf23944f553d --- /dev/null +++ b/actions/ql/test/utils/ActionsInlineExpectationsTestQuery.ql @@ -0,0 +1,28 @@ +/** + * @kind test-postprocess + */ + +private import codeql.Locations as Locations +private import codeql.actions.ast.internal.Yaml as Yaml +private import codeql.util.test.InlineExpectationsTest as T +import T::TestPostProcessing + +private module Impl implements T::InlineExpectationsTestSig { + class Location = Locations::Location; + + string getRelativeUrl(Locations::Location location) { + exists(int startLine, int startColumn, int endLine, int endColumn | + location.hasLocationInfo(_, startLine, startColumn, endLine, endColumn) + | + result = + location.getFile().getRelativePath() + ":" + startLine + ":" + startColumn + ":" + endLine + + ":" + endColumn + ) + } + + class ExpectationComment extends Yaml::YamlComment { + string getContents() { result = this.getText() } + } +} + +import T::TestPostProcessing::Make diff --git a/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/builtintypes.ql b/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/builtintypes.ql new file mode 100644 index 000000000000..2ad09def291c --- /dev/null +++ b/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/builtintypes.ql @@ -0,0 +1,9 @@ +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 kind in [67, 68, 69] then kind_new = 1 else kind_new = kind +select type, name, kind_new, size, sign, alignment diff --git a/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/old.dbscheme b/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/old.dbscheme new file mode 100644 index 000000000000..6aec212e408f --- /dev/null +++ b/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/old.dbscheme @@ -0,0 +1,2588 @@ + +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** + * Gives the TRAP filename that `trap` is associated with. + * For debugging only. + */ +trap_filename( + int trap: @trap, + string filename: string ref +); + +/** + * Gives the tag name for `tag`. + * For debugging only. + */ +tag_name( + int tag: @tag, + string name: string ref +); + +@trap_or_tag = @tag | @trap; + +/** + * Gives the name for the source file. + */ +source_file_name( + int sf: @source_file, + string name: string ref +); + +/** + * In `build-mode: none` overlay mode, indicates that `source_file` + * (`/path/to/foo.c`) uses the TRAP file `trap_file`; i.e. it is the + * TRAP file corresponding to `foo.c`, something it transitively + * includes, or a template instantiation it transitively uses. + */ +source_file_uses_trap( + int source_file: @source_file ref, + int trap_file: @trap ref +); + +/** + * In `build-mode: none` overlay mode, indicates that the TRAP file + * `trap_file` uses tag `tag`. + */ +trap_uses_tag( + int trap_file: @trap ref, + int tag: @tag ref +); + +/** + * Holds if there is a definition of `element` in TRAP file or tag `t`. + */ +in_trap_or_tag( + int element: @element ref, + int t: @trap_or_tag ref +); + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +// ... 40 _Decimal32 +// ... 41 _Decimal64 +// ... 42 _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 +| 67 = @bit_precise_int // _BitInt(N) +| 68 = @unsigned_bit_precise_int // unsigned _BitInt(N) +| 69 = @signed_bit_precise_int // signed _BitInt(N) +; + +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 +); + +bit_precise_int_types( + unique int id: @builtintype ref, + int bit_width: 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 +); +class_template_generated_from( + unique int template: @usertype ref, + int from: @usertype 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 +); +function_template_generated_from( + unique int template: @function ref, + int from: @function 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 +); +variable_template_generated_from( + unique int template: @variable ref, + int from: @variable ref +); + +is_alias_template(unique int id: @usertype ref); +alias_instantiation( + unique int to: @usertype ref, + int from: @usertype ref +); +alias_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +alias_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); +alias_template_generated_from( + unique int template: @usertype ref, + int from: @usertype ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype + | @derivedtype; + +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 +| 394 = @isinvocable +| 395 = @isnothrowinvocable +| 396 = @isbitwisecloneable +; + +@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 + | @isinvocable + | @isnothrowinvocable + | @isbitwisecloneable + ; + +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 +); + +param_ref_to_this( + int expr: @param_ref 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 +| 17 = @ppd_embed +| 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 +); + +embeds( + unique int id: @ppd_embed 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 +); + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/semmlecode.cpp.dbscheme b/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..0853f43dc8c0 --- /dev/null +++ b/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/semmlecode.cpp.dbscheme @@ -0,0 +1,2578 @@ + +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** + * Gives the TRAP filename that `trap` is associated with. + * For debugging only. + */ +trap_filename( + int trap: @trap, + string filename: string ref +); + +/** + * Gives the tag name for `tag`. + * For debugging only. + */ +tag_name( + int tag: @tag, + string name: string ref +); + +@trap_or_tag = @tag | @trap; + +/** + * Gives the name for the source file. + */ +source_file_name( + int sf: @source_file, + string name: string ref +); + +/** + * In `build-mode: none` overlay mode, indicates that `source_file` + * (`/path/to/foo.c`) uses the TRAP file `trap_file`; i.e. it is the + * TRAP file corresponding to `foo.c`, something it transitively + * includes, or a template instantiation it transitively uses. + */ +source_file_uses_trap( + int source_file: @source_file ref, + int trap_file: @trap ref +); + +/** + * In `build-mode: none` overlay mode, indicates that the TRAP file + * `trap_file` uses tag `tag`. + */ +trap_uses_tag( + int trap_file: @trap ref, + int tag: @tag ref +); + +/** + * Holds if there is a definition of `element` in TRAP file or tag `t`. + */ +in_trap_or_tag( + int element: @element ref, + int t: @trap_or_tag ref +); + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +// ... 40 _Decimal32 +// ... 41 _Decimal64 +// ... 42 _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 +); +class_template_generated_from( + unique int template: @usertype ref, + int from: @usertype 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 +); +function_template_generated_from( + unique int template: @function ref, + int from: @function 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 +); +variable_template_generated_from( + unique int template: @variable ref, + int from: @variable ref +); + +is_alias_template(unique int id: @usertype ref); +alias_instantiation( + unique int to: @usertype ref, + int from: @usertype ref +); +alias_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +alias_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); +alias_template_generated_from( + unique int template: @usertype ref, + int from: @usertype ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype + | @derivedtype; + +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 +| 394 = @isinvocable +| 395 = @isnothrowinvocable +| 396 = @isbitwisecloneable +; + +@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 + | @isinvocable + | @isnothrowinvocable + | @isbitwisecloneable + ; + +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 +); + +param_ref_to_this( + int expr: @param_ref 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 +| 17 = @ppd_embed +| 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 +); + +embeds( + unique int id: @ppd_embed 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 +); + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/upgrade.properties b/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/upgrade.properties new file mode 100644 index 000000000000..f387b03144f0 --- /dev/null +++ b/cpp/downgrades/6aec212e408fad907b19368a3376a4d9837783d2/upgrade.properties @@ -0,0 +1,4 @@ +description: Support C23 _BitInt +compatibility: full +bit_precise_int_types.rel: delete +builtintypes.rel: run builtintypes.qlo 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 index 8b137891791f..85790a23a836 100644 --- 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 @@ -1 +1 @@ - +ql/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.ql diff --git a/cpp/ql/integration-tests/query-suite/cpp-code-quality.qls.expected b/cpp/ql/integration-tests/query-suite/cpp-code-quality.qls.expected index 8b137891791f..85790a23a836 100644 --- a/cpp/ql/integration-tests/query-suite/cpp-code-quality.qls.expected +++ b/cpp/ql/integration-tests/query-suite/cpp-code-quality.qls.expected @@ -1 +1 @@ - +ql/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.ql diff --git a/cpp/ql/integration-tests/query-suite/cpp-security-and-quality.qls.expected b/cpp/ql/integration-tests/query-suite/cpp-security-and-quality.qls.expected index cb4e5f7b305a..17ebac8ee50c 100644 --- a/cpp/ql/integration-tests/query-suite/cpp-security-and-quality.qls.expected +++ b/cpp/ql/integration-tests/query-suite/cpp-security-and-quality.qls.expected @@ -65,6 +65,7 @@ ql/cpp/ql/src/Likely Bugs/InconsistentCheckReturnNull.ql ql/cpp/ql/src/Likely Bugs/Leap Year/Adding365DaysPerYear.ql ql/cpp/ql/src/Likely Bugs/Leap Year/UncheckedLeapYearAfterYearModification.ql ql/cpp/ql/src/Likely Bugs/Leap Year/UncheckedReturnValueForTimeFunctions.ql +ql/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.ql ql/cpp/ql/src/Likely Bugs/Likely Typos/AssignWhereCompareMeant.ql ql/cpp/ql/src/Likely Bugs/Likely Typos/CompareWhereAssignMeant.ql ql/cpp/ql/src/Likely Bugs/Likely Typos/DubiousNullCheck.ql diff --git a/cpp/ql/integration-tests/query-suite/not_included_in_qls.expected b/cpp/ql/integration-tests/query-suite/not_included_in_qls.expected index 20ffa7c40c0d..70affad11648 100644 --- a/cpp/ql/integration-tests/query-suite/not_included_in_qls.expected +++ b/cpp/ql/integration-tests/query-suite/not_included_in_qls.expected @@ -242,6 +242,7 @@ ql/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql ql/cpp/ql/src/experimental/Security/CWE/CWE-1041/FindWrapperFunctions.ql ql/cpp/ql/src/experimental/Security/CWE/CWE-1126/DeclarationOfVariableWithUnnecessarilyWideScope.ql ql/cpp/ql/src/experimental/Security/CWE/CWE-120/MemoryUnsafeFunctionScan.ql +ql/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpy.ql ql/cpp/ql/src/experimental/Security/CWE/CWE-1240/CustomCryptographicPrimitive.ql ql/cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql ql/cpp/ql/src/experimental/Security/CWE/CWE-190/AllocMultiplicationOverflow.ql diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index c42b0d3ec5d5..80c4989f1e93 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,33 @@ +## 12.3.0 + +### New Features + +* Added support for C23 bit-precise integers (`_BitInt(N)`). + +### Minor Analysis Improvements + +* Added flow summaries for the BlazingMQ `BloombergLP::bmqa::Message` and `MessageProperties` classes and their iterators. + +## 12.2.0 + +### New Features + +* Added a C++ regular-expression parser for the ECMAScript grammar used by `std::regex`. + +### Minor Analysis Improvements + +* Added SQL-injection sink models for the Comdb2 C API functions `cdb2_run_statement` and `cdb2_run_statement_typed`. +* Added flow summaries for the BDE codecs `BloombergLP::balber::BerDecoder`/`BerEncoder`, `BloombergLP::baljsn::Decoder`/`Encoder` and `BloombergLP::balxml::Decoder`/`Encoder`. +* Added taint flow summaries for the BDE `bslx` byte-stream deserializers `BloombergLP::bslx::ByteInStream`, `BloombergLP::bslx::GenericInStream`, and `BloombergLP::bslx::InStreamFunctions::bdexStreamIn`. + +## 12.1.1 + +### Minor Analysis Improvements + +* Added taint flow models for the `boost::asio::ip::basic_resolver::resolve` function. +* Added flow summaries for the BDE `BloombergLP::bdlbb::Blob` segmented byte buffer. +* Added flow summaries for the Protocol Buffers `google::protobuf::MessageLite` C++ API. + ## 12.1.0 ### New Features diff --git a/cpp/ql/lib/change-notes/released/12.1.1.md b/cpp/ql/lib/change-notes/released/12.1.1.md new file mode 100644 index 000000000000..9f0cb4c5ad36 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/12.1.1.md @@ -0,0 +1,7 @@ +## 12.1.1 + +### Minor Analysis Improvements + +* Added taint flow models for the `boost::asio::ip::basic_resolver::resolve` function. +* Added flow summaries for the BDE `BloombergLP::bdlbb::Blob` segmented byte buffer. +* Added flow summaries for the Protocol Buffers `google::protobuf::MessageLite` C++ API. diff --git a/cpp/ql/lib/change-notes/released/12.2.0.md b/cpp/ql/lib/change-notes/released/12.2.0.md new file mode 100644 index 000000000000..63340c0ee4a4 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/12.2.0.md @@ -0,0 +1,11 @@ +## 12.2.0 + +### New Features + +* Added a C++ regular-expression parser for the ECMAScript grammar used by `std::regex`. + +### Minor Analysis Improvements + +* Added SQL-injection sink models for the Comdb2 C API functions `cdb2_run_statement` and `cdb2_run_statement_typed`. +* Added flow summaries for the BDE codecs `BloombergLP::balber::BerDecoder`/`BerEncoder`, `BloombergLP::baljsn::Decoder`/`Encoder` and `BloombergLP::balxml::Decoder`/`Encoder`. +* Added taint flow summaries for the BDE `bslx` byte-stream deserializers `BloombergLP::bslx::ByteInStream`, `BloombergLP::bslx::GenericInStream`, and `BloombergLP::bslx::InStreamFunctions::bdexStreamIn`. diff --git a/cpp/ql/lib/change-notes/released/12.3.0.md b/cpp/ql/lib/change-notes/released/12.3.0.md new file mode 100644 index 000000000000..d2527bb761f2 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/12.3.0.md @@ -0,0 +1,9 @@ +## 12.3.0 + +### New Features + +* Added support for C23 bit-precise integers (`_BitInt(N)`). + +### Minor Analysis Improvements + +* Added flow summaries for the BlazingMQ `BloombergLP::bmqa::Message` and `MessageProperties` classes and their iterators. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 87f64222020b..2f4c5dac2ed2 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 12.1.0 +lastReleaseVersion: 12.3.0 diff --git a/cpp/ql/lib/ext/Boost.Asio.model.yml b/cpp/ql/lib/ext/Boost.Asio.model.yml index f6ba957d2596..eb6728af4124 100644 --- a/cpp/ql/lib/ext/Boost.Asio.model.yml +++ b/cpp/ql/lib/ext/Boost.Asio.model.yml @@ -23,3 +23,19 @@ extensions: extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - ["boost::asio", "", False, "buffer", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const string &,const string &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const string &,const string &,error_code &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const string &,const string &,flags)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const string &,const string &,flags,error_code &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(string_view,string_view)", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(string_view,string_view,error_code &)", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(string_view,string_view,flags)", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(string_view,string_view,flags,error_code &)", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,const string &,const string &)", "", "Argument[*1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,const string &,const string &,error_code &)", "", "Argument[*1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,const string &,const string &,flags)", "", "Argument[*1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,const string &,const string &,flags,error_code &)", "", "Argument[*1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,string_view,string_view)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,string_view,string_view,error_code &)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,string_view,string_view,flags)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,string_view,string_view,flags,error_code &)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/Comdb2.model.yml b/cpp/ql/lib/ext/Comdb2.model.yml new file mode 100644 index 000000000000..7edcab128ce2 --- /dev/null +++ b/cpp/ql/lib/ext/Comdb2.model.yml @@ -0,0 +1,11 @@ +# Partial model of the Comdb2 C API. +# https://bloomberg.github.io/comdb2/c_api.html +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: sinkModel + data: # namespace, type, subtypes, name, signature, ext, input, kind, provenance + # Both functions interpret the second argument as SQL. The typed variant + # specifies result-column types; bound parameter values are passed separately. + - ["", "", False, "cdb2_run_statement", "", "", "Argument[*1]", "sql-injection", "manual"] + - ["", "", False, "cdb2_run_statement_typed", "", "", "Argument[*1]", "sql-injection", "manual"] diff --git a/cpp/ql/lib/ext/Protobuf.model.yml b/cpp/ql/lib/ext/Protobuf.model.yml new file mode 100644 index 000000000000..02bbad0b1282 --- /dev/null +++ b/cpp/ql/lib/ext/Protobuf.model.yml @@ -0,0 +1,59 @@ +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + # File-descriptor variants (`{Parse,Serialize}*FromFileDescriptor`) are intentionally omitted: + # the descriptor is an `int`, not a data buffer, so there is no buffer argument to model. + + # Deserialization + - ["google::protobuf", "MessageLite", True, "ParseFromString", "(string_view)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParseFromString", "(const Cord &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParsePartialFromString", "(string_view)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParsePartialFromString", "(const Cord &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergeFromString", "(string_view)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergeFromString", "(const Cord &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergePartialFromString", "(string_view)", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergePartialFromString", "(const Cord &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParseFromArray", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParsePartialFromArray", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParseFromCord", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParsePartialFromCord", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergeFromCord", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergePartialFromCord", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParseFromIstream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParsePartialFromIstream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParseFromZeroCopyStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParsePartialFromZeroCopyStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParseFromBoundedZeroCopyStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParsePartialFromBoundedZeroCopyStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergeFromBoundedZeroCopyStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergePartialFromBoundedZeroCopyStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParseFromCodedStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "ParsePartialFromCodedStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergeFromCodedStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "MergePartialFromCodedStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + + # Serialization + - ["google::protobuf", "MessageLite", True, "SerializeToString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializePartialToString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "AppendToString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "AppendPartialToString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializeToArray", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializePartialToArray", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializeToCord", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializePartialToCord", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "AppendToCord", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "AppendPartialToCord", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializeToOstream", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializePartialToOstream", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializeToZeroCopyStream", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializePartialToZeroCopyStream", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializeToCodedStream", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializePartialToCodedStream", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + + # Serialization returning bytes + - ["google::protobuf", "MessageLite", True, "SerializeAsString", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializePartialAsString", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializeAsCord", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["google::protobuf", "MessageLite", True, "SerializePartialAsCord", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] diff --git a/cpp/ql/lib/ext/balber.model.yml b/cpp/ql/lib/ext/balber.model.yml new file mode 100644 index 000000000000..5cbc6fa71a27 --- /dev/null +++ b/cpp/ql/lib/ext/balber.model.yml @@ -0,0 +1,13 @@ +# Model of the BDE balber BER codec (BloombergLP::balber). +# All overloads take the stream at argument 0 and the object at argument 1 and return int. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + # Decoding: stream -> object + - ["BloombergLP::balber", "BerDecoder", true, "decode", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["BloombergLP::balber", "BerDecoder", true, "decodeAny", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + # Encoding: object -> stream + - ["BloombergLP::balber", "BerEncoder", true, "encode", "", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::balber", "BerEncoder", true, "encodeAny", "", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/baljsn.model.yml b/cpp/ql/lib/ext/baljsn.model.yml new file mode 100644 index 000000000000..b85463dbbb2e --- /dev/null +++ b/cpp/ql/lib/ext/baljsn.model.yml @@ -0,0 +1,14 @@ +# Model of the BDE baljsn JSON codec (BloombergLP::baljsn). +# All overloads, including those taking DecoderOptions/EncoderOptions, take the stream at +# argument 0 and the object at argument 1 and return int. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + # Decoding: stream -> object + - ["BloombergLP::baljsn", "Decoder", true, "decode", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["BloombergLP::baljsn", "Decoder", true, "decodeAny", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + # Encoding: object -> stream + - ["BloombergLP::baljsn", "Encoder", true, "encode", "", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::baljsn", "Encoder", true, "encodeAny", "", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/balxml.model.yml b/cpp/ql/lib/ext/balxml.model.yml new file mode 100644 index 000000000000..ec563089d794 --- /dev/null +++ b/cpp/ql/lib/ext/balxml.model.yml @@ -0,0 +1,32 @@ +# Model of the BDE balxml XML codec (BloombergLP::balxml). +# Rows name their overload where the overloads differ in argument layout. Not modelled: +# decode(const char *filename, TYPE *), the two-step open() + decode(TYPE *) form, and the +# Formatter overloads. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + # Decoding: stream -> object; the istream overloads also return the stream + - ["BloombergLP::balxml", "Decoder", true, "decode", "(istream &,TYPE *,const char *)", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["BloombergLP::balxml", "Decoder", true, "decode", "(istream &,TYPE *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::balxml", "Decoder", true, "decode", "(streambuf *,TYPE *,const char *)", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["BloombergLP::balxml", "Decoder", true, "decode", "(const char *,size_t,TYPE *,const char *)", "", "Argument[*0]", "Argument[*2]", "taint", "manual"] + - ["BloombergLP::balxml", "Decoder", true, "decodeAny", "(istream &,TYPE *,const char *)", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["BloombergLP::balxml", "Decoder", true, "decodeAny", "(istream &,TYPE *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::balxml", "Decoder", true, "decodeAny", "(streambuf *,TYPE *,const char *)", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["BloombergLP::balxml", "Decoder", true, "decodeAny", "(istream &,AnyRef *,const char *)", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["BloombergLP::balxml", "Decoder", true, "decodeAny", "(istream &,AnyRef *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::balxml", "Decoder", true, "decodeAny", "(streambuf *,AnyRef *,const char *)", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + # Encoding: object -> stream; the ostream overloads also return the stream + - ["BloombergLP::balxml", "Encoder", true, "encode", "(streambuf *,const TYPE &)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encode", "(ostream &,const TYPE &)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encode", "(ostream &,const TYPE &)", "", "Argument[*0..1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encodeToStream", "", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encodeAny", "(streambuf *,const TYPE &)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encodeAny", "(ostream &,const TYPE &)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encodeAny", "(ostream &,const TYPE &)", "", "Argument[*0..1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encodeAnyToStream", "", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encodeAny", "(streambuf *,const AnyConstRef &)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encodeAny", "(ostream &,const AnyConstRef &)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::balxml", "Encoder", true, "encodeAny", "(ostream &,const AnyConstRef &)", "", "Argument[*0..1]", "ReturnValue[*]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/bdlbb.model.yml b/cpp/ql/lib/ext/bdlbb.model.yml new file mode 100644 index 000000000000..e5c50207c464 --- /dev/null +++ b/cpp/ql/lib/ext/bdlbb.model.yml @@ -0,0 +1,18 @@ +# Model of the BDE bdlbb::Blob segmented byte buffer (BloombergLP::bdlbb). +# Lets taint reach a blob's payload bytes, e.g. a message body filled by bmqa::Message::getData. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + # Accessor chain + - ["BloombergLP::bdlbb", "Blob", true, "buffer", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bdlbb", "BlobBuffer", true, "data", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bdlbb", "BlobBuffer", true, "buffer", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + # BlobUtil read-out + - ["BloombergLP::bdlbb", "BlobUtil", true, "copy", "(char *,const Blob &,int,int)", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bdlbb", "BlobUtil", true, "getContiguousRangeOrCopy", "", "", "Argument[*1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bdlbb", "BlobUtil", true, "getContiguousRangeOrCopy", "", "", "Argument[*1]", "ReturnValue[*]", "taint", "manual"] + # BlobUtil write-in + - ["BloombergLP::bdlbb", "BlobUtil", true, "copy", "(Blob *,int,const char *,int)", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bdlbb", "BlobUtil", true, "copy", "(Blob *,int,const Blob &,int,int)", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/bmqa.model.yml b/cpp/ql/lib/ext/bmqa.model.yml new file mode 100644 index 000000000000..d5bfbf675e18 --- /dev/null +++ b/cpp/ql/lib/ext/bmqa.model.yml @@ -0,0 +1,51 @@ +# Model of the BlazingMQ client API (BloombergLP::bmqa). Scalar property getters are not modelled. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + # Message payload + - ["BloombergLP::bmqa", "Message", true, "getData", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "setData", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "setData", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "setData", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "setDataRef", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "setDataRef", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "setDataRef", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "clone", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + # Message properties + - ["BloombergLP::bmqa", "Message", true, "loadProperties", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "setPropertiesRef", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "setPropertiesRef", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "Message", true, "setPropertiesRef", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "MessageProperties", "(const MessageProperties &,Allocator *)", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "getPropertyAsString", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "getPropertyAsBinary", "", "", "Argument[-1]", "ReturnValue[*].Element", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "getPropertyAsStringOr", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "getPropertyAsStringOr", "", "", "Argument[*1]", "ReturnValue[*]", "value", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "getPropertyAsBinaryOr", "", "", "Argument[-1]", "ReturnValue[*].Element", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "getPropertyAsBinaryOr", "", "", "Argument[*1].Element[@]", "ReturnValue[*].Element[@]", "value", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "setPropertyAsString", "", "", "Argument[1]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "setPropertyAsBinary", "", "", "Argument[1]", "Argument[-1]", "taint", "manual"] + # Property names are stored and exposed by MessagePropertiesIterator::name + - ["BloombergLP::bmqa", "MessageProperties", true, "setPropertyAsBool", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "setPropertyAsChar", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "setPropertyAsShort", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "setPropertyAsInt32", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "setPropertyAsInt64", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "setPropertyAsString", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "setPropertyAsBinary", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "streamIn", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageProperties", true, "streamOut", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + # Property iteration + - ["BloombergLP::bmqa", "MessagePropertiesIterator", true, "MessagePropertiesIterator", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessagePropertiesIterator", true, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"] + - ["BloombergLP::bmqa", "MessagePropertiesIterator", true, "operator=", "", "", "Argument[*0]", "ReturnValue[*]", "value", "manual"] + - ["BloombergLP::bmqa", "MessagePropertiesIterator", true, "name", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessagePropertiesIterator", true, "getAsString", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bmqa", "MessagePropertiesIterator", true, "getAsBinary", "", "", "Argument[-1]", "ReturnValue[*].Element", "taint", "manual"] + # Event -> iterator -> message + - ["BloombergLP::bmqa", "MessageEvent", true, "messageIterator", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] + - ["BloombergLP::bmqa", "MessageIterator", true, "message", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/bslx.model.yml b/cpp/ql/lib/ext/bslx.model.yml new file mode 100644 index 000000000000..11732ff5e4b2 --- /dev/null +++ b/cpp/ql/lib/ext/bslx.model.yml @@ -0,0 +1,140 @@ +# Model of the BDE `bslx` byte-stream deserializers (BloombergLP::bslx). +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + # bslx::ByteInStream + - ["BloombergLP::bslx", "ByteInStream", true, "ByteInStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + # Input-taking resets replace the buffer; reset() only rewinds it. + - ["BloombergLP::bslx", "ByteInStream", true, "reset", "(const char *,size_t)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "reset", "(const StringRef &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + # bslx::ByteInStream getters. + # Scalar getters (getLength, getVersion, getInt*, getUint*, getFloat*) are not modeled, + # as we are generally not interested in tainted scalar values. + - ["BloombergLP::bslx", "ByteInStream", true, "getString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + # bslx::ByteInStream fluent interface + - ["BloombergLP::bslx", "ByteInStream", true, "getLength", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getVersion", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getString", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + # bslx::GenericInStream + - ["BloombergLP::bslx", "GenericInStream", true, "GenericInStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + # bslx::GenericInStream getters. + # Scalar getters (getLength, getVersion, getInt*, getUint*, getFloat*) are not modeled, + # as we are generally not interested in tainted scalar values. + - ["BloombergLP::bslx", "GenericInStream", true, "getString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + # bslx::GenericInStream fluent interface + - ["BloombergLP::bslx", "GenericInStream", true, "getLength", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getVersion", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getString", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + # bslx::InStreamFunctions::bdexStreamIn + - ["BloombergLP::bslx::InStreamFunctions", "", false, "bdexStreamIn", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["BloombergLP::bslx::InStreamFunctions", "", false, "bdexStreamIn", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/empty.model.yml b/cpp/ql/lib/ext/empty.model.yml index e5202b5ad73c..9c2921cfef1b 100644 --- a/cpp/ql/lib/ext/empty.model.yml +++ b/cpp/ql/lib/ext/empty.model.yml @@ -21,3 +21,7 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: [] + - addsTo: + pack: codeql/cpp-all + extensible: forwardsModel + data: [] \ No newline at end of file diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index c3e40cb63948..9178c9b9d67f 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 12.1.0 +version: 12.3.0 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp @@ -10,6 +10,7 @@ dependencies: codeql/mad: ${workspace} codeql/quantum: ${workspace} codeql/rangeanalysis: ${workspace} + codeql/regex: ${workspace} codeql/ssa: ${workspace} codeql/typeflow: ${workspace} codeql/tutorial: ${workspace} diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll index 4069b58134be..023aa1b6c3d4 100644 --- a/cpp/ql/lib/semmle/code/cpp/Type.qll +++ b/cpp/ql/lib/semmle/code/cpp/Type.qll @@ -398,6 +398,8 @@ private predicate isIntegralType(@builtintype type, int kind) { kind = 44 or kind = 51 + or + 67 <= kind and kind <= 69 ) } @@ -484,6 +486,12 @@ private predicate integralTypeMapping(int original, int canonical, int unsigned, original = 44 and canonical = 44 and unsigned = -1 and signed = -1 // char32_t or original = 51 and canonical = 51 and unsigned = -1 and signed = -1 // char8_t + or + original = 67 and canonical = 67 and unsigned = 68 and signed = 69 // _BitInt(N) + or + original = 68 and canonical = 68 and unsigned = 68 and signed = 69 // unsigned _BitInt(N) + or + original = 69 and canonical = 67 and unsigned = 68 and signed = 69 // signed _BitInt(N) } /** @@ -517,7 +525,8 @@ class IntegralType extends ArithmeticType, IntegralOrEnumType { builtintypes(underlyingElement(this), _, 13, _, _, _) or builtintypes(underlyingElement(this), _, 16, _, _, _) or builtintypes(underlyingElement(this), _, 19, _, _, _) or - builtintypes(underlyingElement(this), _, 37, _, _, _) + builtintypes(underlyingElement(this), _, 37, _, _, _) or + builtintypes(underlyingElement(this), _, 69, _, _, _) } /** Holds if this integral type is explicitly unsigned. */ @@ -527,7 +536,8 @@ class IntegralType extends ArithmeticType, IntegralOrEnumType { builtintypes(underlyingElement(this), _, 12, _, _, _) or builtintypes(underlyingElement(this), _, 15, _, _, _) or builtintypes(underlyingElement(this), _, 18, _, _, _) or - builtintypes(underlyingElement(this), _, 36, _, _, _) + builtintypes(underlyingElement(this), _, 36, _, _, _) or + builtintypes(underlyingElement(this), _, 68, _, _, _) } /** Holds if this integral type is implicitly signed. */ @@ -537,7 +547,8 @@ class IntegralType extends ArithmeticType, IntegralOrEnumType { builtintypes(underlyingElement(this), _, 11, _, -1, _) or builtintypes(underlyingElement(this), _, 14, _, -1, _) or builtintypes(underlyingElement(this), _, 17, _, -1, _) or - builtintypes(underlyingElement(this), _, 35, _, -1, _) + builtintypes(underlyingElement(this), _, 35, _, -1, _) or + builtintypes(underlyingElement(this), _, 67, _, -1, _) } /** @@ -547,7 +558,14 @@ class IntegralType extends ArithmeticType, IntegralOrEnumType { IntegralType getUnsigned() { exists(int unsignedKind | integralTypeMapping(kind, _, unsignedKind, _) and - builtintypes(unresolveElement(result), _, unsignedKind, _, _, _) + builtintypes(unresolveElement(result), _, unsignedKind, _, _, _) and + ( + not kind in [67, 68, 69] + or + exists(int bitWidth | bit_precise_int_types(underlyingElement(this), bitWidth) | + bit_precise_int_types(unresolveElement(result), bitWidth) + ) + ) ) } @@ -562,7 +580,14 @@ class IntegralType extends ArithmeticType, IntegralOrEnumType { IntegralType getCanonicalArithmeticType() { exists(int canonicalKind | integralTypeMapping(kind, canonicalKind, _, _) and - builtintypes(unresolveElement(result), _, canonicalKind, _, _, _) + builtintypes(unresolveElement(result), _, canonicalKind, _, _, _) and + ( + not kind in [67, 68, 69] + or + exists(int bitWidth | bit_precise_int_types(underlyingElement(this), bitWidth) | + bit_precise_int_types(unresolveElement(result), bitWidth) + ) + ) ) } } @@ -1045,6 +1070,18 @@ class Char32Type extends IntegralType { override string getAPrimaryQlClass() { result = "Char32Type" } } +/** + * A C23 bit-precise integer type `_BitInt(N)`. + */ +class BitPreciseIntType extends IntegralType { + BitPreciseIntType() { builtintypes(underlyingElement(this), _, [67, 68, 69], _, _, _) } + + /** Get the bit-with of the bit-precise integer. */ + int getBitWidth() { bit_precise_int_types(underlyingElement(this), result) } + + override string getAPrimaryQlClass() { result = "BitPreciseIntType" } +} + /** * The (primitive) type of the C++11 `nullptr` constant. It is a * distinct type, denoted by `decltype(nullptr)`, that is not itself a pointer diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 4f84b30d557e..80f296dca483 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -15,6 +15,8 @@ * `namespace; type; subtypes; name; signature; ext; output; kind; provenance` * - BarrierGuards: * `namespace; type; subtypes; name; signature; ext; input; acceptingValue; kind; provenance` + * - Forwards: + * `namespace; type; subtypes; name; signature; ext; start; constructor; output; provenance` * * The interpretation of a row is similar to API-graphs with a left-to-right * reading. @@ -108,6 +110,15 @@ * - "manual": The model has been written by hand. * This information is used in a heuristic for dataflow analysis to determine, if a * model or source code should be used for determining flow. + * + * The "Forwards" relation allows modeling of function that perform C++11-style "perfect + * forwarding" where a function receives a number of arguments and forwards those arguments + * to a constructor of another type. For example, the row: + * `"std"; "vector"; "True"; "emplace"; ""; ""; "1"; T; Argument[-1].Element; manual` + * says that `std::vector::emplace(arg0, arg1, ..., argn)` forwards arguments + * `arg1, ..., argn` to a constructor for `T`, and the result of `T(arg1, ..., argn)` + * flows to `Argument[-1].Element` (see information about the semantics of the `output` + * column further above). */ import cpp @@ -115,6 +126,7 @@ private import new.DataFlow private import semmle.code.cpp.controlflow.IRGuards private import semmle.code.cpp.ir.dataflow.internal.DataFlowNodes as Nodes private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate as Private +private import semmle.code.cpp.ir.dataflow.internal.SsaImpl as SsaImpl private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil private import internal.FlowSummaryImpl private import internal.FlowSummaryImpl::Public @@ -160,6 +172,20 @@ predicate summaryModel( ) } +/** + * Holds if a forward model exists for the given parameters. + */ +predicate forwardsModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string start, string constructor, string output, string provenance, string model +) { + exists(QlBuiltins::ExtensionId madId | + Extensions::forwardsModel(namespace, type, subtypes, name, signature, ext, start, constructor, + output, provenance, madId) and + model = "MaD:" + madId.toString() + ) +} + /** Provides a query predicate to check the data for validation errors. */ module ModelValidation { private string getInvalidModelInput() { @@ -186,6 +212,8 @@ module ModelValidation { sourceModel(_, _, _, _, _, _, output, _, _, _) and pred = "source" or summaryModel(_, _, _, _, _, _, _, output, _, _, _) and pred = "summary" + or + forwardsModel(_, _, _, _, _, _, _, _, output, _, _) and pred = "forwards" | invalidSpecComponent(output, part) and not part = "" and @@ -259,7 +287,8 @@ private predicate elementSpec( sinkModel(namespace, type, subtypes, name, signature, ext, _, _, _, _) or barrierModel(namespace, type, subtypes, name, signature, ext, _, _, _, _) or barrierGuardModel(namespace, type, subtypes, name, signature, ext, _, _, _, _, _) or - summaryModel(namespace, type, subtypes, name, signature, ext, _, _, _, _, _) + summaryModel(namespace, type, subtypes, name, signature, ext, _, _, _, _, _) or + forwardsModel(namespace, type, subtypes, name, signature, ext, _, _, _, _, _) } /** @@ -596,6 +625,14 @@ private string getAtIndex(string s, int i) { not (s = "" and i = 0) } +/** Gets the number of comma-separated arguments in `s`. */ +bindingset[s] +private int getNumberOfArguments(string s) { + s = "" and result = 0 + or + s != "" and result = count(s.indexOf(",")) + 1 +} + /** * Normalizes `partiallyNormalizedSignature` by replacing the `remaining` * number of template arguments in `partiallyNormalizedSignature` with their @@ -605,7 +642,7 @@ private string getSignatureWithoutClassTemplateNames( string partiallyNormalizedSignature, string typeArgs, string nameArgs, int remaining ) { elementSpecWithArguments0(_, _, _, partiallyNormalizedSignature, typeArgs, nameArgs) and - remaining = count(partiallyNormalizedSignature.indexOf(",")) + 1 and + remaining = getNumberOfArguments(typeArgs) and result = partiallyNormalizedSignature or exists(string mid | @@ -619,7 +656,7 @@ private string getSignatureWithoutClassTemplateNames( ) or // Make sure `remaining` is properly bound - remaining = [0 .. count(partiallyNormalizedSignature.indexOf(",")) + 1] and + remaining = [0 .. getNumberOfArguments(typeArgs)] and not exists(getAtIndex(typeArgs, remaining)) and result = mid ) @@ -636,7 +673,7 @@ pragma[nomagic] private string getSignatureWithoutFunctionTemplateNames( string partiallyNormalizedSignature, string typeArgs, string nameArgs, int remaining ) { - remaining = count(partiallyNormalizedSignature.indexOf(",")) + 1 and + remaining = getNumberOfArguments(nameArgs) and result = getSignatureWithoutClassTemplateNames(partiallyNormalizedSignature, typeArgs, nameArgs, 0) or @@ -651,7 +688,7 @@ private string getSignatureWithoutFunctionTemplateNames( ) or // Make sure `remaining` is properly bound - remaining = [0 .. count(partiallyNormalizedSignature.indexOf(",")) + 1] and + remaining = [0 .. getNumberOfArguments(nameArgs)] and not exists(getAtIndex(nameArgs, remaining)) and result = mid ) @@ -1046,6 +1083,533 @@ private module Cached { import Cached +/** Gets the constructor type selected by `constructorType` in a forwarding model. */ +private Type getForwardedConstructorType( + Function forwarder, string namespace, string type, boolean subtypes, string name, + string signature, string ext, string constructorType +) { + exists(int index | + forwardsModel(namespace, type, subtypes, name, signature, ext, _, constructorType, _, _, _) and + forwarder = interpretElement(namespace, type, subtypes, name, signature, ext) + | + exists(string typeArguments | + parseAngles(type, _, typeArguments, "") and + constructorType = getAtIndex(typeArguments, index) and + result = forwarder.getDeclaringType().getTemplateArgument(index) + ) + or + exists(string nameArguments | + parseAngles(name, _, nameArguments, "") and + constructorType = getAtIndex(nameArguments, index) and + result = forwarder.getTemplateArgument(index) + ) + ) +} + +/** Interprets a forwarding model, retaining its constructed type, output, and provenance. */ +private predicate interpretForwardsModelType( + Function forwarder, Type constructedType, int start, string output, string provenance, + string model +) { + exists( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string startString, string constructorType + | + forwardsModel(namespace, type, subtypes, name, signature, ext, startString, constructorType, + output, provenance, model) and + forwarder = interpretElement(namespace, type, subtypes, name, signature, ext) and + start = startString.toInt() + | + // Either the row specifies forwarding to a type given by the type or + // function template, in which case we need to resolve that from the type + // or function name. + constructedType = + getForwardedConstructorType(forwarder, namespace, type, subtypes, name, signature, ext, + constructorType).getUnspecifiedType() + or + // Or the row specifies forwarding to a specific type. + not exists( + getForwardedConstructorType(forwarder, namespace, type, subtypes, name, signature, ext, + constructorType) + ) and + classHasQualifiedName(constructedType, namespace, constructorType) + ) +} + +/** + * Holds if `forwarder` may forward its arguments starting at `start` to a + * constructor of `c`. The actual constructor being forwarded to depends on the + * types of arguments from `start` at calls to `forwarder`. + */ +private predicate interpretForwardsModel( + Function forwarder, Class c, int start, string output, string provenance, string model +) { + interpretForwardsModelType(forwarder, c, start, output, provenance, model) +} + +/** + * Holds if `forwarder` forwards its arguments starting at `start` to a + * constructor of `c`. + */ +predicate forwards(Function forwarder, Class c, int start) { + interpretForwardsModel(forwarder, c, start, _, _, _) +} + +private int referenceIndirection(Type unspecified) { + if unspecified instanceof ReferenceType then result = 1 else result = 0 +} + +/** Gets `unspecified`, but with its outermost reference removed, if any. */ +private Type stripReference(Type unspecified) { + result = unspecified.(ReferenceType).getBaseType().getUnspecifiedType() + or + not unspecified instanceof ReferenceType and + result = unspecified +} + +/** + * Encapsulates predicates used to compute which constructor a perfect + * forwarding function targets. + */ +module ConstructorForwarding { + private import codeql.util.Boolean + + private class ConvertingConstructor extends Constructor { + Type fromType; + + ConvertingConstructor() { + not this.isFromUninstantiatedTemplate(_) and + not this.isExplicit() and + not this.isDeleted() and + not this instanceof CopyConstructor and + not this instanceof MoveConstructor and + fromType = this.getParameter(0).getUnderlyingType() and + forall(int index | index > 0 and exists(this.getParameter(index)) | + this.getParameter(index).hasInitializer() + ) + } + + Type getUnderlyingFromType() { result = fromType } + } + + private Type getForwardedArgumentType(Function forwarder, int start, int i) { + forwards(forwarder, _, start) and + i = [0 .. forwarder.getNumberOfParameters() - start - 1] and + result = forwarder.getParameter(start + i).getUnderlyingType() + } + + private Type getConstructorParameterType(Cpp::Constructor constructor, int i) { + forwards(_, constructor.getDeclaringType(), _) and + result = constructor.getParameter(i).getUnderlyingType() + } + + private newtype ValueCategory = + LValue() or + XValue() or + PRValue() + + bindingset[t1, t2] + pragma[inline_late] + private predicate preservesQualifiers(Type t1, Type t2) { + (t1.isConst() implies t2.isConst()) and + (t1.isVolatile() implies t2.isVolatile()) + } + + private predicate baseTypeCompatible(Type arg, Type param) { + param.stripTopLevelSpecifiers() = arg.stripTopLevelSpecifiers().(Class).getABaseClass+() and + preservesQualifiers(arg, param) + } + + private predicate voidType(Type t) { t.stripTopLevelSpecifiers() instanceof VoidType } + + private predicate routineType(Type t) { t.stripTopLevelSpecifiers() instanceof RoutineType } + + private predicate pointerConversion(Cpp::PointerType arg, Cpp::PointerType param) { + exists(Type argBase, Type paramBase | + argBase = arg.getBaseType() and + paramBase = param.getBaseType() + | + baseTypeCompatible(argBase, paramBase) + or + voidType(paramBase) and + not routineType(argBase) and + preservesQualifiers(argBase, paramBase) + ) + } + + private predicate nullPointerConversion(Type t) { + t instanceof Cpp::PointerType or t instanceof FunctionPointerType + } + + private predicate booleanConversion(Type t) { + t instanceof Cpp::PointerType + or + t instanceof FunctionPointerType + or + t instanceof Cpp::ArrayType + or + t instanceof RoutineType + } + + private predicate referenceAcceptsCategory(Cpp::ReferenceType t, ValueCategory category) { + if t instanceof Cpp::LValueReferenceType + then + category = LValue() + or + exists(Type base | + base = t.getBaseType() and + base.isConst() and + not base.isVolatile() + ) + else category != LValue() + } + + /** + * Tracks the ordering of standard conversions. All phases allow parameter matching + * and, if none has been used, a user-defined conversion that resets to `Initial()`. + */ + private newtype Phase = + // Allows array/function decay, a value or base-class conversion, or pointer qualification. + Initial() or + // Allows a value or base-class conversion or pointer qualification, but no further decay. + AfterTransformation() or + // Allows only pointer qualification among the remaining conversion steps. + AfterValueConversion() or + // Allows no further conversion steps. + AfterQualification() + + private predicate isUnderlyingType(Type type) { type = type.getUnderlyingType() } + + private newtype TTypeState = + MkTypeState(Type type, ValueCategory category, Boolean conversionUsed, Phase phase) { + not type instanceof Cpp::ReferenceType and + not type instanceof FunctionReferenceType and + isUnderlyingType(type) + } + + private ValueCategory getCategoryForRef(Cpp::ReferenceType reference) { + reference instanceof Cpp::LValueReferenceType and result = LValue() + or + reference instanceof Cpp::RValueReferenceType and result = XValue() + } + + private Type getValueType(Type t, ValueCategory category) { + result = t.(FunctionReferenceType).getBaseType().getUnderlyingType() and + category = LValue() + or + result = t.(Cpp::ReferenceType).getBaseType().getUnderlyingType() and + category = getCategoryForRef(t) + or + not t instanceof FunctionReferenceType and + not t instanceof Cpp::ReferenceType and + result = t and + category = PRValue() + } + + bindingset[arg, param] + pragma[inline_late] + private predicate qualificationCompatible(Type arg, Type param) { + arg.stripTopLevelSpecifiers() = param.stripTopLevelSpecifiers() and + preservesQualifiers(arg, param) + } + + private class TypeState extends TTypeState { + Type getType() { this = MkTypeState(result, _, _, _) } + + ValueCategory getCategory() { this = MkTypeState(_, result, _, _) } + + Phase getPhase() { this = MkTypeState(_, _, _, result) } + + /** Holds if this state's phase permits a value or base-class conversion. */ + predicate canConvertValue() { + this.getPhase() = Initial() or this.getPhase() = AfterTransformation() + } + + predicate hasNotUsedConversion() { this = MkTypeState(_, _, false, _) } + + string toString() { result = this.getType().toString() } + + predicate isSource(Type argType) { + argType = getForwardedArgumentType(_, _, _) and + exists(ValueCategory category | + this = MkTypeState(getValueType(argType, category), category, false, Initial()) + ) + } + + predicate matchesParameter(Type paramType) { + exists(Type base | base = paramType.(Cpp::ReferenceType).getBaseType() | + qualificationCompatible(this.getType(), base) and + referenceAcceptsCategory(paramType, this.getCategory()) + ) + or + not paramType instanceof Cpp::ReferenceType and + this.getType().stripTopLevelSpecifiers() = paramType.stripTopLevelSpecifiers() + } + + predicate isSink(Type paramType, Cpp::Constructor constructor) { + paramType = getConstructorParameterType(constructor, _) and + this.matchesParameter(paramType) + } + } + + private Cpp::PointerType pointerType(Type base) { + result.getBaseType() = base.getUnderlyingType() + } + + private predicate arrayToPointerStep(TypeState argState, TypeState paramState) { + exists(Cpp::ArrayType array, boolean conversionUsed | + argState = MkTypeState(array, _, conversionUsed, Initial()) and + paramState = + MkTypeState(pointerType(array.getBaseType()), PRValue(), conversionUsed, + AfterTransformation()) + ) + } + + private predicate functionToPointerStep(TypeState argState, TypeState paramState) { + exists(RoutineType routine, FunctionPointerType pointer, boolean conversionUsed | + argState = MkTypeState(routine, _, conversionUsed, Initial()) and + routine = pointer.getBaseType().getUnderlyingType() and + paramState = MkTypeState(pointer, PRValue(), conversionUsed, AfterTransformation()) + ) + } + + private predicate arithmeticConversion(Type t) { + t instanceof ArithmeticType + or + t instanceof Enum and not t instanceof ScopedEnum + } + + private predicate hasNoTopLevelSpecifiers(Type type) { type = type.stripTopLevelSpecifiers() } + + private predicate valueConversionStep(TypeState argState, TypeState paramState) { + exists(Type argType, Type paramType, boolean conversionUsed | + argState = MkTypeState(_, _, conversionUsed, _) and + argState.canConvertValue() and + argType = argState.getType().stripTopLevelSpecifiers() and + hasNoTopLevelSpecifiers(paramType) and + argType != paramType and + paramState = MkTypeState(paramType, PRValue(), conversionUsed, AfterValueConversion()) + | + paramType instanceof ArithmeticType and + arithmeticConversion(argType) + or + pointerConversion(argType, paramType) + or + argType instanceof NullPointerType and + nullPointerConversion(paramType) + or + booleanConversion(argType) and + paramType instanceof BoolType + ) + } + + private newtype PtrKind = + NormalPtrKind() or + FunPtrKind() + + private Type pointerBase(Type pointer, PtrKind k) { + result = pointer.(Cpp::PointerType).getBaseType() and + k = NormalPtrKind() + or + result = pointer.(FunctionPointerType).getBaseType() and + k = FunPtrKind() + } + + private predicate pointerQualificationStep(TypeState argState, TypeState paramState) { + exists(Type argType, Type paramType, boolean conversionUsed, PtrKind k | + argState = MkTypeState(_, _, conversionUsed, _) and + argState.getPhase() != AfterQualification() and + argType = argState.getType().stripTopLevelSpecifiers() and + hasNoTopLevelSpecifiers(paramType) and + argType != paramType and + qualificationCompatible(pointerBase(argType, k), pointerBase(paramType, k)) and + paramState = MkTypeState(paramType, PRValue(), conversionUsed, AfterQualification()) + ) + } + + private predicate baseClassStep(TypeState argState, TypeState paramState) { + exists(Type arg, Type param, ValueCategory category, boolean conversionUsed | + argState = MkTypeState(arg, category, conversionUsed, _) and + argState.canConvertValue() and + baseTypeCompatible(arg, param) and + paramState = MkTypeState(param, category, conversionUsed, AfterValueConversion()) + ) + } + + private predicate convertingConstructorStep(TypeState argState, TypeState paramState) { + exists(ConvertingConstructor constructor | + argState.hasNotUsedConversion() and + argState.matchesParameter(constructor.getUnderlyingFromType()) and + paramState = MkTypeState(constructor.getDeclaringType(), PRValue(), true, Initial()) + ) + } + + private predicate conversionOperatorStep(TypeState argState, TypeState paramState) { + exists(ConversionOperator conversion, ValueCategory category | + not conversion.isFromUninstantiatedTemplate(_) and + not conversion.isExplicit() and + not conversion.isDeleted() and + argState.hasNotUsedConversion() and + conversion.getSourceType() = + argState.getType().stripTopLevelSpecifiers().(Class).getABaseClass*() and + paramState = + MkTypeState(getValueType(conversion.getDestType().getUnderlyingType(), category), category, + true, Initial()) + ) + } + + private predicate step(TypeState argState, TypeState paramState) { + arrayToPointerStep(argState, paramState) + or + functionToPointerStep(argState, paramState) + or + valueConversionStep(argState, paramState) + or + pointerQualificationStep(argState, paramState) + or + baseClassStep(argState, paramState) + or + convertingConstructorStep(argState, paramState) + or + conversionOperatorStep(argState, paramState) + } + + private predicate typeFwd(TypeState state) { + state.isSource(_) + or + exists(TypeState previous | + typeFwd(previous) and + step(previous, state) + ) + } + + private predicate typeRev(TypeState state, Cpp::Constructor constructor) { + typeFwd(state) and + ( + state.isSink(_, constructor) + or + exists(TypeState next | + typeRev(next, constructor) and + step(state, next) + ) + ) + } + + private predicate prunedStep(TypeState argState, TypeState paramState) { + exists(Cpp::Constructor constructor | + typeRev(argState, constructor) and + typeRev(paramState, constructor) and + step(argState, paramState) + ) + } + + private predicate compatible(Function forwarder, int start, int i, Cpp::Constructor constructor) { + exists(TypeState argState, TypeState paramState | + argState.isSource(getForwardedArgumentType(forwarder, start, i)) and + paramState.isSink(getConstructorParameterType(constructor, i), constructor) and + prunedStep*(argState, paramState) + ) + } + + /** + * Gets the `Constructor` that should be invoked with arguments `0 .. n` + * when `forwarder` is called with arguments `start + 0 .. start + n`. + */ + Cpp::Constructor getForwardingConstructor(Function forwarder, int start) { + exists(int numberOfForwardedArguments | + numberOfForwardedArguments <= result.getNumberOfParameters() + or + result.isVarargs() + | + forwards(forwarder, result.getDeclaringType(), start) and + forwarder.getNumberOfParameters() = start + numberOfForwardedArguments and + forex(int i | i = [0 .. result.getNumberOfParameters() - 1] | + // If we are still processing the forwarded arguments then we need to + // check that the argument types match the parameter types. + // Functions that perform perfect forwarding are always written as: + // ``` + // template void emplace(Args&&... args) { ... } + // ``` + // and so all the arguments will be reference typed (lvalue or rvalued). + // However, the constructor may not specify all the arguments by + // reference. + i < numberOfForwardedArguments and + compatible(forwarder, start, i, result) + or + // If the constructor has a default argument and we have processed all + // the forwarded arguments then we don't need to check the types. + i >= numberOfForwardedArguments and result.getParameter(i).hasInitializer() + ) + ) + } + + /** Holds if `call` is a call that forwards arguments to a constructor call. */ + predicate isForwarderConstructorArgumentNodeImpl(CallInstruction call) { + exists(getForwardingConstructor(call.getStaticCallTarget(), _)) + } +} + +/** + * In order to support flow summaries for functions that perform "perfect + * forwarding" we interpret a call such as: + * ```cpp + * struct Foo { Foo(int) }; + * std::vector v; + * v.emplace_back(42); + * ``` + * as: + * ```cpp + * v.emplace_back(42, &Foo); + * ``` + * and add two summaries: + * (1) One flow from `42` to the first argument of a call to `Foo` + * (2) One flow from the return value of `Foo` to the `this` argument of the call + * to `emplace_back` (with a sequence of output `Content`s). + * + * These two summaries are automatically generated when a forwarding model + * for `emplace_back` exists. + */ +private predicate interpretForwardingSummary( + Function forwarder, string input, string output, string provenance, string model +) { + exists(Class c, int start, string constructorOutput | + interpretForwardsModel(forwarder, c, start, constructorOutput, provenance, model) + | + // Generate the (1) summary + exists(int index, Parameter arg, Parameter p, int indirection, Cpp::Constructor constructor | + arg = forwarder.getParameter(start + index) and + constructor = ConstructorForwarding::getForwardingConstructor(forwarder, start) and + constructor.getDeclaringType() = c and + p = constructor.getParameter(index) and + indirection = [0 .. SsaImpl::getMaxIndirectionsForPRType(p.getUnspecifiedType())] and + input = + "Argument[" + repeatStars(indirection + referenceIndirection(arg.getUnspecifiedType())) + + (start + index) + "]" and + output = + "Argument[forward].Parameter[" + + repeatStars(indirection + referenceIndirection(p.getUnspecifiedType())) + index + "]" + ) + or + // Generate the (2) summary + input = "Argument[forward].Parameter[-1]" and + output = constructorOutput + ) + or + // Scalar types have no constructor to synthesize. In this case, directly + // preserve the value of the single forwarded argument at the modeled output. + exists(Type constructedType, int start, Parameter p, int indirection | + interpretForwardsModelType(forwarder, constructedType, start, output, provenance, model) and + not constructedType instanceof Class and + forwarder.getNumberOfParameters() = start + 1 and + p = forwarder.getParameter(start) and + stripReference(p.getUnspecifiedType()) = constructedType and + indirection = [0 .. SsaImpl::getMaxIndirectionsForPRType(constructedType)] and + input = + "Argument[" + repeatStars(indirection + referenceIndirection(p.getUnspecifiedType())) + start + + "]" + ) +} + /** * Holds if `node` is specified as a source with the given kind in a MaD flow * model. @@ -1074,6 +1638,9 @@ private predicate interpretSummary( model) and f = interpretElement(namespace, type, subtypes, name, signature, ext) ) + or + interpretForwardingSummary(f, input, output, provenance, model) and + kind = "value" } // adapter class for converting Mad summaries to `SummarizedCallable`s diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll index 22c74c2aa714..e05c1bb2b810 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll @@ -51,6 +51,14 @@ extensible predicate neutralModel( string namespace, string type, string name, string signature, string kind, string provenance ); +/** + * Holds if a constructor forwarding model exists for the given parameters. + */ +extensible predicate forwardsModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string start, string constructor, string output, string provenance, QlBuiltins::ExtensionId madId +); + module Extensions implements SharedMaD::ExtensionsSig { import ExternalFlowExtensions diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll index 780c802dc8ae..6c613308d5f4 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll @@ -111,6 +111,9 @@ module Input implements InputSig { pos = -1 and result = TIndirectionPosition(pos, indirection + 1) ) ) + or + argString = "forward" and + result = TForwardPosition() } bindingset[token] @@ -256,7 +259,7 @@ private module Input2 implements Impl::Private::InputSig2 { pragma[nomagic] private predicate hasKindAndEnclosingFunction(Function f, ReturnKind rk, ReturnNode r) { r.getEnclosingCallable().asSourceCallable() = f and - r.getKind() = rk + pragma[only_bind_into](r).getKind() = rk } pragma[nomagic] diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Literal.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Literal.qll index 31e2b5135b42..7238ea2a35ed 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Literal.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Literal.qll @@ -133,6 +133,19 @@ class StringLiteral extends TextLiteral { override string getAPrimaryQlClass() { result = "StringLiteral" } } +/** + * A C++ raw string literal. For example: + * ``` + * const char *s1 = R"(abcdef)"; + * const wchar_t *s2 = LR"x(123456)x"; + * ``` + */ +class RawStringLiteral extends StringLiteral { + RawStringLiteral() { this.getValueText().regexpMatch("[^\"]*R\".*\\(.*") } + + override string getAPrimaryQlClass() { result = "RawStringLiteral" } +} + /** * An octal literal. For example: * ``` diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowDispatch.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowDispatch.qll index bce936552768..03a565ef946d 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowDispatch.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowDispatch.qll @@ -131,6 +131,15 @@ private predicate qualifierSourceImpl(RelevantNode n, Class c) { ) } +pragma[nomagic] +private predicate hasKindAndEnclosingCallable( + DataFlowPrivate::DataFlowCallable callable, DataFlowPrivate::ReturnKind kind, + DataFlowPrivate::ReturnNode return +) { + return.getEnclosingCallable() = callable and + return.getKind() = kind +} + private module TrackVirtualDispatch { /** * Gets a possible runtime target of `c` using both static call-target @@ -197,11 +206,21 @@ private module TrackVirtualDispatch { ) } + pragma[nomagic] + private predicate hasDispatchWithKind( + DataFlowPrivate::DataFlowCallable callable, DataFlowPrivate::ReturnKind kind, + LocalSourceNode n2 + ) { + exists(DataFlowPrivate::DataFlowCall call | + n2 = DataFlowPrivate::getAnOutNode(call, kind) and + callable = dispatch(call) + ) + } + predicate returnStep(Node n1, LocalSourceNode n2) { - exists(DataFlowPrivate::DataFlowCallable callable, DataFlowPrivate::DataFlowCall call | - n1.(DataFlowPrivate::ReturnNode).getEnclosingCallable() = callable and - callable = dispatch(call) and - n2 = DataFlowPrivate::getAnOutNode(call, n1.(DataFlowPrivate::ReturnNode).getKind()) + exists(DataFlowPrivate::DataFlowCallable callable, DataFlowPrivate::ReturnKind kind | + hasKindAndEnclosingCallable(callable, kind, n1) and + hasDispatchWithKind(callable, kind, n2) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll index 541b6d13b149..9dbf7f8e73c5 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll @@ -3,6 +3,7 @@ private import semmle.code.cpp.ir.ValueNumbering private import semmle.code.cpp.ir.IR private import semmle.code.cpp.models.interfaces.DataFlow private import semmle.code.cpp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl +private import semmle.code.cpp.dataflow.ExternalFlow as External private import DataFlowPrivate private import DataFlowUtil private import ModelUtil @@ -144,7 +145,7 @@ private module Cached { TNonUnionContent(CanonicalField f, int indirectionIndex) { // the indirection index for field content starts at 1 (because `TNonUnionContent` is thought of as // the address of the field, `FieldAddress` in the IR). - indirectionIndex = [1 .. max(SsaImpl::getMaxIndirectionsForType(f.getAnUnspecifiedType()))] and + indirectionIndex = [1 .. max(SsaImpl::getMaxIndirectionsForGLType(f.getAnUnspecifiedType()))] and // Reads and writes of union fields are tracked using `UnionContent`. not f.getDeclaringType() instanceof Union } or @@ -156,7 +157,7 @@ private module Cached { // field can be read by any read of the union's fields. Again, the indirection index // is 1-based (because 0 is considered the address). indirectionIndex = - [1 .. max(SsaImpl::getMaxIndirectionsForType(getAFieldWithSize(u, bytes) + [1 .. max(SsaImpl::getMaxIndirectionsForGLType(getAFieldWithSize(u, bytes) .getAnUnspecifiedType()) )] ) @@ -184,13 +185,16 @@ private module Cached { TNode0(Node0Impl node) { DataFlowImplCommon::forceCachingInSameStage() } or TGlobalLikeVariableNode(GlobalLikeVariable var, int indirectionIndex) { indirectionIndex = - [getMinIndirectionsForType(var.getUnspecifiedType()) .. SsaImpl::getMaxIndirectionsForType(var.getUnspecifiedType())] + [getMinIndirectionsForType(var.getUnspecifiedType()) .. SsaImpl::getMaxIndirectionsForGLType(var.getUnspecifiedType())] } or TPostUpdateNodeImpl(Operand operand, int indirectionIndex) { isPostUpdateNodeImpl(operand, indirectionIndex) } or TSsaSynthNode(SsaImpl::SynthNode n) or TSsaIteratorNode(IteratorFlow::IteratorFlowNode n) or + TForwarderConstructorArgumentNode(CallInstruction call) { + External::ConstructorForwarding::isForwarderConstructorArgumentNodeImpl(call) + } or TRawIndirectOperand0(Node0Impl node, int indirectionIndex) { SsaImpl::hasRawIndirectOperand(node.asOperand(), indirectionIndex) } or @@ -209,10 +213,7 @@ private module Cached { TBodyLessParameterNodeImpl(Parameter p, int indirectionIndex) { // Rule out parameters of catch blocks. not exists(p.getCatchBlock()) and - // We subtract one because `getMaxIndirectionsForType` returns the maximum - // indirection for a glvalue of a given type, and this doesn't apply to - // parameters. - indirectionIndex = [0 .. SsaImpl::getMaxIndirectionsForType(p.getUnspecifiedType()) - 1] and + indirectionIndex = [0 .. SsaImpl::getMaxIndirectionsForPRType(p.getUnspecifiedType())] and not any(InitializeParameterInstruction init).getParameter() = p } or TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) 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 3a1b42645642..29f1a16bf58e 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 @@ -122,6 +122,47 @@ private module Cached { FlowSummaryImpl::Private::Steps::summaryJumpStep(n1, n2) } + bindingset[store] + pragma[inline_late] + private predicate nodeHasInstructionLate(Node node, StoreInstruction store, int indirectionIndex) { + nodeHasInstruction(node, store, indirectionIndex) + } + + pragma[nomagic] + private predicate storeStepSource( + Operand fieldAddress, int contentIndirectionIndex, Node node, boolean certain + ) { + exists(int indirectionIndex, int numberOfLoads, StoreInstruction store | + nodeHasInstructionLate(node, store, indirectionIndex) and + numberOfLoadsFromOperand(fieldAddress, store.getDestinationAddressOperand(), numberOfLoads, + certain) and + contentIndirectionIndex = 1 + indirectionIndex + numberOfLoads + ) + } + + pragma[nomagic] + private predicate hasFieldAddressAndField(Field f, PostFieldUpdateNode pfu, Operand fieldAddress) { + pfu.getIndirectionIndex() = 1 and + pfu.getUpdatedField() = f and + pfu.getFieldAddress() = fieldAddress + } + + pragma[nomagic] + private predicate hasFieldAndIndirectionIndex(Field f, int indirectionIndex, FieldContent fc) { + fc.getAField() = f and + fc.getIndirectionIndex() = indirectionIndex + } + + pragma[nomagic] + private predicate storeStepTarget( + Operand address, int indirectionIndex, PostFieldUpdateNode pfu, FieldContent fc + ) { + exists(Field f | + hasFieldAddressAndField(f, pfu, address) and + hasFieldAndIndirectionIndex(f, indirectionIndex, fc) + ) + } + /** * Holds if data can flow from `node1` to `node2` via an assignment to `f`. * Thus, `node2` references an object with a field `f` that contains the @@ -132,19 +173,9 @@ private module Cached { */ cached predicate storeStepImpl(Node node1, Content c, Node node2, boolean certain) { - exists( - PostFieldUpdateNode postFieldUpdate, int indirectionIndex1, int numberOfLoads, - StoreInstruction store, FieldContent fc - | - postFieldUpdate = node2 and - fc = c and - nodeHasInstruction(node1, pragma[only_bind_into](store), - pragma[only_bind_into](indirectionIndex1)) and - postFieldUpdate.getIndirectionIndex() = 1 and - numberOfLoadsFromOperand(postFieldUpdate.getFieldAddress(), - store.getDestinationAddressOperand(), numberOfLoads, certain) and - fc.getAField() = postFieldUpdate.getUpdatedField() and - getIndirectionIndexLate(fc) = 1 + indirectionIndex1 + numberOfLoads + exists(Operand fieldAddress, int indirectionIndex | + storeStepSource(fieldAddress, indirectionIndex, node1, certain) and + storeStepTarget(fieldAddress, indirectionIndex, node2, c) ) or // models-as-data summarized flow @@ -562,6 +593,62 @@ private class SideEffectArgumentNode extends ArgumentNode, SideEffectOperandNode } } +/** + * In order to implement a MaD summary for a flow such as: + * ``` + * struct Foo { + * int x; + * Foo(int x) { // (2) + * this->x = x; + * } + * } + * + * std::vector v; + * int x = source(); + * v.emplace_back(x); // (1) + * sink(v.back()); + * ``` + * we model it as if the code was: + * ``` + * v.__emplace_back(x, &Foo) + * ``` + * (never mind that this is not real C++ since you cannot take the address of a + * constructor.) + * where `__emplace_back` invokes `Foo` with the `x` argument and returns the + * result. + * + * This class serves as the argument node for `&Foo`. + */ +private class ForwarderConstructorArgumentNode extends ArgumentNode, + TForwarderConstructorArgumentNode +{ + private CallInstruction call; + + ForwarderConstructorArgumentNode() { this = TForwarderConstructorArgumentNode(call) } + + override predicate sourceArgumentOf(CallInstruction c, ArgumentPosition pos) { + c = call and pos = TForwardPosition() + } + + /** + * Gets a constructor which may be targeted by this forwarding call. + */ + Cpp::Constructor getAConstructor() { + result = + External::ConstructorForwarding::getForwardingConstructor(call.getStaticCallTarget(), _) + } + + override DataFlowCallable getEnclosingCallable() { + result.asSourceCallable() = this.getFunction() + } + + override Declaration getFunction() { result = call.getEnclosingFunction() } + + override Location getLocationImpl() { result = call.getLocation() } + + override string toStringImpl() { result = "forwarder for " + call.toString() } +} + /** * An argument node that is part of a summary. These only occur when the * summary contains a synthesized call. @@ -641,6 +728,12 @@ abstract class Position extends TPosition { this.getArgumentIndex() = -1 and result = call.getQualifier() } + + /** + * Holds if this position is the synthetic argument for an address of a + * constructor used for functions which perform "perfect forwarding". + */ + predicate isForward() { none() } } class DirectPosition extends Position, TDirectPosition { @@ -690,6 +783,16 @@ class FlowSummaryPosition extends Position, TFlowSummaryPosition { final override int getIndirectionIndex() { result = rk.getIndirectionIndex() } } +class ForwardPosition extends Position, TForwardPosition { + final override predicate isForward() { any() } + + override int getArgumentIndex() { none() } + + final override int getIndirectionIndex() { result = 0 } + + override string toString() { result = "forward" } +} + newtype TPosition = TDirectPosition(int argumentIndex) { exists(any(CallInstruction c).getArgument(argumentIndex)) @@ -706,9 +809,10 @@ newtype TPosition = // the function. exists(Cpp::Function f, Cpp::Parameter p | p = f.getParameter(argumentIndex) and - indirectionIndex = [1 .. Ssa::getMaxIndirectionsForType(p.getUnspecifiedType()) - 1] + indirectionIndex = [1 .. Ssa::getMaxIndirectionsForPRType(p.getUnspecifiedType())] ) } or + TForwardPosition() or TFlowSummaryPosition(ReturnKind rk) { FlowSummaryImpl::Private::relevantFlowSummaryPosition(rk) } private newtype TReturnKind = @@ -724,7 +828,7 @@ private newtype TReturnKind = [0 .. max(Cpp::Function f | not exists(f.getBlock()) | - Ssa::getMaxIndirectionsForType(f.getUnspecifiedType()) - 1 // -1 because a returned value is a prvalue not a glvalue + Ssa::getMaxIndirectionsForPRType(f.getUnspecifiedType()) )] } or TIndirectReturnKind(int argumentIndex, int indirectionIndex) { @@ -739,7 +843,7 @@ private newtype TReturnKind = [0 .. max(Cpp::Function f | not exists(f.getBlock()) | - Ssa::getMaxIndirectionsForType(f.getParameter(argumentIndex).getUnspecifiedType()) - 1 // -1 because an argument is a prvalue not a glvalue + Ssa::getMaxIndirectionsForPRType(f.getParameter(argumentIndex).getUnspecifiedType()) )] } @@ -1227,6 +1331,19 @@ private predicate summarizedCallableIsManual(SummarizedCallable sc) { sc.asSummarizedCallable().hasManualModel() } +private DataFlowCallable getTarget(Declaration target) { + // Don't use the source callable if there is a manual model for the target. + not exists(SummarizedCallable sc | + sc.asSummarizedCallable() = target and + summarizedCallableIsManual(sc) + ) and + result.asSourceCallable() = target + or + // When there is no function body, or when we have a manual model, dispatch to the summary. + (not target.hasDefinition() or summarizedCallableIsManual(result)) and + result.asSummarizedCallable() = target +} + /** * A function call relevant for data flow. This includes calls from source * code and calls inside library callables with a flow summary. @@ -1262,20 +1379,7 @@ class DataFlowCall extends TDataFlowCall { * whether is it manual or generated. */ final DataFlowCallable getStaticCallTarget() { - exists(Declaration target | target = this.getStaticCallSourceTarget() | - // Don't use the source callable if there is a manual model for the - // target - not exists(SummarizedCallable sc | - sc.asSummarizedCallable() = target and - summarizedCallableIsManual(sc) - ) and - result.asSourceCallable() = target - or - // When there is no function body, or when we have a manual model then - // we dispatch to the summary. - (not target.hasDefinition() or summarizedCallableIsManual(result)) and - result.asSummarizedCallable() = target - ) + result = getTarget(this.getStaticCallSourceTarget()) } /** @@ -1462,6 +1566,8 @@ predicate nodeIsHidden(Node n) { n instanceof SsaSynthNode or n.(FlowSummaryNode).getSummaryNode().isHidden() + or + n instanceof ForwarderConstructorArgumentNode } predicate neverSkipInPathGraph(Node n) { @@ -1543,6 +1649,9 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) kind.isFunctionPointer() and creation.asInstruction().(FunctionAddressInstruction).getFunctionSymbol() = c.asSourceCallable() or + kind.isFunctionPointer() and + c = getTarget(creation.(ForwarderConstructorArgumentNode).getAConstructor()) + or kind.isFunctor() and exists(OperatorCall operator | operator = c.asSourceCallable() | isFunctorCreationWithoutConstructor(creation, operator) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImpl.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImpl.qll index 38fbf87a403b..8f17c3c9a136 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImpl.qll @@ -1243,14 +1243,6 @@ private module IntWithParam { } module BarrierGuardWithIntParam::guardChecksNodeSig/5 guardChecksNode> { - private predicate ssaDefReachesCertainUse(Definition def, UseImpl use) { - exists(SourceVariable v, IRBlock bb, int i | - use.hasIndexInBlock(bb, i, v) and - variableRead(bb, i, v, true) and - ssaDefReachesRead(v, def, bb, i) - ) - } - private predicate guardChecksInstr( IRGuards::Guards_v1::Guard g, IRGuards::GuardsInput::Expr instr, IRGuards::GuardValue gv, ParamIntPair

::TPair pair @@ -1279,24 +1271,9 @@ module BarrierGuardWithIntParam::guardChecksNodeSig/ } Node getABarrierNode(int indirectionIndex, P p) { - // Only get the SynthNodes from the shared implementation, as the ExprNodes cannot - // be matched on SourceVariable. - result.(SsaSynthNode).getSynthNode() = + fromDfNode(result) = DataFlowIntegrationImpl::BarrierGuardDefWithState::MkPair, guardChecksWithWrappers/4>::getABarrierNode(ParamIntPair

::MkPair(p, indirectionIndex)) - or - // Calculate the guarded UseImpls corresponding to ExprNodes directly. - exists( - DataFlowIntegrationInput::Guard g, IRGuards::GuardValue branch, Definition def, IRBlock bb - | - exists(UseImpl use | - guardChecksWithWrappers(g, def, branch, ParamIntPair

::MkPair(p, indirectionIndex)) and - ssaDefReachesCertainUse(def, use) and - use.getBlock() = bb and - DataFlowIntegrationInput::guardControlsBlock(g, bb, branch) and - result = use.getNode() - ) - ) } } @@ -1313,13 +1290,12 @@ module BarrierGuard::guardChecksNodeSig/4 guardChecksNo } } -bindingset[result, v] -pragma[inline_late] -private DataFlowIntegrationImpl::Node fromDfNode(Node n, SourceVariable v) { +pragma[nomagic] +private DataFlowIntegrationImpl::Node fromDfNode(Node n) { result = n.(SsaSynthNode).getSynthNode() or - exists(UseImpl use, IRBlock bb, int i | - result.(DataFlowIntegrationImpl::ExprNode).getExpr().hasCfgNode(bb, i) and + exists(UseImpl use, IRBlock bb, int i, SourceVariable v | + result.(DataFlowIntegrationImpl::ReadNode).readsAt(bb, i, v) and use.hasIndexInBlock(bb, i, v) and use.isCertain() and use.getNode() = n @@ -1329,10 +1305,8 @@ private DataFlowIntegrationImpl::Node fromDfNode(Node n, SourceVariable v) { } private predicate ssaFlowImpl(Node nodeFrom, Node nodeTo) { - exists(SourceVariable v | - nodeFrom != nodeTo and - DataFlowIntegrationImpl::localFlowStep(v, fromDfNode(nodeFrom, v), fromDfNode(nodeTo, v), _) - ) + nodeFrom != nodeTo and + DataFlowIntegrationImpl::localFlowStep(_, fromDfNode(nodeFrom), fromDfNode(nodeTo), _) } /** Holds if there is def-use or use-use flow from `nodeFrom` to `nodeTo`. */ diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImplCommon.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImplCommon.qll index 31931189003c..5a56042612a4 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImplCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImplCommon.qll @@ -40,10 +40,21 @@ CppType getLanguageType(Operand operand) { result = getResultLanguageType(operan * - If `type = MyStruct`, the result is 1 * - If `type = char*`, the result is 2 */ -int getMaxIndirectionsForType(Type type) { +int getMaxIndirectionsForGLType(Type type) { result = countIndirectionsForCppType(getTypeForGLValue(type)) } +/** + * Gets the maximum number of indirections a prvalue of type `type` can have. + * For example: + * - If `type = int`, the result is 0 + * - If `type = MyStruct`, the result is 0 + * - If `type = char*`, the result is 1 + */ +int getMaxIndirectionsForPRType(Type type) { + result = countIndirectionsForCppType(getTypeForPRValue(type)) +} + private class PointerOrArrayOrReferenceType extends Cpp::DerivedType { PointerOrArrayOrReferenceType() { this instanceof Cpp::PointerType diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll index b7dcd4d8f754..5205e8d3f0ba 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll @@ -1706,6 +1706,13 @@ class CallInstruction extends Instruction { result.getIndex() = index } + /** + * Gets a positional argument operand, if any. + */ + final PositionalArgumentOperand getAPositionalArgumentOperand() { + result = this.getPositionalArgumentOperand(_) + } + /** * Gets the argument at the specified index. */ @@ -1714,6 +1721,11 @@ class CallInstruction extends Instruction { result = this.getPositionalArgumentOperand(index).getDef() } + /** + * Gets a positional argument, if any. + */ + final Instruction getAPositionalArgument() { result = this.getPositionalArgument(_) } + /** * Gets the argument operand at the specified index, or `this` if `index` is `-1`. */ @@ -1735,6 +1747,13 @@ class CallInstruction extends Instruction { */ final int getNumberOfArguments() { result = count(this.getAnArgumentOperand()) } + /** + * Gets the number of positional arguments of the call. + */ + final int getNumberOfPositionalArguments() { + result = count(this.getAPositionalArgumentOperand()) + } + /** * Holds if the result is a side effect for the argument at the specified index, or `this` if * `index` is `-1`. diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll index 2ace50221313..59ee08973e1a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll @@ -295,6 +295,11 @@ abstract class MemoryLocation0 extends TMemoryLocation { */ abstract class VirtualVariable extends MemoryLocation0 { } +pragma[nomagic] +private VirtualVariable getAllocationMemoryLocation(Allocation alloc) { + result.getAnAllocation() = alloc +} + abstract class AllocationMemoryLocation extends MemoryLocation0 { Allocation var; boolean isMayAccess; @@ -313,7 +318,7 @@ abstract class AllocationMemoryLocation extends MemoryLocation0 { result = getGroupedMemoryLocation(var, false, false).getVirtualVariable() or not exists(getGroupedMemoryLocation(var, false, false)) and - result.(AllocationMemoryLocation).getAnAllocation() = var + result = getAllocationMemoryLocation(var) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll index b7dcd4d8f754..5205e8d3f0ba 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll @@ -1706,6 +1706,13 @@ class CallInstruction extends Instruction { result.getIndex() = index } + /** + * Gets a positional argument operand, if any. + */ + final PositionalArgumentOperand getAPositionalArgumentOperand() { + result = this.getPositionalArgumentOperand(_) + } + /** * Gets the argument at the specified index. */ @@ -1714,6 +1721,11 @@ class CallInstruction extends Instruction { result = this.getPositionalArgumentOperand(index).getDef() } + /** + * Gets a positional argument, if any. + */ + final Instruction getAPositionalArgument() { result = this.getPositionalArgument(_) } + /** * Gets the argument operand at the specified index, or `this` if `index` is `-1`. */ @@ -1735,6 +1747,13 @@ class CallInstruction extends Instruction { */ final int getNumberOfArguments() { result = count(this.getAnArgumentOperand()) } + /** + * Gets the number of positional arguments of the call. + */ + final int getNumberOfPositionalArguments() { + result = count(this.getAPositionalArgumentOperand()) + } + /** * Holds if the result is a side effect for the argument at the specified index, or `this` if * `index` is `-1`. diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index 58456476f6a2..8103f64a5144 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -303,7 +303,7 @@ private predicate isInConditionalEvaluation(Expr e) { isInConditionalEvaluation(getRealParent(e)) } -private predicate isConditionalTemporaryDestructorCall(DestructorCall dc) { +predicate isConditionalTemporaryDestructorCall(DestructorCall dc) { exists(TemporaryObjectExpr temp | temp = dc.getQualifier().(ReuseExpr).getReusedExpr() and isInConditionalEvaluation(temp) @@ -430,14 +430,18 @@ private predicate mustTransformToGLValue(Expr expr) { } /** - * Holds if `expr` has an lvalue-to-rvalue conversion that should be ignored - * when generating IR. This occurs for conversion from an lvalue of function type - * to an rvalue of function pointer type. The conversion is represented in the - * AST as an lvalue-to-rvalue conversion, but the IR represents both a function + * Holds if `expr` has an explicit or implicit load that should be ignored + * when generating IR. For example, this occurs for conversion from an lvalue of + * function type to an rvalue of function pointer type. The conversion is represented + * in the AST as an lvalue-to-rvalue conversion, but the IR represents both a function * lvalue and a function pointer prvalue the same. */ predicate ignoreLoad(Expr expr) { - expr.hasLValueToRValueConversion() and + ( + expr.hasLValueToRValueConversion() + or + isPRValueFieldAccessWithImplicitLoad(expr) + ) and ( expr instanceof ThisExpr or @@ -517,8 +521,11 @@ predicate hasTranslatedLoad(Expr expr) { predicate hasTranslatedSyntheticTemporaryObject(Expr expr) { not ignoreExpr(expr) and mustTransformToGLValue(expr) and - // If it's a load, we'll just ignore the load in `ignoreLoad()`. - not expr.hasLValueToRValueConversion() + // If it's an explicit or implicit field load, reuse the existing address by + // ignoring the load in `ignoreLoad` instead of materializing another + // temporary. + not expr.hasLValueToRValueConversion() and + not isPRValueFieldAccessWithImplicitLoad(expr) } Opcode comparisonOpcode(ComparisonOperation expr) { 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 9a437b905381..5605e4857f7b 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 @@ -107,7 +107,12 @@ abstract class TranslatedExpr extends TranslatedElement { } final private TranslatedExpr getImplicitDestructorCall(int index) { - result.getExpr() = expr.getImplicitDestructorCall(index) + result.getExpr() = + rank[index + 1](DestructorCall dc, int i | + dc = expr.getImplicitDestructorCall(i) and not isConditionalTemporaryDestructorCall(dc) + | + dc order by i + ) } final override predicate hasAnImplicitDestructorCall() { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll index 10c033131225..c24cb98d2bd9 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll @@ -618,6 +618,11 @@ class TranslatedExplicitFieldInitialization extends TranslatedNonDefaultFieldIni override int getPosition() { result = position } } +pragma[nomagic] +private Instruction getCallInstruction(TranslatedDefaultFieldInitialization tdfi) { + result = tdfi.getInstruction(CallTag()) +} + /** * The IR translation of the initialization of a field from an element of an initializer * list where default initialization is used. @@ -642,7 +647,7 @@ class TranslatedDefaultFieldInitialization extends TranslatedFieldInitialization override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { tag = CallTargetTag() and - result = this.getInstruction(CallTag()) + result = getCallInstruction(this) or tag = CallTag() and result = this.getSideEffects().getFirstInstruction(kind) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll index 7dfebc56fe18..9ffa132c7eab 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll @@ -297,11 +297,20 @@ abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { abstract TranslatedElement getChildInternal(int id); + DestructorCall getImplicitDestructorCall(int index) { + result = + rank[index + 1](DestructorCall dc, int i | + dc = stmt.getImplicitDestructorCall(i) and not isConditionalTemporaryDestructorCall(dc) + | + dc order by i + ) + } + final override TranslatedElement getChild(int id) { result = this.getChildInternal(id) or exists(int destructorIndex | - result.(TranslatedExpr).getExpr() = stmt.getImplicitDestructorCall(destructorIndex) and + result.(TranslatedExpr).getExpr() = this.getImplicitDestructorCall(destructorIndex) and id = this.getFirstDestructorCallIndex() + destructorIndex ) } @@ -313,7 +322,7 @@ abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { } final override predicate hasAnImplicitDestructorCall() { - exists(stmt.getAnImplicitDestructorCall()) + exists(this.getImplicitDestructorCall(_)) } final override string toString() { result = stmt.toString() } @@ -1227,7 +1236,7 @@ class TranslatedWhileStmt extends TranslatedLoop { id = 1 and result = this.getBody() or exists(int n | - result.getAst() = stmt.getImplicitDestructorCall(n) and + result.getAst() = this.getImplicitDestructorCall(n) and id = 2 + n ) } @@ -1289,7 +1298,7 @@ class TranslatedForStmt extends TranslatedLoop { id = 3 and result = this.getBody() or exists(int n | - result.getAst() = stmt.getImplicitDestructorCall(n) and + result.getAst() = this.getImplicitDestructorCall(n) and id = 4 + n ) } @@ -1492,13 +1501,13 @@ class TranslatedJumpStmt extends TranslatedStmt { } private TranslatedCall getTranslatedImplicitDestructorCall(int id) { - result.getExpr() = stmt.getImplicitDestructorCall(id) + result.getExpr() = this.getImplicitDestructorCall(id) } override TranslatedElement getLastChild() { result = this.getTranslatedImplicitDestructorCall(max(int id | - exists(stmt.getImplicitDestructorCall(id)) + exists(this.getImplicitDestructorCall(id)) )) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll index b7dcd4d8f754..5205e8d3f0ba 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll @@ -1706,6 +1706,13 @@ class CallInstruction extends Instruction { result.getIndex() = index } + /** + * Gets a positional argument operand, if any. + */ + final PositionalArgumentOperand getAPositionalArgumentOperand() { + result = this.getPositionalArgumentOperand(_) + } + /** * Gets the argument at the specified index. */ @@ -1714,6 +1721,11 @@ class CallInstruction extends Instruction { result = this.getPositionalArgumentOperand(index).getDef() } + /** + * Gets a positional argument, if any. + */ + final Instruction getAPositionalArgument() { result = this.getPositionalArgument(_) } + /** * Gets the argument operand at the specified index, or `this` if `index` is `-1`. */ @@ -1735,6 +1747,13 @@ class CallInstruction extends Instruction { */ final int getNumberOfArguments() { result = count(this.getAnArgumentOperand()) } + /** + * Gets the number of positional arguments of the call. + */ + final int getNumberOfPositionalArguments() { + result = count(this.getAPositionalArgumentOperand()) + } + /** * Holds if the result is a side effect for the argument at the specified index, or `this` if * `index` is `-1`. diff --git a/cpp/ql/lib/semmle/code/cpp/regex/RegexTreeView.qll b/cpp/ql/lib/semmle/code/cpp/regex/RegexTreeView.qll new file mode 100644 index 000000000000..4d7176c14b75 --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/regex/RegexTreeView.qll @@ -0,0 +1,1254 @@ +/** + * Provides a class hierarchy corresponding to a parse tree of C++ regular expressions. + */ + +private import internal.ParseRegExp +private import codeql.util.Numbers +private import semmle.code.cpp.exprs.Literal +private import codeql.regex.RegexTreeView +// exporting as RegexTreeView, and in the top-level scope. +import Impl as RegexTreeView +import Impl + +/** Gets the parse tree resulting from parsing `re`, if such has been constructed. */ +RegExpTerm getParsedRegExp(StringLiteral re) { result.getRegExp() = re and result.isRootTerm() } + +/** + * An element containing a regular expression term, that is, either + * a string literal (parsed as a regular expression) + * or another regular expression term. + * + * For sequences and alternations, we require at least one child. + * Otherwise, we wish to represent the term differently. + * This avoids multiple representations of the same term. + */ +private newtype TRegExpParent = + /** A string literal used as a regular expression */ + TRegExpLiteral(RegExp re) or + /** A quantified term */ + TRegExpQuantifier(RegExp re, int start, int end) { re.qualifiedItem(start, end, _, _) } or + /** A sequence term */ + TRegExpSequence(RegExp re, int start, int end) { re.sequence(start, end) } or + /** An alternation term */ + TRegExpAlt(RegExp re, int start, int end) { re.alternation(start, end) } or + /** A character class term */ + TRegExpCharacterClass(RegExp re, int start, int end) { re.charSet(start, end) } or + /** A character range term */ + TRegExpCharacterRange(RegExp re, int start, int end) { re.charRange(_, start, _, _, end) } or + /** A group term */ + TRegExpGroup(RegExp re, int start, int end) { re.group(start, end) } or + /** A special character */ + TRegExpSpecialChar(RegExp re, int start, int end) { re.specialCharacter(start, end, _) } or + /** A normal character */ + TRegExpNormalChars(RegExp re, int start, int end) { + re.normalCharacterSequence(start, end) + or + re.escapedCharacter(start, end) and + not re.specialCharacter(start, end, _) + } or + /** A back reference */ + TRegExpBackRef(RegExp re, int start, int end) { re.backreference(start, end) } or + /** A named character property */ + TRegExpNamedCharacterProperty(RegExp re, int start, int end) { + re.namedCharacterProperty(start, end, _, _) + } + +/** An implementation that satisfies the RegexTreeView signature. */ +private module Impl implements RegexTreeViewSig { + /** + * An element containing a regular expression term, that is, either + * a string literal (parsed as a regular expression) + * or another regular expression term. + */ + class RegExpParent extends TRegExpParent { + /** Gets a textual representation of this element. */ + string toString() { result = "RegExpParent" } + + /** Gets the `i`th child term. */ + RegExpTerm getChild(int i) { none() } + + /** Gets a child term . */ + final RegExpTerm getAChild() { result = this.getChild(_) } + + /** Gets the number of child terms. */ + int getNumChild() { result = count(this.getAChild()) } + + /** Gets the last child term of this element. */ + RegExpTerm getLastChild() { result = this.getChild(this.getNumChild() - 1) } + + /** + * Gets the name of a primary CodeQL class to which this regular + * expression term belongs. + */ + string getAPrimaryQlClass() { result = "RegExpParent" } + + /** + * Gets a comma-separated list of the names of the primary CodeQL classes to + * which this regular expression term belongs. + */ + final string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } + } + + /** A string literal used as a regular expression */ + class RegExpLiteral extends TRegExpLiteral, RegExpParent { + RegExp re; + + RegExpLiteral() { this = TRegExpLiteral(re) } + + override RegExpTerm getChild(int i) { + i = 0 and result.getRegExp() = re and result.isRootTerm() + } + + /** Holds if dot, `.`, matches all characters, including newlines. */ + predicate isDotAll() { re.isDotAll() } + + /** Holds if this regex matching is case-insensitive for this regex. */ + predicate isIgnoreCase() { re.isIgnoreCase() } + + /** Get a string representing all modes for this regex. */ + string getFlags() { result = re.getFlags() } + + /** Gets the primary QL class for this regex. */ + override string getAPrimaryQlClass() { result = "RegExpLiteral" } + } + + /** + * A regular expression term, that is, a syntactic part of a regular expression. + */ + class RegExpTerm extends RegExpParent { + RegExp re; + int start; + int end; + + RegExpTerm() { + this = TRegExpAlt(re, start, end) + or + this = TRegExpBackRef(re, start, end) + or + this = TRegExpCharacterClass(re, start, end) + or + this = TRegExpCharacterRange(re, start, end) + or + this = TRegExpNormalChars(re, start, end) + or + this = TRegExpGroup(re, start, end) + or + this = TRegExpQuantifier(re, start, end) + or + this = TRegExpSequence(re, start, end) and + exists(seqChild(re, start, end, 1)) // if a sequence does not have more than one element, it should be treated as that element instead. + or + this = TRegExpSpecialChar(re, start, end) + or + this = TRegExpNamedCharacterProperty(re, start, end) + } + + /** + * Gets the outermost term of this regular expression. + */ + RegExpTerm getRootTerm() { + this.isRootTerm() and result = this + or + result = this.getParent().(RegExpTerm).getRootTerm() + } + + /** + * Holds if this term is part of a string literal + * that is interpreted as a regular expression. + */ + predicate isUsedAsRegExp() { any() } + + /** + * Holds if this is the root term of a regular expression. + */ + predicate isRootTerm() { start = 0 and end = re.getText().length() } + + override RegExpTerm getChild(int i) { + result = this.(RegExpAlt).getChild(i) + or + result = this.(RegExpBackRef).getChild(i) + or + result = this.(RegExpCharacterClass).getChild(i) + or + result = this.(RegExpCharacterRange).getChild(i) + or + result = this.(RegExpNormalChars).getChild(i) + or + result = this.(RegExpGroup).getChild(i) + or + result = this.(RegExpQuantifier).getChild(i) + or + result = this.(RegExpSequence).getChild(i) + or + result = this.(RegExpSpecialChar).getChild(i) + or + result = this.(RegExpNamedCharacterProperty).getChild(i) + } + + /** + * Gets the parent term of this regular expression term, or the + * regular expression literal if this is the root term. + */ + RegExpParent getParent() { result.getAChild() = this } + + /** Gets the associated `RegExp`. */ + RegExp getRegExp() { result = re } + + /** Gets the offset at which this term starts. */ + int getStart() { result = start } + + /** Gets the offset at which this term ends. */ + int getEnd() { result = end } + + override string toString() { result = re.getText().substring(start, end) } + + /** + * Gets the location of the surrounding regex, as locations inside the regex do not exist. + * To get location information corresponding to the term inside the regex, + * use `hasLocationInfo`. + */ + Location getLocation() { result = re.getLocation() } + + /** + * Gets the number of source characters from the start of the string literal + * to the first content character (i.e., past the opening delimiter). + */ + private int regexpContentOffset() { + exists(string vt | vt = re.getValueText() | + // Find the '(' that opens the raw content. + re instanceof RawStringLiteral and + result = 1 + min(int i | vt.charAt(i) = "(") + or + // Find the opening '"'. + not re instanceof RawStringLiteral and + result = 1 + min(int i | vt.charAt(i) = "\"") + or + // No opening '"'. + not re instanceof RawStringLiteral and + not vt.charAt(_) = "\"" and + result = 0 + ) + } + + /** + * Holds if this term is found at the specified location offsets. + * + * Note: these locations may not be accurate when the regex was not defined as a raw string + * and contains `\`-escaped characters, or when macros were used to define the regex. + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + exists(int re_start, int offset | + re.getLocation().hasLocationInfo(filepath, startline, re_start, endline, _) and + offset = this.regexpContentOffset() and + startcolumn = re_start + offset + start and + endcolumn = re_start + offset + end - 1 + ) + } + + /** Gets the file in which this term is found. */ + File getFile() { result = this.getLocation().getFile() } + + /** Gets the raw source text of this term. */ + string getRawValue() { result = this.toString() } + + /** Gets the string literal in which this term is found. */ + RegExpLiteral getLiteral() { result = TRegExpLiteral(re) } + + /** Gets the regular expression term that is matched (textually) before this one, if any. */ + RegExpTerm getPredecessor() { + exists(RegExpTerm parent | parent = this.getParent() | + result = parent.(RegExpSequence).previousElement(this) + or + not exists(parent.(RegExpSequence).previousElement(this)) and + not parent instanceof RegExpSubPattern and + result = parent.getPredecessor() + ) + } + + /** Gets the regular expression term that is matched (textually) after this one, if any. */ + RegExpTerm getSuccessor() { + exists(RegExpTerm parent | parent = this.getParent() | + result = parent.(RegExpSequence).nextElement(this) + or + not exists(parent.(RegExpSequence).nextElement(this)) and + not parent instanceof RegExpSubPattern and + result = parent.getSuccessor() + ) + } + + /** + * Gets the single string this regular-expression term matches. + * + * This predicate is only defined for (sequences/groups of) constant regular + * expressions. In particular, terms involving zero-width assertions like `^` + * or `\b` are not considered to have a constant value. + * + * Note that this predicate does not take flags of the enclosing + * regular-expression literal into account. + */ + string getConstantValue() { none() } + + /** + * Gets a string that is matched by this regular-expression term. + */ + string getAMatchedString() { result = this.getConstantValue() } + + /** Gets the primary QL class for this term. */ + override string getAPrimaryQlClass() { result = "RegExpTerm" } + + /** Holds if this regular expression term can match the empty string. */ + predicate isNullable() { none() } + } + + /** + * A quantified regular expression term. + * + * Example: + * + * ``` + * ((ECMA|Java)[sS]cript)* + * ``` + */ + class RegExpQuantifier extends RegExpTerm, TRegExpQuantifier { + int part_end; + boolean may_repeat_forever; + + RegExpQuantifier() { + this = TRegExpQuantifier(re, start, end) and + re.qualifiedPart(start, part_end, end, _, may_repeat_forever) + } + + override RegExpTerm getChild(int i) { + i = 0 and + result.getRegExp() = re and + result.getStart() = start and + result.getEnd() = part_end + } + + /** Holds if this term may match an unlimited number of times. */ + predicate mayRepeatForever() { may_repeat_forever = true } + + /** Gets the qualifier for this term. That is e.g "?" for "a?". */ + string getQualifier() { result = re.getText().substring(part_end, end) } + + override string getAPrimaryQlClass() { result = "RegExpQuantifier" } + } + + /** + * A regular expression term that permits unlimited repetitions. + */ + class InfiniteRepetitionQuantifier extends RegExpQuantifier { + InfiniteRepetitionQuantifier() { this.mayRepeatForever() } + + override string getAPrimaryQlClass() { result = "InfiniteRepetitionQuantifier" } + } + + /** + * A star-quantified term. + * + * Example: + * + * ``` + * \w* + * ``` + */ + class RegExpStar extends InfiniteRepetitionQuantifier { + RegExpStar() { this.getQualifier().charAt(0) = "*" } + + override string getAPrimaryQlClass() { result = "RegExpStar" } + + override predicate isNullable() { any() } + } + + /** + * A plus-quantified term. + * + * Example: + * + * ``` + * \w+ + * ``` + */ + class RegExpPlus extends InfiniteRepetitionQuantifier { + RegExpPlus() { this.getQualifier().charAt(0) = "+" } + + override string getAPrimaryQlClass() { result = "RegExpPlus" } + + override predicate isNullable() { this.getAChild().isNullable() } + } + + /** + * An optional term. + * + * Example: + * + * ``` + * ;? + * ``` + */ + class RegExpOpt extends RegExpQuantifier { + RegExpOpt() { this.getQualifier().charAt(0) = "?" } + + override string getAPrimaryQlClass() { result = "RegExpOpt" } + + override predicate isNullable() { any() } + } + + /** + * A range-quantified term + * + * Examples: + * + * ``` + * \w{2,4} + * \w{2,} + * \w{2} + * ``` + */ + class RegExpRange extends RegExpQuantifier { + string upper; + string lower; + + RegExpRange() { re.multiples(part_end, end, lower, upper) } + + override string getAPrimaryQlClass() { result = "RegExpRange" } + + /** Gets the string defining the upper bound of this range, if any. */ + string getUpper() { result = upper } + + /** Gets the string defining the lower bound of this range, if any. */ + string getLower() { result = lower } + + /** + * Gets the upper bound of the range, if any. + * + * If there is no upper bound, any number of repetitions is allowed. + * For a term of the form `r{lo}`, both the lower and the upper bound + * are `lo`. + */ + int getUpperBound() { result = this.getUpper().toInt() } + + /** Gets the lower bound of the range. */ + int getLowerBound() { result = this.getLower().toInt() } + + override predicate isNullable() { this.getAChild().isNullable() or this.getLowerBound() = 0 } + } + + /** + * A sequence term. + * + * Example: + * + * ``` + * (ECMA|Java)Script + * ``` + * + * This is a sequence with the elements `(ECMA|Java)` and `Script`. + */ + class RegExpSequence extends RegExpTerm, TRegExpSequence { + RegExpSequence() { + this = TRegExpSequence(re, start, end) and + exists(seqChild(re, start, end, 1)) // if a sequence does not have more than one element, it should be treated as that element instead. + } + + override RegExpTerm getChild(int i) { result = seqChild(re, start, end, i) } + + /** Gets the element preceding `element` in this sequence. */ + RegExpTerm previousElement(RegExpTerm element) { element = this.nextElement(result) } + + /** Gets the element following `element` in this sequence. */ + RegExpTerm nextElement(RegExpTerm element) { + exists(int i | + element = this.getChild(i) and + result = this.getChild(i + 1) + ) + } + + override string getConstantValue() { result = this.getConstantValue(0) } + + /** + * Gets the single string matched by the `i`th child and all following + * children of this sequence, if any. + */ + private string getConstantValue(int i) { + i = this.getNumChild() and + result = "" + or + result = this.getChild(i).getConstantValue() + this.getConstantValue(i + 1) + } + + override string getAPrimaryQlClass() { result = "RegExpSequence" } + + override predicate isNullable() { + forall(RegExpTerm child | child = this.getAChild() | child.isNullable()) + } + } + + pragma[nomagic] + private int seqChildEnd(RegExp re, int start, int end, int i) { + result = seqChild(re, start, end, i).getEnd() + } + + // moved out so we can use it in the charpred + private RegExpTerm seqChild(RegExp re, int start, int end, int i) { + re.sequence(start, end) and + ( + i = 0 and + result.getRegExp() = re and + result.getStart() = start and + exists(int itemEnd | + re.item(start, itemEnd) and + result.getEnd() = itemEnd + ) + or + i > 0 and + result.getRegExp() = re and + exists(int itemStart | itemStart = seqChildEnd(re, start, end, i - 1) | + result.getStart() = itemStart and + re.item(itemStart, result.getEnd()) + ) + ) + } + + /** + * An alternative term, that is, a term of the form `a|b`. + * + * Example: + * + * ``` + * ECMA|Java + * ``` + */ + class RegExpAlt extends RegExpTerm, TRegExpAlt { + RegExpAlt() { this = TRegExpAlt(re, start, end) } + + override RegExpTerm getChild(int i) { + i = 0 and + result.getRegExp() = re and + result.getStart() = start and + exists(int part_end | + re.alternationOption(start, end, start, part_end) and + result.getEnd() = part_end + ) + or + i > 0 and + result.getRegExp() = re and + exists(int part_start | + part_start = this.getChild(i - 1).getEnd() + 1 // allow for the | + | + result.getStart() = part_start and + re.alternationOption(start, end, part_start, result.getEnd()) + ) + } + + /** Gets an alternative of this term. */ + RegExpTerm getAlternative() { result = this.getAChild() } + + override string getAMatchedString() { result = this.getAlternative().getAMatchedString() } + + override string getAPrimaryQlClass() { result = "RegExpAlt" } + + override predicate isNullable() { this.getAChild().isNullable() } + } + + /** + * A character escape in a regular expression. + * + * Example: + * + * ``` + * \. + * ``` + */ + class RegExpCharEscape = RegExpEscape; + + /** + * An escaped regular expression term, that is, a regular expression + * term starting with a backslash, which is not a backreference. + * + * Example: + * + * ``` + * \. + * \w + * ``` + */ + class RegExpEscape extends RegExpNormalChars { + RegExpEscape() { re.escapedCharacter(start, end) } + + /** + * Gets the name of the escaped; for example, `w` for `\w`. + * TODO: Handle named escapes. + */ + override string getValue() { + this.isIdentityEscape() and + result = this.getUnescaped() + or + this.getUnescaped() = "n" and result = "\n" + or + this.getUnescaped() = "r" and result = "\r" + or + this.getUnescaped() = "t" and result = "\t" + or + this.getUnescaped() = "f" and result = 12.toUnicode() + or + this.getUnescaped() = "v" and result = 11.toUnicode() + or + this.getUnescaped() = "0" and result = 0.toUnicode() + or + this.isUnicode() and + result = this.getUnicode() + or + this.isHex() and + result = this.getHex() + or + this.isControl() and + result = this.getControl() + } + + /** Holds if this terms name is given by the part following the escape character. */ + predicate isIdentityEscape() { + not this.getUnescaped() in ["n", "r", "t", "f", "v", "0"] and + not this.isUnicode() and + not this.isHex() and + not this.isControl() + } + + override string getAPrimaryQlClass() { result = "RegExpEscape" } + + /** Gets the part of the term following the escape character. That is e.g. "w" if the term is "\w". */ + string getUnescaped() { result = this.getText().suffix(1) } + + /** + * Gets the text for this escape. That is e.g. "\w". + */ + private string getText() { result = re.getText().substring(start, end) } + + /** + * Holds if this is a unicode escape. + */ + private predicate isUnicode() { this.getText().matches("\\u%") } + + /** + * Gets the unicode char for this escape. + * E.g. for `\u0061` this returns "a". + */ + private string getUnicode() { + this.isUnicode() and + result = parseHexInt(this.getText().suffix(2)).toUnicode() + } + + /** + * Holds if this is a hex escape. + */ + private predicate isHex() { this.getText().matches("\\x%") } + + /** + * Gets the unicode char for this escape. + * E.g. for `\x61` this returns "a". + */ + private string getHex() { + this.isHex() and + result = parseHexInt(this.getText().suffix(2)).toUnicode() + } + + /** + * Holds if this is a `\cX` escape. + */ + private predicate isControl() { this.getText().matches("\\c%") } + + /** + * Gets the unicode char for this escape. + * E.g. for `\cA` this returns `0x01`. + */ + private string getControl() { + this.isControl() and + exists(string letter | letter = this.getText().suffix(2).toUpperCase() | + result = ("ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(letter) + 1).toUnicode() + ) + } + } + + /** + * A word boundary, that is, a regular expression term of the form `\b`. + */ + class RegExpWordBoundary extends RegExpSpecialChar { + RegExpWordBoundary() { this.getChar() = "\\b" } + + override predicate isNullable() { none() } + } + + /** + * A non-word boundary, that is, a regular expression term of the form `\B`. + */ + class RegExpNonWordBoundary extends RegExpSpecialChar { + RegExpNonWordBoundary() { this.getChar() = "\\B" } + + override string getAPrimaryQlClass() { result = "RegExpNonWordBoundary" } + } + + /** + * A character class escape in a regular expression. + * That is, an escaped character that denotes multiple characters. + * + * Examples: + * + * ``` + * \w + * \S + * ``` + */ + class RegExpCharacterClassEscape extends RegExpEscape { + RegExpCharacterClassEscape() { this.getValue() in ["d", "D", "s", "S", "w", "W"] } + + override RegExpTerm getChild(int i) { none() } + + override string getAPrimaryQlClass() { result = "RegExpCharacterClassEscape" } + + override predicate isNullable() { none() } + } + + /** + * A character class in a regular expression. + * + * Examples: + * + * ```cpp + * "[a-fA-F0-9]" + * "[^abc]" + * ``` + */ + class RegExpCharacterClass extends RegExpTerm, TRegExpCharacterClass { + RegExpCharacterClass() { this = TRegExpCharacterClass(re, start, end) } + + /** Holds if this character class is inverted, matching the opposite of its content. */ + predicate isInverted() { re.getChar(start + 1) = "^" } + + /** Holds if this character class can match anything. */ + predicate isUniversalClass() { + // [^] + this.isInverted() and not exists(this.getAChild()) + or + // [\w\W] and similar + not this.isInverted() and + exists(string cce1, string cce2 | + cce1 = this.getAChild().(RegExpCharacterClassEscape).getValue() and + cce2 = this.getAChild().(RegExpCharacterClassEscape).getValue() + | + cce1 != cce2 and cce1.toLowerCase() = cce2.toLowerCase() + ) + } + + override RegExpTerm getChild(int i) { + i = 0 and + result.getRegExp() = re and + exists(int itemStart, int itemEnd | + result.getStart() = itemStart and + re.charSetStart(start, itemStart) and + re.charSetChild(start, itemStart, itemEnd) and + result.getEnd() = itemEnd + ) + or + i > 0 and + result.getRegExp() = re and + exists(int itemStart | itemStart = this.getChild(i - 1).getEnd() | + result.getStart() = itemStart and + re.charSetChild(start, itemStart, result.getEnd()) + ) + } + + override string getAMatchedString() { + not this.isInverted() and result = this.getAChild().getAMatchedString() + } + + override string getAPrimaryQlClass() { result = "RegExpCharacterClass" } + + override predicate isNullable() { none() } + } + + /** + * A character range in a character class in a regular expression. + * + * Example: + * + * ``` + * a-z + * ``` + */ + class RegExpCharacterRange extends RegExpTerm, TRegExpCharacterRange { + int lower_end; + int upper_start; + + RegExpCharacterRange() { + this = TRegExpCharacterRange(re, start, end) and + re.charRange(_, start, lower_end, upper_start, end) + } + + /** Holds if this range goes from `lo` to `hi`, in effect is `lo-hi`. */ + predicate isRange(string lo, string hi) { + lo = re.getText().substring(start, lower_end) and + hi = re.getText().substring(upper_start, end) + } + + override RegExpTerm getChild(int i) { + i = 0 and + result.getRegExp() = re and + result.getStart() = start and + result.getEnd() = lower_end + or + i = 1 and + result.getRegExp() = re and + result.getStart() = upper_start and + result.getEnd() = end + } + + override string getAPrimaryQlClass() { result = "RegExpCharacterRange" } + + override predicate isNullable() { none() } + } + + /** + * A normal-character term in a regular expression, that is, a sequence + * of characters without special meaning or a single escaped character. + * + * Examples: + * ``` + * abc + * \t + * ``` + */ + additional class RegExpNormalChars extends RegExpTerm, TRegExpNormalChars { + RegExpNormalChars() { this = TRegExpNormalChars(re, start, end) } + + /** + * Holds if this constant consists of a valid Unicode character (as opposed + * to a surrogate code point that does not correspond to a character by itself.) + */ + predicate isCharacter() { any() } + + /** Gets the string representation of this term. */ + string getValue() { result = re.getText().substring(start, end) } + + override RegExpTerm getChild(int i) { none() } + + override string getAPrimaryQlClass() { result = "RegExpNormalChars" } + } + + /** + * A constant regular expression term, that is, a regular expression + * term matching a single string. Currently, this will always be a single character. + * + * Example: + * + * ``` + * a + * ``` + */ + class RegExpConstant extends RegExpTerm { + string value; + + RegExpConstant() { + this = TRegExpNormalChars(re, start, end) and + not this instanceof RegExpCharacterClassEscape and + // exclude chars in qualifiers + // TODO: push this into regex library + not exists(int qstart, int qend | re.qualifiedPart(_, qstart, qend, _, _) | + qstart <= start and end <= qend + ) and + value = this.(RegExpNormalChars).getValue() + or + this = TRegExpSpecialChar(re, start, end) and + re.inCharSet(start) and + value = this.(RegExpSpecialChar).getChar() + } + + /** + * Holds if this constant represents a valid Unicode character (as opposed + * to a surrogate code point that does not correspond to a character by itself.) + */ + predicate isCharacter() { any() } + + /** Gets the string matched by this constant term. */ + string getValue() { result = value } + + override RegExpTerm getChild(int i) { none() } + + override string getConstantValue() { result = this.getValue() } + + override string getAPrimaryQlClass() { result = "RegExpConstant" } + + override predicate isNullable() { none() } + } + + /** + * A grouped regular expression. + * + * Examples: + * + * ``` + * (ECMA|Java) + * (?:ECMA|Java) + * (?['"]) + * ``` + */ + class RegExpGroup extends RegExpTerm, TRegExpGroup { + RegExpGroup() { this = TRegExpGroup(re, start, end) } + + /** + * Gets the index of this capture group within the enclosing regular + * expression literal. + * + * For example, in the regular expression `/((a?).)(?:b)/`, the + * group `((a?).)` has index 1, the group `(a?)` nested inside it + * has index 2, and the group `(?:b)` has no index, since it is + * not a capture group. + */ + int getNumber() { result = re.getGroupNumber(start, end) } + + /** Holds if this is a capture group. */ + predicate isCapture() { exists(this.getNumber()) } + + override RegExpTerm getChild(int i) { + result.getRegExp() = re and + i = 0 and + re.groupContents(start, end, result.getStart(), result.getEnd()) + } + + override string getConstantValue() { result = this.getAChild().getConstantValue() } + + override string getAMatchedString() { result = this.getAChild().getAMatchedString() } + + override string getAPrimaryQlClass() { result = "RegExpGroup" } + + override predicate isNullable() { this.getAChild().isNullable() } + } + + /** + * A special character in a regular expression. + * + * Examples: + * ``` + * ^ + * $ + * . + * ``` + */ + additional class RegExpSpecialChar extends RegExpTerm, TRegExpSpecialChar { + string char; + + RegExpSpecialChar() { + this = TRegExpSpecialChar(re, start, end) and + re.specialCharacter(start, end, char) + } + + /** + * Holds if this constant represents a valid Unicode character (as opposed + * to a surrogate code point that does not correspond to a character by itself.) + */ + predicate isCharacter() { any() } + + /** Gets the char for this term. */ + string getChar() { result = char } + + override RegExpTerm getChild(int i) { none() } + + override string getAPrimaryQlClass() { result = "RegExpSpecialChar" } + } + + /** + * A dot regular expression. + * + * Example: + * + * ``` + * . + * ``` + */ + class RegExpDot extends RegExpSpecialChar { + RegExpDot() { this.getChar() = "." } + + override string getAPrimaryQlClass() { result = "RegExpDot" } + + override predicate isNullable() { none() } + } + + /** + * A term that matches a specific position between characters in the string. + * + * Example: + * + * ``` + * ^ + * ``` + */ + class RegExpAnchor extends RegExpSpecialChar { + RegExpAnchor() { this.getChar() = ["^", "$"] } + + override string getAPrimaryQlClass() { result = "RegExpAnchor" } + } + + /** + * A dollar assertion `$` matching the end of a line. + * + * Example: + * + * ``` + * $ + * ``` + */ + class RegExpDollar extends RegExpAnchor { + RegExpDollar() { this.getChar() = "$" } + + override string getAPrimaryQlClass() { result = "RegExpDollar" } + + override predicate isNullable() { any() } + } + + /** + * A caret assertion `^` matching the beginning of a line. + * + * Example: + * + * ``` + * ^ + * ``` + */ + class RegExpCaret extends RegExpAnchor { + RegExpCaret() { this.getChar() = "^" } + + override string getAPrimaryQlClass() { result = "RegExpCaret" } + + override predicate isNullable() { any() } + } + + /** + * A zero-width match, that is, either an empty group or an assertion. + * + * Examples: + * ``` + * () + * (?=\w) + * ``` + */ + additional class RegExpZeroWidthMatch extends RegExpGroup { + RegExpZeroWidthMatch() { re.zeroWidthMatch(start, end) } + + override RegExpTerm getChild(int i) { none() } + + override string getAPrimaryQlClass() { result = "RegExpZeroWidthMatch" } + + override predicate isNullable() { any() } + } + + /** + * A zero-width lookahead assertion. + * + * Examples: + * + * ``` + * (?=\w) + * (?!\n) + * ``` + */ + class RegExpSubPattern extends RegExpZeroWidthMatch { + RegExpSubPattern() { not re.emptyGroup(start, end) } + + /** Gets the lookahead term. */ + RegExpTerm getOperand() { + exists(int in_start, int in_end | re.groupContents(start, end, in_start, in_end) | + result.getRegExp() = re and + result.getStart() = in_start and + result.getEnd() = in_end + ) + } + + override predicate isNullable() { any() } + } + + /** + * A zero-width lookahead assertion. + * + * Examples: + * + * ``` + * (?=\w) + * (?!\n) + * ``` + */ + abstract class RegExpLookahead extends RegExpSubPattern { } + + /** + * A positive-lookahead assertion. + * + * Examples: + * + * ``` + * (?=\w) + * ``` + */ + class RegExpPositiveLookahead extends RegExpLookahead { + RegExpPositiveLookahead() { re.positiveLookaheadAssertionGroup(start, end) } + + override string getAPrimaryQlClass() { result = "RegExpPositiveLookahead" } + + override predicate isNullable() { any() } + } + + /** + * A negative-lookahead assertion. + * + * Examples: + * + * ``` + * (?!\n) + * ``` + */ + additional class RegExpNegativeLookahead extends RegExpLookahead { + RegExpNegativeLookahead() { re.negativeLookaheadAssertionGroup(start, end) } + + override string getAPrimaryQlClass() { result = "RegExpNegativeLookahead" } + } + + abstract class RegExpLookbehind extends RegExpSubPattern { } + + abstract class RegExpPositiveLookbehind extends RegExpLookbehind { } + + /** + * A back reference, that is, a term of the form `\i` in a regular + * expression. + * + * Examples: + * + * ``` + * \1 + * ``` + */ + class RegExpBackRef extends RegExpTerm, TRegExpBackRef { + RegExpBackRef() { this = TRegExpBackRef(re, start, end) } + + /** + * Gets the number of the capture group this back reference refers to, if any. + */ + int getNumber() { result = re.getBackRefNumber(start, end) } + + /** Gets the capture group this back reference refers to. */ + RegExpGroup getGroup() { + result.getLiteral() = this.getLiteral() and + result.getNumber() = this.getNumber() + } + + override RegExpTerm getChild(int i) { none() } + + override string getAPrimaryQlClass() { result = "RegExpBackRef" } + + override predicate isNullable() { this.getGroup().isNullable() } + } + + /** + * A named character property. For example, the POSIX bracket expression + * `[:digit:]`. + */ + additional class RegExpNamedCharacterProperty extends RegExpTerm, TRegExpNamedCharacterProperty { + RegExpNamedCharacterProperty() { this = TRegExpNamedCharacterProperty(re, start, end) } + + override RegExpTerm getChild(int i) { none() } + + override string getAPrimaryQlClass() { result = "RegExpNamedCharacterProperty" } + + /** + * Gets the property name. For example, in `[:digit:]`, the result is + * `"digit"`. + */ + string getName() { result = re.getCharacterPropertyName(start, end) } + + /** + * Gets the property symbol. For example, in `[:digit:]`, the result is + * `":"`. + */ + string getSymbol() { result = re.getCharacterPropertySymbol(start, end) } + } + + /** + * A named POSIX character class. For example, `[:digit:]`. + */ + additional class RegExpNamedCharacterClass extends RegExpNamedCharacterProperty { + RegExpNamedCharacterClass() { ":" = re.getCharacterPropertySymbol(start, end) } + } + + /** + * A named POSIX collating element. For example, `[.tilde.]`. + */ + additional class RegExpNamedCollatingElement extends RegExpNamedCharacterProperty { + RegExpNamedCollatingElement() { "." = re.getCharacterPropertySymbol(start, end) } + } + + /** + * A POSIX character equivalence class. For example, `[=a=]`. + */ + additional class RegExpCharacterEquivalenceClass extends RegExpNamedCharacterProperty { + RegExpCharacterEquivalenceClass() { "=" = re.getCharacterPropertySymbol(start, end) } + } + + class Top = RegExpParent; + + /** + * Holds if `term` is an escape class representing e.g. `\d`. + * `clazz` is which character class it represents, e.g. "d" for `\d`. + */ + predicate isEscapeClass(RegExpTerm term, string clazz) { + exists(RegExpCharacterClassEscape escape | term = escape | escape.getValue() = clazz) + or + // TODO: expand to cover more properties + exists(RegExpNamedCharacterClass escape | term = escape | + escape.getName().toLowerCase() = "digit" and + clazz = "d" + or + escape.getName().toLowerCase() = "space" and + clazz = "s" + or + escape.getName().toLowerCase() = "word" and + clazz = "w" + ) + } + + /** + * Holds if the regular expression should not be considered. + */ + predicate isExcluded(RegExpParent parent) { none() } + + /** + * Holds if `term` is a possessive quantifier. + * Not currently implemented, but is used by the shared library. + */ + predicate isPossessive(RegExpQuantifier term) { none() } + + /** + * Holds if the regex that `term` is part of is used in a way that ignores any leading prefix of the input it's matched against. + * Not yet implemented for C++. + */ + predicate matchesAnyPrefix(RegExpTerm term) { any() } + + /** + * Holds if the regex that `term` is part of is used in a way that ignores any trailing suffix of the input it's matched against. + * Not yet implemented for C++. + */ + predicate matchesAnySuffix(RegExpTerm term) { any() } + + /** + * Holds if `root` has the `i` flag for case-insensitive matching. + */ + predicate isIgnoreCase(RegExpTerm root) { + root.isRootTerm() and + root.getLiteral().isIgnoreCase() + } + + /** + * Holds if `root` has the `s` flag for dot-all matching. + */ + predicate isDotAll(RegExpTerm root) { + root.isRootTerm() and + root.getLiteral().isDotAll() + } +} diff --git a/cpp/ql/lib/semmle/code/cpp/regex/internal/ParseRegExp.qll b/cpp/ql/lib/semmle/code/cpp/regex/internal/ParseRegExp.qll new file mode 100644 index 000000000000..c90826d95c8c --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/regex/internal/ParseRegExp.qll @@ -0,0 +1,871 @@ +/** + * Library for parsing C++ regular expressions. + * + * N.B. does not yet handle stripping whitespace and comments in regexes with + * the `x` (free-spacing) flag. + */ + +private import semmle.code.cpp.exprs.Literal + +/** + * A C++ string literal containing a regular expression term, that is, either + * a regular expression literal, or a string literal used in a context where + * it is parsed as a regular expression. + */ +abstract class RegExp extends StringLiteral { + /** + * Holds if this `RegExp` has the `s` flag for dot-all matching. + */ + predicate isDotAll() { none() } + + /** + * Holds if this `RegExp` has the `i` flag for case-insensitive matching. + */ + predicate isIgnoreCase() { none() } + + /** + * Gets the flags for this `RegExp`, or the empty string if it has no flags. + */ + string getFlags() { result = "" } + + /** + * Helper predicate for `charSetStart(int start, int end)`. + * + * In order to identify left brackets ('[') which actually start a character class, + * we perform a left to right scan of the string. + * + * To avoid negative recursion we return a boolean. See `escaping`, + * the helper for `escapingChar`, for a clean use of this pattern. + * + * result is true for those start chars that actually mark a start of a char set. + */ + boolean charSetStart(int pos) { + exists(int index | + // is opening bracket + this.charSetDelimiter(index, pos) = true and + ( + // if this is the first bracket, `pos` starts a char set + index = 1 and result = true + or + // if the previous char set delimiter was not a closing bracket, `pos` does + // not start a char set. This is needed to handle cases such as `[[]` (a + // char set that matches the `[` char) + index > 1 and + not this.charSetDelimiter(index - 1, _) = false and + result = false + or + // special handling of cases such as `[][]` (the character-set of the characters `]` and `[`). + exists(int prevClosingBracketPos | + // previous bracket is a closing bracket + this.charSetDelimiter(index - 1, prevClosingBracketPos) = false and + if + // check if the character that comes before the previous closing bracket + // is an opening bracket (taking `^` into account) + // check if the character that comes before the previous closing bracket + // is an opening bracket (taking `^` into account) + exists(int posBeforePrevClosingBracket | + if this.getChar(prevClosingBracketPos - 1) = "^" + then posBeforePrevClosingBracket = prevClosingBracketPos - 2 + else posBeforePrevClosingBracket = prevClosingBracketPos - 1 + | + this.charSetDelimiter(index - 2, posBeforePrevClosingBracket) = true + ) + then + // brackets without anything in between is not valid character ranges, so + // the first closing bracket in `[]]` and `[^]]` does not count, + // + // and we should _not_ mark the second opening bracket in `[][]` and `[^][]` + // as starting a new char set. ^ ^ + exists(int posBeforePrevClosingBracket | + this.charSetDelimiter(index - 2, posBeforePrevClosingBracket) = true + | + result = this.charSetStart(posBeforePrevClosingBracket).booleanNot() + ) + else + // if not, `pos` does in fact mark a real start of a character range + result = true + ) + ) + ) + } + + /** + * Helper predicate for chars that could be character-set delimiters. + * Holds if the (non-escaped) char at `pos` in the string, is the (one-based) `index` occurrence of a bracket (`[` or `]`) in the string. + * Result if `true` is the char is `[`, and `false` if the char is `]`. + */ + boolean charSetDelimiter(int index, int pos) { + pos = + rank[index](int p | + (this.nonEscapedCharAt(p) = "[" or this.nonEscapedCharAt(p) = "]") and + // Brackets that are part of POSIX expressions should not count as + // char-set delimiters. + not exists(int x, int y | this.posixStyleProperty(x, y, _, _) and pos >= x and pos < y) + ) and + ( + this.nonEscapedCharAt(pos) = "[" and result = true + or + this.nonEscapedCharAt(pos) = "]" and result = false + ) + } + + /** Holds if a character set starts between `start` and `end`. */ + predicate charSetStart(int start, int end) { + this.charSetStart(start) = true and + ( + this.getChar(start + 1) = "^" and end = start + 2 + or + not this.getChar(start + 1) = "^" and end = start + 1 + ) + } + + /** Whether there is a character class, between start (inclusive) and end (exclusive) */ + predicate charSet(int start, int end) { + exists(int innerStart, int innerEnd | + this.charSetStart(start, innerStart) and + not this.charSetStart(_, start) + | + end = innerEnd + 1 and + innerEnd = + min(int e | + e > innerStart and + this.nonEscapedCharAt(e) = "]" and + not exists(int x, int y | this.posixStyleProperty(x, y, _, _) and e >= x and e < y) + | + e + ) + ) + } + + /** + * Holds if the character set starting at `charsetStart` contains either + * a character or a `-` found between `start` and `end`. + */ + private predicate charSetToken(int charsetStart, int index, int tokenStart, int tokenEnd) { + tokenStart = + rank[index](int start, int end | this.charSetToken(charsetStart, start, end) | start) and + this.charSetToken(charsetStart, tokenStart, tokenEnd) + } + + /** + * Holds if the character set starting at `charsetStart` contains either + * a character or a `-` found between `start` and `end`. + */ + private predicate charSetToken(int charsetStart, int start, int end) { + this.charSetStart(charsetStart, start) and + ( + this.escapedCharacter(start, end) + or + this.namedCharacterProperty(start, end, _, _) + or + exists(this.nonEscapedCharAt(start)) and end = start + 1 + ) + or + this.charSetToken(charsetStart, _, start) and + ( + this.escapedCharacter(start, end) + or + this.namedCharacterProperty(start, end, _, _) + or + exists(this.nonEscapedCharAt(start)) and + end = start + 1 and + not this.getChar(start) = "]" + ) + } + + /** + * Holds if the character set starting at `charsetStart` contains either + * a character or a range found between `start` and `end`. + */ + predicate charSetChild(int charsetStart, int start, int end) { + this.charSetToken(charsetStart, start, end) and + not exists(int rangeStart, int rangeEnd | + this.charRange(charsetStart, rangeStart, _, _, rangeEnd) and + rangeStart <= start and + rangeEnd >= end + ) + or + this.charRange(charsetStart, start, _, _, end) + } + + /** + * Holds if the character set starting at `charsetStart` contains a character range + * with lower bound found between `start` and `lowerEnd` + * and upper bound found between `upperStart` and `end`. + */ + predicate charRange(int charsetStart, int start, int lowerEnd, int upperStart, int end) { + exists(int index | + this.charRangeEnd(charsetStart, index) = true and + this.charSetToken(charsetStart, index - 2, start, lowerEnd) and + this.charSetToken(charsetStart, index, upperStart, end) + ) + } + + /** + * Helper predicate for `charRange`. + * We can determine where character ranges end by a left to right sweep. + * + * To avoid negative recursion we return a boolean. See `escaping`, + * the helper for `escapingChar`, for a clean use of this pattern. + */ + private boolean charRangeEnd(int charsetStart, int index) { + this.charSetToken(charsetStart, index, _, _) and + ( + index in [1, 2] and result = false + or + index > 2 and + exists(int connectorStart | + this.charSetToken(charsetStart, index - 1, connectorStart, _) and + this.nonEscapedCharAt(connectorStart) = "-" and + result = + this.charRangeEnd(charsetStart, index - 2) + .booleanNot() + .booleanAnd(this.charRangeEnd(charsetStart, index - 1).booleanNot()) + ) + or + not exists(int connectorStart | + this.charSetToken(charsetStart, index - 1, connectorStart, _) and + this.nonEscapedCharAt(connectorStart) = "-" + ) and + result = false + ) + } + + /** Holds if the character at `pos` is a "\" that is actually escaping what comes after. */ + predicate escapingChar(int pos) { this.escaping(pos) = true } + + /** + * Helper predicate for `escapingChar`. + * In order to avoid negative recursion, we return a boolean. + * This way, we can refer to `escaping(pos - 1).booleanNot()` + * rather than to a negated version of `escaping(pos)`. + */ + private boolean escaping(int pos) { + pos = -1 and result = false + or + this.getChar(pos) = "\\" and result = this.escaping(pos - 1).booleanNot() + or + this.getChar(pos) != "\\" and result = false + } + + /** Gets the text of this regex */ + string getText() { result = this.getValue() } + + /** Gets the `i`th character of this regex */ + string getChar(int i) { result = this.getText().charAt(i) } + + /** Gets the `i`th character of this regex, unless it is part of a character escape sequence. */ + string nonEscapedCharAt(int i) { + result = this.getText().charAt(i) and + not exists(int x, int y | this.escapedCharacter(x, y) and i in [x .. y - 1]) + } + + private predicate isOptionDivider(int i) { this.nonEscapedCharAt(i) = "|" } + + private predicate isGroupEnd(int i) { this.nonEscapedCharAt(i) = ")" and not this.inCharSet(i) } + + private predicate isGroupStart(int i) { this.nonEscapedCharAt(i) = "(" and not this.inCharSet(i) } + + /** + * Holds if the `i`th character could not be parsed. + */ + predicate failedToParse(int i) { + exists(this.getChar(i)) and + not exists(int start, int end | + this.topLevel(start, end) and + start <= i and + end > i + ) + } + + /** Matches named character properties such as `[:digit:]`. */ + predicate namedCharacterProperty(int start, int end, string symbol, string name) { + this.posixStyleProperty(start, end, symbol, name) + } + + /** Gets the name of the character property in start,end */ + string getCharacterPropertyName(int start, int end) { + this.namedCharacterProperty(start, end, _, result) + } + + /** Gets the symbol of the character property in start,end */ + string getCharacterPropertySymbol(int start, int end) { + this.namedCharacterProperty(start, end, result, _) + } + + /** Matches a POSIX bracket expression such as `[:alnum:]` within a character class. */ + private predicate posixStyleProperty(int start, int end, string symbol, string name) { + this.getChar(start) = "[" and + this.getChar(start + 1) = symbol and + end = + min(int e | + e > start and + this.getChar(e - 2) = symbol and + this.getChar(e - 1) = "]" + | + e + ) and + symbol in [":", ".", "="] and + name = this.getText().substring(start + 2, end - 2) + } + + /** + * Holds if an escaped character is found between `start` and `end`. + * Escaped characters include hex values, octal values and named escapes, + * but excludes backreferences. + */ + predicate escapedCharacter(int start, int end) { + this.escapingChar(start) and + not this.numberedBackreference(start, _, _) and + ( + // hex char \xhh + this.getChar(start + 1) = "x" and end = start + 4 + or + // wide hex char \uhhhh + this.getChar(start + 1) = "u" and end = start + 6 + or + // control char \cX + this.getChar(start + 1) = "c" and end = start + 3 + or + // nul escape \0 (when not followed by a digit) + this.getChar(start + 1) = "0" and + end = start + 2 and + not exists(this.getChar(start + 2).toInt()) + or + // escape not handled above; update when adding a new case + not this.getChar(start + 1) in ["x", "u", "c"] and + not exists(this.getChar(start + 1).toInt()) and + end = start + 2 + ) + } + + /** + * Holds if the character at `index` is inside a character set. + */ + predicate inCharSet(int index) { + exists(int x, int y | this.charSet(x, y) and index in [x + 1 .. y - 2]) + } + + /** + * Holds if the character at `index` is inside a posix bracket. + */ + predicate inPosixBracket(int index) { + exists(int x, int y | this.posixStyleProperty(x, y, _, _) and index in [x + 1 .. y - 2]) + } + + /** + * 'simple' characters are any that don't alter the parsing of the regex. + */ + private predicate simpleCharacter(int start, int end) { + end = start + 1 and + not this.charSet(start, _) and + not this.charSet(_, start + 1) and + not exists(int x, int y | + this.posixStyleProperty(x, y, _, _) and + start >= x and + end <= y + ) and + exists(string c | c = this.getChar(start) | + exists(int x, int y, int z | + this.charSet(x, z) and + this.charSetStart(x, y) + | + start = y + or + start = z - 2 + or + start > y and start < z - 2 and not this.charRange(_, _, start, end, _) + ) + or + not this.inCharSet(start) and + not c = "(" and + not c = "[" and + not c = ")" and + not c = "|" and + not this.qualifier(start, _, _, _) + ) + } + + /** + * Holds if a simple or escaped character is found between `start` and `end`. + */ + predicate character(int start, int end) { + ( + this.simpleCharacter(start, end) and + not exists(int x, int y | this.escapedCharacter(x, y) and x <= start and y >= end) + or + this.escapedCharacter(start, end) + ) and + not exists(int x, int y | this.groupStart(x, y) and x <= start and y >= end) and + not exists(int x, int y | this.backreference(x, y) and x <= start and y >= end) and + not exists(int x, int y | this.multiples(x, y, _, _) and x <= start and y >= end) + } + + /** + * Holds if a normal character is found between `start` and `end`. + */ + predicate normalCharacter(int start, int end) { + end = start + 1 and + this.character(start, end) and + not this.specialCharacter(start, end, _) + } + + /** + * Holds if a special character is found between `start` and `end`. + */ + predicate specialCharacter(int start, int end, string char) { + this.character(start, end) and + not this.inCharSet(start) and + ( + end = start + 1 and + char = this.getChar(start) and + (char = "$" or char = "^" or char = ".") + or + end = start + 2 and + this.escapingChar(start) and + char = this.getText().substring(start, end) and + char = ["\\b", "\\B"] + ) + } + + /** + * Holds if the range [start:end) consists of only 'normal' characters. + */ + predicate normalCharacterSequence(int start, int end) { + // a normal character inside a character set is interpreted on its own + this.normalCharacter(start, end) and + this.inCharSet(start) + or + // a maximal run of normal characters is considered as one constant + exists(int s, int e | + e = max(int i | this.normalCharacterRun(s, i)) and + not this.inCharSet(s) + | + // 'abc' can be considered one constant, but + // 'abc+' has to be broken up into 'ab' and 'c+', + // as the qualifier only applies to 'c'. + if this.qualifier(e, _, _, _) + then + end = e and start = e - 1 + or + end = e - 1 and start = s and start < end + else ( + end = e and + start = s + ) + ) + } + + private predicate normalCharacterRun(int start, int end) { + ( + this.normalCharacterRun(start, end - 1) + or + start = end - 1 and not this.normalCharacter(start - 1, start) + ) and + this.normalCharacter(end - 1, end) + } + + private predicate characterItem(int start, int end) { + this.normalCharacterSequence(start, end) or + this.escapedCharacter(start, end) or + this.specialCharacter(start, end, _) + } + + /** Whether the text in the range `start,end` is a group */ + predicate group(int start, int end) { + this.groupContents(start, end, _, _) + or + this.emptyGroup(start, end) + } + + /** Gets the number of the group in start,end */ + int getGroupNumber(int start, int end) { + this.group(start, end) and + not this.nonCapturingGroupStart(start, _) and + result = + count(int i | this.group(i, _) and i < start and not this.nonCapturingGroupStart(i, _)) + 1 + } + + /** Whether the text in the range start, end is a group and can match the empty string. */ + predicate zeroWidthMatch(int start, int end) { + this.emptyGroup(start, end) + or + this.negativeAssertionGroup(start, end) + or + this.positiveLookaheadAssertionGroup(start, end) + } + + /** Holds if an empty group is found between `start` and `end`. */ + predicate emptyGroup(int start, int end) { + exists(int endm1 | end = endm1 + 1 | + this.groupStart(start, endm1) and + this.isGroupEnd(endm1) + ) + } + + private predicate emptyMatchAtStartGroup(int start, int end) { + this.emptyGroup(start, end) + or + this.negativeAssertionGroup(start, end) + or + this.positiveLookaheadAssertionGroup(start, end) + } + + private predicate emptyMatchAtEndGroup(int start, int end) { + this.emptyGroup(start, end) + or + this.negativeAssertionGroup(start, end) + } + + private predicate negativeAssertionGroup(int start, int end) { + exists(int inStart | this.negativeLookaheadAssertionStart(start, inStart) | + this.groupContents(start, end, inStart, _) + ) + } + + /** Holds if a negative lookahead is found between `start` and `end` */ + predicate negativeLookaheadAssertionGroup(int start, int end) { + exists(int inStart | this.negativeLookaheadAssertionStart(start, inStart) | + this.groupContents(start, end, inStart, _) + ) + } + + /** Holds if a positive lookahead is found between `start` and `end` */ + predicate positiveLookaheadAssertionGroup(int start, int end) { + exists(int inStart | this.lookaheadAssertionStart(start, inStart) | + this.groupContents(start, end, inStart, _) + ) + } + + private predicate groupStart(int start, int end) { + this.nonCapturingGroupStart(start, end) + or + this.lookaheadAssertionStart(start, end) + or + this.negativeLookaheadAssertionStart(start, end) + or + this.simpleGroupStart(start, end) + } + + /** Matches the start of a non-capturing group, e.g. `(?:` */ + private predicate nonCapturingGroupStart(int start, int end) { + this.isGroupStart(start) and + this.getChar(start + 1) = "?" and + this.getChar(start + 2) = [":", "=", "!"] and + end = start + 3 + } + + /** Matches the start of a simple group, e.g. `(a+)`. */ + private predicate simpleGroupStart(int start, int end) { + this.isGroupStart(start) and + this.getChar(start + 1) != "?" and + end = start + 1 + } + + /** Matches the start of a positive lookahead assertion, i.e. `(?=`. */ + private predicate lookaheadAssertionStart(int start, int end) { + this.isGroupStart(start) and + this.getChar(start + 1) = "?" and + this.getChar(start + 2) = "=" and + end = start + 3 + } + + /** Matches the start of a negative lookahead assertion, i.e. `(?!`. */ + private predicate negativeLookaheadAssertionStart(int start, int end) { + this.isGroupStart(start) and + this.getChar(start + 1) = "?" and + this.getChar(start + 2) = "!" and + end = start + 3 + } + + /** Matches the contents of a group. */ + predicate groupContents(int start, int end, int inStart, int inEnd) { + this.groupStart(start, inStart) and + end = inEnd + 1 and + this.topLevel(inStart, inEnd) and + this.isGroupEnd(inEnd) + } + + /** Matches a numbered backreference, e.g. `\1`. */ + predicate numberedBackreference(int start, int end, int value) { + this.escapingChar(start) and + not this.getChar(start + 1) = "0" and + exists(string text, string svalue, int len | + end = start + len and + text = this.getText() and + len in [2 .. 3] + | + svalue = text.substring(start + 1, start + len) and + value = svalue.toInt() and + not exists(text.substring(start + 1, start + len + 1).toInt()) and + value > 0 + ) + } + + /** Whether the text in the range `start,end` is a back reference */ + predicate backreference(int start, int end) { this.numberedBackreference(start, end, _) } + + /** Gets the number of the back reference in start,end */ + int getBackRefNumber(int start, int end) { this.numberedBackreference(start, end, result) } + + private predicate baseItem(int start, int end) { + this.characterItem(start, end) and + not exists(int x, int y | this.charSet(x, y) and x <= start and y >= end) + or + this.group(start, end) + or + this.charSet(start, end) + or + this.backreference(start, end) + } + + private predicate qualifier(int start, int end, boolean maybeEmpty, boolean mayRepeatForever) { + this.shortQualifier(start, end, maybeEmpty, mayRepeatForever) and + not this.getChar(end) = "?" + or + exists(int shortEnd | this.shortQualifier(start, shortEnd, maybeEmpty, mayRepeatForever) | + if this.getChar(shortEnd) = "?" then end = shortEnd + 1 else end = shortEnd + ) + } + + private predicate shortQualifier(int start, int end, boolean maybeEmpty, boolean mayRepeatForever) { + ( + this.getChar(start) = "+" and maybeEmpty = false and mayRepeatForever = true + or + this.getChar(start) = "*" and maybeEmpty = true and mayRepeatForever = true + or + this.getChar(start) = "?" and maybeEmpty = true and mayRepeatForever = false + ) and + end = start + 1 + or + exists(string lower, string upper | + this.multiples(start, end, lower, upper) and + (if lower = "" or lower.toInt() = 0 then maybeEmpty = true else maybeEmpty = false) and + if upper = "" then mayRepeatForever = true else mayRepeatForever = false + ) + } + + /** + * Holds if a repetition quantifier is found between `start` and `end`, + * with the given lower and upper bounds. If a bound is omitted, the corresponding + * string is empty. + */ + predicate multiples(int start, int end, string lower, string upper) { + exists(string text, string match, string inner | + text = this.getText() and + end = start + match.length() and + inner = match.substring(1, match.length() - 1) + | + match = text.regexpFind("\\{[0-9]+\\}", _, start) and + lower = inner and + upper = lower + or + match = text.regexpFind("\\{[0-9]+,[0-9]*\\}", _, start) and + exists(int commaIndex | + commaIndex = inner.indexOf(",") and + lower = inner.prefix(commaIndex) and + upper = inner.suffix(commaIndex + 1) + ) + ) + } + + /** + * Whether the text in the range start,end is a qualified item, where item is a character, + * a character set or a group. + */ + predicate qualifiedItem(int start, int end, boolean maybeEmpty, boolean mayRepeatForever) { + this.qualifiedPart(start, _, end, maybeEmpty, mayRepeatForever) + } + + /** + * Holds if a qualified part is found between `start` and `partEnd` and the qualifier is + * found between `partEnd` and `end`. + * + * `maybeEmpty` is true if the part is optional. + * `mayRepeatForever` is true if the part may be repeated unboundedly. + */ + predicate qualifiedPart( + int start, int partEnd, int end, boolean maybeEmpty, boolean mayRepeatForever + ) { + this.baseItem(start, partEnd) and + this.qualifier(partEnd, end, maybeEmpty, mayRepeatForever) + } + + /** Holds if the range `start`, `end` contains a character, a quantifier, a character set or a group. */ + predicate item(int start, int end) { + this.qualifiedItem(start, end, _, _) + or + this.baseItem(start, end) and not this.qualifier(end, _, _, _) + } + + private predicate subsequence(int start, int end) { + ( + start = 0 or + this.groupStart(_, start) or + this.isOptionDivider(start - 1) + ) and + this.item(start, end) + or + exists(int mid | + this.subsequence(start, mid) and + this.item(mid, end) + ) + } + + /** + * Whether the text in the range start,end is a sequence of 1 or more items, where an item is a character, + * a character set or a group. + */ + predicate sequence(int start, int end) { + this.sequenceOrQualified(start, end) and + not this.qualifiedItem(start, end, _, _) + } + + private predicate sequenceOrQualified(int start, int end) { + this.subsequence(start, end) and + not this.itemStart(end) + } + + private predicate itemStart(int start) { + this.characterItem(start, _) or + this.isGroupStart(start) or + this.charSet(start, _) or + this.backreference(start, _) or + this.namedCharacterProperty(start, _, _, _) + } + + private predicate itemEnd(int end) { + this.characterItem(_, end) + or + exists(int endm1 | this.isGroupEnd(endm1) and end = endm1 + 1) + or + this.charSet(_, end) + or + this.qualifier(_, end, _, _) + } + + private predicate topLevel(int start, int end) { + this.subalternation(start, end, _) and + not this.isOptionDivider(end) + } + + private predicate subalternation(int start, int end, int itemStart) { + this.sequenceOrQualified(start, end) and + not this.isOptionDivider(start - 1) and + itemStart = start + or + start = end and + not this.itemEnd(start) and + this.isOptionDivider(end) and + itemStart = start + or + exists(int mid | + this.subalternation(start, mid, _) and + this.isOptionDivider(mid) and + itemStart = mid + 1 + | + this.sequenceOrQualified(itemStart, end) + or + not this.itemStart(end) and end = itemStart + ) + } + + /** + * Whether the text in the range start,end is an alternation + */ + predicate alternation(int start, int end) { + not this.inCharSet(start) and + this.topLevel(start, end) and + exists(int less | this.subalternation(start, less, _) and less < end) + } + + /** + * Whether the text in the range start,end is an alternation and the text in partStart, partEnd is one of the + * options in that alternation. + */ + predicate alternationOption(int start, int end, int partStart, int partEnd) { + this.alternation(start, end) and + this.subalternation(start, partEnd, partStart) + } + + /** A part of the regex that may match the start of the string. */ + private predicate firstPart(int start, int end) { + start = 0 and end = this.getText().length() + or + exists(int x | this.firstPart(x, end) | + this.emptyMatchAtStartGroup(x, start) + or + this.qualifiedItem(x, start, true, _) + or + // ^ matches the start of the string + this.specialCharacter(x, start, "^") + ) + or + exists(int y | this.firstPart(start, y) | + this.item(start, end) + or + this.qualifiedPart(start, end, y, _, _) + ) + or + exists(int x, int y | this.firstPart(x, y) | + this.groupContents(x, y, start, end) + or + this.alternationOption(x, y, start, end) + ) + } + + /** A part of the regex that may match the end of the string. */ + private predicate lastPart(int start, int end) { + start = 0 and end = this.getText().length() + or + exists(int y | this.lastPart(start, y) | + this.emptyMatchAtEndGroup(end, y) + or + this.qualifiedItem(end, y, true, _) + or + // $ matches the end of the string. + this.specialCharacter(end, y, "$") + ) + or + this.lastPart(_, end) and + this.item(start, end) + or + exists(int y | this.lastPart(start, y) | this.qualifiedPart(start, end, y, _, _)) + or + exists(int x, int y | this.lastPart(x, y) | + this.groupContents(x, y, start, end) + or + this.alternationOption(x, y, start, end) + ) + } + + /** + * Whether the item at [start, end) is one of the first items + * to be matched. + */ + predicate firstItem(int start, int end) { + ( + this.characterItem(start, end) + or + this.qualifiedItem(start, end, _, _) + or + this.charSet(start, end) + ) and + this.firstPart(start, end) + } + + /** + * Whether the item at [start, end) is one of the last items + * to be matched. + */ + predicate lastItem(int start, int end) { + ( + this.characterItem(start, end) + or + this.qualifiedItem(start, end, _, _) + or + this.charSet(start, end) + ) and + this.lastPart(start, end) + } +} diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 0853f43dc8c0..6aec212e408f 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -660,46 +660,49 @@ case @builtintype.kind of | 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 +| 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 // ... 41 _Decimal64 // ... 42 _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 +| 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 +| 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 +| 67 = @bit_precise_int // _BitInt(N) +| 68 = @unsigned_bit_precise_int // unsigned _BitInt(N) +| 69 = @signed_bit_precise_int // signed _BitInt(N) ; builtintypes( @@ -711,6 +714,11 @@ builtintypes( int alignment: int ref ); +bit_precise_int_types( + unique int id: @builtintype ref, + int bit_width: 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. @@ -736,9 +744,11 @@ derivedtypes( int type_id: @type ref ); -pointerishsize(unique int id: @derivedtype ref, +pointerishsize( + unique int id: @derivedtype ref, int size: int ref, - int alignment: int ref); + int alignment: int ref +); arraysizes( unique int id: @derivedtype ref, diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 54cdc7a85081..8f5c157b1ae7 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 12556 + 12799 @externalDataElement @@ -10,19 +10,19 @@ @file - 64766 + 66019 @folder - 12305 + 12543 @diagnostic - 356 + 363 @location_default - 46362405 + 46369281 @trap @@ -42,15 +42,15 @@ @macro_expansion - 40315722 + 40292589 @other_macro_reference - 300696 + 300524 @normal_function - 2699010 + 2699603 @unknown_function @@ -58,19 +58,19 @@ @constructor - 688614 + 692625 @destructor - 84823 + 84842 @conversion_function - 10188 + 10190 @operator - 647163 + 647305 @user_defined_literal @@ -78,31 +78,31 @@ @deduction_guide - 5769 + 5770 @fun_decl - 4148376 + 4149410 @var_decl - 9436285 + 9411101 @type_decl - 1639390 + 1639750 @namespace_decl - 405513 + 406675 @using_declaration - 265844 + 270974 @using_directive - 6377 + 6415 @using_enum_declaration @@ -110,27 +110,27 @@ @static_assert - 171628 + 172120 @parameter - 6930613 + 6932137 @membervariable - 1503078 + 1502215 @globalvariable - 661280 + 634536 @localvariable - 725852 + 733038 @enumconstant - 348112 + 347913 @errortype @@ -364,37 +364,49 @@ @complex_std_float16 122 + + @bit_precise_int + 3 + + + @unsigned_bit_precise_int + 4 + + + @signed_bit_precise_int + 1 + @pointer - 449159 + 449258 @type_with_specifiers - 686813 + 686964 @array - 89611 + 89630 @routineptr - 674281 + 678207 @reference - 958837 + 959048 @gnu_vector - 671 + 684 @routinereference - 369 + 371 @rvalue_reference - 286877 + 286941 @block @@ -404,9 +416,13 @@ @scalable_vector 1 + + @decltype + 101803 + @typeof - 812 + 811 @underlying_type @@ -454,7 +470,7 @@ @remove_cv - 2095 + 2098 @remove_cvref @@ -482,31 +498,27 @@ @remove_reference - 5688 - - - @decltype - 101861 + 5694 @struct - 1039206 + 1056586 @union - 20745 + 20750 @enum - 41614 + 41590 @template_parameter - 863096 + 879786 @alias - 1757610 + 1791267 @unknown_usertype @@ -514,27 +526,27 @@ @class - 320881 + 320951 @template_template_parameter - 6073 + 6191 @proxy_class - 50227 + 51198 @scoped_enum - 11416 + 11418 @template_struct - 210581 + 214653 @template_class - 28847 + 28853 @template_union @@ -542,27 +554,27 @@ @mangledname - 6352070 + 6345485 @type_mention - 5941339 + 5937930 @concept_template - 3592 + 3596 @routinetype - 595664 + 599125 @ptrtomember - 9651 + 9837 @specifier - 7610 + 7612 @gnuattribute @@ -570,11 +582,11 @@ @stdattribute - 347764 + 347840 @declspec - 330464 + 330275 @msattribute @@ -582,19 +594,19 @@ @alignas - 2164 + 2186 @attribute_arg_token - 16448 + 16545 @attribute_arg_constant_expr - 71688 + 72691 @attribute_arg_expr - 1582 + 1584 @attribute_arg_empty @@ -606,23 +618,23 @@ @attribute_arg_type - 460 + 464 @derivation - 492610 + 494887 @frienddecl - 761457 + 765587 @comment - 11056034 + 11058465 @namespace - 8591 + 8757 @specialnamequalifyingelement @@ -630,15 +642,15 @@ @namequalifier - 3050545 + 3044887 @value - 13547098 + 13539325 @initialiser - 2289023 + 2292690 @address_of @@ -646,131 +658,131 @@ @indirect - 401998 + 401768 @array_to_pointer - 1954311 + 1953190 @parexpr - 4916613 + 4913791 @arithnegexpr - 586702 + 586365 @unaryplusexpr - 4117 + 4158 @complementexpr - 38195 + 38173 @notexpr - 355868 + 355664 @postincrexpr - 84590 + 84542 @postdecrexpr - 57409 + 57376 @preincrexpr - 96742 + 96686 @predecrexpr - 35831 + 35810 @conditionalexpr - 898137 + 897622 @addexpr - 581041 + 580708 @subexpr - 466933 + 466665 @mulexpr - 445548 + 445292 @divexpr - 52399 + 52369 @remexpr - 15776 + 15870 @paddexpr - 118654 + 118586 @psubexpr - 68032 + 67993 @pdiffexpr - 42841 + 43833 @lshiftexpr - 552490 + 552173 @rshiftexpr - 201483 + 201367 @andexpr - 483730 + 483452 @orexpr - 194110 + 193999 @xorexpr - 73969 + 73926 @eqexpr - 643558 + 643188 @neexpr - 411988 + 411752 @gtexpr - 111181 + 111117 @ltexpr - 139469 + 139389 @geexpr - 81322 + 81275 @leexpr - 291998 + 291831 @assignexpr - 1281515 + 1280779 @assignaddexpr @@ -778,15 +790,15 @@ @assignsubexpr - 15312 + 15303 @assignmulexpr - 11109 + 11324 @assigndivexpr - 6808 + 6804 @assignremexpr @@ -794,7 +806,7 @@ @assignlshiftexpr - 3703 + 3701 @assignrshiftexpr @@ -802,127 +814,127 @@ @assignandexpr - 6530 + 6526 @assignorexpr - 19612 + 19601 @assignxorexpr - 29905 + 29888 @assignpaddexpr - 18633 + 18622 @assignpsubexpr - 1576 + 1575 @andlogicalexpr - 346689 + 346490 @orlogicalexpr - 1103855 + 1103221 @commaexpr - 165227 + 165264 @subscriptexpr - 435268 + 435018 @callexpr - 261260 + 263482 @vastartexpr - 5007 + 5021 @vaargexpr - 1303 + 1302 @vaendexpr - 2941 + 2939 @vacopyexpr - 134 + 135 @varaccess - 8257017 + 8252279 @runtime_sizeof - 401820 + 401589 @runtime_alignof - 50352 + 50650 @expr_stmt - 147669 + 147584 @routineexpr - 5708356 + 5708751 @type_operand - 1405785 + 1404979 @offsetofexpr - 148579 + 148494 @typescompexpr - 702145 + 701742 @literal - 8057470 + 8035745 @aggregateliteral - 1397495 + 1400988 @c_style_cast - 6028638 + 6023777 @temp_init - 974536 + 984852 @errorexpr - 44841 + 45078 @reference_to - 1869126 + 1891026 @ref_indirect - 2079573 + 2091992 @vacuous_destructor_call - 7720 + 7766 @assume - 4150 + 4162 @conjugation @@ -930,11 +942,11 @@ @realpartexpr - 73 + 74 @imagpartexpr - 73 + 74 @jmulexpr @@ -974,31 +986,31 @@ @thisaccess - 1549814 + 1554385 @new_expr - 45518 + 45787 @delete_expr - 11312 + 11379 @throw_expr - 23607 + 23913 @condition_decl - 406398 + 406885 @braced_init_list - 2092 + 2114 @type_id - 47196 + 47476 @sizeof_pack @@ -1030,7 +1042,7 @@ @hastrivialconstr - 7 + 3 @hastrivialcopy @@ -1054,7 +1066,7 @@ @isclassexpr - 2374 + 2381 @isconvtoexpr @@ -1062,15 +1074,15 @@ @isemptyexpr - 8715 + 8717 @isenumexpr - 2946 + 2332 @ispodexpr - 828 + 844 @ispolyexpr @@ -1086,83 +1098,83 @@ @hastrivialdestructor - 2752 + 776 @uuidof - 26214 + 26289 @delete_array_expr - 1237 + 1261 @new_array_expr - 6597 + 6616 @foldexpr - 1261 + 1263 @ctordirectinit - 111177 + 111802 @ctorvirtualinit - 3961 + 3984 @ctorfieldinit - 202913 + 204063 @ctordelegatinginit - 3559 + 3560 @dtordirectdestruct - 38871 + 39102 @dtorvirtualdestruct - 3927 + 3950 @dtorfielddestruct - 39241 + 39473 @static_cast - 346536 + 348331 @reinterpret_cast - 39434 + 39547 @const_cast - 24101 + 24244 @dynamic_cast - 786 + 801 @lambdaexpr - 18970 + 19024 @param_ref - 163542 + 165240 @noopexpr - 80 + 113 @istriviallyconstructibleexpr - 3682 + 2332 @isdestructibleexpr @@ -1178,15 +1190,15 @@ @istriviallyassignableexpr - 3682 + 2332 @isnothrowassignableexpr - 5032 + 5034 @istrivialexpr - 3310 + 1249 @isstandardlayoutexpr @@ -1214,11 +1226,11 @@ @isconstructibleexpr - 3559 + 3560 @isnothrowconstructibleexpr - 20377 + 20381 @hasfinalizerexpr @@ -1254,11 +1266,11 @@ @isfinalexpr - 9264 + 9319 @noexceptexpr - 30169 + 30482 @builtinshufflevector @@ -1266,11 +1278,11 @@ @builtinchooseexpr - 20614 + 20602 @builtinaddressof - 15221 + 15224 @vec_fill @@ -1286,7 +1298,7 @@ @spaceshipexpr - 1347 + 1348 @co_await @@ -1314,7 +1326,7 @@ @builtinshuffle - 608 + 620 @blockassignexpr @@ -1322,7 +1334,7 @@ @issame - 4511 + 4517 @isfunction @@ -1430,7 +1442,7 @@ @reuseexpr - 841815 + 842823 @istriviallycopyassignable @@ -1526,23 +1538,23 @@ @c11_generic - 29973 + 29956 @requires_expr - 16401 + 16421 @nested_requirement - 684 + 685 @compound_requirement - 10884 + 10897 @concept_id - 90068 + 90176 @isinvocable @@ -1558,79 +1570,79 @@ @lambdacapture - 31810 + 31901 @stmt_expr - 2032201 + 2031035 @stmt_if - 990500 + 989932 @stmt_while - 39659 + 39636 @stmt_goto - 156829 + 159862 @stmt_label - 77512 + 79011 @stmt_return - 1233370 + 1257082 @stmt_block - 1695980 + 1707526 @stmt_end_test_while - 232528 + 232395 @stmt_for - 84413 + 84365 @stmt_switch_case - 830952 + 831947 @stmt_switch - 409306 + 409797 @stmt_asm - 63893 + 63856 @stmt_decl - 770162 + 772377 @stmt_empty - 426756 + 427267 @stmt_continue - 28099 + 28083 @stmt_break - 137217 + 137610 @stmt_try_block - 26230 + 26563 @stmt_microsoft_try - 209 + 210 @stmt_set_vla_size @@ -1642,19 +1654,19 @@ @stmt_assigned_goto - 12425 + 12418 @stmt_range_based_for - 6157 + 6221 @stmt_handler - 42985 + 43492 @stmt_constexpr_if - 103236 + 103259 @stmt_co_return @@ -1674,51 +1686,51 @@ @ppd_if - 581489 + 581617 @ppd_ifdef - 214425 + 214302 @ppd_ifndef - 160411 + 160319 @ppd_elif - 21767 + 22188 @ppd_else - 231147 + 231198 @ppd_endif - 874750 + 874943 @ppd_plain_include - 316386 + 322504 @ppd_define - 2706007 + 2706601 @ppd_undef - 98817 + 98839 @ppd_pragma - 399689 + 399777 @ppd_include_next - 167 + 168 @ppd_line - 18810 + 18996 @ppd_error @@ -1750,7 +1762,7 @@ @link_target - 817 + 816 @xmldtd @@ -1780,11 +1792,11 @@ compilations - 12556 + 12799 id - 12556 + 12799 cwd @@ -1802,7 +1814,7 @@ 1 2 - 12556 + 12799 @@ -1828,19 +1840,19 @@ compilation_args - 1005291 + 1024731 id - 12556 + 12799 num - 1458 + 1486 arg - 29068 + 29630 @@ -1854,77 +1866,77 @@ 36 42 - 996 + 1015 42 43 - 1090 + 1112 43 44 - 713 + 727 44 45 - 503 + 513 45 51 - 944 + 962 51 70 - 482 + 491 71 72 - 702 + 716 72 90 - 891 + 908 94 96 - 388 + 395 98 99 - 1332 + 1358 100 102 - 94 + 96 103 104 - 1982 + 2020 104 119 - 1059 + 1080 120 138 - 923 + 940 139 140 - 451 + 459 @@ -1940,67 +1952,67 @@ 34 38 - 587 + 598 38 39 - 1489 + 1518 39 40 - 975 + 994 40 42 - 1080 + 1101 42 53 - 597 + 609 53 54 - 702 + 716 54 63 - 891 + 908 64 67 - 398 + 406 67 68 - 1395 + 1422 68 70 - 965 + 983 70 71 - 1395 + 1422 73 79 - 944 + 962 79 89 - 1122 + 1144 89 @@ -2021,57 +2033,57 @@ 43 90 - 62 + 64 90 108 - 115 + 117 108 183 - 104 + 106 198 422 - 115 + 117 422 595 - 125 + 128 595 605 - 125 + 128 605 749 - 115 + 117 750 778 - 115 + 117 781 883 - 115 + 117 930 1190 - 83 + 85 1197 1198 - 377 + 384 @@ -2087,72 +2099,72 @@ 1 5 - 125 + 128 5 7 - 115 + 117 9 12 - 73 + 74 12 15 - 115 + 117 15 18 - 94 + 96 18 22 - 115 + 117 22 27 - 125 + 128 27 29 - 83 + 85 29 34 - 115 + 117 34 44 - 125 + 128 45 63 - 115 + 117 67 94 - 115 + 117 94 164 - 115 + 117 171 199 - 20 + 21 @@ -2168,22 +2180,22 @@ 1 2 - 13312 + 13569 2 3 - 12598 + 12842 3 103 - 2181 + 2224 104 1198 - 975 + 994 @@ -2199,17 +2211,17 @@ 1 2 - 19249 + 19621 2 3 - 8664 + 8832 3 62 - 1153 + 1176 @@ -2219,19 +2231,19 @@ compilation_expanded_args - 1005291 + 1024731 id - 12556 + 12799 num - 1458 + 1486 arg - 29068 + 29630 @@ -2245,77 +2257,77 @@ 36 42 - 996 + 1015 42 43 - 1090 + 1112 43 44 - 713 + 727 44 45 - 503 + 513 45 51 - 944 + 962 51 70 - 482 + 491 71 72 - 702 + 716 72 90 - 891 + 908 94 96 - 388 + 395 98 99 - 1332 + 1358 100 102 - 94 + 96 103 104 - 1982 + 2020 104 119 - 1059 + 1080 120 138 - 923 + 940 139 140 - 451 + 459 @@ -2331,67 +2343,67 @@ 34 38 - 587 + 598 38 39 - 1489 + 1518 39 40 - 975 + 994 40 42 - 1080 + 1101 42 53 - 597 + 609 53 54 - 702 + 716 54 63 - 891 + 908 64 67 - 398 + 406 67 68 - 1395 + 1422 68 70 - 965 + 983 70 71 - 1395 + 1422 73 79 - 944 + 962 79 89 - 1122 + 1144 89 @@ -2412,57 +2424,57 @@ 43 90 - 62 + 64 90 108 - 115 + 117 108 183 - 104 + 106 198 422 - 115 + 117 422 595 - 125 + 128 595 605 - 125 + 128 605 749 - 115 + 117 750 778 - 115 + 117 781 883 - 115 + 117 930 1190 - 83 + 85 1197 1198 - 377 + 384 @@ -2478,72 +2490,72 @@ 1 5 - 125 + 128 5 7 - 115 + 117 9 12 - 73 + 74 12 15 - 115 + 117 15 18 - 94 + 96 18 22 - 115 + 117 22 27 - 125 + 128 27 29 - 83 + 85 29 34 - 115 + 117 34 44 - 125 + 128 45 63 - 115 + 117 67 94 - 115 + 117 94 164 - 115 + 117 171 199 - 20 + 21 @@ -2559,22 +2571,22 @@ 1 2 - 13312 + 13569 2 3 - 12598 + 12842 3 103 - 2181 + 2224 104 1198 - 975 + 994 @@ -2590,17 +2602,17 @@ 1 2 - 19249 + 19621 2 3 - 8664 + 8832 3 62 - 1153 + 1176 @@ -2658,19 +2670,19 @@ compilation_compiling_files - 15741 + 15732 id - 2723 + 2721 num - 4520 + 4518 file - 13671 + 13663 @@ -2684,7 +2696,7 @@ 1 2 - 1361 + 1360 2 @@ -2735,7 +2747,7 @@ 1 2 - 1361 + 1360 2 @@ -2786,17 +2798,17 @@ 1 2 - 2396 + 2395 2 3 - 980 + 979 3 4 - 490 + 489 4 @@ -2822,17 +2834,17 @@ 1 2 - 2396 + 2395 2 3 - 980 + 979 3 4 - 490 + 489 4 @@ -2858,7 +2870,7 @@ 1 2 - 12310 + 12302 2 @@ -2884,12 +2896,12 @@ 1 2 - 12527 + 12520 2 4 - 1089 + 1088 4 @@ -2904,15 +2916,15 @@ compilation_time - 62966 + 62930 id - 2723 + 2721 num - 4520 + 4518 kind @@ -2920,7 +2932,7 @@ seconds - 18682 + 22646 @@ -2934,7 +2946,7 @@ 1 2 - 1361 + 1360 2 @@ -2985,7 +2997,7 @@ 4 5 - 2723 + 2721 @@ -2998,56 +3010,56 @@ 12 - - 2 - 3 - 54 - 3 4 - 544 + 326 4 5 - 762 + 1034 6 - 9 - 217 + 7 + 163 - 9 + 8 10 - 108 + 163 10 11 - 163 + 108 11 - 13 + 12 217 - 14 - 17 - 217 + 12 + 18 + 163 - 17 - 22 + 18 + 20 217 - 26 - 121 + 21 + 40 217 + + 60 + 152 + 108 + @@ -3062,17 +3074,17 @@ 1 2 - 2396 + 2395 2 3 - 980 + 979 3 4 - 490 + 489 4 @@ -3098,7 +3110,7 @@ 4 5 - 4520 + 4518 @@ -3119,17 +3131,17 @@ 4 5 - 1525 + 1469 5 6 - 272 + 108 6 7 - 490 + 653 7 @@ -3138,18 +3150,18 @@ 9 - 12 + 11 381 - 13 - 41 + 12 + 31 381 - 44 - 100 - 163 + 42 + 98 + 217 @@ -3197,16 +3209,21 @@ 4 5 - 108 + 54 - 189 - 190 + 5 + 6 54 - 198 - 199 + 226 + 227 + 54 + + + 230 + 231 54 @@ -3223,22 +3240,17 @@ 1 2 - 12854 + 17583 2 3 - 3921 + 3701 3 - 5 - 1688 - - - 7 - 42 - 217 + 46 + 1360 @@ -3254,22 +3266,22 @@ 1 2 - 11765 + 16494 2 3 - 3867 + 4191 3 - 4 - 1743 + 8 + 1742 - 4 - 67 - 1307 + 12 + 71 + 217 @@ -3285,12 +3297,12 @@ 1 2 - 15850 + 19978 2 3 - 2832 + 2667 @@ -3300,15 +3312,15 @@ diagnostic_for - 503 + 513 diagnostic - 356 + 363 compilation - 188 + 192 file_number @@ -3316,7 +3328,7 @@ file_number_diagnostic_number - 52 + 53 @@ -3330,12 +3342,12 @@ 1 2 - 209 + 213 2 3 - 146 + 149 @@ -3351,7 +3363,7 @@ 1 2 - 356 + 363 @@ -3367,7 +3379,7 @@ 1 2 - 356 + 363 @@ -3383,17 +3395,17 @@ 2 3 - 104 + 106 3 4 - 62 + 64 5 6 - 20 + 21 @@ -3409,7 +3421,7 @@ 1 2 - 188 + 192 @@ -3425,17 +3437,17 @@ 2 3 - 104 + 106 3 4 - 62 + 64 5 6 - 20 + 21 @@ -3499,7 +3511,7 @@ 1 2 - 20 + 21 4 @@ -3530,7 +3542,7 @@ 2 3 - 20 + 21 8 @@ -3540,7 +3552,7 @@ 18 19 - 20 + 21 @@ -3556,7 +3568,7 @@ 1 2 - 52 + 53 @@ -3566,19 +3578,19 @@ compilation_finished - 12556 + 12799 id - 12556 + 12799 cpu_seconds - 9420 + 8843 elapsed_seconds - 199 + 149 @@ -3592,7 +3604,7 @@ 1 2 - 12556 + 12799 @@ -3608,7 +3620,7 @@ 1 2 - 12556 + 12799 @@ -3624,17 +3636,17 @@ 1 2 - 7930 + 7078 2 3 - 996 + 1186 3 - 28 - 493 + 34 + 577 @@ -3650,12 +3662,12 @@ 1 2 - 8843 + 8009 2 3 - 576 + 834 @@ -3671,66 +3683,56 @@ 1 2 - 31 + 32 2 3 - 31 - - - 4 - 5 10 - 10 - 11 - 31 - - - 12 - 13 + 3 + 4 10 - 14 - 15 + 4 + 5 10 - 18 - 19 - 10 + 15 + 16 + 21 - 32 - 33 + 24 + 25 10 - 51 - 52 + 30 + 31 10 - 159 - 160 + 37 + 38 10 - 260 - 261 + 235 + 236 10 - 286 - 287 + 411 + 412 10 - 322 - 323 + 418 + 419 10 @@ -3747,66 +3749,56 @@ 1 2 - 31 + 32 2 3 - 31 - - - 4 - 5 10 - 10 - 11 - 31 - - - 12 - 13 + 3 + 4 10 - 13 - 14 + 4 + 5 10 - 18 - 19 - 10 + 15 + 16 + 21 - 32 - 33 + 24 + 25 10 - 51 - 52 + 30 + 31 10 - 134 - 135 + 37 + 38 10 - 155 - 156 + 200 + 201 10 - 234 - 235 + 216 + 217 10 - 261 - 262 + 356 + 357 10 @@ -4044,31 +4036,31 @@ locations_default - 46362405 + 46369281 id - 46362405 + 46369281 file - 40263 + 40272 beginLine - 7381369 + 7382992 beginColumn - 21604 + 21609 endLine - 7382351 + 7383974 endColumn - 52907 + 52918 @@ -4082,7 +4074,7 @@ 1 2 - 46362405 + 46369281 @@ -4098,7 +4090,7 @@ 1 2 - 46362405 + 46369281 @@ -4114,7 +4106,7 @@ 1 2 - 46362405 + 46369281 @@ -4130,7 +4122,7 @@ 1 2 - 46362405 + 46369281 @@ -4146,7 +4138,7 @@ 1 2 - 46362405 + 46369281 @@ -4162,67 +4154,67 @@ 1 15 - 3068 + 3069 15 41 - 3068 + 3069 42 72 - 3068 + 3069 72 114 - 3191 + 3192 114 142 - 3191 + 3192 143 212 - 3068 + 3069 213 307 - 3068 + 3069 310 435 - 3068 + 3069 437 596 - 3068 + 3069 607 846 - 3068 + 3069 848 1304 - 3068 + 3069 1354 2855 - 3068 + 3069 3114 30788 - 3068 + 3069 57880 @@ -4243,62 +4235,62 @@ 1 13 - 3314 + 3315 13 31 - 3314 + 3315 31 47 - 3068 + 3069 47 64 - 3068 + 3069 64 84 - 3068 + 3069 85 115 - 3068 + 3069 116 160 - 3191 + 3192 160 206 - 3068 + 3069 206 291 - 3068 + 3069 298 388 - 3068 + 3069 395 527 - 3068 + 3069 561 1339 - 3068 + 3069 1385 @@ -4319,62 +4311,62 @@ 1 5 - 3682 + 3683 5 9 - 3068 + 3069 9 15 - 3191 + 3192 15 20 - 3191 + 3192 20 28 - 3191 + 3192 28 36 - 3068 + 3069 36 43 - 3314 + 3315 43 53 - 3191 + 3192 53 62 - 3068 + 3069 62 80 - 3068 + 3069 80 95 - 3191 + 3192 95 111 - 3068 + 3069 112 @@ -4395,62 +4387,62 @@ 1 13 - 3314 + 3315 13 31 - 3314 + 3315 31 46 - 3068 + 3069 46 63 - 3068 + 3069 63 84 - 3068 + 3069 84 114 - 3068 + 3069 118 160 - 3191 + 3192 160 206 - 3068 + 3069 207 291 - 3068 + 3069 300 390 - 3068 + 3069 395 562 - 3068 + 3069 564 1350 - 3068 + 3069 1430 @@ -4471,7 +4463,7 @@ 1 12 - 3314 + 3315 13 @@ -4481,27 +4473,27 @@ 26 34 - 3191 + 3192 34 42 - 3191 + 3192 42 50 - 3068 + 3069 50 61 - 3068 + 3069 61 67 - 3314 + 3315 67 @@ -4511,27 +4503,27 @@ 76 88 - 3191 + 3192 89 102 - 3068 + 3069 102 116 - 3314 + 3315 116 132 - 3068 + 3069 132 364 - 1595 + 1596 @@ -4547,32 +4539,32 @@ 1 2 - 4878521 + 4879594 2 3 - 768076 + 768245 3 4 - 535333 + 535451 4 12 - 558043 + 558166 12 97 - 555220 + 555342 97 639 - 86173 + 86192 @@ -4588,27 +4580,27 @@ 1 2 - 4939899 + 4940984 2 3 - 1200296 + 1200560 3 6 - 629609 + 629747 6 56 - 554851 + 554973 56 329 - 56712 + 56725 @@ -4624,27 +4616,27 @@ 1 2 - 5552936 + 5554157 2 3 - 476534 + 476638 3 7 - 568968 + 569093 7 25 - 556938 + 557061 25 94 - 225991 + 226041 @@ -4660,12 +4652,12 @@ 1 2 - 6921775 + 6923297 2 85 - 459594 + 459695 @@ -4681,32 +4673,32 @@ 1 2 - 4946036 + 4947124 2 3 - 731004 + 731165 3 4 - 528091 + 528207 4 12 - 576088 + 576214 12 71 - 554483 + 554605 71 252 - 45664 + 45674 @@ -4903,7 +4895,7 @@ 226 - 548 + 547 1718 @@ -4979,7 +4971,7 @@ 225 - 550 + 549 1718 @@ -5026,7 +5018,7 @@ 1 2 - 2086 + 2087 2 @@ -5036,7 +5028,7 @@ 5 8 - 1595 + 1596 8 @@ -5070,23 +5062,23 @@ 74 - 87 - 1964 + 85 + 1718 - 87 - 99 + 85 + 97 1718 - 100 - 160 + 98 + 155 1718 - 261 + 155 299 - 245 + 491 @@ -5102,32 +5094,32 @@ 1 2 - 4876312 + 4877384 2 3 - 771391 + 771560 3 4 - 534597 + 534714 4 12 - 556938 + 557061 12 94 - 553746 + 553868 94 622 - 89365 + 89385 @@ -5143,27 +5135,27 @@ 1 2 - 4936952 + 4938038 2 3 - 1203856 + 1204121 3 6 - 622121 + 622258 6 51 - 554728 + 554850 51 329 - 64691 + 64706 @@ -5179,12 +5171,12 @@ 1 2 - 6938592 + 6940118 2 15 - 443758 + 443856 @@ -5200,27 +5192,27 @@ 1 2 - 5551586 + 5552806 2 3 - 475061 + 475165 3 7 - 573019 + 573268 7 25 - 559761 + 559762 25 89 - 222922 + 222971 @@ -5236,32 +5228,32 @@ 1 2 - 4944563 + 4945650 2 3 - 736160 + 736322 3 4 - 526495 + 526611 4 12 - 577929 + 578056 12 72 - 554237 + 554359 72 252 - 42964 + 42973 @@ -5277,52 +5269,52 @@ 1 2 - 15344 + 15347 2 3 - 5646 + 5647 3 6 - 4173 + 4420 6 - 16 - 4050 + 17 + 4051 - 16 - 31 - 4173 + 17 + 32 + 4051 - 31 - 93 - 4050 + 32 + 97 + 4051 - 96 - 660 - 4050 + 107 + 663 + 4051 - 662 - 2411 - 4050 + 699 + 2462 + 4051 - 2462 - 4702 - 4050 + 2469 + 4721 + 4051 - 4720 + 4757 33780 - 3314 + 3192 @@ -5338,47 +5330,47 @@ 1 2 - 17922 + 18048 2 3 - 6014 + 6016 3 5 - 3437 + 3315 5 8 - 4541 + 4542 8 17 - 4173 + 4174 17 84 - 4050 + 4051 88 160 - 4173 + 4174 160 214 - 4050 + 4051 215 267 - 4050 + 4051 267 @@ -5399,50 +5391,50 @@ 1 2 - 15589 + 15593 2 3 - 6014 + 6139 3 7 - 4173 + 4051 7 18 - 4419 + 4420 18 40 - 4173 + 4174 41 188 - 4050 + 4051 217 747 - 4050 + 4051 - 766 + 765 2171 - 4050 + 4051 2171 2881 - 4050 + 4051 - 2891 + 2892 30763 2332 @@ -5460,47 +5452,47 @@ 1 2 - 16571 + 16575 2 3 - 6628 + 6630 3 5 - 4787 + 4788 5 9 - 4296 + 4297 9 20 - 4173 + 4174 20 32 - 4296 + 4297 33 57 - 4050 + 4051 57 76 - 4296 + 4297 76 117 - 3805 + 3806 @@ -5516,47 +5508,47 @@ 1 2 - 15589 + 15593 2 3 - 6014 + 6139 3 7 - 4173 + 4051 7 17 - 4050 + 4051 17 30 - 4050 + 4051 32 102 - 4050 + 4051 104 621 - 4050 + 4051 628 1958 - 4050 + 4051 - 1967 + 1966 2836 - 4050 + 4051 2841 @@ -5571,15 +5563,15 @@ files - 64766 + 66019 id - 64766 + 66019 name - 64766 + 66019 @@ -5593,7 +5585,7 @@ 1 2 - 64766 + 66019 @@ -5609,7 +5601,7 @@ 1 2 - 64766 + 66019 @@ -5619,15 +5611,15 @@ folders - 12305 + 12543 id - 12305 + 12543 name - 12305 + 12543 @@ -5641,7 +5633,7 @@ 1 2 - 12305 + 12543 @@ -5657,7 +5649,7 @@ 1 2 - 12305 + 12543 @@ -5667,15 +5659,15 @@ containerparent - 77050 + 78540 parent - 12305 + 12543 child - 77050 + 78540 @@ -5689,42 +5681,42 @@ 1 2 - 5989 + 6105 2 3 - 1510 + 1539 3 4 - 660 + 673 4 6 - 996 + 1015 6 10 - 965 + 983 10 16 - 996 + 1015 16 44 - 923 + 940 44 151 - 262 + 267 @@ -5740,7 +5732,7 @@ 1 2 - 77050 + 78540 @@ -5750,23 +5742,23 @@ numlines - 794223 + 794398 element_id - 793118 + 793293 num_lines - 38790 + 38799 num_code - 33512 + 33519 num_comment - 18044 + 18048 @@ -5780,12 +5772,12 @@ 1 2 - 792014 + 792188 2 3 - 1104 + 1105 @@ -5801,12 +5793,12 @@ 1 2 - 792014 + 792188 2 3 - 1104 + 1105 @@ -5822,7 +5814,7 @@ 1 2 - 792873 + 793047 2 @@ -5843,17 +5835,17 @@ 1 2 - 26269 + 26275 2 3 - 3682 + 3683 3 5 - 3314 + 3315 5 @@ -5863,7 +5855,7 @@ 39 1981 - 2577 + 2578 @@ -5879,12 +5871,12 @@ 1 2 - 26760 + 26766 2 3 - 4050 + 4051 3 @@ -5899,7 +5891,7 @@ 7 12 - 2086 + 2087 @@ -5915,12 +5907,12 @@ 1 2 - 26392 + 26398 2 3 - 4050 + 4051 3 @@ -5930,7 +5922,7 @@ 4 6 - 3191 + 3192 6 @@ -5951,12 +5943,12 @@ 1 2 - 21482 + 21486 2 3 - 3559 + 3560 3 @@ -5966,12 +5958,12 @@ 4 12 - 2577 + 2578 12 157 - 2577 + 2578 172 @@ -5992,17 +5984,17 @@ 1 2 - 21850 + 21855 2 3 - 3559 + 3560 3 4 - 2086 + 2087 4 @@ -6012,7 +6004,7 @@ 6 9 - 2700 + 2701 9 @@ -6033,12 +6025,12 @@ 1 2 - 21604 + 21609 2 3 - 4173 + 4174 3 @@ -6048,7 +6040,7 @@ 5 8 - 3068 + 3069 8 @@ -6069,7 +6061,7 @@ 1 2 - 11170 + 11173 2 @@ -6079,7 +6071,7 @@ 3 4 - 1104 + 1105 4 @@ -6110,7 +6102,7 @@ 1 2 - 11170 + 11173 2 @@ -6120,12 +6112,12 @@ 3 4 - 1104 + 1105 4 7 - 1595 + 1596 8 @@ -6151,7 +6143,7 @@ 1 2 - 11170 + 11173 2 @@ -6186,31 +6178,31 @@ diagnostics - 356 + 363 id - 356 + 363 severity - 20 + 21 error_tag - 73 + 74 error_message - 146 + 149 full_error_message - 178 + 181 location - 178 + 181 @@ -6224,7 +6216,7 @@ 1 2 - 356 + 363 @@ -6240,7 +6232,7 @@ 1 2 - 356 + 363 @@ -6256,7 +6248,7 @@ 1 2 - 356 + 363 @@ -6272,7 +6264,7 @@ 1 2 - 356 + 363 @@ -6288,7 +6280,7 @@ 1 2 - 356 + 363 @@ -6409,7 +6401,7 @@ 1 2 - 41 + 42 3 @@ -6440,7 +6432,7 @@ 1 2 - 73 + 74 @@ -6456,7 +6448,7 @@ 1 2 - 52 + 53 2 @@ -6482,7 +6474,7 @@ 1 2 - 52 + 53 3 @@ -6508,7 +6500,7 @@ 1 2 - 52 + 53 3 @@ -6534,12 +6526,12 @@ 1 2 - 104 + 106 2 3 - 31 + 32 18 @@ -6560,7 +6552,7 @@ 1 2 - 146 + 149 @@ -6576,7 +6568,7 @@ 1 2 - 146 + 149 @@ -6592,12 +6584,12 @@ 1 2 - 115 + 117 2 3 - 31 + 32 @@ -6613,12 +6605,12 @@ 1 2 - 115 + 117 2 3 - 31 + 32 @@ -6634,7 +6626,7 @@ 1 2 - 167 + 171 18 @@ -6655,7 +6647,7 @@ 1 2 - 178 + 181 @@ -6671,7 +6663,7 @@ 1 2 - 178 + 181 @@ -6687,7 +6679,7 @@ 1 2 - 178 + 181 @@ -6703,7 +6695,7 @@ 1 2 - 178 + 181 @@ -6719,7 +6711,7 @@ 1 2 - 167 + 171 18 @@ -6740,7 +6732,7 @@ 1 2 - 178 + 181 @@ -6756,7 +6748,7 @@ 1 2 - 178 + 181 @@ -6772,7 +6764,7 @@ 1 2 - 178 + 181 @@ -6788,7 +6780,7 @@ 1 2 - 178 + 181 @@ -7134,7 +7126,7 @@ pch_uses - 4118 + 4130 pch @@ -7142,11 +7134,11 @@ compilation - 4118 + 4130 id - 4118 + 4130 @@ -7342,7 +7334,7 @@ 1 2 - 4118 + 4130 @@ -7358,7 +7350,7 @@ 1 2 - 4118 + 4130 @@ -7374,7 +7366,7 @@ 1 2 - 4118 + 4130 @@ -7390,7 +7382,7 @@ 1 2 - 4118 + 4130 @@ -7516,23 +7508,23 @@ fileannotations - 4171827 + 4252500 id - 5727 + 5838 kind - 20 + 21 name - 58315 + 59443 value - 39244 + 40002 @@ -7546,12 +7538,12 @@ 1 2 - 199 + 203 2 3 - 5528 + 5635 @@ -7567,62 +7559,62 @@ 1 86 - 430 + 438 88 206 - 430 + 438 212 291 - 440 + 449 291 359 - 430 + 438 362 401 - 430 + 438 402 479 - 430 + 438 480 549 - 251 + 256 550 551 - 1321 + 1347 553 628 - 430 + 438 631 753 - 451 + 459 753 1231 - 440 + 449 1234 2155 - 241 + 245 @@ -7638,67 +7630,67 @@ 1 98 - 430 + 438 102 244 - 430 + 438 244 351 - 430 + 438 352 434 - 440 + 449 434 490 - 440 + 449 490 628 - 430 + 438 632 702 - 62 + 64 706 707 - 1321 + 1347 710 939 - 430 + 438 939 1038 - 430 + 438 1066 1853 - 430 + 438 1853 3292 - 430 + 438 3423 3742 - 20 + 21 @@ -7777,62 +7769,62 @@ 1 2 - 10951 + 11163 2 3 - 4332 + 4416 3 5 - 5024 + 5122 5 7 - 4070 + 4148 7 9 - 4563 + 4651 9 16 - 4301 + 4384 16 19 - 4856 + 4950 19 27 - 4227 + 4309 27 47 - 4804 + 4897 47 128 - 4888 + 4982 128 459 - 4594 + 4683 459 546 - 1699 + 1732 @@ -7848,7 +7840,7 @@ 1 2 - 58315 + 59443 @@ -7864,57 +7856,57 @@ 1 2 - 11507 + 11730 2 3 - 7636 + 7784 3 4 - 4070 + 4148 4 6 - 4038 + 4116 6 8 - 3398 + 3464 8 11 - 4710 + 4801 11 17 - 5360 + 5464 17 23 - 4668 + 4758 23 41 - 4647 + 4737 41 95 - 4437 + 4523 95 1726 - 3839 + 3913 @@ -7930,72 +7922,72 @@ 1 2 - 3335 + 3400 2 4 - 1625 + 1657 4 5 - 3168 + 3229 5 8 - 2444 + 2491 8 14 - 2947 + 3004 14 17 - 1919 + 1956 17 24 - 3021 + 3079 24 51 - 3514 + 3582 51 58 - 3010 + 3068 58 80 - 2958 + 3015 81 151 - 3063 + 3122 151 334 - 2958 + 3015 334 473 - 2979 + 3036 473 547 - 2297 + 2341 @@ -8011,7 +8003,7 @@ 1 2 - 39233 + 39992 2 @@ -8032,72 +8024,72 @@ 1 2 - 3377 + 3443 2 4 - 1898 + 1935 4 5 - 3031 + 3090 5 8 - 2465 + 2512 8 14 - 3461 + 3528 14 18 - 3430 + 3496 18 28 - 3178 + 3240 28 34 - 3126 + 3186 34 41 - 3178 + 3240 41 66 - 2968 + 3026 66 92 - 3052 + 3111 92 113 - 2968 + 3026 113 145 - 3010 + 3068 145 172 - 94 + 96 @@ -8107,15 +8099,15 @@ inmacroexpansion - 150039073 + 149973979 id - 24678024 + 24663860 inv - 3706403 + 3704596 @@ -8129,37 +8121,37 @@ 1 3 - 2210101 + 2207729 3 5 - 1475401 + 1468685 5 6 - 1620834 + 1626701 6 7 - 6584434 + 6580830 7 8 - 8721502 + 8716496 8 9 - 3558069 + 3556027 9 22 - 507680 + 507389 @@ -8175,57 +8167,57 @@ 1 2 - 531859 + 529077 2 3 - 743444 + 740947 3 4 - 481650 + 480815 4 7 - 275382 + 280651 7 8 - 282234 + 282072 8 9 - 330341 + 330155 9 10 - 3047 + 3041 10 11 - 444778 + 444522 11 337 - 307886 + 307708 339 423 - 281836 + 281674 423 7616 - 23941 + 23928 @@ -8235,15 +8227,15 @@ affectedbymacroexpansion - 48749819 + 48637828 id - 7046758 + 7021712 inv - 3804211 + 3802035 @@ -8257,37 +8249,37 @@ 1 2 - 3847809 + 3845602 2 3 - 766524 + 766084 3 4 - 361945 + 361737 4 5 - 772958 + 751511 5 12 - 535313 + 535006 12 50 - 556427 + 556107 50 9900 - 205778 + 205660 @@ -8303,67 +8295,67 @@ 1 4 - 313336 + 313742 4 7 - 316698 + 319104 7 9 - 301174 + 300107 9 12 - 343037 + 342542 12 13 - 456135 + 460448 13 14 - 226164 + 224633 14 15 - 408155 + 409403 15 16 - 166476 + 165317 16 17 - 377786 + 377187 17 18 - 200694 + 202389 18 20 - 344354 + 342019 20 - 25 - 285475 + 26 + 297274 - 25 + 26 207 - 64720 + 47865 @@ -8373,19 +8365,19 @@ macroinvocations - 40397045 + 40373865 id - 40397045 + 40373865 macro_id - 182471 + 182367 location - 5926523 + 5923123 kind @@ -8403,7 +8395,7 @@ 1 2 - 40397045 + 40373865 @@ -8419,7 +8411,7 @@ 1 2 - 40397045 + 40373865 @@ -8435,7 +8427,7 @@ 1 2 - 40397045 + 40373865 @@ -8451,47 +8443,47 @@ 1 2 - 61114 + 61079 2 3 - 27615 + 27600 3 4 - 18083 + 18073 4 5 - 10022 + 10016 5 7 - 13835 + 13827 7 13 - 14597 + 14589 13 33 - 13726 + 13718 33 187 - 13726 + 13718 190 72214 - 9749 + 9744 @@ -8507,42 +8499,42 @@ 1 2 - 77673 + 77628 2 3 - 30666 + 30648 3 4 - 14379 + 14371 4 5 - 10294 + 10288 5 8 - 14053 + 14044 8 18 - 14107 + 14099 18 90 - 13726 + 13718 90 12207 - 7571 + 7566 @@ -8558,12 +8550,12 @@ 1 2 - 177950 + 177848 2 3 - 4520 + 4518 @@ -8579,17 +8571,17 @@ 1 2 - 5262380 + 5259361 2 4 - 429653 + 429406 4 72214 - 234490 + 234355 @@ -8605,12 +8597,12 @@ 1 2 - 5904354 + 5900967 2 37 - 22168 + 22156 @@ -8626,7 +8618,7 @@ 1 2 - 5926523 + 5923123 @@ -8699,15 +8691,15 @@ macroparent - 33692864 + 33673531 id - 33692864 + 33673531 parent_id - 15944993 + 15935844 @@ -8721,7 +8713,7 @@ 1 2 - 33692864 + 33673531 @@ -8737,27 +8729,27 @@ 1 2 - 7816769 + 7812284 2 3 - 1596166 + 1595250 3 4 - 4708483 + 4705781 4 5 - 1297402 + 1296657 5 205 - 526172 + 525870 @@ -8767,15 +8759,15 @@ macrolocationbind - 6005206 + 6014601 id - 4196566 + 4204073 location - 2266167 + 2268452 @@ -8789,27 +8781,27 @@ 1 2 - 3275759 + 3282337 2 3 - 487614 + 488105 3 4 - 8639 + 8647 4 5 - 411573 + 411988 5 17 - 12979 + 12993 @@ -8825,27 +8817,27 @@ 1 2 - 1328980 + 1330299 2 3 - 479787 + 480271 3 4 - 7805 + 7812 4 5 - 425601 + 426051 5 522 - 23992 + 24016 @@ -8855,19 +8847,19 @@ macro_argument_unexpanded - 81936815 + 83523288 invocation - 26104126 + 26610301 argument_index - 692 + 705 text - 340922 + 347515 @@ -8881,22 +8873,22 @@ 1 2 - 9611464 + 9798055 2 3 - 9706317 + 9894700 3 4 - 4968887 + 5064942 4 67 - 1817457 + 1852603 @@ -8912,22 +8904,22 @@ 1 2 - 9792851 + 9982950 2 3 - 9723783 + 9912504 3 4 - 4813253 + 4906299 4 67 - 1774237 + 1808547 @@ -8943,17 +8935,17 @@ 46457 46458 - 608 + 620 46659 173253 - 52 + 53 - 646919 - 2488418 - 31 + 646916 + 2488547 + 32 @@ -8969,17 +8961,17 @@ 2 3 - 608 + 620 13 1115 - 52 + 53 7702 22873 - 31 + 32 @@ -8995,57 +8987,57 @@ 1 2 - 39432 + 40195 2 3 - 61882 + 63078 3 4 - 20844 + 21247 4 5 - 34449 + 35126 5 6 - 38992 + 39746 6 9 - 30600 + 31191 9 15 - 28774 + 29331 15 26 - 25711 + 26198 26 57 - 26959 + 27481 57 517 - 25837 + 26337 518 486640 - 7437 + 7581 @@ -9061,17 +9053,17 @@ 1 2 - 241517 + 246187 2 3 - 89261 + 90987 3 9 - 10144 + 10340 @@ -9081,19 +9073,19 @@ macro_argument_expanded - 81936815 + 83523288 invocation - 26104126 + 26610301 argument_index - 692 + 705 text - 206479 + 210472 @@ -9107,22 +9099,22 @@ 1 2 - 9611464 + 9798055 2 3 - 9706317 + 9894700 3 4 - 4968887 + 5064942 4 67 - 1817457 + 1852603 @@ -9138,22 +9130,22 @@ 1 2 - 12550907 + 12794618 2 3 - 8372817 + 8535135 3 4 - 4196783 + 4277907 4 9 - 983618 + 1002639 @@ -9169,17 +9161,17 @@ 46457 46458 - 608 + 620 46659 173253 - 52 + 53 - 646919 - 2488418 - 31 + 646916 + 2488547 + 32 @@ -9195,17 +9187,17 @@ 1 2 - 597 + 609 2 96 - 52 + 53 950 16173 - 41 + 42 @@ -9221,57 +9213,57 @@ 1 2 - 21683 + 22102 2 3 - 26634 + 27139 3 4 - 43167 + 44012 4 5 - 15924 + 16253 5 6 - 3251 + 3314 6 7 - 18169 + 18520 7 10 - 18830 + 19194 10 19 - 18211 + 18541 19 51 - 15661 + 15964 51 251 - 15494 + 15793 251 - 1169168 - 9451 + 1169187 + 9634 @@ -9287,17 +9279,17 @@ 1 2 - 104336 + 106353 2 3 - 88306 + 90014 3 66 - 13836 + 14104 @@ -9307,15 +9299,15 @@ functions - 3994932 + 3995810 id - 3994932 + 3995810 name - 1666273 + 1666640 kind @@ -9333,7 +9325,7 @@ 1 2 - 3994932 + 3995810 @@ -9349,7 +9341,7 @@ 1 2 - 3994932 + 3995810 @@ -9365,17 +9357,17 @@ 1 2 - 1421746 + 1422058 2 4 - 138467 + 138497 4 3162 - 106060 + 106083 @@ -9391,7 +9383,7 @@ 1 2 - 1663450 + 1663816 2 @@ -9498,26 +9490,26 @@ builtin_functions - 30715 + 31213 id - 30715 + 31213 function_entry_point - 1124932 + 1131527 id - 1121608 + 1128150 entry_point - 1124932 + 1131527 @@ -9531,12 +9523,12 @@ 1 2 - 1118822 + 1125314 2 17 - 2786 + 2836 @@ -9552,7 +9544,7 @@ 1 2 - 1124932 + 1131527 @@ -9562,15 +9554,15 @@ function_return_type - 4011995 + 4012877 id - 3994932 + 3995810 return_type - 610950 + 611084 @@ -9584,12 +9576,12 @@ 1 2 - 3977869 + 3978744 2 3 - 17062 + 17066 @@ -9605,22 +9597,22 @@ 1 2 - 304800 + 304867 2 3 - 211874 + 211921 3 5 - 47506 + 47516 5 464 - 45910 + 45920 475 @@ -9905,59 +9897,59 @@ purefunctions - 130740 + 131114 id - 130740 + 131114 function_deleted - 87523 + 87628 id - 87523 + 87628 function_defaulted - 51363 + 51425 id - 51363 + 51425 function_prototyped - 3993459 + 3994337 id - 3993459 + 3994337 deduction_guide_for_class - 5769 + 5770 id - 5769 + 5770 class_template - 2209 + 2210 @@ -9971,7 +9963,7 @@ 1 2 - 5769 + 5770 @@ -9987,7 +9979,7 @@ 1 2 - 1104 + 1105 2 @@ -10022,15 +10014,15 @@ member_function_this_type - 662507 + 670714 id - 662507 + 670714 this_type - 173084 + 227880 @@ -10044,7 +10036,7 @@ 1 2 - 662507 + 670714 @@ -10060,37 +10052,32 @@ 1 2 - 46524 + 100108 2 3 - 36335 + 59175 3 4 - 31916 + 22091 4 5 - 19763 + 13879 5 - 6 - 12643 - - - 6 - 10 - 14362 + 8 + 18520 - 10 - 65 - 11538 + 8 + 152 + 14104 @@ -10100,27 +10087,27 @@ fun_decls - 4154268 + 4155304 id - 4148376 + 4149410 function - 3974186 + 3975060 type_id - 604076 + 604209 name - 1664800 + 1665166 location - 2768243 + 2768852 @@ -10134,7 +10121,7 @@ 1 2 - 4148376 + 4149410 @@ -10150,12 +10137,12 @@ 1 2 - 4142483 + 4143517 2 3 - 5892 + 5893 @@ -10171,7 +10158,7 @@ 1 2 - 4148376 + 4149410 @@ -10187,7 +10174,7 @@ 1 2 - 4148376 + 4149410 @@ -10203,12 +10190,12 @@ 1 2 - 3814851 + 3815567 2 5 - 159335 + 159493 @@ -10224,12 +10211,12 @@ 1 2 - 3956142 + 3957011 2 3 - 18044 + 18048 @@ -10245,7 +10232,7 @@ 1 2 - 3974186 + 3975060 @@ -10261,12 +10248,12 @@ 1 2 - 3835842 + 3836562 2 4 - 138344 + 138497 @@ -10282,26 +10269,26 @@ 1 2 - 290192 + 290256 2 3 - 219240 + 219288 3 5 - 48365 + 48376 5 506 - 45419 + 45429 555 - 10332 + 10333 859 @@ -10318,22 +10305,22 @@ 1 2 - 300749 + 300815 2 3 - 210401 + 210447 3 5 - 47628 + 47639 5 9941 - 45296 + 45306 @@ -10349,22 +10336,22 @@ 1 2 - 485986 + 486093 2 3 - 52293 + 52305 3 7 - 49347 + 49358 7 2238 - 16449 + 16452 @@ -10380,22 +10367,22 @@ 1 2 - 449159 + 449258 2 3 - 69356 + 69371 3 6 - 55239 + 55251 6 4756 - 30320 + 30327 @@ -10411,22 +10398,22 @@ 1 2 - 1310039 + 1310327 2 3 - 190883 + 190925 3 11 - 127787 + 127693 11 3169 - 36089 + 36220 @@ -10442,17 +10429,17 @@ 1 2 - 1421255 + 1421567 2 4 - 138958 + 138988 4 3162 - 104587 + 104610 @@ -10468,12 +10455,12 @@ 1 2 - 1576417 + 1576763 2 1596 - 88383 + 88402 @@ -10489,17 +10476,17 @@ 1 2 - 1345392 + 1345688 2 3 - 205000 + 205045 3 1592 - 114407 + 114432 @@ -10515,17 +10502,17 @@ 1 2 - 2376164 + 2376564 2 3 - 251770 + 251948 3 211 - 140308 + 140339 @@ -10541,17 +10528,17 @@ 1 2 - 2395928 + 2396332 2 3 - 232497 + 232671 3 211 - 139817 + 139848 @@ -10567,12 +10554,12 @@ 1 2 - 2655309 + 2655893 2 211 - 112934 + 112959 @@ -10588,12 +10575,12 @@ 1 2 - 2729698 + 2730298 2 8 - 38545 + 38553 @@ -10603,22 +10590,22 @@ fun_def - 1397440 + 1397747 id - 1397440 + 1397747 fun_specialized - 7841 + 7864 id - 7841 + 7864 @@ -10636,11 +10623,11 @@ fun_decl_specifiers - 4214909 + 4215835 id - 1723968 + 1724347 name @@ -10658,22 +10645,22 @@ 1 2 - 360776 + 360855 2 3 - 258030 + 258087 3 4 - 1082574 + 1082812 4 5 - 22586 + 22591 @@ -10870,26 +10857,26 @@ fun_decl_empty_throws - 433439 + 434681 fun_decl - 433439 + 434681 fun_decl_noexcept - 139743 + 140571 fun_decl - 139743 + 140571 constant - 139307 + 140132 @@ -10903,7 +10890,7 @@ 1 2 - 139743 + 140571 @@ -10919,12 +10906,12 @@ 1 2 - 138870 + 139693 2 3 - 436 + 438 @@ -10934,26 +10921,26 @@ fun_decl_empty_noexcept - 1156104 + 1156481 fun_decl - 1156104 + 1156481 fun_decl_typedef_type - 2760 + 2788 fun_decl - 2760 + 2788 typedeftype_id - 124 + 125 @@ -10967,7 +10954,7 @@ 1 2 - 2760 + 2788 @@ -11043,11 +11030,11 @@ fun_requires - 28932 + 28966 id - 10050 + 10062 kind @@ -11055,7 +11042,7 @@ constraint - 28697 + 28731 @@ -11069,7 +11056,7 @@ 1 2 - 9986 + 9998 2 @@ -11090,27 +11077,27 @@ 1 2 - 7227 + 7236 2 3 - 491 + 492 3 6 - 855 + 856 6 13 - 320 + 321 13 14 - 1133 + 1134 19 @@ -11173,7 +11160,7 @@ 1 2 - 28461 + 28495 2 @@ -11194,7 +11181,7 @@ 1 2 - 28697 + 28731 @@ -11204,19 +11191,19 @@ param_decl_bind - 7218351 + 7220306 id - 7218351 + 7220306 index - 7856 + 7858 fun_decl - 3488446 + 3489335 @@ -11230,7 +11217,7 @@ 1 2 - 7218351 + 7220306 @@ -11246,7 +11233,7 @@ 1 2 - 7218351 + 7220306 @@ -11262,7 +11249,7 @@ 2 3 - 3928 + 3929 6 @@ -11281,12 +11268,12 @@ 343 - 16310 + 16311 613 - 28418 - 28419 + 28419 + 28420 122 @@ -11303,7 +11290,7 @@ 2 3 - 3928 + 3929 6 @@ -11322,12 +11309,12 @@ 343 - 16310 + 16311 613 - 28418 - 28419 + 28419 + 28420 122 @@ -11344,27 +11331,27 @@ 1 2 - 1486438 + 1486764 2 3 - 972463 + 972677 3 4 - 592291 + 592544 4 5 - 285895 + 285958 5 65 - 151356 + 151389 @@ -11380,27 +11367,27 @@ 1 2 - 1486438 + 1486764 2 3 - 972463 + 972677 3 4 - 592291 + 592544 4 5 - 285895 + 285958 5 65 - 151356 + 151389 @@ -11410,27 +11397,27 @@ var_decls - 9442668 + 9417486 id - 9436285 + 9411101 variable - 9098463 + 9072837 type_id - 1440773 + 1441089 name - 838906 + 839090 location - 6175671 + 6177029 @@ -11444,7 +11431,7 @@ 1 2 - 9436285 + 9411101 @@ -11460,12 +11447,12 @@ 1 2 - 9429901 + 9404717 2 3 - 6383 + 6384 @@ -11481,7 +11468,7 @@ 1 2 - 9436285 + 9411101 @@ -11497,7 +11484,7 @@ 1 2 - 9436285 + 9411101 @@ -11513,12 +11500,12 @@ 1 2 - 8778319 + 8752254 2 5 - 320144 + 320583 @@ -11534,12 +11521,12 @@ 1 2 - 9046170 + 9020532 2 3 - 52293 + 52305 @@ -11555,12 +11542,12 @@ 1 2 - 8994735 + 8969087 2 4 - 103727 + 103750 @@ -11576,12 +11563,12 @@ 1 2 - 8857496 + 8831448 2 4 - 240967 + 241389 @@ -11597,27 +11584,27 @@ 1 2 - 839151 + 839213 2 3 - 280617 + 280556 3 5 - 127296 + 127570 5 11 - 112934 + 112836 11 - 2963 - 80772 + 2786 + 80913 @@ -11633,27 +11620,27 @@ 1 2 - 860388 + 860454 2 3 - 265764 + 265699 3 5 - 122141 + 122413 5 11 - 112566 + 112468 11 - 2886 - 79913 + 2709 + 80053 @@ -11669,22 +11656,22 @@ 1 2 - 1104793 + 1105036 2 3 - 191006 + 191048 3 7 - 116371 + 116397 7 1038 - 28601 + 28608 @@ -11700,27 +11687,27 @@ 1 2 - 974304 + 974519 2 3 - 215189 + 215236 3 5 - 104587 + 104610 5 15 - 109865 + 109889 15 2622 - 36826 + 36834 @@ -11736,32 +11723,32 @@ 1 2 - 457507 + 457239 2 3 - 161668 + 162194 3 4 - 59290 + 59303 4 7 - 64814 + 64583 7 24 - 63341 + 63969 24 27139 - 32284 + 31800 @@ -11777,32 +11764,32 @@ 1 2 - 468432 + 468166 2 3 - 161668 + 162194 3 4 - 55116 + 55129 4 8 - 71197 + 70845 8 - 44 - 63586 + 43 + 63355 - 44 + 43 26704 - 18904 + 19399 @@ -11818,22 +11805,22 @@ 1 2 - 642744 + 642885 2 3 - 110847 + 110871 3 11 - 64078 + 64092 11 3463 - 21236 + 21241 @@ -11849,27 +11836,27 @@ 1 2 - 484758 + 484865 2 3 - 180940 + 180980 3 4 - 51311 + 51322 4 8 - 63955 + 63969 8 22619 - 57940 + 57953 @@ -11885,17 +11872,17 @@ 1 2 - 5670781 + 5668589 2 16 - 465117 + 468780 16 2943 - 39772 + 39658 @@ -11911,12 +11898,12 @@ 1 2 - 5751431 + 5749257 2 2935 - 424240 + 427771 @@ -11932,12 +11919,12 @@ 1 2 - 5874922 + 5876213 2 2555 - 300749 + 300815 @@ -11953,12 +11940,12 @@ 1 2 - 6163519 + 6164873 2 5 - 12152 + 12155 @@ -11968,33 +11955,33 @@ var_def - 3707686 + 3684804 id - 3707686 + 3684804 var_specialized - 641 + 642 id - 641 + 642 var_decl_specifiers - 481567 + 481672 id - 481567 + 481672 name @@ -12012,7 +11999,7 @@ 1 2 - 481567 + 481672 @@ -12053,18 +12040,18 @@ is_structured_binding - 940 + 942 id - 940 + 942 var_requires - 384 + 385 id @@ -12072,7 +12059,7 @@ constraint - 384 + 385 @@ -12112,7 +12099,7 @@ 1 2 - 384 + 385 @@ -12122,19 +12109,19 @@ type_decls - 1639390 + 1639750 id - 1639390 + 1639750 type_id - 1620731 + 1621088 location - 1543273 + 1543612 @@ -12148,7 +12135,7 @@ 1 2 - 1639390 + 1639750 @@ -12164,7 +12151,7 @@ 1 2 - 1639390 + 1639750 @@ -12180,12 +12167,12 @@ 1 2 - 1604650 + 1605003 2 10 - 16080 + 16084 @@ -12201,12 +12188,12 @@ 1 2 - 1604773 + 1605126 2 10 - 15958 + 15961 @@ -12222,12 +12209,12 @@ 1 2 - 1513198 + 1513531 2 64 - 30074 + 30081 @@ -12243,12 +12230,12 @@ 1 2 - 1513321 + 1513653 2 64 - 29952 + 29958 @@ -12258,37 +12245,37 @@ type_def - 1092272 + 1092512 id - 1092272 + 1092512 type_decl_top - 676616 + 676228 type_decl - 676616 + 676228 type_requires - 7634 + 7643 id - 2031 + 2033 constraint - 7612 + 7621 @@ -12302,17 +12289,17 @@ 1 2 - 1005 + 1006 2 5 - 106 + 107 5 6 - 598 + 599 6 @@ -12338,7 +12325,7 @@ 1 2 - 7591 + 7600 2 @@ -12353,23 +12340,23 @@ namespace_decls - 405513 + 406675 id - 405513 + 406675 namespace_id - 1768 + 1773 location - 405513 + 406675 bodylocation - 405513 + 406675 @@ -12383,7 +12370,7 @@ 1 2 - 405513 + 406675 @@ -12399,7 +12386,7 @@ 1 2 - 405513 + 406675 @@ -12415,7 +12402,7 @@ 1 2 - 405513 + 406675 @@ -12431,12 +12418,12 @@ 1 2 - 363 + 364 2 3 - 185 + 186 3 @@ -12497,12 +12484,12 @@ 1 2 - 363 + 364 2 3 - 185 + 186 3 @@ -12563,12 +12550,12 @@ 1 2 - 363 + 364 2 3 - 185 + 186 3 @@ -12629,7 +12616,7 @@ 1 2 - 405513 + 406675 @@ -12645,7 +12632,7 @@ 1 2 - 405513 + 406675 @@ -12661,7 +12648,7 @@ 1 2 - 405513 + 406675 @@ -12677,7 +12664,7 @@ 1 2 - 405513 + 406675 @@ -12693,7 +12680,7 @@ 1 2 - 405513 + 406675 @@ -12709,7 +12696,7 @@ 1 2 - 405513 + 406675 @@ -12719,23 +12706,23 @@ usings - 269966 + 275176 id - 269966 + 275176 element_id - 58399 + 59517 location - 26666 + 27181 kind - 20 + 21 @@ -12749,7 +12736,7 @@ 1 2 - 269966 + 275176 @@ -12765,7 +12752,7 @@ 1 2 - 269966 + 275176 @@ -12781,7 +12768,7 @@ 1 2 - 269966 + 275176 @@ -12797,17 +12784,17 @@ 1 2 - 50730 + 51701 2 5 - 5339 + 5442 5 134 - 2328 + 2373 @@ -12823,17 +12810,17 @@ 1 2 - 50730 + 51701 2 5 - 5339 + 5442 5 134 - 2328 + 2373 @@ -12849,7 +12836,7 @@ 1 2 - 58399 + 59517 @@ -12865,22 +12852,22 @@ 1 2 - 21043 + 21450 2 4 - 2276 + 2320 4 132 - 1930 + 1967 145 364 - 1416 + 1443 @@ -12896,22 +12883,22 @@ 1 2 - 21043 + 21450 2 4 - 2276 + 2320 4 132 - 1930 + 1967 145 364 - 1416 + 1443 @@ -12927,7 +12914,7 @@ 1 2 - 26666 + 27181 @@ -12946,8 +12933,8 @@ 10 - 25342 - 25343 + 25341 + 25342 10 @@ -12967,8 +12954,8 @@ 10 - 5353 - 5354 + 5352 + 5353 10 @@ -13000,15 +12987,15 @@ using_container - 571131 + 582165 parent - 20151 + 20541 child - 269966 + 275176 @@ -13022,42 +13009,42 @@ 1 2 - 8958 + 9131 2 3 - 1584 + 1625 3 6 - 1762 + 1785 6 7 - 2244 + 2288 7 26 - 1521 + 1550 26 136 - 797 + 812 145 146 - 2601 + 2651 146 437 - 681 + 695 @@ -13073,27 +13060,27 @@ 1 2 - 96332 + 98184 2 3 - 119536 + 121848 3 4 - 19585 + 19964 4 5 - 26330 + 26839 5 65 - 8182 + 8340 @@ -13103,27 +13090,27 @@ static_asserts - 171628 + 172120 id - 171628 + 172120 condition - 171628 + 172120 message - 38481 + 38591 location - 22434 + 22499 enclosing - 6202 + 6220 @@ -13137,7 +13124,7 @@ 1 2 - 171628 + 172120 @@ -13153,7 +13140,7 @@ 1 2 - 171628 + 172120 @@ -13169,7 +13156,7 @@ 1 2 - 171628 + 172120 @@ -13185,7 +13172,7 @@ 1 2 - 171628 + 172120 @@ -13201,7 +13188,7 @@ 1 2 - 171628 + 172120 @@ -13217,7 +13204,7 @@ 1 2 - 171628 + 172120 @@ -13233,7 +13220,7 @@ 1 2 - 171628 + 172120 @@ -13249,7 +13236,7 @@ 1 2 - 171628 + 172120 @@ -13265,32 +13252,32 @@ 1 2 - 28330 + 28411 2 3 - 662 + 664 3 4 - 3585 + 3595 4 10 - 2043 + 2049 12 17 - 3101 + 3110 17 513 - 759 + 761 @@ -13306,32 +13293,32 @@ 1 2 - 28330 + 28411 2 3 - 662 + 664 3 4 - 3585 + 3595 4 10 - 2043 + 2049 12 17 - 3101 + 3110 17 513 - 759 + 761 @@ -13347,12 +13334,12 @@ 1 2 - 35679 + 35781 2 33 - 2802 + 2810 @@ -13368,27 +13355,27 @@ 1 2 - 30147 + 30233 2 3 - 355 + 356 3 4 - 3351 + 3361 4 12 - 1865 + 1870 12 43 - 2761 + 2769 @@ -13404,37 +13391,37 @@ 1 2 - 4255 + 4268 2 3 - 3690 + 3701 3 4 - 1720 + 1725 4 5 - 104 + 105 5 6 - 4692 + 4705 6 13 - 428 + 429 14 15 - 2632 + 2640 16 @@ -13444,12 +13431,12 @@ 17 18 - 4369 + 4381 19 52 - 492 + 494 @@ -13465,37 +13452,37 @@ 1 2 - 4255 + 4268 2 3 - 3690 + 3701 3 4 - 1720 + 1725 4 5 - 104 + 105 5 6 - 4692 + 4705 6 13 - 428 + 429 14 15 - 2632 + 2640 16 @@ -13505,12 +13492,12 @@ 17 18 - 4369 + 4381 19 52 - 492 + 494 @@ -13526,17 +13513,17 @@ 1 2 - 6832 + 6851 2 3 - 7631 + 7653 3 4 - 7736 + 7758 4 @@ -13557,32 +13544,32 @@ 1 2 - 5055 + 5069 2 3 - 8019 + 8042 3 4 - 1461 + 1465 4 5 - 4716 + 4729 5 13 - 476 + 477 13 14 - 2632 + 2640 16 @@ -13603,22 +13590,22 @@ 1 2 - 5152 + 5167 2 3 - 476 + 477 3 210 - 476 + 477 223 11052 - 96 + 97 @@ -13634,22 +13621,22 @@ 1 2 - 5152 + 5167 2 3 - 476 + 477 3 210 - 476 + 477 223 11052 - 96 + 97 @@ -13665,17 +13652,17 @@ 1 2 - 5305 + 5321 2 3 - 476 + 477 3 2936 - 419 + 421 @@ -13691,17 +13678,17 @@ 1 2 - 5289 + 5304 2 3 - 492 + 494 3 1929 - 419 + 421 @@ -13711,23 +13698,23 @@ params - 6970509 + 6972041 id - 6930613 + 6932137 function - 3361394 + 3362133 index - 7856 + 7858 type_id - 1206679 + 1206945 @@ -13741,7 +13728,7 @@ 1 2 - 6930613 + 6932137 @@ -13757,7 +13744,7 @@ 1 2 - 6930613 + 6932137 @@ -13773,12 +13760,12 @@ 1 2 - 6890718 + 6892233 2 3 - 39895 + 39904 @@ -13794,27 +13781,27 @@ 1 2 - 1450593 + 1450912 2 3 - 920292 + 920495 3 4 - 570073 + 570198 4 5 - 276443 + 276504 5 65 - 143991 + 144023 @@ -13830,27 +13817,27 @@ 1 2 - 1450593 + 1450912 2 3 - 920292 + 920495 3 4 - 570073 + 570198 4 5 - 276443 + 276504 5 65 - 143991 + 144023 @@ -13866,22 +13853,22 @@ 1 2 - 1757357 + 1757744 2 3 - 1019846 + 1020071 3 4 - 431360 + 431455 4 11 - 152829 + 152863 @@ -13897,7 +13884,7 @@ 2 3 - 3928 + 3929 6 @@ -13938,7 +13925,7 @@ 2 3 - 3928 + 3929 6 @@ -13979,7 +13966,7 @@ 1 2 - 3928 + 3929 2 @@ -14020,27 +14007,27 @@ 1 2 - 728672 + 728832 2 3 - 237039 + 237091 3 5 - 92925 + 92945 5 13 - 93539 + 93559 13 2574 - 54503 + 54515 @@ -14056,27 +14043,27 @@ 1 2 - 810672 + 810850 2 3 - 175784 + 175823 3 6 - 107042 + 107065 6 27 - 90838 + 90858 27 2562 - 22341 + 22346 @@ -14092,17 +14079,17 @@ 1 2 - 981670 + 981886 2 3 - 167683 + 167719 3 65 - 57326 + 57339 @@ -14112,15 +14099,15 @@ overrides - 159700 + 160157 new - 150954 + 151386 old - 17451 + 17501 @@ -14134,12 +14121,12 @@ 1 2 - 142215 + 142623 2 4 - 8738 + 8763 @@ -14155,32 +14142,32 @@ 1 2 - 9392 + 9419 2 3 - 2366 + 2373 3 4 - 1647 + 1652 4 6 - 1437 + 1441 6 16 - 1332 + 1336 16 230 - 1275 + 1279 @@ -14190,19 +14177,19 @@ membervariables - 1505529 + 1504665 id - 1503078 + 1502215 type_id - 458086 + 457823 name - 644370 + 644001 @@ -14216,12 +14203,12 @@ 1 2 - 1500736 + 1499874 2 4 - 2342 + 2340 @@ -14237,7 +14224,7 @@ 1 2 - 1503078 + 1502215 @@ -14253,22 +14240,22 @@ 1 2 - 339887 + 339692 2 3 - 72607 + 72565 3 10 - 35404 + 35384 10 4445 - 10185 + 10179 @@ -14284,22 +14271,22 @@ 1 2 - 357481 + 357276 2 3 - 64763 + 64726 3 57 - 34370 + 34350 60 2186 - 1470 + 1469 @@ -14315,22 +14302,22 @@ 1 2 - 423443 + 423200 2 3 - 122610 + 122539 3 5 - 58118 + 58085 5 664 - 40198 + 40175 @@ -14346,17 +14333,17 @@ 1 2 - 526499 + 526197 2 3 - 73315 + 73273 3 668 - 44555 + 44530 @@ -14366,19 +14353,19 @@ globalvariables - 661280 + 634536 id - 661280 + 634536 type_id - 10188 + 10190 name - 110724 + 110749 @@ -14392,7 +14379,7 @@ 1 2 - 661280 + 634536 @@ -14408,7 +14395,7 @@ 1 2 - 661280 + 634536 @@ -14424,7 +14411,7 @@ 1 2 - 6874 + 6875 2 @@ -14443,7 +14430,7 @@ 20 - 80 + 74 859 @@ -14465,7 +14452,7 @@ 1 2 - 6997 + 6998 2 @@ -14506,22 +14493,22 @@ 1 2 - 92679 + 92700 2 8 - 9329 + 9454 8 - 139 - 8347 + 182 + 8349 - 181 + 632 1156 - 368 + 245 @@ -14537,12 +14524,12 @@ 1 2 - 93907 + 93928 2 3 - 16571 + 16575 3 @@ -14557,19 +14544,19 @@ localvariables - 725852 + 733038 id - 725852 + 733038 type_id - 53389 + 53913 name - 101620 + 102626 @@ -14583,7 +14570,7 @@ 1 2 - 725852 + 733038 @@ -14599,7 +14586,7 @@ 1 2 - 725852 + 733038 @@ -14615,37 +14602,37 @@ 1 2 - 28869 + 29150 2 3 - 7802 + 7879 3 4 - 4041 + 4081 4 6 - 4065 + 4105 6 12 - 4113 + 4154 12 162 - 4005 + 4044 162 19347 - 492 + 497 @@ -14661,22 +14648,22 @@ 1 2 - 38308 + 38683 2 3 - 6718 + 6784 3 5 - 4477 + 4521 5 3509 - 3885 + 3923 @@ -14692,32 +14679,32 @@ 1 2 - 62532 + 63151 2 3 - 16037 + 16195 3 4 - 6538 + 6602 4 8 - 8154 + 8235 8 137 - 7630 + 7705 137 7546 - 728 + 735 @@ -14733,22 +14720,22 @@ 1 2 - 84575 + 85412 2 3 - 8410 + 8493 3 15 - 7682 + 7758 15 1509 - 952 + 961 @@ -14758,11 +14745,11 @@ autoderivation - 223904 + 224076 var - 223904 + 224076 derivation_type @@ -14780,7 +14767,7 @@ 1 2 - 223904 + 224076 @@ -14809,8 +14796,8 @@ 122 - 527 - 528 + 528 + 529 122 @@ -14826,15 +14813,15 @@ orphaned_variables - 43672 + 43930 var - 43672 + 43930 function - 40449 + 40689 @@ -14848,7 +14835,7 @@ 1 2 - 43672 + 43930 @@ -14864,12 +14851,12 @@ 1 2 - 39610 + 39844 2 47 - 839 + 844 @@ -14879,19 +14866,19 @@ enumconstants - 348112 + 347913 id - 348112 + 347913 parent - 41614 + 41590 index - 13944 + 13936 type_id @@ -14899,11 +14886,11 @@ name - 347731 + 347531 location - 320714 + 320530 @@ -14917,7 +14904,7 @@ 1 2 - 348112 + 347913 @@ -14933,7 +14920,7 @@ 1 2 - 348112 + 347913 @@ -14949,7 +14936,7 @@ 1 2 - 348112 + 347913 @@ -14965,7 +14952,7 @@ 1 2 - 348112 + 347913 @@ -14981,7 +14968,7 @@ 1 2 - 348112 + 347913 @@ -14997,57 +14984,57 @@ 1 2 - 1525 + 1524 2 3 - 5828 + 5824 3 4 - 8715 + 8710 4 5 - 5555 + 5552 5 6 - 4575 + 4572 6 7 - 2560 + 2558 7 8 - 1960 + 1959 8 10 - 2995 + 2994 10 15 - 3431 + 3429 15 33 - 3159 + 3157 33 257 - 1307 + 1306 @@ -15063,57 +15050,57 @@ 1 2 - 1525 + 1524 2 3 - 5828 + 5824 3 4 - 8715 + 8710 4 5 - 5555 + 5552 5 6 - 4575 + 4572 6 7 - 2560 + 2558 7 8 - 1960 + 1959 8 10 - 2995 + 2994 10 15 - 3431 + 3429 15 33 - 3159 + 3157 33 257 - 1307 + 1306 @@ -15129,7 +15116,7 @@ 1 2 - 41614 + 41590 @@ -15145,57 +15132,57 @@ 1 2 - 1525 + 1524 2 3 - 5828 + 5824 3 4 - 8715 + 8710 4 5 - 5555 + 5552 5 6 - 4575 + 4572 6 7 - 2560 + 2558 7 8 - 1960 + 1959 8 10 - 2995 + 2994 10 15 - 3431 + 3429 15 33 - 3159 + 3157 33 257 - 1307 + 1306 @@ -15211,52 +15198,52 @@ 1 2 - 2124 + 2123 2 3 - 6046 + 6042 3 4 - 8769 + 8764 4 5 - 5501 + 5498 5 6 - 4575 + 4572 6 7 - 2505 + 2504 7 8 - 1851 + 1850 8 11 - 3812 + 3810 11 17 - 3213 + 3211 17 165 - 3159 + 3157 256 @@ -15277,22 +15264,22 @@ 1 2 - 2777 + 2776 2 3 - 2233 + 2231 3 4 - 2287 + 2286 4 5 - 1198 + 1197 5 @@ -15302,7 +15289,7 @@ 9 12 - 1089 + 1088 12 @@ -15312,12 +15299,12 @@ 20 59 - 1089 + 1088 64 765 - 980 + 979 @@ -15333,22 +15320,22 @@ 1 2 - 2777 + 2776 2 3 - 2233 + 2231 3 4 - 2287 + 2286 4 5 - 1198 + 1197 5 @@ -15358,7 +15345,7 @@ 9 12 - 1089 + 1088 12 @@ -15368,12 +15355,12 @@ 20 59 - 1089 + 1088 64 765 - 980 + 979 @@ -15389,7 +15376,7 @@ 1 2 - 13944 + 13936 @@ -15405,22 +15392,22 @@ 1 2 - 2777 + 2776 2 3 - 2233 + 2231 3 4 - 2287 + 2286 4 5 - 1198 + 1197 5 @@ -15430,7 +15417,7 @@ 9 12 - 1089 + 1088 12 @@ -15440,12 +15427,12 @@ 20 59 - 1089 + 1088 64 762 - 980 + 979 @@ -15461,22 +15448,22 @@ 1 2 - 2777 + 2776 2 3 - 2233 + 2231 3 4 - 2287 + 2286 4 5 - 1198 + 1197 5 @@ -15486,7 +15473,7 @@ 9 12 - 1089 + 1088 12 @@ -15496,12 +15483,12 @@ 20 59 - 1089 + 1088 64 765 - 980 + 979 @@ -15597,7 +15584,7 @@ 1 2 - 347350 + 347150 2 @@ -15618,7 +15605,7 @@ 1 2 - 347350 + 347150 2 @@ -15639,7 +15626,7 @@ 1 2 - 347731 + 347531 @@ -15655,7 +15642,7 @@ 1 2 - 347731 + 347531 @@ -15671,7 +15658,7 @@ 1 2 - 347350 + 347150 2 @@ -15692,7 +15679,7 @@ 1 2 - 319679 + 319496 2 @@ -15713,7 +15700,7 @@ 1 2 - 320714 + 320530 @@ -15729,7 +15716,7 @@ 1 2 - 319679 + 319496 2 @@ -15750,7 +15737,7 @@ 1 2 - 320714 + 320530 @@ -15766,7 +15753,7 @@ 1 2 - 319679 + 319496 2 @@ -15781,19 +15768,19 @@ builtintypes - 7119 + 7121 id - 7119 + 7121 name - 7119 + 7121 kind - 7119 + 7121 size @@ -15819,7 +15806,7 @@ 1 2 - 7119 + 7121 @@ -15835,7 +15822,7 @@ 1 2 - 7119 + 7121 @@ -15851,7 +15838,7 @@ 1 2 - 7119 + 7121 @@ -15867,7 +15854,7 @@ 1 2 - 7119 + 7121 @@ -15883,7 +15870,7 @@ 1 2 - 7119 + 7121 @@ -15899,7 +15886,7 @@ 1 2 - 7119 + 7121 @@ -15915,7 +15902,7 @@ 1 2 - 7119 + 7121 @@ -15931,7 +15918,7 @@ 1 2 - 7119 + 7121 @@ -15947,7 +15934,7 @@ 1 2 - 7119 + 7121 @@ -15963,7 +15950,7 @@ 1 2 - 7119 + 7121 @@ -15979,7 +15966,7 @@ 1 2 - 7119 + 7121 @@ -15995,7 +15982,7 @@ 1 2 - 7119 + 7121 @@ -16011,7 +15998,7 @@ 1 2 - 7119 + 7121 @@ -16027,7 +16014,7 @@ 1 2 - 7119 + 7121 @@ -16043,7 +16030,7 @@ 1 2 - 7119 + 7121 @@ -16471,17 +16458,75 @@ + + bit_precise_int_types + 8 + + + id + 8 + + + bit_width + 4 + + + + + id + bit_width + + + 12 + + + 1 + 2 + 8 + + + + + + + bit_width + id + + + 12 + + + 1 + 2 + 1 + + + 2 + 3 + 2 + + + 3 + 4 + 1 + + + + + + + derivedtypes - 2997672 + 2998331 id - 2997672 + 2998331 name - 1445315 + 1445632 kind @@ -16489,7 +16534,7 @@ type_id - 1925654 + 1926078 @@ -16503,7 +16548,7 @@ 1 2 - 2997672 + 2998331 @@ -16519,7 +16564,7 @@ 1 2 - 2997672 + 2998331 @@ -16535,7 +16580,7 @@ 1 2 - 2997672 + 2998331 @@ -16551,17 +16596,17 @@ 1 2 - 1327838 + 1328130 2 23 - 108760 + 108784 23 4289 - 8715 + 8717 @@ -16577,7 +16622,7 @@ 1 2 - 1445315 + 1445632 @@ -16593,17 +16638,17 @@ 1 2 - 1327961 + 1328253 2 23 - 108638 + 108661 23 4289 - 8715 + 8717 @@ -16742,22 +16787,22 @@ 1 2 - 1302919 + 1303205 2 3 - 372438 + 372519 3 4 - 121650 + 121676 4 137 - 128647 + 128675 @@ -16773,22 +16818,22 @@ 1 2 - 1304392 + 1304679 2 3 - 372438 + 372519 3 4 - 120176 + 120203 4 137 - 128647 + 128675 @@ -16804,22 +16849,22 @@ 1 2 - 1304760 + 1305047 2 3 - 373051 + 373133 3 4 - 121895 + 121922 4 6 - 125946 + 125974 @@ -16829,11 +16874,11 @@ pointerishsize - 2221248 + 2221736 id - 2221248 + 2221736 size @@ -16855,7 +16900,7 @@ 1 2 - 2221248 + 2221736 @@ -16871,7 +16916,7 @@ 1 2 - 2221248 + 2221736 @@ -16955,19 +17000,19 @@ arraysizes - 79299 + 79317 id - 79299 + 79317 num_elements - 17553 + 17557 bytesize - 19886 + 19890 alignment @@ -16985,7 +17030,7 @@ 1 2 - 79299 + 79317 @@ -17001,7 +17046,7 @@ 1 2 - 79299 + 79317 @@ -17017,7 +17062,7 @@ 1 2 - 79299 + 79317 @@ -17038,7 +17083,7 @@ 2 3 - 10679 + 10682 3 @@ -17079,12 +17124,12 @@ 1 2 - 11538 + 11541 2 3 - 3928 + 3929 3 @@ -17094,7 +17139,7 @@ 5 11 - 1104 + 1105 @@ -17110,12 +17155,12 @@ 1 2 - 11538 + 11541 2 3 - 3928 + 3929 3 @@ -17146,7 +17191,7 @@ 2 3 - 12520 + 12523 3 @@ -17156,7 +17201,7 @@ 4 5 - 2700 + 2701 5 @@ -17166,7 +17211,7 @@ 7 17 - 1595 + 1596 24 @@ -17187,12 +17232,12 @@ 1 2 - 14362 + 14365 2 3 - 3559 + 3560 3 @@ -17218,17 +17263,17 @@ 1 2 - 14607 + 14611 2 3 - 3314 + 3315 3 5 - 1595 + 1596 5 @@ -17394,15 +17439,15 @@ typedefbase - 1757610 + 1791267 id - 1757610 + 1791267 type_id - 835234 + 851342 @@ -17416,7 +17461,7 @@ 1 2 - 1757610 + 1791267 @@ -17432,22 +17477,22 @@ 1 2 - 660833 + 673623 2 3 - 80512 + 82048 3 6 - 63707 + 64928 6 4525 - 30180 + 30742 @@ -17457,15 +17502,15 @@ decltypes - 814720 + 814253 id - 27572 + 27556 expr - 814720 + 814253 kind @@ -17473,7 +17518,7 @@ base_type - 3342 + 3340 parentheses_would_change_meaning @@ -17491,17 +17536,17 @@ 1 2 - 9740 + 9734 2 3 - 3649 + 3647 4 5 - 3627 + 3625 6 @@ -17511,12 +17556,12 @@ 23 24 - 3254 + 3252 29 30 - 3144 + 3142 32 @@ -17526,7 +17571,7 @@ 171 172 - 3078 + 3076 173 @@ -17547,7 +17592,7 @@ 1 2 - 27572 + 27556 @@ -17563,7 +17608,7 @@ 1 2 - 27572 + 27556 @@ -17579,7 +17624,7 @@ 1 2 - 27572 + 27556 @@ -17595,7 +17640,7 @@ 1 2 - 814720 + 814253 @@ -17611,7 +17656,7 @@ 1 2 - 814720 + 814253 @@ -17627,7 +17672,7 @@ 1 2 - 814720 + 814253 @@ -17643,7 +17688,7 @@ 1 2 - 814720 + 814253 @@ -17723,12 +17768,12 @@ 1 2 - 1209 + 1208 2 3 - 1033 + 1032 3 @@ -17769,7 +17814,7 @@ 1 2 - 1165 + 1164 2 @@ -17815,7 +17860,7 @@ 1 2 - 3342 + 3340 @@ -17831,7 +17876,7 @@ 1 2 - 3342 + 3340 @@ -17905,15 +17950,15 @@ type_operators - 7954 + 7964 id - 7954 + 7964 arg_type - 7184 + 7193 kind @@ -17921,7 +17966,7 @@ base_type - 5217 + 5223 @@ -17935,7 +17980,7 @@ 1 2 - 7954 + 7964 @@ -17951,7 +17996,7 @@ 1 2 - 7954 + 7964 @@ -17967,7 +18012,7 @@ 1 2 - 7954 + 7964 @@ -17983,12 +18028,12 @@ 1 2 - 6415 + 6422 2 3 - 769 + 770 @@ -18004,12 +18049,12 @@ 1 2 - 6415 + 6422 2 3 - 769 + 770 @@ -18025,7 +18070,7 @@ 1 2 - 7163 + 7172 2 @@ -18139,12 +18184,12 @@ 1 2 - 3571 + 3575 2 3 - 940 + 942 3 @@ -18170,12 +18215,12 @@ 1 2 - 3720 + 3725 2 3 - 1026 + 1027 3 @@ -18201,12 +18246,12 @@ 1 2 - 4020 + 4024 2 3 - 1176 + 1177 3 @@ -18221,19 +18266,19 @@ usertypes - 4203790 + 4280805 id - 4203790 + 4280805 name - 950343 + 966486 kind - 125 + 128 @@ -18247,7 +18292,7 @@ 1 2 - 4203790 + 4280805 @@ -18263,7 +18308,7 @@ 1 2 - 4203790 + 4280805 @@ -18279,22 +18324,22 @@ 1 2 - 681205 + 692667 2 3 - 160794 + 163369 3 8 - 72561 + 73996 8 - 33452 - 35782 + 33429 + 36452 @@ -18310,12 +18355,12 @@ 1 2 - 898500 + 913640 2 10 - 51842 + 52845 @@ -18349,8 +18394,8 @@ 10 - 1662 - 1663 + 1557 + 1558 10 @@ -18369,8 +18414,8 @@ 10 - 21723 - 21724 + 21713 + 21714 10 @@ -18379,13 +18424,13 @@ 10 - 99064 - 99065 + 98810 + 98811 10 - 167547 - 167548 + 167516 + 167517 10 @@ -18450,13 +18495,13 @@ 10 - 12272 - 12273 + 12260 + 12261 10 - 61190 - 61191 + 60993 + 60994 10 @@ -18467,19 +18512,19 @@ usertypesize - 1421775 + 1445377 id - 1421775 + 1445377 size - 1468 + 1497 alignment - 83 + 85 @@ -18493,7 +18538,7 @@ 1 2 - 1421775 + 1445377 @@ -18509,7 +18554,7 @@ 1 2 - 1421775 + 1445377 @@ -18525,52 +18570,52 @@ 1 2 - 461 + 470 2 3 - 188 + 192 3 4 - 94 + 96 4 6 - 94 + 96 6 9 - 115 + 117 9 19 - 115 + 117 19 30 - 115 + 117 30 115 - 115 + 117 118 1731 - 115 + 117 1840 - 106128 - 52 + 105869 + 53 @@ -18586,17 +18631,17 @@ 1 2 - 1195 + 1219 2 3 - 178 + 181 3 6 - 94 + 96 @@ -18635,8 +18680,8 @@ 10 - 2147 - 2148 + 2042 + 2043 10 @@ -18645,8 +18690,8 @@ 10 - 121323 - 121324 + 121064 + 121065 10 @@ -18663,7 +18708,7 @@ 1 2 - 20 + 21 3 @@ -18703,26 +18748,26 @@ usertype_final - 11293 + 11295 id - 11293 + 11295 usertype_uuid - 47615 + 47751 id - 47615 + 47751 uuid - 47074 + 47209 @@ -18736,7 +18781,7 @@ 1 2 - 47615 + 47751 @@ -18752,12 +18797,12 @@ 1 2 - 46533 + 46666 2 3 - 541 + 542 @@ -18767,15 +18812,15 @@ usertype_alias_kind - 1757610 + 1791267 id - 1757610 + 1791267 alias_kind - 20 + 21 @@ -18789,7 +18834,7 @@ 1 2 - 1757610 + 1791267 @@ -18803,13 +18848,13 @@ 12 - 36943 - 36944 + 36937 + 36938 10 - 130604 - 130605 + 130579 + 130580 10 @@ -18820,26 +18865,26 @@ nontype_template_parameters - 754374 + 758842 id - 754374 + 758842 type_template_type_constraint - 26986 + 27018 id - 13300 + 13316 constraint - 25852 + 25883 @@ -18853,27 +18898,27 @@ 1 2 - 10157 + 10169 2 3 - 898 + 899 3 5 - 1026 + 1027 5 14 - 1111 + 1113 14 17 - 106 + 107 @@ -18889,12 +18934,12 @@ 1 2 - 24719 + 24749 2 3 - 1133 + 1134 @@ -18904,15 +18949,15 @@ mangled_name - 8184676 + 8178495 id - 8184676 + 8178495 mangled_name - 6352070 + 6345485 is_complete @@ -18930,7 +18975,7 @@ 1 2 - 8184676 + 8178495 @@ -18946,7 +18991,7 @@ 1 2 - 8184676 + 8178495 @@ -18962,12 +19007,12 @@ 1 2 - 5997431 + 5990769 2 1120 - 354638 + 354716 @@ -18983,7 +19028,7 @@ 1 2 - 6352070 + 6345485 @@ -19002,8 +19047,8 @@ 122 - 66669 - 66670 + 66604 + 66605 122 @@ -19023,8 +19068,8 @@ 122 - 51740 - 51741 + 51675 + 51676 122 @@ -19035,59 +19080,59 @@ is_pod_class - 608655 + 611214 id - 608655 + 611214 is_standard_layout_class - 1183332 + 1203445 id - 1183332 + 1203445 is_complete - 1403669 + 1428043 id - 1403669 + 1428043 is_class_template - 230554 + 235013 id - 230554 + 235013 class_instantiation - 1183835 + 1203980 to - 1180845 + 1200900 from - 71774 + 73130 @@ -19101,12 +19146,12 @@ 1 2 - 1178758 + 1198740 2 8 - 2087 + 2160 @@ -19122,47 +19167,47 @@ 1 2 - 20340 + 20787 2 3 - 12777 + 13034 3 4 - 7101 + 7217 4 5 - 4657 + 4758 5 7 - 6189 + 6330 7 10 - 5685 + 5752 10 17 - 5864 + 5956 17 - 52 - 5402 + 53 + 5560 - 52 + 53 4358 - 3755 + 3731 @@ -19172,19 +19217,19 @@ class_template_argument - 3001639 + 3054583 type_id - 1423558 + 1448328 index - 1174 + 1197 arg_type - 844622 + 860881 @@ -19198,27 +19243,27 @@ 1 2 - 599423 + 609999 2 3 - 434747 + 442010 3 4 - 263557 + 268054 4 8 - 107724 + 109807 8 113 - 18106 + 18456 @@ -19234,22 +19279,22 @@ 1 2 - 628313 + 639063 2 3 - 448888 + 456788 3 4 - 263630 + 268151 4 113 - 82726 + 84325 @@ -19270,32 +19315,32 @@ 4 5 - 744 + 759 5 30 - 94 + 96 33 90 - 94 + 96 95 453 - 94 + 96 643 7142 - 94 + 96 11996 - 135692 - 41 + 135434 + 42 @@ -19316,32 +19361,32 @@ 4 5 - 744 + 759 5 16 - 104 + 106 16 35 - 94 + 96 37 155 - 94 + 96 196 3290 - 94 + 96 - 11129 - 46222 - 31 + 11131 + 46219 + 32 @@ -19357,27 +19402,27 @@ 1 2 - 524281 + 534431 2 3 - 174662 + 178008 3 5 - 77711 + 79385 5 - 44 - 63413 + 46 + 64693 - 44 - 13910 - 4552 + 46 + 13875 + 4362 @@ -19393,17 +19438,17 @@ 1 2 - 737475 + 752067 2 3 - 87866 + 89169 3 22 - 19281 + 19643 @@ -19413,19 +19458,19 @@ class_template_argument_value - 508958 + 511973 type_id - 209162 + 210401 index - 302 + 303 arg_value - 508824 + 511838 @@ -19439,17 +19484,17 @@ 1 2 - 159884 + 160831 2 3 - 42732 + 42985 3 8 - 6545 + 6584 @@ -19465,22 +19510,22 @@ 1 2 - 152130 + 153031 2 3 - 39878 + 40115 3 52 - 15911 + 16005 54 154 - 1242 + 1249 @@ -19608,12 +19653,12 @@ 1 2 - 508690 + 511703 2 3 - 134 + 135 @@ -19629,7 +19674,7 @@ 1 2 - 508824 + 511838 @@ -19639,15 +19684,15 @@ class_template_generated_from - 61420 + 62608 template - 61420 + 62608 from - 3734 + 3806 @@ -19661,7 +19706,7 @@ 1 2 - 61420 + 62608 @@ -19677,47 +19722,47 @@ 1 2 - 1510 + 1539 2 3 - 472 + 481 3 5 - 209 + 213 5 6 - 178 + 181 6 7 - 262 + 267 7 10 - 262 + 267 10 16 - 283 + 288 16 63 - 335 + 342 63 603 - 220 + 224 @@ -19727,15 +19772,15 @@ is_proxy_class_for - 50227 + 51198 id - 50227 + 51198 templ_param_id - 46922 + 47830 @@ -19749,7 +19794,7 @@ 1 2 - 50227 + 51198 @@ -19765,12 +19810,12 @@ 1 2 - 46167 + 47060 2 82 - 755 + 769 @@ -19780,19 +19825,19 @@ type_mentions - 5941339 + 5937930 id - 5941339 + 5937930 type_id - 278065 + 277905 location - 5885018 + 5881641 kind @@ -19810,7 +19855,7 @@ 1 2 - 5941339 + 5937930 @@ -19826,7 +19871,7 @@ 1 2 - 5941339 + 5937930 @@ -19842,7 +19887,7 @@ 1 2 - 5941339 + 5937930 @@ -19858,42 +19903,42 @@ 1 2 - 137480 + 137401 2 3 - 31210 + 31192 3 4 - 11656 + 11649 4 5 - 14979 + 14970 5 7 - 19935 + 19924 7 12 - 21787 + 21775 12 28 - 21025 + 21013 28 8941 - 19990 + 19978 @@ -19909,42 +19954,42 @@ 1 2 - 137480 + 137401 2 3 - 31210 + 31192 3 4 - 11656 + 11649 4 5 - 14979 + 14970 5 7 - 19935 + 19924 7 12 - 21787 + 21775 12 28 - 21025 + 21013 28 8941 - 19990 + 19978 @@ -19960,7 +20005,7 @@ 1 2 - 278065 + 277905 @@ -19976,12 +20021,12 @@ 1 2 - 5839318 + 5835968 2 4 - 45699 + 45673 @@ -19997,12 +20042,12 @@ 1 2 - 5839318 + 5835968 2 4 - 45699 + 45673 @@ -20018,7 +20063,7 @@ 1 2 - 5885018 + 5881641 @@ -20076,26 +20121,26 @@ is_function_template - 1311389 + 1311677 id - 1311389 + 1311677 function_instantiation - 959643 + 965225 to - 959643 + 965225 from - 180058 + 181057 @@ -20109,7 +20154,7 @@ 1 2 - 959643 + 965225 @@ -20125,27 +20170,27 @@ 1 2 - 108961 + 109539 2 3 - 42195 + 42444 3 9 - 14232 + 14317 9 104 - 13527 + 13608 119 - 1532 - 1141 + 1531 + 1148 @@ -20155,19 +20200,19 @@ function_template_argument - 2464632 + 2479028 function_id - 1448091 + 1456567 index - 469 + 472 arg_type - 293619 + 295324 @@ -20181,22 +20226,22 @@ 1 2 - 787539 + 792170 2 3 - 407146 + 409524 3 4 - 169350 + 170320 4 15 - 84054 + 84552 @@ -20212,22 +20257,22 @@ 1 2 - 806405 + 811147 2 3 - 405266 + 407633 3 4 - 167202 + 168158 4 9 - 69217 + 69627 @@ -20243,7 +20288,7 @@ 1 2 - 167 + 168 7 @@ -20276,18 +20321,18 @@ 33 - 7549 - 7550 + 7548 + 7549 33 - 19678 - 19679 + 19676 + 19677 33 - 43139 - 43140 + 43136 + 43137 33 @@ -20304,7 +20349,7 @@ 1 2 - 167 + 168 4 @@ -20347,8 +20392,8 @@ 33 - 6081 - 6082 + 6080 + 6081 33 @@ -20365,37 +20410,37 @@ 1 2 - 172204 + 173224 2 3 - 25914 + 26034 3 4 - 19536 + 19652 4 6 - 22457 + 22590 6 11 - 22960 + 23096 11 76 - 22960 + 23096 79 2452 - 7586 + 7631 @@ -20411,17 +20456,17 @@ 1 2 - 253002 + 254467 2 3 - 31688 + 31875 3 15 - 8929 + 8981 @@ -20431,19 +20476,19 @@ function_template_argument_value - 453873 + 456494 function_id - 193888 + 194969 index - 469 + 472 arg_value - 451221 + 453826 @@ -20457,17 +20502,17 @@ 1 2 - 149176 + 149992 2 3 - 42262 + 42512 3 8 - 2450 + 2464 @@ -20483,22 +20528,22 @@ 1 2 - 142362 + 143137 2 3 - 36085 + 36299 3 54 - 14669 + 14756 54 166 - 772 + 776 @@ -20514,7 +20559,7 @@ 1 2 - 167 + 168 2 @@ -20552,13 +20597,13 @@ 33 - 1850 - 1851 + 1849 + 1850 33 - 2547 - 2548 + 2546 + 2547 33 @@ -20575,7 +20620,7 @@ 1 2 - 167 + 168 2 @@ -20613,13 +20658,13 @@ 33 - 3813 - 3814 + 3812 + 3813 33 - 4291 - 4292 + 4290 + 4291 33 @@ -20636,12 +20681,12 @@ 1 2 - 448569 + 451159 2 3 - 2651 + 2667 @@ -20657,7 +20702,7 @@ 1 2 - 451221 + 453826 @@ -20667,15 +20712,15 @@ function_template_generated_from - 864410 + 869530 template - 864410 + 869530 from - 22154 + 22286 @@ -20689,7 +20734,7 @@ 1 2 - 864410 + 869530 @@ -20705,62 +20750,62 @@ 1 2 - 3591 + 3613 2 3 - 1174 + 1181 3 5 - 1678 + 1688 5 8 - 1779 + 1789 8 14 - 1678 + 1688 16 20 - 1577 + 1587 20 23 - 1678 + 1688 23 32 - 1846 + 1857 33 66 - 2047 + 2059 70 79 - 1376 + 1384 83 110 - 1846 + 1857 111 370 - 1879 + 1890 @@ -20770,26 +20815,26 @@ is_variable_template - 57694 + 57707 id - 57694 + 57707 variable_instantiation - 596956 + 566269 to - 596956 + 566269 from - 36089 + 36097 @@ -20803,7 +20848,7 @@ 1 2 - 596956 + 566269 @@ -20819,12 +20864,12 @@ 1 2 - 14362 + 14733 2 3 - 3928 + 3683 3 @@ -20834,7 +20879,7 @@ 4 6 - 2700 + 2701 6 @@ -20844,22 +20889,22 @@ 8 11 - 3191 + 3192 11 - 30 + 25 2823 - 30 + 25 94 2823 103 1155 - 982 + 859 @@ -20869,11 +20914,11 @@ variable_template_argument - 1128116 + 1073726 variable_id - 575474 + 548711 index @@ -20881,7 +20926,7 @@ arg_type - 463276 + 461782 @@ -20895,22 +20940,22 @@ 1 2 - 189165 + 179998 2 3 - 288964 + 272698 3 4 - 77703 + 77720 4 17 - 19640 + 18294 @@ -20926,22 +20971,22 @@ 1 2 - 206841 + 196205 2 3 - 276198 + 261402 3 4 - 75616 + 75633 4 17 - 16817 + 15470 @@ -20955,43 +21000,43 @@ 12 - 27 - 28 + 22 + 23 859 - 33 - 34 + 28 + 29 368 - 40 - 41 + 35 + 36 122 - 72 - 73 + 67 + 68 122 - 160 - 161 + 149 + 150 122 - 793 - 794 + 782 + 783 122 - 3147 - 3148 + 3003 + 3004 122 - 4688 - 4689 + 4469 + 4470 122 @@ -21036,13 +21081,13 @@ 122 - 1465 - 1466 + 1448 + 1449 122 - 2164 - 2165 + 2157 + 2158 122 @@ -21059,22 +21104,22 @@ 1 2 - 359671 + 361101 2 3 - 57694 + 56234 3 - 16 - 35476 + 17 + 35606 - 16 + 17 227 - 10434 + 8840 @@ -21090,12 +21135,12 @@ 1 2 - 429887 + 429367 2 7 - 33389 + 32414 @@ -21105,11 +21150,11 @@ variable_template_argument_value - 19763 + 19767 variable_id - 14730 + 14733 index @@ -21117,7 +21162,7 @@ arg_value - 19763 + 19767 @@ -21131,7 +21176,7 @@ 1 2 - 13257 + 13260 2 @@ -21152,12 +21197,12 @@ 1 2 - 10434 + 10436 2 3 - 3928 + 3929 4 @@ -21240,7 +21285,7 @@ 1 2 - 19763 + 19767 @@ -21256,7 +21301,7 @@ 1 2 - 19763 + 19767 @@ -21314,26 +21359,26 @@ is_alias_template - 107518 + 108155 id - 107518 + 108155 alias_instantiation - 460184 + 462909 to - 460184 + 462909 from - 92312 + 92858 @@ -21347,7 +21392,7 @@ 1 2 - 460184 + 462909 @@ -21363,47 +21408,47 @@ 1 2 - 16549 + 16647 2 3 - 16817 + 16917 3 4 - 20040 + 20158 4 5 - 12487 + 12561 5 7 - 6713 + 6753 7 8 - 4800 + 4828 8 10 - 7821 + 7867 10 143 - 6948 + 6989 163 795 - 134 + 135 @@ -21413,19 +21458,19 @@ alias_template_argument - 994218 + 1000106 type_id - 567635 + 570997 index - 302 + 303 arg_type - 127860 + 128617 @@ -21439,22 +21484,22 @@ 1 2 - 276499 + 278137 2 3 - 182542 + 183624 3 4 - 87008 + 87523 4 10 - 21584 + 21712 @@ -21470,22 +21515,22 @@ 1 2 - 277741 + 279387 2 3 - 181334 + 182408 3 4 - 88451 + 88975 4 10 - 20107 + 20226 @@ -21613,32 +21658,32 @@ 1 2 - 78247 + 78710 2 3 - 20308 + 20428 3 4 - 5438 + 5470 4 6 - 10473 + 10535 6 76 - 10842 + 10906 84 4474 - 2551 + 2566 @@ -21654,17 +21699,17 @@ 1 2 - 108928 + 109573 2 3 - 17321 + 17423 3 9 - 1611 + 1620 @@ -21674,19 +21719,19 @@ alias_template_argument_value - 173378 + 174405 type_id - 160790 + 161743 index - 134 + 135 arg_value - 173378 + 174405 @@ -21700,12 +21745,12 @@ 1 2 - 159548 + 160493 2 3 - 1242 + 1249 @@ -21721,12 +21766,12 @@ 1 2 - 158877 + 159818 2 42 - 1913 + 1924 @@ -21804,7 +21849,7 @@ 1 2 - 173378 + 174405 @@ -21820,7 +21865,7 @@ 1 2 - 173378 + 174405 @@ -21830,15 +21875,15 @@ alias_template_generated_from - 99932 + 100523 template - 99932 + 100523 from - 1913 + 1924 @@ -21852,7 +21897,7 @@ 1 2 - 99932 + 100523 @@ -21868,42 +21913,42 @@ 1 2 - 134 + 135 2 4 - 134 + 135 4 8 - 134 + 135 9 18 - 167 + 168 18 20 - 134 + 135 20 21 - 201 + 202 31 32 - 134 + 135 43 50 - 134 + 135 64 @@ -21913,22 +21958,22 @@ 65 66 - 134 + 135 74 84 - 167 + 168 111 112 - 268 + 270 150 294 - 100 + 101 @@ -21938,15 +21983,15 @@ template_template_instantiation - 6014 + 6116 to - 4664 + 5720 from - 1104 + 3977 @@ -21960,12 +22005,12 @@ 1 2 - 3314 + 5603 2 - 3 - 1350 + 18 + 117 @@ -21981,22 +22026,17 @@ 1 2 - 736 + 2491 2 3 - 122 + 1325 - 14 - 15 - 122 - - - 27 - 28 - 122 + 3 + 20 + 160 @@ -22006,19 +22046,19 @@ template_template_argument - 9609 + 9794 type_id - 6073 + 6191 index - 104 + 106 arg_type - 9021 + 9196 @@ -22032,22 +22072,22 @@ 1 2 - 4982 + 5079 2 3 - 419 + 427 3 8 - 503 + 513 8 11 - 167 + 171 @@ -22063,22 +22103,22 @@ 1 2 - 5003 + 5100 2 4 - 555 + 566 4 10 - 461 + 470 10 11 - 52 + 53 @@ -22216,12 +22256,12 @@ 1 2 - 8990 + 9163 3 43 - 31 + 32 @@ -22237,12 +22277,12 @@ 1 2 - 9000 + 9174 2 11 - 20 + 21 @@ -22252,7 +22292,7 @@ template_template_argument_value - 1104 + 1105 type_id @@ -22264,7 +22304,7 @@ arg_value - 1104 + 1105 @@ -22342,7 +22382,7 @@ 1 2 - 1104 + 1105 @@ -22358,7 +22398,7 @@ 1 2 - 1104 + 1105 @@ -22368,19 +22408,19 @@ concept_templates - 3592 + 3596 concept_id - 3592 + 3596 name - 3592 + 3596 location - 3592 + 3596 @@ -22394,7 +22434,7 @@ 1 2 - 3592 + 3596 @@ -22410,7 +22450,7 @@ 1 2 - 3592 + 3596 @@ -22426,7 +22466,7 @@ 1 2 - 3592 + 3596 @@ -22442,7 +22482,7 @@ 1 2 - 3592 + 3596 @@ -22458,7 +22498,7 @@ 1 2 - 3592 + 3596 @@ -22474,7 +22514,7 @@ 1 2 - 3592 + 3596 @@ -22484,15 +22524,15 @@ concept_instantiation - 90068 + 90176 to - 90068 + 90176 from - 3421 + 3425 @@ -22506,7 +22546,7 @@ 1 2 - 90068 + 90176 @@ -22527,7 +22567,7 @@ 2 3 - 106 + 107 3 @@ -22547,7 +22587,7 @@ 6 8 - 213 + 214 8 @@ -22557,17 +22597,17 @@ 10 12 - 277 + 278 12 15 - 213 + 214 15 19 - 213 + 214 19 @@ -22592,7 +22632,7 @@ 79 387 - 213 + 214 @@ -22602,22 +22642,22 @@ is_type_constraint - 36673 + 36717 concept_id - 36673 + 36717 concept_template_argument - 112649 + 112784 concept_id - 76104 + 76196 index @@ -22625,7 +22665,7 @@ arg_type - 21490 + 21516 @@ -22639,17 +22679,17 @@ 1 2 - 46295 + 46351 2 3 - 24612 + 24642 3 7 - 5196 + 5202 @@ -22665,17 +22705,17 @@ 1 2 - 49888 + 49948 2 3 - 22324 + 22351 3 7 - 3891 + 3896 @@ -22773,42 +22813,42 @@ 1 2 - 10542 + 10554 2 3 - 2908 + 2911 3 4 - 1069 + 1070 4 5 - 1347 + 1348 5 6 - 1133 + 1134 6 9 - 1625 + 1627 9 14 - 1945 + 1948 14 259 - 919 + 920 @@ -22824,12 +22864,12 @@ 1 2 - 18090 + 18112 2 3 - 3271 + 3275 3 @@ -22844,19 +22884,19 @@ concept_template_argument_value - 104 + 105 concept_id - 82 + 83 index - 14 + 15 arg_value - 104 + 105 @@ -22870,7 +22910,7 @@ 1 2 - 82 + 83 @@ -22886,7 +22926,7 @@ 1 2 - 59 + 60 2 @@ -22949,7 +22989,7 @@ 1 2 - 104 + 105 @@ -22965,7 +23005,7 @@ 1 2 - 104 + 105 @@ -22975,15 +23015,15 @@ routinetypes - 595664 + 599125 id - 595664 + 599125 return_type - 279722 + 281345 @@ -22997,7 +23037,7 @@ 1 2 - 595664 + 599125 @@ -23013,17 +23053,17 @@ 1 2 - 230679 + 232012 2 3 - 34709 + 34914 3 - 4677 - 14333 + 4676 + 14418 @@ -23033,19 +23073,19 @@ routinetypeargs - 1178768 + 1178092 routine - 416090 + 415851 index - 980 + 979 type_id - 112097 + 112033 @@ -23059,32 +23099,32 @@ 1 2 - 82956 + 82909 2 3 - 126096 + 126023 3 4 - 107903 + 107841 4 5 - 49294 + 49266 5 7 - 33171 + 33152 7 19 - 16667 + 16658 @@ -23100,27 +23140,27 @@ 1 2 - 88948 + 88897 2 3 - 138733 + 138653 3 4 - 114657 + 114591 4 5 - 40742 + 40719 5 10 - 32899 + 32880 10 @@ -23318,47 +23358,47 @@ 1 2 - 33280 + 33261 2 3 - 15578 + 15569 3 4 - 13290 + 13282 4 5 - 9804 + 9798 5 6 - 6372 + 6369 6 8 - 9477 + 9472 8 13 - 9532 + 9526 13 26 - 8660 + 8655 26 926 - 6100 + 6097 @@ -23374,22 +23414,22 @@ 1 2 - 79416 + 79370 2 3 - 17539 + 17529 3 5 - 9477 + 9472 5 17 - 5664 + 5661 @@ -23399,19 +23439,19 @@ ptrtomembers - 9651 + 9837 id - 9651 + 9837 type_id - 7920 + 8073 class_id - 4836 + 4929 @@ -23425,7 +23465,7 @@ 1 2 - 9651 + 9837 @@ -23441,7 +23481,7 @@ 1 2 - 9651 + 9837 @@ -23457,12 +23497,12 @@ 1 2 - 7710 + 7859 2 84 - 209 + 213 @@ -23478,12 +23518,12 @@ 1 2 - 7710 + 7859 2 84 - 209 + 213 @@ -23499,22 +23539,22 @@ 1 2 - 3881 + 3956 2 3 - 514 + 523 8 9 - 398 + 406 10 65 - 41 + 42 @@ -23530,22 +23570,22 @@ 1 2 - 3881 + 3956 2 3 - 514 + 523 8 9 - 398 + 406 10 65 - 41 + 42 @@ -23555,15 +23595,15 @@ specifiers - 7610 + 7612 id - 7610 + 7612 str - 7610 + 7612 @@ -23577,7 +23617,7 @@ 1 2 - 7610 + 7612 @@ -23593,7 +23633,7 @@ 1 2 - 7610 + 7612 @@ -23603,15 +23643,15 @@ typespecifiers - 853570 + 868922 type_id - 848462 + 863725 spec_id - 94 + 96 @@ -23625,12 +23665,12 @@ 1 2 - 843353 + 858528 2 3 - 5108 + 5196 @@ -23664,8 +23704,8 @@ 10 - 821 - 822 + 820 + 821 10 @@ -23679,8 +23719,8 @@ 10 - 18435 - 18436 + 18328 + 18329 10 @@ -23696,11 +23736,11 @@ funspecifiers - 9569842 + 9572191 func_id - 3954300 + 3955783 spec_id @@ -23718,27 +23758,27 @@ 1 2 - 1510375 + 1511321 2 3 - 500471 + 501195 3 4 - 1019724 + 1019334 4 5 - 682148 + 682052 5 8 - 241581 + 241880 @@ -23827,8 +23867,8 @@ 122 - 6170 - 6171 + 6172 + 6173 122 @@ -23854,15 +23894,15 @@ varspecifiers - 3209301 + 3148493 var_id - 2456201 + 2429115 spec_id - 1104 + 1105 @@ -23876,17 +23916,17 @@ 1 2 - 1805109 + 1807839 2 3 - 549573 + 523664 3 5 - 101518 + 97611 @@ -23905,8 +23945,8 @@ 122 - 240 - 241 + 242 + 243 122 @@ -23920,28 +23960,28 @@ 122 - 2749 - 2750 + 2566 + 2567 122 - 2812 - 2813 + 2749 + 2750 122 - 3506 - 3507 + 3255 + 3256 122 - 4918 - 4919 + 4944 + 4945 122 - 8493 - 8494 + 8461 + 8462 122 @@ -23952,15 +23992,15 @@ explicit_specifier_exprs - 40631 + 40640 func_id - 40631 + 40640 constant - 40631 + 40640 @@ -23974,7 +24014,7 @@ 1 2 - 40631 + 40640 @@ -23990,7 +24030,7 @@ 1 2 - 40631 + 40640 @@ -24000,11 +24040,11 @@ attributes - 643971 + 644113 id - 643971 + 644113 kind @@ -24012,7 +24052,7 @@ name - 2086 + 2087 name_space @@ -24020,7 +24060,7 @@ location - 637956 + 638096 @@ -24034,7 +24074,7 @@ 1 2 - 643971 + 644113 @@ -24050,7 +24090,7 @@ 1 2 - 643971 + 644113 @@ -24066,7 +24106,7 @@ 1 2 - 643971 + 644113 @@ -24082,7 +24122,7 @@ 1 2 - 643971 + 644113 @@ -24299,7 +24339,7 @@ 1 2 - 2086 + 2087 @@ -24485,12 +24525,12 @@ 1 2 - 632187 + 632326 2 5 - 5769 + 5770 @@ -24506,7 +24546,7 @@ 1 2 - 637956 + 638096 @@ -24522,12 +24562,12 @@ 1 2 - 632923 + 633062 2 3 - 5032 + 5034 @@ -24543,7 +24583,7 @@ 1 2 - 637956 + 638096 @@ -24553,11 +24593,11 @@ attribute_args - 82169 + 82122 id - 82169 + 82122 kind @@ -24565,7 +24605,7 @@ attribute - 70920 + 70879 index @@ -24573,7 +24613,7 @@ location - 56912 + 56879 @@ -24587,7 +24627,7 @@ 1 2 - 82169 + 82122 @@ -24603,7 +24643,7 @@ 1 2 - 82169 + 82122 @@ -24619,7 +24659,7 @@ 1 2 - 82169 + 82122 @@ -24635,7 +24675,7 @@ 1 2 - 82169 + 82122 @@ -24755,12 +24795,12 @@ 1 2 - 65477 + 65439 2 7 - 5322 + 5318 7 @@ -24781,12 +24821,12 @@ 1 2 - 69411 + 69371 2 3 - 1509 + 1508 @@ -24802,12 +24842,12 @@ 1 2 - 67890 + 67851 2 8 - 3029 + 3027 @@ -24823,12 +24863,12 @@ 1 2 - 68420 + 68381 2 6 - 2499 + 2498 @@ -25008,17 +25048,17 @@ 1 2 - 41309 + 41285 2 3 - 11801 + 11795 3 25 - 3801 + 3799 @@ -25034,12 +25074,12 @@ 1 2 - 47426 + 47398 2 3 - 9486 + 9480 @@ -25055,17 +25095,17 @@ 1 2 - 42656 + 42632 2 3 - 12239 + 12232 3 11 - 2015 + 2014 @@ -25081,7 +25121,7 @@ 1 2 - 56664 + 56632 2 @@ -25096,15 +25136,15 @@ attribute_arg_value - 16448 + 16545 arg - 16448 + 16545 value - 503 + 506 @@ -25118,7 +25158,7 @@ 1 2 - 16448 + 16545 @@ -25134,7 +25174,7 @@ 1 2 - 201 + 202 5 @@ -25189,11 +25229,11 @@ attribute_arg_type - 460 + 464 arg - 460 + 464 type_id @@ -25211,7 +25251,7 @@ 1 2 - 460 + 464 @@ -25252,15 +25292,15 @@ attribute_arg_constant - 71688 + 72691 arg - 71688 + 72691 constant - 71688 + 72691 @@ -25274,7 +25314,7 @@ 1 2 - 71688 + 72691 @@ -25290,7 +25330,7 @@ 1 2 - 71688 + 72691 @@ -25300,15 +25340,15 @@ attribute_arg_expr - 1582 + 1584 arg - 1582 + 1584 expr - 1582 + 1584 @@ -25322,7 +25362,7 @@ 1 2 - 1582 + 1584 @@ -25338,7 +25378,7 @@ 1 2 - 1582 + 1584 @@ -25401,15 +25441,15 @@ typeattributes - 94766 + 94787 type_id - 93048 + 93068 spec_id - 31916 + 31923 @@ -25423,7 +25463,7 @@ 1 2 - 91329 + 91349 2 @@ -25444,7 +25484,7 @@ 1 2 - 27497 + 27503 2 @@ -25464,15 +25504,15 @@ funcattributes - 834364 + 834547 func_id - 788699 + 788873 spec_id - 607513 + 607647 @@ -25486,12 +25526,12 @@ 1 2 - 747454 + 747618 2 7 - 41245 + 41254 @@ -25507,12 +25547,12 @@ 1 2 - 561234 + 561358 2 45 - 45787 + 45797 55 @@ -25590,15 +25630,15 @@ namespaceattributes - 5907 + 5942 namespace_id - 134 + 135 spec_id - 5907 + 5942 @@ -25638,7 +25678,7 @@ 1 2 - 5907 + 5942 @@ -25648,15 +25688,15 @@ stmtattributes - 2223 + 2226 stmt_id - 2223 + 2226 spec_id - 577 + 578 @@ -25670,7 +25710,7 @@ 1 2 - 2223 + 2226 @@ -25701,7 +25741,7 @@ 9 10 - 106 + 107 13 @@ -25716,15 +25756,15 @@ unspecifiedtype - 7371180 + 7365434 type_id - 7371180 + 7365434 unspecified_type_id - 4135732 + 4133203 @@ -25738,7 +25778,7 @@ 1 2 - 7371180 + 7365434 @@ -25754,22 +25794,22 @@ 1 2 - 2670039 + 2667188 2 3 - 1104793 + 1105036 3 8 - 311674 + 311742 8 895 - 49224 + 49235 @@ -25779,19 +25819,19 @@ member - 4123947 + 4121662 parent - 534719 + 532872 index - 29215 + 29222 child - 4119405 + 4117119 @@ -25805,57 +25845,57 @@ 1 2 - 127419 + 126710 2 3 - 81754 + 80544 3 4 - 31916 + 31923 4 5 - 44191 + 44201 5 6 - 41613 + 41623 6 7 - 33389 + 33396 7 9 - 41613 + 41623 9 13 - 40509 + 40517 13 18 - 40631 + 40640 18 - 42 - 40140 + 41 + 40026 - 42 + 41 239 - 11538 + 11664 @@ -25871,57 +25911,57 @@ 1 2 - 127173 + 126465 2 3 - 81877 + 80667 3 4 - 31670 + 31677 4 5 - 44437 + 44447 5 6 - 41613 + 41623 6 7 - 32284 + 32291 7 9 - 41982 + 41991 9 13 - 40877 + 40886 13 18 - 40754 + 40763 18 42 - 40140 + 40149 42 265 - 11907 + 11909 @@ -25937,12 +25977,12 @@ 1 2 - 6383 + 6384 2 3 - 2577 + 2578 3 @@ -25957,12 +25997,12 @@ 10 19 - 2209 + 2210 19 26 - 2209 + 2210 26 @@ -25972,22 +26012,22 @@ 36 50 - 2209 + 2210 54 141 - 2209 + 2210 150 468 - 2209 + 2210 480 - 4311 - 2086 + 4295 + 2087 @@ -26003,12 +26043,12 @@ 1 2 - 5401 + 5402 2 3 - 3559 + 3560 3 @@ -26023,17 +26063,17 @@ 10 20 - 2209 + 2210 20 27 - 2209 + 2210 27 37 - 2577 + 2578 37 @@ -26043,16 +26083,16 @@ 58 155 - 2209 + 2210 164 528 - 2209 + 2210 548 - 4332 + 4316 1841 @@ -26069,7 +26109,7 @@ 1 2 - 4119405 + 4117119 @@ -26085,12 +26125,12 @@ 1 2 - 4114864 + 4112576 2 3 - 4541 + 4542 @@ -26100,15 +26140,15 @@ enclosingfunction - 114616 + 116832 child - 114616 + 116832 parent - 68858 + 70189 @@ -26122,7 +26162,7 @@ 1 2 - 114616 + 116832 @@ -26138,22 +26178,22 @@ 1 2 - 37324 + 38046 2 3 - 24410 + 24882 3 5 - 6042 + 6159 5 45 - 1080 + 1101 @@ -26163,27 +26203,27 @@ derivations - 492610 + 494887 derivation - 492610 + 494887 sub - 471194 + 473343 index - 234 + 236 super - 239877 + 240926 location - 34877 + 35083 @@ -26197,7 +26237,7 @@ 1 2 - 492610 + 494887 @@ -26213,7 +26253,7 @@ 1 2 - 492610 + 494887 @@ -26229,7 +26269,7 @@ 1 2 - 492610 + 494887 @@ -26245,7 +26285,7 @@ 1 2 - 492610 + 494887 @@ -26261,12 +26301,12 @@ 1 2 - 454914 + 456966 2 9 - 16280 + 16376 @@ -26282,12 +26322,12 @@ 1 2 - 454914 + 456966 2 8 - 16280 + 16376 @@ -26303,12 +26343,12 @@ 1 2 - 454914 + 456966 2 9 - 16280 + 16376 @@ -26324,12 +26364,12 @@ 1 2 - 454914 + 456966 2 8 - 16280 + 16376 @@ -26345,7 +26385,7 @@ 25 26 - 100 + 101 26 @@ -26363,8 +26403,8 @@ 33 - 14037 - 14038 + 14018 + 14019 33 @@ -26381,7 +26421,7 @@ 25 26 - 134 + 135 52 @@ -26394,8 +26434,8 @@ 33 - 14037 - 14038 + 14018 + 14019 33 @@ -26435,8 +26475,8 @@ 33 - 6742 - 6743 + 6731 + 6732 33 @@ -26453,7 +26493,7 @@ 1 2 - 134 + 135 7 @@ -26484,12 +26524,12 @@ 1 2 - 230108 + 231269 2 1758 - 9768 + 9657 @@ -26505,12 +26545,12 @@ 1 2 - 230108 + 231269 2 1758 - 9768 + 9657 @@ -26526,12 +26566,12 @@ 1 2 - 239440 + 240487 2 4 - 436 + 438 @@ -26547,12 +26587,12 @@ 1 2 - 234506 + 235658 2 81 - 5370 + 5267 @@ -26568,27 +26608,27 @@ 1 2 - 25847 + 26000 2 - 5 - 3188 + 4 + 2498 - 5 - 21 - 2618 + 4 + 12 + 2633 - 21 - 186 - 2618 + 13 + 85 + 2633 - 205 + 87 985 - 604 + 1316 @@ -26604,27 +26644,27 @@ 1 2 - 25847 + 26000 2 - 5 - 3188 + 4 + 2498 - 5 - 21 - 2618 + 4 + 12 + 2633 - 21 - 186 - 2618 + 13 + 85 + 2633 - 205 + 87 985 - 604 + 1316 @@ -26640,7 +26680,7 @@ 1 2 - 34877 + 35083 @@ -26656,22 +26696,22 @@ 1 2 - 28163 + 28330 2 4 - 2551 + 2600 4 24 - 2651 + 2633 24 933 - 1510 + 1519 @@ -26681,15 +26721,15 @@ derspecifiers - 494356 + 496643 der_id - 492174 + 494448 spec_id - 134 + 135 @@ -26703,12 +26743,12 @@ 1 2 - 489992 + 492253 2 3 - 2181 + 2194 @@ -26737,8 +26777,8 @@ 33 - 13466 - 13467 + 13447 + 13448 33 @@ -26749,15 +26789,15 @@ direct_base_offsets - 466092 + 468211 der_id - 466092 + 468211 offset - 503 + 506 @@ -26771,7 +26811,7 @@ 1 2 - 466092 + 468211 @@ -26787,17 +26827,17 @@ 1 2 - 100 + 101 2 3 - 134 + 135 3 4 - 100 + 101 4 @@ -26820,8 +26860,8 @@ 33 - 13735 - 13736 + 13716 + 13717 33 @@ -26832,19 +26872,19 @@ virtual_base_offsets - 5740 + 5774 sub - 5740 + 5774 super - 100 + 101 offset - 335 + 337 @@ -26858,7 +26898,7 @@ 1 2 - 5740 + 5774 @@ -26874,7 +26914,7 @@ 1 2 - 5740 + 5774 @@ -26932,7 +26972,7 @@ 2 3 - 302 + 303 153 @@ -26958,7 +26998,7 @@ 2 3 - 302 + 303 @@ -26968,23 +27008,23 @@ frienddecls - 761457 + 765587 id - 761457 + 765587 type_id - 53910 + 54229 decl_id - 99898 + 100489 location - 6008 + 6044 @@ -26998,7 +27038,7 @@ 1 2 - 761457 + 765587 @@ -27014,7 +27054,7 @@ 1 2 - 761457 + 765587 @@ -27030,7 +27070,7 @@ 1 2 - 761457 + 765587 @@ -27046,42 +27086,42 @@ 1 2 - 5538 + 5571 2 3 - 24806 + 24953 3 8 - 4733 + 4794 8 17 - 4699 + 4693 17 27 - 4430 + 4457 27 45 - 4263 + 4288 45 81 - 4699 + 4727 102 121 - 738 + 742 @@ -27097,42 +27137,42 @@ 1 2 - 5538 + 5571 2 3 - 24806 + 24953 3 8 - 4733 + 4794 8 17 - 4699 + 4693 17 27 - 4430 + 4457 27 45 - 4263 + 4288 45 81 - 4699 + 4727 102 121 - 738 + 742 @@ -27148,12 +27188,12 @@ 1 2 - 52567 + 52878 2 13 - 1342 + 1350 @@ -27169,32 +27209,32 @@ 1 2 - 66968 + 67431 2 3 - 8056 + 7968 3 9 - 9130 + 9252 9 24 - 7552 + 7597 24 - 136 - 7586 + 135 + 7597 - 136 + 135 191 - 604 + 641 @@ -27210,32 +27250,32 @@ 1 2 - 66968 + 67431 2 3 - 8056 + 7968 3 9 - 9130 + 9252 9 24 - 7552 + 7597 24 - 136 - 7586 + 135 + 7597 - 136 + 135 191 - 604 + 641 @@ -27251,12 +27291,12 @@ 1 2 - 98690 + 99273 2 6 - 1208 + 1215 @@ -27272,12 +27312,12 @@ 1 2 - 5639 + 5672 2 - 22495 - 369 + 22484 + 371 @@ -27293,12 +27333,12 @@ 1 2 - 5874 + 5909 2 1509 - 134 + 135 @@ -27314,12 +27354,12 @@ 1 2 - 5672 + 5706 2 2844 - 335 + 337 @@ -27329,19 +27369,19 @@ comments - 11056034 + 11058465 id - 11056034 + 11058465 contents - 4236514 + 4237445 location - 11056034 + 11058465 @@ -27355,7 +27395,7 @@ 1 2 - 11056034 + 11058465 @@ -27371,7 +27411,7 @@ 1 2 - 11056034 + 11058465 @@ -27387,17 +27427,17 @@ 1 2 - 3867144 + 3867994 2 6 - 318425 + 318495 6 34447 - 50943 + 50954 @@ -27413,17 +27453,17 @@ 1 2 - 3867144 + 3867994 2 6 - 318425 + 318495 6 34447 - 50943 + 50954 @@ -27439,7 +27479,7 @@ 1 2 - 11056034 + 11058465 @@ -27455,7 +27495,7 @@ 1 2 - 11056034 + 11058465 @@ -27465,15 +27505,15 @@ commentbinding - 3852168 + 3860014 id - 3297194 + 3297919 element - 3689273 + 3697082 @@ -27487,12 +27527,12 @@ 1 2 - 3236553 + 3230266 2 1706 - 60640 + 67652 @@ -27508,12 +27548,12 @@ 1 2 - 3526377 + 3534151 2 3 - 162895 + 162931 @@ -27523,15 +27563,15 @@ exprconv - 9635850 + 9630323 converted - 9635744 + 9630218 conversion - 9635850 + 9630323 @@ -27545,7 +27585,7 @@ 1 2 - 9635639 + 9630112 2 @@ -27566,7 +27606,7 @@ 1 2 - 9635850 + 9630323 @@ -27576,30 +27616,30 @@ compgenerated - 9880588 + 9856495 id - 9880588 + 9856495 synthetic_destructor_call - 1661391 + 1663253 element - 1237286 + 1238704 i - 384 + 385 destructor_call - 1661391 + 1663253 @@ -27613,17 +27653,17 @@ 1 2 - 823574 + 824561 2 3 - 406954 + 407377 3 19 - 6757 + 6765 @@ -27639,17 +27679,17 @@ 1 2 - 823574 + 824561 2 3 - 406954 + 407377 3 19 - 6757 + 6765 @@ -27708,13 +27748,13 @@ 21 - 19347 - 19348 + 19344 + 19345 21 - 57861 - 57862 + 57858 + 57859 21 @@ -27774,13 +27814,13 @@ 21 - 19347 - 19348 + 19344 + 19345 21 - 57861 - 57862 + 57858 + 57859 21 @@ -27797,7 +27837,7 @@ 1 2 - 1661391 + 1663253 @@ -27813,7 +27853,7 @@ 1 2 - 1661391 + 1663253 @@ -27823,15 +27863,15 @@ namespaces - 8591 + 8757 id - 8591 + 8757 name - 4542 + 4630 @@ -27845,7 +27885,7 @@ 1 2 - 8591 + 8757 @@ -27861,17 +27901,17 @@ 1 2 - 3713 + 3785 2 3 - 524 + 534 3 149 - 304 + 310 @@ -27892,15 +27932,15 @@ namespacembrs - 2487871 + 2457354 parentid - 3928 + 3929 memberid - 2487871 + 2457354 @@ -27972,8 +28012,8 @@ 245 - 19521 - 19522 + 19268 + 19269 122 @@ -27990,7 +28030,7 @@ 1 2 - 2487871 + 2457354 @@ -28000,19 +28040,19 @@ exprparents - 19459867 + 19448700 expr_id - 19459867 + 19448700 child_index - 20040 + 20029 parent_id - 12943755 + 12936328 @@ -28026,7 +28066,7 @@ 1 2 - 19459867 + 19448700 @@ -28042,7 +28082,7 @@ 1 2 - 19459867 + 19448700 @@ -28058,7 +28098,7 @@ 1 2 - 3856 + 3853 2 @@ -28073,17 +28113,17 @@ 4 5 - 8978 + 8973 5 8 - 1660 + 1659 8 11 - 1632 + 1631 11 @@ -28109,7 +28149,7 @@ 1 2 - 3856 + 3853 2 @@ -28124,17 +28164,17 @@ 4 5 - 8978 + 8973 5 8 - 1660 + 1659 8 11 - 1632 + 1631 11 @@ -28160,17 +28200,17 @@ 1 2 - 7396922 + 7392678 2 3 - 5084149 + 5081231 3 712 - 462684 + 462418 @@ -28186,17 +28226,17 @@ 1 2 - 7396922 + 7392678 2 3 - 5084149 + 5081231 3 712 - 462684 + 462418 @@ -28206,22 +28246,22 @@ expr_isload - 6902994 + 6890637 expr_id - 6902994 + 6890637 conversionkinds - 6052094 + 6047233 expr_id - 6052094 + 6047233 kind @@ -28239,7 +28279,7 @@ 1 2 - 6052094 + 6047233 @@ -28268,8 +28308,8 @@ 1 - 40990 - 40991 + 40996 + 40997 1 @@ -28278,13 +28318,13 @@ 1 - 92949 - 92950 + 92848 + 92849 1 - 5833488 - 5833489 + 5828722 + 5828723 1 @@ -28295,11 +28335,11 @@ iscall - 5772743 + 5777667 caller - 5772743 + 5777667 kind @@ -28317,7 +28357,7 @@ 1 2 - 5772743 + 5777667 @@ -28341,8 +28381,8 @@ 21 - 268245 - 268246 + 268152 + 268153 21 @@ -28353,11 +28393,11 @@ numtemplatearguments - 729040 + 684876 expr_id - 729040 + 684876 num @@ -28375,7 +28415,7 @@ 1 2 - 729040 + 684876 @@ -28399,8 +28439,8 @@ 122 - 27 - 28 + 22 + 23 122 @@ -28409,8 +28449,8 @@ 122 - 68 - 69 + 62 + 63 122 @@ -28419,13 +28459,13 @@ 122 - 2001 - 2002 + 1843 + 1844 122 - 3393 - 3394 + 3201 + 3202 122 @@ -28484,23 +28524,23 @@ namequalifiers - 3050545 + 3044887 id - 3050545 + 3044887 qualifiableelement - 3050545 + 3044887 qualifyingelement - 54656 + 54379 location - 558950 + 557008 @@ -28514,7 +28554,7 @@ 1 2 - 3050545 + 3044887 @@ -28530,7 +28570,7 @@ 1 2 - 3050545 + 3044887 @@ -28546,7 +28586,7 @@ 1 2 - 3050545 + 3044887 @@ -28562,7 +28602,7 @@ 1 2 - 3050545 + 3044887 @@ -28578,7 +28618,7 @@ 1 2 - 3050545 + 3044887 @@ -28594,7 +28634,7 @@ 1 2 - 3050545 + 3044887 @@ -28610,27 +28650,22 @@ 1 2 - 37913 + 37916 2 3 - 8382 + 8435 3 5 - 4127 + 4132 5 - 476 - 4105 - - - 1600 41956 - 128 + 3896 @@ -28646,27 +28681,22 @@ 1 2 - 37913 + 37916 2 3 - 8382 + 8435 3 5 - 4127 + 4132 5 - 476 - 4105 - - - 1600 41956 - 128 + 3896 @@ -28682,22 +28712,22 @@ 1 2 - 41441 + 41234 2 3 - 7420 + 7407 3 7 - 4148 + 4132 7 20059 - 1646 + 1605 @@ -28713,22 +28743,22 @@ 1 2 - 83311 + 84417 2 6 - 42339 + 39007 6 7 - 396669 + 397208 7 192 - 36630 + 36374 @@ -28744,22 +28774,22 @@ 1 2 - 83311 + 84417 2 6 - 42339 + 39007 6 7 - 396669 + 397208 7 192 - 36630 + 36374 @@ -28775,22 +28805,22 @@ 1 2 - 119492 + 117045 2 4 - 14070 + 14065 4 5 - 412920 + 413479 5 60 - 12466 + 12417 @@ -28800,15 +28830,15 @@ varbind - 8257017 + 8252279 expr - 8257017 + 8252279 var - 1050679 + 1050076 @@ -28822,7 +28852,7 @@ 1 2 - 8257017 + 8252279 @@ -28838,52 +28868,52 @@ 1 2 - 171585 + 171487 2 3 - 188755 + 188646 3 4 - 145690 + 145606 4 5 - 116670 + 116603 5 6 - 83175 + 83127 6 7 - 65836 + 65798 7 9 - 80838 + 80792 9 13 - 81598 + 81551 13 27 - 79150 + 79104 27 5137 - 37379 + 37358 @@ -28893,15 +28923,15 @@ funbind - 5787669 + 5788265 expr - 5785316 + 5785803 fun - 274909 + 275046 @@ -28915,12 +28945,12 @@ 1 2 - 5782964 + 5783341 2 3 - 2352 + 2462 @@ -28936,27 +28966,27 @@ 1 2 - 180650 + 180845 2 3 - 38212 + 38237 3 4 - 16764 + 17127 4 8 - 23286 + 23229 8 37798 - 15995 + 15607 @@ -28966,19 +28996,19 @@ expr_allocator - 44756 + 44842 expr - 44756 + 44842 func - 64 + 101 form - 21 + 33 @@ -28992,7 +29022,7 @@ 1 2 - 44756 + 44842 @@ -29008,7 +29038,7 @@ 1 2 - 44756 + 44842 @@ -29022,19 +29052,19 @@ 12 - 2 - 3 - 21 + 1 + 2 + 33 - 369 - 370 - 21 + 591 + 592 + 33 - 1722 - 1723 - 21 + 736 + 737 + 33 @@ -29050,7 +29080,7 @@ 1 2 - 64 + 101 @@ -29064,9 +29094,9 @@ 12 - 2093 - 2094 - 21 + 1328 + 1329 + 33 @@ -29082,7 +29112,7 @@ 3 4 - 21 + 33 @@ -29092,15 +29122,15 @@ expr_deallocator - 53037 + 53351 expr - 53037 + 53351 func - 100 + 101 form @@ -29118,7 +29148,7 @@ 1 2 - 53037 + 53351 @@ -29134,7 +29164,7 @@ 1 2 - 53037 + 53351 @@ -29176,7 +29206,7 @@ 1 2 - 100 + 101 @@ -29239,15 +29269,15 @@ expr_cond_guard - 898137 + 897622 cond - 898137 + 897622 guard - 898137 + 897622 @@ -29261,7 +29291,7 @@ 1 2 - 898137 + 897622 @@ -29277,7 +29307,7 @@ 1 2 - 898137 + 897622 @@ -29287,15 +29317,15 @@ expr_cond_true - 898134 + 897618 cond - 898134 + 897618 true - 898134 + 897618 @@ -29309,7 +29339,7 @@ 1 2 - 898134 + 897618 @@ -29325,7 +29355,7 @@ 1 2 - 898134 + 897618 @@ -29335,15 +29365,15 @@ expr_cond_false - 898137 + 897622 cond - 898137 + 897622 false - 898137 + 897622 @@ -29357,7 +29387,7 @@ 1 2 - 898137 + 897622 @@ -29373,7 +29403,7 @@ 1 2 - 898137 + 897622 @@ -29383,15 +29413,15 @@ values - 13547098 + 13539325 id - 13547098 + 13539325 str - 114026 + 113961 @@ -29405,7 +29435,7 @@ 1 2 - 13547098 + 13539325 @@ -29421,27 +29451,27 @@ 1 2 - 77935 + 77890 2 3 - 15228 + 15220 3 6 - 8841 + 8836 6 52 - 8587 + 8582 52 681857 - 3432 + 3430 @@ -29451,15 +29481,15 @@ valuetext - 6647904 + 6632066 id - 6647904 + 6632066 text - 1095330 + 1095191 @@ -29473,7 +29503,7 @@ 1 2 - 6647904 + 6632066 @@ -29489,22 +29519,22 @@ 1 2 - 833965 + 833960 2 3 - 146908 + 146907 3 7 - 86571 + 86513 7 - 593706 - 27886 + 594514 + 27811 @@ -29514,15 +29544,15 @@ valuebind - 13655359 + 13647524 val - 13547098 + 13539325 expr - 13655359 + 13647524 @@ -29536,12 +29566,12 @@ 1 2 - 13456848 + 13449127 2 6 - 90250 + 90198 @@ -29557,7 +29587,7 @@ 1 2 - 13655359 + 13647524 @@ -29567,15 +29597,15 @@ fieldoffsets - 1503078 + 1502215 id - 1503078 + 1502215 byteoffset - 31374 + 31356 bitoffset @@ -29593,7 +29623,7 @@ 1 2 - 1503078 + 1502215 @@ -29609,7 +29639,7 @@ 1 2 - 1503078 + 1502215 @@ -29625,32 +29655,32 @@ 1 2 - 17702 + 17692 2 3 - 2451 + 2449 3 5 - 2668 + 2667 5 12 - 2614 + 2613 12 35 - 2396 + 2395 35 200 - 2396 + 2395 210 @@ -29671,7 +29701,7 @@ 1 2 - 30339 + 30321 2 @@ -29773,11 +29803,11 @@ bitfield - 29829 + 29835 id - 29829 + 29835 bits @@ -29799,7 +29829,7 @@ 1 2 - 29829 + 29835 @@ -29815,7 +29845,7 @@ 1 2 - 29829 + 29835 @@ -29959,23 +29989,23 @@ initialisers - 2289023 + 2292690 init - 2289023 + 2292690 var - 998370 + 998340 expr - 2289023 + 2292690 location - 525173 + 526645 @@ -29989,7 +30019,7 @@ 1 2 - 2289023 + 2292690 @@ -30005,7 +30035,7 @@ 1 2 - 2289023 + 2292690 @@ -30021,7 +30051,7 @@ 1 2 - 2289023 + 2292690 @@ -30037,17 +30067,17 @@ 1 2 - 874745 + 874360 2 15 - 51071 + 51218 16 25 - 72553 + 72761 @@ -30063,17 +30093,17 @@ 1 2 - 874745 + 874360 2 15 - 51071 + 51218 16 25 - 72553 + 72761 @@ -30089,7 +30119,7 @@ 1 2 - 998362 + 998332 2 @@ -30110,7 +30140,7 @@ 1 2 - 2289023 + 2292690 @@ -30126,7 +30156,7 @@ 1 2 - 2289023 + 2292690 @@ -30142,7 +30172,7 @@ 1 2 - 2289023 + 2292690 @@ -30158,22 +30188,22 @@ 1 2 - 414711 + 415900 2 3 - 33393 + 33497 3 6 - 41518 + 41612 6 113696 - 35549 + 35635 @@ -30189,17 +30219,17 @@ 1 2 - 453031 + 454329 2 3 - 34225 + 34331 3 12835 - 37916 + 37984 @@ -30215,22 +30245,22 @@ 1 2 - 414711 + 415900 2 3 - 33393 + 33497 3 6 - 41518 + 41612 6 113696 - 35549 + 35635 @@ -30240,26 +30270,26 @@ braced_initialisers - 67191 + 67888 init - 67191 + 67888 expr_ancestor - 1667335 + 1669204 exp - 1667335 + 1669204 ancestor - 834480 + 835480 @@ -30273,7 +30303,7 @@ 1 2 - 1667335 + 1669204 @@ -30289,17 +30319,17 @@ 1 2 - 16978 + 16999 2 3 - 807494 + 808504 3 19 - 10007 + 9976 @@ -30309,19 +30339,19 @@ exprs - 25217889 + 25203419 id - 25217889 + 25203419 kind - 1451 + 1450 location - 10588753 + 10582678 @@ -30335,7 +30365,7 @@ 1 2 - 25217889 + 25203419 @@ -30351,7 +30381,7 @@ 1 2 - 25217889 + 25203419 @@ -30529,22 +30559,22 @@ 1 2 - 8906278 + 8901168 2 3 - 820855 + 820384 3 16 - 797438 + 796981 16 71733 - 64181 + 64144 @@ -30560,17 +30590,17 @@ 1 2 - 9045722 + 9040532 2 3 - 774505 + 774061 3 32 - 768525 + 768084 @@ -30580,15 +30610,15 @@ expr_reuse - 841815 + 842823 reuse - 841815 + 842823 original - 841815 + 842823 value_category @@ -30606,7 +30636,7 @@ 1 2 - 841815 + 842823 @@ -30622,7 +30652,7 @@ 1 2 - 841815 + 842823 @@ -30638,7 +30668,7 @@ 1 2 - 841815 + 842823 @@ -30654,7 +30684,7 @@ 1 2 - 841815 + 842823 @@ -30706,15 +30736,15 @@ expr_types - 25217889 + 25203419 id - 25217889 + 25203419 typeid - 214267 + 214144 value_category @@ -30732,7 +30762,7 @@ 1 2 - 25217889 + 25203419 @@ -30748,7 +30778,7 @@ 1 2 - 25217889 + 25203419 @@ -30764,52 +30794,52 @@ 1 2 - 52527 + 52497 2 3 - 35201 + 35181 3 4 - 14511 + 14503 4 5 - 14533 + 14525 5 8 - 17567 + 17557 8 14 - 17392 + 17382 14 24 - 16446 + 16437 24 49 - 16072 + 16063 49 134 - 16182 + 16173 134 441492 - 13830 + 13822 @@ -30825,12 +30855,12 @@ 1 2 - 185969 + 185862 2 3 - 28297 + 28281 @@ -30893,15 +30923,15 @@ new_allocated_type - 45518 + 45787 expr - 45518 + 45787 type_id - 26988 + 27148 @@ -30915,7 +30945,7 @@ 1 2 - 45518 + 45787 @@ -30931,17 +30961,17 @@ 1 2 - 11345 + 11413 2 3 - 14266 + 14350 3 19 - 1376 + 1384 @@ -30951,15 +30981,15 @@ new_array_allocated_type - 6597 + 6616 expr - 6597 + 6616 type_id - 2834 + 2842 @@ -30973,7 +31003,7 @@ 1 2 - 6597 + 6616 @@ -30994,7 +31024,7 @@ 2 3 - 2503 + 2510 3 @@ -31014,30 +31044,30 @@ param_ref_to_this - 25020 + 25267 expr - 25020 + 25267 aggregate_field_init - 5717385 + 5720718 aggregate - 1243071 + 1245402 initializer - 5717207 + 5720540 field - 3229 + 3236 position @@ -31059,12 +31089,12 @@ 1 2 - 19692 + 21021 2 3 - 669033 + 670035 3 @@ -31110,12 +31140,12 @@ 1 2 - 19688 + 21017 2 3 - 668965 + 669967 3 @@ -31161,12 +31191,12 @@ 1 2 - 19692 + 21021 2 3 - 669033 + 670035 3 @@ -31212,7 +31242,7 @@ 1 2 - 1242989 + 1245320 2 @@ -31233,7 +31263,7 @@ 1 2 - 5717207 + 5720540 @@ -31249,7 +31279,7 @@ 1 2 - 5717029 + 5720362 2 @@ -31270,7 +31300,7 @@ 1 2 - 5717207 + 5720540 @@ -31286,7 +31316,7 @@ 1 2 - 5717207 + 5720540 @@ -31307,12 +31337,12 @@ 2 3 - 272 + 273 3 6 - 274 + 275 6 @@ -31331,18 +31361,18 @@ 74 - 339 - 243 + 316 + 244 - 353 - 252555 - 252 + 338 + 252258 + 244 - 392631 + 252554 392632 - 2 + 14 @@ -31363,12 +31393,12 @@ 2 3 - 272 + 273 3 6 - 274 + 275 6 @@ -31387,18 +31417,18 @@ 74 - 339 - 243 + 316 + 244 - 353 - 252555 - 252 + 338 + 252258 + 244 - 392631 + 252554 392632 - 2 + 14 @@ -31414,7 +31444,7 @@ 1 2 - 3215 + 3222 2 @@ -31435,7 +31465,7 @@ 1 2 - 3203 + 3210 2 @@ -31505,12 +31535,12 @@ 554346 - 1223380 + 1224382 2 - 1243071 - 1243072 + 1245402 + 1245403 1 @@ -31576,12 +31606,12 @@ 554346 - 1223380 + 1224382 2 - 1243071 - 1243072 + 1245402 + 1245403 1 @@ -31647,12 +31677,12 @@ 318 - 885 + 886 2 - 1285 - 1286 + 1291 + 1292 1 @@ -31688,13 +31718,13 @@ 12 - 480 - 481 + 1482 + 1483 1 - 1242673 - 1242674 + 1244002 + 1244003 1 @@ -31709,13 +31739,13 @@ 12 - 710 - 711 + 1712 + 1713 1 - 5716497 - 5716498 + 5718828 + 5718829 1 @@ -31730,13 +31760,13 @@ 12 - 218 - 219 + 219 + 220 1 - 3037 - 3038 + 3043 + 3044 1 @@ -31768,15 +31798,15 @@ aggregate_array_init - 1349502 + 1353666 aggregate - 152357 + 153359 initializer - 1349502 + 1353666 element_index @@ -31802,27 +31832,27 @@ 1 2 - 14696 + 14702 2 3 - 13903 + 13963 3 4 - 61677 + 61827 4 5 - 17014 + 17356 5 6 - 19009 + 19453 6 @@ -31831,13 +31861,13 @@ 10 - 58 - 11429 + 61 + 11514 - 58 + 61 62923 - 1763 + 1678 @@ -31853,27 +31883,27 @@ 1 2 - 14696 + 14702 2 3 - 13903 + 13963 3 4 - 61677 + 61827 4 5 - 17014 + 17356 5 6 - 19009 + 19453 6 @@ -31882,13 +31912,13 @@ 10 - 58 - 11429 + 61 + 11514 - 58 + 61 62923 - 1763 + 1678 @@ -31904,27 +31934,27 @@ 1 2 - 14696 + 14702 2 3 - 13903 + 13963 3 4 - 61677 + 61827 4 5 - 17014 + 17356 5 6 - 19009 + 19453 6 @@ -31933,13 +31963,13 @@ 10 - 58 - 11429 + 61 + 11514 - 58 + 61 62923 - 1763 + 1678 @@ -31955,7 +31985,7 @@ 1 2 - 152357 + 153359 @@ -31971,7 +32001,7 @@ 1 2 - 1349502 + 1353666 @@ -31987,7 +32017,7 @@ 1 2 - 1349502 + 1353666 @@ -32003,7 +32033,7 @@ 1 2 - 1349502 + 1353666 @@ -32019,7 +32049,7 @@ 1 2 - 1349502 + 1353666 @@ -32059,7 +32089,7 @@ 37 - 152357 + 153359 2151 @@ -32100,7 +32130,7 @@ 37 - 152357 + 153359 2151 @@ -32183,7 +32213,7 @@ 37 - 152358 + 153360 2151 @@ -32224,7 +32254,7 @@ 37 - 152358 + 153360 2151 @@ -32286,8 +32316,8 @@ 1 - 152354 - 152355 + 153356 + 153357 1 @@ -32307,8 +32337,8 @@ 1 - 1349486 - 1349487 + 1353650 + 1353651 1 @@ -32361,15 +32391,15 @@ condition_decl_bind - 406398 + 406885 expr - 406398 + 406885 decl - 406398 + 406885 @@ -32383,7 +32413,7 @@ 1 2 - 406398 + 406885 @@ -32399,7 +32429,7 @@ 1 2 - 406398 + 406885 @@ -32409,15 +32439,15 @@ typeid_bind - 47196 + 47476 expr - 47196 + 47476 type_id - 15709 + 15802 @@ -32431,7 +32461,7 @@ 1 2 - 47196 + 47476 @@ -32447,17 +32477,17 @@ 1 2 - 2920 + 2937 2 3 - 12386 + 12459 3 328 - 402 + 405 @@ -32467,15 +32497,15 @@ uuidof_bind - 26214 + 26289 expr - 26214 + 26289 type_id - 26214 + 26289 @@ -32489,7 +32519,7 @@ 1 2 - 26214 + 26289 @@ -32505,7 +32535,7 @@ 1 2 - 26214 + 26289 @@ -32515,15 +32545,15 @@ sizeof_bind - 242078 + 241939 expr - 242078 + 241939 type_id - 11156 + 11150 @@ -32537,7 +32567,7 @@ 1 2 - 242078 + 241939 @@ -32553,17 +32583,17 @@ 1 2 - 3859 + 3856 2 3 - 2753 + 2751 3 4 - 1019 + 1018 4 @@ -32578,17 +32608,17 @@ 6 7 - 1117 + 1116 7 42 - 852 + 851 42 6061 - 167 + 166 @@ -32646,11 +32676,11 @@ lambdas - 18970 + 19024 expr - 18970 + 19024 default_capture @@ -32676,7 +32706,7 @@ 1 2 - 18970 + 19024 @@ -32692,7 +32722,7 @@ 1 2 - 18970 + 19024 @@ -32708,7 +32738,7 @@ 1 2 - 18970 + 19024 @@ -32892,15 +32922,15 @@ lambda_capture - 31810 + 31901 id - 31810 + 31901 lambda - 15424 + 15469 index @@ -32908,7 +32938,7 @@ field - 31810 + 31901 captured_by_reference @@ -32920,7 +32950,7 @@ location - 17888 + 17939 @@ -32934,7 +32964,7 @@ 1 2 - 31810 + 31901 @@ -32950,7 +32980,7 @@ 1 2 - 31810 + 31901 @@ -32966,7 +32996,7 @@ 1 2 - 31810 + 31901 @@ -32982,7 +33012,7 @@ 1 2 - 31810 + 31901 @@ -32998,7 +33028,7 @@ 1 2 - 31810 + 31901 @@ -33014,7 +33044,7 @@ 1 2 - 31810 + 31901 @@ -33030,27 +33060,27 @@ 1 2 - 8156 + 8179 2 3 - 3545 + 3555 3 4 - 1663 + 1668 4 6 - 1251 + 1255 6 18 - 807 + 809 @@ -33066,27 +33096,27 @@ 1 2 - 8156 + 8179 2 3 - 3545 + 3555 3 4 - 1663 + 1668 4 6 - 1251 + 1255 6 18 - 807 + 809 @@ -33102,27 +33132,27 @@ 1 2 - 8156 + 8179 2 3 - 3545 + 3555 3 4 - 1663 + 1668 4 6 - 1251 + 1255 6 18 - 807 + 809 @@ -33138,12 +33168,12 @@ 1 2 - 14189 + 14229 2 3 - 1235 + 1239 @@ -33159,7 +33189,7 @@ 1 2 - 15303 + 15347 2 @@ -33180,27 +33210,27 @@ 1 2 - 8746 + 8771 2 3 - 3698 + 3709 3 4 - 1397 + 1401 4 7 - 1284 + 1287 7 18 - 298 + 299 @@ -33509,7 +33539,7 @@ 2 3 - 104 + 105 @@ -33525,7 +33555,7 @@ 1 2 - 88 + 89 2 @@ -33642,7 +33672,7 @@ 1 2 - 31810 + 31901 @@ -33658,7 +33688,7 @@ 1 2 - 31810 + 31901 @@ -33674,7 +33704,7 @@ 1 2 - 31810 + 31901 @@ -33690,7 +33720,7 @@ 1 2 - 31810 + 31901 @@ -33706,7 +33736,7 @@ 1 2 - 31810 + 31901 @@ -33722,7 +33752,7 @@ 1 2 - 31810 + 31901 @@ -33980,17 +34010,17 @@ 1 2 - 15667 + 15712 2 6 - 1413 + 1417 6 68 - 807 + 809 @@ -34006,17 +34036,17 @@ 1 2 - 16240 + 16287 2 13 - 1445 + 1449 13 68 - 201 + 202 @@ -34032,12 +34062,12 @@ 1 2 - 17201 + 17250 2 8 - 686 + 688 @@ -34053,17 +34083,17 @@ 1 2 - 15667 + 15712 2 6 - 1413 + 1417 6 68 - 807 + 809 @@ -34079,7 +34109,7 @@ 1 2 - 17863 + 17915 2 @@ -34100,7 +34130,7 @@ 1 2 - 17888 + 17939 @@ -34110,11 +34140,11 @@ fold - 1261 + 1263 expr - 1261 + 1263 operator @@ -34136,7 +34166,7 @@ 1 2 - 1261 + 1263 @@ -34152,7 +34182,7 @@ 1 2 - 1261 + 1263 @@ -34236,11 +34266,11 @@ stmts - 6310367 + 6328636 id - 6310367 + 6328636 kind @@ -34248,7 +34278,7 @@ location - 2668742 + 2676389 @@ -34262,7 +34292,7 @@ 1 2 - 6310367 + 6328636 @@ -34278,7 +34308,7 @@ 1 2 - 6310367 + 6328636 @@ -34367,28 +34397,28 @@ 8 - 74923 - 74924 + 74926 + 74927 8 - 95366 - 95367 + 95367 + 95368 8 - 117878 - 117879 + 117880 + 117881 8 - 198406 - 198407 + 198412 + 198413 8 - 213672 - 213673 + 213683 + 213684 8 @@ -34516,22 +34546,22 @@ 1 2 - 2218981 + 2225153 2 3 - 177039 + 177732 3 11 - 202889 + 203471 11 1816 - 69832 + 70032 @@ -34547,12 +34577,12 @@ 1 2 - 2592497 + 2599926 2 10 - 76244 + 76462 @@ -34717,15 +34747,15 @@ if_then - 990500 + 989932 if_stmt - 990500 + 989932 then_id - 990500 + 989932 @@ -34739,7 +34769,7 @@ 1 2 - 990500 + 989932 @@ -34755,7 +34785,7 @@ 1 2 - 990500 + 989932 @@ -34765,15 +34795,15 @@ if_else - 434390 + 434910 if_stmt - 434390 + 434910 else_id - 434390 + 434910 @@ -34787,7 +34817,7 @@ 1 2 - 434390 + 434910 @@ -34803,7 +34833,7 @@ 1 2 - 434390 + 434910 @@ -34861,15 +34891,15 @@ constexpr_if_then - 103236 + 103259 constexpr_if_stmt - 103236 + 103259 then_id - 103236 + 103259 @@ -34883,7 +34913,7 @@ 1 2 - 103236 + 103259 @@ -34899,7 +34929,7 @@ 1 2 - 103236 + 103259 @@ -34909,15 +34939,15 @@ constexpr_if_else - 74021 + 74037 constexpr_if_stmt - 74021 + 74037 else_id - 74021 + 74037 @@ -34931,7 +34961,7 @@ 1 2 - 74021 + 74037 @@ -34947,7 +34977,7 @@ 1 2 - 74021 + 74037 @@ -35053,15 +35083,15 @@ while_body - 39659 + 39636 while_stmt - 39659 + 39636 body_id - 39659 + 39636 @@ -35075,7 +35105,7 @@ 1 2 - 39659 + 39636 @@ -35091,7 +35121,7 @@ 1 2 - 39659 + 39636 @@ -35101,15 +35131,15 @@ do_body - 232528 + 232395 do_stmt - 232528 + 232395 body_id - 232528 + 232395 @@ -35123,7 +35153,7 @@ 1 2 - 232528 + 232395 @@ -35139,7 +35169,7 @@ 1 2 - 232528 + 232395 @@ -35197,19 +35227,19 @@ switch_case - 830952 + 831947 switch_stmt - 409306 + 409797 index - 384 + 385 case_id - 830952 + 831947 @@ -35228,12 +35258,12 @@ 2 3 - 406441 + 406928 3 19 - 2844 + 2847 @@ -35254,12 +35284,12 @@ 2 3 - 406441 + 406928 3 19 - 2844 + 2847 @@ -35417,7 +35447,7 @@ 1 2 - 830952 + 831947 @@ -35433,7 +35463,7 @@ 1 2 - 830952 + 831947 @@ -35443,15 +35473,15 @@ switch_body - 409306 + 409797 switch_stmt - 409306 + 409797 body_id - 409306 + 409797 @@ -35465,7 +35495,7 @@ 1 2 - 409306 + 409797 @@ -35481,7 +35511,7 @@ 1 2 - 409306 + 409797 @@ -35491,15 +35521,15 @@ for_initialization - 73267 + 73225 for_stmt - 73267 + 73225 init_id - 73267 + 73225 @@ -35513,7 +35543,7 @@ 1 2 - 73267 + 73225 @@ -35529,7 +35559,7 @@ 1 2 - 73267 + 73225 @@ -35539,15 +35569,15 @@ for_condition - 76363 + 76319 for_stmt - 76363 + 76319 condition_id - 76363 + 76319 @@ -35561,7 +35591,7 @@ 1 2 - 76363 + 76319 @@ -35577,7 +35607,7 @@ 1 2 - 76363 + 76319 @@ -35587,15 +35617,15 @@ for_update - 73407 + 73365 for_stmt - 73407 + 73365 update_id - 73407 + 73365 @@ -35609,7 +35639,7 @@ 1 2 - 73407 + 73365 @@ -35625,7 +35655,7 @@ 1 2 - 73407 + 73365 @@ -35635,15 +35665,15 @@ for_body - 84413 + 84365 for_stmt - 84413 + 84365 body_id - 84413 + 84365 @@ -35657,7 +35687,7 @@ 1 2 - 84413 + 84365 @@ -35673,7 +35703,7 @@ 1 2 - 84413 + 84365 @@ -35683,19 +35713,19 @@ stmtparents - 5589515 + 5605702 id - 5589515 + 5605702 index - 15683 + 15728 parent - 2355552 + 2362374 @@ -35709,7 +35739,7 @@ 1 2 - 5589515 + 5605702 @@ -35725,7 +35755,7 @@ 1 2 - 5589515 + 5605702 @@ -35741,52 +35771,52 @@ 1 2 - 5152 + 5167 2 3 - 1284 + 1287 3 4 - 266 + 267 4 5 - 2010 + 2016 7 8 - 1308 + 1312 8 12 - 1017 + 1020 12 29 - 1380 + 1384 29 39 - 1179 + 1182 42 78 - 1187 + 1190 78 - 207977 - 896 + 207983 + 898 @@ -35802,52 +35832,52 @@ 1 2 - 5152 + 5167 2 3 - 1284 + 1287 3 4 - 266 + 267 4 5 - 2010 + 2016 7 8 - 1308 + 1312 8 12 - 1017 + 1020 12 29 - 1380 + 1384 29 39 - 1179 + 1182 42 78 - 1187 + 1190 78 - 207977 - 896 + 207983 + 898 @@ -35863,32 +35893,32 @@ 1 2 - 1338178 + 1342037 2 3 - 514505 + 516011 3 4 - 150687 + 151119 4 6 - 154814 + 155274 6 16 - 178500 + 179012 16 1943 - 18865 + 18919 @@ -35904,32 +35934,32 @@ 1 2 - 1338178 + 1342037 2 3 - 514505 + 516011 3 4 - 150687 + 151119 4 6 - 154814 + 155274 6 16 - 178500 + 179012 16 1943 - 18865 + 18919 @@ -35939,30 +35969,30 @@ ishandler - 42985 + 43492 block - 42985 + 43492 stmt_decl_bind - 724033 + 728504 stmt - 713534 + 688131 num - 72 + 125 decl - 724033 + 728435 @@ -35976,12 +36006,12 @@ 1 2 - 706121 + 665975 2 - 10 - 7413 + 32 + 22156 @@ -35997,12 +36027,12 @@ 1 2 - 706121 + 665975 2 - 10 - 7413 + 32 + 22156 @@ -36016,48 +36046,53 @@ 12 - 14 - 15 + 1 + 2 + 52 + + + 2 + 3 8 - 15 - 16 + 3 + 5 8 - 18 - 19 + 7 + 11 8 - 21 - 22 + 11 + 15 8 - 25 - 26 + 21 + 45 8 - 60 - 61 + 86 + 121 8 - 229 - 230 + 205 + 357 8 - 918 - 919 + 1067 + 2544 8 - 88354 - 88355 + 5483 + 170293 8 @@ -36072,48 +36107,53 @@ 12 - 14 - 15 + 1 + 2 + 52 + + + 2 + 3 8 - 15 - 16 + 3 + 5 8 - 18 - 19 + 7 + 11 8 - 21 - 22 + 11 + 15 8 - 25 - 26 + 21 + 45 8 - 60 - 61 + 86 + 121 8 - 229 - 230 + 205 + 357 8 - 918 - 919 + 1067 + 2544 8 - 88354 - 88355 + 5483 + 170276 8 @@ -36130,7 +36170,12 @@ 1 2 - 724033 + 728411 + + + 2 + 8 + 24 @@ -36146,7 +36191,7 @@ 1 2 - 724033 + 728435 @@ -36156,19 +36201,19 @@ stmt_decl_entry_bind - 724033 + 728504 stmt - 713534 + 688131 num - 72 + 125 decl_entry - 724033 + 728504 @@ -36182,12 +36227,12 @@ 1 2 - 706121 + 665975 2 - 10 - 7413 + 32 + 22156 @@ -36203,12 +36248,12 @@ 1 2 - 706121 + 665975 2 - 10 - 7413 + 32 + 22156 @@ -36222,48 +36267,53 @@ 12 - 14 - 15 + 1 + 2 + 52 + + + 2 + 3 8 - 15 - 16 + 3 + 5 8 - 18 - 19 + 7 + 11 8 - 21 - 22 + 11 + 15 8 - 25 - 26 + 21 + 45 8 - 60 - 61 + 86 + 121 8 - 229 - 230 + 205 + 357 8 - 918 - 919 + 1067 + 2544 8 - 88354 - 88355 + 5483 + 170293 8 @@ -36278,48 +36328,53 @@ 12 - 14 - 15 + 1 + 2 + 52 + + + 2 + 3 8 - 15 - 16 + 3 + 5 8 - 18 - 19 + 7 + 11 8 - 21 - 22 + 11 + 15 8 - 25 - 26 + 21 + 45 8 - 60 - 61 + 86 + 121 8 - 229 - 230 + 205 + 357 8 - 918 - 919 + 1067 + 2544 8 - 88354 - 88355 + 5483 + 170293 8 @@ -36336,7 +36391,7 @@ 1 2 - 724033 + 728504 @@ -36352,7 +36407,7 @@ 1 2 - 724033 + 728504 @@ -36362,15 +36417,15 @@ blockscope - 1614225 + 1625753 block - 1614225 + 1625753 enclosing - 1400877 + 1404746 @@ -36384,7 +36439,7 @@ 1 2 - 1614225 + 1625753 @@ -36400,17 +36455,17 @@ 1 2 - 1270635 + 1267599 2 4 - 115144 + 122045 4 29 - 15098 + 15102 @@ -36420,19 +36475,19 @@ jumpinfo - 348275 + 348076 id - 348275 + 348076 str - 28944 + 28928 target - 72696 + 72655 @@ -36446,7 +36501,7 @@ 1 2 - 348275 + 348076 @@ -36462,7 +36517,7 @@ 1 2 - 348275 + 348076 @@ -36478,32 +36533,32 @@ 2 3 - 13595 + 13587 3 4 - 6058 + 6054 4 5 - 2013 + 2012 5 6 - 1888 + 1887 6 10 - 2197 + 2196 10 25 - 2189 + 2188 25 @@ -36524,17 +36579,17 @@ 1 2 - 23187 + 23174 2 3 - 3626 + 3624 3 3321 - 2130 + 2129 @@ -36555,27 +36610,27 @@ 2 3 - 36206 + 36185 3 4 - 17631 + 17620 4 5 - 7378 + 7374 5 8 - 6417 + 6413 8 2124 - 5030 + 5027 @@ -36591,7 +36646,7 @@ 1 2 - 72696 + 72655 @@ -36601,11 +36656,11 @@ preprocdirects - 5321789 + 5322959 id - 5321789 + 5322959 kind @@ -36613,7 +36668,7 @@ location - 5318720 + 5319889 @@ -36627,7 +36682,7 @@ 1 2 - 5321789 + 5322959 @@ -36643,7 +36698,7 @@ 1 2 - 5321789 + 5322959 @@ -36791,7 +36846,7 @@ 1 2 - 5318597 + 5319766 26 @@ -36812,7 +36867,7 @@ 1 2 - 5318720 + 5319889 @@ -36822,15 +36877,15 @@ preprocpair - 1122961 + 1123207 begin - 874750 + 874943 elseelifend - 1122961 + 1123207 @@ -36844,17 +36899,17 @@ 1 2 - 639184 + 639324 2 3 - 226728 + 226777 3 9 - 8838 + 8840 @@ -36870,7 +36925,7 @@ 1 2 - 1122961 + 1123207 @@ -36880,41 +36935,41 @@ preproctrue - 432219 + 432314 branch - 432219 + 432314 preprocfalse - 280740 + 280801 branch - 280740 + 280801 preproctext - 4282669 + 4283611 id - 4282669 + 4283611 head - 2907815 + 2908455 body - 1656453 + 1656817 @@ -36928,7 +36983,7 @@ 1 2 - 4282669 + 4283611 @@ -36944,7 +36999,7 @@ 1 2 - 4282669 + 4283611 @@ -36960,12 +37015,12 @@ 1 2 - 2712390 + 2712986 2 798 - 195425 + 195468 @@ -36981,12 +37036,12 @@ 1 2 - 2827902 + 2828524 2 5 - 79913 + 79930 @@ -37002,17 +37057,17 @@ 1 2 - 1510620 + 1510952 2 10 - 125209 + 125237 10 13605 - 20622 + 20627 @@ -37028,17 +37083,17 @@ 1 2 - 1514794 + 1515127 2 12 - 124841 + 124869 12 3246 - 16817 + 16821 @@ -37048,15 +37103,15 @@ includes - 316459 + 322579 id - 316459 + 322579 included - 58294 + 59421 @@ -37070,7 +37125,7 @@ 1 2 - 316459 + 322579 @@ -37086,37 +37141,37 @@ 1 2 - 28848 + 29406 2 3 - 9378 + 9559 3 4 - 4919 + 5015 4 6 - 5318 + 5421 6 11 - 4489 + 4576 11 47 - 4374 + 4459 47 793 - 965 + 983 @@ -37174,15 +37229,15 @@ link_targets - 817 + 816 id - 817 + 816 binary - 817 + 816 @@ -37196,7 +37251,7 @@ 1 2 - 817 + 816 @@ -37212,7 +37267,7 @@ 1 2 - 817 + 816 @@ -37222,15 +37277,15 @@ link_parent - 30993807 + 31164351 element - 3938571 + 3960481 link_target - 335 + 337 @@ -37244,17 +37299,17 @@ 1 2 - 537390 + 540607 2 9 - 27022 + 27182 9 10 - 3374158 + 3392691 @@ -37273,48 +37328,48 @@ 33 - 100775 - 100776 + 100732 + 100733 33 - 100895 - 100896 + 100852 + 100853 33 - 100953 - 100954 + 100910 + 100911 33 - 100974 - 100975 + 100931 + 100932 33 - 100996 - 100997 + 100953 + 100954 33 - 101038 - 101039 + 100995 + 100996 33 - 103041 - 103042 + 102998 + 102999 33 - 106539 - 106540 + 106496 + 106497 33 - 108099 - 108100 + 108057 + 108058 33 diff --git a/cpp/ql/lib/upgrades/0853f43dc8c08deecb473c54a2b70da8597f1ab5/old.dbscheme b/cpp/ql/lib/upgrades/0853f43dc8c08deecb473c54a2b70da8597f1ab5/old.dbscheme new file mode 100644 index 000000000000..0853f43dc8c0 --- /dev/null +++ b/cpp/ql/lib/upgrades/0853f43dc8c08deecb473c54a2b70da8597f1ab5/old.dbscheme @@ -0,0 +1,2578 @@ + +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** + * Gives the TRAP filename that `trap` is associated with. + * For debugging only. + */ +trap_filename( + int trap: @trap, + string filename: string ref +); + +/** + * Gives the tag name for `tag`. + * For debugging only. + */ +tag_name( + int tag: @tag, + string name: string ref +); + +@trap_or_tag = @tag | @trap; + +/** + * Gives the name for the source file. + */ +source_file_name( + int sf: @source_file, + string name: string ref +); + +/** + * In `build-mode: none` overlay mode, indicates that `source_file` + * (`/path/to/foo.c`) uses the TRAP file `trap_file`; i.e. it is the + * TRAP file corresponding to `foo.c`, something it transitively + * includes, or a template instantiation it transitively uses. + */ +source_file_uses_trap( + int source_file: @source_file ref, + int trap_file: @trap ref +); + +/** + * In `build-mode: none` overlay mode, indicates that the TRAP file + * `trap_file` uses tag `tag`. + */ +trap_uses_tag( + int trap_file: @trap ref, + int tag: @tag ref +); + +/** + * Holds if there is a definition of `element` in TRAP file or tag `t`. + */ +in_trap_or_tag( + int element: @element ref, + int t: @trap_or_tag ref +); + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +// ... 40 _Decimal32 +// ... 41 _Decimal64 +// ... 42 _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 +); +class_template_generated_from( + unique int template: @usertype ref, + int from: @usertype 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 +); +function_template_generated_from( + unique int template: @function ref, + int from: @function 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 +); +variable_template_generated_from( + unique int template: @variable ref, + int from: @variable ref +); + +is_alias_template(unique int id: @usertype ref); +alias_instantiation( + unique int to: @usertype ref, + int from: @usertype ref +); +alias_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +alias_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); +alias_template_generated_from( + unique int template: @usertype ref, + int from: @usertype ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype + | @derivedtype; + +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 +| 394 = @isinvocable +| 395 = @isnothrowinvocable +| 396 = @isbitwisecloneable +; + +@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 + | @isinvocable + | @isnothrowinvocable + | @isbitwisecloneable + ; + +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 +); + +param_ref_to_this( + int expr: @param_ref 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 +| 17 = @ppd_embed +| 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 +); + +embeds( + unique int id: @ppd_embed 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 +); + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/0853f43dc8c08deecb473c54a2b70da8597f1ab5/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/0853f43dc8c08deecb473c54a2b70da8597f1ab5/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..6aec212e408f --- /dev/null +++ b/cpp/ql/lib/upgrades/0853f43dc8c08deecb473c54a2b70da8597f1ab5/semmlecode.cpp.dbscheme @@ -0,0 +1,2588 @@ + +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +/** + * Gives the TRAP filename that `trap` is associated with. + * For debugging only. + */ +trap_filename( + int trap: @trap, + string filename: string ref +); + +/** + * Gives the tag name for `tag`. + * For debugging only. + */ +tag_name( + int tag: @tag, + string name: string ref +); + +@trap_or_tag = @tag | @trap; + +/** + * Gives the name for the source file. + */ +source_file_name( + int sf: @source_file, + string name: string ref +); + +/** + * In `build-mode: none` overlay mode, indicates that `source_file` + * (`/path/to/foo.c`) uses the TRAP file `trap_file`; i.e. it is the + * TRAP file corresponding to `foo.c`, something it transitively + * includes, or a template instantiation it transitively uses. + */ +source_file_uses_trap( + int source_file: @source_file ref, + int trap_file: @trap ref +); + +/** + * In `build-mode: none` overlay mode, indicates that the TRAP file + * `trap_file` uses tag `tag`. + */ +trap_uses_tag( + int trap_file: @trap ref, + int tag: @tag ref +); + +/** + * Holds if there is a definition of `element` in TRAP file or tag `t`. + */ +in_trap_or_tag( + int element: @element ref, + int t: @trap_or_tag ref +); + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +// ... 40 _Decimal32 +// ... 41 _Decimal64 +// ... 42 _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 +| 67 = @bit_precise_int // _BitInt(N) +| 68 = @unsigned_bit_precise_int // unsigned _BitInt(N) +| 69 = @signed_bit_precise_int // signed _BitInt(N) +; + +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 +); + +bit_precise_int_types( + unique int id: @builtintype ref, + int bit_width: 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 +); +class_template_generated_from( + unique int template: @usertype ref, + int from: @usertype 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 +); +function_template_generated_from( + unique int template: @function ref, + int from: @function 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 +); +variable_template_generated_from( + unique int template: @variable ref, + int from: @variable ref +); + +is_alias_template(unique int id: @usertype ref); +alias_instantiation( + unique int to: @usertype ref, + int from: @usertype ref +); +alias_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +alias_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); +alias_template_generated_from( + unique int template: @usertype ref, + int from: @usertype ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype + | @derivedtype; + +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 +| 394 = @isinvocable +| 395 = @isnothrowinvocable +| 396 = @isbitwisecloneable +; + +@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 + | @isinvocable + | @isnothrowinvocable + | @isbitwisecloneable + ; + +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 +); + +param_ref_to_this( + int expr: @param_ref 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 +| 17 = @ppd_embed +| 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 +); + +embeds( + unique int id: @ppd_embed 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 +); + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/0853f43dc8c08deecb473c54a2b70da8597f1ab5/upgrade.properties b/cpp/ql/lib/upgrades/0853f43dc8c08deecb473c54a2b70da8597f1ab5/upgrade.properties new file mode 100644 index 000000000000..92084ebe9ad6 --- /dev/null +++ b/cpp/ql/lib/upgrades/0853f43dc8c08deecb473c54a2b70da8597f1ab5/upgrade.properties @@ -0,0 +1,2 @@ +description: Support C23 _BitInt +compatibility: partial diff --git a/cpp/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/cpp/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 8e6977ba5321..e71d67bc528c 100644 --- a/cpp/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/cpp/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import cpp private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/cpp/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/cpp/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index d2c8efbf3165..18493c8ad19c 100644 --- a/cpp/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/cpp/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -25,4 +25,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = C::Location; + + string getRelativeUrl(Location location) { + exists(C::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index de14ac42a586..cfc196ba3c8b 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,21 @@ +## 1.9.2 + +### Minor Analysis Improvements + +* The `cpp/resource-not-released-in-destructor` query now recognizes resources released through local aliases, reducing false-positive results. + +## 1.9.1 + +No user-facing changes. + +## 1.9.0 + +### New Queries + +* Added a new query, `cpp/ambiguous-assignment-of-comparison`, to detect potentially + ambiguous expressions where a comparison result is assigned to a variable and the + assignment is used as a truth value. + ## 1.8.3 ### Minor Analysis Improvements diff --git a/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.cpp b/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.cpp new file mode 100644 index 000000000000..c99ee284346c --- /dev/null +++ b/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.cpp @@ -0,0 +1,12 @@ +int read_status(); + +int check_status() { + int status; + if (status = read_status() < 0) // BAD: assigns the comparison result. + return status; + + if ((status = read_status()) < 0) // GOOD: assigns first, then compares. + return status; + + return 0; +} diff --git a/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.qhelp b/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.qhelp new file mode 100644 index 000000000000..e8404940bfe9 --- /dev/null +++ b/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.qhelp @@ -0,0 +1,31 @@ + + + + +

Assignment operators have lower precedence than comparison operators. For example, +status = read_status() < 0 assigns the comparison result (zero or one) to +status. This can be unintended when the programmer meant to assign the return value +first and then compare it with zero.

+ + + +

Use parentheses to make the intended order of operations explicit. To assign first and compare the +assigned value, parenthesize the assignment. To intentionally assign the comparison result, +parenthesize the comparison. An explicit cast around the comparison also makes that order clear.

+
+ + +

In the first condition, status receives either zero or one instead of the value +returned by read_status(). The second condition explicitly performs the assignment +before the comparison.

+ +
+ + +
  • SEI CERT C Coding Standard: EXP00-C. Use parentheses for precedence of operation.
  • +
  • C++ reference: Operator precedence.
  • +
    + + diff --git a/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.ql b/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.ql new file mode 100644 index 000000000000..2bfe9f7159f5 --- /dev/null +++ b/cpp/ql/src/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.ql @@ -0,0 +1,71 @@ +/** + * @name Ambiguous assignment of comparison result used as truth value + * @description Using an assignment of an unparenthesized comparison as + * a truth value may indicate unintended operator grouping. + * @kind problem + * @problem.severity warning + * @precision high + * @id cpp/ambiguous-assignment-of-comparison + * @tags quality + * reliability + * correctness + * external/cwe/cwe-783 + */ + +import cpp + +/** Holds if the value of `expression` is directly used as a truth value. */ +private predicate isDirectlyUsedAsTruthValue(Expr expression) { + expression.isCondition() + or + expression = any(UnaryLogicalOperation operation).getAnOperand() + or + expression = any(BinaryLogicalOperation operation).getAnOperand() +} + +/** + * Holds if the value of `expression` is used as a truth value, possibly after contributing to a + * comma, conditional, or comparison expression. + */ +private predicate isUsedAsTruthValue(Expr expression) { + isDirectlyUsedAsTruthValue(expression) + or + exists(CommaExpr comma | + expression = comma.getRightOperand() and + isUsedAsTruthValue(comma) + ) + or + exists(ConditionalExpr conditional | + expression = [conditional.getThen(), conditional.getElse()] and + isUsedAsTruthValue(conditional) + ) + or + exists(ComparisonOperation comparison | + expression = comparison.getAnOperand() and + isUsedAsTruthValue(comparison) + ) +} + +/** + * Holds if `comparison` is explicitly grouped using parentheses or an explicit cast. + */ +private predicate isExplicitlyGrouped(ComparisonOperation comparison) { + comparison.isParenthesised() + or + exists(Cast cast | cast = comparison.getConversion+() and not cast.isImplicit()) +} + +from Assignment assignment, ComparisonOperation comparison +where + assignment.getRValue() = comparison and + not isExplicitlyGrouped(comparison) and + isUsedAsTruthValue(assignment) and + // A Boolean lvalue makes assigning the comparison result type-appropriate and normally + // intentional. + not assignment.getLValue().getUnspecifiedType() instanceof BoolType and + not assignment.isUnevaluated() and + not assignment.isFromUninstantiatedTemplate(_) +select assignment, + "The '" + assignment.getOperator() + + "' operation assigns the result of an unparenthesized comparison, and its result is used as " + + "a truth value." diff --git a/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql b/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql index 682d83874333..1cb3be1f0c91 100644 --- a/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql +++ b/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql @@ -35,22 +35,25 @@ predicate privateHostNameFlowsToExpr(Expr e) { TaintTracking::localExprTaint(any(StringLiteral p | p.getValue() instanceof PrivateHostName), e) } -/** - * A string containing an HTTP URL not in a private domain. - */ -class HttpStringLiteral extends StringLiteral { - HttpStringLiteral() { +private class HttpStringLiteralCandidate extends StringLiteral { + HttpStringLiteralCandidate() { exists(string s | this.getValue() = s | s = "http" or exists(string tail | tail = s.regexpCapture("http://(.*)", 1) and not tail instanceof PrivateHostName ) - ) and - not privateHostNameFlowsToExpr(this.getParent*()) + ) } } +/** + * A string containing an HTTP URL not in a private domain. + */ +class HttpStringLiteral extends HttpStringLiteralCandidate { + HttpStringLiteral() { not privateHostNameFlowsToExpr(this.getParent*()) } +} + /** * Taint tracking configuration for HTTP connections. */ diff --git a/cpp/ql/src/change-notes/released/1.9.0.md b/cpp/ql/src/change-notes/released/1.9.0.md new file mode 100644 index 000000000000..61431fce84ed --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.9.0.md @@ -0,0 +1,7 @@ +## 1.9.0 + +### New Queries + +* Added a new query, `cpp/ambiguous-assignment-of-comparison`, to detect potentially + ambiguous expressions where a comparison result is assigned to a variable and the + assignment is used as a truth value. diff --git a/cpp/ql/src/change-notes/released/1.9.1.md b/cpp/ql/src/change-notes/released/1.9.1.md new file mode 100644 index 000000000000..bc5c4bd30411 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.9.1.md @@ -0,0 +1,3 @@ +## 1.9.1 + +No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.9.2.md b/cpp/ql/src/change-notes/released/1.9.2.md new file mode 100644 index 000000000000..297a6627e0b5 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.9.2.md @@ -0,0 +1,5 @@ +## 1.9.2 + +### Minor Analysis Improvements + +* The `cpp/resource-not-released-in-destructor` query now recognizes resources released through local aliases, reducing false-positive results. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 8071ef421ab4..842136056d89 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.8.3 +lastReleaseVersion: 1.9.2 diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpy.qhelp b/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpy.qhelp new file mode 100644 index 000000000000..9b1dcdc4cdf4 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpy.qhelp @@ -0,0 +1,28 @@ + + + +

    +Firmware and embedded drivers often copy data into buffers using lengths read from +allowlisted MMIO register macros such as READ_REG or GET_MMIO. +When those lengths are not validated against the destination buffer size, an attacker who +can influence hardware registers or DMA metadata can trigger buffer overflows. +

    +
    + +

    +Always validate MMIO/DMA-derived lengths before passing them to memcpy, +memmove, or strncpy. Compare against a compile-time maximum +and reject or clamp out-of-range values before copying. +

    +
    + +

    Bad: length from an MMIO register used directly as the copy size.

    + +

    Good: defensive bounds check before the copy.

    + +
    + + +
    diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpy.ql b/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpy.ql new file mode 100644 index 000000000000..67a0c98e2db4 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpy.ql @@ -0,0 +1,64 @@ +/** + * @name MMIO/DMA unsanitized memory copy + * @description Memory copy sizes derived from allowlisted MMIO/DMA register-read + * macros without bounds validation may overflow destination buffers. + * @kind path-problem + * @problem.severity error + * @precision low + * @id cpp/mmio-unsanitized-memcpy + * @tags security + * experimental + * external/cwe/cwe-120 + * external/cwe/cwe-787 + */ + +import cpp +import semmle.code.cpp.dataflow.new.TaintTracking +import semmle.code.cpp.controlflow.IRGuards +import MmioFlow::PathGraph + +/** Holds if `source` reads MMIO/DMA state through an allowlisted register macro. */ +predicate isMmioSource(DataFlow::Node source) { + exists(MacroInvocation mi | + mi.getMacro().hasName(["READ_REG", "GET_MMIO", "REG_READ", "DMA_READ"]) and + source.asExpr() = mi.getExpr() + ) +} + +predicate isMemcpySizeSink(DataFlow::Node sink, FunctionCall fc) { + fc.getTarget().hasName(["memcpy", "memmove", "strncpy", "wmemcpy", "wmemmove"]) and + sink.asExpr() = fc.getArgument(2) +} + +/** Recognizes relational comparison bounds checks using public IRGuards API. */ +predicate lessThanOrEqual(IRGuardCondition g, Expr e, boolean branch) { + exists(Operand left | + g.comparesLt(left, _, _, true, branch) or + g.comparesEq(left, _, _, true, branch) + | + left.getDef().getConvertedResultExpression() = e + ) +} + +module MmioConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { isMmioSource(source) } + + predicate isSink(DataFlow::Node sink) { isMemcpySizeSink(sink, _) } + + predicate isBarrier(DataFlow::Node node) { + node = DataFlow::BarrierGuard::getABarrierNode() or + node = DataFlow::BarrierGuard::getAnIndirectBarrierNode() + } + + predicate observeDiffInformedIncrementalMode() { any() } +} + +module MmioFlow = TaintTracking::Global; + +from FunctionCall memcpyCall, MmioFlow::PathNode source, MmioFlow::PathNode sink +where + MmioFlow::flowPath(source, sink) and + isMemcpySizeSink(sink.getNode(), memcpyCall) +select sink.getNode(), source, sink, + "Memory copy size argument is derived from $@ without sufficient bounds validation.", + source.getNode(), "an MMIO/DMA hardware register read" diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpyBad.c b/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpyBad.c new file mode 100644 index 000000000000..13e68fc7561d --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpyBad.c @@ -0,0 +1,9 @@ +#define READ_REG(addr) (*(volatile unsigned int *)(addr)) +#define MAX_DMA_LEN 64 + +void *memcpy(void *dest, const void *src, unsigned long n); + +void bad_mmio_memcpy(char *dst, char *src) { + unsigned int len = READ_REG(0x40001000); + memcpy(dst, src, len); +} diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpyGood.c b/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpyGood.c new file mode 100644 index 000000000000..38c37a3f3c64 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpyGood.c @@ -0,0 +1,10 @@ +#define READ_REG(addr) (*(volatile unsigned int *)(addr)) +#define MAX_DMA_LEN 64 + +void *memcpy(void *dest, const void *src, unsigned long n); + +void good_mmio_memcpy(char *dst, char *src) { + unsigned int len = READ_REG(0x40001000); + if (len <= MAX_DMA_LEN) + memcpy(dst, src, len); +} diff --git a/cpp/ql/src/jsf/4.10 Classes/AV Rule 79.ql b/cpp/ql/src/jsf/4.10 Classes/AV Rule 79.ql index 85b779903ebf..83fe8facd4f3 100644 --- a/cpp/ql/src/jsf/4.10 Classes/AV Rule 79.ql +++ b/cpp/ql/src/jsf/4.10 Classes/AV Rule 79.ql @@ -89,7 +89,7 @@ Expr exprOrDereference(Expr e) { */ private predicate exprReleases(Expr e, Expr released, string kind) { // `e` is a call to a release function and `released` is the released argument - releaseExpr(e, released, kind) + releaseExpr(e, pragma[only_bind_into](globalValueNumber(released).getAnExpr()), kind) or exists(int arg, VariableAccess access, Function f | // `e` is a call to a function that releases one of it's parameters, diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index ca971b04aaad..9c6c1d1447ae 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.8.3 +version: 1.9.2 groups: - cpp - queries diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-120/MmioUnsanitizedMemcpy/MmioUnsanitizedMemcpy.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-120/MmioUnsanitizedMemcpy/MmioUnsanitizedMemcpy.expected new file mode 100644 index 000000000000..322b2ef7c419 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-120/MmioUnsanitizedMemcpy/MmioUnsanitizedMemcpy.expected @@ -0,0 +1,28 @@ +#select +| test.c:26:20:26:22 | len | test.c:25:18:25:37 | * ... | test.c:26:20:26:22 | len | Memory copy size argument is derived from $@ without sufficient bounds validation. | test.c:25:18:25:37 | * ... | an MMIO/DMA hardware register read | +| test.c:31:21:31:23 | len | test.c:30:18:30:37 | * ... | test.c:31:21:31:23 | len | Memory copy size argument is derived from $@ without sufficient bounds validation. | test.c:30:18:30:37 | * ... | an MMIO/DMA hardware register read | +| test.c:36:21:36:23 | len | test.c:35:18:35:37 | * ... | test.c:36:21:36:23 | len | Memory copy size argument is derived from $@ without sufficient bounds validation. | test.c:35:18:35:37 | * ... | an MMIO/DMA hardware register read | +| test.c:41:20:41:22 | len | test.c:40:18:40:37 | * ... | test.c:41:20:41:22 | len | Memory copy size argument is derived from $@ without sufficient bounds validation. | test.c:40:18:40:37 | * ... | an MMIO/DMA hardware register read | +edges +| test.c:25:18:25:37 | * ... | test.c:25:18:25:37 | * ... | provenance | | +| test.c:25:18:25:37 | * ... | test.c:26:20:26:22 | len | provenance | | +| test.c:30:18:30:37 | * ... | test.c:30:18:30:37 | * ... | provenance | | +| test.c:30:18:30:37 | * ... | test.c:31:21:31:23 | len | provenance | | +| test.c:35:18:35:37 | * ... | test.c:35:18:35:37 | * ... | provenance | | +| test.c:35:18:35:37 | * ... | test.c:36:21:36:23 | len | provenance | | +| test.c:40:18:40:37 | * ... | test.c:40:18:40:37 | * ... | provenance | | +| test.c:40:18:40:37 | * ... | test.c:41:20:41:22 | len | provenance | | +nodes +| test.c:25:18:25:37 | * ... | semmle.label | * ... | +| test.c:25:18:25:37 | * ... | semmle.label | * ... | +| test.c:26:20:26:22 | len | semmle.label | len | +| test.c:30:18:30:37 | * ... | semmle.label | * ... | +| test.c:30:18:30:37 | * ... | semmle.label | * ... | +| test.c:31:21:31:23 | len | semmle.label | len | +| test.c:35:18:35:37 | * ... | semmle.label | * ... | +| test.c:35:18:35:37 | * ... | semmle.label | * ... | +| test.c:36:21:36:23 | len | semmle.label | len | +| test.c:40:18:40:37 | * ... | semmle.label | * ... | +| test.c:40:18:40:37 | * ... | semmle.label | * ... | +| test.c:41:20:41:22 | len | semmle.label | len | +subpaths diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-120/MmioUnsanitizedMemcpy/MmioUnsanitizedMemcpy.qlref b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-120/MmioUnsanitizedMemcpy/MmioUnsanitizedMemcpy.qlref new file mode 100644 index 000000000000..671ab2524272 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-120/MmioUnsanitizedMemcpy/MmioUnsanitizedMemcpy.qlref @@ -0,0 +1,2 @@ +query: experimental/Security/CWE/CWE-120/MmioUnsanitizedMemcpy.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-120/MmioUnsanitizedMemcpy/test.c b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-120/MmioUnsanitizedMemcpy/test.c new file mode 100644 index 000000000000..bf5c1bb583f4 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-120/MmioUnsanitizedMemcpy/test.c @@ -0,0 +1,83 @@ +/* Test case for MmioUnsanitizedMemcpy.ql + * Allowlisted MMIO/DMA register macros flowing into memcpy/memmove/strncpy size parameters. + */ + +typedef unsigned int uint32_t; + +void *memcpy(void *dest, const void *src, unsigned long n); +void *memmove(void *dest, const void *src, unsigned long n); +char *strncpy(char *dest, const char *src, unsigned long n); + +#define READ_REG(addr) (*(volatile uint32_t *)(addr)) +#define GET_MMIO(addr) (*(volatile uint32_t *)(addr)) +#define REG_READ(addr) (*(volatile uint32_t *)(addr)) +#define DMA_READ(addr) (*(volatile uint32_t *)(addr)) +#define MAX_DMA_LEN 64 + +struct VolatileField { + volatile uint32_t len; +}; + +volatile uint32_t mmio_len_reg; +struct VolatileField vf; + +static void bad_read_reg(char *dst, char *src) { + uint32_t len = READ_REG(0x40001000); // $ Source + memcpy(dst, src, len); // $ Alert +} + +static void bad_get_mmio(char *dst, char *src) { + uint32_t len = GET_MMIO(0x50000000); // $ Source + memmove(dst, src, len); // $ Alert +} + +static void bad_reg_read(char *dst, char *src) { + uint32_t len = REG_READ(0x51000000); // $ Source + strncpy(dst, src, len); // $ Alert +} + +static void bad_dma_read(char *dst, char *src) { + uint32_t len = DMA_READ(0x60000000); // $ Source + memcpy(dst, src, len); // $ Alert +} + +static void good_bounded(char *dst, char *src) { + uint32_t len = READ_REG(0x40001000); + if (len <= MAX_DMA_LEN) + memcpy(dst, src, len); // GOOD +} + +static void good_early_return(char *dst, char *src) { + uint32_t len = DMA_READ(0x60000000); + if (len > MAX_DMA_LEN) + return; + memcpy(dst, src, len); // GOOD +} + +static void good_constant_size(char *dst, char *src) { + uint32_t len = READ_REG(0x40001000); + memcpy(dst, src, 32); // GOOD +} + +static void negative_volatile_global(char *dst, char *src) { + uint32_t len = mmio_len_reg; + memcpy(dst, src, len); // GOOD +} + +static void negative_volatile_field(char *dst, char *src) { + uint32_t len = vf.len; + memcpy(dst, src, len); // GOOD +} + +static void negative_volatile_deref(char *dst, char *src) { + volatile uint32_t *reg = (volatile uint32_t *)0x40001000; + uint32_t len = *reg; + memcpy(dst, src, len); // GOOD +} + +static uint32_t GET_MMIO_fn(unsigned long addr); + +static void negative_get_mmio_function(char *dst, char *src) { + uint32_t len = GET_MMIO_fn(0x50000000); + memcpy(dst, src, len); // GOOD +} diff --git a/cpp/ql/test/include/iterator.h b/cpp/ql/test/include/iterator.h index 5cd7f2312842..77758bfa8da6 100644 --- a/cpp/ql/test/include/iterator.h +++ b/cpp/ql/test/include/iterator.h @@ -65,7 +65,7 @@ namespace std { }; template - constexpr back_insert_iterator back_inserter(Container& x) { // $ ir-def=*x + constexpr back_insert_iterator back_inserter(Container& x) { return back_insert_iterator(x); } @@ -89,7 +89,7 @@ namespace std { constexpr front_insert_iterator operator++(int); }; template - constexpr front_insert_iterator front_inserter(Container& x) { // $ ir-def=*x + constexpr front_insert_iterator front_inserter(Container& x) { return front_insert_iterator(x); } } diff --git a/cpp/ql/test/library-tests/dataflow/external-models/asio_streams.cpp b/cpp/ql/test/library-tests/dataflow/external-models/asio_streams.cpp index 401091122b8e..c6b46bf54b15 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/asio_streams.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/asio_streams.cpp @@ -1,23 +1,15 @@ // --- stub library headers --- -namespace std { - typedef unsigned long size_t; - #define SIZE_MAX 0xFFFFFFFF - - template class allocator { - }; +#include "std_string.h" - template struct char_traits { - }; +#define SIZE_MAX 0xFFFFFFFF - template, class Allocator = allocator > - class basic_string { +namespace std { + class string_view { public: - basic_string(const charT* s, const Allocator& a = Allocator()); + string_view(const char* s); }; - - typedef basic_string string; }; namespace boost { @@ -29,14 +21,50 @@ namespace boost { }; namespace asio { - template - class basic_stream_socket /*: public basic_socket*/ { - }; + class any_io_executor { }; + + class socket_base { }; + + template + class basic_socket : public socket_base { }; + + template + class basic_stream_socket : public basic_socket { }; namespace ip { + class resolver_base { + public: + enum flags { passive = 1 }; + }; + + template + class basic_resolver { + public: + class results_type { + }; + + results_type resolve(const std::string &host, const std::string &service); + results_type resolve(const std::string &host, const std::string &service, boost::system::error_code &ec); + results_type resolve(const std::string &host, const std::string &service, resolver_base::flags resolve_flags); + results_type resolve(const std::string &host, const std::string &service, resolver_base::flags resolve_flags, boost::system::error_code &ec); + results_type resolve(std::string_view host, std::string_view service); + results_type resolve(std::string_view host, std::string_view service, boost::system::error_code &ec); + results_type resolve(std::string_view host, std::string_view service, resolver_base::flags resolve_flags); + results_type resolve(std::string_view host, std::string_view service, resolver_base::flags resolve_flags, boost::system::error_code &ec); + results_type resolve(const InternetProtocol &protocol, const std::string &host, const std::string &service); + results_type resolve(const InternetProtocol &protocol, const std::string &host, const std::string &service, boost::system::error_code &ec); + results_type resolve(const InternetProtocol &protocol, const std::string &host, const std::string &service, resolver_base::flags resolve_flags); + results_type resolve(const InternetProtocol &protocol, const std::string &host, const std::string &service, resolver_base::flags resolve_flags, boost::system::error_code &ec); + results_type resolve(const InternetProtocol &protocol, std::string_view host, std::string_view service); + results_type resolve(const InternetProtocol &protocol, std::string_view host, std::string_view service, boost::system::error_code &ec); + results_type resolve(const InternetProtocol &protocol, std::string_view host, std::string_view service, resolver_base::flags resolve_flags); + results_type resolve(const InternetProtocol &protocol, std::string_view host, std::string_view service, resolver_base::flags resolve_flags, boost::system::error_code &ec); + }; + class tcp { public: typedef basic_stream_socket socket; + typedef basic_resolver resolver; }; }; @@ -76,6 +104,7 @@ void sink(char *); void sink(std::string); void sink(boost::asio::streambuf); void sink(boost::asio::mutable_buffer); +void sink(boost::asio::ip::tcp::resolver::results_type); char *getenv(const char *name); int send(int, const void*, int, int); @@ -105,3 +134,65 @@ void test(boost::asio::ip::tcp::socket &socket) { // ... } } + +void test_resolve_host() { + boost::asio::ip::tcp::resolver resolver; + boost::asio::ip::tcp protocol; + boost::asio::ip::resolver_base::flags flags = boost::asio::ip::resolver_base::passive; + boost::system::error_code error; + std::string host(source()); + std::string service(""); + std::string_view host_view(source()); + std::string_view service_view(""); + + sink(resolver.resolve(host, service)); // $ ir + sink(resolver.resolve(host, service, error)); // $ ir + sink(resolver.resolve(host, service, flags)); // $ ir + sink(resolver.resolve(host, service, flags, error)); // $ ir + + sink(resolver.resolve(host_view, service_view)); // $ ir + sink(resolver.resolve(host_view, service_view, error)); // $ ir + sink(resolver.resolve(host_view, service_view, flags)); // $ ir + sink(resolver.resolve(host_view, service_view, flags, error)); // $ ir + + sink(resolver.resolve(protocol, host, service)); // $ ir + sink(resolver.resolve(protocol, host, service, error)); // $ ir + sink(resolver.resolve(protocol, host, service, flags)); // $ ir + sink(resolver.resolve(protocol, host, service, flags, error)); // $ ir + + sink(resolver.resolve(protocol, host_view, service_view)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, error)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, flags)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, flags, error)); // $ ir +} + +void test_resolve_service() { + boost::asio::ip::tcp::resolver resolver; + boost::asio::ip::tcp protocol; + boost::asio::ip::resolver_base::flags flags = boost::asio::ip::resolver_base::passive; + boost::system::error_code error; + std::string host(""); + std::string service(source()); + std::string_view host_view(""); + std::string_view service_view(source()); + + sink(resolver.resolve(host, service)); // $ ir + sink(resolver.resolve(host, service, error)); // $ ir + sink(resolver.resolve(host, service, flags)); // $ ir + sink(resolver.resolve(host, service, flags, error)); // $ ir + + sink(resolver.resolve(host_view, service_view)); // $ ir + sink(resolver.resolve(host_view, service_view, error)); // $ ir + sink(resolver.resolve(host_view, service_view, flags)); // $ ir + sink(resolver.resolve(host_view, service_view, flags, error)); // $ ir + + sink(resolver.resolve(protocol, host, service)); // $ ir + sink(resolver.resolve(protocol, host, service, error)); // $ ir + sink(resolver.resolve(protocol, host, service, flags)); // $ ir + sink(resolver.resolve(protocol, host, service, flags, error)); // $ ir + + sink(resolver.resolve(protocol, host_view, service_view)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, error)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, flags)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, flags, error)); // $ ir +} diff --git a/cpp/ql/test/library-tests/dataflow/external-models/bal.cpp b/cpp/ql/test/library-tests/dataflow/external-models/bal.cpp new file mode 100644 index 000000000000..ad72d3321c80 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/bal.cpp @@ -0,0 +1,467 @@ +#include "bsl.h" + +// --- stub library headers --- + +namespace BloombergLP { +namespace bdlar { + class AnyRef {}; + class AnyConstRef {}; +} + +namespace balber { + class BerDecoder { + public: + template int decode(bsl::streambuf *streamBuf, TYPE *variable); + template int decode(bsl::istream& stream, TYPE *variable); + template int decodeAny(bsl::streambuf *streamBuf, TYPE *variable); + int decodeAny(bsl::streambuf *streamBuf, bdlar::AnyRef *variable); + template int decodeAny(bsl::istream& stream, TYPE *variable); + int decodeAny(bsl::istream& stream, bdlar::AnyRef *variable); + }; + class BerEncoder { + public: + template int encode(bsl::streambuf *streamBuf, const TYPE& value); + template int encode(bsl::ostream& stream, const TYPE& value); + template int encodeAny(bsl::streambuf *streamBuf, const TYPE& value); + int encodeAny(bsl::streambuf *streamBuf, const bdlar::AnyConstRef& any); + template int encodeAny(bsl::ostream& stream, const TYPE& value); + int encodeAny(bsl::ostream& stream, const bdlar::AnyConstRef& any); + }; +} + +namespace baljsn { + class DecoderOptions {}; + class EncoderOptions {}; + class Decoder { + public: + template int decode(bsl::streambuf *streamBuf, TYPE *value, const DecoderOptions& options); + template int decode(bsl::streambuf *streamBuf, TYPE *value, const DecoderOptions *options); + template int decode(bsl::istream& stream, TYPE *value, const DecoderOptions& options); + template int decode(bsl::istream& stream, TYPE *value, const DecoderOptions *options); + template int decode(bsl::streambuf *streamBuf, TYPE *value); + template int decode(bsl::istream& stream, TYPE *value); + template int decodeAny(bsl::streambuf *streamBuf, TYPE *value, const DecoderOptions& options); + template int decodeAny(bsl::streambuf *streamBuf, TYPE *value, const DecoderOptions *options = 0); + int decodeAny(bsl::streambuf *streamBuf, bdlar::AnyRef *value, const DecoderOptions& options); + template int decodeAny(bsl::istream& stream, TYPE *value, const DecoderOptions& options); + template int decodeAny(bsl::istream& stream, TYPE *value, const DecoderOptions *options = 0); + int decodeAny(bsl::istream& stream, bdlar::AnyRef *value, const DecoderOptions& options); + }; + class Encoder { + public: + template int encode(bsl::streambuf *streamBuf, const TYPE& value, const EncoderOptions& options); + template int encode(bsl::streambuf *streamBuf, const TYPE& value, const EncoderOptions *options); + template int encode(bsl::ostream& stream, const TYPE& value, const EncoderOptions& options); + template int encode(bsl::ostream& stream, const TYPE& value, const EncoderOptions *options); + template int encode(bsl::streambuf *streamBuf, const TYPE& value); + template int encode(bsl::ostream& stream, const TYPE& value); + template int encodeAny(bsl::streambuf *streamBuf, const TYPE& value, const EncoderOptions& options); + template int encodeAny(bsl::streambuf *streamBuf, const TYPE& value, const EncoderOptions *options = 0); + int encodeAny(bsl::streambuf *streamBuf, const bdlar::AnyConstRef& any, const EncoderOptions& options); + int encodeAny(bsl::streambuf *streamBuf, const bdlar::AnyConstRef& any, const EncoderOptions *options = 0); + template int encodeAny(bsl::ostream& stream, const TYPE& value, const EncoderOptions& options); + template int encodeAny(bsl::ostream& stream, const TYPE& value, const EncoderOptions *options = 0); + int encodeAny(bsl::ostream& stream, const bdlar::AnyConstRef& any, const EncoderOptions& options); + int encodeAny(bsl::ostream& stream, const bdlar::AnyConstRef& any, const EncoderOptions *options = 0); + }; +} + +namespace balxml { + class Formatter {}; + class Decoder { + public: + int open(bsl::istream& stream, const char *uri = 0); + int open(bsl::streambuf *buffer, const char *uri = 0); + int open(const char *buffer, bsl::size_t length, const char *uri = 0); + int open(const char *filename); + template bsl::istream& decode(bsl::istream& stream, TYPE *object, const char *uri = 0); + template int decode(bsl::streambuf *buffer, TYPE *object, const char *uri = 0); + template int decode(const char *buffer, bsl::size_t length, TYPE *object, const char *uri = 0); + template int decode(const char *filename, TYPE *object); + template int decode(TYPE *object); + template bsl::istream& decodeAny(bsl::istream& stream, TYPE *object, const char *uri = 0); + bsl::istream& decodeAny(bsl::istream& stream, bdlar::AnyRef *object, const char *uri = 0); + template int decodeAny(bsl::streambuf *buffer, TYPE *object, const char *uri = 0); + int decodeAny(bsl::streambuf *buffer, bdlar::AnyRef *object, const char *uri = 0); + template int decodeAny(TYPE *object); + int decodeAny(bdlar::AnyRef *object); + }; + class Encoder { + public: + template int encode(bsl::streambuf *buffer, const TYPE& object); + template int encodeToStream(bsl::ostream& stream, const TYPE& object); + template bsl::ostream& encode(bsl::ostream& stream, const TYPE& object); + template int encode(Formatter& formatter, const TYPE& object); + template int encodeAny(bsl::streambuf *buffer, const TYPE& object); + int encodeAny(bsl::streambuf *buffer, const bdlar::AnyConstRef& object); + template int encodeAnyToStream(bsl::ostream& stream, const TYPE& object); + int encodeAnyToStream(bsl::ostream& stream, const bdlar::AnyConstRef& object); + template bsl::ostream& encodeAny(bsl::ostream& stream, const TYPE& object); + bsl::ostream& encodeAny(bsl::ostream& stream, const bdlar::AnyConstRef& object); + template int encodeAny(Formatter& formatter, const TYPE& object); + int encodeAny(Formatter& formatter, const bdlar::AnyConstRef& object); + }; +} +} + +// --- test code --- + +char *source(); +void sink(char); +void sink(bsl::string s); + +// Stand-in for a bdlat sequence type. +struct Record { + char name[16]; +}; + +// A tainted stream is made by reinterpreting a tainted bsl::string, as in bslx.cpp. baljsn +// and balxml only accept bdlat sequence/choice types; the stubs do not enforce that, and +// most tests decode into a bsl::string so the result can be read back. The *_struct_* tests +// show whole-object taint without general object-to-field flow. TaintInheritingContent +// (FlowSteps.qll) enables inheritance for selected fields; Record::name is not modeled this way. + +// ===== balber (BER) ===== + +// Decoding a tainted stream taints the decoded object. +void test_balber_decode() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + bsl::string out; + BloombergLP::balber::BerDecoder decoder; + decoder.decode(sb, &out); + sink(*out.data()); // $ ir +} + +void test_balber_decode_istream() { + bsl::string data(source()); + bsl::istream *is = (bsl::istream *)data.data(); + bsl::string out; + BloombergLP::balber::BerDecoder decoder; + decoder.decode(*is, &out); + sink(*out.data()); // $ ir +} + +void test_balber_decodeAny() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + bsl::string out; + BloombergLP::balber::BerDecoder decoder; + decoder.decodeAny(sb, &out); + sink(*out.data()); // $ ir +} + +// Encoding a tainted object taints the destination stream. +void test_balber_encode() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balber::BerEncoder encoder; + encoder.encode((bsl::streambuf *)buf, obj); + sink(buf[0]); // $ ir +} + +void test_balber_encodeAny() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balber::BerEncoder encoder; + encoder.encodeAny((bsl::streambuf *)buf, obj); + sink(buf[0]); // $ ir +} + +// ===== baljsn (JSON) ===== + +// The non-deprecated overloads take a trailing DecoderOptions/EncoderOptions. +void test_baljsn_decode_options() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + bsl::string out; + BloombergLP::baljsn::DecoderOptions options; + BloombergLP::baljsn::Decoder decoder; + decoder.decode(sb, &out, options); + sink(*out.data()); // $ ir +} + +void test_baljsn_decode_istream_options_ptr() { + bsl::string data(source()); + bsl::istream *is = (bsl::istream *)data.data(); + bsl::string out; + BloombergLP::baljsn::DecoderOptions options; + BloombergLP::baljsn::Decoder decoder; + decoder.decode(*is, &out, &options); + sink(*out.data()); // $ ir +} + +void test_baljsn_decodeAny() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + bsl::string out; + BloombergLP::baljsn::Decoder decoder; + decoder.decodeAny(sb, &out); + sink(*out.data()); // $ ir +} + +void test_baljsn_encode_options() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::baljsn::EncoderOptions options; + BloombergLP::baljsn::Encoder encoder; + encoder.encode((bsl::streambuf *)buf, obj, options); + sink(buf[0]); // $ ir +} + +void test_baljsn_encodeAny() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::baljsn::Encoder encoder; + encoder.encodeAny((bsl::streambuf *)buf, obj); + sink(buf[0]); // $ ir +} + +// A decoded struct carries taint as a whole: re-encoding it taints the output stream. +void test_baljsn_struct_round_trip() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + Record rec; + BloombergLP::baljsn::Decoder decoder; + decoder.decode(sb, &rec); + char buf[16]; + BloombergLP::baljsn::Encoder encoder; + encoder.encode((bsl::streambuf *)buf, rec); + sink(buf[0]); // $ ir +} + +void test_baljsn_struct_field_no_flow() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + Record rec; + BloombergLP::baljsn::Decoder decoder; + decoder.decode(sb, &rec); + sink(rec.name[0]); // no flow: Record::name does not inherit whole-object taint +} + +// ===== balxml (XML) ===== + +void test_balxml_decode_istream() { + bsl::string data(source()); + bsl::istream *is = (bsl::istream *)data.data(); + bsl::string out; + BloombergLP::balxml::Decoder decoder; + decoder.decode(*is, &out); + sink(*out.data()); // $ ir +} + +void test_balxml_decode_istream_return() { + bsl::string data(source()); + bsl::istream *is = (bsl::istream *)data.data(); + bsl::string out; + BloombergLP::balxml::Decoder decoder; + bsl::istream &r = decoder.decode(*is, &out, "uri"); + sink(*(char *)&r); // $ ir + sink(out); // $ ir +} + +void test_balxml_decode_streambuf() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + bsl::string out; + BloombergLP::balxml::Decoder decoder; + decoder.decode(sb, &out); + sink(*out.data()); // $ ir +} + +void test_balxml_decode_buffer_length() { + bsl::string data(source()); + bsl::string out; + BloombergLP::balxml::Decoder decoder; + decoder.decode(data.data(), data.size(), &out); + sink(*out.data()); // $ ir +} + +// decode(const char *filename, TYPE *) is not modelled. +void test_balxml_decode_filename_no_flow() { + bsl::string filename(source()); + bsl::string out; + BloombergLP::balxml::Decoder decoder; + decoder.decode(filename.data(), &out); + sink(*out.data()); // no flow: the input is a path, not data +} + +// The two-step open() + decode(TYPE *) form is not modelled. +void test_balxml_open_decode_no_flow() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + bsl::string out; + BloombergLP::balxml::Decoder decoder; + decoder.open(sb); + decoder.decode(&out); + sink(*out.data()); // $ MISSING: ir (not modelled) +} + +void test_balxml_decodeAny_istream() { + bsl::string data(source()); + bsl::istream *is = (bsl::istream *)data.data(); + bsl::string out; + BloombergLP::balxml::Decoder decoder; + decoder.decodeAny(*is, &out); + sink(*out.data()); // $ ir +} + +void test_balxml_decodeAny_istream_return() { + bsl::string data(source()); + bsl::istream *is = (bsl::istream *)data.data(); + bsl::string out; + BloombergLP::balxml::Decoder decoder; + bsl::istream &r = decoder.decodeAny(*is, &out); + sink(*(char *)&r); // $ ir + sink(out); // $ ir +} + +void test_balxml_decodeAny_streambuf() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + bsl::string out; + BloombergLP::balxml::Decoder decoder; + decoder.decodeAny(sb, &out); + sink(*out.data()); // $ ir +} + +void test_balxml_decodeAny_AnyRef_istream() { + bsl::string data(source()); + bsl::istream *is = (bsl::istream *)data.data(); + BloombergLP::bdlar::AnyRef any; + BloombergLP::balxml::Decoder decoder; + decoder.decodeAny(*is, &any); + sink(*(char *)&any); // $ ir +} + +void test_balxml_decodeAny_AnyRef_istream_return() { + bsl::string data(source()); + bsl::istream *is = (bsl::istream *)data.data(); + BloombergLP::bdlar::AnyRef any; + BloombergLP::balxml::Decoder decoder; + bsl::istream &r = decoder.decodeAny(*is, &any); + sink(*(char *)&r); // $ ir + sink(*(char *)&any); // $ ir +} + +void test_balxml_decodeAny_AnyRef_streambuf() { + bsl::string data(source()); + bsl::streambuf *sb = (bsl::streambuf *)data.data(); + BloombergLP::bdlar::AnyRef any; + BloombergLP::balxml::Decoder decoder; + decoder.decodeAny(sb, &any); + sink(*(char *)&any); // $ ir +} + +void test_balxml_encode_streambuf() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + encoder.encode((bsl::streambuf *)buf, obj); + sink(buf[0]); // $ ir +} + +void test_balxml_encode_ostream() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + encoder.encode(*(bsl::ostream *)buf, obj); + sink(buf[0]); // $ ir +} + +void test_balxml_encode_ostream_return_from_object() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + bsl::ostream &r = encoder.encode(*(bsl::ostream *)buf, obj); + sink(*(char *)&r); // $ ir + sink(buf[0]); // $ ir +} + +void test_balxml_encode_ostream_return_from_stream() { + bsl::string data(source()); + bsl::ostream *os = (bsl::ostream *)data.data(); + bsl::string obj; + BloombergLP::balxml::Encoder encoder; + bsl::ostream &r = encoder.encode(*os, obj); + sink(*(char *)&r); // $ ir +} + +void test_balxml_encodeToStream() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + encoder.encodeToStream(*(bsl::ostream *)buf, obj); + sink(buf[0]); // $ ir +} + +// encode(Formatter &, const TYPE &) is not modelled. +void test_balxml_encode_formatter_no_flow() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balxml::Formatter *formatter = (BloombergLP::balxml::Formatter *)buf; + BloombergLP::balxml::Encoder encoder; + encoder.encode(*formatter, obj); + sink(buf[0]); // no flow: not modelled +} + +void test_balxml_encodeAny_streambuf() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + encoder.encodeAny((bsl::streambuf *)buf, obj); + sink(buf[0]); // $ ir +} + +void test_balxml_encodeAny_ostream() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + encoder.encodeAny(*(bsl::ostream *)buf, obj); + sink(buf[0]); // $ ir +} + +void test_balxml_encodeAny_ostream_return_from_object() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + bsl::ostream &r = encoder.encodeAny(*(bsl::ostream *)buf, obj); + sink(*(char *)&r); // $ ir + sink(buf[0]); // $ ir +} + +void test_balxml_encodeAnyToStream() { + bsl::string obj(source()); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + encoder.encodeAnyToStream(*(bsl::ostream *)buf, obj); + sink(buf[0]); // $ ir +} + +void test_balxml_encodeAny_AnyConstRef_streambuf() { + bsl::string data(source()); + BloombergLP::bdlar::AnyConstRef *any = (BloombergLP::bdlar::AnyConstRef *)data.data(); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + encoder.encodeAny((bsl::streambuf *)buf, *any); + sink(buf[0]); // $ ir +} + +void test_balxml_encodeAny_AnyConstRef_ostream() { + bsl::string data(source()); + BloombergLP::bdlar::AnyConstRef *any = (BloombergLP::bdlar::AnyConstRef *)data.data(); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + encoder.encodeAny(*(bsl::ostream *)buf, *any); + sink(buf[0]); // $ ir +} + +void test_balxml_encodeAny_AnyConstRef_ostream_return_from_object() { + bsl::string data(source()); + BloombergLP::bdlar::AnyConstRef *any = (BloombergLP::bdlar::AnyConstRef *)data.data(); + char buf[16]; + BloombergLP::balxml::Encoder encoder; + bsl::ostream &r = encoder.encodeAny(*(bsl::ostream *)buf, *any); + sink(*(char *)&r); // $ ir + sink(buf[0]); // $ ir +} diff --git a/cpp/ql/test/library-tests/dataflow/external-models/bdlbb.cpp b/cpp/ql/test/library-tests/dataflow/external-models/bdlbb.cpp new file mode 100644 index 000000000000..6d600dd9c1a4 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/bdlbb.cpp @@ -0,0 +1,81 @@ +#include "bsl.h" + +// --- stub library headers --- + +namespace BloombergLP { +namespace bdlbb { + class BlobBuffer { + public: + char *data() const; + bsl::shared_ptr &buffer(); + const bsl::shared_ptr &buffer() const; + }; + + class Blob { + public: + const BlobBuffer &buffer(int index) const; + }; + + struct BlobUtil { + static void copy(char *dstBuffer, const Blob &srcBlob, int position, int length); + static void copy(Blob *dstBlob, int dstOffset, const char *srcBuffer, int length); + static void copy(Blob *dstBlob, int dstOffset, const Blob &srcBlob, int srcOffset, + int length); + static char *getContiguousRangeOrCopy(char *dstBuffer, const Blob &srcBlob, int position, + int length, int alignment); + }; +} +} + +// --- test code --- + +char *source(); +void sink(char); + +// A blob populated from a tainted buffer taints the bytes read back out of it. +void test_BlobUtil_copy() { + bsl::string s(source()); + BloombergLP::bdlbb::Blob blob; + BloombergLP::bdlbb::BlobUtil::copy(&blob, 0, s.data(), s.size()); + char dst[16]; + BloombergLP::bdlbb::BlobUtil::copy(dst, blob, 0, 16); + sink(*dst); // $ ir +} + +void test_accessor_chain() { + bsl::string s(source()); + BloombergLP::bdlbb::Blob blob; + BloombergLP::bdlbb::BlobUtil::copy(&blob, 0, s.data(), s.size()); + const char *p = blob.buffer(0).data(); + sink(*p); // $ ir +} + +// The get() step comes from the built-in smart pointer model, not from bdlbb.model.yml. +void test_accessor_chain_shared_ptr() { + bsl::string s(source()); + BloombergLP::bdlbb::Blob blob; + BloombergLP::bdlbb::BlobUtil::copy(&blob, 0, s.data(), s.size()); + const char *p = blob.buffer(0).buffer().get(); + sink(*p); // $ ir +} + +void test_getContiguousRangeOrCopy() { + bsl::string s(source()); + BloombergLP::bdlbb::Blob blob; + BloombergLP::bdlbb::BlobUtil::copy(&blob, 0, s.data(), s.size()); + char dst[16]; + char *r = BloombergLP::bdlbb::BlobUtil::getContiguousRangeOrCopy(dst, blob, 0, 16, 1); + sink(*r); // $ ir +} + +// A blob copied into another blob carries the taint across. +void test_BlobUtil_copy_blob_to_blob() { + bsl::string s(source()); + BloombergLP::bdlbb::Blob src; + BloombergLP::bdlbb::BlobUtil::copy(&src, 0, s.data(), s.size()); + BloombergLP::bdlbb::Blob dst; + BloombergLP::bdlbb::BlobUtil::copy(&dst, 0, src, 0, 16); + char out[16]; + BloombergLP::bdlbb::BlobUtil::copy(out, dst, 0, 16); + sink(*out); // $ ir +} diff --git a/cpp/ql/test/library-tests/dataflow/external-models/bmqa.cpp b/cpp/ql/test/library-tests/dataflow/external-models/bmqa.cpp new file mode 100644 index 000000000000..2cd303489c00 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/bmqa.cpp @@ -0,0 +1,394 @@ +#include "bsl.h" + +// --- stub library headers --- + +namespace BloombergLP { +namespace bslma { + class Allocator {}; +} +namespace bsls { + struct Types { typedef long long Int64; }; +} + +namespace bdlbb { + class Blob {}; + class BlobBufferFactory {}; + struct BlobUtil { + static void copy(char *dstBuffer, const Blob &srcBlob, int position, int length); + static void copy(Blob *dstBlob, int dstOffset, const char *srcBuffer, int length); + }; +} + +namespace bmqa { + class MessageProperties; + class Message { + public: + Message& setData(const bdlbb::Blob* data); + Message& setData(const char* data, bsl::size_t length); + Message& setDataRef(const bdlbb::Blob* data); + Message& setDataRef(const char* data, bsl::size_t length); + Message& setPropertiesRef(const MessageProperties* properties); + Message clone(bslma::Allocator* basicAllocator = 0) const; + int getData(bdlbb::Blob* blob) const; + int loadProperties(MessageProperties* buffer) const; + }; + class MessageProperties { + public: + explicit MessageProperties(bslma::Allocator* basicAllocator = 0); + MessageProperties(const MessageProperties& other, bslma::Allocator* basicAllocator = 0); + MessageProperties& operator=(const MessageProperties& rhs); + int setPropertyAsBool(bsl::string_view name, bool value); + int setPropertyAsChar(bsl::string_view name, char value); + int setPropertyAsShort(bsl::string_view name, short value); + int setPropertyAsInt32(bsl::string_view name, bsl::int32_t value); + int setPropertyAsInt64(bsl::string_view name, bsls::Types::Int64 value); + int setPropertyAsString(bsl::string_view name, bsl::string_view value); + int setPropertyAsBinary(bsl::string_view name, bsl::span value); + int streamIn(const bdlbb::Blob& blob); + const bdlbb::Blob& streamOut(bdlbb::BlobBufferFactory* bufferFactory) const; + bsl::int32_t getPropertyAsInt32(bsl::string_view name) const; + const bsl::string& getPropertyAsString(bsl::string_view name) const; + const bsl::vector& getPropertyAsBinary(bsl::string_view name) const; + const bsl::string& getPropertyAsStringOr(bsl::string_view name, const bsl::string& value) const; + const bsl::vector& getPropertyAsBinaryOr(bsl::string_view name, const bsl::vector& value) const; + }; + class MessagePropertiesIterator { + public: + MessagePropertiesIterator(); + explicit MessagePropertiesIterator(const MessageProperties* properties); + MessagePropertiesIterator& operator=(const MessagePropertiesIterator& rhs); + bool hasNext(); + const bsl::string& name() const; + bsl::int32_t getAsInt32() const; + const bsl::string& getAsString() const; + const bsl::vector& getAsBinary() const; + }; + class MessageIterator { + public: + bool nextMessage(); + const Message& message() const; + }; + class MessageEvent { + public: + MessageIterator messageIterator() const; + }; +} +} + +// --- test code --- + +char *source(); +void sink(char); +void sink(int); + +// A received message or event is made by reinterpreting a tainted bsl::string. + +void test_getData() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bdlbb::Blob blob; + msg->getData(&blob); + char dst[16]; + BloombergLP::bdlbb::BlobUtil::copy(dst, blob, 0, 16); + sink(*dst); // $ ir +} + +void test_event_iterator_message_getData() { + bsl::string data(source()); + BloombergLP::bmqa::MessageEvent *event = (BloombergLP::bmqa::MessageEvent *)data.data(); + BloombergLP::bmqa::MessageIterator it = event->messageIterator(); + while (it.nextMessage()) { + const BloombergLP::bmqa::Message &msg = it.message(); + BloombergLP::bdlbb::Blob blob; + msg.getData(&blob); + char dst[16]; + BloombergLP::bdlbb::BlobUtil::copy(dst, blob, 0, 16); + sink(*dst); // $ ir + } +} + +void test_setDataRef_getData_round_trip() { + bsl::string s(source()); + BloombergLP::bdlbb::Blob in; + BloombergLP::bdlbb::BlobUtil::copy(&in, 0, s.data(), s.size()); + BloombergLP::bmqa::Message msg; + msg.setDataRef(&in); + BloombergLP::bdlbb::Blob out; + msg.getData(&out); + char dst[16]; + BloombergLP::bdlbb::BlobUtil::copy(dst, out, 0, 16); + sink(*dst); // $ ir +} + +void test_setDataRef_chars_getData() { + bsl::string s(source()); + BloombergLP::bmqa::Message msg; + msg.setDataRef(s.data(), s.size()); + BloombergLP::bdlbb::Blob out; + msg.getData(&out); + char dst[16]; + BloombergLP::bdlbb::BlobUtil::copy(dst, out, 0, 16); + sink(*dst); // $ ir +} + +void test_setData_getData() { + bsl::string s(source()); + BloombergLP::bmqa::Message msg; + msg.setData(s.data(), s.size()); + BloombergLP::bdlbb::Blob out; + msg.getData(&out); + char dst[16]; + BloombergLP::bdlbb::BlobUtil::copy(dst, out, 0, 16); + sink(*dst); // $ ir +} + +void test_clone_getData() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::Message copy = msg->clone(); + BloombergLP::bdlbb::Blob blob; + copy.getData(&blob); + char dst[16]; + BloombergLP::bdlbb::BlobUtil::copy(dst, blob, 0, 16); + sink(*dst); // $ ir +} + +void test_loadProperties_getPropertyAsString() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + const bsl::string &value = props.getPropertyAsString("key"); + sink(value.data()[0]); // $ ir +} + +void test_loadProperties_getPropertyAsBinary() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + const bsl::vector &value = props.getPropertyAsBinary("key"); + sink(value.data()[0]); // $ ir +} + +void test_loadProperties_getPropertyAsBinary_index() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + const bsl::vector &value = props.getPropertyAsBinary("key"); + sink(value[0]); // $ ir +} + +void test_getPropertyAsStringOr() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + bsl::string dflt; + const bsl::string &value = props.getPropertyAsStringOr("key", dflt); + sink(*value.data()); // $ ir +} + +// The default value is returned when the property is absent. +void test_getPropertyAsStringOr_default() { + bsl::string dflt(source()); + BloombergLP::bmqa::MessageProperties props; + const bsl::string &value = props.getPropertyAsStringOr("key", dflt); + sink(*value.data()); // $ ir +} + +void test_getPropertyAsBinaryOr() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + bsl::vector dflt; + const bsl::vector &value = props.getPropertyAsBinaryOr("key", dflt); + sink(*value.data()); // $ ir +} + +void test_getPropertyAsBinaryOr_default() { + char c = *source(); + bsl::vector dflt; + dflt.push_back(c); + BloombergLP::bmqa::MessageProperties props; + const bsl::vector &value = props.getPropertyAsBinaryOr("key", dflt); + sink(*value.data()); // $ ir +} + +void test_getPropertyAsInt32_no_flow() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + sink(props.getPropertyAsInt32("key")); // no flow: scalar getters are not modelled +} + +void test_streamIn_getPropertyAsString() { + bsl::string s(source()); + BloombergLP::bdlbb::Blob blob; + BloombergLP::bdlbb::BlobUtil::copy(&blob, 0, s.data(), s.size()); + BloombergLP::bmqa::MessageProperties props; + props.streamIn(blob); + sink(*props.getPropertyAsString("key").data()); // $ ir +} + +void test_setPropertiesRef_loadProperties() { + bsl::string s(source()); + BloombergLP::bdlbb::Blob blob; + BloombergLP::bdlbb::BlobUtil::copy(&blob, 0, s.data(), s.size()); + BloombergLP::bmqa::MessageProperties in; + in.streamIn(blob); + BloombergLP::bmqa::Message msg; + msg.setPropertiesRef(&in); + BloombergLP::bmqa::MessageProperties out; + msg.loadProperties(&out); + sink(*out.getPropertyAsString("key").data()); // $ ir +} + +void test_streamOut() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + BloombergLP::bdlbb::BlobBufferFactory factory; + const BloombergLP::bdlbb::Blob &blob = props.streamOut(&factory); + char dst[16]; + BloombergLP::bdlbb::BlobUtil::copy(dst, blob, 0, 16); + sink(*dst); // $ ir +} + +void test_copy_constructor() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + BloombergLP::bmqa::MessageProperties copy(props); + sink(*copy.getPropertyAsString("key").data()); // $ ir +} + +void test_assignment() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + BloombergLP::bmqa::MessageProperties copy; + copy = props; + sink(*copy.getPropertyAsString("key").data()); // $ ir +} + +void test_assignment_result() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + BloombergLP::bmqa::MessageProperties copy; + sink(*(copy = props).getPropertyAsString("key").data()); // $ ir +} + +void test_setPropertyAsString() { + bsl::string data(source()); + bsl::string_view *value = (bsl::string_view *)data.data(); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsString("key", *value); + sink(*props.getPropertyAsString("key").data()); // $ ir +} + +void test_setPropertyAsString_from_chars() { + bsl::string_view value(source()); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsString("key", value); + sink(*props.getPropertyAsString("key").data()); // $ ir +} + +void test_setPropertyAsBinary() { + bsl::string data(source()); + bsl::span *value = (bsl::span *)data.data(); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsBinary("key", *value); + sink(*props.getPropertyAsBinary("key").data()); // $ ir +} + +// A stored property name is exposed again by the iterator. +void test_setPropertyAsBool_name() { + bsl::string_view name(source()); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsBool(name, true); + BloombergLP::bmqa::MessagePropertiesIterator it(&props); + sink(*it.name().data()); // $ ir +} + +void test_setPropertyAsChar_name() { + bsl::string_view name(source()); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsChar(name, 'c'); + BloombergLP::bmqa::MessagePropertiesIterator it(&props); + sink(*it.name().data()); // $ ir +} + +void test_setPropertyAsShort_name() { + bsl::string_view name(source()); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsShort(name, 1); + BloombergLP::bmqa::MessagePropertiesIterator it(&props); + sink(*it.name().data()); // $ ir +} + +void test_setPropertyAsInt32_name() { + bsl::string_view name(source()); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsInt32(name, 1); + BloombergLP::bmqa::MessagePropertiesIterator it(&props); + sink(*it.name().data()); // $ ir +} + +void test_setPropertyAsInt64_name() { + bsl::string_view name(source()); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsInt64(name, 1); + BloombergLP::bmqa::MessagePropertiesIterator it(&props); + sink(*it.name().data()); // $ ir +} + +void test_setPropertyAsString_name() { + bsl::string_view name(source()); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsString(name, "value"); + BloombergLP::bmqa::MessagePropertiesIterator it(&props); + sink(*it.name().data()); // $ ir +} + +void test_setPropertyAsBinary_name() { + bsl::string_view name(source()); + BloombergLP::bmqa::MessageProperties props; + props.setPropertyAsBinary(name, bsl::span()); + BloombergLP::bmqa::MessagePropertiesIterator it(&props); + sink(*it.name().data()); // $ ir +} + +void test_iterator() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + BloombergLP::bmqa::MessagePropertiesIterator it(&props); + while (it.hasNext()) { + sink(*it.name().data()); // $ ir + sink(*it.getAsString().data()); // $ ir + sink(*it.getAsBinary().data()); // $ ir + sink(it.getAsInt32()); // no flow: scalar getters are not modelled + } +} + +void test_iterator_assignment() { + bsl::string data(source()); + BloombergLP::bmqa::Message *msg = (BloombergLP::bmqa::Message *)data.data(); + BloombergLP::bmqa::MessageProperties props; + msg->loadProperties(&props); + BloombergLP::bmqa::MessagePropertiesIterator it(&props); + BloombergLP::bmqa::MessagePropertiesIterator copy; + copy = it; + sink(*copy.getAsString().data()); // $ ir + sink(*(copy = it).name().data()); // $ ir +} diff --git a/cpp/ql/test/library-tests/dataflow/external-models/bsl.h b/cpp/ql/test/library-tests/dataflow/external-models/bsl.h new file mode 100644 index 000000000000..2183b996faa6 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/bsl.h @@ -0,0 +1,49 @@ +#ifndef CODEQL_TEST_BSL_STRING_H +#define CODEQL_TEST_BSL_STRING_H + +namespace bsl { + typedef unsigned long size_t; + typedef int int32_t; + template class allocator {}; + template struct char_traits {}; + template, class Allocator = allocator > + class basic_string { + public: + basic_string(); + basic_string(const charT* s, const Allocator& a = Allocator()); + const charT* data() const; + size_t size() const; + }; + typedef basic_string string; + template > + class basic_string_view { + public: + basic_string_view(); + basic_string_view(const charT* s); + const charT* data() const; + }; + typedef basic_string_view string_view; + template > + class vector { + public: + vector(); + const T* data() const; + const T& operator[](size_t i) const; + void push_back(const T& value); + }; + template class span { + public: + span(); + span(T* p, size_t n); + T* data() const; + }; + template class shared_ptr { + public: + T *get() const; + }; + class streambuf {}; + class istream {}; + class ostream {}; +} + +#endif diff --git a/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp b/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp new file mode 100644 index 000000000000..10d1179e4c33 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp @@ -0,0 +1,357 @@ + +// --- stub library headers --- + +namespace std { + typedef unsigned long size_t; + template class allocator {}; + template struct char_traits {}; + template, class Allocator = allocator > + class basic_string { + public: + basic_string(); + basic_string(const charT* s, const Allocator& a = Allocator()); + const charT* data() const; + size_t size() const; + }; + typedef basic_string string; +} + +// BDE spells the standard string as `bsl::string`; alias it onto the stub above. +namespace bsl { + using std::string; +} + +// BDE wraps every package-group namespace in `BloombergLP`; this stub reproduces that. +namespace BloombergLP { +namespace bslstl { + template class StringRefImp {}; + typedef StringRefImp StringRef; +} +namespace bsls { + // `bsls::Types` provides the fixed-width integer aliases used by the stream API. + struct Types { + typedef long long Int64; + typedef unsigned long long Uint64; + }; +} +namespace bslx { + class ByteInStream { + public: + ByteInStream(); + ByteInStream(const char *buffer, std::size_t numBytes); + void reset(); + void reset(const char *buffer, std::size_t numBytes); + void reset(const bslstl::StringRef &srcData); + ByteInStream &getLength(int &variable); + ByteInStream &getVersion(int &variable); + ByteInStream &getInt8(char &variable); + ByteInStream &getUint8(unsigned char &variable); + ByteInStream &getInt16(short &variable); + ByteInStream &getUint16(unsigned short &variable); + ByteInStream &getInt24(int &variable); + ByteInStream &getUint24(unsigned int &variable); + ByteInStream &getInt32(int &variable); + ByteInStream &getUint32(unsigned int &variable); + ByteInStream &getInt40(bsls::Types::Int64 &variable); + ByteInStream &getUint40(bsls::Types::Uint64 &variable); + ByteInStream &getInt48(bsls::Types::Int64 &variable); + ByteInStream &getUint48(bsls::Types::Uint64 &variable); + ByteInStream &getInt56(bsls::Types::Int64 &variable); + ByteInStream &getUint56(bsls::Types::Uint64 &variable); + ByteInStream &getInt64(bsls::Types::Int64 &variable); + ByteInStream &getUint64(bsls::Types::Uint64 &variable); + ByteInStream &getFloat32(float &variable); + ByteInStream &getFloat64(double &variable); + ByteInStream &getString(bsl::string &variable); + ByteInStream &getArrayInt8(char *variables, int numVariables); + ByteInStream &getArrayUint8(unsigned char *variables, int numVariables); + ByteInStream &getArrayInt16(short *variables, int numVariables); + ByteInStream &getArrayUint16(unsigned short *variables, int numVariables); + ByteInStream &getArrayInt24(int *variables, int numVariables); + ByteInStream &getArrayUint24(unsigned int *variables, int numVariables); + ByteInStream &getArrayInt32(int *variables, int numVariables); + ByteInStream &getArrayUint32(unsigned int *variables, int numVariables); + ByteInStream &getArrayInt40(bsls::Types::Int64 *variables, int numVariables); + ByteInStream &getArrayUint40(bsls::Types::Uint64 *variables, int numVariables); + ByteInStream &getArrayInt48(bsls::Types::Int64 *variables, int numVariables); + ByteInStream &getArrayUint48(bsls::Types::Uint64 *variables, int numVariables); + ByteInStream &getArrayInt56(bsls::Types::Int64 *variables, int numVariables); + ByteInStream &getArrayUint56(bsls::Types::Uint64 *variables, int numVariables); + ByteInStream &getArrayInt64(bsls::Types::Int64 *variables, int numVariables); + ByteInStream &getArrayUint64(bsls::Types::Uint64 *variables, int numVariables); + ByteInStream &getArrayFloat32(float *variables, int numVariables); + ByteInStream &getArrayFloat64(double *variables, int numVariables); + }; + + template + class GenericInStream { + public: + GenericInStream(STREAMBUF *streamBuf); + GenericInStream &getLength(int &variable); + GenericInStream &getVersion(int &variable); + GenericInStream &getInt8(char &variable); + GenericInStream &getUint8(unsigned char &variable); + GenericInStream &getInt16(short &variable); + GenericInStream &getUint16(unsigned short &variable); + GenericInStream &getInt24(int &variable); + GenericInStream &getUint24(unsigned int &variable); + GenericInStream &getInt32(int &variable); + GenericInStream &getUint32(unsigned int &variable); + GenericInStream &getInt40(bsls::Types::Int64 &variable); + GenericInStream &getUint40(bsls::Types::Uint64 &variable); + GenericInStream &getInt48(bsls::Types::Int64 &variable); + GenericInStream &getUint48(bsls::Types::Uint64 &variable); + GenericInStream &getInt56(bsls::Types::Int64 &variable); + GenericInStream &getUint56(bsls::Types::Uint64 &variable); + GenericInStream &getInt64(bsls::Types::Int64 &variable); + GenericInStream &getUint64(bsls::Types::Uint64 &variable); + GenericInStream &getFloat32(float &variable); + GenericInStream &getFloat64(double &variable); + GenericInStream &getString(bsl::string &variable); + GenericInStream &getArrayInt8(char *variables, int numVariables); + GenericInStream &getArrayUint8(unsigned char *variables, int numVariables); + GenericInStream &getArrayInt16(short *variables, int numVariables); + GenericInStream &getArrayUint16(unsigned short *variables, int numVariables); + GenericInStream &getArrayInt24(int *variables, int numVariables); + GenericInStream &getArrayUint24(unsigned int *variables, int numVariables); + GenericInStream &getArrayInt32(int *variables, int numVariables); + GenericInStream &getArrayUint32(unsigned int *variables, int numVariables); + GenericInStream &getArrayInt40(bsls::Types::Int64 *variables, int numVariables); + GenericInStream &getArrayUint40(bsls::Types::Uint64 *variables, int numVariables); + GenericInStream &getArrayInt48(bsls::Types::Int64 *variables, int numVariables); + GenericInStream &getArrayUint48(bsls::Types::Uint64 *variables, int numVariables); + GenericInStream &getArrayInt56(bsls::Types::Int64 *variables, int numVariables); + GenericInStream &getArrayUint56(bsls::Types::Uint64 *variables, int numVariables); + GenericInStream &getArrayInt64(bsls::Types::Int64 *variables, int numVariables); + GenericInStream &getArrayUint64(bsls::Types::Uint64 *variables, int numVariables); + GenericInStream &getArrayFloat32(float *variables, int numVariables); + GenericInStream &getArrayFloat64(double *variables, int numVariables); + }; + + namespace InStreamFunctions { + template + STREAM &bdexStreamIn(STREAM &stream, TYPE &variable); + template + STREAM &bdexStreamIn(STREAM &stream, TYPE &variable, int version); + template + STREAM &bdexStreamIn(STREAM &stream, int &variable, int version = 0) { + return stream.getInt32(variable); + } + } +} +} + +struct MyStreamBuf {}; + +char *source(); +void sink(int); +void sink(char); + +// --- flow tests (source -> sink) --- + +void test_ByteInStream_getInt32_no_flow() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + int x = 0; + stream.getInt32(x); + sink(x); // no flow: scalar outputs are deliberately not modeled +} + +void test_ByteInStream_getArrayInt8() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + char buf[16]; + stream.getArrayInt8(buf, 16); + sink(*buf); // $ ir +} + +void test_ByteInStream_getString() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + std::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_ByteInStream_chained() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + int a = 0; + bsl::string out; + stream.getInt32(a).getString(out); + sink(*out.data()); // $ ir +} + +void test_ByteInStream_reset() { + BloombergLP::bslx::ByteInStream stream; + std::string data = std::string(source()); + stream.reset(data.data(), data.size()); + bsl::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_GenericInStream_flow() { + std::string data = std::string(source()); + MyStreamBuf *sb = (MyStreamBuf *)data.data(); + BloombergLP::bslx::GenericInStream stream(sb); + bsl::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_GenericInStream_getInt32_no_flow() { + std::string data = std::string(source()); + MyStreamBuf *sb = (MyStreamBuf *)data.data(); + BloombergLP::bslx::GenericInStream stream(sb); + int x = 0; + stream.getInt32(x); + sink(x); // no flow: scalar outputs are deliberately not modeled +} + +void test_bdexStreamIn() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + bsl::string obj; + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, obj); + sink(*obj.data()); // $ ir +} + +// --- coverage: verify flow through every modeled getter in a fluent chain --- + +void coverage_ByteInStream() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + int i = 0; + unsigned int ui = 0; + char c = 0; + unsigned char uc = 0; + short s = 0; + unsigned short us = 0; + BloombergLP::bsls::Types::Int64 ll = 0; + BloombergLP::bsls::Types::Uint64 ull = 0; + float f = 0; + double d = 0; + bsl::string str; + char cbuf[16]; + unsigned char ucbuf[16]; + short sbuf[16]; + unsigned short usbuf[16]; + int ibuf[16]; + unsigned int uibuf[16]; + BloombergLP::bsls::Types::Int64 llbuf[16]; + BloombergLP::bsls::Types::Uint64 ullbuf[16]; + float fbuf[16]; + double dbuf[16]; + bsl::string out; + stream.getLength(i).getVersion(i).getInt8(c).getUint8(uc).getInt16(s).getUint16(us).getInt24(i).getUint24(ui).getInt32(i).getUint32(ui).getInt40(ll).getUint40(ull).getInt48(ll).getUint48(ull).getInt56(ll).getUint56(ull).getInt64(ll).getUint64(ull).getFloat32(f).getFloat64(d).getString(str).getArrayInt8(cbuf, 16).getArrayUint8(ucbuf, 16).getArrayInt16(sbuf, 16).getArrayUint16(usbuf, 16).getArrayInt24(ibuf, 16).getArrayUint24(uibuf, 16).getArrayInt32(ibuf, 16).getArrayUint32(uibuf, 16).getArrayInt40(llbuf, 16).getArrayUint40(ullbuf, 16).getArrayInt48(llbuf, 16).getArrayUint48(ullbuf, 16).getArrayInt56(llbuf, 16).getArrayUint56(ullbuf, 16).getArrayInt64(llbuf, 16).getArrayUint64(ullbuf, 16).getArrayFloat32(fbuf, 16).getArrayFloat64(dbuf, 16).getString(out); + sink(*out.data()); // $ ir +} + +void coverage_GenericInStream() { + std::string data = std::string(source()); + MyStreamBuf *sb = (MyStreamBuf *)data.data(); + BloombergLP::bslx::GenericInStream stream(sb); + int i = 0; + unsigned int ui = 0; + char c = 0; + unsigned char uc = 0; + short s = 0; + unsigned short us = 0; + BloombergLP::bsls::Types::Int64 ll = 0; + BloombergLP::bsls::Types::Uint64 ull = 0; + float f = 0; + double d = 0; + bsl::string str; + char cbuf[16]; + unsigned char ucbuf[16]; + short sbuf[16]; + unsigned short usbuf[16]; + int ibuf[16]; + unsigned int uibuf[16]; + BloombergLP::bsls::Types::Int64 llbuf[16]; + BloombergLP::bsls::Types::Uint64 ullbuf[16]; + float fbuf[16]; + double dbuf[16]; + bsl::string out; + stream.getLength(i).getVersion(i).getInt8(c).getUint8(uc).getInt16(s).getUint16(us).getInt24(i).getUint24(ui).getInt32(i).getUint32(ui).getInt40(ll).getUint40(ull).getInt48(ll).getUint48(ull).getInt56(ll).getUint56(ull).getInt64(ll).getUint64(ull).getFloat32(f).getFloat64(d).getString(str).getArrayInt8(cbuf, 16).getArrayUint8(ucbuf, 16).getArrayInt16(sbuf, 16).getArrayUint16(usbuf, 16).getArrayInt24(ibuf, 16).getArrayUint24(uibuf, 16).getArrayInt32(ibuf, 16).getArrayUint32(uibuf, 16).getArrayInt40(llbuf, 16).getArrayUint40(ullbuf, 16).getArrayInt48(llbuf, 16).getArrayUint48(ullbuf, 16).getArrayInt56(llbuf, 16).getArrayUint56(ullbuf, 16).getArrayInt64(llbuf, 16).getArrayUint64(ullbuf, 16).getArrayFloat32(fbuf, 16).getArrayFloat64(dbuf, 16).getString(out); + sink(*out.data()); // $ ir +} + +void test_bdexStreamIn_integer() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + int x = 0; + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, x); + sink(x); // $ ir + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, x, 0); + sink(x); // $ ir + bsl::string out; + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, x, 0).getString(out); + sink(*out.data()); // $ ir +} + +void test_bdexStreamIn_versioned_string() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + bsl::string out; + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, out, 1); + sink(*out.data()); // $ ir +} + +struct BdexObject { + int value; +}; + +void sink(BdexObject); + +void test_bdexStreamIn_object() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + BdexObject out; + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, out, 1); + sink(out); // $ ir +} + +namespace StringRefTest { + BloombergLP::bslstl::StringRef source(); +} + +void test_ByteInStream_reset_stringref() { + BloombergLP::bslx::ByteInStream stream; + BloombergLP::bslstl::StringRef data = StringRefTest::source(); + stream.reset(data); + bsl::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_ByteInStream_reset_rewind() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + stream.reset(); + bsl::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_ByteInStream_reset_clean_buffer() { + BloombergLP::bslx::ByteInStream stream; + const char data[] = "clean"; + stream.reset(data, *source()); + stream.reset(); + bsl::string out; + stream.getString(out); + sink(*out.data()); // no flow: the tainted length does not taint the buffer +} + +void test_ByteInStream_reset_replaces_buffer() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + const char clean[] = "clean"; + stream.reset(clean, sizeof(clean)); + bsl::string out; + stream.getString(out); + // Known false positive: this summary does not kill taint from the old buffer. + sink(*out.data()); // $ SPURIOUS: ir +} 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 74f24322340f..618661341ced 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -85,35 +85,323 @@ models | 84 | Summary: ; ; false; ymlStepGenerated; ; ; Argument[0]; ReturnValue; taint; df-generated | | 85 | Summary: ; ; false; ymlStepManual; ; ; Argument[0]; ReturnValue; taint; manual | | 86 | Summary: ; ; false; ymlStepManual_with_body; ; ; Argument[0]; ReturnValue; taint; manual | -| 87 | Summary: ; MyString; true; operator[]; ; ; Argument[-1]; ReturnValue[*]; taint; manual | -| 88 | Summary: ; MyString; true; operator[]; ; ; ReturnValue[*]; Argument[-1]; taint; manual | -| 89 | Summary: ; ReverseFlow; true; get_ptr; ; ; ReturnValue[*]; Argument[-1].Field[ReverseFlow::value]; value; manual | -| 90 | Summary: ; TemplateClass1; true; templateFunction2; (U,V); ; Argument[1]; ReturnValue; value; manual | -| 91 | Summary: ; TemplateClass1; false; templateFunction; (T,U); ; Argument[0]; ReturnValue; value; manual | -| 92 | Summary: ; TemplateClass2; true; function; (U,T); ; Argument[1]; ReturnValue; value; manual | -| 93 | Summary: Azure::Core::IO; BodyStream; true; Read; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 94 | Summary: Azure::Core::IO; BodyStream; true; ReadToCount; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 95 | Summary: Azure::Core::IO; BodyStream; true; ReadToEnd; ; ; Argument[-1]; ReturnValue.Element; taint; manual | -| 96 | Summary: Azure; Nullable; true; Value; ; ; Argument[-1]; ReturnValue[*]; taint; manual | -| 97 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | +| 87 | Summary: ; Container; true; get; ; ; Argument[-1].Element; ReturnValue[*]; value; manual | +| 88 | Summary: ; Forwarder; true; get; ; ; Argument[-1]; ReturnValue; value; manual | +| 89 | Summary: ; MyString; true; operator[]; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 90 | Summary: ; MyString; true; operator[]; ; ; ReturnValue[*]; Argument[-1]; taint; manual | +| 91 | Summary: ; ReverseFlow; true; get_ptr; ; ; ReturnValue[*]; Argument[-1].Field[ReverseFlow::value]; value; manual | +| 92 | Summary: ; TemplateClass1; true; templateFunction2; (U,V); ; Argument[1]; ReturnValue; value; manual | +| 93 | Summary: ; TemplateClass1; false; templateFunction; (T,U); ; Argument[0]; ReturnValue; value; manual | +| 94 | Summary: ; TemplateClass2; true; function; (U,T); ; Argument[1]; ReturnValue; value; manual | +| 95 | Summary: Azure::Core::IO; BodyStream; true; Read; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 96 | Summary: Azure::Core::IO; BodyStream; true; ReadToCount; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 97 | Summary: Azure::Core::IO; BodyStream; true; ReadToEnd; ; ; Argument[-1]; ReturnValue.Element; taint; manual | +| 98 | Summary: Azure; Nullable; true; Value; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 99 | Summary: BloombergLP::balber; BerDecoder; true; decode; ; ; Argument[*0]; Argument[*1]; taint; manual | +| 100 | Summary: BloombergLP::balber; BerDecoder; true; decodeAny; ; ; Argument[*0]; Argument[*1]; taint; manual | +| 101 | Summary: BloombergLP::balber; BerEncoder; true; encode; ; ; Argument[*1]; Argument[*0]; taint; manual | +| 102 | Summary: BloombergLP::balber; BerEncoder; true; encodeAny; ; ; Argument[*1]; Argument[*0]; taint; manual | +| 103 | Summary: BloombergLP::baljsn; Decoder; true; decode; ; ; Argument[*0]; Argument[*1]; taint; manual | +| 104 | Summary: BloombergLP::baljsn; Decoder; true; decodeAny; ; ; Argument[*0]; Argument[*1]; taint; manual | +| 105 | Summary: BloombergLP::baljsn; Encoder; true; encode; ; ; Argument[*1]; Argument[*0]; taint; manual | +| 106 | Summary: BloombergLP::baljsn; Encoder; true; encodeAny; ; ; Argument[*1]; Argument[*0]; taint; manual | +| 107 | Summary: BloombergLP::balxml; Decoder; true; decode; (const char *,size_t,TYPE *,const char *); ; Argument[*0]; Argument[*2]; taint; manual | +| 108 | Summary: BloombergLP::balxml; Decoder; true; decode; (istream &,TYPE *,const char *); ; Argument[*0]; Argument[*1]; taint; manual | +| 109 | Summary: BloombergLP::balxml; Decoder; true; decode; (istream &,TYPE *,const char *); ; Argument[*0]; ReturnValue[*]; taint; manual | +| 110 | Summary: BloombergLP::balxml; Decoder; true; decode; (streambuf *,TYPE *,const char *); ; Argument[*0]; Argument[*1]; taint; manual | +| 111 | Summary: BloombergLP::balxml; Decoder; true; decodeAny; (istream &,AnyRef *,const char *); ; Argument[*0]; Argument[*1]; taint; manual | +| 112 | Summary: BloombergLP::balxml; Decoder; true; decodeAny; (istream &,AnyRef *,const char *); ; Argument[*0]; ReturnValue[*]; taint; manual | +| 113 | Summary: BloombergLP::balxml; Decoder; true; decodeAny; (streambuf *,AnyRef *,const char *); ; Argument[*0]; Argument[*1]; taint; manual | +| 114 | Summary: BloombergLP::balxml; Decoder; true; decodeAny; (istream &,TYPE *,const char *); ; Argument[*0]; Argument[*1]; taint; manual | +| 115 | Summary: BloombergLP::balxml; Decoder; true; decodeAny; (istream &,TYPE *,const char *); ; Argument[*0]; ReturnValue[*]; taint; manual | +| 116 | Summary: BloombergLP::balxml; Decoder; true; decodeAny; (streambuf *,TYPE *,const char *); ; Argument[*0]; Argument[*1]; taint; manual | +| 117 | Summary: BloombergLP::balxml; Encoder; true; encode; (ostream &,const TYPE &); ; Argument[*0..1]; ReturnValue[*]; taint; manual | +| 118 | Summary: BloombergLP::balxml; Encoder; true; encode; (ostream &,const TYPE &); ; Argument[*1]; Argument[*0]; taint; manual | +| 119 | Summary: BloombergLP::balxml; Encoder; true; encode; (streambuf *,const TYPE &); ; Argument[*1]; Argument[*0]; taint; manual | +| 120 | Summary: BloombergLP::balxml; Encoder; true; encodeAny; (ostream &,const AnyConstRef &); ; Argument[*0..1]; ReturnValue[*]; taint; manual | +| 121 | Summary: BloombergLP::balxml; Encoder; true; encodeAny; (ostream &,const AnyConstRef &); ; Argument[*1]; Argument[*0]; taint; manual | +| 122 | Summary: BloombergLP::balxml; Encoder; true; encodeAny; (streambuf *,const AnyConstRef &); ; Argument[*1]; Argument[*0]; taint; manual | +| 123 | Summary: BloombergLP::balxml; Encoder; true; encodeAny; (ostream &,const TYPE &); ; Argument[*0..1]; ReturnValue[*]; taint; manual | +| 124 | Summary: BloombergLP::balxml; Encoder; true; encodeAny; (ostream &,const TYPE &); ; Argument[*1]; Argument[*0]; taint; manual | +| 125 | Summary: BloombergLP::balxml; Encoder; true; encodeAny; (streambuf *,const TYPE &); ; Argument[*1]; Argument[*0]; taint; manual | +| 126 | Summary: BloombergLP::balxml; Encoder; true; encodeAnyToStream; ; ; Argument[*1]; Argument[*0]; taint; manual | +| 127 | Summary: BloombergLP::balxml; Encoder; true; encodeToStream; ; ; Argument[*1]; Argument[*0]; taint; manual | +| 128 | Summary: BloombergLP::bdlbb; Blob; true; buffer; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 129 | Summary: BloombergLP::bdlbb; BlobBuffer; true; buffer; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 130 | Summary: BloombergLP::bdlbb; BlobBuffer; true; data; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 131 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const Blob &,int,int); ; Argument[*2]; Argument[*0]; taint; manual | +| 132 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const char *,int); ; Argument[*2]; Argument[*0]; taint; manual | +| 133 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (char *,const Blob &,int,int); ; Argument[*1]; Argument[*0]; taint; manual | +| 134 | Summary: BloombergLP::bdlbb; BlobUtil; true; getContiguousRangeOrCopy; ; ; Argument[*1]; ReturnValue[*]; taint; manual | +| 135 | Summary: BloombergLP::bmqa; Message; true; clone; ; ; Argument[-1]; ReturnValue; taint; manual | +| 136 | Summary: BloombergLP::bmqa; Message; true; getData; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 137 | Summary: BloombergLP::bmqa; Message; true; loadProperties; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 138 | Summary: BloombergLP::bmqa; Message; true; setData; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 139 | Summary: BloombergLP::bmqa; Message; true; setDataRef; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 140 | Summary: BloombergLP::bmqa; Message; true; setPropertiesRef; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 141 | Summary: BloombergLP::bmqa; MessageEvent; true; messageIterator; ; ; Argument[-1]; ReturnValue; taint; manual | +| 142 | Summary: BloombergLP::bmqa; MessageIterator; true; message; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 143 | Summary: BloombergLP::bmqa; MessageProperties; true; MessageProperties; (const MessageProperties &,Allocator *); ; Argument[*0]; Argument[-1]; value; manual | +| 144 | Summary: BloombergLP::bmqa; MessageProperties; true; getPropertyAsBinary; ; ; Argument[-1]; ReturnValue[*].Element; taint; manual | +| 145 | Summary: BloombergLP::bmqa; MessageProperties; true; getPropertyAsBinaryOr; ; ; Argument[*1].Element[@]; ReturnValue[*].Element[@]; value; manual | +| 146 | Summary: BloombergLP::bmqa; MessageProperties; true; getPropertyAsBinaryOr; ; ; Argument[-1]; ReturnValue[*].Element; taint; manual | +| 147 | Summary: BloombergLP::bmqa; MessageProperties; true; getPropertyAsString; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 148 | Summary: BloombergLP::bmqa; MessageProperties; true; getPropertyAsStringOr; ; ; Argument[*1]; ReturnValue[*]; value; manual | +| 149 | Summary: BloombergLP::bmqa; MessageProperties; true; getPropertyAsStringOr; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 150 | Summary: BloombergLP::bmqa; MessageProperties; true; operator=; ; ; Argument[*0]; Argument[-1]; value; manual | +| 151 | Summary: BloombergLP::bmqa; MessageProperties; true; operator=; ; ; Argument[*0]; ReturnValue[*]; value; manual | +| 152 | Summary: BloombergLP::bmqa; MessageProperties; true; setPropertyAsBinary; ; ; Argument[0]; Argument[-1]; taint; manual | +| 153 | Summary: BloombergLP::bmqa; MessageProperties; true; setPropertyAsBinary; ; ; Argument[1]; Argument[-1]; taint; manual | +| 154 | Summary: BloombergLP::bmqa; MessageProperties; true; setPropertyAsBool; ; ; Argument[0]; Argument[-1]; taint; manual | +| 155 | Summary: BloombergLP::bmqa; MessageProperties; true; setPropertyAsChar; ; ; Argument[0]; Argument[-1]; taint; manual | +| 156 | Summary: BloombergLP::bmqa; MessageProperties; true; setPropertyAsInt32; ; ; Argument[0]; Argument[-1]; taint; manual | +| 157 | Summary: BloombergLP::bmqa; MessageProperties; true; setPropertyAsInt64; ; ; Argument[0]; Argument[-1]; taint; manual | +| 158 | Summary: BloombergLP::bmqa; MessageProperties; true; setPropertyAsShort; ; ; Argument[0]; Argument[-1]; taint; manual | +| 159 | Summary: BloombergLP::bmqa; MessageProperties; true; setPropertyAsString; ; ; Argument[0]; Argument[-1]; taint; manual | +| 160 | Summary: BloombergLP::bmqa; MessageProperties; true; setPropertyAsString; ; ; Argument[1]; Argument[-1]; taint; manual | +| 161 | Summary: BloombergLP::bmqa; MessageProperties; true; streamIn; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 162 | Summary: BloombergLP::bmqa; MessageProperties; true; streamOut; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 163 | Summary: BloombergLP::bmqa; MessagePropertiesIterator; true; MessagePropertiesIterator; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 164 | Summary: BloombergLP::bmqa; MessagePropertiesIterator; true; getAsBinary; ; ; Argument[-1]; ReturnValue[*].Element; taint; manual | +| 165 | Summary: BloombergLP::bmqa; MessagePropertiesIterator; true; getAsString; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 166 | Summary: BloombergLP::bmqa; MessagePropertiesIterator; true; name; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 167 | Summary: BloombergLP::bmqa; MessagePropertiesIterator; true; operator=; ; ; Argument[*0]; Argument[-1]; value; manual | +| 168 | Summary: BloombergLP::bmqa; MessagePropertiesIterator; true; operator=; ; ; Argument[*0]; ReturnValue[*]; value; manual | +| 169 | Summary: BloombergLP::bslx::InStreamFunctions; ; false; bdexStreamIn; ; ; Argument[*0]; Argument[*1]; taint; manual | +| 170 | Summary: BloombergLP::bslx::InStreamFunctions; ; false; bdexStreamIn; ; ; Argument[*0]; ReturnValue[*]; taint; manual | +| 171 | Summary: BloombergLP::bslx; ByteInStream; true; ByteInStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 172 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayFloat32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 173 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayFloat64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 174 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 175 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 176 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 177 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 178 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 179 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 180 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 181 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt8; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 182 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 183 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 184 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 185 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 186 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 187 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 188 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 189 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 190 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 191 | Summary: BloombergLP::bslx; ByteInStream; true; getFloat32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 192 | Summary: BloombergLP::bslx; ByteInStream; true; getFloat64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 193 | Summary: BloombergLP::bslx; ByteInStream; true; getInt16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 194 | Summary: BloombergLP::bslx; ByteInStream; true; getInt24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 195 | Summary: BloombergLP::bslx; ByteInStream; true; getInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 196 | Summary: BloombergLP::bslx; ByteInStream; true; getInt40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 197 | Summary: BloombergLP::bslx; ByteInStream; true; getInt48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 198 | Summary: BloombergLP::bslx; ByteInStream; true; getInt56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 199 | Summary: BloombergLP::bslx; ByteInStream; true; getInt64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 200 | Summary: BloombergLP::bslx; ByteInStream; true; getInt8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 201 | Summary: BloombergLP::bslx; ByteInStream; true; getLength; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 202 | Summary: BloombergLP::bslx; ByteInStream; true; getString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 203 | Summary: BloombergLP::bslx; ByteInStream; true; getString; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 204 | Summary: BloombergLP::bslx; ByteInStream; true; getUint16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 205 | Summary: BloombergLP::bslx; ByteInStream; true; getUint24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 206 | Summary: BloombergLP::bslx; ByteInStream; true; getUint32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 207 | Summary: BloombergLP::bslx; ByteInStream; true; getUint40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 208 | Summary: BloombergLP::bslx; ByteInStream; true; getUint48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 209 | Summary: BloombergLP::bslx; ByteInStream; true; getUint56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 210 | Summary: BloombergLP::bslx; ByteInStream; true; getUint64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 211 | Summary: BloombergLP::bslx; ByteInStream; true; getUint8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 212 | Summary: BloombergLP::bslx; ByteInStream; true; getVersion; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 213 | Summary: BloombergLP::bslx; ByteInStream; true; reset; (const StringRef &); ; Argument[*0]; Argument[-1]; taint; manual | +| 214 | Summary: BloombergLP::bslx; ByteInStream; true; reset; (const char *,size_t); ; Argument[*0]; Argument[-1]; taint; manual | +| 215 | Summary: BloombergLP::bslx; GenericInStream; true; GenericInStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 216 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayFloat32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 217 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayFloat64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 218 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 219 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 220 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 221 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 222 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 223 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 224 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 225 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 226 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 227 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 228 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 229 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 230 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 231 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 232 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 233 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 234 | Summary: BloombergLP::bslx; GenericInStream; true; getFloat32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 235 | Summary: BloombergLP::bslx; GenericInStream; true; getFloat64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 236 | Summary: BloombergLP::bslx; GenericInStream; true; getInt16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 237 | Summary: BloombergLP::bslx; GenericInStream; true; getInt24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 238 | Summary: BloombergLP::bslx; GenericInStream; true; getInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 239 | Summary: BloombergLP::bslx; GenericInStream; true; getInt40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 240 | Summary: BloombergLP::bslx; GenericInStream; true; getInt48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 241 | Summary: BloombergLP::bslx; GenericInStream; true; getInt56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 242 | Summary: BloombergLP::bslx; GenericInStream; true; getInt64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 243 | Summary: BloombergLP::bslx; GenericInStream; true; getInt8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 244 | Summary: BloombergLP::bslx; GenericInStream; true; getLength; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 245 | Summary: BloombergLP::bslx; GenericInStream; true; getString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 246 | Summary: BloombergLP::bslx; GenericInStream; true; getString; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 247 | Summary: BloombergLP::bslx; GenericInStream; true; getUint16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 248 | Summary: BloombergLP::bslx; GenericInStream; true; getUint24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 249 | Summary: BloombergLP::bslx; GenericInStream; true; getUint32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 250 | Summary: BloombergLP::bslx; GenericInStream; true; getUint40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 251 | Summary: BloombergLP::bslx; GenericInStream; true; getUint48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 252 | Summary: BloombergLP::bslx; GenericInStream; true; getUint56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 253 | Summary: BloombergLP::bslx; GenericInStream; true; getUint64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 254 | Summary: BloombergLP::bslx; GenericInStream; true; getUint8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 255 | Summary: BloombergLP::bslx; GenericInStream; true; getVersion; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 256 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 257 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 258 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags); ; Argument[*1..2]; ReturnValue; taint; manual | +| 259 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 260 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view); ; Argument[1..2]; ReturnValue; taint; manual | +| 261 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | +| 262 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags); ; Argument[1..2]; ReturnValue; taint; manual | +| 263 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | +| 264 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 265 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 266 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags); ; Argument[*0..1]; ReturnValue; taint; manual | +| 267 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 268 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view); ; Argument[0..1]; ReturnValue; taint; manual | +| 269 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | +| 270 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags); ; Argument[0..1]; ReturnValue; taint; manual | +| 271 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | +| 272 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | +| 273 | Summary: bsl; vector; true; data; ; ; Argument[-1].Element[@]; ReturnValue[*@]; value; manual | +| 274 | Summary: bsl; vector; true; operator[]; ; ; Argument[-1].Element[@]; ReturnValue[*@]; value; manual | +| 275 | Summary: bsl; vector; true; push_back; ; ; Argument[*@0]; Argument[-1].Element[@]; value; manual | +| 276 | Summary: google::protobuf; MessageLite; true; AppendPartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 277 | Summary: google::protobuf; MessageLite; true; AppendPartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 278 | Summary: google::protobuf; MessageLite; true; AppendToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 279 | Summary: google::protobuf; MessageLite; true; AppendToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 280 | Summary: google::protobuf; MessageLite; true; MergeFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 281 | Summary: google::protobuf; MessageLite; true; MergeFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 282 | Summary: google::protobuf; MessageLite; true; MergeFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 283 | Summary: google::protobuf; MessageLite; true; MergeFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 284 | Summary: google::protobuf; MessageLite; true; MergeFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 285 | Summary: google::protobuf; MessageLite; true; MergePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 286 | Summary: google::protobuf; MessageLite; true; MergePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 287 | Summary: google::protobuf; MessageLite; true; MergePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 288 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 289 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 290 | Summary: google::protobuf; MessageLite; true; ParseFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 291 | Summary: google::protobuf; MessageLite; true; ParseFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 292 | Summary: google::protobuf; MessageLite; true; ParseFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 293 | Summary: google::protobuf; MessageLite; true; ParseFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 294 | Summary: google::protobuf; MessageLite; true; ParseFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 295 | Summary: google::protobuf; MessageLite; true; ParseFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 296 | Summary: google::protobuf; MessageLite; true; ParseFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 297 | Summary: google::protobuf; MessageLite; true; ParseFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 298 | Summary: google::protobuf; MessageLite; true; ParsePartialFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 299 | Summary: google::protobuf; MessageLite; true; ParsePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 300 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 301 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 302 | Summary: google::protobuf; MessageLite; true; ParsePartialFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 303 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 304 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 305 | Summary: google::protobuf; MessageLite; true; ParsePartialFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 306 | Summary: google::protobuf; MessageLite; true; SerializeAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | +| 307 | Summary: google::protobuf; MessageLite; true; SerializeAsString; ; ; Argument[-1]; ReturnValue; taint; manual | +| 308 | Summary: google::protobuf; MessageLite; true; SerializePartialAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | +| 309 | Summary: google::protobuf; MessageLite; true; SerializePartialAsString; ; ; Argument[-1]; ReturnValue; taint; manual | +| 310 | Summary: google::protobuf; MessageLite; true; SerializePartialToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 311 | Summary: google::protobuf; MessageLite; true; SerializePartialToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 312 | Summary: google::protobuf; MessageLite; true; SerializePartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 313 | Summary: google::protobuf; MessageLite; true; SerializePartialToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 314 | Summary: google::protobuf; MessageLite; true; SerializePartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 315 | Summary: google::protobuf; MessageLite; true; SerializePartialToZeroCopyStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 316 | Summary: google::protobuf; MessageLite; true; SerializeToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 317 | Summary: google::protobuf; MessageLite; true; SerializeToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 318 | Summary: google::protobuf; MessageLite; true; SerializeToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 319 | Summary: google::protobuf; MessageLite; true; SerializeToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 320 | Summary: google::protobuf; MessageLite; true; SerializeToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 321 | Summary: google::protobuf; MessageLite; true; SerializeToZeroCopyStream; ; ; Argument[-1]; Argument[*0]; taint; manual | edges -| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:56 | -| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | recv_buffer | provenance | Src:MaD:56 Sink:MaD:4 | -| 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:4 | -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:97 | +| asio_streams.cpp:116:34:116:44 | read_until output argument | asio_streams.cpp:120:7:120:17 | recv_buffer | provenance | Src:MaD:56 | +| asio_streams.cpp:116:34:116:44 | read_until output argument | asio_streams.cpp:122:29:122:39 | recv_buffer | provenance | Src:MaD:56 Sink:MaD:4 | +| asio_streams.cpp:126:37:126:44 | call to source | asio_streams.cpp:127:7:127:14 | send_str | provenance | TaintFunction | +| asio_streams.cpp:126:37:126:44 | call to source | asio_streams.cpp:129:64:129:71 | *send_str | provenance | TaintFunction | +| asio_streams.cpp:129:44:129:62 | call to buffer | asio_streams.cpp:129:44:129:62 | call to buffer | provenance | | +| asio_streams.cpp:129:44:129:62 | call to buffer | asio_streams.cpp:130:7:130:17 | send_buffer | provenance | | +| asio_streams.cpp:129:44:129:62 | call to buffer | asio_streams.cpp:132:29:132:39 | send_buffer | provenance | Sink:MaD:4 | +| asio_streams.cpp:129:64:129:71 | *send_str | asio_streams.cpp:129:44:129:62 | call to buffer | provenance | MaD:272 | +| asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:148:24:148:27 | *host | provenance | TaintFunction | +| asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:149:24:149:27 | *host | provenance | TaintFunction | +| asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:150:24:150:27 | *host | provenance | TaintFunction | +| asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:151:24:151:27 | *host | provenance | TaintFunction | +| asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:158:34:158:37 | *host | provenance | TaintFunction | +| asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:159:34:159:37 | *host | provenance | TaintFunction | +| asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:160:34:160:37 | *host | provenance | TaintFunction | +| asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:161:34:161:37 | *host | provenance | TaintFunction | +| asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:153:24:153:32 | host_view | provenance | TaintFunction | +| asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:154:24:154:32 | host_view | provenance | TaintFunction | +| asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:155:24:155:32 | host_view | provenance | TaintFunction | +| asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:156:24:156:32 | host_view | provenance | TaintFunction | +| asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:163:34:163:42 | host_view | provenance | TaintFunction | +| asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:164:34:164:42 | host_view | provenance | TaintFunction | +| asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:165:34:165:42 | host_view | provenance | TaintFunction | +| asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:166:34:166:42 | host_view | provenance | TaintFunction | +| asio_streams.cpp:148:24:148:27 | *host | asio_streams.cpp:148:16:148:22 | call to resolve | provenance | MaD:264 | +| asio_streams.cpp:149:24:149:27 | *host | asio_streams.cpp:149:16:149:22 | call to resolve | provenance | MaD:265 | +| asio_streams.cpp:150:24:150:27 | *host | asio_streams.cpp:150:16:150:22 | call to resolve | provenance | MaD:266 | +| asio_streams.cpp:151:24:151:27 | *host | asio_streams.cpp:151:16:151:22 | call to resolve | provenance | MaD:267 | +| asio_streams.cpp:153:24:153:32 | host_view | asio_streams.cpp:153:16:153:22 | call to resolve | provenance | MaD:268 | +| asio_streams.cpp:154:24:154:32 | host_view | asio_streams.cpp:154:16:154:22 | call to resolve | provenance | MaD:269 | +| asio_streams.cpp:155:24:155:32 | host_view | asio_streams.cpp:155:16:155:22 | call to resolve | provenance | MaD:270 | +| asio_streams.cpp:156:24:156:32 | host_view | asio_streams.cpp:156:16:156:22 | call to resolve | provenance | MaD:271 | +| asio_streams.cpp:158:34:158:37 | *host | asio_streams.cpp:158:16:158:22 | call to resolve | provenance | MaD:256 | +| asio_streams.cpp:159:34:159:37 | *host | asio_streams.cpp:159:16:159:22 | call to resolve | provenance | MaD:257 | +| asio_streams.cpp:160:34:160:37 | *host | asio_streams.cpp:160:16:160:22 | call to resolve | provenance | MaD:258 | +| asio_streams.cpp:161:34:161:37 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | provenance | MaD:259 | +| asio_streams.cpp:163:34:163:42 | host_view | asio_streams.cpp:163:16:163:22 | call to resolve | provenance | MaD:260 | +| asio_streams.cpp:164:34:164:42 | host_view | asio_streams.cpp:164:16:164:22 | call to resolve | provenance | MaD:261 | +| asio_streams.cpp:165:34:165:42 | host_view | asio_streams.cpp:165:16:165:22 | call to resolve | provenance | MaD:262 | +| asio_streams.cpp:166:34:166:42 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | provenance | MaD:263 | +| asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:179:30:179:36 | *service | provenance | TaintFunction | +| asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:180:30:180:36 | *service | provenance | TaintFunction | +| asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:181:30:181:36 | *service | provenance | TaintFunction | +| asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:182:30:182:36 | *service | provenance | TaintFunction | +| asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:189:40:189:46 | *service | provenance | TaintFunction | +| asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:190:40:190:46 | *service | provenance | TaintFunction | +| asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:191:40:191:46 | *service | provenance | TaintFunction | +| asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:192:40:192:46 | *service | provenance | TaintFunction | +| asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:184:35:184:46 | service_view | provenance | TaintFunction | +| asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:185:35:185:46 | service_view | provenance | TaintFunction | +| asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:186:35:186:46 | service_view | provenance | TaintFunction | +| asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:187:35:187:46 | service_view | provenance | TaintFunction | +| asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:194:45:194:56 | service_view | provenance | TaintFunction | +| asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:195:45:195:56 | service_view | provenance | TaintFunction | +| asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:196:45:196:56 | service_view | provenance | TaintFunction | +| asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:197:45:197:56 | service_view | provenance | TaintFunction | +| asio_streams.cpp:179:30:179:36 | *service | asio_streams.cpp:179:16:179:22 | call to resolve | provenance | MaD:264 | +| asio_streams.cpp:180:30:180:36 | *service | asio_streams.cpp:180:16:180:22 | call to resolve | provenance | MaD:265 | +| asio_streams.cpp:181:30:181:36 | *service | asio_streams.cpp:181:16:181:22 | call to resolve | provenance | MaD:266 | +| asio_streams.cpp:182:30:182:36 | *service | asio_streams.cpp:182:16:182:22 | call to resolve | provenance | MaD:267 | +| asio_streams.cpp:184:35:184:46 | service_view | asio_streams.cpp:184:16:184:22 | call to resolve | provenance | MaD:268 | +| asio_streams.cpp:185:35:185:46 | service_view | asio_streams.cpp:185:16:185:22 | call to resolve | provenance | MaD:269 | +| asio_streams.cpp:186:35:186:46 | service_view | asio_streams.cpp:186:16:186:22 | call to resolve | provenance | MaD:270 | +| asio_streams.cpp:187:35:187:46 | service_view | asio_streams.cpp:187:16:187:22 | call to resolve | provenance | MaD:271 | +| asio_streams.cpp:189:40:189:46 | *service | asio_streams.cpp:189:16:189:22 | call to resolve | provenance | MaD:256 | +| asio_streams.cpp:190:40:190:46 | *service | asio_streams.cpp:190:16:190:22 | call to resolve | provenance | MaD:257 | +| asio_streams.cpp:191:40:191:46 | *service | asio_streams.cpp:191:16:191:22 | call to resolve | provenance | MaD:258 | +| asio_streams.cpp:192:40:192:46 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | provenance | MaD:259 | +| asio_streams.cpp:194:45:194:56 | service_view | asio_streams.cpp:194:16:194:22 | call to resolve | provenance | MaD:260 | +| asio_streams.cpp:195:45:195:56 | service_view | asio_streams.cpp:195:16:195:22 | call to resolve | provenance | MaD:261 | +| asio_streams.cpp:196:45:196:56 | service_view | asio_streams.cpp:196:16:196:22 | call to resolve | provenance | MaD:262 | +| asio_streams.cpp:197:45:197:56 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | provenance | MaD:263 | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:257:5:257:8 | *resp | provenance | | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:262:5:262:8 | *resp | provenance | | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:266:38:266:41 | *resp | provenance | | | azure.cpp:253:48:253:60 | call to GetBodyStream | azure.cpp:253:48:253:60 | *call to GetBodyStream | provenance | Src:MaD:53 | -| azure.cpp:257:5:257:8 | *resp | azure.cpp:257:16:257:21 | Read output argument | provenance | MaD:93 | +| azure.cpp:257:5:257:8 | *resp | azure.cpp:257:16:257:21 | Read output argument | provenance | MaD:95 | | azure.cpp:257:16:257:21 | Read output argument | azure.cpp:258:10:258:16 | * ... | provenance | | -| azure.cpp:262:5:262:8 | *resp | azure.cpp:262:23:262:28 | ReadToCount output argument | provenance | MaD:94 | +| azure.cpp:262:5:262:8 | *resp | azure.cpp:262:23:262:28 | ReadToCount output argument | provenance | MaD:96 | | azure.cpp:262:23:262:28 | ReadToCount output argument | azure.cpp:263:10:263:16 | * ... | provenance | | -| azure.cpp:266:38:266:41 | *resp | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | provenance | MaD:95 | +| azure.cpp:266:38:266:41 | *resp | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | provenance | MaD:97 | | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | provenance | | | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | azure.cpp:267:10:267:12 | vec [element] | provenance | | | azure.cpp:267:10:267:12 | vec [element] | azure.cpp:267:10:267:12 | vec | provenance | | @@ -129,10 +417,10 @@ edges | azure.cpp:278:10:278:13 | body | azure.cpp:278:10:278:13 | body | provenance | | | azure.cpp:281:68:281:84 | *call to ExtractBodyStream | azure.cpp:282:21:282:23 | *call to get | provenance | | | azure.cpp:281:68:281:84 | call to ExtractBodyStream | azure.cpp:281:68:281:84 | *call to ExtractBodyStream | provenance | Src:MaD:50 | -| azure.cpp:282:21:282:23 | *call to get | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | provenance | MaD:95 | +| azure.cpp:282:21:282:23 | *call to get | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | provenance | MaD:97 | | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | azure.cpp:282:10:282:38 | call to ReadToEnd | provenance | | | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | provenance | | -| azure.cpp:289:24:289:56 | call to GetHeader | azure.cpp:289:63:289:65 | call to Value | provenance | MaD:96 | +| azure.cpp:289:24:289:56 | call to GetHeader | azure.cpp:289:63:289:65 | call to Value | provenance | MaD:98 | | azure.cpp:289:32:289:40 | call to GetHeader | azure.cpp:289:24:289:56 | call to GetHeader | provenance | | | azure.cpp:289:32:289:40 | call to GetHeader | azure.cpp:289:32:289:40 | call to GetHeader | provenance | Src:MaD:54 | | azure.cpp:289:63:289:65 | call to Value | azure.cpp:289:63:289:65 | call to Value | provenance | | @@ -144,6 +432,784 @@ edges | azure.cpp:294:38:294:53 | call to operator[] | azure.cpp:295:10:295:20 | contentType | provenance | | | azure.cpp:294:38:294:53 | call to operator[] | azure.cpp:295:10:295:20 | contentType | provenance | | | azure.cpp:295:10:295:20 | contentType | azure.cpp:295:10:295:20 | contentType | provenance | | +| bal.cpp:128:19:128:26 | call to source | bal.cpp:129:23:129:51 | *call to data | provenance | TaintFunction | +| bal.cpp:129:23:129:51 | *call to data | bal.cpp:132:17:132:18 | *sb | provenance | | +| bal.cpp:132:17:132:18 | *sb | bal.cpp:132:21:132:24 | decode output argument | provenance | MaD:99 | +| bal.cpp:132:21:132:24 | decode output argument | bal.cpp:133:7:133:17 | * ... | provenance | TaintFunction | +| bal.cpp:137:19:137:26 | call to source | bal.cpp:138:21:138:47 | *call to data | provenance | TaintFunction | +| bal.cpp:138:21:138:47 | *call to data | bal.cpp:141:17:141:19 | ** ... | provenance | | +| bal.cpp:141:17:141:19 | ** ... | bal.cpp:141:22:141:25 | decode output argument | provenance | MaD:99 | +| bal.cpp:141:22:141:25 | decode output argument | bal.cpp:142:7:142:17 | * ... | provenance | TaintFunction | +| bal.cpp:146:19:146:26 | call to source | bal.cpp:147:23:147:51 | *call to data | provenance | TaintFunction | +| bal.cpp:147:23:147:51 | *call to data | bal.cpp:150:20:150:21 | *sb | provenance | | +| bal.cpp:150:20:150:21 | *sb | bal.cpp:150:24:150:27 | decodeAny output argument | provenance | MaD:100 | +| bal.cpp:150:24:150:27 | decodeAny output argument | bal.cpp:151:7:151:17 | * ... | provenance | TaintFunction | +| bal.cpp:156:18:156:25 | call to source | bal.cpp:159:40:159:42 | *obj | provenance | TaintFunction | +| bal.cpp:159:17:159:37 | encode output argument | bal.cpp:160:7:160:12 | access to array | provenance | | +| bal.cpp:159:40:159:42 | *obj | bal.cpp:159:17:159:37 | encode output argument | provenance | MaD:101 | +| bal.cpp:164:18:164:25 | call to source | bal.cpp:167:43:167:45 | *obj | provenance | TaintFunction | +| bal.cpp:167:20:167:40 | encodeAny output argument | bal.cpp:168:7:168:12 | access to array | provenance | | +| bal.cpp:167:43:167:45 | *obj | bal.cpp:167:20:167:40 | encodeAny output argument | provenance | MaD:102 | +| bal.cpp:175:19:175:26 | call to source | bal.cpp:176:23:176:51 | *call to data | provenance | TaintFunction | +| bal.cpp:176:23:176:51 | *call to data | bal.cpp:180:17:180:18 | *sb | provenance | | +| bal.cpp:180:17:180:18 | *sb | bal.cpp:180:21:180:24 | decode output argument | provenance | MaD:103 | +| bal.cpp:180:21:180:24 | decode output argument | bal.cpp:181:7:181:17 | * ... | provenance | TaintFunction | +| bal.cpp:185:19:185:26 | call to source | bal.cpp:186:21:186:47 | *call to data | provenance | TaintFunction | +| bal.cpp:186:21:186:47 | *call to data | bal.cpp:190:17:190:19 | ** ... | provenance | | +| bal.cpp:190:17:190:19 | ** ... | bal.cpp:190:22:190:25 | decode output argument | provenance | MaD:103 | +| bal.cpp:190:22:190:25 | decode output argument | bal.cpp:191:7:191:17 | * ... | provenance | TaintFunction | +| bal.cpp:195:19:195:26 | call to source | bal.cpp:196:23:196:51 | *call to data | provenance | TaintFunction | +| bal.cpp:196:23:196:51 | *call to data | bal.cpp:199:20:199:21 | *sb | provenance | | +| bal.cpp:199:20:199:21 | *sb | bal.cpp:199:24:199:27 | decodeAny output argument | provenance | MaD:104 | +| bal.cpp:199:24:199:27 | decodeAny output argument | bal.cpp:200:7:200:17 | * ... | provenance | TaintFunction | +| bal.cpp:204:18:204:25 | call to source | bal.cpp:208:40:208:42 | *obj | provenance | TaintFunction | +| bal.cpp:208:17:208:37 | encode output argument | bal.cpp:209:7:209:12 | access to array | provenance | | +| bal.cpp:208:40:208:42 | *obj | bal.cpp:208:17:208:37 | encode output argument | provenance | MaD:105 | +| bal.cpp:213:18:213:25 | call to source | bal.cpp:216:43:216:45 | *obj | provenance | TaintFunction | +| bal.cpp:216:20:216:40 | encodeAny output argument | bal.cpp:217:7:217:12 | access to array | provenance | | +| bal.cpp:216:43:216:45 | *obj | bal.cpp:216:20:216:40 | encodeAny output argument | provenance | MaD:106 | +| bal.cpp:222:19:222:26 | call to source | bal.cpp:223:23:223:51 | *call to data | provenance | TaintFunction | +| bal.cpp:223:23:223:51 | *call to data | bal.cpp:226:17:226:18 | *sb | provenance | | +| bal.cpp:226:17:226:18 | *sb | bal.cpp:226:21:226:24 | decode output argument | provenance | MaD:103 | +| bal.cpp:226:21:226:24 | decode output argument | bal.cpp:229:40:229:42 | *rec | provenance | | +| bal.cpp:229:17:229:37 | encode output argument | bal.cpp:230:7:230:12 | access to array | provenance | | +| bal.cpp:229:40:229:42 | *rec | bal.cpp:229:17:229:37 | encode output argument | provenance | MaD:105 | +| bal.cpp:245:19:245:26 | call to source | bal.cpp:246:21:246:47 | *call to data | provenance | TaintFunction | +| bal.cpp:246:21:246:47 | *call to data | bal.cpp:249:17:249:19 | ** ... | provenance | | +| bal.cpp:249:17:249:19 | ** ... | bal.cpp:249:22:249:25 | decode output argument | provenance | MaD:108 | +| bal.cpp:249:22:249:25 | decode output argument | bal.cpp:250:7:250:17 | * ... | provenance | TaintFunction | +| bal.cpp:254:19:254:26 | call to source | bal.cpp:255:21:255:47 | *call to data | provenance | TaintFunction | +| bal.cpp:255:21:255:47 | *call to data | bal.cpp:258:35:258:37 | ** ... | provenance | | +| bal.cpp:258:34:258:52 | *call to decode | bal.cpp:258:34:258:52 | *call to decode | provenance | | +| bal.cpp:258:34:258:52 | *call to decode | bal.cpp:259:7:259:17 | * ... | provenance | | +| bal.cpp:258:35:258:37 | ** ... | bal.cpp:258:34:258:52 | *call to decode | provenance | MaD:109 | +| bal.cpp:258:35:258:37 | ** ... | bal.cpp:258:40:258:43 | decode output argument | provenance | MaD:108 | +| bal.cpp:258:40:258:43 | decode output argument | bal.cpp:260:7:260:9 | out | provenance | | +| bal.cpp:264:19:264:26 | call to source | bal.cpp:265:23:265:51 | *call to data | provenance | TaintFunction | +| bal.cpp:265:23:265:51 | *call to data | bal.cpp:268:17:268:18 | *sb | provenance | | +| bal.cpp:268:17:268:18 | *sb | bal.cpp:268:21:268:24 | decode output argument | provenance | MaD:110 | +| bal.cpp:268:21:268:24 | decode output argument | bal.cpp:269:7:269:17 | * ... | provenance | TaintFunction | +| bal.cpp:273:19:273:26 | call to source | bal.cpp:276:22:276:25 | *call to data | provenance | TaintFunction | +| bal.cpp:276:22:276:25 | *call to data | bal.cpp:276:43:276:46 | decode output argument | provenance | MaD:107 | +| bal.cpp:276:43:276:46 | decode output argument | bal.cpp:277:7:277:17 | * ... | provenance | TaintFunction | +| bal.cpp:301:19:301:26 | call to source | bal.cpp:302:21:302:47 | *call to data | provenance | TaintFunction | +| bal.cpp:302:21:302:47 | *call to data | bal.cpp:305:20:305:22 | ** ... | provenance | | +| bal.cpp:305:20:305:22 | ** ... | bal.cpp:305:25:305:28 | decodeAny output argument | provenance | MaD:114 | +| bal.cpp:305:25:305:28 | decodeAny output argument | bal.cpp:306:7:306:17 | * ... | provenance | TaintFunction | +| bal.cpp:310:19:310:26 | call to source | bal.cpp:311:21:311:47 | *call to data | provenance | TaintFunction | +| bal.cpp:311:21:311:47 | *call to data | bal.cpp:314:38:314:40 | ** ... | provenance | | +| bal.cpp:314:37:314:48 | *call to decodeAny | bal.cpp:314:37:314:48 | *call to decodeAny | provenance | | +| bal.cpp:314:37:314:48 | *call to decodeAny | bal.cpp:315:7:315:17 | * ... | provenance | | +| bal.cpp:314:38:314:40 | ** ... | bal.cpp:314:37:314:48 | *call to decodeAny | provenance | MaD:115 | +| bal.cpp:314:38:314:40 | ** ... | bal.cpp:314:43:314:46 | decodeAny output argument | provenance | MaD:114 | +| bal.cpp:314:43:314:46 | decodeAny output argument | bal.cpp:316:7:316:9 | out | provenance | | +| bal.cpp:320:19:320:26 | call to source | bal.cpp:321:23:321:51 | *call to data | provenance | TaintFunction | +| bal.cpp:321:23:321:51 | *call to data | bal.cpp:324:20:324:21 | *sb | provenance | | +| bal.cpp:324:20:324:21 | *sb | bal.cpp:324:24:324:27 | decodeAny output argument | provenance | MaD:116 | +| bal.cpp:324:24:324:27 | decodeAny output argument | bal.cpp:325:7:325:17 | * ... | provenance | TaintFunction | +| bal.cpp:329:19:329:26 | call to source | bal.cpp:330:21:330:47 | *call to data | provenance | TaintFunction | +| bal.cpp:330:21:330:47 | *call to data | bal.cpp:333:20:333:22 | ** ... | provenance | | +| bal.cpp:333:20:333:22 | ** ... | bal.cpp:333:25:333:28 | decodeAny output argument | provenance | MaD:111 | +| bal.cpp:333:25:333:28 | decodeAny output argument | bal.cpp:334:7:334:19 | * ... | provenance | | +| bal.cpp:338:19:338:26 | call to source | bal.cpp:339:21:339:47 | *call to data | provenance | TaintFunction | +| bal.cpp:339:21:339:47 | *call to data | bal.cpp:342:38:342:40 | ** ... | provenance | | +| bal.cpp:342:37:342:48 | *call to decodeAny | bal.cpp:342:37:342:48 | *call to decodeAny | provenance | | +| bal.cpp:342:37:342:48 | *call to decodeAny | bal.cpp:343:7:343:17 | * ... | provenance | | +| bal.cpp:342:38:342:40 | ** ... | bal.cpp:342:37:342:48 | *call to decodeAny | provenance | MaD:112 | +| bal.cpp:342:38:342:40 | ** ... | bal.cpp:342:43:342:46 | decodeAny output argument | provenance | MaD:111 | +| bal.cpp:342:43:342:46 | decodeAny output argument | bal.cpp:344:7:344:19 | * ... | provenance | | +| bal.cpp:348:19:348:26 | call to source | bal.cpp:349:23:349:51 | *call to data | provenance | TaintFunction | +| bal.cpp:349:23:349:51 | *call to data | bal.cpp:352:20:352:21 | *sb | provenance | | +| bal.cpp:352:20:352:21 | *sb | bal.cpp:352:24:352:27 | decodeAny output argument | provenance | MaD:113 | +| bal.cpp:352:24:352:27 | decodeAny output argument | bal.cpp:353:7:353:19 | * ... | provenance | | +| bal.cpp:357:18:357:25 | call to source | bal.cpp:360:40:360:42 | *obj | provenance | TaintFunction | +| bal.cpp:360:17:360:37 | encode output argument | bal.cpp:361:7:361:12 | access to array | provenance | | +| bal.cpp:360:40:360:42 | *obj | bal.cpp:360:17:360:37 | encode output argument | provenance | MaD:119 | +| bal.cpp:365:18:365:25 | call to source | bal.cpp:368:39:368:41 | *obj | provenance | TaintFunction | +| bal.cpp:368:17:368:36 | encode output argument | bal.cpp:369:7:369:12 | access to array | provenance | | +| bal.cpp:368:39:368:41 | *obj | bal.cpp:368:17:368:36 | encode output argument | provenance | MaD:118 | +| bal.cpp:373:18:373:25 | call to source | bal.cpp:376:57:376:59 | *obj | provenance | TaintFunction | +| bal.cpp:376:34:376:61 | *call to encode | bal.cpp:376:34:376:61 | *call to encode | provenance | | +| bal.cpp:376:34:376:61 | *call to encode | bal.cpp:377:7:377:17 | * ... | provenance | | +| bal.cpp:376:35:376:54 | encode output argument | bal.cpp:378:7:378:12 | access to array | provenance | | +| bal.cpp:376:57:376:59 | *obj | bal.cpp:376:34:376:61 | *call to encode | provenance | MaD:117 | +| bal.cpp:376:57:376:59 | *obj | bal.cpp:376:35:376:54 | encode output argument | provenance | MaD:118 | +| bal.cpp:382:19:382:26 | call to source | bal.cpp:383:21:383:47 | *call to data | provenance | TaintFunction | +| bal.cpp:383:21:383:47 | *call to data | bal.cpp:386:35:386:37 | ** ... | provenance | | +| bal.cpp:386:34:386:44 | *call to encode | bal.cpp:386:34:386:44 | *call to encode | provenance | | +| bal.cpp:386:34:386:44 | *call to encode | bal.cpp:387:7:387:17 | * ... | provenance | | +| bal.cpp:386:35:386:37 | ** ... | bal.cpp:386:34:386:44 | *call to encode | provenance | MaD:117 | +| bal.cpp:391:18:391:25 | call to source | bal.cpp:394:47:394:49 | *obj | provenance | TaintFunction | +| bal.cpp:394:25:394:44 | encodeToStream output argument | bal.cpp:395:7:395:12 | access to array | provenance | | +| bal.cpp:394:47:394:49 | *obj | bal.cpp:394:25:394:44 | encodeToStream output argument | provenance | MaD:127 | +| bal.cpp:409:18:409:25 | call to source | bal.cpp:412:43:412:45 | *obj | provenance | TaintFunction | +| bal.cpp:412:20:412:40 | encodeAny output argument | bal.cpp:413:7:413:12 | access to array | provenance | | +| bal.cpp:412:43:412:45 | *obj | bal.cpp:412:20:412:40 | encodeAny output argument | provenance | MaD:125 | +| bal.cpp:417:18:417:25 | call to source | bal.cpp:420:42:420:44 | *obj | provenance | TaintFunction | +| bal.cpp:420:20:420:39 | encodeAny output argument | bal.cpp:421:7:421:12 | access to array | provenance | | +| bal.cpp:420:42:420:44 | *obj | bal.cpp:420:20:420:39 | encodeAny output argument | provenance | MaD:124 | +| bal.cpp:425:18:425:25 | call to source | bal.cpp:428:60:428:62 | *obj | provenance | TaintFunction | +| bal.cpp:428:37:428:64 | *call to encodeAny | bal.cpp:428:37:428:64 | *call to encodeAny | provenance | | +| bal.cpp:428:37:428:64 | *call to encodeAny | bal.cpp:429:7:429:17 | * ... | provenance | | +| bal.cpp:428:38:428:57 | encodeAny output argument | bal.cpp:430:7:430:12 | access to array | provenance | | +| bal.cpp:428:60:428:62 | *obj | bal.cpp:428:37:428:64 | *call to encodeAny | provenance | MaD:123 | +| bal.cpp:428:60:428:62 | *obj | bal.cpp:428:38:428:57 | encodeAny output argument | provenance | MaD:124 | +| bal.cpp:434:18:434:25 | call to source | bal.cpp:437:50:437:52 | *obj | provenance | TaintFunction | +| bal.cpp:437:28:437:47 | encodeAnyToStream output argument | bal.cpp:438:7:438:12 | access to array | provenance | | +| bal.cpp:437:50:437:52 | *obj | bal.cpp:437:28:437:47 | encodeAnyToStream output argument | provenance | MaD:126 | +| bal.cpp:442:19:442:26 | call to source | bal.cpp:443:41:443:86 | *call to data | provenance | TaintFunction | +| bal.cpp:443:41:443:86 | *call to data | bal.cpp:446:43:446:46 | ** ... | provenance | | +| bal.cpp:446:20:446:40 | encodeAny output argument | bal.cpp:447:7:447:12 | access to array | provenance | | +| bal.cpp:446:43:446:46 | ** ... | bal.cpp:446:20:446:40 | encodeAny output argument | provenance | MaD:122 | +| bal.cpp:451:19:451:26 | call to source | bal.cpp:452:41:452:86 | *call to data | provenance | TaintFunction | +| bal.cpp:452:41:452:86 | *call to data | bal.cpp:455:42:455:45 | ** ... | provenance | | +| bal.cpp:455:20:455:39 | encodeAny output argument | bal.cpp:456:7:456:12 | access to array | provenance | | +| bal.cpp:455:42:455:45 | ** ... | bal.cpp:455:20:455:39 | encodeAny output argument | provenance | MaD:121 | +| bal.cpp:460:19:460:26 | call to source | bal.cpp:461:41:461:86 | *call to data | provenance | TaintFunction | +| bal.cpp:461:41:461:86 | *call to data | bal.cpp:464:60:464:63 | ** ... | provenance | | +| bal.cpp:464:37:464:65 | *call to encodeAny | bal.cpp:464:37:464:65 | *call to encodeAny | provenance | | +| bal.cpp:464:37:464:65 | *call to encodeAny | bal.cpp:465:7:465:17 | * ... | provenance | | +| bal.cpp:464:38:464:57 | encodeAny output argument | bal.cpp:466:7:466:12 | access to array | provenance | | +| bal.cpp:464:60:464:63 | ** ... | bal.cpp:464:37:464:65 | *call to encodeAny | provenance | MaD:120 | +| bal.cpp:464:60:464:63 | ** ... | bal.cpp:464:38:464:57 | encodeAny output argument | provenance | MaD:121 | +| bdlbb.cpp:37:16:37:23 | call to source | bdlbb.cpp:39:49:39:52 | *call to data | provenance | TaintFunction | +| bdlbb.cpp:39:37:39:41 | copy output argument | bdlbb.cpp:41:42:41:45 | *blob | provenance | | +| bdlbb.cpp:39:49:39:52 | *call to data | bdlbb.cpp:39:37:39:41 | copy output argument | provenance | MaD:132 | +| bdlbb.cpp:41:37:41:39 | copy output argument | bdlbb.cpp:42:7:42:10 | * ... | provenance | | +| bdlbb.cpp:41:42:41:45 | *blob | bdlbb.cpp:41:37:41:39 | copy output argument | provenance | MaD:133 | +| bdlbb.cpp:46:16:46:23 | call to source | bdlbb.cpp:48:49:48:52 | *call to data | provenance | TaintFunction | +| bdlbb.cpp:48:37:48:41 | copy output argument | bdlbb.cpp:49:18:49:21 | *blob | provenance | | +| bdlbb.cpp:48:49:48:52 | *call to data | bdlbb.cpp:48:37:48:41 | copy output argument | provenance | MaD:132 | +| bdlbb.cpp:49:18:49:21 | *blob | bdlbb.cpp:49:29:49:32 | *call to buffer | provenance | MaD:128 | +| bdlbb.cpp:49:18:49:38 | *call to data | bdlbb.cpp:49:18:49:38 | *call to data | provenance | | +| bdlbb.cpp:49:18:49:38 | *call to data | bdlbb.cpp:50:7:50:8 | * ... | provenance | | +| bdlbb.cpp:49:29:49:32 | *call to buffer | bdlbb.cpp:49:18:49:38 | *call to data | provenance | MaD:130 | +| bdlbb.cpp:55:16:55:23 | call to source | bdlbb.cpp:57:49:57:52 | *call to data | provenance | TaintFunction | +| bdlbb.cpp:57:37:57:41 | copy output argument | bdlbb.cpp:58:18:58:21 | *blob | provenance | | +| bdlbb.cpp:57:49:57:52 | *call to data | bdlbb.cpp:57:37:57:41 | copy output argument | provenance | MaD:132 | +| bdlbb.cpp:58:18:58:21 | *blob | bdlbb.cpp:58:29:58:32 | *call to buffer | provenance | MaD:128 | +| bdlbb.cpp:58:18:58:46 | call to get | bdlbb.cpp:59:7:59:8 | * ... | provenance | | +| bdlbb.cpp:58:29:58:32 | *call to buffer | bdlbb.cpp:58:39:58:41 | *call to buffer | provenance | MaD:129 | +| bdlbb.cpp:58:39:58:41 | *call to buffer | bdlbb.cpp:58:18:58:46 | call to get | provenance | DataFlowFunction | +| bdlbb.cpp:63:16:63:23 | call to source | bdlbb.cpp:65:49:65:52 | *call to data | provenance | TaintFunction | +| bdlbb.cpp:65:37:65:41 | copy output argument | bdlbb.cpp:67:72:67:75 | *blob | provenance | | +| bdlbb.cpp:65:49:65:52 | *call to data | bdlbb.cpp:65:37:65:41 | copy output argument | provenance | MaD:132 | +| bdlbb.cpp:67:12:67:65 | *call to getContiguousRangeOrCopy | bdlbb.cpp:67:12:67:65 | *call to getContiguousRangeOrCopy | provenance | | +| bdlbb.cpp:67:12:67:65 | *call to getContiguousRangeOrCopy | bdlbb.cpp:68:7:68:8 | * ... | provenance | | +| bdlbb.cpp:67:72:67:75 | *blob | bdlbb.cpp:67:12:67:65 | *call to getContiguousRangeOrCopy | provenance | MaD:134 | +| bdlbb.cpp:73:16:73:23 | call to source | bdlbb.cpp:75:48:75:51 | *call to data | provenance | TaintFunction | +| bdlbb.cpp:75:37:75:40 | copy output argument | bdlbb.cpp:77:46:77:48 | *src | provenance | | +| bdlbb.cpp:75:48:75:51 | *call to data | bdlbb.cpp:75:37:75:40 | copy output argument | provenance | MaD:132 | +| bdlbb.cpp:77:37:77:40 | copy output argument | bdlbb.cpp:79:42:79:44 | *dst | provenance | | +| bdlbb.cpp:77:46:77:48 | *src | bdlbb.cpp:77:37:77:40 | copy output argument | provenance | MaD:131 | +| bdlbb.cpp:79:37:79:39 | copy output argument | bdlbb.cpp:80:7:80:10 | * ... | provenance | | +| bdlbb.cpp:79:42:79:44 | *dst | bdlbb.cpp:79:37:79:39 | copy output argument | provenance | MaD:133 | +| bmqa.cpp:87:19:87:26 | call to source | bmqa.cpp:88:36:88:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:88:36:88:76 | *call to data | bmqa.cpp:90:2:90:4 | *msg | provenance | | +| bmqa.cpp:90:2:90:4 | *msg | bmqa.cpp:90:15:90:19 | getData output argument | provenance | MaD:136 | +| bmqa.cpp:90:15:90:19 | getData output argument | bmqa.cpp:92:42:92:45 | *blob | provenance | | +| bmqa.cpp:92:37:92:39 | copy output argument | bmqa.cpp:93:7:93:10 | * ... | provenance | | +| bmqa.cpp:92:42:92:45 | *blob | bmqa.cpp:92:37:92:39 | copy output argument | provenance | MaD:133 | +| bmqa.cpp:97:19:97:26 | call to source | bmqa.cpp:98:43:98:88 | *call to data | provenance | TaintFunction | +| bmqa.cpp:98:43:98:88 | *call to data | bmqa.cpp:99:42:99:46 | *event | provenance | | +| bmqa.cpp:99:42:99:46 | *event | bmqa.cpp:99:49:99:63 | call to messageIterator | provenance | MaD:141 | +| bmqa.cpp:99:49:99:63 | call to messageIterator | bmqa.cpp:99:49:99:63 | call to messageIterator | provenance | | +| bmqa.cpp:99:49:99:63 | call to messageIterator | bmqa.cpp:101:43:101:44 | *it | provenance | | +| bmqa.cpp:101:43:101:44 | *it | bmqa.cpp:101:53:101:55 | *call to message | provenance | MaD:142 | +| bmqa.cpp:101:53:101:55 | *call to message | bmqa.cpp:101:53:101:55 | *call to message | provenance | | +| bmqa.cpp:101:53:101:55 | *call to message | bmqa.cpp:103:3:103:5 | *msg | provenance | | +| bmqa.cpp:103:3:103:5 | *msg | bmqa.cpp:103:15:103:19 | getData output argument | provenance | MaD:136 | +| bmqa.cpp:103:15:103:19 | getData output argument | bmqa.cpp:105:43:105:46 | *blob | provenance | | +| bmqa.cpp:105:38:105:40 | copy output argument | bmqa.cpp:106:8:106:11 | * ... | provenance | | +| bmqa.cpp:105:43:105:46 | *blob | bmqa.cpp:105:38:105:40 | copy output argument | provenance | MaD:133 | +| bmqa.cpp:111:16:111:23 | call to source | bmqa.cpp:113:47:113:50 | *call to data | provenance | TaintFunction | +| bmqa.cpp:113:37:113:39 | copy output argument | bmqa.cpp:115:17:115:19 | *& ... | provenance | | +| bmqa.cpp:113:47:113:50 | *call to data | bmqa.cpp:113:37:113:39 | copy output argument | provenance | MaD:132 | +| bmqa.cpp:115:2:115:4 | setDataRef output argument | bmqa.cpp:117:2:117:4 | *msg | provenance | | +| bmqa.cpp:115:17:115:19 | *& ... | bmqa.cpp:115:2:115:4 | setDataRef output argument | provenance | MaD:139 | +| bmqa.cpp:117:2:117:4 | *msg | bmqa.cpp:117:14:117:17 | getData output argument | provenance | MaD:136 | +| bmqa.cpp:117:14:117:17 | getData output argument | bmqa.cpp:119:42:119:44 | *out | provenance | | +| bmqa.cpp:119:37:119:39 | copy output argument | bmqa.cpp:120:7:120:10 | * ... | provenance | | +| bmqa.cpp:119:42:119:44 | *out | bmqa.cpp:119:37:119:39 | copy output argument | provenance | MaD:133 | +| bmqa.cpp:124:16:124:23 | call to source | bmqa.cpp:126:19:126:22 | *call to data | provenance | TaintFunction | +| bmqa.cpp:126:2:126:4 | setDataRef output argument | bmqa.cpp:128:2:128:4 | *msg | provenance | | +| bmqa.cpp:126:19:126:22 | *call to data | bmqa.cpp:126:2:126:4 | setDataRef output argument | provenance | MaD:139 | +| bmqa.cpp:128:2:128:4 | *msg | bmqa.cpp:128:14:128:17 | getData output argument | provenance | MaD:136 | +| bmqa.cpp:128:14:128:17 | getData output argument | bmqa.cpp:130:42:130:44 | *out | provenance | | +| bmqa.cpp:130:37:130:39 | copy output argument | bmqa.cpp:131:7:131:10 | * ... | provenance | | +| bmqa.cpp:130:42:130:44 | *out | bmqa.cpp:130:37:130:39 | copy output argument | provenance | MaD:133 | +| bmqa.cpp:135:16:135:23 | call to source | bmqa.cpp:137:16:137:19 | *call to data | provenance | TaintFunction | +| bmqa.cpp:137:2:137:4 | setData output argument | bmqa.cpp:139:2:139:4 | *msg | provenance | | +| bmqa.cpp:137:16:137:19 | *call to data | bmqa.cpp:137:2:137:4 | setData output argument | provenance | MaD:138 | +| bmqa.cpp:139:2:139:4 | *msg | bmqa.cpp:139:14:139:17 | getData output argument | provenance | MaD:136 | +| bmqa.cpp:139:14:139:17 | getData output argument | bmqa.cpp:141:42:141:44 | *out | provenance | | +| bmqa.cpp:141:37:141:39 | copy output argument | bmqa.cpp:142:7:142:10 | * ... | provenance | | +| bmqa.cpp:141:42:141:44 | *out | bmqa.cpp:141:37:141:39 | copy output argument | provenance | MaD:133 | +| bmqa.cpp:146:19:146:26 | call to source | bmqa.cpp:147:36:147:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:147:36:147:76 | *call to data | bmqa.cpp:148:36:148:38 | *msg | provenance | | +| bmqa.cpp:148:36:148:38 | *msg | bmqa.cpp:148:41:148:45 | call to clone | provenance | MaD:135 | +| bmqa.cpp:148:41:148:45 | call to clone | bmqa.cpp:148:41:148:45 | call to clone | provenance | | +| bmqa.cpp:148:41:148:45 | call to clone | bmqa.cpp:150:2:150:5 | *copy | provenance | | +| bmqa.cpp:150:2:150:5 | *copy | bmqa.cpp:150:15:150:19 | getData output argument | provenance | MaD:136 | +| bmqa.cpp:150:15:150:19 | getData output argument | bmqa.cpp:152:42:152:45 | *blob | provenance | | +| bmqa.cpp:152:37:152:39 | copy output argument | bmqa.cpp:153:7:153:10 | * ... | provenance | | +| bmqa.cpp:152:42:152:45 | *blob | bmqa.cpp:152:37:152:39 | copy output argument | provenance | MaD:133 | +| bmqa.cpp:157:19:157:26 | call to source | bmqa.cpp:158:36:158:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:158:36:158:76 | *call to data | bmqa.cpp:160:2:160:4 | *msg | provenance | | +| bmqa.cpp:160:2:160:4 | *msg | bmqa.cpp:160:22:160:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:160:22:160:27 | loadProperties output argument | bmqa.cpp:161:29:161:33 | *props | provenance | | +| bmqa.cpp:161:29:161:33 | *props | bmqa.cpp:161:54:161:61 | *call to getPropertyAsString | provenance | MaD:147 | +| bmqa.cpp:161:54:161:61 | *call to getPropertyAsString | bmqa.cpp:161:54:161:61 | *call to getPropertyAsString | provenance | | +| bmqa.cpp:161:54:161:61 | *call to getPropertyAsString | bmqa.cpp:162:7:162:21 | access to array | provenance | TaintFunction | +| bmqa.cpp:166:19:166:26 | call to source | bmqa.cpp:167:36:167:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:167:36:167:76 | *call to data | bmqa.cpp:169:2:169:4 | *msg | provenance | | +| bmqa.cpp:169:2:169:4 | *msg | bmqa.cpp:169:22:169:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:169:22:169:27 | loadProperties output argument | bmqa.cpp:170:35:170:39 | *props | provenance | | +| bmqa.cpp:170:35:170:39 | *props | bmqa.cpp:170:60:170:67 | *call to getPropertyAsBinary [element] | provenance | MaD:144 | +| bmqa.cpp:170:60:170:67 | *call to getPropertyAsBinary [element] | bmqa.cpp:170:60:170:67 | *call to getPropertyAsBinary [element] | provenance | | +| bmqa.cpp:170:60:170:67 | *call to getPropertyAsBinary [element] | bmqa.cpp:171:7:171:11 | *value [element] | provenance | | +| bmqa.cpp:171:7:171:11 | *value [element] | bmqa.cpp:171:7:171:21 | access to array | provenance | MaD:273 | +| bmqa.cpp:175:19:175:26 | call to source | bmqa.cpp:176:36:176:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:176:36:176:76 | *call to data | bmqa.cpp:178:2:178:4 | *msg | provenance | | +| bmqa.cpp:178:2:178:4 | *msg | bmqa.cpp:178:22:178:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:178:22:178:27 | loadProperties output argument | bmqa.cpp:179:35:179:39 | *props | provenance | | +| bmqa.cpp:179:35:179:39 | *props | bmqa.cpp:179:60:179:67 | *call to getPropertyAsBinary [element] | provenance | MaD:144 | +| bmqa.cpp:179:60:179:67 | *call to getPropertyAsBinary [element] | bmqa.cpp:179:60:179:67 | *call to getPropertyAsBinary [element] | provenance | | +| bmqa.cpp:179:60:179:67 | *call to getPropertyAsBinary [element] | bmqa.cpp:180:7:180:11 | *value [element] | provenance | | +| bmqa.cpp:180:7:180:11 | *value [element] | bmqa.cpp:180:12:180:14 | call to operator[] | provenance | MaD:274 | +| bmqa.cpp:184:19:184:26 | call to source | bmqa.cpp:185:36:185:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:185:36:185:76 | *call to data | bmqa.cpp:187:2:187:4 | *msg | provenance | | +| bmqa.cpp:187:2:187:4 | *msg | bmqa.cpp:187:22:187:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:187:22:187:27 | loadProperties output argument | bmqa.cpp:189:29:189:33 | *props | provenance | | +| bmqa.cpp:189:29:189:33 | *props | bmqa.cpp:189:56:189:69 | *call to getPropertyAsStringOr | provenance | MaD:149 | +| bmqa.cpp:189:56:189:69 | *call to getPropertyAsStringOr | bmqa.cpp:189:56:189:69 | *call to getPropertyAsStringOr | provenance | | +| bmqa.cpp:189:56:189:69 | *call to getPropertyAsStringOr | bmqa.cpp:190:7:190:19 | * ... | provenance | TaintFunction | +| bmqa.cpp:195:19:195:26 | call to source | bmqa.cpp:197:64:197:67 | *dflt | provenance | TaintFunction | +| bmqa.cpp:197:56:197:69 | *call to getPropertyAsStringOr | bmqa.cpp:197:56:197:69 | *call to getPropertyAsStringOr | provenance | | +| bmqa.cpp:197:56:197:69 | *call to getPropertyAsStringOr | bmqa.cpp:198:7:198:19 | * ... | provenance | TaintFunction | +| bmqa.cpp:197:64:197:67 | *dflt | bmqa.cpp:197:56:197:69 | *call to getPropertyAsStringOr | provenance | MaD:148 | +| bmqa.cpp:202:19:202:26 | call to source | bmqa.cpp:203:36:203:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:203:36:203:76 | *call to data | bmqa.cpp:205:2:205:4 | *msg | provenance | | +| bmqa.cpp:205:2:205:4 | *msg | bmqa.cpp:205:22:205:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:205:22:205:27 | loadProperties output argument | bmqa.cpp:207:35:207:39 | *props | provenance | | +| bmqa.cpp:207:35:207:39 | *props | bmqa.cpp:207:62:207:75 | *call to getPropertyAsBinaryOr [element] | provenance | MaD:146 | +| bmqa.cpp:207:62:207:75 | *call to getPropertyAsBinaryOr [element] | bmqa.cpp:207:62:207:75 | *call to getPropertyAsBinaryOr [element] | provenance | | +| bmqa.cpp:207:62:207:75 | *call to getPropertyAsBinaryOr [element] | bmqa.cpp:208:8:208:12 | *value [element] | provenance | | +| bmqa.cpp:208:8:208:12 | *value [element] | bmqa.cpp:208:7:208:19 | * ... | provenance | MaD:273 | +| bmqa.cpp:212:11:212:19 | * ... | bmqa.cpp:214:17:214:17 | *c | provenance | | +| bmqa.cpp:212:12:212:17 | call to source | bmqa.cpp:212:11:212:19 | * ... | provenance | | +| bmqa.cpp:214:2:214:5 | push_back output argument [element] | bmqa.cpp:216:70:216:73 | *dflt [element] | provenance | | +| bmqa.cpp:214:17:214:17 | *c | bmqa.cpp:214:2:214:5 | push_back output argument [element] | provenance | MaD:275 | +| bmqa.cpp:216:62:216:75 | *call to getPropertyAsBinaryOr [element] | bmqa.cpp:216:62:216:75 | *call to getPropertyAsBinaryOr [element] | provenance | | +| bmqa.cpp:216:62:216:75 | *call to getPropertyAsBinaryOr [element] | bmqa.cpp:217:8:217:12 | *value [element] | provenance | | +| bmqa.cpp:216:70:216:73 | *dflt [element] | bmqa.cpp:216:62:216:75 | *call to getPropertyAsBinaryOr [element] | provenance | MaD:145 | +| bmqa.cpp:217:8:217:12 | *value [element] | bmqa.cpp:217:7:217:19 | * ... | provenance | MaD:273 | +| bmqa.cpp:229:16:229:23 | call to source | bmqa.cpp:231:49:231:52 | *call to data | provenance | TaintFunction | +| bmqa.cpp:231:37:231:41 | copy output argument | bmqa.cpp:233:17:233:20 | *blob | provenance | | +| bmqa.cpp:231:49:231:52 | *call to data | bmqa.cpp:231:37:231:41 | copy output argument | provenance | MaD:132 | +| bmqa.cpp:233:2:233:6 | streamIn output argument | bmqa.cpp:234:8:234:12 | *props | provenance | | +| bmqa.cpp:233:17:233:20 | *blob | bmqa.cpp:233:2:233:6 | streamIn output argument | provenance | MaD:161 | +| bmqa.cpp:234:8:234:12 | *props | bmqa.cpp:234:33:234:40 | *call to getPropertyAsString | provenance | MaD:147 | +| bmqa.cpp:234:33:234:40 | *call to getPropertyAsString | bmqa.cpp:234:7:234:46 | * ... | provenance | TaintFunction | +| bmqa.cpp:238:16:238:23 | call to source | bmqa.cpp:240:49:240:52 | *call to data | provenance | TaintFunction | +| bmqa.cpp:240:37:240:41 | copy output argument | bmqa.cpp:242:14:242:17 | *blob | provenance | | +| bmqa.cpp:240:49:240:52 | *call to data | bmqa.cpp:240:37:240:41 | copy output argument | provenance | MaD:132 | +| bmqa.cpp:242:2:242:3 | streamIn output argument | bmqa.cpp:244:23:244:25 | *& ... | provenance | | +| bmqa.cpp:242:14:242:17 | *blob | bmqa.cpp:242:2:242:3 | streamIn output argument | provenance | MaD:161 | +| bmqa.cpp:244:2:244:4 | setPropertiesRef output argument | bmqa.cpp:246:2:246:4 | *msg | provenance | | +| bmqa.cpp:244:23:244:25 | *& ... | bmqa.cpp:244:2:244:4 | setPropertiesRef output argument | provenance | MaD:140 | +| bmqa.cpp:246:2:246:4 | *msg | bmqa.cpp:246:21:246:24 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:246:21:246:24 | loadProperties output argument | bmqa.cpp:247:8:247:10 | *out | provenance | | +| bmqa.cpp:247:8:247:10 | *out | bmqa.cpp:247:31:247:38 | *call to getPropertyAsString | provenance | MaD:147 | +| bmqa.cpp:247:31:247:38 | *call to getPropertyAsString | bmqa.cpp:247:7:247:44 | * ... | provenance | TaintFunction | +| bmqa.cpp:251:19:251:26 | call to source | bmqa.cpp:252:36:252:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:252:36:252:76 | *call to data | bmqa.cpp:254:2:254:4 | *msg | provenance | | +| bmqa.cpp:254:2:254:4 | *msg | bmqa.cpp:254:22:254:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:254:22:254:27 | loadProperties output argument | bmqa.cpp:256:41:256:45 | *props | provenance | | +| bmqa.cpp:256:41:256:45 | *props | bmqa.cpp:256:56:256:66 | *call to streamOut | provenance | MaD:162 | +| bmqa.cpp:256:56:256:66 | *call to streamOut | bmqa.cpp:256:56:256:66 | *call to streamOut | provenance | | +| bmqa.cpp:256:56:256:66 | *call to streamOut | bmqa.cpp:258:42:258:45 | *blob | provenance | | +| bmqa.cpp:258:37:258:39 | copy output argument | bmqa.cpp:259:7:259:10 | * ... | provenance | | +| bmqa.cpp:258:42:258:45 | *blob | bmqa.cpp:258:37:258:39 | copy output argument | provenance | MaD:133 | +| bmqa.cpp:263:19:263:26 | call to source | bmqa.cpp:264:36:264:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:264:36:264:76 | *call to data | bmqa.cpp:266:2:266:4 | *msg | provenance | | +| bmqa.cpp:266:2:266:4 | *msg | bmqa.cpp:266:22:266:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:266:22:266:27 | loadProperties output argument | bmqa.cpp:267:44:267:48 | *props | provenance | | +| bmqa.cpp:266:22:266:27 | loadProperties output argument | bmqa.cpp:268:8:268:11 | *copy | provenance | DataFlowFunction | +| bmqa.cpp:266:22:266:27 | loadProperties output argument | bmqa.cpp:268:8:268:11 | *copy | provenance | TaintFunction | +| bmqa.cpp:267:39:267:42 | call to MessageProperties | bmqa.cpp:268:8:268:11 | *copy | provenance | | +| bmqa.cpp:267:44:267:48 | *props | bmqa.cpp:267:39:267:42 | call to MessageProperties | provenance | MaD:143 | +| bmqa.cpp:268:8:268:11 | *copy | bmqa.cpp:268:32:268:39 | *call to getPropertyAsString | provenance | MaD:147 | +| bmqa.cpp:268:32:268:39 | *call to getPropertyAsString | bmqa.cpp:268:7:268:45 | * ... | provenance | TaintFunction | +| bmqa.cpp:272:19:272:26 | call to source | bmqa.cpp:273:36:273:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:273:36:273:76 | *call to data | bmqa.cpp:275:2:275:4 | *msg | provenance | | +| bmqa.cpp:275:2:275:4 | *msg | bmqa.cpp:275:22:275:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:275:22:275:27 | loadProperties output argument | bmqa.cpp:277:9:277:13 | *props | provenance | | +| bmqa.cpp:275:22:275:27 | loadProperties output argument | bmqa.cpp:278:8:278:11 | *copy | provenance | TaintFunction | +| bmqa.cpp:277:2:277:5 | operator= output argument | bmqa.cpp:278:8:278:11 | *copy | provenance | | +| bmqa.cpp:277:9:277:13 | *props | bmqa.cpp:277:2:277:5 | operator= output argument | provenance | MaD:150 | +| bmqa.cpp:278:8:278:11 | *copy | bmqa.cpp:278:32:278:39 | *call to getPropertyAsString | provenance | MaD:147 | +| bmqa.cpp:278:32:278:39 | *call to getPropertyAsString | bmqa.cpp:278:7:278:45 | * ... | provenance | TaintFunction | +| bmqa.cpp:282:19:282:26 | call to source | bmqa.cpp:283:36:283:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:283:36:283:76 | *call to data | bmqa.cpp:285:2:285:4 | *msg | provenance | | +| bmqa.cpp:285:2:285:4 | *msg | bmqa.cpp:285:22:285:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:285:22:285:27 | loadProperties output argument | bmqa.cpp:287:8:287:21 | *call to operator= | provenance | TaintFunction | +| bmqa.cpp:285:22:285:27 | loadProperties output argument | bmqa.cpp:287:16:287:20 | *props | provenance | | +| bmqa.cpp:287:8:287:21 | *call to operator= | bmqa.cpp:287:42:287:49 | *call to getPropertyAsString | provenance | MaD:147 | +| bmqa.cpp:287:16:287:20 | *props | bmqa.cpp:287:8:287:21 | *call to operator= | provenance | MaD:151 | +| bmqa.cpp:287:42:287:49 | *call to getPropertyAsString | bmqa.cpp:287:7:287:55 | * ... | provenance | TaintFunction | +| bmqa.cpp:291:19:291:26 | call to source | bmqa.cpp:292:28:292:58 | *call to data | provenance | TaintFunction | +| bmqa.cpp:292:28:292:58 | *call to data | bmqa.cpp:294:35:294:40 | * ... | provenance | | +| bmqa.cpp:294:2:294:6 | setPropertyAsString output argument | bmqa.cpp:295:8:295:12 | *props | provenance | | +| bmqa.cpp:294:35:294:40 | * ... | bmqa.cpp:294:2:294:6 | setPropertyAsString output argument | provenance | MaD:160 | +| bmqa.cpp:295:8:295:12 | *props | bmqa.cpp:295:33:295:40 | *call to getPropertyAsString | provenance | MaD:147 | +| bmqa.cpp:295:33:295:40 | *call to getPropertyAsString | bmqa.cpp:295:7:295:46 | * ... | provenance | TaintFunction | +| bmqa.cpp:299:25:299:32 | call to source | bmqa.cpp:301:35:301:39 | value | provenance | TaintFunction | +| bmqa.cpp:301:2:301:6 | setPropertyAsString output argument | bmqa.cpp:302:8:302:12 | *props | provenance | | +| bmqa.cpp:301:35:301:39 | value | bmqa.cpp:301:2:301:6 | setPropertyAsString output argument | provenance | MaD:160 | +| bmqa.cpp:302:8:302:12 | *props | bmqa.cpp:302:33:302:40 | *call to getPropertyAsString | provenance | MaD:147 | +| bmqa.cpp:302:33:302:40 | *call to getPropertyAsString | bmqa.cpp:302:7:302:46 | * ... | provenance | TaintFunction | +| bmqa.cpp:306:19:306:26 | call to source | bmqa.cpp:307:33:307:68 | *call to data | provenance | TaintFunction | +| bmqa.cpp:307:33:307:68 | *call to data | bmqa.cpp:309:35:309:40 | * ... | provenance | | +| bmqa.cpp:309:2:309:6 | setPropertyAsBinary output argument | bmqa.cpp:310:8:310:12 | *props | provenance | | +| bmqa.cpp:309:35:309:40 | * ... | bmqa.cpp:309:2:309:6 | setPropertyAsBinary output argument | provenance | MaD:153 | +| bmqa.cpp:310:8:310:12 | *props | bmqa.cpp:310:33:310:40 | *call to getPropertyAsBinary [element] | provenance | MaD:144 | +| bmqa.cpp:310:33:310:40 | *call to getPropertyAsBinary [element] | bmqa.cpp:310:7:310:46 | * ... | provenance | MaD:273 | +| bmqa.cpp:315:24:315:31 | call to source | bmqa.cpp:317:26:317:29 | name | provenance | TaintFunction | +| bmqa.cpp:317:2:317:6 | setPropertyAsBool output argument | bmqa.cpp:318:50:318:55 | *& ... | provenance | | +| bmqa.cpp:317:26:317:29 | name | bmqa.cpp:317:2:317:6 | setPropertyAsBool output argument | provenance | MaD:154 | +| bmqa.cpp:318:47:318:48 | call to MessagePropertiesIterator | bmqa.cpp:319:8:319:9 | *it | provenance | | +| bmqa.cpp:318:50:318:55 | *& ... | bmqa.cpp:318:47:318:48 | call to MessagePropertiesIterator | provenance | MaD:163 | +| bmqa.cpp:319:8:319:9 | *it | bmqa.cpp:319:15:319:17 | *call to name | provenance | MaD:166 | +| bmqa.cpp:319:15:319:17 | *call to name | bmqa.cpp:319:7:319:23 | * ... | provenance | TaintFunction | +| bmqa.cpp:323:24:323:31 | call to source | bmqa.cpp:325:26:325:29 | name | provenance | TaintFunction | +| bmqa.cpp:325:2:325:6 | setPropertyAsChar output argument | bmqa.cpp:326:50:326:55 | *& ... | provenance | | +| bmqa.cpp:325:26:325:29 | name | bmqa.cpp:325:2:325:6 | setPropertyAsChar output argument | provenance | MaD:155 | +| bmqa.cpp:326:47:326:48 | call to MessagePropertiesIterator | bmqa.cpp:327:8:327:9 | *it | provenance | | +| bmqa.cpp:326:50:326:55 | *& ... | bmqa.cpp:326:47:326:48 | call to MessagePropertiesIterator | provenance | MaD:163 | +| bmqa.cpp:327:8:327:9 | *it | bmqa.cpp:327:15:327:17 | *call to name | provenance | MaD:166 | +| bmqa.cpp:327:15:327:17 | *call to name | bmqa.cpp:327:7:327:23 | * ... | provenance | TaintFunction | +| bmqa.cpp:331:24:331:31 | call to source | bmqa.cpp:333:27:333:30 | name | provenance | TaintFunction | +| bmqa.cpp:333:2:333:6 | setPropertyAsShort output argument | bmqa.cpp:334:50:334:55 | *& ... | provenance | | +| bmqa.cpp:333:27:333:30 | name | bmqa.cpp:333:2:333:6 | setPropertyAsShort output argument | provenance | MaD:158 | +| bmqa.cpp:334:47:334:48 | call to MessagePropertiesIterator | bmqa.cpp:335:8:335:9 | *it | provenance | | +| bmqa.cpp:334:50:334:55 | *& ... | bmqa.cpp:334:47:334:48 | call to MessagePropertiesIterator | provenance | MaD:163 | +| bmqa.cpp:335:8:335:9 | *it | bmqa.cpp:335:15:335:17 | *call to name | provenance | MaD:166 | +| bmqa.cpp:335:15:335:17 | *call to name | bmqa.cpp:335:7:335:23 | * ... | provenance | TaintFunction | +| bmqa.cpp:339:24:339:31 | call to source | bmqa.cpp:341:27:341:30 | name | provenance | TaintFunction | +| bmqa.cpp:341:2:341:6 | setPropertyAsInt32 output argument | bmqa.cpp:342:50:342:55 | *& ... | provenance | | +| bmqa.cpp:341:27:341:30 | name | bmqa.cpp:341:2:341:6 | setPropertyAsInt32 output argument | provenance | MaD:156 | +| bmqa.cpp:342:47:342:48 | call to MessagePropertiesIterator | bmqa.cpp:343:8:343:9 | *it | provenance | | +| bmqa.cpp:342:50:342:55 | *& ... | bmqa.cpp:342:47:342:48 | call to MessagePropertiesIterator | provenance | MaD:163 | +| bmqa.cpp:343:8:343:9 | *it | bmqa.cpp:343:15:343:17 | *call to name | provenance | MaD:166 | +| bmqa.cpp:343:15:343:17 | *call to name | bmqa.cpp:343:7:343:23 | * ... | provenance | TaintFunction | +| bmqa.cpp:347:24:347:31 | call to source | bmqa.cpp:349:27:349:30 | name | provenance | TaintFunction | +| bmqa.cpp:349:2:349:6 | setPropertyAsInt64 output argument | bmqa.cpp:350:50:350:55 | *& ... | provenance | | +| bmqa.cpp:349:27:349:30 | name | bmqa.cpp:349:2:349:6 | setPropertyAsInt64 output argument | provenance | MaD:157 | +| bmqa.cpp:350:47:350:48 | call to MessagePropertiesIterator | bmqa.cpp:351:8:351:9 | *it | provenance | | +| bmqa.cpp:350:50:350:55 | *& ... | bmqa.cpp:350:47:350:48 | call to MessagePropertiesIterator | provenance | MaD:163 | +| bmqa.cpp:351:8:351:9 | *it | bmqa.cpp:351:15:351:17 | *call to name | provenance | MaD:166 | +| bmqa.cpp:351:15:351:17 | *call to name | bmqa.cpp:351:7:351:23 | * ... | provenance | TaintFunction | +| bmqa.cpp:355:24:355:31 | call to source | bmqa.cpp:357:28:357:31 | name | provenance | TaintFunction | +| bmqa.cpp:357:2:357:6 | setPropertyAsString output argument | bmqa.cpp:358:50:358:55 | *& ... | provenance | | +| bmqa.cpp:357:28:357:31 | name | bmqa.cpp:357:2:357:6 | setPropertyAsString output argument | provenance | MaD:159 | +| bmqa.cpp:358:47:358:48 | call to MessagePropertiesIterator | bmqa.cpp:359:8:359:9 | *it | provenance | | +| bmqa.cpp:358:50:358:55 | *& ... | bmqa.cpp:358:47:358:48 | call to MessagePropertiesIterator | provenance | MaD:163 | +| bmqa.cpp:359:8:359:9 | *it | bmqa.cpp:359:15:359:17 | *call to name | provenance | MaD:166 | +| bmqa.cpp:359:15:359:17 | *call to name | bmqa.cpp:359:7:359:23 | * ... | provenance | TaintFunction | +| bmqa.cpp:363:24:363:31 | call to source | bmqa.cpp:365:28:365:31 | name | provenance | TaintFunction | +| bmqa.cpp:365:2:365:6 | setPropertyAsBinary output argument | bmqa.cpp:366:50:366:55 | *& ... | provenance | | +| bmqa.cpp:365:28:365:31 | name | bmqa.cpp:365:2:365:6 | setPropertyAsBinary output argument | provenance | MaD:152 | +| bmqa.cpp:366:47:366:48 | call to MessagePropertiesIterator | bmqa.cpp:367:8:367:9 | *it | provenance | | +| bmqa.cpp:366:50:366:55 | *& ... | bmqa.cpp:366:47:366:48 | call to MessagePropertiesIterator | provenance | MaD:163 | +| bmqa.cpp:367:8:367:9 | *it | bmqa.cpp:367:15:367:17 | *call to name | provenance | MaD:166 | +| bmqa.cpp:367:15:367:17 | *call to name | bmqa.cpp:367:7:367:23 | * ... | provenance | TaintFunction | +| bmqa.cpp:371:19:371:26 | call to source | bmqa.cpp:372:36:372:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:372:36:372:76 | *call to data | bmqa.cpp:374:2:374:4 | *msg | provenance | | +| bmqa.cpp:374:2:374:4 | *msg | bmqa.cpp:374:22:374:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:374:22:374:27 | loadProperties output argument | bmqa.cpp:375:50:375:55 | *& ... | provenance | | +| bmqa.cpp:375:47:375:48 | call to MessagePropertiesIterator | bmqa.cpp:377:9:377:10 | *it | provenance | | +| bmqa.cpp:375:47:375:48 | call to MessagePropertiesIterator | bmqa.cpp:378:9:378:10 | *it | provenance | | +| bmqa.cpp:375:47:375:48 | call to MessagePropertiesIterator | bmqa.cpp:379:9:379:10 | *it | provenance | | +| bmqa.cpp:375:50:375:55 | *& ... | bmqa.cpp:375:47:375:48 | call to MessagePropertiesIterator | provenance | MaD:163 | +| bmqa.cpp:377:9:377:10 | *it | bmqa.cpp:377:16:377:18 | *call to name | provenance | MaD:166 | +| bmqa.cpp:377:16:377:18 | *call to name | bmqa.cpp:377:8:377:24 | * ... | provenance | TaintFunction | +| bmqa.cpp:378:9:378:10 | *it | bmqa.cpp:378:23:378:25 | *call to getAsString | provenance | MaD:165 | +| bmqa.cpp:378:23:378:25 | *call to getAsString | bmqa.cpp:378:8:378:31 | * ... | provenance | TaintFunction | +| bmqa.cpp:379:9:379:10 | *it | bmqa.cpp:379:23:379:25 | *call to getAsBinary [element] | provenance | MaD:164 | +| bmqa.cpp:379:23:379:25 | *call to getAsBinary [element] | bmqa.cpp:379:8:379:31 | * ... | provenance | MaD:273 | +| bmqa.cpp:385:19:385:26 | call to source | bmqa.cpp:386:36:386:76 | *call to data | provenance | TaintFunction | +| bmqa.cpp:386:36:386:76 | *call to data | bmqa.cpp:388:2:388:4 | *msg | provenance | | +| bmqa.cpp:388:2:388:4 | *msg | bmqa.cpp:388:22:388:27 | loadProperties output argument | provenance | MaD:137 | +| bmqa.cpp:388:22:388:27 | loadProperties output argument | bmqa.cpp:389:50:389:55 | *& ... | provenance | | +| bmqa.cpp:389:47:389:48 | call to MessagePropertiesIterator | bmqa.cpp:391:9:391:10 | *it | provenance | | +| bmqa.cpp:389:47:389:48 | call to MessagePropertiesIterator | bmqa.cpp:392:8:392:11 | *copy | provenance | TaintFunction | +| bmqa.cpp:389:47:389:48 | call to MessagePropertiesIterator | bmqa.cpp:393:8:393:18 | *call to operator= | provenance | TaintFunction | +| bmqa.cpp:389:47:389:48 | call to MessagePropertiesIterator | bmqa.cpp:393:16:393:17 | *it | provenance | | +| bmqa.cpp:389:50:389:55 | *& ... | bmqa.cpp:389:47:389:48 | call to MessagePropertiesIterator | provenance | MaD:163 | +| bmqa.cpp:391:2:391:5 | operator= output argument | bmqa.cpp:392:8:392:11 | *copy | provenance | | +| bmqa.cpp:391:9:391:10 | *it | bmqa.cpp:391:2:391:5 | operator= output argument | provenance | MaD:167 | +| bmqa.cpp:392:8:392:11 | *copy | bmqa.cpp:392:24:392:26 | *call to getAsString | provenance | MaD:165 | +| bmqa.cpp:392:24:392:26 | *call to getAsString | bmqa.cpp:392:7:392:32 | * ... | provenance | TaintFunction | +| bmqa.cpp:393:8:393:18 | *call to operator= | bmqa.cpp:393:24:393:26 | *call to name | provenance | MaD:166 | +| bmqa.cpp:393:16:393:17 | *it | bmqa.cpp:393:8:393:18 | *call to operator= | provenance | MaD:168 | +| bmqa.cpp:393:24:393:26 | *call to name | bmqa.cpp:393:7:393:32 | * ... | provenance | TaintFunction | +| bslx.cpp:161:33:161:40 | call to source | bslx.cpp:162:46:162:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:162:34:162:39 | call to ByteInStream | bslx.cpp:164:2:164:7 | *stream | provenance | | +| bslx.cpp:162:46:162:49 | *call to data | bslx.cpp:162:34:162:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:164:2:164:7 | *stream | bslx.cpp:164:22:164:24 | getArrayInt8 output argument | provenance | MaD:181 | +| bslx.cpp:164:22:164:24 | getArrayInt8 output argument | bslx.cpp:165:7:165:10 | * ... | provenance | | +| bslx.cpp:169:33:169:40 | call to source | bslx.cpp:170:46:170:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:170:34:170:39 | call to ByteInStream | bslx.cpp:172:2:172:7 | *stream | provenance | | +| bslx.cpp:170:46:170:49 | *call to data | bslx.cpp:170:34:170:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:172:2:172:7 | *stream | bslx.cpp:172:19:172:21 | getString output argument | provenance | MaD:202 | +| bslx.cpp:172:19:172:21 | getString output argument | bslx.cpp:173:7:173:17 | * ... | provenance | TaintFunction | +| bslx.cpp:177:33:177:40 | call to source | bslx.cpp:178:46:178:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:178:34:178:39 | call to ByteInStream | bslx.cpp:181:2:181:7 | *stream | provenance | | +| bslx.cpp:178:46:178:49 | *call to data | bslx.cpp:178:34:178:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:181:2:181:7 | *stream | bslx.cpp:181:17:181:20 | *call to getInt32 | provenance | MaD:195 | +| bslx.cpp:181:17:181:20 | *call to getInt32 | bslx.cpp:181:31:181:33 | getString output argument | provenance | MaD:202 | +| bslx.cpp:181:31:181:33 | getString output argument | bslx.cpp:182:7:182:17 | * ... | provenance | TaintFunction | +| bslx.cpp:187:33:187:40 | call to source | bslx.cpp:188:20:188:23 | *call to data | provenance | TaintFunction | +| bslx.cpp:188:2:188:7 | reset output argument | bslx.cpp:190:2:190:7 | *stream | provenance | | +| bslx.cpp:188:20:188:23 | *call to data | bslx.cpp:188:2:188:7 | reset output argument | provenance | MaD:214 | +| bslx.cpp:190:2:190:7 | *stream | bslx.cpp:190:19:190:21 | getString output argument | provenance | MaD:202 | +| bslx.cpp:190:19:190:21 | getString output argument | bslx.cpp:191:7:191:17 | * ... | provenance | TaintFunction | +| bslx.cpp:195:33:195:40 | call to source | bslx.cpp:196:20:196:45 | *call to data | provenance | TaintFunction | +| bslx.cpp:196:20:196:45 | *call to data | bslx.cpp:197:57:197:58 | *sb | provenance | | +| bslx.cpp:196:20:196:45 | *call to data | bslx.cpp:199:2:199:7 | *stream | provenance | TaintFunction | +| bslx.cpp:197:50:197:55 | call to GenericInStream | bslx.cpp:199:2:199:7 | *stream | provenance | | +| bslx.cpp:197:57:197:58 | *sb | bslx.cpp:197:50:197:55 | call to GenericInStream | provenance | MaD:215 | +| bslx.cpp:199:2:199:7 | *stream | bslx.cpp:199:19:199:21 | getString output argument | provenance | MaD:245 | +| bslx.cpp:199:19:199:21 | getString output argument | bslx.cpp:200:7:200:17 | * ... | provenance | TaintFunction | +| bslx.cpp:213:33:213:40 | call to source | bslx.cpp:214:46:214:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:214:34:214:39 | call to ByteInStream | bslx.cpp:216:53:216:58 | *stream | provenance | | +| bslx.cpp:214:46:214:49 | *call to data | bslx.cpp:214:34:214:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:216:53:216:58 | *stream | bslx.cpp:216:61:216:63 | bdexStreamIn output argument | provenance | MaD:169 | +| bslx.cpp:216:61:216:63 | bdexStreamIn output argument | bslx.cpp:217:7:217:17 | * ... | provenance | TaintFunction | +| bslx.cpp:223:33:223:40 | call to source | bslx.cpp:224:46:224:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:224:34:224:39 | call to ByteInStream | bslx.cpp:247:2:247:7 | *stream | provenance | | +| bslx.cpp:224:46:224:49 | *call to data | bslx.cpp:224:34:224:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:247:2:247:7 | *stream | bslx.cpp:247:18:247:21 | *call to getLength | provenance | MaD:201 | +| bslx.cpp:247:18:247:21 | *call to getLength | bslx.cpp:247:32:247:35 | *call to getVersion | provenance | MaD:212 | +| bslx.cpp:247:32:247:35 | *call to getVersion | bslx.cpp:247:43:247:46 | *call to getInt8 | provenance | MaD:200 | +| bslx.cpp:247:43:247:46 | *call to getInt8 | bslx.cpp:247:55:247:59 | *call to getUint8 | provenance | MaD:211 | +| bslx.cpp:247:55:247:59 | *call to getUint8 | bslx.cpp:247:68:247:71 | *call to getInt16 | provenance | MaD:193 | +| bslx.cpp:247:68:247:71 | *call to getInt16 | bslx.cpp:247:81:247:85 | *call to getUint16 | provenance | MaD:204 | +| bslx.cpp:247:81:247:85 | *call to getUint16 | bslx.cpp:247:94:247:97 | *call to getInt24 | provenance | MaD:194 | +| bslx.cpp:247:94:247:97 | *call to getInt24 | bslx.cpp:247:107:247:111 | *call to getUint24 | provenance | MaD:205 | +| bslx.cpp:247:107:247:111 | *call to getUint24 | bslx.cpp:247:120:247:123 | *call to getInt32 | provenance | MaD:195 | +| bslx.cpp:247:120:247:123 | *call to getInt32 | bslx.cpp:247:133:247:137 | *call to getUint32 | provenance | MaD:206 | +| bslx.cpp:247:133:247:137 | *call to getUint32 | bslx.cpp:247:146:247:150 | *call to getInt40 | provenance | MaD:196 | +| bslx.cpp:247:146:247:150 | *call to getInt40 | bslx.cpp:247:160:247:165 | *call to getUint40 | provenance | MaD:207 | +| bslx.cpp:247:160:247:165 | *call to getUint40 | bslx.cpp:247:174:247:178 | *call to getInt48 | provenance | MaD:197 | +| bslx.cpp:247:174:247:178 | *call to getInt48 | bslx.cpp:247:188:247:193 | *call to getUint48 | provenance | MaD:208 | +| bslx.cpp:247:188:247:193 | *call to getUint48 | bslx.cpp:247:202:247:206 | *call to getInt56 | provenance | MaD:198 | +| bslx.cpp:247:202:247:206 | *call to getInt56 | bslx.cpp:247:216:247:221 | *call to getUint56 | provenance | MaD:209 | +| bslx.cpp:247:216:247:221 | *call to getUint56 | bslx.cpp:247:230:247:234 | *call to getInt64 | provenance | MaD:199 | +| bslx.cpp:247:230:247:234 | *call to getInt64 | bslx.cpp:247:244:247:249 | *call to getUint64 | provenance | MaD:210 | +| bslx.cpp:247:244:247:249 | *call to getUint64 | bslx.cpp:247:260:247:263 | *call to getFloat32 | provenance | MaD:191 | +| bslx.cpp:247:260:247:263 | *call to getFloat32 | bslx.cpp:247:274:247:277 | *call to getFloat64 | provenance | MaD:192 | +| bslx.cpp:247:274:247:277 | *call to getFloat64 | bslx.cpp:247:287:247:292 | *call to getString | provenance | MaD:203 | +| bslx.cpp:247:287:247:292 | *call to getString | bslx.cpp:247:305:247:315 | *call to getArrayInt8 | provenance | MaD:182 | +| bslx.cpp:247:305:247:315 | *call to getArrayInt8 | bslx.cpp:247:329:247:340 | *call to getArrayUint8 | provenance | MaD:190 | +| bslx.cpp:247:329:247:340 | *call to getArrayUint8 | bslx.cpp:247:354:247:364 | *call to getArrayInt16 | provenance | MaD:174 | +| bslx.cpp:247:354:247:364 | *call to getArrayInt16 | bslx.cpp:247:379:247:390 | *call to getArrayUint16 | provenance | MaD:183 | +| bslx.cpp:247:379:247:390 | *call to getArrayUint16 | bslx.cpp:247:404:247:414 | *call to getArrayInt24 | provenance | MaD:175 | +| bslx.cpp:247:404:247:414 | *call to getArrayInt24 | bslx.cpp:247:429:247:440 | *call to getArrayUint24 | provenance | MaD:184 | +| bslx.cpp:247:429:247:440 | *call to getArrayUint24 | bslx.cpp:247:454:247:464 | *call to getArrayInt32 | provenance | MaD:176 | +| bslx.cpp:247:454:247:464 | *call to getArrayInt32 | bslx.cpp:247:479:247:490 | *call to getArrayUint32 | provenance | MaD:185 | +| bslx.cpp:247:479:247:490 | *call to getArrayUint32 | bslx.cpp:247:504:247:515 | *call to getArrayInt40 | provenance | MaD:177 | +| bslx.cpp:247:504:247:515 | *call to getArrayInt40 | bslx.cpp:247:530:247:542 | *call to getArrayUint40 | provenance | MaD:186 | +| bslx.cpp:247:530:247:542 | *call to getArrayUint40 | bslx.cpp:247:556:247:567 | *call to getArrayInt48 | provenance | MaD:178 | +| bslx.cpp:247:556:247:567 | *call to getArrayInt48 | bslx.cpp:247:582:247:594 | *call to getArrayUint48 | provenance | MaD:187 | +| bslx.cpp:247:582:247:594 | *call to getArrayUint48 | bslx.cpp:247:608:247:619 | *call to getArrayInt56 | provenance | MaD:179 | +| bslx.cpp:247:608:247:619 | *call to getArrayInt56 | bslx.cpp:247:634:247:646 | *call to getArrayUint56 | provenance | MaD:188 | +| bslx.cpp:247:634:247:646 | *call to getArrayUint56 | bslx.cpp:247:660:247:671 | *call to getArrayInt64 | provenance | MaD:180 | +| bslx.cpp:247:660:247:671 | *call to getArrayInt64 | bslx.cpp:247:686:247:698 | *call to getArrayUint64 | provenance | MaD:189 | +| bslx.cpp:247:686:247:698 | *call to getArrayUint64 | bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | provenance | MaD:172 | +| bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | provenance | MaD:173 | +| bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | bslx.cpp:247:761:247:763 | getString output argument | provenance | MaD:202 | +| bslx.cpp:247:761:247:763 | getString output argument | bslx.cpp:248:7:248:17 | * ... | provenance | TaintFunction | +| bslx.cpp:252:33:252:40 | call to source | bslx.cpp:253:20:253:45 | *call to data | provenance | TaintFunction | +| bslx.cpp:253:20:253:45 | *call to data | bslx.cpp:254:57:254:58 | *sb | provenance | | +| bslx.cpp:253:20:253:45 | *call to data | bslx.cpp:277:2:277:7 | *stream | provenance | TaintFunction | +| bslx.cpp:254:50:254:55 | call to GenericInStream | bslx.cpp:277:2:277:7 | *stream | provenance | | +| bslx.cpp:254:57:254:58 | *sb | bslx.cpp:254:50:254:55 | call to GenericInStream | provenance | MaD:215 | +| bslx.cpp:277:2:277:7 | *stream | bslx.cpp:277:18:277:21 | *call to getLength | provenance | MaD:244 | +| bslx.cpp:277:18:277:21 | *call to getLength | bslx.cpp:277:32:277:35 | *call to getVersion | provenance | MaD:255 | +| bslx.cpp:277:32:277:35 | *call to getVersion | bslx.cpp:277:43:277:46 | *call to getInt8 | provenance | MaD:243 | +| bslx.cpp:277:43:277:46 | *call to getInt8 | bslx.cpp:277:55:277:59 | *call to getUint8 | provenance | MaD:254 | +| bslx.cpp:277:55:277:59 | *call to getUint8 | bslx.cpp:277:68:277:71 | *call to getInt16 | provenance | MaD:236 | +| bslx.cpp:277:68:277:71 | *call to getInt16 | bslx.cpp:277:81:277:85 | *call to getUint16 | provenance | MaD:247 | +| bslx.cpp:277:81:277:85 | *call to getUint16 | bslx.cpp:277:94:277:97 | *call to getInt24 | provenance | MaD:237 | +| bslx.cpp:277:94:277:97 | *call to getInt24 | bslx.cpp:277:107:277:111 | *call to getUint24 | provenance | MaD:248 | +| bslx.cpp:277:107:277:111 | *call to getUint24 | bslx.cpp:277:120:277:123 | *call to getInt32 | provenance | MaD:238 | +| bslx.cpp:277:120:277:123 | *call to getInt32 | bslx.cpp:277:133:277:137 | *call to getUint32 | provenance | MaD:249 | +| bslx.cpp:277:133:277:137 | *call to getUint32 | bslx.cpp:277:146:277:150 | *call to getInt40 | provenance | MaD:239 | +| bslx.cpp:277:146:277:150 | *call to getInt40 | bslx.cpp:277:160:277:165 | *call to getUint40 | provenance | MaD:250 | +| bslx.cpp:277:160:277:165 | *call to getUint40 | bslx.cpp:277:174:277:178 | *call to getInt48 | provenance | MaD:240 | +| bslx.cpp:277:174:277:178 | *call to getInt48 | bslx.cpp:277:188:277:193 | *call to getUint48 | provenance | MaD:251 | +| bslx.cpp:277:188:277:193 | *call to getUint48 | bslx.cpp:277:202:277:206 | *call to getInt56 | provenance | MaD:241 | +| bslx.cpp:277:202:277:206 | *call to getInt56 | bslx.cpp:277:216:277:221 | *call to getUint56 | provenance | MaD:252 | +| bslx.cpp:277:216:277:221 | *call to getUint56 | bslx.cpp:277:230:277:234 | *call to getInt64 | provenance | MaD:242 | +| bslx.cpp:277:230:277:234 | *call to getInt64 | bslx.cpp:277:244:277:249 | *call to getUint64 | provenance | MaD:253 | +| bslx.cpp:277:244:277:249 | *call to getUint64 | bslx.cpp:277:260:277:263 | *call to getFloat32 | provenance | MaD:234 | +| bslx.cpp:277:260:277:263 | *call to getFloat32 | bslx.cpp:277:274:277:277 | *call to getFloat64 | provenance | MaD:235 | +| bslx.cpp:277:274:277:277 | *call to getFloat64 | bslx.cpp:277:287:277:292 | *call to getString | provenance | MaD:246 | +| bslx.cpp:277:287:277:292 | *call to getString | bslx.cpp:277:305:277:315 | *call to getArrayInt8 | provenance | MaD:225 | +| bslx.cpp:277:305:277:315 | *call to getArrayInt8 | bslx.cpp:277:329:277:340 | *call to getArrayUint8 | provenance | MaD:233 | +| bslx.cpp:277:329:277:340 | *call to getArrayUint8 | bslx.cpp:277:354:277:364 | *call to getArrayInt16 | provenance | MaD:218 | +| bslx.cpp:277:354:277:364 | *call to getArrayInt16 | bslx.cpp:277:379:277:390 | *call to getArrayUint16 | provenance | MaD:226 | +| bslx.cpp:277:379:277:390 | *call to getArrayUint16 | bslx.cpp:277:404:277:414 | *call to getArrayInt24 | provenance | MaD:219 | +| bslx.cpp:277:404:277:414 | *call to getArrayInt24 | bslx.cpp:277:429:277:440 | *call to getArrayUint24 | provenance | MaD:227 | +| bslx.cpp:277:429:277:440 | *call to getArrayUint24 | bslx.cpp:277:454:277:464 | *call to getArrayInt32 | provenance | MaD:220 | +| bslx.cpp:277:454:277:464 | *call to getArrayInt32 | bslx.cpp:277:479:277:490 | *call to getArrayUint32 | provenance | MaD:228 | +| bslx.cpp:277:479:277:490 | *call to getArrayUint32 | bslx.cpp:277:504:277:515 | *call to getArrayInt40 | provenance | MaD:221 | +| bslx.cpp:277:504:277:515 | *call to getArrayInt40 | bslx.cpp:277:530:277:542 | *call to getArrayUint40 | provenance | MaD:229 | +| bslx.cpp:277:530:277:542 | *call to getArrayUint40 | bslx.cpp:277:556:277:567 | *call to getArrayInt48 | provenance | MaD:222 | +| bslx.cpp:277:556:277:567 | *call to getArrayInt48 | bslx.cpp:277:582:277:594 | *call to getArrayUint48 | provenance | MaD:230 | +| bslx.cpp:277:582:277:594 | *call to getArrayUint48 | bslx.cpp:277:608:277:619 | *call to getArrayInt56 | provenance | MaD:223 | +| bslx.cpp:277:608:277:619 | *call to getArrayInt56 | bslx.cpp:277:634:277:646 | *call to getArrayUint56 | provenance | MaD:231 | +| bslx.cpp:277:634:277:646 | *call to getArrayUint56 | bslx.cpp:277:660:277:671 | *call to getArrayInt64 | provenance | MaD:224 | +| bslx.cpp:277:660:277:671 | *call to getArrayInt64 | bslx.cpp:277:686:277:698 | *call to getArrayUint64 | provenance | MaD:232 | +| bslx.cpp:277:686:277:698 | *call to getArrayUint64 | bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | provenance | MaD:216 | +| bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | provenance | MaD:217 | +| bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | bslx.cpp:277:761:277:763 | getString output argument | provenance | MaD:245 | +| bslx.cpp:277:761:277:763 | getString output argument | bslx.cpp:278:7:278:17 | * ... | provenance | TaintFunction | +| bslx.cpp:282:33:282:40 | call to source | bslx.cpp:283:46:283:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:283:34:283:39 | call to ByteInStream | bslx.cpp:285:53:285:58 | *stream | provenance | | +| bslx.cpp:283:34:283:39 | call to ByteInStream | bslx.cpp:287:53:287:58 | *stream | provenance | | +| bslx.cpp:283:34:283:39 | call to ByteInStream | bslx.cpp:290:53:290:58 | *stream | provenance | | +| bslx.cpp:283:46:283:49 | *call to data | bslx.cpp:283:34:283:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:285:53:285:58 | *stream | bslx.cpp:285:61:285:61 | bdexStreamIn output argument | provenance | MaD:169 | +| bslx.cpp:285:61:285:61 | bdexStreamIn output argument | bslx.cpp:286:7:286:7 | x | provenance | | +| bslx.cpp:285:61:285:61 | bdexStreamIn output argument | bslx.cpp:288:7:288:7 | x | provenance | | +| bslx.cpp:287:53:287:58 | *stream | bslx.cpp:287:61:287:61 | bdexStreamIn output argument | provenance | MaD:169 | +| bslx.cpp:287:61:287:61 | bdexStreamIn output argument | bslx.cpp:288:7:288:7 | x | provenance | | +| bslx.cpp:290:52:290:66 | *call to bdexStreamIn | bslx.cpp:290:77:290:79 | getString output argument | provenance | MaD:202 | +| bslx.cpp:290:53:290:58 | *stream | bslx.cpp:290:52:290:66 | *call to bdexStreamIn | provenance | MaD:170 | +| bslx.cpp:290:77:290:79 | getString output argument | bslx.cpp:291:7:291:17 | * ... | provenance | TaintFunction | +| bslx.cpp:295:33:295:40 | call to source | bslx.cpp:296:46:296:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:296:34:296:39 | call to ByteInStream | bslx.cpp:298:53:298:58 | *stream | provenance | | +| bslx.cpp:296:46:296:49 | *call to data | bslx.cpp:296:34:296:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:298:53:298:58 | *stream | bslx.cpp:298:61:298:63 | bdexStreamIn output argument | provenance | MaD:169 | +| bslx.cpp:298:61:298:63 | bdexStreamIn output argument | bslx.cpp:299:7:299:17 | * ... | provenance | TaintFunction | +| bslx.cpp:309:33:309:40 | call to source | bslx.cpp:310:46:310:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:310:34:310:39 | call to ByteInStream | bslx.cpp:312:53:312:58 | *stream | provenance | | +| bslx.cpp:310:46:310:49 | *call to data | bslx.cpp:310:34:310:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:312:53:312:58 | *stream | bslx.cpp:312:61:312:63 | bdexStreamIn output argument | provenance | MaD:169 | +| bslx.cpp:312:61:312:63 | bdexStreamIn output argument | bslx.cpp:313:7:313:9 | out | provenance | | +| bslx.cpp:322:40:322:60 | call to source | bslx.cpp:322:40:322:60 | call to source | provenance | | +| bslx.cpp:322:40:322:60 | call to source | bslx.cpp:323:15:323:18 | *data | provenance | | +| bslx.cpp:323:2:323:7 | reset output argument | bslx.cpp:325:2:325:7 | *stream | provenance | | +| bslx.cpp:323:15:323:18 | *data | bslx.cpp:323:2:323:7 | reset output argument | provenance | MaD:213 | +| bslx.cpp:325:2:325:7 | *stream | bslx.cpp:325:19:325:21 | getString output argument | provenance | MaD:202 | +| bslx.cpp:325:19:325:21 | getString output argument | bslx.cpp:326:7:326:17 | * ... | provenance | TaintFunction | +| bslx.cpp:330:33:330:40 | call to source | bslx.cpp:331:46:331:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:331:34:331:39 | call to ByteInStream | bslx.cpp:334:2:334:7 | *stream | provenance | | +| bslx.cpp:331:46:331:49 | *call to data | bslx.cpp:331:34:331:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:334:2:334:7 | *stream | bslx.cpp:334:19:334:21 | getString output argument | provenance | MaD:202 | +| bslx.cpp:334:19:334:21 | getString output argument | bslx.cpp:335:7:335:17 | * ... | provenance | TaintFunction | +| bslx.cpp:349:33:349:40 | call to source | bslx.cpp:350:46:350:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:350:34:350:39 | call to ByteInStream | bslx.cpp:354:2:354:7 | *stream | provenance | | +| bslx.cpp:350:46:350:49 | *call to data | bslx.cpp:350:34:350:39 | call to ByteInStream | provenance | MaD:171 | +| bslx.cpp:354:2:354:7 | *stream | bslx.cpp:354:19:354:21 | getString output argument | provenance | MaD:202 | +| bslx.cpp:354:19:354:21 | getString output argument | bslx.cpp:356:7:356:17 | * ... | provenance | TaintFunction | +| protobuf.cpp:117:27:117:51 | call to source | protobuf.cpp:117:27:117:51 | call to source | provenance | | +| protobuf.cpp:117:27:117:51 | call to source | protobuf.cpp:118:22:118:25 | data | provenance | | +| protobuf.cpp:118:2:118:4 | ParseFromString output argument | protobuf.cpp:119:7:119:9 | msg | provenance | | +| protobuf.cpp:118:22:118:25 | data | protobuf.cpp:118:2:118:4 | ParseFromString output argument | provenance | MaD:296 | +| protobuf.cpp:124:20:124:37 | call to source | protobuf.cpp:124:20:124:37 | call to source | provenance | | +| protobuf.cpp:124:20:124:37 | call to source | protobuf.cpp:125:22:125:25 | *data | provenance | | +| protobuf.cpp:125:2:125:4 | ParseFromString output argument | protobuf.cpp:126:7:126:9 | msg | provenance | | +| protobuf.cpp:125:22:125:25 | *data | protobuf.cpp:125:2:125:4 | ParseFromString output argument | provenance | MaD:295 | +| protobuf.cpp:131:27:131:51 | call to source | protobuf.cpp:131:27:131:51 | call to source | provenance | | +| protobuf.cpp:131:27:131:51 | call to source | protobuf.cpp:132:29:132:32 | data | provenance | | +| protobuf.cpp:132:2:132:4 | ParsePartialFromString output argument | protobuf.cpp:133:7:133:9 | msg | provenance | | +| protobuf.cpp:132:29:132:32 | data | protobuf.cpp:132:2:132:4 | ParsePartialFromString output argument | provenance | MaD:304 | +| protobuf.cpp:138:20:138:37 | call to source | protobuf.cpp:138:20:138:37 | call to source | provenance | | +| protobuf.cpp:138:20:138:37 | call to source | protobuf.cpp:139:29:139:32 | *data | provenance | | +| protobuf.cpp:139:2:139:4 | ParsePartialFromString output argument | protobuf.cpp:140:7:140:9 | msg | provenance | | +| protobuf.cpp:139:29:139:32 | *data | protobuf.cpp:139:2:139:4 | ParsePartialFromString output argument | provenance | MaD:303 | +| protobuf.cpp:145:27:145:51 | call to source | protobuf.cpp:145:27:145:51 | call to source | provenance | | +| protobuf.cpp:145:27:145:51 | call to source | protobuf.cpp:146:22:146:25 | data | provenance | | +| protobuf.cpp:146:2:146:4 | MergeFromString output argument | protobuf.cpp:147:7:147:9 | msg | provenance | | +| protobuf.cpp:146:22:146:25 | data | protobuf.cpp:146:2:146:4 | MergeFromString output argument | provenance | MaD:284 | +| protobuf.cpp:152:20:152:37 | call to source | protobuf.cpp:152:20:152:37 | call to source | provenance | | +| protobuf.cpp:152:20:152:37 | call to source | protobuf.cpp:153:22:153:25 | *data | provenance | | +| protobuf.cpp:153:2:153:4 | MergeFromString output argument | protobuf.cpp:154:7:154:9 | msg | provenance | | +| protobuf.cpp:153:22:153:25 | *data | protobuf.cpp:153:2:153:4 | MergeFromString output argument | provenance | MaD:283 | +| protobuf.cpp:159:27:159:51 | call to source | protobuf.cpp:159:27:159:51 | call to source | provenance | | +| protobuf.cpp:159:27:159:51 | call to source | protobuf.cpp:160:29:160:32 | data | provenance | | +| protobuf.cpp:160:2:160:4 | MergePartialFromString output argument | protobuf.cpp:161:7:161:9 | msg | provenance | | +| protobuf.cpp:160:29:160:32 | data | protobuf.cpp:160:2:160:4 | MergePartialFromString output argument | provenance | MaD:289 | +| protobuf.cpp:166:20:166:37 | call to source | protobuf.cpp:166:20:166:37 | call to source | provenance | | +| protobuf.cpp:166:20:166:37 | call to source | protobuf.cpp:167:29:167:32 | *data | provenance | | +| protobuf.cpp:167:2:167:4 | MergePartialFromString output argument | protobuf.cpp:168:7:168:9 | msg | provenance | | +| protobuf.cpp:167:29:167:32 | *data | protobuf.cpp:167:2:167:4 | MergePartialFromString output argument | provenance | MaD:288 | +| protobuf.cpp:173:19:173:38 | call to source | protobuf.cpp:174:21:174:31 | *call to data | provenance | TaintFunction | +| protobuf.cpp:174:2:174:4 | ParseFromArray output argument | protobuf.cpp:175:7:175:9 | msg | provenance | | +| protobuf.cpp:174:21:174:31 | *call to data | protobuf.cpp:174:2:174:4 | ParseFromArray output argument | provenance | MaD:290 | +| protobuf.cpp:180:19:180:38 | call to source | protobuf.cpp:181:28:181:38 | *call to data | provenance | TaintFunction | +| protobuf.cpp:181:2:181:4 | ParsePartialFromArray output argument | protobuf.cpp:182:7:182:9 | msg | provenance | | +| protobuf.cpp:181:28:181:38 | *call to data | protobuf.cpp:181:2:181:4 | ParsePartialFromArray output argument | provenance | MaD:298 | +| protobuf.cpp:187:20:187:37 | call to source | protobuf.cpp:187:20:187:37 | call to source | provenance | | +| protobuf.cpp:187:20:187:37 | call to source | protobuf.cpp:188:20:188:23 | *data | provenance | | +| protobuf.cpp:188:2:188:4 | ParseFromCord output argument | protobuf.cpp:189:7:189:9 | msg | provenance | | +| protobuf.cpp:188:20:188:23 | *data | protobuf.cpp:188:2:188:4 | ParseFromCord output argument | provenance | MaD:293 | +| protobuf.cpp:194:20:194:37 | call to source | protobuf.cpp:194:20:194:37 | call to source | provenance | | +| protobuf.cpp:194:20:194:37 | call to source | protobuf.cpp:195:27:195:30 | *data | provenance | | +| protobuf.cpp:195:2:195:4 | ParsePartialFromCord output argument | protobuf.cpp:196:7:196:9 | msg | provenance | | +| protobuf.cpp:195:27:195:30 | *data | protobuf.cpp:195:2:195:4 | ParsePartialFromCord output argument | provenance | MaD:301 | +| protobuf.cpp:201:20:201:37 | call to source | protobuf.cpp:201:20:201:37 | call to source | provenance | | +| protobuf.cpp:201:20:201:37 | call to source | protobuf.cpp:202:20:202:23 | *data | provenance | | +| protobuf.cpp:202:2:202:4 | MergeFromCord output argument | protobuf.cpp:203:7:203:9 | msg | provenance | | +| protobuf.cpp:202:20:202:23 | *data | protobuf.cpp:202:2:202:4 | MergeFromCord output argument | provenance | MaD:282 | +| protobuf.cpp:208:20:208:37 | call to source | protobuf.cpp:208:20:208:37 | call to source | provenance | | +| protobuf.cpp:208:20:208:37 | call to source | protobuf.cpp:209:27:209:30 | *data | provenance | | +| protobuf.cpp:209:2:209:4 | MergePartialFromCord output argument | protobuf.cpp:210:7:210:9 | msg | provenance | | +| protobuf.cpp:209:27:209:30 | *data | protobuf.cpp:209:2:209:4 | MergePartialFromCord output argument | provenance | MaD:287 | +| protobuf.cpp:215:20:215:39 | call to source | protobuf.cpp:215:20:215:39 | call to source | provenance | | +| protobuf.cpp:215:20:215:39 | call to source | protobuf.cpp:216:23:216:25 | *& ... | provenance | | +| protobuf.cpp:216:2:216:4 | ParseFromIstream output argument | protobuf.cpp:217:7:217:9 | msg | provenance | | +| protobuf.cpp:216:23:216:25 | *& ... | protobuf.cpp:216:2:216:4 | ParseFromIstream output argument | provenance | MaD:294 | +| protobuf.cpp:222:20:222:39 | call to source | protobuf.cpp:222:20:222:39 | call to source | provenance | | +| protobuf.cpp:222:20:222:39 | call to source | protobuf.cpp:223:30:223:32 | *& ... | provenance | | +| protobuf.cpp:223:2:223:4 | ParsePartialFromIstream output argument | protobuf.cpp:224:7:224:9 | msg | provenance | | +| protobuf.cpp:223:30:223:32 | *& ... | protobuf.cpp:223:2:223:4 | ParsePartialFromIstream output argument | provenance | MaD:302 | +| protobuf.cpp:229:27:229:53 | call to source | protobuf.cpp:229:27:229:53 | call to source | provenance | | +| protobuf.cpp:229:27:229:53 | call to source | protobuf.cpp:230:30:230:32 | *& ... | provenance | | +| protobuf.cpp:230:2:230:4 | ParseFromZeroCopyStream output argument | protobuf.cpp:231:7:231:9 | msg | provenance | | +| protobuf.cpp:230:30:230:32 | *& ... | protobuf.cpp:230:2:230:4 | ParseFromZeroCopyStream output argument | provenance | MaD:297 | +| protobuf.cpp:236:27:236:53 | call to source | protobuf.cpp:236:27:236:53 | call to source | provenance | | +| protobuf.cpp:236:27:236:53 | call to source | protobuf.cpp:237:37:237:39 | *& ... | provenance | | +| protobuf.cpp:237:2:237:4 | ParsePartialFromZeroCopyStream output argument | protobuf.cpp:238:7:238:9 | msg | provenance | | +| protobuf.cpp:237:37:237:39 | *& ... | protobuf.cpp:237:2:237:4 | ParsePartialFromZeroCopyStream output argument | provenance | MaD:305 | +| protobuf.cpp:243:27:243:53 | call to source | protobuf.cpp:243:27:243:53 | call to source | provenance | | +| protobuf.cpp:243:27:243:53 | call to source | protobuf.cpp:244:37:244:39 | *& ... | provenance | | +| protobuf.cpp:244:2:244:4 | ParseFromBoundedZeroCopyStream output argument | protobuf.cpp:245:7:245:9 | msg | provenance | | +| protobuf.cpp:244:37:244:39 | *& ... | protobuf.cpp:244:2:244:4 | ParseFromBoundedZeroCopyStream output argument | provenance | MaD:291 | +| protobuf.cpp:250:27:250:53 | call to source | protobuf.cpp:250:27:250:53 | call to source | provenance | | +| protobuf.cpp:250:27:250:53 | call to source | protobuf.cpp:251:44:251:46 | *& ... | provenance | | +| protobuf.cpp:251:2:251:4 | ParsePartialFromBoundedZeroCopyStream output argument | protobuf.cpp:252:7:252:9 | msg | provenance | | +| protobuf.cpp:251:44:251:46 | *& ... | protobuf.cpp:251:2:251:4 | ParsePartialFromBoundedZeroCopyStream output argument | provenance | MaD:299 | +| protobuf.cpp:257:27:257:53 | call to source | protobuf.cpp:257:27:257:53 | call to source | provenance | | +| protobuf.cpp:257:27:257:53 | call to source | protobuf.cpp:258:37:258:39 | *& ... | provenance | | +| protobuf.cpp:258:2:258:4 | MergeFromBoundedZeroCopyStream output argument | protobuf.cpp:259:7:259:9 | msg | provenance | | +| protobuf.cpp:258:37:258:39 | *& ... | protobuf.cpp:258:2:258:4 | MergeFromBoundedZeroCopyStream output argument | provenance | MaD:280 | +| protobuf.cpp:264:27:264:53 | call to source | protobuf.cpp:264:27:264:53 | call to source | provenance | | +| protobuf.cpp:264:27:264:53 | call to source | protobuf.cpp:265:44:265:46 | *& ... | provenance | | +| protobuf.cpp:265:2:265:4 | MergePartialFromBoundedZeroCopyStream output argument | protobuf.cpp:266:7:266:9 | msg | provenance | | +| protobuf.cpp:265:44:265:46 | *& ... | protobuf.cpp:265:2:265:4 | MergePartialFromBoundedZeroCopyStream output argument | provenance | MaD:285 | +| protobuf.cpp:271:24:271:47 | call to source | protobuf.cpp:271:24:271:47 | call to source | provenance | | +| protobuf.cpp:271:24:271:47 | call to source | protobuf.cpp:272:27:272:29 | *& ... | provenance | | +| protobuf.cpp:272:2:272:4 | ParseFromCodedStream output argument | protobuf.cpp:273:7:273:9 | msg | provenance | | +| protobuf.cpp:272:27:272:29 | *& ... | protobuf.cpp:272:2:272:4 | ParseFromCodedStream output argument | provenance | MaD:292 | +| protobuf.cpp:278:24:278:47 | call to source | protobuf.cpp:278:24:278:47 | call to source | provenance | | +| protobuf.cpp:278:24:278:47 | call to source | protobuf.cpp:279:34:279:36 | *& ... | provenance | | +| protobuf.cpp:279:2:279:4 | ParsePartialFromCodedStream output argument | protobuf.cpp:280:7:280:9 | msg | provenance | | +| protobuf.cpp:279:34:279:36 | *& ... | protobuf.cpp:279:2:279:4 | ParsePartialFromCodedStream output argument | provenance | MaD:300 | +| protobuf.cpp:285:24:285:47 | call to source | protobuf.cpp:285:24:285:47 | call to source | provenance | | +| protobuf.cpp:285:24:285:47 | call to source | protobuf.cpp:286:27:286:29 | *& ... | provenance | | +| protobuf.cpp:286:2:286:4 | MergeFromCodedStream output argument | protobuf.cpp:287:7:287:9 | msg | provenance | | +| protobuf.cpp:286:27:286:29 | *& ... | protobuf.cpp:286:2:286:4 | MergeFromCodedStream output argument | provenance | MaD:281 | +| protobuf.cpp:292:24:292:47 | call to source | protobuf.cpp:292:24:292:47 | call to source | provenance | | +| protobuf.cpp:292:24:292:47 | call to source | protobuf.cpp:293:34:293:36 | *& ... | provenance | | +| protobuf.cpp:293:2:293:4 | MergePartialFromCodedStream output argument | protobuf.cpp:294:7:294:9 | msg | provenance | | +| protobuf.cpp:293:34:293:36 | *& ... | protobuf.cpp:293:2:293:4 | MergePartialFromCodedStream output argument | provenance | MaD:286 | +| protobuf.cpp:307:15:307:28 | call to source | protobuf.cpp:307:15:307:28 | call to source | provenance | | +| protobuf.cpp:307:15:307:28 | call to source | protobuf.cpp:309:2:309:4 | *msg | provenance | | +| protobuf.cpp:309:2:309:4 | *msg | protobuf.cpp:309:24:309:27 | SerializeToString output argument | provenance | MaD:320 | +| protobuf.cpp:309:24:309:27 | SerializeToString output argument | protobuf.cpp:310:7:310:9 | out | provenance | | +| protobuf.cpp:314:15:314:28 | call to source | protobuf.cpp:314:15:314:28 | call to source | provenance | | +| protobuf.cpp:314:15:314:28 | call to source | protobuf.cpp:316:2:316:4 | *msg | provenance | | +| protobuf.cpp:316:2:316:4 | *msg | protobuf.cpp:316:31:316:34 | SerializePartialToString output argument | provenance | MaD:314 | +| protobuf.cpp:316:31:316:34 | SerializePartialToString output argument | protobuf.cpp:317:7:317:9 | out | provenance | | +| protobuf.cpp:321:15:321:28 | call to source | protobuf.cpp:321:15:321:28 | call to source | provenance | | +| protobuf.cpp:321:15:321:28 | call to source | protobuf.cpp:323:2:323:4 | *msg | provenance | | +| protobuf.cpp:323:2:323:4 | *msg | protobuf.cpp:323:21:323:24 | AppendToString output argument | provenance | MaD:279 | +| protobuf.cpp:323:21:323:24 | AppendToString output argument | protobuf.cpp:324:7:324:9 | out | provenance | | +| protobuf.cpp:328:15:328:28 | call to source | protobuf.cpp:328:15:328:28 | call to source | provenance | | +| protobuf.cpp:328:15:328:28 | call to source | protobuf.cpp:330:2:330:4 | *msg | provenance | | +| protobuf.cpp:330:2:330:4 | *msg | protobuf.cpp:330:28:330:31 | AppendPartialToString output argument | provenance | MaD:277 | +| protobuf.cpp:330:28:330:31 | AppendPartialToString output argument | protobuf.cpp:331:7:331:9 | out | provenance | | +| protobuf.cpp:335:15:335:28 | call to source | protobuf.cpp:335:15:335:28 | call to source | provenance | | +| protobuf.cpp:335:15:335:28 | call to source | protobuf.cpp:337:2:337:4 | *msg | provenance | | +| protobuf.cpp:337:2:337:4 | *msg | protobuf.cpp:337:24:337:27 | SerializeToString output argument | provenance | MaD:320 | +| protobuf.cpp:337:24:337:27 | SerializeToString output argument | protobuf.cpp:338:7:338:9 | out | provenance | | +| protobuf.cpp:342:15:342:28 | call to source | protobuf.cpp:342:15:342:28 | call to source | provenance | | +| protobuf.cpp:342:15:342:28 | call to source | protobuf.cpp:344:2:344:4 | *msg | provenance | | +| protobuf.cpp:344:2:344:4 | *msg | protobuf.cpp:344:31:344:34 | SerializePartialToString output argument | provenance | MaD:314 | +| protobuf.cpp:344:31:344:34 | SerializePartialToString output argument | protobuf.cpp:345:7:345:9 | out | provenance | | +| protobuf.cpp:349:15:349:28 | call to source | protobuf.cpp:349:15:349:28 | call to source | provenance | | +| protobuf.cpp:349:15:349:28 | call to source | protobuf.cpp:351:2:351:4 | *msg | provenance | | +| protobuf.cpp:351:2:351:4 | *msg | protobuf.cpp:351:21:351:24 | AppendToString output argument | provenance | MaD:279 | +| protobuf.cpp:351:21:351:24 | AppendToString output argument | protobuf.cpp:352:7:352:9 | out | provenance | | +| protobuf.cpp:356:15:356:28 | call to source | protobuf.cpp:356:15:356:28 | call to source | provenance | | +| protobuf.cpp:356:15:356:28 | call to source | protobuf.cpp:358:2:358:4 | *msg | provenance | | +| protobuf.cpp:358:2:358:4 | *msg | protobuf.cpp:358:28:358:31 | AppendPartialToString output argument | provenance | MaD:277 | +| protobuf.cpp:358:28:358:31 | AppendPartialToString output argument | protobuf.cpp:359:7:359:9 | out | provenance | | +| protobuf.cpp:363:15:363:28 | call to source | protobuf.cpp:363:15:363:28 | call to source | provenance | | +| protobuf.cpp:363:15:363:28 | call to source | protobuf.cpp:365:2:365:4 | *msg | provenance | | +| protobuf.cpp:365:2:365:4 | *msg | protobuf.cpp:365:23:365:25 | SerializeToArray output argument | provenance | MaD:316 | +| protobuf.cpp:365:23:365:25 | SerializeToArray output argument | protobuf.cpp:366:7:366:10 | * ... | provenance | | +| protobuf.cpp:370:15:370:28 | call to source | protobuf.cpp:370:15:370:28 | call to source | provenance | | +| protobuf.cpp:370:15:370:28 | call to source | protobuf.cpp:372:2:372:4 | *msg | provenance | | +| protobuf.cpp:372:2:372:4 | *msg | protobuf.cpp:372:30:372:32 | SerializePartialToArray output argument | provenance | MaD:310 | +| protobuf.cpp:372:30:372:32 | SerializePartialToArray output argument | protobuf.cpp:373:7:373:10 | * ... | provenance | | +| protobuf.cpp:377:15:377:28 | call to source | protobuf.cpp:377:15:377:28 | call to source | provenance | | +| protobuf.cpp:377:15:377:28 | call to source | protobuf.cpp:379:2:379:4 | *msg | provenance | | +| protobuf.cpp:379:2:379:4 | *msg | protobuf.cpp:379:22:379:25 | SerializeToCord output argument | provenance | MaD:318 | +| protobuf.cpp:379:22:379:25 | SerializeToCord output argument | protobuf.cpp:380:7:380:9 | out | provenance | | +| protobuf.cpp:384:15:384:28 | call to source | protobuf.cpp:384:15:384:28 | call to source | provenance | | +| protobuf.cpp:384:15:384:28 | call to source | protobuf.cpp:386:2:386:4 | *msg | provenance | | +| protobuf.cpp:386:2:386:4 | *msg | protobuf.cpp:386:29:386:32 | SerializePartialToCord output argument | provenance | MaD:312 | +| protobuf.cpp:386:29:386:32 | SerializePartialToCord output argument | protobuf.cpp:387:7:387:9 | out | provenance | | +| protobuf.cpp:391:15:391:28 | call to source | protobuf.cpp:391:15:391:28 | call to source | provenance | | +| protobuf.cpp:391:15:391:28 | call to source | protobuf.cpp:393:2:393:4 | *msg | provenance | | +| protobuf.cpp:393:2:393:4 | *msg | protobuf.cpp:393:19:393:22 | AppendToCord output argument | provenance | MaD:278 | +| protobuf.cpp:393:19:393:22 | AppendToCord output argument | protobuf.cpp:394:7:394:9 | out | provenance | | +| protobuf.cpp:398:15:398:28 | call to source | protobuf.cpp:398:15:398:28 | call to source | provenance | | +| protobuf.cpp:398:15:398:28 | call to source | protobuf.cpp:400:2:400:4 | *msg | provenance | | +| protobuf.cpp:400:2:400:4 | *msg | protobuf.cpp:400:26:400:29 | AppendPartialToCord output argument | provenance | MaD:276 | +| protobuf.cpp:400:26:400:29 | AppendPartialToCord output argument | protobuf.cpp:401:7:401:9 | out | provenance | | +| protobuf.cpp:405:15:405:28 | call to source | protobuf.cpp:405:15:405:28 | call to source | provenance | | +| protobuf.cpp:405:15:405:28 | call to source | protobuf.cpp:407:2:407:4 | *msg | provenance | | +| protobuf.cpp:407:2:407:4 | *msg | protobuf.cpp:407:25:407:28 | SerializeToOstream output argument | provenance | MaD:319 | +| protobuf.cpp:407:25:407:28 | SerializeToOstream output argument | protobuf.cpp:408:7:408:9 | out | provenance | | +| protobuf.cpp:412:15:412:28 | call to source | protobuf.cpp:412:15:412:28 | call to source | provenance | | +| protobuf.cpp:412:15:412:28 | call to source | protobuf.cpp:414:2:414:4 | *msg | provenance | | +| protobuf.cpp:414:2:414:4 | *msg | protobuf.cpp:414:32:414:35 | SerializePartialToOstream output argument | provenance | MaD:313 | +| protobuf.cpp:414:32:414:35 | SerializePartialToOstream output argument | protobuf.cpp:415:7:415:9 | out | provenance | | +| protobuf.cpp:419:15:419:28 | call to source | protobuf.cpp:419:15:419:28 | call to source | provenance | | +| protobuf.cpp:419:15:419:28 | call to source | protobuf.cpp:421:2:421:4 | *msg | provenance | | +| protobuf.cpp:421:2:421:4 | *msg | protobuf.cpp:421:32:421:35 | SerializeToZeroCopyStream output argument | provenance | MaD:321 | +| protobuf.cpp:421:32:421:35 | SerializeToZeroCopyStream output argument | protobuf.cpp:422:7:422:9 | out | provenance | | +| protobuf.cpp:426:15:426:28 | call to source | protobuf.cpp:426:15:426:28 | call to source | provenance | | +| protobuf.cpp:426:15:426:28 | call to source | protobuf.cpp:428:2:428:4 | *msg | provenance | | +| protobuf.cpp:428:2:428:4 | *msg | protobuf.cpp:428:39:428:42 | SerializePartialToZeroCopyStream output argument | provenance | MaD:315 | +| protobuf.cpp:428:39:428:42 | SerializePartialToZeroCopyStream output argument | protobuf.cpp:429:7:429:9 | out | provenance | | +| protobuf.cpp:433:15:433:28 | call to source | protobuf.cpp:433:15:433:28 | call to source | provenance | | +| protobuf.cpp:433:15:433:28 | call to source | protobuf.cpp:435:2:435:4 | *msg | provenance | | +| protobuf.cpp:435:2:435:4 | *msg | protobuf.cpp:435:29:435:32 | SerializeToCodedStream output argument | provenance | MaD:317 | +| protobuf.cpp:435:29:435:32 | SerializeToCodedStream output argument | protobuf.cpp:436:7:436:9 | out | provenance | | +| protobuf.cpp:440:15:440:28 | call to source | protobuf.cpp:440:15:440:28 | call to source | provenance | | +| protobuf.cpp:440:15:440:28 | call to source | protobuf.cpp:442:2:442:4 | *msg | provenance | | +| protobuf.cpp:442:2:442:4 | *msg | protobuf.cpp:442:36:442:39 | SerializePartialToCodedStream output argument | provenance | MaD:311 | +| protobuf.cpp:442:36:442:39 | SerializePartialToCodedStream output argument | protobuf.cpp:443:7:443:9 | out | provenance | | +| protobuf.cpp:449:15:449:28 | call to source | protobuf.cpp:449:15:449:28 | call to source | provenance | | +| protobuf.cpp:449:15:449:28 | call to source | protobuf.cpp:450:7:450:9 | *msg | provenance | | +| protobuf.cpp:450:7:450:9 | *msg | protobuf.cpp:450:11:450:27 | call to SerializeAsString | provenance | MaD:307 | +| protobuf.cpp:454:15:454:28 | call to source | protobuf.cpp:454:15:454:28 | call to source | provenance | | +| protobuf.cpp:454:15:454:28 | call to source | protobuf.cpp:455:7:455:9 | *msg | provenance | | +| protobuf.cpp:455:7:455:9 | *msg | protobuf.cpp:455:11:455:34 | call to SerializePartialAsString | provenance | MaD:309 | +| protobuf.cpp:459:15:459:28 | call to source | protobuf.cpp:459:15:459:28 | call to source | provenance | | +| protobuf.cpp:459:15:459:28 | call to source | protobuf.cpp:460:7:460:9 | *msg | provenance | | +| protobuf.cpp:460:7:460:9 | *msg | protobuf.cpp:460:11:460:25 | call to SerializeAsCord | provenance | MaD:306 | +| protobuf.cpp:464:15:464:28 | call to source | protobuf.cpp:464:15:464:28 | call to source | provenance | | +| protobuf.cpp:464:15:464:28 | call to source | protobuf.cpp:465:7:465:9 | *msg | provenance | | +| protobuf.cpp:465:7:465:9 | *msg | protobuf.cpp:465:11:465:32 | call to SerializePartialAsCord | provenance | MaD:308 | | 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:48 | @@ -195,27 +1261,27 @@ edges | test.cpp:133:10:133:18 | call to ymlSource | test.cpp:134:45:134:45 | x | provenance | | | test.cpp:134:13:134:43 | call to templateFunction | test.cpp:134:13:134:43 | call to templateFunction | provenance | | | test.cpp:134:13:134:43 | call to templateFunction | test.cpp:135:10:135:10 | y | provenance | Sink:MaD:3 | -| test.cpp:134:45:134:45 | x | test.cpp:134:13:134:43 | call to templateFunction | provenance | MaD:91 | +| test.cpp:134:45:134:45 | x | test.cpp:134:13:134:43 | call to templateFunction | provenance | MaD:93 | | test.cpp:146:10:146:18 | call to ymlSource | test.cpp:146:10:146:18 | call to ymlSource | provenance | Src:MaD:48 | | test.cpp:146:10:146:18 | call to ymlSource | test.cpp:148:26:148:26 | x | provenance | | | test.cpp:148:10:148:27 | call to function | test.cpp:148:10:148:27 | call to function | provenance | | | test.cpp:148:10:148:27 | call to function | test.cpp:149:10:149:10 | z | provenance | Sink:MaD:3 | -| test.cpp:148:26:148:26 | x | test.cpp:148:10:148:27 | call to function | provenance | MaD:92 | +| test.cpp:148:26:148:26 | x | test.cpp:148:10:148:27 | call to function | provenance | MaD:94 | | test.cpp:155:10:155:18 | call to ymlSource | test.cpp:155:10:155:18 | call to ymlSource | provenance | Src:MaD:48 | | test.cpp:155:10:155:18 | call to ymlSource | test.cpp:157:26:157:26 | x | provenance | | | test.cpp:157:13:157:20 | call to function | test.cpp:157:13:157:20 | call to function | provenance | | | test.cpp:157:13:157:20 | call to function | test.cpp:158:10:158:10 | z | provenance | Sink:MaD:3 | -| test.cpp:157:26:157:26 | x | test.cpp:157:13:157:20 | call to function | provenance | MaD:92 | +| test.cpp:157:26:157:26 | x | test.cpp:157:13:157:20 | call to function | provenance | MaD:94 | | test.cpp:164:34:164:34 | x | test.cpp:165:69:165:69 | x | provenance | | | test.cpp:165:12:165:64 | call to templateFunction2 | test.cpp:164:7:164:7 | *templateFunction3 | provenance | | | test.cpp:165:12:165:64 | call to templateFunction2 | test.cpp:165:12:165:64 | call to templateFunction2 | provenance | | -| test.cpp:165:69:165:69 | x | test.cpp:165:12:165:64 | call to templateFunction2 | provenance | MaD:90 | +| test.cpp:165:69:165:69 | x | test.cpp:165:12:165:64 | call to templateFunction2 | provenance | MaD:92 | | test.cpp:170:10:170:18 | call to ymlSource | test.cpp:170:10:170:18 | call to ymlSource | provenance | Src:MaD:48 | | test.cpp:170:10:170:18 | call to ymlSource | test.cpp:172:51:172:51 | x | provenance | | | test.cpp:172:13:172:44 | call to templateFunction3 | test.cpp:172:13:172:44 | call to templateFunction3 | provenance | | | test.cpp:172:13:172:44 | call to templateFunction3 | test.cpp:173:10:173:10 | y | provenance | Sink:MaD:3 | | test.cpp:172:51:172:51 | x | test.cpp:164:34:164:34 | x | provenance | | -| test.cpp:172:51:172:51 | x | test.cpp:172:13:172:44 | call to templateFunction3 | provenance | MaD:90 | +| test.cpp:172:51:172:51 | x | test.cpp:172:13:172:44 | call to templateFunction3 | provenance | MaD:92 | | test.cpp:186:2:186:2 | *s [post update] [myField] | test.cpp:187:33:187:34 | *& ... [myField] | provenance | | | test.cpp:186:2:186:24 | ... = ... | test.cpp:186:2:186:2 | *s [post update] [myField] | provenance | | | test.cpp:186:14:186:22 | call to ymlSource | test.cpp:186:2:186:24 | ... = ... | provenance | Src:MaD:48 | @@ -229,15 +1295,15 @@ edges | test.cpp:200:10:200:33 | call to read_field_from_struct_2 | test.cpp:201:10:201:10 | x | provenance | Sink:MaD:3 | | test.cpp:200:35:200:36 | *& ... [myField] | test.cpp:200:10:200:33 | call to read_field_from_struct_2 | provenance | MaD:83 | | test.cpp:216:3:216:4 | get_ptr output argument [value] | test.cpp:217:11:217:12 | *rf [value] | provenance | | -| test.cpp:216:3:216:28 | ... = ... | test.cpp:216:3:216:4 | get_ptr output argument [value] | provenance | MaD:89 | +| test.cpp:216:3:216:28 | ... = ... | test.cpp:216:3:216:4 | get_ptr output argument [value] | provenance | MaD:91 | | test.cpp:216:18:216:26 | call to ymlSource | test.cpp:216:3:216:28 | ... = ... | provenance | Src:MaD:48 | | test.cpp:217:11:217:12 | *rf [value] | test.cpp:217:14:217:18 | value | provenance | | | test.cpp:217:14:217:18 | value | test.cpp:217:14:217:18 | value | provenance | | | test.cpp:217:14:217:18 | value | test.cpp:218:11:218:11 | x | provenance | Sink:MaD:3 | | test.cpp:222:3:222:3 | operator[] output argument | test.cpp:223:12:223:12 | *s | provenance | | -| test.cpp:222:3:222:20 | ... = ... | test.cpp:222:3:222:3 | operator[] output argument | provenance | MaD:88 | +| test.cpp:222:3:222:20 | ... = ... | test.cpp:222:3:222:3 | operator[] output argument | provenance | MaD:90 | | test.cpp:222:10:222:18 | call to ymlSource | test.cpp:222:3:222:20 | ... = ... | provenance | Src:MaD:48 | -| test.cpp:223:12:223:12 | *s | test.cpp:223:13:223:15 | call to operator[] | provenance | MaD:87 | +| test.cpp:223:12:223:12 | *s | test.cpp:223:13:223:15 | call to operator[] | provenance | MaD:89 | | test.cpp:223:13:223:15 | call to operator[] | test.cpp:223:13:223:15 | call to operator[] | provenance | | | test.cpp:223:13:223:15 | call to operator[] | test.cpp:224:11:224:11 | c | provenance | Sink:MaD:3 | | test.cpp:242:29:242:29 | *s [value] | test.cpp:243:10:243:10 | *s [value] | provenance | | @@ -312,6 +1378,118 @@ edges | test.cpp:329:12:329:16 | value | test.cpp:329:12:329:16 | value | provenance | Sink:MaD:3 | | test.cpp:331:10:331:19 | * ... | test.cpp:331:10:331:19 | * ... | provenance | Sink:MaD:3 | | test.cpp:331:11:331:11 | *s [*pointer] | test.cpp:331:10:331:19 | * ... | provenance | | +| test.cpp:341:30:341:32 | arg | test.cpp:342:5:342:17 | ... = ... | provenance | | +| test.cpp:342:5:342:8 | *this [post update] [s] | test.cpp:341:3:341:22 | *this [Return] [s] | provenance | | +| test.cpp:342:5:342:17 | ... = ... | test.cpp:342:5:342:8 | *this [post update] [s] | provenance | | +| test.cpp:345:38:345:40 | arg | test.cpp:346:5:346:18 | ... = ... | provenance | | +| test.cpp:346:5:346:8 | *this [post update] [ul] | test.cpp:345:3:345:22 | *this [Return] [ul] | provenance | | +| test.cpp:346:5:346:18 | ... = ... | test.cpp:346:5:346:8 | *this [post update] [ul] | provenance | | +| test.cpp:362:15:362:23 | call to ymlSource | test.cpp:362:15:362:25 | call to ymlSource | provenance | Src:MaD:48 | +| test.cpp:362:15:362:25 | call to ymlSource | test.cpp:363:15:363:15 | *x | provenance | | +| test.cpp:363:5:363:5 | forward output argument [s] | test.cpp:365:30:365:30 | *f [s] | provenance | | +| test.cpp:363:5:363:5 | forward output argument [ul] | test.cpp:365:30:365:30 | *f [ul] | provenance | | +| test.cpp:363:15:363:15 | *x | test.cpp:341:30:341:32 | arg | provenance | | +| test.cpp:363:15:363:15 | *x | test.cpp:345:38:345:40 | arg | provenance | | +| test.cpp:363:15:363:15 | *x | test.cpp:363:5:363:5 | forward output argument [s] | provenance | | +| test.cpp:363:15:363:15 | *x | test.cpp:363:5:363:5 | forward output argument [ul] | provenance | | +| test.cpp:365:30:365:30 | *f [s] | test.cpp:365:32:365:34 | call to get [s] | provenance | MaD:88 | +| test.cpp:365:30:365:30 | *f [ul] | test.cpp:365:32:365:34 | call to get [ul] | provenance | MaD:88 | +| test.cpp:365:32:365:34 | call to get [s] | test.cpp:365:32:365:34 | call to get [s] | provenance | | +| test.cpp:365:32:365:34 | call to get [s] | test.cpp:366:13:366:13 | *c [s] | provenance | | +| test.cpp:365:32:365:34 | call to get [ul] | test.cpp:365:32:365:34 | call to get [ul] | provenance | | +| test.cpp:365:32:365:34 | call to get [ul] | test.cpp:367:13:367:13 | *c [ul] | provenance | | +| test.cpp:366:13:366:13 | *c [s] | test.cpp:366:13:366:15 | s | provenance | | +| test.cpp:366:13:366:13 | *c [s] | test.cpp:366:15:366:15 | s | provenance | Sink:MaD:3 | +| test.cpp:366:13:366:15 | s | test.cpp:366:15:366:15 | s | provenance | Sink:MaD:3 | +| test.cpp:367:13:367:13 | *c [ul] | test.cpp:367:13:367:16 | ul | provenance | | +| test.cpp:367:13:367:13 | *c [ul] | test.cpp:367:15:367:16 | ul | provenance | Sink:MaD:3 | +| test.cpp:367:13:367:16 | ul | test.cpp:367:15:367:16 | ul | provenance | Sink:MaD:3 | +| test.cpp:371:24:371:32 | call to ymlSource | test.cpp:371:24:371:34 | call to ymlSource | provenance | Src:MaD:48 | +| test.cpp:371:24:371:34 | call to ymlSource | test.cpp:372:15:372:16 | *ul | provenance | | +| test.cpp:372:5:372:5 | forward output argument [s] | test.cpp:374:30:374:30 | *f [s] | provenance | | +| test.cpp:372:5:372:5 | forward output argument [ul] | test.cpp:374:30:374:30 | *f [ul] | provenance | | +| test.cpp:372:15:372:16 | *ul | test.cpp:341:30:341:32 | arg | provenance | | +| test.cpp:372:15:372:16 | *ul | test.cpp:345:38:345:40 | arg | provenance | | +| test.cpp:372:15:372:16 | *ul | test.cpp:372:5:372:5 | forward output argument [s] | provenance | | +| test.cpp:372:15:372:16 | *ul | test.cpp:372:5:372:5 | forward output argument [ul] | provenance | | +| test.cpp:374:30:374:30 | *f [s] | test.cpp:374:32:374:34 | call to get [s] | provenance | MaD:88 | +| test.cpp:374:30:374:30 | *f [ul] | test.cpp:374:32:374:34 | call to get [ul] | provenance | MaD:88 | +| test.cpp:374:32:374:34 | call to get [s] | test.cpp:374:32:374:34 | call to get [s] | provenance | | +| test.cpp:374:32:374:34 | call to get [s] | test.cpp:375:13:375:13 | *c [s] | provenance | | +| test.cpp:374:32:374:34 | call to get [ul] | test.cpp:374:32:374:34 | call to get [ul] | provenance | | +| test.cpp:374:32:374:34 | call to get [ul] | test.cpp:376:13:376:13 | *c [ul] | provenance | | +| test.cpp:375:13:375:13 | *c [s] | test.cpp:375:13:375:15 | s | provenance | | +| test.cpp:375:13:375:13 | *c [s] | test.cpp:375:15:375:15 | s | provenance | Sink:MaD:3 | +| test.cpp:375:13:375:15 | s | test.cpp:375:15:375:15 | s | provenance | Sink:MaD:3 | +| test.cpp:376:13:376:13 | *c [ul] | test.cpp:376:13:376:16 | ul | provenance | | +| test.cpp:376:13:376:13 | *c [ul] | test.cpp:376:15:376:16 | ul | provenance | Sink:MaD:3 | +| test.cpp:376:13:376:16 | ul | test.cpp:376:15:376:16 | ul | provenance | Sink:MaD:3 | +| test.cpp:397:11:397:19 | call to ymlSource | test.cpp:397:11:397:19 | call to ymlSource | provenance | Src:MaD:48 | +| test.cpp:397:11:397:19 | call to ymlSource | test.cpp:398:38:398:38 | x | provenance | | +| test.cpp:398:15:398:36 | call to makeForwarded [x] | test.cpp:398:15:398:36 | call to makeForwarded [x] | provenance | | +| test.cpp:398:15:398:36 | call to makeForwarded [x] | test.cpp:399:11:399:11 | *e [x] | provenance | | +| test.cpp:398:38:398:38 | x | test.cpp:398:15:398:36 | call to makeForwarded [x] | provenance | | +| test.cpp:399:11:399:11 | *e [x] | test.cpp:399:13:399:13 | x | provenance | | +| test.cpp:399:13:399:13 | x | test.cpp:399:13:399:13 | x | provenance | Sink:MaD:3 | +| test.cpp:404:11:404:19 | call to ymlSource | test.cpp:404:11:404:19 | call to ymlSource | provenance | Src:MaD:48 | +| test.cpp:404:11:404:19 | call to ymlSource | test.cpp:405:22:405:22 | x | provenance | | +| test.cpp:405:3:405:3 | forwardToElement output argument [x] | test.cpp:406:15:406:15 | *f [x] | provenance | | +| test.cpp:405:22:405:22 | x | test.cpp:405:3:405:3 | forwardToElement output argument [x] | provenance | | +| test.cpp:406:15:406:15 | *f [x] | test.cpp:406:17:406:19 | call to get [x] | provenance | MaD:88 | +| test.cpp:406:17:406:19 | call to get [x] | test.cpp:406:17:406:19 | call to get [x] | provenance | | +| test.cpp:406:17:406:19 | call to get [x] | test.cpp:407:11:407:11 | *e [x] | provenance | | +| test.cpp:407:11:407:11 | *e [x] | test.cpp:407:13:407:13 | x | provenance | | +| test.cpp:407:13:407:13 | x | test.cpp:407:13:407:13 | x | provenance | Sink:MaD:3 | +| test.cpp:412:11:412:19 | call to ymlSource | test.cpp:412:11:412:19 | call to ymlSource | provenance | Src:MaD:48 | +| test.cpp:412:11:412:19 | call to ymlSource | test.cpp:413:16:413:16 | *x | provenance | | +| test.cpp:413:3:413:3 | emplace output argument [element, x] | test.cpp:415:15:415:15 | *c [element, x] | provenance | | +| test.cpp:413:16:413:16 | *x | test.cpp:413:3:413:3 | emplace output argument [element, x] | provenance | | +| test.cpp:415:15:415:15 | *c [element, x] | test.cpp:415:20:415:22 | call to get [x] | provenance | MaD:87 | +| test.cpp:415:20:415:22 | call to get [x] | test.cpp:415:20:415:22 | call to get [x] | provenance | | +| test.cpp:415:20:415:22 | call to get [x] | test.cpp:416:11:416:11 | *e [x] | provenance | | +| test.cpp:416:11:416:11 | *e [x] | test.cpp:416:13:416:13 | x | provenance | | +| test.cpp:416:13:416:13 | x | test.cpp:416:13:416:13 | x | provenance | Sink:MaD:3 | +| test.cpp:426:11:426:19 | call to ymlSource | test.cpp:426:11:426:19 | call to ymlSource | provenance | Src:MaD:48 | +| test.cpp:426:11:426:19 | call to ymlSource | test.cpp:427:16:427:16 | *x | provenance | | +| test.cpp:427:3:427:3 | emplace output argument [element, x] | test.cpp:429:34:429:34 | *c [element, x] | provenance | | +| test.cpp:427:16:427:16 | *x | test.cpp:427:3:427:3 | emplace output argument [element, x] | provenance | | +| test.cpp:429:34:429:34 | *c [element, x] | test.cpp:429:39:429:41 | call to get [x] | provenance | MaD:87 | +| test.cpp:429:39:429:41 | call to get [x] | test.cpp:429:39:429:41 | call to get [x] | provenance | | +| test.cpp:429:39:429:41 | call to get [x] | test.cpp:430:11:430:11 | *e [x] | provenance | | +| test.cpp:430:11:430:11 | *e [x] | test.cpp:430:13:430:13 | x | provenance | | +| test.cpp:430:13:430:13 | x | test.cpp:430:13:430:13 | x | provenance | Sink:MaD:3 | +| test.cpp:435:3:435:28 | *ElementWithOverloadedArity [post update] [x] | test.cpp:435:3:435:28 | *this [Return] [x] | provenance | | +| test.cpp:435:34:435:38 | first | test.cpp:435:45:435:49 | first | provenance | | +| test.cpp:435:45:435:49 | first | test.cpp:435:3:435:28 | *ElementWithOverloadedArity [post update] [x] | provenance | | +| test.cpp:436:3:436:28 | *ElementWithOverloadedArity [post update] [x] | test.cpp:436:3:436:28 | *this [Return] [x] | provenance | | +| test.cpp:436:39:436:44 | second | test.cpp:436:51:436:56 | second | provenance | | +| test.cpp:436:51:436:56 | second | test.cpp:436:3:436:28 | *ElementWithOverloadedArity [post update] [x] | provenance | | +| test.cpp:440:11:440:19 | call to ymlSource | test.cpp:440:11:440:19 | call to ymlSource | provenance | Src:MaD:48 | +| test.cpp:440:11:440:19 | call to ymlSource | test.cpp:443:18:443:18 | *x | provenance | | +| test.cpp:440:11:440:19 | call to ymlSource | test.cpp:453:21:453:21 | *x | provenance | | +| test.cpp:443:5:443:5 | emplace output argument [element, x] | test.cpp:444:13:444:13 | *c [element, x] | provenance | | +| test.cpp:443:18:443:18 | *x | test.cpp:435:34:435:38 | first | provenance | | +| test.cpp:443:18:443:18 | *x | test.cpp:443:5:443:5 | emplace output argument [element, x] | provenance | | +| test.cpp:444:13:444:13 | *c [element, x] | test.cpp:444:18:444:20 | *call to get [x] | provenance | MaD:87 | +| test.cpp:444:18:444:20 | *call to get [x] | test.cpp:444:21:444:21 | x | provenance | | +| test.cpp:444:21:444:21 | x | test.cpp:444:21:444:21 | x | provenance | Sink:MaD:3 | +| test.cpp:453:5:453:5 | emplace output argument [element, x] | test.cpp:454:13:454:13 | *c [element, x] | provenance | | +| test.cpp:453:21:453:21 | *x | test.cpp:436:39:436:44 | second | provenance | | +| test.cpp:453:21:453:21 | *x | test.cpp:453:5:453:5 | emplace output argument [element, x] | provenance | | +| test.cpp:454:13:454:13 | *c [element, x] | test.cpp:454:18:454:20 | *call to get [x] | provenance | MaD:87 | +| test.cpp:454:18:454:20 | *call to get [x] | test.cpp:454:21:454:21 | x | provenance | | +| test.cpp:454:21:454:21 | x | test.cpp:454:21:454:21 | x | provenance | Sink:MaD:3 | +| test.cpp:461:5:461:5 | forward output argument | test.cpp:462:13:462:13 | *f | provenance | | +| test.cpp:461:15:461:23 | call to ymlSource | test.cpp:461:15:461:23 | call to ymlSource | provenance | Src:MaD:48 | +| test.cpp:461:15:461:23 | call to ymlSource | test.cpp:461:15:461:25 | call to ymlSource | provenance | | +| test.cpp:461:15:461:25 | call to ymlSource | test.cpp:461:5:461:5 | forward output argument | provenance | | +| test.cpp:462:13:462:13 | *f | test.cpp:462:15:462:17 | call to get | provenance | MaD:88 | +| test.cpp:462:15:462:17 | call to get | test.cpp:462:15:462:17 | call to get | provenance | Sink:MaD:3 | +| test.cpp:466:5:466:5 | forward output argument | test.cpp:467:14:467:14 | *f | provenance | | +| test.cpp:466:15:466:26 | *call to ymlSourcePtr | test.cpp:466:15:466:28 | **call to ymlSourcePtr | provenance | | +| test.cpp:466:15:466:26 | call to ymlSourcePtr | test.cpp:466:15:466:26 | *call to ymlSourcePtr | provenance | Src:MaD:49 | +| test.cpp:466:15:466:28 | **call to ymlSourcePtr | test.cpp:466:5:466:5 | forward output argument | provenance | | +| test.cpp:467:14:467:14 | *f | test.cpp:467:13:467:20 | * ... | provenance | MaD:88 Sink: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:22:15:22:29 | call to GetCommandLineA | windows.cpp:22:15:22:29 | *call to GetCommandLineA | provenance | Src:MaD:5 | @@ -487,16 +1665,84 @@ edges | windows.cpp:1172:21:1172:24 | *guid | windows.cpp:1172:27:1172:29 | StringFromGUID2 output argument | provenance | MaD:76 | | windows.cpp:1172:27:1172:29 | StringFromGUID2 output argument | windows.cpp:1174:10:1174:13 | * ... | provenance | | nodes -| asio_streams.cpp:87:34:87:44 | read_until output argument | semmle.label | read_until output argument | -| asio_streams.cpp:91:7:91:17 | recv_buffer | semmle.label | recv_buffer | -| asio_streams.cpp:93:29:93:39 | recv_buffer | semmle.label | recv_buffer | -| asio_streams.cpp:97:37:97:44 | call to source | semmle.label | call to source | -| asio_streams.cpp:98:7:98:14 | send_str | semmle.label | send_str | -| asio_streams.cpp:100:44:100:62 | call to buffer | semmle.label | call to buffer | -| asio_streams.cpp:100:44:100:62 | call to buffer | semmle.label | call to buffer | -| asio_streams.cpp:100:64:100:71 | *send_str | semmle.label | *send_str | -| asio_streams.cpp:101:7:101:17 | send_buffer | semmle.label | send_buffer | -| asio_streams.cpp:103:29:103:39 | send_buffer | semmle.label | send_buffer | +| asio_streams.cpp:116:34:116:44 | read_until output argument | semmle.label | read_until output argument | +| asio_streams.cpp:120:7:120:17 | recv_buffer | semmle.label | recv_buffer | +| asio_streams.cpp:122:29:122:39 | recv_buffer | semmle.label | recv_buffer | +| asio_streams.cpp:126:37:126:44 | call to source | semmle.label | call to source | +| asio_streams.cpp:127:7:127:14 | send_str | semmle.label | send_str | +| asio_streams.cpp:129:44:129:62 | call to buffer | semmle.label | call to buffer | +| asio_streams.cpp:129:44:129:62 | call to buffer | semmle.label | call to buffer | +| asio_streams.cpp:129:64:129:71 | *send_str | semmle.label | *send_str | +| asio_streams.cpp:130:7:130:17 | send_buffer | semmle.label | send_buffer | +| asio_streams.cpp:132:29:132:39 | send_buffer | semmle.label | send_buffer | +| asio_streams.cpp:143:19:143:26 | call to source | semmle.label | call to source | +| asio_streams.cpp:145:29:145:36 | call to source | semmle.label | call to source | +| asio_streams.cpp:148:16:148:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:148:24:148:27 | *host | semmle.label | *host | +| asio_streams.cpp:149:16:149:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:149:24:149:27 | *host | semmle.label | *host | +| asio_streams.cpp:150:16:150:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:150:24:150:27 | *host | semmle.label | *host | +| asio_streams.cpp:151:16:151:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:151:24:151:27 | *host | semmle.label | *host | +| asio_streams.cpp:153:16:153:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:153:24:153:32 | host_view | semmle.label | host_view | +| asio_streams.cpp:154:16:154:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:154:24:154:32 | host_view | semmle.label | host_view | +| asio_streams.cpp:155:16:155:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:155:24:155:32 | host_view | semmle.label | host_view | +| asio_streams.cpp:156:16:156:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:156:24:156:32 | host_view | semmle.label | host_view | +| asio_streams.cpp:158:16:158:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:158:34:158:37 | *host | semmle.label | *host | +| asio_streams.cpp:159:16:159:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:159:34:159:37 | *host | semmle.label | *host | +| asio_streams.cpp:160:16:160:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:160:34:160:37 | *host | semmle.label | *host | +| asio_streams.cpp:161:16:161:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:161:34:161:37 | *host | semmle.label | *host | +| asio_streams.cpp:163:16:163:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:163:34:163:42 | host_view | semmle.label | host_view | +| asio_streams.cpp:164:16:164:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:164:34:164:42 | host_view | semmle.label | host_view | +| asio_streams.cpp:165:16:165:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:165:34:165:42 | host_view | semmle.label | host_view | +| asio_streams.cpp:166:16:166:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:166:34:166:42 | host_view | semmle.label | host_view | +| asio_streams.cpp:175:22:175:29 | call to source | semmle.label | call to source | +| asio_streams.cpp:177:32:177:39 | call to source | semmle.label | call to source | +| asio_streams.cpp:179:16:179:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:179:30:179:36 | *service | semmle.label | *service | +| asio_streams.cpp:180:16:180:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:180:30:180:36 | *service | semmle.label | *service | +| asio_streams.cpp:181:16:181:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:181:30:181:36 | *service | semmle.label | *service | +| asio_streams.cpp:182:16:182:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:182:30:182:36 | *service | semmle.label | *service | +| asio_streams.cpp:184:16:184:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:184:35:184:46 | service_view | semmle.label | service_view | +| asio_streams.cpp:185:16:185:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:185:35:185:46 | service_view | semmle.label | service_view | +| asio_streams.cpp:186:16:186:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:186:35:186:46 | service_view | semmle.label | service_view | +| asio_streams.cpp:187:16:187:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:187:35:187:46 | service_view | semmle.label | service_view | +| asio_streams.cpp:189:16:189:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:189:40:189:46 | *service | semmle.label | *service | +| asio_streams.cpp:190:16:190:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:190:40:190:46 | *service | semmle.label | *service | +| asio_streams.cpp:191:16:191:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:191:40:191:46 | *service | semmle.label | *service | +| asio_streams.cpp:192:16:192:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:192:40:192:46 | *service | semmle.label | *service | +| asio_streams.cpp:194:16:194:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:194:45:194:56 | service_view | semmle.label | service_view | +| asio_streams.cpp:195:16:195:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:195:45:195:56 | service_view | semmle.label | service_view | +| asio_streams.cpp:196:16:196:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:196:45:196:56 | service_view | semmle.label | service_view | +| asio_streams.cpp:197:16:197:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:197:45:197:56 | service_view | semmle.label | service_view | | azure.cpp:253:48:253:60 | *call to GetBodyStream | semmle.label | *call to GetBodyStream | | azure.cpp:253:48:253:60 | call to GetBodyStream | semmle.label | call to GetBodyStream | | azure.cpp:257:5:257:8 | *resp | semmle.label | *resp | @@ -541,6 +1787,908 @@ nodes | azure.cpp:295:10:295:20 | contentType | semmle.label | contentType | | azure.cpp:295:10:295:20 | contentType | semmle.label | contentType | | azure.cpp:295:10:295:20 | contentType | semmle.label | contentType | +| bal.cpp:128:19:128:26 | call to source | semmle.label | call to source | +| bal.cpp:129:23:129:51 | *call to data | semmle.label | *call to data | +| bal.cpp:132:17:132:18 | *sb | semmle.label | *sb | +| bal.cpp:132:21:132:24 | decode output argument | semmle.label | decode output argument | +| bal.cpp:133:7:133:17 | * ... | semmle.label | * ... | +| bal.cpp:137:19:137:26 | call to source | semmle.label | call to source | +| bal.cpp:138:21:138:47 | *call to data | semmle.label | *call to data | +| bal.cpp:141:17:141:19 | ** ... | semmle.label | ** ... | +| bal.cpp:141:22:141:25 | decode output argument | semmle.label | decode output argument | +| bal.cpp:142:7:142:17 | * ... | semmle.label | * ... | +| bal.cpp:146:19:146:26 | call to source | semmle.label | call to source | +| bal.cpp:147:23:147:51 | *call to data | semmle.label | *call to data | +| bal.cpp:150:20:150:21 | *sb | semmle.label | *sb | +| bal.cpp:150:24:150:27 | decodeAny output argument | semmle.label | decodeAny output argument | +| bal.cpp:151:7:151:17 | * ... | semmle.label | * ... | +| bal.cpp:156:18:156:25 | call to source | semmle.label | call to source | +| bal.cpp:159:17:159:37 | encode output argument | semmle.label | encode output argument | +| bal.cpp:159:40:159:42 | *obj | semmle.label | *obj | +| bal.cpp:160:7:160:12 | access to array | semmle.label | access to array | +| bal.cpp:164:18:164:25 | call to source | semmle.label | call to source | +| bal.cpp:167:20:167:40 | encodeAny output argument | semmle.label | encodeAny output argument | +| bal.cpp:167:43:167:45 | *obj | semmle.label | *obj | +| bal.cpp:168:7:168:12 | access to array | semmle.label | access to array | +| bal.cpp:175:19:175:26 | call to source | semmle.label | call to source | +| bal.cpp:176:23:176:51 | *call to data | semmle.label | *call to data | +| bal.cpp:180:17:180:18 | *sb | semmle.label | *sb | +| bal.cpp:180:21:180:24 | decode output argument | semmle.label | decode output argument | +| bal.cpp:181:7:181:17 | * ... | semmle.label | * ... | +| bal.cpp:185:19:185:26 | call to source | semmle.label | call to source | +| bal.cpp:186:21:186:47 | *call to data | semmle.label | *call to data | +| bal.cpp:190:17:190:19 | ** ... | semmle.label | ** ... | +| bal.cpp:190:22:190:25 | decode output argument | semmle.label | decode output argument | +| bal.cpp:191:7:191:17 | * ... | semmle.label | * ... | +| bal.cpp:195:19:195:26 | call to source | semmle.label | call to source | +| bal.cpp:196:23:196:51 | *call to data | semmle.label | *call to data | +| bal.cpp:199:20:199:21 | *sb | semmle.label | *sb | +| bal.cpp:199:24:199:27 | decodeAny output argument | semmle.label | decodeAny output argument | +| bal.cpp:200:7:200:17 | * ... | semmle.label | * ... | +| bal.cpp:204:18:204:25 | call to source | semmle.label | call to source | +| bal.cpp:208:17:208:37 | encode output argument | semmle.label | encode output argument | +| bal.cpp:208:40:208:42 | *obj | semmle.label | *obj | +| bal.cpp:209:7:209:12 | access to array | semmle.label | access to array | +| bal.cpp:213:18:213:25 | call to source | semmle.label | call to source | +| bal.cpp:216:20:216:40 | encodeAny output argument | semmle.label | encodeAny output argument | +| bal.cpp:216:43:216:45 | *obj | semmle.label | *obj | +| bal.cpp:217:7:217:12 | access to array | semmle.label | access to array | +| bal.cpp:222:19:222:26 | call to source | semmle.label | call to source | +| bal.cpp:223:23:223:51 | *call to data | semmle.label | *call to data | +| bal.cpp:226:17:226:18 | *sb | semmle.label | *sb | +| bal.cpp:226:21:226:24 | decode output argument | semmle.label | decode output argument | +| bal.cpp:229:17:229:37 | encode output argument | semmle.label | encode output argument | +| bal.cpp:229:40:229:42 | *rec | semmle.label | *rec | +| bal.cpp:230:7:230:12 | access to array | semmle.label | access to array | +| bal.cpp:245:19:245:26 | call to source | semmle.label | call to source | +| bal.cpp:246:21:246:47 | *call to data | semmle.label | *call to data | +| bal.cpp:249:17:249:19 | ** ... | semmle.label | ** ... | +| bal.cpp:249:22:249:25 | decode output argument | semmle.label | decode output argument | +| bal.cpp:250:7:250:17 | * ... | semmle.label | * ... | +| bal.cpp:254:19:254:26 | call to source | semmle.label | call to source | +| bal.cpp:255:21:255:47 | *call to data | semmle.label | *call to data | +| bal.cpp:258:34:258:52 | *call to decode | semmle.label | *call to decode | +| bal.cpp:258:34:258:52 | *call to decode | semmle.label | *call to decode | +| bal.cpp:258:35:258:37 | ** ... | semmle.label | ** ... | +| bal.cpp:258:40:258:43 | decode output argument | semmle.label | decode output argument | +| bal.cpp:259:7:259:17 | * ... | semmle.label | * ... | +| bal.cpp:260:7:260:9 | out | semmle.label | out | +| bal.cpp:264:19:264:26 | call to source | semmle.label | call to source | +| bal.cpp:265:23:265:51 | *call to data | semmle.label | *call to data | +| bal.cpp:268:17:268:18 | *sb | semmle.label | *sb | +| bal.cpp:268:21:268:24 | decode output argument | semmle.label | decode output argument | +| bal.cpp:269:7:269:17 | * ... | semmle.label | * ... | +| bal.cpp:273:19:273:26 | call to source | semmle.label | call to source | +| bal.cpp:276:22:276:25 | *call to data | semmle.label | *call to data | +| bal.cpp:276:43:276:46 | decode output argument | semmle.label | decode output argument | +| bal.cpp:277:7:277:17 | * ... | semmle.label | * ... | +| bal.cpp:301:19:301:26 | call to source | semmle.label | call to source | +| bal.cpp:302:21:302:47 | *call to data | semmle.label | *call to data | +| bal.cpp:305:20:305:22 | ** ... | semmle.label | ** ... | +| bal.cpp:305:25:305:28 | decodeAny output argument | semmle.label | decodeAny output argument | +| bal.cpp:306:7:306:17 | * ... | semmle.label | * ... | +| bal.cpp:310:19:310:26 | call to source | semmle.label | call to source | +| bal.cpp:311:21:311:47 | *call to data | semmle.label | *call to data | +| bal.cpp:314:37:314:48 | *call to decodeAny | semmle.label | *call to decodeAny | +| bal.cpp:314:37:314:48 | *call to decodeAny | semmle.label | *call to decodeAny | +| bal.cpp:314:38:314:40 | ** ... | semmle.label | ** ... | +| bal.cpp:314:43:314:46 | decodeAny output argument | semmle.label | decodeAny output argument | +| bal.cpp:315:7:315:17 | * ... | semmle.label | * ... | +| bal.cpp:316:7:316:9 | out | semmle.label | out | +| bal.cpp:320:19:320:26 | call to source | semmle.label | call to source | +| bal.cpp:321:23:321:51 | *call to data | semmle.label | *call to data | +| bal.cpp:324:20:324:21 | *sb | semmle.label | *sb | +| bal.cpp:324:24:324:27 | decodeAny output argument | semmle.label | decodeAny output argument | +| bal.cpp:325:7:325:17 | * ... | semmle.label | * ... | +| bal.cpp:329:19:329:26 | call to source | semmle.label | call to source | +| bal.cpp:330:21:330:47 | *call to data | semmle.label | *call to data | +| bal.cpp:333:20:333:22 | ** ... | semmle.label | ** ... | +| bal.cpp:333:25:333:28 | decodeAny output argument | semmle.label | decodeAny output argument | +| bal.cpp:334:7:334:19 | * ... | semmle.label | * ... | +| bal.cpp:338:19:338:26 | call to source | semmle.label | call to source | +| bal.cpp:339:21:339:47 | *call to data | semmle.label | *call to data | +| bal.cpp:342:37:342:48 | *call to decodeAny | semmle.label | *call to decodeAny | +| bal.cpp:342:37:342:48 | *call to decodeAny | semmle.label | *call to decodeAny | +| bal.cpp:342:38:342:40 | ** ... | semmle.label | ** ... | +| bal.cpp:342:43:342:46 | decodeAny output argument | semmle.label | decodeAny output argument | +| bal.cpp:343:7:343:17 | * ... | semmle.label | * ... | +| bal.cpp:344:7:344:19 | * ... | semmle.label | * ... | +| bal.cpp:348:19:348:26 | call to source | semmle.label | call to source | +| bal.cpp:349:23:349:51 | *call to data | semmle.label | *call to data | +| bal.cpp:352:20:352:21 | *sb | semmle.label | *sb | +| bal.cpp:352:24:352:27 | decodeAny output argument | semmle.label | decodeAny output argument | +| bal.cpp:353:7:353:19 | * ... | semmle.label | * ... | +| bal.cpp:357:18:357:25 | call to source | semmle.label | call to source | +| bal.cpp:360:17:360:37 | encode output argument | semmle.label | encode output argument | +| bal.cpp:360:40:360:42 | *obj | semmle.label | *obj | +| bal.cpp:361:7:361:12 | access to array | semmle.label | access to array | +| bal.cpp:365:18:365:25 | call to source | semmle.label | call to source | +| bal.cpp:368:17:368:36 | encode output argument | semmle.label | encode output argument | +| bal.cpp:368:39:368:41 | *obj | semmle.label | *obj | +| bal.cpp:369:7:369:12 | access to array | semmle.label | access to array | +| bal.cpp:373:18:373:25 | call to source | semmle.label | call to source | +| bal.cpp:376:34:376:61 | *call to encode | semmle.label | *call to encode | +| bal.cpp:376:34:376:61 | *call to encode | semmle.label | *call to encode | +| bal.cpp:376:35:376:54 | encode output argument | semmle.label | encode output argument | +| bal.cpp:376:57:376:59 | *obj | semmle.label | *obj | +| bal.cpp:377:7:377:17 | * ... | semmle.label | * ... | +| bal.cpp:378:7:378:12 | access to array | semmle.label | access to array | +| bal.cpp:382:19:382:26 | call to source | semmle.label | call to source | +| bal.cpp:383:21:383:47 | *call to data | semmle.label | *call to data | +| bal.cpp:386:34:386:44 | *call to encode | semmle.label | *call to encode | +| bal.cpp:386:34:386:44 | *call to encode | semmle.label | *call to encode | +| bal.cpp:386:35:386:37 | ** ... | semmle.label | ** ... | +| bal.cpp:387:7:387:17 | * ... | semmle.label | * ... | +| bal.cpp:391:18:391:25 | call to source | semmle.label | call to source | +| bal.cpp:394:25:394:44 | encodeToStream output argument | semmle.label | encodeToStream output argument | +| bal.cpp:394:47:394:49 | *obj | semmle.label | *obj | +| bal.cpp:395:7:395:12 | access to array | semmle.label | access to array | +| bal.cpp:409:18:409:25 | call to source | semmle.label | call to source | +| bal.cpp:412:20:412:40 | encodeAny output argument | semmle.label | encodeAny output argument | +| bal.cpp:412:43:412:45 | *obj | semmle.label | *obj | +| bal.cpp:413:7:413:12 | access to array | semmle.label | access to array | +| bal.cpp:417:18:417:25 | call to source | semmle.label | call to source | +| bal.cpp:420:20:420:39 | encodeAny output argument | semmle.label | encodeAny output argument | +| bal.cpp:420:42:420:44 | *obj | semmle.label | *obj | +| bal.cpp:421:7:421:12 | access to array | semmle.label | access to array | +| bal.cpp:425:18:425:25 | call to source | semmle.label | call to source | +| bal.cpp:428:37:428:64 | *call to encodeAny | semmle.label | *call to encodeAny | +| bal.cpp:428:37:428:64 | *call to encodeAny | semmle.label | *call to encodeAny | +| bal.cpp:428:38:428:57 | encodeAny output argument | semmle.label | encodeAny output argument | +| bal.cpp:428:60:428:62 | *obj | semmle.label | *obj | +| bal.cpp:429:7:429:17 | * ... | semmle.label | * ... | +| bal.cpp:430:7:430:12 | access to array | semmle.label | access to array | +| bal.cpp:434:18:434:25 | call to source | semmle.label | call to source | +| bal.cpp:437:28:437:47 | encodeAnyToStream output argument | semmle.label | encodeAnyToStream output argument | +| bal.cpp:437:50:437:52 | *obj | semmle.label | *obj | +| bal.cpp:438:7:438:12 | access to array | semmle.label | access to array | +| bal.cpp:442:19:442:26 | call to source | semmle.label | call to source | +| bal.cpp:443:41:443:86 | *call to data | semmle.label | *call to data | +| bal.cpp:446:20:446:40 | encodeAny output argument | semmle.label | encodeAny output argument | +| bal.cpp:446:43:446:46 | ** ... | semmle.label | ** ... | +| bal.cpp:447:7:447:12 | access to array | semmle.label | access to array | +| bal.cpp:451:19:451:26 | call to source | semmle.label | call to source | +| bal.cpp:452:41:452:86 | *call to data | semmle.label | *call to data | +| bal.cpp:455:20:455:39 | encodeAny output argument | semmle.label | encodeAny output argument | +| bal.cpp:455:42:455:45 | ** ... | semmle.label | ** ... | +| bal.cpp:456:7:456:12 | access to array | semmle.label | access to array | +| bal.cpp:460:19:460:26 | call to source | semmle.label | call to source | +| bal.cpp:461:41:461:86 | *call to data | semmle.label | *call to data | +| bal.cpp:464:37:464:65 | *call to encodeAny | semmle.label | *call to encodeAny | +| bal.cpp:464:37:464:65 | *call to encodeAny | semmle.label | *call to encodeAny | +| bal.cpp:464:38:464:57 | encodeAny output argument | semmle.label | encodeAny output argument | +| bal.cpp:464:60:464:63 | ** ... | semmle.label | ** ... | +| bal.cpp:465:7:465:17 | * ... | semmle.label | * ... | +| bal.cpp:466:7:466:12 | access to array | semmle.label | access to array | +| bdlbb.cpp:37:16:37:23 | call to source | semmle.label | call to source | +| bdlbb.cpp:39:37:39:41 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:39:49:39:52 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:41:37:41:39 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:41:42:41:45 | *blob | semmle.label | *blob | +| bdlbb.cpp:42:7:42:10 | * ... | semmle.label | * ... | +| bdlbb.cpp:46:16:46:23 | call to source | semmle.label | call to source | +| bdlbb.cpp:48:37:48:41 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:48:49:48:52 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:49:18:49:21 | *blob | semmle.label | *blob | +| bdlbb.cpp:49:18:49:38 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:49:18:49:38 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:49:29:49:32 | *call to buffer | semmle.label | *call to buffer | +| bdlbb.cpp:50:7:50:8 | * ... | semmle.label | * ... | +| bdlbb.cpp:55:16:55:23 | call to source | semmle.label | call to source | +| bdlbb.cpp:57:37:57:41 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:57:49:57:52 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:58:18:58:21 | *blob | semmle.label | *blob | +| bdlbb.cpp:58:18:58:46 | call to get | semmle.label | call to get | +| bdlbb.cpp:58:29:58:32 | *call to buffer | semmle.label | *call to buffer | +| bdlbb.cpp:58:39:58:41 | *call to buffer | semmle.label | *call to buffer | +| bdlbb.cpp:59:7:59:8 | * ... | semmle.label | * ... | +| bdlbb.cpp:63:16:63:23 | call to source | semmle.label | call to source | +| bdlbb.cpp:65:37:65:41 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:65:49:65:52 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:67:12:67:65 | *call to getContiguousRangeOrCopy | semmle.label | *call to getContiguousRangeOrCopy | +| bdlbb.cpp:67:12:67:65 | *call to getContiguousRangeOrCopy | semmle.label | *call to getContiguousRangeOrCopy | +| bdlbb.cpp:67:72:67:75 | *blob | semmle.label | *blob | +| bdlbb.cpp:68:7:68:8 | * ... | semmle.label | * ... | +| bdlbb.cpp:73:16:73:23 | call to source | semmle.label | call to source | +| bdlbb.cpp:75:37:75:40 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:75:48:75:51 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:77:37:77:40 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:77:46:77:48 | *src | semmle.label | *src | +| bdlbb.cpp:79:37:79:39 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:79:42:79:44 | *dst | semmle.label | *dst | +| bdlbb.cpp:80:7:80:10 | * ... | semmle.label | * ... | +| bmqa.cpp:87:19:87:26 | call to source | semmle.label | call to source | +| bmqa.cpp:88:36:88:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:90:2:90:4 | *msg | semmle.label | *msg | +| bmqa.cpp:90:15:90:19 | getData output argument | semmle.label | getData output argument | +| bmqa.cpp:92:37:92:39 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:92:42:92:45 | *blob | semmle.label | *blob | +| bmqa.cpp:93:7:93:10 | * ... | semmle.label | * ... | +| bmqa.cpp:97:19:97:26 | call to source | semmle.label | call to source | +| bmqa.cpp:98:43:98:88 | *call to data | semmle.label | *call to data | +| bmqa.cpp:99:42:99:46 | *event | semmle.label | *event | +| bmqa.cpp:99:49:99:63 | call to messageIterator | semmle.label | call to messageIterator | +| bmqa.cpp:99:49:99:63 | call to messageIterator | semmle.label | call to messageIterator | +| bmqa.cpp:101:43:101:44 | *it | semmle.label | *it | +| bmqa.cpp:101:53:101:55 | *call to message | semmle.label | *call to message | +| bmqa.cpp:101:53:101:55 | *call to message | semmle.label | *call to message | +| bmqa.cpp:103:3:103:5 | *msg | semmle.label | *msg | +| bmqa.cpp:103:15:103:19 | getData output argument | semmle.label | getData output argument | +| bmqa.cpp:105:38:105:40 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:105:43:105:46 | *blob | semmle.label | *blob | +| bmqa.cpp:106:8:106:11 | * ... | semmle.label | * ... | +| bmqa.cpp:111:16:111:23 | call to source | semmle.label | call to source | +| bmqa.cpp:113:37:113:39 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:113:47:113:50 | *call to data | semmle.label | *call to data | +| bmqa.cpp:115:2:115:4 | setDataRef output argument | semmle.label | setDataRef output argument | +| bmqa.cpp:115:17:115:19 | *& ... | semmle.label | *& ... | +| bmqa.cpp:117:2:117:4 | *msg | semmle.label | *msg | +| bmqa.cpp:117:14:117:17 | getData output argument | semmle.label | getData output argument | +| bmqa.cpp:119:37:119:39 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:119:42:119:44 | *out | semmle.label | *out | +| bmqa.cpp:120:7:120:10 | * ... | semmle.label | * ... | +| bmqa.cpp:124:16:124:23 | call to source | semmle.label | call to source | +| bmqa.cpp:126:2:126:4 | setDataRef output argument | semmle.label | setDataRef output argument | +| bmqa.cpp:126:19:126:22 | *call to data | semmle.label | *call to data | +| bmqa.cpp:128:2:128:4 | *msg | semmle.label | *msg | +| bmqa.cpp:128:14:128:17 | getData output argument | semmle.label | getData output argument | +| bmqa.cpp:130:37:130:39 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:130:42:130:44 | *out | semmle.label | *out | +| bmqa.cpp:131:7:131:10 | * ... | semmle.label | * ... | +| bmqa.cpp:135:16:135:23 | call to source | semmle.label | call to source | +| bmqa.cpp:137:2:137:4 | setData output argument | semmle.label | setData output argument | +| bmqa.cpp:137:16:137:19 | *call to data | semmle.label | *call to data | +| bmqa.cpp:139:2:139:4 | *msg | semmle.label | *msg | +| bmqa.cpp:139:14:139:17 | getData output argument | semmle.label | getData output argument | +| bmqa.cpp:141:37:141:39 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:141:42:141:44 | *out | semmle.label | *out | +| bmqa.cpp:142:7:142:10 | * ... | semmle.label | * ... | +| bmqa.cpp:146:19:146:26 | call to source | semmle.label | call to source | +| bmqa.cpp:147:36:147:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:148:36:148:38 | *msg | semmle.label | *msg | +| bmqa.cpp:148:41:148:45 | call to clone | semmle.label | call to clone | +| bmqa.cpp:148:41:148:45 | call to clone | semmle.label | call to clone | +| bmqa.cpp:150:2:150:5 | *copy | semmle.label | *copy | +| bmqa.cpp:150:15:150:19 | getData output argument | semmle.label | getData output argument | +| bmqa.cpp:152:37:152:39 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:152:42:152:45 | *blob | semmle.label | *blob | +| bmqa.cpp:153:7:153:10 | * ... | semmle.label | * ... | +| bmqa.cpp:157:19:157:26 | call to source | semmle.label | call to source | +| bmqa.cpp:158:36:158:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:160:2:160:4 | *msg | semmle.label | *msg | +| bmqa.cpp:160:22:160:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:161:29:161:33 | *props | semmle.label | *props | +| bmqa.cpp:161:54:161:61 | *call to getPropertyAsString | semmle.label | *call to getPropertyAsString | +| bmqa.cpp:161:54:161:61 | *call to getPropertyAsString | semmle.label | *call to getPropertyAsString | +| bmqa.cpp:162:7:162:21 | access to array | semmle.label | access to array | +| bmqa.cpp:166:19:166:26 | call to source | semmle.label | call to source | +| bmqa.cpp:167:36:167:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:169:2:169:4 | *msg | semmle.label | *msg | +| bmqa.cpp:169:22:169:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:170:35:170:39 | *props | semmle.label | *props | +| bmqa.cpp:170:60:170:67 | *call to getPropertyAsBinary [element] | semmle.label | *call to getPropertyAsBinary [element] | +| bmqa.cpp:170:60:170:67 | *call to getPropertyAsBinary [element] | semmle.label | *call to getPropertyAsBinary [element] | +| bmqa.cpp:171:7:171:11 | *value [element] | semmle.label | *value [element] | +| bmqa.cpp:171:7:171:21 | access to array | semmle.label | access to array | +| bmqa.cpp:175:19:175:26 | call to source | semmle.label | call to source | +| bmqa.cpp:176:36:176:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:178:2:178:4 | *msg | semmle.label | *msg | +| bmqa.cpp:178:22:178:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:179:35:179:39 | *props | semmle.label | *props | +| bmqa.cpp:179:60:179:67 | *call to getPropertyAsBinary [element] | semmle.label | *call to getPropertyAsBinary [element] | +| bmqa.cpp:179:60:179:67 | *call to getPropertyAsBinary [element] | semmle.label | *call to getPropertyAsBinary [element] | +| bmqa.cpp:180:7:180:11 | *value [element] | semmle.label | *value [element] | +| bmqa.cpp:180:12:180:14 | call to operator[] | semmle.label | call to operator[] | +| bmqa.cpp:184:19:184:26 | call to source | semmle.label | call to source | +| bmqa.cpp:185:36:185:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:187:2:187:4 | *msg | semmle.label | *msg | +| bmqa.cpp:187:22:187:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:189:29:189:33 | *props | semmle.label | *props | +| bmqa.cpp:189:56:189:69 | *call to getPropertyAsStringOr | semmle.label | *call to getPropertyAsStringOr | +| bmqa.cpp:189:56:189:69 | *call to getPropertyAsStringOr | semmle.label | *call to getPropertyAsStringOr | +| bmqa.cpp:190:7:190:19 | * ... | semmle.label | * ... | +| bmqa.cpp:195:19:195:26 | call to source | semmle.label | call to source | +| bmqa.cpp:197:56:197:69 | *call to getPropertyAsStringOr | semmle.label | *call to getPropertyAsStringOr | +| bmqa.cpp:197:56:197:69 | *call to getPropertyAsStringOr | semmle.label | *call to getPropertyAsStringOr | +| bmqa.cpp:197:64:197:67 | *dflt | semmle.label | *dflt | +| bmqa.cpp:198:7:198:19 | * ... | semmle.label | * ... | +| bmqa.cpp:202:19:202:26 | call to source | semmle.label | call to source | +| bmqa.cpp:203:36:203:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:205:2:205:4 | *msg | semmle.label | *msg | +| bmqa.cpp:205:22:205:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:207:35:207:39 | *props | semmle.label | *props | +| bmqa.cpp:207:62:207:75 | *call to getPropertyAsBinaryOr [element] | semmle.label | *call to getPropertyAsBinaryOr [element] | +| bmqa.cpp:207:62:207:75 | *call to getPropertyAsBinaryOr [element] | semmle.label | *call to getPropertyAsBinaryOr [element] | +| bmqa.cpp:208:7:208:19 | * ... | semmle.label | * ... | +| bmqa.cpp:208:8:208:12 | *value [element] | semmle.label | *value [element] | +| bmqa.cpp:212:11:212:19 | * ... | semmle.label | * ... | +| bmqa.cpp:212:12:212:17 | call to source | semmle.label | call to source | +| bmqa.cpp:214:2:214:5 | push_back output argument [element] | semmle.label | push_back output argument [element] | +| bmqa.cpp:214:17:214:17 | *c | semmle.label | *c | +| bmqa.cpp:216:62:216:75 | *call to getPropertyAsBinaryOr [element] | semmle.label | *call to getPropertyAsBinaryOr [element] | +| bmqa.cpp:216:62:216:75 | *call to getPropertyAsBinaryOr [element] | semmle.label | *call to getPropertyAsBinaryOr [element] | +| bmqa.cpp:216:70:216:73 | *dflt [element] | semmle.label | *dflt [element] | +| bmqa.cpp:217:7:217:19 | * ... | semmle.label | * ... | +| bmqa.cpp:217:8:217:12 | *value [element] | semmle.label | *value [element] | +| bmqa.cpp:229:16:229:23 | call to source | semmle.label | call to source | +| bmqa.cpp:231:37:231:41 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:231:49:231:52 | *call to data | semmle.label | *call to data | +| bmqa.cpp:233:2:233:6 | streamIn output argument | semmle.label | streamIn output argument | +| bmqa.cpp:233:17:233:20 | *blob | semmle.label | *blob | +| bmqa.cpp:234:7:234:46 | * ... | semmle.label | * ... | +| bmqa.cpp:234:8:234:12 | *props | semmle.label | *props | +| bmqa.cpp:234:33:234:40 | *call to getPropertyAsString | semmle.label | *call to getPropertyAsString | +| bmqa.cpp:238:16:238:23 | call to source | semmle.label | call to source | +| bmqa.cpp:240:37:240:41 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:240:49:240:52 | *call to data | semmle.label | *call to data | +| bmqa.cpp:242:2:242:3 | streamIn output argument | semmle.label | streamIn output argument | +| bmqa.cpp:242:14:242:17 | *blob | semmle.label | *blob | +| bmqa.cpp:244:2:244:4 | setPropertiesRef output argument | semmle.label | setPropertiesRef output argument | +| bmqa.cpp:244:23:244:25 | *& ... | semmle.label | *& ... | +| bmqa.cpp:246:2:246:4 | *msg | semmle.label | *msg | +| bmqa.cpp:246:21:246:24 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:247:7:247:44 | * ... | semmle.label | * ... | +| bmqa.cpp:247:8:247:10 | *out | semmle.label | *out | +| bmqa.cpp:247:31:247:38 | *call to getPropertyAsString | semmle.label | *call to getPropertyAsString | +| bmqa.cpp:251:19:251:26 | call to source | semmle.label | call to source | +| bmqa.cpp:252:36:252:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:254:2:254:4 | *msg | semmle.label | *msg | +| bmqa.cpp:254:22:254:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:256:41:256:45 | *props | semmle.label | *props | +| bmqa.cpp:256:56:256:66 | *call to streamOut | semmle.label | *call to streamOut | +| bmqa.cpp:256:56:256:66 | *call to streamOut | semmle.label | *call to streamOut | +| bmqa.cpp:258:37:258:39 | copy output argument | semmle.label | copy output argument | +| bmqa.cpp:258:42:258:45 | *blob | semmle.label | *blob | +| bmqa.cpp:259:7:259:10 | * ... | semmle.label | * ... | +| bmqa.cpp:263:19:263:26 | call to source | semmle.label | call to source | +| bmqa.cpp:264:36:264:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:266:2:266:4 | *msg | semmle.label | *msg | +| bmqa.cpp:266:22:266:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:267:39:267:42 | call to MessageProperties | semmle.label | call to MessageProperties | +| bmqa.cpp:267:44:267:48 | *props | semmle.label | *props | +| bmqa.cpp:268:7:268:45 | * ... | semmle.label | * ... | +| bmqa.cpp:268:8:268:11 | *copy | semmle.label | *copy | +| bmqa.cpp:268:32:268:39 | *call to getPropertyAsString | semmle.label | *call to getPropertyAsString | +| bmqa.cpp:272:19:272:26 | call to source | semmle.label | call to source | +| bmqa.cpp:273:36:273:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:275:2:275:4 | *msg | semmle.label | *msg | +| bmqa.cpp:275:22:275:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:277:2:277:5 | operator= output argument | semmle.label | operator= output argument | +| bmqa.cpp:277:9:277:13 | *props | semmle.label | *props | +| bmqa.cpp:278:7:278:45 | * ... | semmle.label | * ... | +| bmqa.cpp:278:8:278:11 | *copy | semmle.label | *copy | +| bmqa.cpp:278:32:278:39 | *call to getPropertyAsString | semmle.label | *call to getPropertyAsString | +| bmqa.cpp:282:19:282:26 | call to source | semmle.label | call to source | +| bmqa.cpp:283:36:283:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:285:2:285:4 | *msg | semmle.label | *msg | +| bmqa.cpp:285:22:285:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:287:7:287:55 | * ... | semmle.label | * ... | +| bmqa.cpp:287:8:287:21 | *call to operator= | semmle.label | *call to operator= | +| bmqa.cpp:287:16:287:20 | *props | semmle.label | *props | +| bmqa.cpp:287:42:287:49 | *call to getPropertyAsString | semmle.label | *call to getPropertyAsString | +| bmqa.cpp:291:19:291:26 | call to source | semmle.label | call to source | +| bmqa.cpp:292:28:292:58 | *call to data | semmle.label | *call to data | +| bmqa.cpp:294:2:294:6 | setPropertyAsString output argument | semmle.label | setPropertyAsString output argument | +| bmqa.cpp:294:35:294:40 | * ... | semmle.label | * ... | +| bmqa.cpp:295:7:295:46 | * ... | semmle.label | * ... | +| bmqa.cpp:295:8:295:12 | *props | semmle.label | *props | +| bmqa.cpp:295:33:295:40 | *call to getPropertyAsString | semmle.label | *call to getPropertyAsString | +| bmqa.cpp:299:25:299:32 | call to source | semmle.label | call to source | +| bmqa.cpp:301:2:301:6 | setPropertyAsString output argument | semmle.label | setPropertyAsString output argument | +| bmqa.cpp:301:35:301:39 | value | semmle.label | value | +| bmqa.cpp:302:7:302:46 | * ... | semmle.label | * ... | +| bmqa.cpp:302:8:302:12 | *props | semmle.label | *props | +| bmqa.cpp:302:33:302:40 | *call to getPropertyAsString | semmle.label | *call to getPropertyAsString | +| bmqa.cpp:306:19:306:26 | call to source | semmle.label | call to source | +| bmqa.cpp:307:33:307:68 | *call to data | semmle.label | *call to data | +| bmqa.cpp:309:2:309:6 | setPropertyAsBinary output argument | semmle.label | setPropertyAsBinary output argument | +| bmqa.cpp:309:35:309:40 | * ... | semmle.label | * ... | +| bmqa.cpp:310:7:310:46 | * ... | semmle.label | * ... | +| bmqa.cpp:310:8:310:12 | *props | semmle.label | *props | +| bmqa.cpp:310:33:310:40 | *call to getPropertyAsBinary [element] | semmle.label | *call to getPropertyAsBinary [element] | +| bmqa.cpp:315:24:315:31 | call to source | semmle.label | call to source | +| bmqa.cpp:317:2:317:6 | setPropertyAsBool output argument | semmle.label | setPropertyAsBool output argument | +| bmqa.cpp:317:26:317:29 | name | semmle.label | name | +| bmqa.cpp:318:47:318:48 | call to MessagePropertiesIterator | semmle.label | call to MessagePropertiesIterator | +| bmqa.cpp:318:50:318:55 | *& ... | semmle.label | *& ... | +| bmqa.cpp:319:7:319:23 | * ... | semmle.label | * ... | +| bmqa.cpp:319:8:319:9 | *it | semmle.label | *it | +| bmqa.cpp:319:15:319:17 | *call to name | semmle.label | *call to name | +| bmqa.cpp:323:24:323:31 | call to source | semmle.label | call to source | +| bmqa.cpp:325:2:325:6 | setPropertyAsChar output argument | semmle.label | setPropertyAsChar output argument | +| bmqa.cpp:325:26:325:29 | name | semmle.label | name | +| bmqa.cpp:326:47:326:48 | call to MessagePropertiesIterator | semmle.label | call to MessagePropertiesIterator | +| bmqa.cpp:326:50:326:55 | *& ... | semmle.label | *& ... | +| bmqa.cpp:327:7:327:23 | * ... | semmle.label | * ... | +| bmqa.cpp:327:8:327:9 | *it | semmle.label | *it | +| bmqa.cpp:327:15:327:17 | *call to name | semmle.label | *call to name | +| bmqa.cpp:331:24:331:31 | call to source | semmle.label | call to source | +| bmqa.cpp:333:2:333:6 | setPropertyAsShort output argument | semmle.label | setPropertyAsShort output argument | +| bmqa.cpp:333:27:333:30 | name | semmle.label | name | +| bmqa.cpp:334:47:334:48 | call to MessagePropertiesIterator | semmle.label | call to MessagePropertiesIterator | +| bmqa.cpp:334:50:334:55 | *& ... | semmle.label | *& ... | +| bmqa.cpp:335:7:335:23 | * ... | semmle.label | * ... | +| bmqa.cpp:335:8:335:9 | *it | semmle.label | *it | +| bmqa.cpp:335:15:335:17 | *call to name | semmle.label | *call to name | +| bmqa.cpp:339:24:339:31 | call to source | semmle.label | call to source | +| bmqa.cpp:341:2:341:6 | setPropertyAsInt32 output argument | semmle.label | setPropertyAsInt32 output argument | +| bmqa.cpp:341:27:341:30 | name | semmle.label | name | +| bmqa.cpp:342:47:342:48 | call to MessagePropertiesIterator | semmle.label | call to MessagePropertiesIterator | +| bmqa.cpp:342:50:342:55 | *& ... | semmle.label | *& ... | +| bmqa.cpp:343:7:343:23 | * ... | semmle.label | * ... | +| bmqa.cpp:343:8:343:9 | *it | semmle.label | *it | +| bmqa.cpp:343:15:343:17 | *call to name | semmle.label | *call to name | +| bmqa.cpp:347:24:347:31 | call to source | semmle.label | call to source | +| bmqa.cpp:349:2:349:6 | setPropertyAsInt64 output argument | semmle.label | setPropertyAsInt64 output argument | +| bmqa.cpp:349:27:349:30 | name | semmle.label | name | +| bmqa.cpp:350:47:350:48 | call to MessagePropertiesIterator | semmle.label | call to MessagePropertiesIterator | +| bmqa.cpp:350:50:350:55 | *& ... | semmle.label | *& ... | +| bmqa.cpp:351:7:351:23 | * ... | semmle.label | * ... | +| bmqa.cpp:351:8:351:9 | *it | semmle.label | *it | +| bmqa.cpp:351:15:351:17 | *call to name | semmle.label | *call to name | +| bmqa.cpp:355:24:355:31 | call to source | semmle.label | call to source | +| bmqa.cpp:357:2:357:6 | setPropertyAsString output argument | semmle.label | setPropertyAsString output argument | +| bmqa.cpp:357:28:357:31 | name | semmle.label | name | +| bmqa.cpp:358:47:358:48 | call to MessagePropertiesIterator | semmle.label | call to MessagePropertiesIterator | +| bmqa.cpp:358:50:358:55 | *& ... | semmle.label | *& ... | +| bmqa.cpp:359:7:359:23 | * ... | semmle.label | * ... | +| bmqa.cpp:359:8:359:9 | *it | semmle.label | *it | +| bmqa.cpp:359:15:359:17 | *call to name | semmle.label | *call to name | +| bmqa.cpp:363:24:363:31 | call to source | semmle.label | call to source | +| bmqa.cpp:365:2:365:6 | setPropertyAsBinary output argument | semmle.label | setPropertyAsBinary output argument | +| bmqa.cpp:365:28:365:31 | name | semmle.label | name | +| bmqa.cpp:366:47:366:48 | call to MessagePropertiesIterator | semmle.label | call to MessagePropertiesIterator | +| bmqa.cpp:366:50:366:55 | *& ... | semmle.label | *& ... | +| bmqa.cpp:367:7:367:23 | * ... | semmle.label | * ... | +| bmqa.cpp:367:8:367:9 | *it | semmle.label | *it | +| bmqa.cpp:367:15:367:17 | *call to name | semmle.label | *call to name | +| bmqa.cpp:371:19:371:26 | call to source | semmle.label | call to source | +| bmqa.cpp:372:36:372:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:374:2:374:4 | *msg | semmle.label | *msg | +| bmqa.cpp:374:22:374:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:375:47:375:48 | call to MessagePropertiesIterator | semmle.label | call to MessagePropertiesIterator | +| bmqa.cpp:375:50:375:55 | *& ... | semmle.label | *& ... | +| bmqa.cpp:377:8:377:24 | * ... | semmle.label | * ... | +| bmqa.cpp:377:9:377:10 | *it | semmle.label | *it | +| bmqa.cpp:377:16:377:18 | *call to name | semmle.label | *call to name | +| bmqa.cpp:378:8:378:31 | * ... | semmle.label | * ... | +| bmqa.cpp:378:9:378:10 | *it | semmle.label | *it | +| bmqa.cpp:378:23:378:25 | *call to getAsString | semmle.label | *call to getAsString | +| bmqa.cpp:379:8:379:31 | * ... | semmle.label | * ... | +| bmqa.cpp:379:9:379:10 | *it | semmle.label | *it | +| bmqa.cpp:379:23:379:25 | *call to getAsBinary [element] | semmle.label | *call to getAsBinary [element] | +| bmqa.cpp:385:19:385:26 | call to source | semmle.label | call to source | +| bmqa.cpp:386:36:386:76 | *call to data | semmle.label | *call to data | +| bmqa.cpp:388:2:388:4 | *msg | semmle.label | *msg | +| bmqa.cpp:388:22:388:27 | loadProperties output argument | semmle.label | loadProperties output argument | +| bmqa.cpp:389:47:389:48 | call to MessagePropertiesIterator | semmle.label | call to MessagePropertiesIterator | +| bmqa.cpp:389:50:389:55 | *& ... | semmle.label | *& ... | +| bmqa.cpp:391:2:391:5 | operator= output argument | semmle.label | operator= output argument | +| bmqa.cpp:391:9:391:10 | *it | semmle.label | *it | +| bmqa.cpp:392:7:392:32 | * ... | semmle.label | * ... | +| bmqa.cpp:392:8:392:11 | *copy | semmle.label | *copy | +| bmqa.cpp:392:24:392:26 | *call to getAsString | semmle.label | *call to getAsString | +| bmqa.cpp:393:7:393:32 | * ... | semmle.label | * ... | +| bmqa.cpp:393:8:393:18 | *call to operator= | semmle.label | *call to operator= | +| bmqa.cpp:393:16:393:17 | *it | semmle.label | *it | +| bmqa.cpp:393:24:393:26 | *call to name | semmle.label | *call to name | +| bslx.cpp:161:33:161:40 | call to source | semmle.label | call to source | +| bslx.cpp:162:34:162:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:162:46:162:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:164:2:164:7 | *stream | semmle.label | *stream | +| bslx.cpp:164:22:164:24 | getArrayInt8 output argument | semmle.label | getArrayInt8 output argument | +| bslx.cpp:165:7:165:10 | * ... | semmle.label | * ... | +| bslx.cpp:169:33:169:40 | call to source | semmle.label | call to source | +| bslx.cpp:170:34:170:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:170:46:170:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:172:2:172:7 | *stream | semmle.label | *stream | +| bslx.cpp:172:19:172:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:173:7:173:17 | * ... | semmle.label | * ... | +| bslx.cpp:177:33:177:40 | call to source | semmle.label | call to source | +| bslx.cpp:178:34:178:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:178:46:178:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:181:2:181:7 | *stream | semmle.label | *stream | +| bslx.cpp:181:17:181:20 | *call to getInt32 | semmle.label | *call to getInt32 | +| bslx.cpp:181:31:181:33 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:182:7:182:17 | * ... | semmle.label | * ... | +| bslx.cpp:187:33:187:40 | call to source | semmle.label | call to source | +| bslx.cpp:188:2:188:7 | reset output argument | semmle.label | reset output argument | +| bslx.cpp:188:20:188:23 | *call to data | semmle.label | *call to data | +| bslx.cpp:190:2:190:7 | *stream | semmle.label | *stream | +| bslx.cpp:190:19:190:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:191:7:191:17 | * ... | semmle.label | * ... | +| bslx.cpp:195:33:195:40 | call to source | semmle.label | call to source | +| bslx.cpp:196:20:196:45 | *call to data | semmle.label | *call to data | +| bslx.cpp:197:50:197:55 | call to GenericInStream | semmle.label | call to GenericInStream | +| bslx.cpp:197:57:197:58 | *sb | semmle.label | *sb | +| bslx.cpp:199:2:199:7 | *stream | semmle.label | *stream | +| bslx.cpp:199:19:199:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:200:7:200:17 | * ... | semmle.label | * ... | +| bslx.cpp:213:33:213:40 | call to source | semmle.label | call to source | +| bslx.cpp:214:34:214:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:214:46:214:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:216:53:216:58 | *stream | semmle.label | *stream | +| bslx.cpp:216:61:216:63 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:217:7:217:17 | * ... | semmle.label | * ... | +| bslx.cpp:223:33:223:40 | call to source | semmle.label | call to source | +| bslx.cpp:224:34:224:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:224:46:224:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:247:2:247:7 | *stream | semmle.label | *stream | +| bslx.cpp:247:18:247:21 | *call to getLength | semmle.label | *call to getLength | +| bslx.cpp:247:32:247:35 | *call to getVersion | semmle.label | *call to getVersion | +| bslx.cpp:247:43:247:46 | *call to getInt8 | semmle.label | *call to getInt8 | +| bslx.cpp:247:55:247:59 | *call to getUint8 | semmle.label | *call to getUint8 | +| bslx.cpp:247:68:247:71 | *call to getInt16 | semmle.label | *call to getInt16 | +| bslx.cpp:247:81:247:85 | *call to getUint16 | semmle.label | *call to getUint16 | +| bslx.cpp:247:94:247:97 | *call to getInt24 | semmle.label | *call to getInt24 | +| bslx.cpp:247:107:247:111 | *call to getUint24 | semmle.label | *call to getUint24 | +| bslx.cpp:247:120:247:123 | *call to getInt32 | semmle.label | *call to getInt32 | +| bslx.cpp:247:133:247:137 | *call to getUint32 | semmle.label | *call to getUint32 | +| bslx.cpp:247:146:247:150 | *call to getInt40 | semmle.label | *call to getInt40 | +| bslx.cpp:247:160:247:165 | *call to getUint40 | semmle.label | *call to getUint40 | +| bslx.cpp:247:174:247:178 | *call to getInt48 | semmle.label | *call to getInt48 | +| bslx.cpp:247:188:247:193 | *call to getUint48 | semmle.label | *call to getUint48 | +| bslx.cpp:247:202:247:206 | *call to getInt56 | semmle.label | *call to getInt56 | +| bslx.cpp:247:216:247:221 | *call to getUint56 | semmle.label | *call to getUint56 | +| bslx.cpp:247:230:247:234 | *call to getInt64 | semmle.label | *call to getInt64 | +| bslx.cpp:247:244:247:249 | *call to getUint64 | semmle.label | *call to getUint64 | +| bslx.cpp:247:260:247:263 | *call to getFloat32 | semmle.label | *call to getFloat32 | +| bslx.cpp:247:274:247:277 | *call to getFloat64 | semmle.label | *call to getFloat64 | +| bslx.cpp:247:287:247:292 | *call to getString | semmle.label | *call to getString | +| bslx.cpp:247:305:247:315 | *call to getArrayInt8 | semmle.label | *call to getArrayInt8 | +| bslx.cpp:247:329:247:340 | *call to getArrayUint8 | semmle.label | *call to getArrayUint8 | +| bslx.cpp:247:354:247:364 | *call to getArrayInt16 | semmle.label | *call to getArrayInt16 | +| bslx.cpp:247:379:247:390 | *call to getArrayUint16 | semmle.label | *call to getArrayUint16 | +| bslx.cpp:247:404:247:414 | *call to getArrayInt24 | semmle.label | *call to getArrayInt24 | +| bslx.cpp:247:429:247:440 | *call to getArrayUint24 | semmle.label | *call to getArrayUint24 | +| bslx.cpp:247:454:247:464 | *call to getArrayInt32 | semmle.label | *call to getArrayInt32 | +| bslx.cpp:247:479:247:490 | *call to getArrayUint32 | semmle.label | *call to getArrayUint32 | +| bslx.cpp:247:504:247:515 | *call to getArrayInt40 | semmle.label | *call to getArrayInt40 | +| bslx.cpp:247:530:247:542 | *call to getArrayUint40 | semmle.label | *call to getArrayUint40 | +| bslx.cpp:247:556:247:567 | *call to getArrayInt48 | semmle.label | *call to getArrayInt48 | +| bslx.cpp:247:582:247:594 | *call to getArrayUint48 | semmle.label | *call to getArrayUint48 | +| bslx.cpp:247:608:247:619 | *call to getArrayInt56 | semmle.label | *call to getArrayInt56 | +| bslx.cpp:247:634:247:646 | *call to getArrayUint56 | semmle.label | *call to getArrayUint56 | +| bslx.cpp:247:660:247:671 | *call to getArrayInt64 | semmle.label | *call to getArrayInt64 | +| bslx.cpp:247:686:247:698 | *call to getArrayUint64 | semmle.label | *call to getArrayUint64 | +| bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | semmle.label | *call to getArrayFloat32 | +| bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | semmle.label | *call to getArrayFloat64 | +| bslx.cpp:247:761:247:763 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:248:7:248:17 | * ... | semmle.label | * ... | +| bslx.cpp:252:33:252:40 | call to source | semmle.label | call to source | +| bslx.cpp:253:20:253:45 | *call to data | semmle.label | *call to data | +| bslx.cpp:254:50:254:55 | call to GenericInStream | semmle.label | call to GenericInStream | +| bslx.cpp:254:57:254:58 | *sb | semmle.label | *sb | +| bslx.cpp:277:2:277:7 | *stream | semmle.label | *stream | +| bslx.cpp:277:18:277:21 | *call to getLength | semmle.label | *call to getLength | +| bslx.cpp:277:32:277:35 | *call to getVersion | semmle.label | *call to getVersion | +| bslx.cpp:277:43:277:46 | *call to getInt8 | semmle.label | *call to getInt8 | +| bslx.cpp:277:55:277:59 | *call to getUint8 | semmle.label | *call to getUint8 | +| bslx.cpp:277:68:277:71 | *call to getInt16 | semmle.label | *call to getInt16 | +| bslx.cpp:277:81:277:85 | *call to getUint16 | semmle.label | *call to getUint16 | +| bslx.cpp:277:94:277:97 | *call to getInt24 | semmle.label | *call to getInt24 | +| bslx.cpp:277:107:277:111 | *call to getUint24 | semmle.label | *call to getUint24 | +| bslx.cpp:277:120:277:123 | *call to getInt32 | semmle.label | *call to getInt32 | +| bslx.cpp:277:133:277:137 | *call to getUint32 | semmle.label | *call to getUint32 | +| bslx.cpp:277:146:277:150 | *call to getInt40 | semmle.label | *call to getInt40 | +| bslx.cpp:277:160:277:165 | *call to getUint40 | semmle.label | *call to getUint40 | +| bslx.cpp:277:174:277:178 | *call to getInt48 | semmle.label | *call to getInt48 | +| bslx.cpp:277:188:277:193 | *call to getUint48 | semmle.label | *call to getUint48 | +| bslx.cpp:277:202:277:206 | *call to getInt56 | semmle.label | *call to getInt56 | +| bslx.cpp:277:216:277:221 | *call to getUint56 | semmle.label | *call to getUint56 | +| bslx.cpp:277:230:277:234 | *call to getInt64 | semmle.label | *call to getInt64 | +| bslx.cpp:277:244:277:249 | *call to getUint64 | semmle.label | *call to getUint64 | +| bslx.cpp:277:260:277:263 | *call to getFloat32 | semmle.label | *call to getFloat32 | +| bslx.cpp:277:274:277:277 | *call to getFloat64 | semmle.label | *call to getFloat64 | +| bslx.cpp:277:287:277:292 | *call to getString | semmle.label | *call to getString | +| bslx.cpp:277:305:277:315 | *call to getArrayInt8 | semmle.label | *call to getArrayInt8 | +| bslx.cpp:277:329:277:340 | *call to getArrayUint8 | semmle.label | *call to getArrayUint8 | +| bslx.cpp:277:354:277:364 | *call to getArrayInt16 | semmle.label | *call to getArrayInt16 | +| bslx.cpp:277:379:277:390 | *call to getArrayUint16 | semmle.label | *call to getArrayUint16 | +| bslx.cpp:277:404:277:414 | *call to getArrayInt24 | semmle.label | *call to getArrayInt24 | +| bslx.cpp:277:429:277:440 | *call to getArrayUint24 | semmle.label | *call to getArrayUint24 | +| bslx.cpp:277:454:277:464 | *call to getArrayInt32 | semmle.label | *call to getArrayInt32 | +| bslx.cpp:277:479:277:490 | *call to getArrayUint32 | semmle.label | *call to getArrayUint32 | +| bslx.cpp:277:504:277:515 | *call to getArrayInt40 | semmle.label | *call to getArrayInt40 | +| bslx.cpp:277:530:277:542 | *call to getArrayUint40 | semmle.label | *call to getArrayUint40 | +| bslx.cpp:277:556:277:567 | *call to getArrayInt48 | semmle.label | *call to getArrayInt48 | +| bslx.cpp:277:582:277:594 | *call to getArrayUint48 | semmle.label | *call to getArrayUint48 | +| bslx.cpp:277:608:277:619 | *call to getArrayInt56 | semmle.label | *call to getArrayInt56 | +| bslx.cpp:277:634:277:646 | *call to getArrayUint56 | semmle.label | *call to getArrayUint56 | +| bslx.cpp:277:660:277:671 | *call to getArrayInt64 | semmle.label | *call to getArrayInt64 | +| bslx.cpp:277:686:277:698 | *call to getArrayUint64 | semmle.label | *call to getArrayUint64 | +| bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | semmle.label | *call to getArrayFloat32 | +| bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | semmle.label | *call to getArrayFloat64 | +| bslx.cpp:277:761:277:763 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:278:7:278:17 | * ... | semmle.label | * ... | +| bslx.cpp:282:33:282:40 | call to source | semmle.label | call to source | +| bslx.cpp:283:34:283:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:283:46:283:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:285:53:285:58 | *stream | semmle.label | *stream | +| bslx.cpp:285:61:285:61 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:286:7:286:7 | x | semmle.label | x | +| bslx.cpp:287:53:287:58 | *stream | semmle.label | *stream | +| bslx.cpp:287:61:287:61 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:288:7:288:7 | x | semmle.label | x | +| bslx.cpp:290:52:290:66 | *call to bdexStreamIn | semmle.label | *call to bdexStreamIn | +| bslx.cpp:290:53:290:58 | *stream | semmle.label | *stream | +| bslx.cpp:290:77:290:79 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:291:7:291:17 | * ... | semmle.label | * ... | +| bslx.cpp:295:33:295:40 | call to source | semmle.label | call to source | +| bslx.cpp:296:34:296:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:296:46:296:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:298:53:298:58 | *stream | semmle.label | *stream | +| bslx.cpp:298:61:298:63 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:299:7:299:17 | * ... | semmle.label | * ... | +| bslx.cpp:309:33:309:40 | call to source | semmle.label | call to source | +| bslx.cpp:310:34:310:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:310:46:310:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:312:53:312:58 | *stream | semmle.label | *stream | +| bslx.cpp:312:61:312:63 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:313:7:313:9 | out | semmle.label | out | +| bslx.cpp:322:40:322:60 | call to source | semmle.label | call to source | +| bslx.cpp:322:40:322:60 | call to source | semmle.label | call to source | +| bslx.cpp:323:2:323:7 | reset output argument | semmle.label | reset output argument | +| bslx.cpp:323:15:323:18 | *data | semmle.label | *data | +| bslx.cpp:325:2:325:7 | *stream | semmle.label | *stream | +| bslx.cpp:325:19:325:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:326:7:326:17 | * ... | semmle.label | * ... | +| bslx.cpp:330:33:330:40 | call to source | semmle.label | call to source | +| bslx.cpp:331:34:331:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:331:46:331:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:334:2:334:7 | *stream | semmle.label | *stream | +| bslx.cpp:334:19:334:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:335:7:335:17 | * ... | semmle.label | * ... | +| bslx.cpp:349:33:349:40 | call to source | semmle.label | call to source | +| bslx.cpp:350:34:350:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:350:46:350:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:354:2:354:7 | *stream | semmle.label | *stream | +| bslx.cpp:354:19:354:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:356:7:356:17 | * ... | semmle.label | * ... | +| protobuf.cpp:117:27:117:51 | call to source | semmle.label | call to source | +| protobuf.cpp:117:27:117:51 | call to source | semmle.label | call to source | +| protobuf.cpp:118:2:118:4 | ParseFromString output argument | semmle.label | ParseFromString output argument | +| protobuf.cpp:118:22:118:25 | data | semmle.label | data | +| protobuf.cpp:119:7:119:9 | msg | semmle.label | msg | +| protobuf.cpp:124:20:124:37 | call to source | semmle.label | call to source | +| protobuf.cpp:124:20:124:37 | call to source | semmle.label | call to source | +| protobuf.cpp:125:2:125:4 | ParseFromString output argument | semmle.label | ParseFromString output argument | +| protobuf.cpp:125:22:125:25 | *data | semmle.label | *data | +| protobuf.cpp:126:7:126:9 | msg | semmle.label | msg | +| protobuf.cpp:131:27:131:51 | call to source | semmle.label | call to source | +| protobuf.cpp:131:27:131:51 | call to source | semmle.label | call to source | +| protobuf.cpp:132:2:132:4 | ParsePartialFromString output argument | semmle.label | ParsePartialFromString output argument | +| protobuf.cpp:132:29:132:32 | data | semmle.label | data | +| protobuf.cpp:133:7:133:9 | msg | semmle.label | msg | +| protobuf.cpp:138:20:138:37 | call to source | semmle.label | call to source | +| protobuf.cpp:138:20:138:37 | call to source | semmle.label | call to source | +| protobuf.cpp:139:2:139:4 | ParsePartialFromString output argument | semmle.label | ParsePartialFromString output argument | +| protobuf.cpp:139:29:139:32 | *data | semmle.label | *data | +| protobuf.cpp:140:7:140:9 | msg | semmle.label | msg | +| protobuf.cpp:145:27:145:51 | call to source | semmle.label | call to source | +| protobuf.cpp:145:27:145:51 | call to source | semmle.label | call to source | +| protobuf.cpp:146:2:146:4 | MergeFromString output argument | semmle.label | MergeFromString output argument | +| protobuf.cpp:146:22:146:25 | data | semmle.label | data | +| protobuf.cpp:147:7:147:9 | msg | semmle.label | msg | +| protobuf.cpp:152:20:152:37 | call to source | semmle.label | call to source | +| protobuf.cpp:152:20:152:37 | call to source | semmle.label | call to source | +| protobuf.cpp:153:2:153:4 | MergeFromString output argument | semmle.label | MergeFromString output argument | +| protobuf.cpp:153:22:153:25 | *data | semmle.label | *data | +| protobuf.cpp:154:7:154:9 | msg | semmle.label | msg | +| protobuf.cpp:159:27:159:51 | call to source | semmle.label | call to source | +| protobuf.cpp:159:27:159:51 | call to source | semmle.label | call to source | +| protobuf.cpp:160:2:160:4 | MergePartialFromString output argument | semmle.label | MergePartialFromString output argument | +| protobuf.cpp:160:29:160:32 | data | semmle.label | data | +| protobuf.cpp:161:7:161:9 | msg | semmle.label | msg | +| protobuf.cpp:166:20:166:37 | call to source | semmle.label | call to source | +| protobuf.cpp:166:20:166:37 | call to source | semmle.label | call to source | +| protobuf.cpp:167:2:167:4 | MergePartialFromString output argument | semmle.label | MergePartialFromString output argument | +| protobuf.cpp:167:29:167:32 | *data | semmle.label | *data | +| protobuf.cpp:168:7:168:9 | msg | semmle.label | msg | +| protobuf.cpp:173:19:173:38 | call to source | semmle.label | call to source | +| protobuf.cpp:174:2:174:4 | ParseFromArray output argument | semmle.label | ParseFromArray output argument | +| protobuf.cpp:174:21:174:31 | *call to data | semmle.label | *call to data | +| protobuf.cpp:175:7:175:9 | msg | semmle.label | msg | +| protobuf.cpp:180:19:180:38 | call to source | semmle.label | call to source | +| protobuf.cpp:181:2:181:4 | ParsePartialFromArray output argument | semmle.label | ParsePartialFromArray output argument | +| protobuf.cpp:181:28:181:38 | *call to data | semmle.label | *call to data | +| protobuf.cpp:182:7:182:9 | msg | semmle.label | msg | +| protobuf.cpp:187:20:187:37 | call to source | semmle.label | call to source | +| protobuf.cpp:187:20:187:37 | call to source | semmle.label | call to source | +| protobuf.cpp:188:2:188:4 | ParseFromCord output argument | semmle.label | ParseFromCord output argument | +| protobuf.cpp:188:20:188:23 | *data | semmle.label | *data | +| protobuf.cpp:189:7:189:9 | msg | semmle.label | msg | +| protobuf.cpp:194:20:194:37 | call to source | semmle.label | call to source | +| protobuf.cpp:194:20:194:37 | call to source | semmle.label | call to source | +| protobuf.cpp:195:2:195:4 | ParsePartialFromCord output argument | semmle.label | ParsePartialFromCord output argument | +| protobuf.cpp:195:27:195:30 | *data | semmle.label | *data | +| protobuf.cpp:196:7:196:9 | msg | semmle.label | msg | +| protobuf.cpp:201:20:201:37 | call to source | semmle.label | call to source | +| protobuf.cpp:201:20:201:37 | call to source | semmle.label | call to source | +| protobuf.cpp:202:2:202:4 | MergeFromCord output argument | semmle.label | MergeFromCord output argument | +| protobuf.cpp:202:20:202:23 | *data | semmle.label | *data | +| protobuf.cpp:203:7:203:9 | msg | semmle.label | msg | +| protobuf.cpp:208:20:208:37 | call to source | semmle.label | call to source | +| protobuf.cpp:208:20:208:37 | call to source | semmle.label | call to source | +| protobuf.cpp:209:2:209:4 | MergePartialFromCord output argument | semmle.label | MergePartialFromCord output argument | +| protobuf.cpp:209:27:209:30 | *data | semmle.label | *data | +| protobuf.cpp:210:7:210:9 | msg | semmle.label | msg | +| protobuf.cpp:215:20:215:39 | call to source | semmle.label | call to source | +| protobuf.cpp:215:20:215:39 | call to source | semmle.label | call to source | +| protobuf.cpp:216:2:216:4 | ParseFromIstream output argument | semmle.label | ParseFromIstream output argument | +| protobuf.cpp:216:23:216:25 | *& ... | semmle.label | *& ... | +| protobuf.cpp:217:7:217:9 | msg | semmle.label | msg | +| protobuf.cpp:222:20:222:39 | call to source | semmle.label | call to source | +| protobuf.cpp:222:20:222:39 | call to source | semmle.label | call to source | +| protobuf.cpp:223:2:223:4 | ParsePartialFromIstream output argument | semmle.label | ParsePartialFromIstream output argument | +| protobuf.cpp:223:30:223:32 | *& ... | semmle.label | *& ... | +| protobuf.cpp:224:7:224:9 | msg | semmle.label | msg | +| protobuf.cpp:229:27:229:53 | call to source | semmle.label | call to source | +| protobuf.cpp:229:27:229:53 | call to source | semmle.label | call to source | +| protobuf.cpp:230:2:230:4 | ParseFromZeroCopyStream output argument | semmle.label | ParseFromZeroCopyStream output argument | +| protobuf.cpp:230:30:230:32 | *& ... | semmle.label | *& ... | +| protobuf.cpp:231:7:231:9 | msg | semmle.label | msg | +| protobuf.cpp:236:27:236:53 | call to source | semmle.label | call to source | +| protobuf.cpp:236:27:236:53 | call to source | semmle.label | call to source | +| protobuf.cpp:237:2:237:4 | ParsePartialFromZeroCopyStream output argument | semmle.label | ParsePartialFromZeroCopyStream output argument | +| protobuf.cpp:237:37:237:39 | *& ... | semmle.label | *& ... | +| protobuf.cpp:238:7:238:9 | msg | semmle.label | msg | +| protobuf.cpp:243:27:243:53 | call to source | semmle.label | call to source | +| protobuf.cpp:243:27:243:53 | call to source | semmle.label | call to source | +| protobuf.cpp:244:2:244:4 | ParseFromBoundedZeroCopyStream output argument | semmle.label | ParseFromBoundedZeroCopyStream output argument | +| protobuf.cpp:244:37:244:39 | *& ... | semmle.label | *& ... | +| protobuf.cpp:245:7:245:9 | msg | semmle.label | msg | +| protobuf.cpp:250:27:250:53 | call to source | semmle.label | call to source | +| protobuf.cpp:250:27:250:53 | call to source | semmle.label | call to source | +| protobuf.cpp:251:2:251:4 | ParsePartialFromBoundedZeroCopyStream output argument | semmle.label | ParsePartialFromBoundedZeroCopyStream output argument | +| protobuf.cpp:251:44:251:46 | *& ... | semmle.label | *& ... | +| protobuf.cpp:252:7:252:9 | msg | semmle.label | msg | +| protobuf.cpp:257:27:257:53 | call to source | semmle.label | call to source | +| protobuf.cpp:257:27:257:53 | call to source | semmle.label | call to source | +| protobuf.cpp:258:2:258:4 | MergeFromBoundedZeroCopyStream output argument | semmle.label | MergeFromBoundedZeroCopyStream output argument | +| protobuf.cpp:258:37:258:39 | *& ... | semmle.label | *& ... | +| protobuf.cpp:259:7:259:9 | msg | semmle.label | msg | +| protobuf.cpp:264:27:264:53 | call to source | semmle.label | call to source | +| protobuf.cpp:264:27:264:53 | call to source | semmle.label | call to source | +| protobuf.cpp:265:2:265:4 | MergePartialFromBoundedZeroCopyStream output argument | semmle.label | MergePartialFromBoundedZeroCopyStream output argument | +| protobuf.cpp:265:44:265:46 | *& ... | semmle.label | *& ... | +| protobuf.cpp:266:7:266:9 | msg | semmle.label | msg | +| protobuf.cpp:271:24:271:47 | call to source | semmle.label | call to source | +| protobuf.cpp:271:24:271:47 | call to source | semmle.label | call to source | +| protobuf.cpp:272:2:272:4 | ParseFromCodedStream output argument | semmle.label | ParseFromCodedStream output argument | +| protobuf.cpp:272:27:272:29 | *& ... | semmle.label | *& ... | +| protobuf.cpp:273:7:273:9 | msg | semmle.label | msg | +| protobuf.cpp:278:24:278:47 | call to source | semmle.label | call to source | +| protobuf.cpp:278:24:278:47 | call to source | semmle.label | call to source | +| protobuf.cpp:279:2:279:4 | ParsePartialFromCodedStream output argument | semmle.label | ParsePartialFromCodedStream output argument | +| protobuf.cpp:279:34:279:36 | *& ... | semmle.label | *& ... | +| protobuf.cpp:280:7:280:9 | msg | semmle.label | msg | +| protobuf.cpp:285:24:285:47 | call to source | semmle.label | call to source | +| protobuf.cpp:285:24:285:47 | call to source | semmle.label | call to source | +| protobuf.cpp:286:2:286:4 | MergeFromCodedStream output argument | semmle.label | MergeFromCodedStream output argument | +| protobuf.cpp:286:27:286:29 | *& ... | semmle.label | *& ... | +| protobuf.cpp:287:7:287:9 | msg | semmle.label | msg | +| protobuf.cpp:292:24:292:47 | call to source | semmle.label | call to source | +| protobuf.cpp:292:24:292:47 | call to source | semmle.label | call to source | +| protobuf.cpp:293:2:293:4 | MergePartialFromCodedStream output argument | semmle.label | MergePartialFromCodedStream output argument | +| protobuf.cpp:293:34:293:36 | *& ... | semmle.label | *& ... | +| protobuf.cpp:294:7:294:9 | msg | semmle.label | msg | +| protobuf.cpp:307:15:307:28 | call to source | semmle.label | call to source | +| protobuf.cpp:307:15:307:28 | call to source | semmle.label | call to source | +| protobuf.cpp:309:2:309:4 | *msg | semmle.label | *msg | +| protobuf.cpp:309:24:309:27 | SerializeToString output argument | semmle.label | SerializeToString output argument | +| protobuf.cpp:310:7:310:9 | out | semmle.label | out | +| protobuf.cpp:314:15:314:28 | call to source | semmle.label | call to source | +| protobuf.cpp:314:15:314:28 | call to source | semmle.label | call to source | +| protobuf.cpp:316:2:316:4 | *msg | semmle.label | *msg | +| protobuf.cpp:316:31:316:34 | SerializePartialToString output argument | semmle.label | SerializePartialToString output argument | +| protobuf.cpp:317:7:317:9 | out | semmle.label | out | +| protobuf.cpp:321:15:321:28 | call to source | semmle.label | call to source | +| protobuf.cpp:321:15:321:28 | call to source | semmle.label | call to source | +| protobuf.cpp:323:2:323:4 | *msg | semmle.label | *msg | +| protobuf.cpp:323:21:323:24 | AppendToString output argument | semmle.label | AppendToString output argument | +| protobuf.cpp:324:7:324:9 | out | semmle.label | out | +| protobuf.cpp:328:15:328:28 | call to source | semmle.label | call to source | +| protobuf.cpp:328:15:328:28 | call to source | semmle.label | call to source | +| protobuf.cpp:330:2:330:4 | *msg | semmle.label | *msg | +| protobuf.cpp:330:28:330:31 | AppendPartialToString output argument | semmle.label | AppendPartialToString output argument | +| protobuf.cpp:331:7:331:9 | out | semmle.label | out | +| protobuf.cpp:335:15:335:28 | call to source | semmle.label | call to source | +| protobuf.cpp:335:15:335:28 | call to source | semmle.label | call to source | +| protobuf.cpp:337:2:337:4 | *msg | semmle.label | *msg | +| protobuf.cpp:337:24:337:27 | SerializeToString output argument | semmle.label | SerializeToString output argument | +| protobuf.cpp:338:7:338:9 | out | semmle.label | out | +| protobuf.cpp:342:15:342:28 | call to source | semmle.label | call to source | +| protobuf.cpp:342:15:342:28 | call to source | semmle.label | call to source | +| protobuf.cpp:344:2:344:4 | *msg | semmle.label | *msg | +| protobuf.cpp:344:31:344:34 | SerializePartialToString output argument | semmle.label | SerializePartialToString output argument | +| protobuf.cpp:345:7:345:9 | out | semmle.label | out | +| protobuf.cpp:349:15:349:28 | call to source | semmle.label | call to source | +| protobuf.cpp:349:15:349:28 | call to source | semmle.label | call to source | +| protobuf.cpp:351:2:351:4 | *msg | semmle.label | *msg | +| protobuf.cpp:351:21:351:24 | AppendToString output argument | semmle.label | AppendToString output argument | +| protobuf.cpp:352:7:352:9 | out | semmle.label | out | +| protobuf.cpp:356:15:356:28 | call to source | semmle.label | call to source | +| protobuf.cpp:356:15:356:28 | call to source | semmle.label | call to source | +| protobuf.cpp:358:2:358:4 | *msg | semmle.label | *msg | +| protobuf.cpp:358:28:358:31 | AppendPartialToString output argument | semmle.label | AppendPartialToString output argument | +| protobuf.cpp:359:7:359:9 | out | semmle.label | out | +| protobuf.cpp:363:15:363:28 | call to source | semmle.label | call to source | +| protobuf.cpp:363:15:363:28 | call to source | semmle.label | call to source | +| protobuf.cpp:365:2:365:4 | *msg | semmle.label | *msg | +| protobuf.cpp:365:23:365:25 | SerializeToArray output argument | semmle.label | SerializeToArray output argument | +| protobuf.cpp:366:7:366:10 | * ... | semmle.label | * ... | +| protobuf.cpp:370:15:370:28 | call to source | semmle.label | call to source | +| protobuf.cpp:370:15:370:28 | call to source | semmle.label | call to source | +| protobuf.cpp:372:2:372:4 | *msg | semmle.label | *msg | +| protobuf.cpp:372:30:372:32 | SerializePartialToArray output argument | semmle.label | SerializePartialToArray output argument | +| protobuf.cpp:373:7:373:10 | * ... | semmle.label | * ... | +| protobuf.cpp:377:15:377:28 | call to source | semmle.label | call to source | +| protobuf.cpp:377:15:377:28 | call to source | semmle.label | call to source | +| protobuf.cpp:379:2:379:4 | *msg | semmle.label | *msg | +| protobuf.cpp:379:22:379:25 | SerializeToCord output argument | semmle.label | SerializeToCord output argument | +| protobuf.cpp:380:7:380:9 | out | semmle.label | out | +| protobuf.cpp:384:15:384:28 | call to source | semmle.label | call to source | +| protobuf.cpp:384:15:384:28 | call to source | semmle.label | call to source | +| protobuf.cpp:386:2:386:4 | *msg | semmle.label | *msg | +| protobuf.cpp:386:29:386:32 | SerializePartialToCord output argument | semmle.label | SerializePartialToCord output argument | +| protobuf.cpp:387:7:387:9 | out | semmle.label | out | +| protobuf.cpp:391:15:391:28 | call to source | semmle.label | call to source | +| protobuf.cpp:391:15:391:28 | call to source | semmle.label | call to source | +| protobuf.cpp:393:2:393:4 | *msg | semmle.label | *msg | +| protobuf.cpp:393:19:393:22 | AppendToCord output argument | semmle.label | AppendToCord output argument | +| protobuf.cpp:394:7:394:9 | out | semmle.label | out | +| protobuf.cpp:398:15:398:28 | call to source | semmle.label | call to source | +| protobuf.cpp:398:15:398:28 | call to source | semmle.label | call to source | +| protobuf.cpp:400:2:400:4 | *msg | semmle.label | *msg | +| protobuf.cpp:400:26:400:29 | AppendPartialToCord output argument | semmle.label | AppendPartialToCord output argument | +| protobuf.cpp:401:7:401:9 | out | semmle.label | out | +| protobuf.cpp:405:15:405:28 | call to source | semmle.label | call to source | +| protobuf.cpp:405:15:405:28 | call to source | semmle.label | call to source | +| protobuf.cpp:407:2:407:4 | *msg | semmle.label | *msg | +| protobuf.cpp:407:25:407:28 | SerializeToOstream output argument | semmle.label | SerializeToOstream output argument | +| protobuf.cpp:408:7:408:9 | out | semmle.label | out | +| protobuf.cpp:412:15:412:28 | call to source | semmle.label | call to source | +| protobuf.cpp:412:15:412:28 | call to source | semmle.label | call to source | +| protobuf.cpp:414:2:414:4 | *msg | semmle.label | *msg | +| protobuf.cpp:414:32:414:35 | SerializePartialToOstream output argument | semmle.label | SerializePartialToOstream output argument | +| protobuf.cpp:415:7:415:9 | out | semmle.label | out | +| protobuf.cpp:419:15:419:28 | call to source | semmle.label | call to source | +| protobuf.cpp:419:15:419:28 | call to source | semmle.label | call to source | +| protobuf.cpp:421:2:421:4 | *msg | semmle.label | *msg | +| protobuf.cpp:421:32:421:35 | SerializeToZeroCopyStream output argument | semmle.label | SerializeToZeroCopyStream output argument | +| protobuf.cpp:422:7:422:9 | out | semmle.label | out | +| protobuf.cpp:426:15:426:28 | call to source | semmle.label | call to source | +| protobuf.cpp:426:15:426:28 | call to source | semmle.label | call to source | +| protobuf.cpp:428:2:428:4 | *msg | semmle.label | *msg | +| protobuf.cpp:428:39:428:42 | SerializePartialToZeroCopyStream output argument | semmle.label | SerializePartialToZeroCopyStream output argument | +| protobuf.cpp:429:7:429:9 | out | semmle.label | out | +| protobuf.cpp:433:15:433:28 | call to source | semmle.label | call to source | +| protobuf.cpp:433:15:433:28 | call to source | semmle.label | call to source | +| protobuf.cpp:435:2:435:4 | *msg | semmle.label | *msg | +| protobuf.cpp:435:29:435:32 | SerializeToCodedStream output argument | semmle.label | SerializeToCodedStream output argument | +| protobuf.cpp:436:7:436:9 | out | semmle.label | out | +| protobuf.cpp:440:15:440:28 | call to source | semmle.label | call to source | +| protobuf.cpp:440:15:440:28 | call to source | semmle.label | call to source | +| protobuf.cpp:442:2:442:4 | *msg | semmle.label | *msg | +| protobuf.cpp:442:36:442:39 | SerializePartialToCodedStream output argument | semmle.label | SerializePartialToCodedStream output argument | +| protobuf.cpp:443:7:443:9 | out | semmle.label | out | +| protobuf.cpp:449:15:449:28 | call to source | semmle.label | call to source | +| protobuf.cpp:449:15:449:28 | call to source | semmle.label | call to source | +| protobuf.cpp:450:7:450:9 | *msg | semmle.label | *msg | +| protobuf.cpp:450:11:450:27 | call to SerializeAsString | semmle.label | call to SerializeAsString | +| protobuf.cpp:454:15:454:28 | call to source | semmle.label | call to source | +| protobuf.cpp:454:15:454:28 | call to source | semmle.label | call to source | +| protobuf.cpp:455:7:455:9 | *msg | semmle.label | *msg | +| protobuf.cpp:455:11:455:34 | call to SerializePartialAsString | semmle.label | call to SerializePartialAsString | +| protobuf.cpp:459:15:459:28 | call to source | semmle.label | call to source | +| protobuf.cpp:459:15:459:28 | call to source | semmle.label | call to source | +| protobuf.cpp:460:7:460:9 | *msg | semmle.label | *msg | +| protobuf.cpp:460:11:460:25 | call to SerializeAsCord | semmle.label | call to SerializeAsCord | +| protobuf.cpp:464:15:464:28 | call to source | semmle.label | call to source | +| protobuf.cpp:464:15:464:28 | call to source | semmle.label | call to source | +| protobuf.cpp:465:7:465:9 | *msg | semmle.label | *msg | +| protobuf.cpp:465:11:465:32 | call to SerializePartialAsCord | semmle.label | call to SerializePartialAsCord | | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | semmle.label | *ymlStepGenerated_with_body | | test.cpp:7:47:7:52 | value2 | semmle.label | value2 | | test.cpp:7:64:7:69 | value2 | semmle.label | value2 | @@ -735,6 +2883,121 @@ nodes | test.cpp:331:10:331:19 | * ... | semmle.label | * ... | | test.cpp:331:11:331:11 | *s [*pointer] | semmle.label | *s [*pointer] | | test.cpp:334:10:334:16 | * ... | semmle.label | * ... | +| test.cpp:341:3:341:22 | *this [Return] [s] | semmle.label | *this [Return] [s] | +| test.cpp:341:30:341:32 | arg | semmle.label | arg | +| test.cpp:342:5:342:8 | *this [post update] [s] | semmle.label | *this [post update] [s] | +| test.cpp:342:5:342:17 | ... = ... | semmle.label | ... = ... | +| test.cpp:345:3:345:22 | *this [Return] [ul] | semmle.label | *this [Return] [ul] | +| test.cpp:345:38:345:40 | arg | semmle.label | arg | +| test.cpp:346:5:346:8 | *this [post update] [ul] | semmle.label | *this [post update] [ul] | +| test.cpp:346:5:346:18 | ... = ... | semmle.label | ... = ... | +| test.cpp:362:15:362:23 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:362:15:362:25 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:363:5:363:5 | forward output argument [s] | semmle.label | forward output argument [s] | +| test.cpp:363:5:363:5 | forward output argument [ul] | semmle.label | forward output argument [ul] | +| test.cpp:363:15:363:15 | *x | semmle.label | *x | +| test.cpp:365:30:365:30 | *f [s] | semmle.label | *f [s] | +| test.cpp:365:30:365:30 | *f [ul] | semmle.label | *f [ul] | +| test.cpp:365:32:365:34 | call to get [s] | semmle.label | call to get [s] | +| test.cpp:365:32:365:34 | call to get [s] | semmle.label | call to get [s] | +| test.cpp:365:32:365:34 | call to get [ul] | semmle.label | call to get [ul] | +| test.cpp:365:32:365:34 | call to get [ul] | semmle.label | call to get [ul] | +| test.cpp:366:13:366:13 | *c [s] | semmle.label | *c [s] | +| test.cpp:366:13:366:15 | s | semmle.label | s | +| test.cpp:366:15:366:15 | s | semmle.label | s | +| test.cpp:367:13:367:13 | *c [ul] | semmle.label | *c [ul] | +| test.cpp:367:13:367:16 | ul | semmle.label | ul | +| test.cpp:367:15:367:16 | ul | semmle.label | ul | +| test.cpp:371:24:371:32 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:371:24:371:34 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:372:5:372:5 | forward output argument [s] | semmle.label | forward output argument [s] | +| test.cpp:372:5:372:5 | forward output argument [ul] | semmle.label | forward output argument [ul] | +| test.cpp:372:15:372:16 | *ul | semmle.label | *ul | +| test.cpp:374:30:374:30 | *f [s] | semmle.label | *f [s] | +| test.cpp:374:30:374:30 | *f [ul] | semmle.label | *f [ul] | +| test.cpp:374:32:374:34 | call to get [s] | semmle.label | call to get [s] | +| test.cpp:374:32:374:34 | call to get [s] | semmle.label | call to get [s] | +| test.cpp:374:32:374:34 | call to get [ul] | semmle.label | call to get [ul] | +| test.cpp:374:32:374:34 | call to get [ul] | semmle.label | call to get [ul] | +| test.cpp:375:13:375:13 | *c [s] | semmle.label | *c [s] | +| test.cpp:375:13:375:15 | s | semmle.label | s | +| test.cpp:375:15:375:15 | s | semmle.label | s | +| test.cpp:376:13:376:13 | *c [ul] | semmle.label | *c [ul] | +| test.cpp:376:13:376:16 | ul | semmle.label | ul | +| test.cpp:376:15:376:16 | ul | semmle.label | ul | +| test.cpp:397:11:397:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:397:11:397:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:398:15:398:36 | call to makeForwarded [x] | semmle.label | call to makeForwarded [x] | +| test.cpp:398:15:398:36 | call to makeForwarded [x] | semmle.label | call to makeForwarded [x] | +| test.cpp:398:38:398:38 | x | semmle.label | x | +| test.cpp:399:11:399:11 | *e [x] | semmle.label | *e [x] | +| test.cpp:399:13:399:13 | x | semmle.label | x | +| test.cpp:399:13:399:13 | x | semmle.label | x | +| test.cpp:404:11:404:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:404:11:404:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:405:3:405:3 | forwardToElement output argument [x] | semmle.label | forwardToElement output argument [x] | +| test.cpp:405:22:405:22 | x | semmle.label | x | +| test.cpp:406:15:406:15 | *f [x] | semmle.label | *f [x] | +| test.cpp:406:17:406:19 | call to get [x] | semmle.label | call to get [x] | +| test.cpp:406:17:406:19 | call to get [x] | semmle.label | call to get [x] | +| test.cpp:407:11:407:11 | *e [x] | semmle.label | *e [x] | +| test.cpp:407:13:407:13 | x | semmle.label | x | +| test.cpp:407:13:407:13 | x | semmle.label | x | +| test.cpp:412:11:412:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:412:11:412:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:413:3:413:3 | emplace output argument [element, x] | semmle.label | emplace output argument [element, x] | +| test.cpp:413:16:413:16 | *x | semmle.label | *x | +| test.cpp:415:15:415:15 | *c [element, x] | semmle.label | *c [element, x] | +| test.cpp:415:20:415:22 | call to get [x] | semmle.label | call to get [x] | +| test.cpp:415:20:415:22 | call to get [x] | semmle.label | call to get [x] | +| test.cpp:416:11:416:11 | *e [x] | semmle.label | *e [x] | +| test.cpp:416:13:416:13 | x | semmle.label | x | +| test.cpp:416:13:416:13 | x | semmle.label | x | +| test.cpp:426:11:426:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:426:11:426:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:427:3:427:3 | emplace output argument [element, x] | semmle.label | emplace output argument [element, x] | +| test.cpp:427:16:427:16 | *x | semmle.label | *x | +| test.cpp:429:34:429:34 | *c [element, x] | semmle.label | *c [element, x] | +| test.cpp:429:39:429:41 | call to get [x] | semmle.label | call to get [x] | +| test.cpp:429:39:429:41 | call to get [x] | semmle.label | call to get [x] | +| test.cpp:430:11:430:11 | *e [x] | semmle.label | *e [x] | +| test.cpp:430:13:430:13 | x | semmle.label | x | +| test.cpp:430:13:430:13 | x | semmle.label | x | +| test.cpp:435:3:435:28 | *ElementWithOverloadedArity [post update] [x] | semmle.label | *ElementWithOverloadedArity [post update] [x] | +| test.cpp:435:3:435:28 | *this [Return] [x] | semmle.label | *this [Return] [x] | +| test.cpp:435:34:435:38 | first | semmle.label | first | +| test.cpp:435:45:435:49 | first | semmle.label | first | +| test.cpp:436:3:436:28 | *ElementWithOverloadedArity [post update] [x] | semmle.label | *ElementWithOverloadedArity [post update] [x] | +| test.cpp:436:3:436:28 | *this [Return] [x] | semmle.label | *this [Return] [x] | +| test.cpp:436:39:436:44 | second | semmle.label | second | +| test.cpp:436:51:436:56 | second | semmle.label | second | +| test.cpp:440:11:440:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:440:11:440:19 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:443:5:443:5 | emplace output argument [element, x] | semmle.label | emplace output argument [element, x] | +| test.cpp:443:18:443:18 | *x | semmle.label | *x | +| test.cpp:444:13:444:13 | *c [element, x] | semmle.label | *c [element, x] | +| test.cpp:444:18:444:20 | *call to get [x] | semmle.label | *call to get [x] | +| test.cpp:444:21:444:21 | x | semmle.label | x | +| test.cpp:444:21:444:21 | x | semmle.label | x | +| test.cpp:453:5:453:5 | emplace output argument [element, x] | semmle.label | emplace output argument [element, x] | +| test.cpp:453:21:453:21 | *x | semmle.label | *x | +| test.cpp:454:13:454:13 | *c [element, x] | semmle.label | *c [element, x] | +| test.cpp:454:18:454:20 | *call to get [x] | semmle.label | *call to get [x] | +| test.cpp:454:21:454:21 | x | semmle.label | x | +| test.cpp:454:21:454:21 | x | semmle.label | x | +| test.cpp:461:5:461:5 | forward output argument | semmle.label | forward output argument | +| test.cpp:461:15:461:23 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:461:15:461:23 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:461:15:461:25 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:462:13:462:13 | *f | semmle.label | *f | +| test.cpp:462:15:462:17 | call to get | semmle.label | call to get | +| test.cpp:462:15:462:17 | call to get | semmle.label | call to get | +| test.cpp:466:5:466:5 | forward output argument | semmle.label | forward output argument | +| test.cpp:466:15:466:26 | *call to ymlSourcePtr | semmle.label | *call to ymlSourcePtr | +| test.cpp:466:15:466:26 | call to ymlSourcePtr | semmle.label | call to ymlSourcePtr | +| test.cpp:466:15:466:28 | **call to ymlSourcePtr | semmle.label | **call to ymlSourcePtr | +| test.cpp:467:13:467:20 | * ... | semmle.label | * ... | +| test.cpp:467:14:467:14 | *f | semmle.label | *f | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | semmle.label | *call to GetCommandLineA | | windows.cpp:22:15:22:29 | call to GetCommandLineA | semmle.label | call to GetCommandLineA | | windows.cpp:24:8:24:11 | * ... | semmle.label | * ... | @@ -956,4 +3219,10 @@ nodes subpaths | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | | test.cpp:172:51:172:51 | x | test.cpp:164:34:164:34 | x | test.cpp:164:7:164:7 | *templateFunction3 | test.cpp:172:13:172:44 | call to templateFunction3 | +| test.cpp:363:15:363:15 | *x | test.cpp:341:30:341:32 | arg | test.cpp:341:3:341:22 | *this [Return] [s] | test.cpp:363:5:363:5 | forward output argument [s] | +| test.cpp:363:15:363:15 | *x | test.cpp:345:38:345:40 | arg | test.cpp:345:3:345:22 | *this [Return] [ul] | test.cpp:363:5:363:5 | forward output argument [ul] | +| test.cpp:372:15:372:16 | *ul | test.cpp:341:30:341:32 | arg | test.cpp:341:3:341:22 | *this [Return] [s] | test.cpp:372:5:372:5 | forward output argument [s] | +| test.cpp:372:15:372:16 | *ul | test.cpp:345:38:345:40 | arg | test.cpp:345:3:345:22 | *this [Return] [ul] | test.cpp:372:5:372:5 | forward output argument [ul] | +| test.cpp:443:18:443:18 | *x | test.cpp:435:34:435:38 | first | test.cpp:435:3:435:28 | *this [Return] [x] | test.cpp:443:5:443:5 | emplace output argument [element, x] | +| test.cpp:453:21:453:21 | *x | test.cpp:436:39:436:44 | second | test.cpp:436:3:436:28 | *this [Return] [x] | test.cpp:453:5:453:5 | emplace output argument [element, x] | testFailures diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml b/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml index 0db87b5da615..105d0a050311 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml @@ -42,3 +42,15 @@ extensions: - ["", "ReverseFlow", True, "get_ptr", "", "", "ReturnValue[*]", "Argument[-1].Field[ReverseFlow::value]", "value", "manual"] - ["", "MyString", True, "operator[]", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"] - ["", "MyString", True, "operator[]", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["", "Forwarder", True, "get", "", "", "Argument[-1]", "ReturnValue", "value", "manual"] + - ["", "Container", True, "get", "", "", "Argument[-1].Element", "ReturnValue[*]", "value", "manual"] + - ["", "Element", True, "Element", "", "", "Argument[0]", "Argument[-1].Field[Element::x]", "value", "manual"] + - ["", "ElementWithDefaultArgument", True, "ElementWithDefaultArgument", "", "", "Argument[0]", "Argument[-1].Field[ElementWithDefaultArgument::x]", "value", "manual"] + - addsTo: + pack: codeql/cpp-all + extensible: forwardsModel + data: # namespace, type, subtypes, name, signature, ext, start, constructor, output, provenance + - ["", "Forwarder", True, "forward", "(Args &&)", "", "0", "T", "Argument[-1]", "manual"] + - ["", "", False, "makeForwarded", "(int)", "", "0", "T", "ReturnValue", "manual"] + - ["", "Forwarder", True, "forwardToElement", "(int)", "", "0", "Element", "Argument[-1]", "manual"] + - ["", "Container", True, "emplace", "(int,Args &&)", "", "1", "T", "Argument[-1].Element", "manual"] diff --git a/cpp/ql/test/library-tests/dataflow/external-models/protobuf.cpp b/cpp/ql/test/library-tests/dataflow/external-models/protobuf.cpp new file mode 100644 index 000000000000..0ee013b4b72c --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/protobuf.cpp @@ -0,0 +1,471 @@ + +// --- stub library headers --- + +#include "std_string.h" + +namespace std { + class istream { + public: + istream(); + }; + + class ostream { + public: + ostream(); + }; +} + +namespace absl { + class string_view { + public: + string_view(); + string_view(const char *s); + string_view(const std::string &s); + }; + + class Cord { + public: + Cord(); + }; +} + +namespace google { +namespace protobuf { + namespace io { + class ZeroCopyInputStream {}; + class ZeroCopyOutputStream {}; + class CodedInputStream {}; + class CodedOutputStream {}; + } + + class MessageLite { + public: + bool ParseFromString(absl::string_view data); + bool ParseFromString(const absl::Cord &data); + bool ParsePartialFromString(absl::string_view data); + bool ParsePartialFromString(const absl::Cord &data); + bool MergeFromString(absl::string_view data); + bool MergeFromString(const absl::Cord &data); + bool MergePartialFromString(absl::string_view data); + bool MergePartialFromString(const absl::Cord &data); + bool ParseFromArray(const void *data, int size); + bool ParsePartialFromArray(const void *data, int size); + bool ParseFromCord(const absl::Cord &data); + bool ParsePartialFromCord(const absl::Cord &data); + bool MergeFromCord(const absl::Cord &data); + bool MergePartialFromCord(const absl::Cord &data); + bool ParseFromIstream(std::istream *input); + bool ParsePartialFromIstream(std::istream *input); + bool ParseFromZeroCopyStream(io::ZeroCopyInputStream *input); + bool ParsePartialFromZeroCopyStream(io::ZeroCopyInputStream *input); + bool ParseFromBoundedZeroCopyStream(io::ZeroCopyInputStream *input, int size); + bool ParsePartialFromBoundedZeroCopyStream(io::ZeroCopyInputStream *input, int size); + bool MergeFromBoundedZeroCopyStream(io::ZeroCopyInputStream *input, int size); + bool MergePartialFromBoundedZeroCopyStream(io::ZeroCopyInputStream *input, int size); + bool ParseFromCodedStream(io::CodedInputStream *input); + bool ParsePartialFromCodedStream(io::CodedInputStream *input); + bool MergeFromCodedStream(io::CodedInputStream *input); + bool MergePartialFromCodedStream(io::CodedInputStream *input); + + bool SerializeToString(std::string *output) const; + bool SerializePartialToString(std::string *output) const; + bool AppendToString(std::string *output) const; + bool AppendPartialToString(std::string *output) const; + bool SerializeToString(absl::Cord *output) const; + bool SerializePartialToString(absl::Cord *output) const; + bool AppendToString(absl::Cord *output) const; + bool AppendPartialToString(absl::Cord *output) const; + bool SerializeToArray(void *data, int size) const; + bool SerializePartialToArray(void *data, int size) const; + bool SerializeToCord(absl::Cord *output) const; + bool SerializePartialToCord(absl::Cord *output) const; + bool AppendToCord(absl::Cord *output) const; + bool AppendPartialToCord(absl::Cord *output) const; + bool SerializeToOstream(std::ostream *output) const; + bool SerializePartialToOstream(std::ostream *output) const; + bool SerializeToZeroCopyStream(io::ZeroCopyOutputStream *output) const; + bool SerializePartialToZeroCopyStream(io::ZeroCopyOutputStream *output) const; + bool SerializeToCodedStream(io::CodedOutputStream *output) const; + bool SerializePartialToCodedStream(io::CodedOutputStream *output) const; + + std::string SerializeAsString() const; + std::string SerializePartialAsString() const; + absl::Cord SerializeAsCord() const; + absl::Cord SerializePartialAsCord() const; + }; + + class Message : public MessageLite { + }; +} +} + +// A generated message type derives from `Message`. +class Person : public google::protobuf::Message { +}; + +// --- test code --- + +template T source(); +void sink(...); + +using namespace google::protobuf::io; + +// Deserialization: the input taints the message. + +void test_ParseFromString_string_view() { + Person msg; + absl::string_view data = source(); + msg.ParseFromString(data); + sink(msg); // $ ir +} + +void test_ParseFromString_Cord() { + Person msg; + absl::Cord data = source(); + msg.ParseFromString(data); + sink(msg); // $ ir +} + +void test_ParsePartialFromString_string_view() { + Person msg; + absl::string_view data = source(); + msg.ParsePartialFromString(data); + sink(msg); // $ ir +} + +void test_ParsePartialFromString_Cord() { + Person msg; + absl::Cord data = source(); + msg.ParsePartialFromString(data); + sink(msg); // $ ir +} + +void test_MergeFromString_string_view() { + Person msg; + absl::string_view data = source(); + msg.MergeFromString(data); + sink(msg); // $ ir +} + +void test_MergeFromString_Cord() { + Person msg; + absl::Cord data = source(); + msg.MergeFromString(data); + sink(msg); // $ ir +} + +void test_MergePartialFromString_string_view() { + Person msg; + absl::string_view data = source(); + msg.MergePartialFromString(data); + sink(msg); // $ ir +} + +void test_MergePartialFromString_Cord() { + Person msg; + absl::Cord data = source(); + msg.MergePartialFromString(data); + sink(msg); // $ ir +} + +void test_ParseFromArray() { + Person msg; + std::string data(source()); + msg.ParseFromArray(data.data(), data.size()); + sink(msg); // $ ir +} + +void test_ParsePartialFromArray() { + Person msg; + std::string data(source()); + msg.ParsePartialFromArray(data.data(), data.size()); + sink(msg); // $ ir +} + +void test_ParseFromCord() { + Person msg; + absl::Cord data = source(); + msg.ParseFromCord(data); + sink(msg); // $ ir +} + +void test_ParsePartialFromCord() { + Person msg; + absl::Cord data = source(); + msg.ParsePartialFromCord(data); + sink(msg); // $ ir +} + +void test_MergeFromCord() { + Person msg; + absl::Cord data = source(); + msg.MergeFromCord(data); + sink(msg); // $ ir +} + +void test_MergePartialFromCord() { + Person msg; + absl::Cord data = source(); + msg.MergePartialFromCord(data); + sink(msg); // $ ir +} + +void test_ParseFromIstream() { + Person msg; + std::istream in = source(); + msg.ParseFromIstream(&in); + sink(msg); // $ ir +} + +void test_ParsePartialFromIstream() { + Person msg; + std::istream in = source(); + msg.ParsePartialFromIstream(&in); + sink(msg); // $ ir +} + +void test_ParseFromZeroCopyStream() { + Person msg; + ZeroCopyInputStream in = source(); + msg.ParseFromZeroCopyStream(&in); + sink(msg); // $ ir +} + +void test_ParsePartialFromZeroCopyStream() { + Person msg; + ZeroCopyInputStream in = source(); + msg.ParsePartialFromZeroCopyStream(&in); + sink(msg); // $ ir +} + +void test_ParseFromBoundedZeroCopyStream() { + Person msg; + ZeroCopyInputStream in = source(); + msg.ParseFromBoundedZeroCopyStream(&in, 1); + sink(msg); // $ ir +} + +void test_ParsePartialFromBoundedZeroCopyStream() { + Person msg; + ZeroCopyInputStream in = source(); + msg.ParsePartialFromBoundedZeroCopyStream(&in, 1); + sink(msg); // $ ir +} + +void test_MergeFromBoundedZeroCopyStream() { + Person msg; + ZeroCopyInputStream in = source(); + msg.MergeFromBoundedZeroCopyStream(&in, 1); + sink(msg); // $ ir +} + +void test_MergePartialFromBoundedZeroCopyStream() { + Person msg; + ZeroCopyInputStream in = source(); + msg.MergePartialFromBoundedZeroCopyStream(&in, 1); + sink(msg); // $ ir +} + +void test_ParseFromCodedStream() { + Person msg; + CodedInputStream in = source(); + msg.ParseFromCodedStream(&in); + sink(msg); // $ ir +} + +void test_ParsePartialFromCodedStream() { + Person msg; + CodedInputStream in = source(); + msg.ParsePartialFromCodedStream(&in); + sink(msg); // $ ir +} + +void test_MergeFromCodedStream() { + Person msg; + CodedInputStream in = source(); + msg.MergeFromCodedStream(&in); + sink(msg); // $ ir +} + +void test_MergePartialFromCodedStream() { + Person msg; + CodedInputStream in = source(); + msg.MergePartialFromCodedStream(&in); + sink(msg); // $ ir +} + +void test_untainted_input() { + Person msg; + absl::Cord data; + msg.ParseFromString(data); + sink(msg); // clean +} + +// Serialization: the message taints the output argument. + +void test_SerializeToString() { + Person msg = source(); + std::string out; + msg.SerializeToString(&out); + sink(out); // $ ir +} + +void test_SerializePartialToString() { + Person msg = source(); + std::string out; + msg.SerializePartialToString(&out); + sink(out); // $ ir +} + +void test_AppendToString() { + Person msg = source(); + std::string out; + msg.AppendToString(&out); + sink(out); // $ ir +} + +void test_AppendPartialToString() { + Person msg = source(); + std::string out; + msg.AppendPartialToString(&out); + sink(out); // $ ir +} + +void test_SerializeToString_Cord() { + Person msg = source(); + absl::Cord out; + msg.SerializeToString(&out); + sink(out); // $ ir +} + +void test_SerializePartialToString_Cord() { + Person msg = source(); + absl::Cord out; + msg.SerializePartialToString(&out); + sink(out); // $ ir +} + +void test_AppendToString_Cord() { + Person msg = source(); + absl::Cord out; + msg.AppendToString(&out); + sink(out); // $ ir +} + +void test_AppendPartialToString_Cord() { + Person msg = source(); + absl::Cord out; + msg.AppendPartialToString(&out); + sink(out); // $ ir +} + +void test_SerializeToArray() { + Person msg = source(); + char buf[64]; + msg.SerializeToArray(buf, sizeof(buf)); + sink(*buf); // $ ir +} + +void test_SerializePartialToArray() { + Person msg = source(); + char buf[64]; + msg.SerializePartialToArray(buf, sizeof(buf)); + sink(*buf); // $ ir +} + +void test_SerializeToCord() { + Person msg = source(); + absl::Cord out; + msg.SerializeToCord(&out); + sink(out); // $ ir +} + +void test_SerializePartialToCord() { + Person msg = source(); + absl::Cord out; + msg.SerializePartialToCord(&out); + sink(out); // $ ir +} + +void test_AppendToCord() { + Person msg = source(); + absl::Cord out; + msg.AppendToCord(&out); + sink(out); // $ ir +} + +void test_AppendPartialToCord() { + Person msg = source(); + absl::Cord out; + msg.AppendPartialToCord(&out); + sink(out); // $ ir +} + +void test_SerializeToOstream() { + Person msg = source(); + std::ostream out; + msg.SerializeToOstream(&out); + sink(out); // $ ir +} + +void test_SerializePartialToOstream() { + Person msg = source(); + std::ostream out; + msg.SerializePartialToOstream(&out); + sink(out); // $ ir +} + +void test_SerializeToZeroCopyStream() { + Person msg = source(); + ZeroCopyOutputStream out; + msg.SerializeToZeroCopyStream(&out); + sink(out); // $ ir +} + +void test_SerializePartialToZeroCopyStream() { + Person msg = source(); + ZeroCopyOutputStream out; + msg.SerializePartialToZeroCopyStream(&out); + sink(out); // $ ir +} + +void test_SerializeToCodedStream() { + Person msg = source(); + CodedOutputStream out; + msg.SerializeToCodedStream(&out); + sink(out); // $ ir +} + +void test_SerializePartialToCodedStream() { + Person msg = source(); + CodedOutputStream out; + msg.SerializePartialToCodedStream(&out); + sink(out); // $ ir +} + +// Serialization: the message taints the returned bytes. + +void test_SerializeAsString() { + Person msg = source(); + sink(msg.SerializeAsString()); // $ ir +} + +void test_SerializePartialAsString() { + Person msg = source(); + sink(msg.SerializePartialAsString()); // $ ir +} + +void test_SerializeAsCord() { + Person msg = source(); + sink(msg.SerializeAsCord()); // $ ir +} + +void test_SerializePartialAsCord() { + Person msg = source(); + sink(msg.SerializePartialAsCord()); // $ ir +} + +void test_untainted_message() { + Person msg; + sink(msg.SerializeAsString()); // clean +} diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected index 5851e825013d..3a484db7a28c 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected @@ -1,5 +1,5 @@ -| asio_streams.cpp:93:29:93:39 | recv_buffer | remote-sink | -| asio_streams.cpp:103:29:103:39 | send_buffer | remote-sink | +| asio_streams.cpp:122:29:122:39 | recv_buffer | remote-sink | +| asio_streams.cpp:132:29:132:39 | send_buffer | remote-sink | | test.cpp:12:10:12:10 | 0 | test-sink | | test.cpp:14:10:14:10 | x | test-sink | | test.cpp:18:10:18:10 | y | test-sink | @@ -43,3 +43,16 @@ | test.cpp:331:10:331:19 | * ... | test-sink | | test.cpp:333:15:333:20 | source | test-sink | | test.cpp:334:10:334:16 | * ... | test-sink | +| test.cpp:366:15:366:15 | s | test-sink | +| test.cpp:367:15:367:16 | ul | test-sink | +| test.cpp:375:15:375:15 | s | test-sink | +| test.cpp:376:15:376:16 | ul | test-sink | +| test.cpp:399:13:399:13 | x | test-sink | +| test.cpp:407:13:407:13 | x | test-sink | +| test.cpp:416:13:416:13 | x | test-sink | +| test.cpp:430:13:430:13 | x | test-sink | +| test.cpp:444:21:444:21 | x | test-sink | +| test.cpp:449:21:449:21 | x | test-sink | +| test.cpp:454:21:454:21 | x | test-sink | +| test.cpp:462:15:462:17 | call to get | test-sink | +| test.cpp:467:13:467:20 | * ... | test-sink | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected index b30f1e88b99a..82b5c09d02f6 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected @@ -1,4 +1,4 @@ -| asio_streams.cpp:87:34:87:44 | read_until output argument | remote | +| asio_streams.cpp:116:34:116:44 | read_until output argument | remote | | azure.cpp:253:48:253:60 | call to GetBodyStream | remote | | azure.cpp:273:52:273:61 | call to GetHeaders | remote | | azure.cpp:277:38:277:44 | call to GetBody | remote | @@ -19,6 +19,14 @@ | test.cpp:222:10:222:18 | call to ymlSource | local | | test.cpp:297:33:297:41 | call to ymlSource | local | | test.cpp:317:51:317:59 | call to ymlSource | local | +| test.cpp:362:15:362:23 | call to ymlSource | local | +| test.cpp:371:24:371:32 | call to ymlSource | local | +| test.cpp:397:11:397:19 | call to ymlSource | local | +| test.cpp:404:11:404:19 | call to ymlSource | local | +| test.cpp:412:11:412:19 | call to ymlSource | local | +| test.cpp:426:11:426:19 | call to ymlSource | local | +| test.cpp:440:11:440:19 | call to ymlSource | local | +| test.cpp:461:15:461:23 | call to ymlSource | local | | windows.cpp:22:15:22:29 | call to GetCommandLineA | local | | windows.cpp:34:17:34:38 | call to GetEnvironmentStringsA | local | | windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | local | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/std_string.h b/cpp/ql/test/library-tests/dataflow/external-models/std_string.h new file mode 100644 index 000000000000..abafc37f816e --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/std_string.h @@ -0,0 +1,25 @@ +#ifndef CODEQL_TEST_STD_STRING_H +#define CODEQL_TEST_STD_STRING_H + +namespace std { + typedef unsigned long size_t; + + template class allocator { + }; + + template struct char_traits { + }; + + template, class Allocator = allocator > + class basic_string { + public: + basic_string(); + basic_string(const charT* s, const Allocator& a = Allocator()); + const charT* data() const; + size_t size() const; + }; + + typedef basic_string string; +} + +#endif diff --git a/cpp/ql/test/library-tests/dataflow/external-models/steps.expected b/cpp/ql/test/library-tests/dataflow/external-models/steps.expected index 0fe13460cfbf..2f9c6d74208d 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/steps.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/steps.expected @@ -1,9 +1,460 @@ -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | +| asio_streams.cpp:129:64:129:71 | *send_str | asio_streams.cpp:129:44:129:62 | call to buffer | +| asio_streams.cpp:148:24:148:27 | *host | asio_streams.cpp:148:16:148:22 | call to resolve | +| asio_streams.cpp:148:30:148:36 | *service | asio_streams.cpp:148:16:148:22 | call to resolve | +| asio_streams.cpp:149:24:149:27 | *host | asio_streams.cpp:149:16:149:22 | call to resolve | +| asio_streams.cpp:149:30:149:36 | *service | asio_streams.cpp:149:16:149:22 | call to resolve | +| asio_streams.cpp:150:24:150:27 | *host | asio_streams.cpp:150:16:150:22 | call to resolve | +| asio_streams.cpp:150:30:150:36 | *service | asio_streams.cpp:150:16:150:22 | call to resolve | +| asio_streams.cpp:151:24:151:27 | *host | asio_streams.cpp:151:16:151:22 | call to resolve | +| asio_streams.cpp:151:30:151:36 | *service | asio_streams.cpp:151:16:151:22 | call to resolve | +| asio_streams.cpp:153:24:153:32 | host_view | asio_streams.cpp:153:16:153:22 | call to resolve | +| asio_streams.cpp:153:35:153:46 | service_view | asio_streams.cpp:153:16:153:22 | call to resolve | +| asio_streams.cpp:154:24:154:32 | host_view | asio_streams.cpp:154:16:154:22 | call to resolve | +| asio_streams.cpp:154:35:154:46 | service_view | asio_streams.cpp:154:16:154:22 | call to resolve | +| asio_streams.cpp:155:24:155:32 | host_view | asio_streams.cpp:155:16:155:22 | call to resolve | +| asio_streams.cpp:155:35:155:46 | service_view | asio_streams.cpp:155:16:155:22 | call to resolve | +| asio_streams.cpp:156:24:156:32 | host_view | asio_streams.cpp:156:16:156:22 | call to resolve | +| asio_streams.cpp:156:35:156:46 | service_view | asio_streams.cpp:156:16:156:22 | call to resolve | +| asio_streams.cpp:158:34:158:37 | *host | asio_streams.cpp:158:16:158:22 | call to resolve | +| asio_streams.cpp:158:40:158:46 | *service | asio_streams.cpp:158:16:158:22 | call to resolve | +| asio_streams.cpp:159:34:159:37 | *host | asio_streams.cpp:159:16:159:22 | call to resolve | +| asio_streams.cpp:159:40:159:46 | *service | asio_streams.cpp:159:16:159:22 | call to resolve | +| asio_streams.cpp:160:34:160:37 | *host | asio_streams.cpp:160:16:160:22 | call to resolve | +| asio_streams.cpp:160:40:160:46 | *service | asio_streams.cpp:160:16:160:22 | call to resolve | +| asio_streams.cpp:161:34:161:37 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | +| asio_streams.cpp:161:40:161:46 | *service | asio_streams.cpp:161:16:161:22 | call to resolve | +| asio_streams.cpp:163:34:163:42 | host_view | asio_streams.cpp:163:16:163:22 | call to resolve | +| asio_streams.cpp:163:45:163:56 | service_view | asio_streams.cpp:163:16:163:22 | call to resolve | +| asio_streams.cpp:164:34:164:42 | host_view | asio_streams.cpp:164:16:164:22 | call to resolve | +| asio_streams.cpp:164:45:164:56 | service_view | asio_streams.cpp:164:16:164:22 | call to resolve | +| asio_streams.cpp:165:34:165:42 | host_view | asio_streams.cpp:165:16:165:22 | call to resolve | +| asio_streams.cpp:165:45:165:56 | service_view | asio_streams.cpp:165:16:165:22 | call to resolve | +| asio_streams.cpp:166:34:166:42 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | +| asio_streams.cpp:166:45:166:56 | service_view | asio_streams.cpp:166:16:166:22 | call to resolve | +| asio_streams.cpp:179:24:179:27 | *host | asio_streams.cpp:179:16:179:22 | call to resolve | +| asio_streams.cpp:179:30:179:36 | *service | asio_streams.cpp:179:16:179:22 | call to resolve | +| asio_streams.cpp:180:24:180:27 | *host | asio_streams.cpp:180:16:180:22 | call to resolve | +| asio_streams.cpp:180:30:180:36 | *service | asio_streams.cpp:180:16:180:22 | call to resolve | +| asio_streams.cpp:181:24:181:27 | *host | asio_streams.cpp:181:16:181:22 | call to resolve | +| asio_streams.cpp:181:30:181:36 | *service | asio_streams.cpp:181:16:181:22 | call to resolve | +| asio_streams.cpp:182:24:182:27 | *host | asio_streams.cpp:182:16:182:22 | call to resolve | +| asio_streams.cpp:182:30:182:36 | *service | asio_streams.cpp:182:16:182:22 | call to resolve | +| asio_streams.cpp:184:24:184:32 | host_view | asio_streams.cpp:184:16:184:22 | call to resolve | +| asio_streams.cpp:184:35:184:46 | service_view | asio_streams.cpp:184:16:184:22 | call to resolve | +| asio_streams.cpp:185:24:185:32 | host_view | asio_streams.cpp:185:16:185:22 | call to resolve | +| asio_streams.cpp:185:35:185:46 | service_view | asio_streams.cpp:185:16:185:22 | call to resolve | +| asio_streams.cpp:186:24:186:32 | host_view | asio_streams.cpp:186:16:186:22 | call to resolve | +| asio_streams.cpp:186:35:186:46 | service_view | asio_streams.cpp:186:16:186:22 | call to resolve | +| asio_streams.cpp:187:24:187:32 | host_view | asio_streams.cpp:187:16:187:22 | call to resolve | +| asio_streams.cpp:187:35:187:46 | service_view | asio_streams.cpp:187:16:187:22 | call to resolve | +| asio_streams.cpp:189:34:189:37 | *host | asio_streams.cpp:189:16:189:22 | call to resolve | +| asio_streams.cpp:189:40:189:46 | *service | asio_streams.cpp:189:16:189:22 | call to resolve | +| asio_streams.cpp:190:34:190:37 | *host | asio_streams.cpp:190:16:190:22 | call to resolve | +| asio_streams.cpp:190:40:190:46 | *service | asio_streams.cpp:190:16:190:22 | call to resolve | +| asio_streams.cpp:191:34:191:37 | *host | asio_streams.cpp:191:16:191:22 | call to resolve | +| asio_streams.cpp:191:40:191:46 | *service | asio_streams.cpp:191:16:191:22 | call to resolve | +| asio_streams.cpp:192:34:192:37 | *host | asio_streams.cpp:192:16:192:22 | call to resolve | +| asio_streams.cpp:192:40:192:46 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | +| asio_streams.cpp:194:34:194:42 | host_view | asio_streams.cpp:194:16:194:22 | call to resolve | +| asio_streams.cpp:194:45:194:56 | service_view | asio_streams.cpp:194:16:194:22 | call to resolve | +| asio_streams.cpp:195:34:195:42 | host_view | asio_streams.cpp:195:16:195:22 | call to resolve | +| asio_streams.cpp:195:45:195:56 | service_view | asio_streams.cpp:195:16:195:22 | call to resolve | +| asio_streams.cpp:196:34:196:42 | host_view | asio_streams.cpp:196:16:196:22 | call to resolve | +| asio_streams.cpp:196:45:196:56 | service_view | asio_streams.cpp:196:16:196:22 | call to resolve | +| asio_streams.cpp:197:34:197:42 | host_view | asio_streams.cpp:197:16:197:22 | call to resolve | +| asio_streams.cpp:197:45:197:56 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | | azure.cpp:252:79:252:98 | call to string | azure.cpp:252:62:252:99 | call to Url | | azure.cpp:257:5:257:8 | *resp | azure.cpp:257:16:257:21 | Read output argument | | azure.cpp:262:5:262:8 | *resp | azure.cpp:262:23:262:28 | ReadToCount output argument | | azure.cpp:287:79:287:98 | call to string | azure.cpp:287:62:287:99 | call to Url | | azure.cpp:289:24:289:56 | call to GetHeader | azure.cpp:289:63:289:65 | call to Value | +| bal.cpp:132:17:132:18 | *sb | bal.cpp:132:21:132:24 | decode output argument | +| bal.cpp:141:17:141:19 | ** ... | bal.cpp:141:22:141:25 | decode output argument | +| bal.cpp:150:20:150:21 | *sb | bal.cpp:150:24:150:27 | decodeAny output argument | +| bal.cpp:159:40:159:42 | *obj | bal.cpp:159:17:159:37 | encode output argument | +| bal.cpp:167:43:167:45 | *obj | bal.cpp:167:20:167:40 | encodeAny output argument | +| bal.cpp:180:17:180:18 | *sb | bal.cpp:180:21:180:24 | decode output argument | +| bal.cpp:190:17:190:19 | ** ... | bal.cpp:190:22:190:25 | decode output argument | +| bal.cpp:199:20:199:21 | *sb | bal.cpp:199:24:199:27 | decodeAny output argument | +| bal.cpp:208:40:208:42 | *obj | bal.cpp:208:17:208:37 | encode output argument | +| bal.cpp:216:43:216:45 | *obj | bal.cpp:216:20:216:40 | encodeAny output argument | +| bal.cpp:226:17:226:18 | *sb | bal.cpp:226:21:226:24 | decode output argument | +| bal.cpp:229:40:229:42 | *rec | bal.cpp:229:17:229:37 | encode output argument | +| bal.cpp:238:17:238:18 | *sb | bal.cpp:238:21:238:24 | decode output argument | +| bal.cpp:249:17:249:19 | ** ... | bal.cpp:249:16:249:27 | *call to decode | +| bal.cpp:249:17:249:19 | ** ... | bal.cpp:249:22:249:25 | decode output argument | +| bal.cpp:258:35:258:37 | ** ... | bal.cpp:258:34:258:52 | *call to decode | +| bal.cpp:258:35:258:37 | ** ... | bal.cpp:258:40:258:43 | decode output argument | +| bal.cpp:268:17:268:18 | *sb | bal.cpp:268:21:268:24 | decode output argument | +| bal.cpp:276:22:276:25 | *call to data | bal.cpp:276:43:276:46 | decode output argument | +| bal.cpp:305:20:305:22 | ** ... | bal.cpp:305:19:305:30 | *call to decodeAny | +| bal.cpp:305:20:305:22 | ** ... | bal.cpp:305:25:305:28 | decodeAny output argument | +| bal.cpp:314:38:314:40 | ** ... | bal.cpp:314:37:314:48 | *call to decodeAny | +| bal.cpp:314:38:314:40 | ** ... | bal.cpp:314:43:314:46 | decodeAny output argument | +| bal.cpp:324:20:324:21 | *sb | bal.cpp:324:24:324:27 | decodeAny output argument | +| bal.cpp:333:20:333:22 | ** ... | bal.cpp:333:19:333:30 | *call to decodeAny | +| bal.cpp:333:20:333:22 | ** ... | bal.cpp:333:25:333:28 | decodeAny output argument | +| bal.cpp:342:38:342:40 | ** ... | bal.cpp:342:37:342:48 | *call to decodeAny | +| bal.cpp:342:38:342:40 | ** ... | bal.cpp:342:43:342:46 | decodeAny output argument | +| bal.cpp:352:20:352:21 | *sb | bal.cpp:352:24:352:27 | decodeAny output argument | +| bal.cpp:360:40:360:42 | *obj | bal.cpp:360:17:360:37 | encode output argument | +| bal.cpp:368:17:368:36 | ** ... | bal.cpp:368:16:368:43 | *call to encode | +| bal.cpp:368:39:368:41 | *obj | bal.cpp:368:16:368:43 | *call to encode | +| bal.cpp:368:39:368:41 | *obj | bal.cpp:368:17:368:36 | encode output argument | +| bal.cpp:376:35:376:54 | ** ... | bal.cpp:376:34:376:61 | *call to encode | +| bal.cpp:376:57:376:59 | *obj | bal.cpp:376:34:376:61 | *call to encode | +| bal.cpp:376:57:376:59 | *obj | bal.cpp:376:35:376:54 | encode output argument | +| bal.cpp:386:35:386:37 | ** ... | bal.cpp:386:34:386:44 | *call to encode | +| bal.cpp:386:40:386:42 | *obj | bal.cpp:386:34:386:44 | *call to encode | +| bal.cpp:386:40:386:42 | *obj | bal.cpp:386:35:386:37 | encode output argument | +| bal.cpp:394:47:394:49 | *obj | bal.cpp:394:25:394:44 | encodeToStream output argument | +| bal.cpp:412:43:412:45 | *obj | bal.cpp:412:20:412:40 | encodeAny output argument | +| bal.cpp:420:20:420:39 | ** ... | bal.cpp:420:19:420:46 | *call to encodeAny | +| bal.cpp:420:42:420:44 | *obj | bal.cpp:420:19:420:46 | *call to encodeAny | +| bal.cpp:420:42:420:44 | *obj | bal.cpp:420:20:420:39 | encodeAny output argument | +| bal.cpp:428:38:428:57 | ** ... | bal.cpp:428:37:428:64 | *call to encodeAny | +| bal.cpp:428:60:428:62 | *obj | bal.cpp:428:37:428:64 | *call to encodeAny | +| bal.cpp:428:60:428:62 | *obj | bal.cpp:428:38:428:57 | encodeAny output argument | +| bal.cpp:437:50:437:52 | *obj | bal.cpp:437:28:437:47 | encodeAnyToStream output argument | +| bal.cpp:446:43:446:46 | ** ... | bal.cpp:446:20:446:40 | encodeAny output argument | +| bal.cpp:455:20:455:39 | ** ... | bal.cpp:455:19:455:47 | *call to encodeAny | +| bal.cpp:455:42:455:45 | ** ... | bal.cpp:455:19:455:47 | *call to encodeAny | +| bal.cpp:455:42:455:45 | ** ... | bal.cpp:455:20:455:39 | encodeAny output argument | +| bal.cpp:464:38:464:57 | ** ... | bal.cpp:464:37:464:65 | *call to encodeAny | +| bal.cpp:464:60:464:63 | ** ... | bal.cpp:464:37:464:65 | *call to encodeAny | +| bal.cpp:464:60:464:63 | ** ... | bal.cpp:464:38:464:57 | encodeAny output argument | +| bdlbb.cpp:39:49:39:52 | *call to data | bdlbb.cpp:39:37:39:41 | copy output argument | +| bdlbb.cpp:41:42:41:45 | *blob | bdlbb.cpp:41:37:41:39 | copy output argument | +| bdlbb.cpp:48:49:48:52 | *call to data | bdlbb.cpp:48:37:48:41 | copy output argument | +| bdlbb.cpp:49:18:49:21 | *blob | bdlbb.cpp:49:29:49:32 | *call to buffer | +| bdlbb.cpp:49:29:49:32 | *call to buffer | bdlbb.cpp:49:18:49:38 | *call to data | +| bdlbb.cpp:57:49:57:52 | *call to data | bdlbb.cpp:57:37:57:41 | copy output argument | +| bdlbb.cpp:58:18:58:21 | *blob | bdlbb.cpp:58:29:58:32 | *call to buffer | +| bdlbb.cpp:58:29:58:32 | *call to buffer | bdlbb.cpp:58:39:58:41 | *call to buffer | +| bdlbb.cpp:65:49:65:52 | *call to data | bdlbb.cpp:65:37:65:41 | copy output argument | +| bdlbb.cpp:67:72:67:75 | *blob | bdlbb.cpp:67:12:67:65 | *call to getContiguousRangeOrCopy | +| bdlbb.cpp:67:72:67:75 | *blob | bdlbb.cpp:67:67:67:69 | getContiguousRangeOrCopy output argument | +| bdlbb.cpp:75:48:75:51 | *call to data | bdlbb.cpp:75:37:75:40 | copy output argument | +| bdlbb.cpp:77:46:77:48 | *src | bdlbb.cpp:77:37:77:40 | copy output argument | +| bdlbb.cpp:79:42:79:44 | *dst | bdlbb.cpp:79:37:79:39 | copy output argument | +| bmqa.cpp:90:2:90:4 | *msg | bmqa.cpp:90:15:90:19 | getData output argument | +| bmqa.cpp:92:42:92:45 | *blob | bmqa.cpp:92:37:92:39 | copy output argument | +| bmqa.cpp:99:42:99:46 | *event | bmqa.cpp:99:49:99:63 | call to messageIterator | +| bmqa.cpp:101:43:101:44 | *it | bmqa.cpp:101:53:101:55 | *call to message | +| bmqa.cpp:103:3:103:5 | *msg | bmqa.cpp:103:15:103:19 | getData output argument | +| bmqa.cpp:105:43:105:46 | *blob | bmqa.cpp:105:38:105:40 | copy output argument | +| bmqa.cpp:113:47:113:50 | *call to data | bmqa.cpp:113:37:113:39 | copy output argument | +| bmqa.cpp:115:2:115:4 | *msg | bmqa.cpp:115:16:115:21 | *call to setDataRef | +| bmqa.cpp:115:17:115:19 | *& ... | bmqa.cpp:115:2:115:4 | setDataRef output argument | +| bmqa.cpp:115:17:115:19 | *& ... | bmqa.cpp:115:16:115:21 | *call to setDataRef | +| bmqa.cpp:117:2:117:4 | *msg | bmqa.cpp:117:14:117:17 | getData output argument | +| bmqa.cpp:119:42:119:44 | *out | bmqa.cpp:119:37:119:39 | copy output argument | +| bmqa.cpp:126:2:126:4 | *msg | bmqa.cpp:126:16:126:36 | *call to setDataRef | +| bmqa.cpp:126:19:126:22 | *call to data | bmqa.cpp:126:2:126:4 | setDataRef output argument | +| bmqa.cpp:126:19:126:22 | *call to data | bmqa.cpp:126:16:126:36 | *call to setDataRef | +| bmqa.cpp:128:2:128:4 | *msg | bmqa.cpp:128:14:128:17 | getData output argument | +| bmqa.cpp:130:42:130:44 | *out | bmqa.cpp:130:37:130:39 | copy output argument | +| bmqa.cpp:137:2:137:4 | *msg | bmqa.cpp:137:13:137:33 | *call to setData | +| bmqa.cpp:137:16:137:19 | *call to data | bmqa.cpp:137:2:137:4 | setData output argument | +| bmqa.cpp:137:16:137:19 | *call to data | bmqa.cpp:137:13:137:33 | *call to setData | +| bmqa.cpp:139:2:139:4 | *msg | bmqa.cpp:139:14:139:17 | getData output argument | +| bmqa.cpp:141:42:141:44 | *out | bmqa.cpp:141:37:141:39 | copy output argument | +| bmqa.cpp:148:36:148:38 | *msg | bmqa.cpp:148:41:148:45 | call to clone | +| bmqa.cpp:150:2:150:5 | *copy | bmqa.cpp:150:15:150:19 | getData output argument | +| bmqa.cpp:152:42:152:45 | *blob | bmqa.cpp:152:37:152:39 | copy output argument | +| bmqa.cpp:160:2:160:4 | *msg | bmqa.cpp:160:22:160:27 | loadProperties output argument | +| bmqa.cpp:161:29:161:33 | *props | bmqa.cpp:161:54:161:61 | *call to getPropertyAsString | +| bmqa.cpp:169:2:169:4 | *msg | bmqa.cpp:169:22:169:27 | loadProperties output argument | +| bmqa.cpp:178:2:178:4 | *msg | bmqa.cpp:178:22:178:27 | loadProperties output argument | +| bmqa.cpp:187:2:187:4 | *msg | bmqa.cpp:187:22:187:27 | loadProperties output argument | +| bmqa.cpp:189:29:189:33 | *props | bmqa.cpp:189:56:189:69 | *call to getPropertyAsStringOr | +| bmqa.cpp:197:29:197:33 | *props | bmqa.cpp:197:56:197:69 | *call to getPropertyAsStringOr | +| bmqa.cpp:205:2:205:4 | *msg | bmqa.cpp:205:22:205:27 | loadProperties output argument | +| bmqa.cpp:224:2:224:4 | *msg | bmqa.cpp:224:22:224:27 | loadProperties output argument | +| bmqa.cpp:231:49:231:52 | *call to data | bmqa.cpp:231:37:231:41 | copy output argument | +| bmqa.cpp:233:17:233:20 | *blob | bmqa.cpp:233:2:233:6 | streamIn output argument | +| bmqa.cpp:234:8:234:12 | *props | bmqa.cpp:234:33:234:40 | *call to getPropertyAsString | +| bmqa.cpp:240:49:240:52 | *call to data | bmqa.cpp:240:37:240:41 | copy output argument | +| bmqa.cpp:242:14:242:17 | *blob | bmqa.cpp:242:2:242:3 | streamIn output argument | +| bmqa.cpp:244:2:244:4 | *msg | bmqa.cpp:244:22:244:27 | *call to setPropertiesRef | +| bmqa.cpp:244:23:244:25 | *& ... | bmqa.cpp:244:2:244:4 | setPropertiesRef output argument | +| bmqa.cpp:244:23:244:25 | *& ... | bmqa.cpp:244:22:244:27 | *call to setPropertiesRef | +| bmqa.cpp:246:2:246:4 | *msg | bmqa.cpp:246:21:246:24 | loadProperties output argument | +| bmqa.cpp:247:8:247:10 | *out | bmqa.cpp:247:31:247:38 | *call to getPropertyAsString | +| bmqa.cpp:254:2:254:4 | *msg | bmqa.cpp:254:22:254:27 | loadProperties output argument | +| bmqa.cpp:256:41:256:45 | *props | bmqa.cpp:256:56:256:66 | *call to streamOut | +| bmqa.cpp:258:42:258:45 | *blob | bmqa.cpp:258:37:258:39 | copy output argument | +| bmqa.cpp:266:2:266:4 | *msg | bmqa.cpp:266:22:266:27 | loadProperties output argument | +| bmqa.cpp:268:8:268:11 | *copy | bmqa.cpp:268:32:268:39 | *call to getPropertyAsString | +| bmqa.cpp:275:2:275:4 | *msg | bmqa.cpp:275:22:275:27 | loadProperties output argument | +| bmqa.cpp:278:8:278:11 | *copy | bmqa.cpp:278:32:278:39 | *call to getPropertyAsString | +| bmqa.cpp:285:2:285:4 | *msg | bmqa.cpp:285:22:285:27 | loadProperties output argument | +| bmqa.cpp:287:8:287:21 | *call to operator= | bmqa.cpp:287:42:287:49 | *call to getPropertyAsString | +| bmqa.cpp:294:28:294:32 | call to basic_string_view | bmqa.cpp:294:2:294:6 | setPropertyAsString output argument | +| bmqa.cpp:294:35:294:40 | * ... | bmqa.cpp:294:2:294:6 | setPropertyAsString output argument | +| bmqa.cpp:295:8:295:12 | *props | bmqa.cpp:295:33:295:40 | *call to getPropertyAsString | +| bmqa.cpp:301:28:301:32 | call to basic_string_view | bmqa.cpp:301:2:301:6 | setPropertyAsString output argument | +| bmqa.cpp:301:35:301:39 | value | bmqa.cpp:301:2:301:6 | setPropertyAsString output argument | +| bmqa.cpp:302:8:302:12 | *props | bmqa.cpp:302:33:302:40 | *call to getPropertyAsString | +| bmqa.cpp:309:28:309:32 | call to basic_string_view | bmqa.cpp:309:2:309:6 | setPropertyAsBinary output argument | +| bmqa.cpp:309:35:309:40 | * ... | bmqa.cpp:309:2:309:6 | setPropertyAsBinary output argument | +| bmqa.cpp:317:26:317:29 | name | bmqa.cpp:317:2:317:6 | setPropertyAsBool output argument | +| bmqa.cpp:318:50:318:55 | *& ... | bmqa.cpp:318:47:318:48 | call to MessagePropertiesIterator | +| bmqa.cpp:319:8:319:9 | *it | bmqa.cpp:319:15:319:17 | *call to name | +| bmqa.cpp:325:26:325:29 | name | bmqa.cpp:325:2:325:6 | setPropertyAsChar output argument | +| bmqa.cpp:326:50:326:55 | *& ... | bmqa.cpp:326:47:326:48 | call to MessagePropertiesIterator | +| bmqa.cpp:327:8:327:9 | *it | bmqa.cpp:327:15:327:17 | *call to name | +| bmqa.cpp:333:27:333:30 | name | bmqa.cpp:333:2:333:6 | setPropertyAsShort output argument | +| bmqa.cpp:334:50:334:55 | *& ... | bmqa.cpp:334:47:334:48 | call to MessagePropertiesIterator | +| bmqa.cpp:335:8:335:9 | *it | bmqa.cpp:335:15:335:17 | *call to name | +| bmqa.cpp:341:27:341:30 | name | bmqa.cpp:341:2:341:6 | setPropertyAsInt32 output argument | +| bmqa.cpp:342:50:342:55 | *& ... | bmqa.cpp:342:47:342:48 | call to MessagePropertiesIterator | +| bmqa.cpp:343:8:343:9 | *it | bmqa.cpp:343:15:343:17 | *call to name | +| bmqa.cpp:349:27:349:30 | name | bmqa.cpp:349:2:349:6 | setPropertyAsInt64 output argument | +| bmqa.cpp:350:50:350:55 | *& ... | bmqa.cpp:350:47:350:48 | call to MessagePropertiesIterator | +| bmqa.cpp:351:8:351:9 | *it | bmqa.cpp:351:15:351:17 | *call to name | +| bmqa.cpp:357:28:357:31 | name | bmqa.cpp:357:2:357:6 | setPropertyAsString output argument | +| bmqa.cpp:357:34:357:40 | call to basic_string_view | bmqa.cpp:357:2:357:6 | setPropertyAsString output argument | +| bmqa.cpp:358:50:358:55 | *& ... | bmqa.cpp:358:47:358:48 | call to MessagePropertiesIterator | +| bmqa.cpp:359:8:359:9 | *it | bmqa.cpp:359:15:359:17 | *call to name | +| bmqa.cpp:365:28:365:31 | name | bmqa.cpp:365:2:365:6 | setPropertyAsBinary output argument | +| bmqa.cpp:365:34:365:56 | call to span | bmqa.cpp:365:2:365:6 | setPropertyAsBinary output argument | +| bmqa.cpp:366:50:366:55 | *& ... | bmqa.cpp:366:47:366:48 | call to MessagePropertiesIterator | +| bmqa.cpp:367:8:367:9 | *it | bmqa.cpp:367:15:367:17 | *call to name | +| bmqa.cpp:374:2:374:4 | *msg | bmqa.cpp:374:22:374:27 | loadProperties output argument | +| bmqa.cpp:375:50:375:55 | *& ... | bmqa.cpp:375:47:375:48 | call to MessagePropertiesIterator | +| bmqa.cpp:377:9:377:10 | *it | bmqa.cpp:377:16:377:18 | *call to name | +| bmqa.cpp:378:9:378:10 | *it | bmqa.cpp:378:23:378:25 | *call to getAsString | +| bmqa.cpp:388:2:388:4 | *msg | bmqa.cpp:388:22:388:27 | loadProperties output argument | +| bmqa.cpp:389:50:389:55 | *& ... | bmqa.cpp:389:47:389:48 | call to MessagePropertiesIterator | +| bmqa.cpp:392:8:392:11 | *copy | bmqa.cpp:392:24:392:26 | *call to getAsString | +| bmqa.cpp:393:8:393:18 | *call to operator= | bmqa.cpp:393:24:393:26 | *call to name | +| bslx.cpp:138:11:138:16 | *stream | bslx.cpp:138:26:138:36 | *call to getInt32 | +| bslx.cpp:154:46:154:49 | *call to data | bslx.cpp:154:34:154:39 | call to ByteInStream | +| bslx.cpp:156:2:156:7 | *stream | bslx.cpp:156:17:156:20 | *call to getInt32 | +| bslx.cpp:162:46:162:49 | *call to data | bslx.cpp:162:34:162:39 | call to ByteInStream | +| bslx.cpp:164:2:164:7 | *stream | bslx.cpp:164:21:164:30 | *call to getArrayInt8 | +| bslx.cpp:164:2:164:7 | *stream | bslx.cpp:164:22:164:24 | getArrayInt8 output argument | +| bslx.cpp:170:46:170:49 | *call to data | bslx.cpp:170:34:170:39 | call to ByteInStream | +| bslx.cpp:172:2:172:7 | *stream | bslx.cpp:172:18:172:23 | *call to getString | +| bslx.cpp:172:2:172:7 | *stream | bslx.cpp:172:19:172:21 | getString output argument | +| bslx.cpp:178:46:178:49 | *call to data | bslx.cpp:178:34:178:39 | call to ByteInStream | +| bslx.cpp:181:2:181:7 | *stream | bslx.cpp:181:17:181:20 | *call to getInt32 | +| bslx.cpp:181:17:181:20 | *call to getInt32 | bslx.cpp:181:30:181:35 | *call to getString | +| bslx.cpp:181:17:181:20 | *call to getInt32 | bslx.cpp:181:31:181:33 | getString output argument | +| bslx.cpp:188:20:188:23 | *call to data | bslx.cpp:188:2:188:7 | reset output argument | +| bslx.cpp:190:2:190:7 | *stream | bslx.cpp:190:18:190:23 | *call to getString | +| bslx.cpp:190:2:190:7 | *stream | bslx.cpp:190:19:190:21 | getString output argument | +| bslx.cpp:197:57:197:58 | *sb | bslx.cpp:197:50:197:55 | call to GenericInStream | +| bslx.cpp:199:2:199:7 | *stream | bslx.cpp:199:18:199:23 | *call to getString | +| bslx.cpp:199:2:199:7 | *stream | bslx.cpp:199:19:199:21 | getString output argument | +| bslx.cpp:206:57:206:58 | *sb | bslx.cpp:206:50:206:55 | call to GenericInStream | +| bslx.cpp:208:2:208:7 | *stream | bslx.cpp:208:17:208:20 | *call to getInt32 | +| bslx.cpp:214:46:214:49 | *call to data | bslx.cpp:214:34:214:39 | call to ByteInStream | +| bslx.cpp:216:53:216:58 | *stream | bslx.cpp:216:52:216:65 | *call to bdexStreamIn | +| bslx.cpp:216:53:216:58 | *stream | bslx.cpp:216:61:216:63 | bdexStreamIn output argument | +| bslx.cpp:224:46:224:49 | *call to data | bslx.cpp:224:34:224:39 | call to ByteInStream | +| bslx.cpp:247:2:247:7 | *stream | bslx.cpp:247:18:247:21 | *call to getLength | +| bslx.cpp:247:18:247:21 | *call to getLength | bslx.cpp:247:32:247:35 | *call to getVersion | +| bslx.cpp:247:32:247:35 | *call to getVersion | bslx.cpp:247:43:247:46 | *call to getInt8 | +| bslx.cpp:247:43:247:46 | *call to getInt8 | bslx.cpp:247:55:247:59 | *call to getUint8 | +| bslx.cpp:247:55:247:59 | *call to getUint8 | bslx.cpp:247:68:247:71 | *call to getInt16 | +| bslx.cpp:247:68:247:71 | *call to getInt16 | bslx.cpp:247:81:247:85 | *call to getUint16 | +| bslx.cpp:247:81:247:85 | *call to getUint16 | bslx.cpp:247:94:247:97 | *call to getInt24 | +| bslx.cpp:247:94:247:97 | *call to getInt24 | bslx.cpp:247:107:247:111 | *call to getUint24 | +| bslx.cpp:247:107:247:111 | *call to getUint24 | bslx.cpp:247:120:247:123 | *call to getInt32 | +| bslx.cpp:247:120:247:123 | *call to getInt32 | bslx.cpp:247:133:247:137 | *call to getUint32 | +| bslx.cpp:247:133:247:137 | *call to getUint32 | bslx.cpp:247:146:247:150 | *call to getInt40 | +| bslx.cpp:247:146:247:150 | *call to getInt40 | bslx.cpp:247:160:247:165 | *call to getUint40 | +| bslx.cpp:247:160:247:165 | *call to getUint40 | bslx.cpp:247:174:247:178 | *call to getInt48 | +| bslx.cpp:247:174:247:178 | *call to getInt48 | bslx.cpp:247:188:247:193 | *call to getUint48 | +| bslx.cpp:247:188:247:193 | *call to getUint48 | bslx.cpp:247:202:247:206 | *call to getInt56 | +| bslx.cpp:247:202:247:206 | *call to getInt56 | bslx.cpp:247:216:247:221 | *call to getUint56 | +| bslx.cpp:247:216:247:221 | *call to getUint56 | bslx.cpp:247:230:247:234 | *call to getInt64 | +| bslx.cpp:247:230:247:234 | *call to getInt64 | bslx.cpp:247:244:247:249 | *call to getUint64 | +| bslx.cpp:247:244:247:249 | *call to getUint64 | bslx.cpp:247:260:247:263 | *call to getFloat32 | +| bslx.cpp:247:260:247:263 | *call to getFloat32 | bslx.cpp:247:274:247:277 | *call to getFloat64 | +| bslx.cpp:247:274:247:277 | *call to getFloat64 | bslx.cpp:247:287:247:292 | *call to getString | +| bslx.cpp:247:274:247:277 | *call to getFloat64 | bslx.cpp:247:288:247:290 | getString output argument | +| bslx.cpp:247:287:247:292 | *call to getString | bslx.cpp:247:305:247:315 | *call to getArrayInt8 | +| bslx.cpp:247:287:247:292 | *call to getString | bslx.cpp:247:306:247:309 | getArrayInt8 output argument | +| bslx.cpp:247:305:247:315 | *call to getArrayInt8 | bslx.cpp:247:329:247:340 | *call to getArrayUint8 | +| bslx.cpp:247:305:247:315 | *call to getArrayInt8 | bslx.cpp:247:330:247:334 | getArrayUint8 output argument | +| bslx.cpp:247:329:247:340 | *call to getArrayUint8 | bslx.cpp:247:354:247:364 | *call to getArrayInt16 | +| bslx.cpp:247:329:247:340 | *call to getArrayUint8 | bslx.cpp:247:355:247:358 | getArrayInt16 output argument | +| bslx.cpp:247:354:247:364 | *call to getArrayInt16 | bslx.cpp:247:379:247:390 | *call to getArrayUint16 | +| bslx.cpp:247:354:247:364 | *call to getArrayInt16 | bslx.cpp:247:380:247:384 | getArrayUint16 output argument | +| bslx.cpp:247:379:247:390 | *call to getArrayUint16 | bslx.cpp:247:404:247:414 | *call to getArrayInt24 | +| bslx.cpp:247:379:247:390 | *call to getArrayUint16 | bslx.cpp:247:405:247:408 | getArrayInt24 output argument | +| bslx.cpp:247:404:247:414 | *call to getArrayInt24 | bslx.cpp:247:429:247:440 | *call to getArrayUint24 | +| bslx.cpp:247:404:247:414 | *call to getArrayInt24 | bslx.cpp:247:430:247:434 | getArrayUint24 output argument | +| bslx.cpp:247:429:247:440 | *call to getArrayUint24 | bslx.cpp:247:454:247:464 | *call to getArrayInt32 | +| bslx.cpp:247:429:247:440 | *call to getArrayUint24 | bslx.cpp:247:455:247:458 | getArrayInt32 output argument | +| bslx.cpp:247:454:247:464 | *call to getArrayInt32 | bslx.cpp:247:479:247:490 | *call to getArrayUint32 | +| bslx.cpp:247:454:247:464 | *call to getArrayInt32 | bslx.cpp:247:480:247:484 | getArrayUint32 output argument | +| bslx.cpp:247:479:247:490 | *call to getArrayUint32 | bslx.cpp:247:504:247:515 | *call to getArrayInt40 | +| bslx.cpp:247:479:247:490 | *call to getArrayUint32 | bslx.cpp:247:505:247:509 | getArrayInt40 output argument | +| bslx.cpp:247:504:247:515 | *call to getArrayInt40 | bslx.cpp:247:530:247:542 | *call to getArrayUint40 | +| bslx.cpp:247:504:247:515 | *call to getArrayInt40 | bslx.cpp:247:531:247:536 | getArrayUint40 output argument | +| bslx.cpp:247:530:247:542 | *call to getArrayUint40 | bslx.cpp:247:556:247:567 | *call to getArrayInt48 | +| bslx.cpp:247:530:247:542 | *call to getArrayUint40 | bslx.cpp:247:557:247:561 | getArrayInt48 output argument | +| bslx.cpp:247:556:247:567 | *call to getArrayInt48 | bslx.cpp:247:582:247:594 | *call to getArrayUint48 | +| bslx.cpp:247:556:247:567 | *call to getArrayInt48 | bslx.cpp:247:583:247:588 | getArrayUint48 output argument | +| bslx.cpp:247:582:247:594 | *call to getArrayUint48 | bslx.cpp:247:608:247:619 | *call to getArrayInt56 | +| bslx.cpp:247:582:247:594 | *call to getArrayUint48 | bslx.cpp:247:609:247:613 | getArrayInt56 output argument | +| bslx.cpp:247:608:247:619 | *call to getArrayInt56 | bslx.cpp:247:634:247:646 | *call to getArrayUint56 | +| bslx.cpp:247:608:247:619 | *call to getArrayInt56 | bslx.cpp:247:635:247:640 | getArrayUint56 output argument | +| bslx.cpp:247:634:247:646 | *call to getArrayUint56 | bslx.cpp:247:660:247:671 | *call to getArrayInt64 | +| bslx.cpp:247:634:247:646 | *call to getArrayUint56 | bslx.cpp:247:661:247:665 | getArrayInt64 output argument | +| bslx.cpp:247:660:247:671 | *call to getArrayInt64 | bslx.cpp:247:686:247:698 | *call to getArrayUint64 | +| bslx.cpp:247:660:247:671 | *call to getArrayInt64 | bslx.cpp:247:687:247:692 | getArrayUint64 output argument | +| bslx.cpp:247:686:247:698 | *call to getArrayUint64 | bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | +| bslx.cpp:247:686:247:698 | *call to getArrayUint64 | bslx.cpp:247:715:247:718 | getArrayFloat32 output argument | +| bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | +| bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | bslx.cpp:247:741:247:744 | getArrayFloat64 output argument | +| bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | bslx.cpp:247:760:247:765 | *call to getString | +| bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | bslx.cpp:247:761:247:763 | getString output argument | +| bslx.cpp:254:57:254:58 | *sb | bslx.cpp:254:50:254:55 | call to GenericInStream | +| bslx.cpp:277:2:277:7 | *stream | bslx.cpp:277:18:277:21 | *call to getLength | +| bslx.cpp:277:18:277:21 | *call to getLength | bslx.cpp:277:32:277:35 | *call to getVersion | +| bslx.cpp:277:32:277:35 | *call to getVersion | bslx.cpp:277:43:277:46 | *call to getInt8 | +| bslx.cpp:277:43:277:46 | *call to getInt8 | bslx.cpp:277:55:277:59 | *call to getUint8 | +| bslx.cpp:277:55:277:59 | *call to getUint8 | bslx.cpp:277:68:277:71 | *call to getInt16 | +| bslx.cpp:277:68:277:71 | *call to getInt16 | bslx.cpp:277:81:277:85 | *call to getUint16 | +| bslx.cpp:277:81:277:85 | *call to getUint16 | bslx.cpp:277:94:277:97 | *call to getInt24 | +| bslx.cpp:277:94:277:97 | *call to getInt24 | bslx.cpp:277:107:277:111 | *call to getUint24 | +| bslx.cpp:277:107:277:111 | *call to getUint24 | bslx.cpp:277:120:277:123 | *call to getInt32 | +| bslx.cpp:277:120:277:123 | *call to getInt32 | bslx.cpp:277:133:277:137 | *call to getUint32 | +| bslx.cpp:277:133:277:137 | *call to getUint32 | bslx.cpp:277:146:277:150 | *call to getInt40 | +| bslx.cpp:277:146:277:150 | *call to getInt40 | bslx.cpp:277:160:277:165 | *call to getUint40 | +| bslx.cpp:277:160:277:165 | *call to getUint40 | bslx.cpp:277:174:277:178 | *call to getInt48 | +| bslx.cpp:277:174:277:178 | *call to getInt48 | bslx.cpp:277:188:277:193 | *call to getUint48 | +| bslx.cpp:277:188:277:193 | *call to getUint48 | bslx.cpp:277:202:277:206 | *call to getInt56 | +| bslx.cpp:277:202:277:206 | *call to getInt56 | bslx.cpp:277:216:277:221 | *call to getUint56 | +| bslx.cpp:277:216:277:221 | *call to getUint56 | bslx.cpp:277:230:277:234 | *call to getInt64 | +| bslx.cpp:277:230:277:234 | *call to getInt64 | bslx.cpp:277:244:277:249 | *call to getUint64 | +| bslx.cpp:277:244:277:249 | *call to getUint64 | bslx.cpp:277:260:277:263 | *call to getFloat32 | +| bslx.cpp:277:260:277:263 | *call to getFloat32 | bslx.cpp:277:274:277:277 | *call to getFloat64 | +| bslx.cpp:277:274:277:277 | *call to getFloat64 | bslx.cpp:277:287:277:292 | *call to getString | +| bslx.cpp:277:274:277:277 | *call to getFloat64 | bslx.cpp:277:288:277:290 | getString output argument | +| bslx.cpp:277:287:277:292 | *call to getString | bslx.cpp:277:305:277:315 | *call to getArrayInt8 | +| bslx.cpp:277:287:277:292 | *call to getString | bslx.cpp:277:306:277:309 | getArrayInt8 output argument | +| bslx.cpp:277:305:277:315 | *call to getArrayInt8 | bslx.cpp:277:329:277:340 | *call to getArrayUint8 | +| bslx.cpp:277:305:277:315 | *call to getArrayInt8 | bslx.cpp:277:330:277:334 | getArrayUint8 output argument | +| bslx.cpp:277:329:277:340 | *call to getArrayUint8 | bslx.cpp:277:354:277:364 | *call to getArrayInt16 | +| bslx.cpp:277:329:277:340 | *call to getArrayUint8 | bslx.cpp:277:355:277:358 | getArrayInt16 output argument | +| bslx.cpp:277:354:277:364 | *call to getArrayInt16 | bslx.cpp:277:379:277:390 | *call to getArrayUint16 | +| bslx.cpp:277:354:277:364 | *call to getArrayInt16 | bslx.cpp:277:380:277:384 | getArrayUint16 output argument | +| bslx.cpp:277:379:277:390 | *call to getArrayUint16 | bslx.cpp:277:404:277:414 | *call to getArrayInt24 | +| bslx.cpp:277:379:277:390 | *call to getArrayUint16 | bslx.cpp:277:405:277:408 | getArrayInt24 output argument | +| bslx.cpp:277:404:277:414 | *call to getArrayInt24 | bslx.cpp:277:429:277:440 | *call to getArrayUint24 | +| bslx.cpp:277:404:277:414 | *call to getArrayInt24 | bslx.cpp:277:430:277:434 | getArrayUint24 output argument | +| bslx.cpp:277:429:277:440 | *call to getArrayUint24 | bslx.cpp:277:454:277:464 | *call to getArrayInt32 | +| bslx.cpp:277:429:277:440 | *call to getArrayUint24 | bslx.cpp:277:455:277:458 | getArrayInt32 output argument | +| bslx.cpp:277:454:277:464 | *call to getArrayInt32 | bslx.cpp:277:479:277:490 | *call to getArrayUint32 | +| bslx.cpp:277:454:277:464 | *call to getArrayInt32 | bslx.cpp:277:480:277:484 | getArrayUint32 output argument | +| bslx.cpp:277:479:277:490 | *call to getArrayUint32 | bslx.cpp:277:504:277:515 | *call to getArrayInt40 | +| bslx.cpp:277:479:277:490 | *call to getArrayUint32 | bslx.cpp:277:505:277:509 | getArrayInt40 output argument | +| bslx.cpp:277:504:277:515 | *call to getArrayInt40 | bslx.cpp:277:530:277:542 | *call to getArrayUint40 | +| bslx.cpp:277:504:277:515 | *call to getArrayInt40 | bslx.cpp:277:531:277:536 | getArrayUint40 output argument | +| bslx.cpp:277:530:277:542 | *call to getArrayUint40 | bslx.cpp:277:556:277:567 | *call to getArrayInt48 | +| bslx.cpp:277:530:277:542 | *call to getArrayUint40 | bslx.cpp:277:557:277:561 | getArrayInt48 output argument | +| bslx.cpp:277:556:277:567 | *call to getArrayInt48 | bslx.cpp:277:582:277:594 | *call to getArrayUint48 | +| bslx.cpp:277:556:277:567 | *call to getArrayInt48 | bslx.cpp:277:583:277:588 | getArrayUint48 output argument | +| bslx.cpp:277:582:277:594 | *call to getArrayUint48 | bslx.cpp:277:608:277:619 | *call to getArrayInt56 | +| bslx.cpp:277:582:277:594 | *call to getArrayUint48 | bslx.cpp:277:609:277:613 | getArrayInt56 output argument | +| bslx.cpp:277:608:277:619 | *call to getArrayInt56 | bslx.cpp:277:634:277:646 | *call to getArrayUint56 | +| bslx.cpp:277:608:277:619 | *call to getArrayInt56 | bslx.cpp:277:635:277:640 | getArrayUint56 output argument | +| bslx.cpp:277:634:277:646 | *call to getArrayUint56 | bslx.cpp:277:660:277:671 | *call to getArrayInt64 | +| bslx.cpp:277:634:277:646 | *call to getArrayUint56 | bslx.cpp:277:661:277:665 | getArrayInt64 output argument | +| bslx.cpp:277:660:277:671 | *call to getArrayInt64 | bslx.cpp:277:686:277:698 | *call to getArrayUint64 | +| bslx.cpp:277:660:277:671 | *call to getArrayInt64 | bslx.cpp:277:687:277:692 | getArrayUint64 output argument | +| bslx.cpp:277:686:277:698 | *call to getArrayUint64 | bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | +| bslx.cpp:277:686:277:698 | *call to getArrayUint64 | bslx.cpp:277:715:277:718 | getArrayFloat32 output argument | +| bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | +| bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | bslx.cpp:277:741:277:744 | getArrayFloat64 output argument | +| bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | bslx.cpp:277:760:277:765 | *call to getString | +| bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | bslx.cpp:277:761:277:763 | getString output argument | +| bslx.cpp:283:46:283:49 | *call to data | bslx.cpp:283:34:283:39 | call to ByteInStream | +| bslx.cpp:285:53:285:58 | *stream | bslx.cpp:285:52:285:63 | *call to bdexStreamIn | +| bslx.cpp:285:53:285:58 | *stream | bslx.cpp:285:61:285:61 | bdexStreamIn output argument | +| bslx.cpp:287:53:287:58 | *stream | bslx.cpp:287:52:287:66 | *call to bdexStreamIn | +| bslx.cpp:287:53:287:58 | *stream | bslx.cpp:287:61:287:61 | bdexStreamIn output argument | +| bslx.cpp:290:52:290:66 | *call to bdexStreamIn | bslx.cpp:290:76:290:81 | *call to getString | +| bslx.cpp:290:52:290:66 | *call to bdexStreamIn | bslx.cpp:290:77:290:79 | getString output argument | +| bslx.cpp:290:53:290:58 | *stream | bslx.cpp:290:52:290:66 | *call to bdexStreamIn | +| bslx.cpp:290:53:290:58 | *stream | bslx.cpp:290:61:290:61 | bdexStreamIn output argument | +| bslx.cpp:296:46:296:49 | *call to data | bslx.cpp:296:34:296:39 | call to ByteInStream | +| bslx.cpp:298:53:298:58 | *stream | bslx.cpp:298:52:298:68 | *call to bdexStreamIn | +| bslx.cpp:298:53:298:58 | *stream | bslx.cpp:298:61:298:63 | bdexStreamIn output argument | +| bslx.cpp:310:46:310:49 | *call to data | bslx.cpp:310:34:310:39 | call to ByteInStream | +| bslx.cpp:312:53:312:58 | *stream | bslx.cpp:312:52:312:68 | *call to bdexStreamIn | +| bslx.cpp:312:53:312:58 | *stream | bslx.cpp:312:61:312:63 | bdexStreamIn output argument | +| bslx.cpp:323:15:323:18 | *data | bslx.cpp:323:2:323:7 | reset output argument | +| bslx.cpp:325:2:325:7 | *stream | bslx.cpp:325:18:325:23 | *call to getString | +| bslx.cpp:325:2:325:7 | *stream | bslx.cpp:325:19:325:21 | getString output argument | +| bslx.cpp:331:46:331:49 | *call to data | bslx.cpp:331:34:331:39 | call to ByteInStream | +| bslx.cpp:334:2:334:7 | *stream | bslx.cpp:334:18:334:23 | *call to getString | +| bslx.cpp:334:2:334:7 | *stream | bslx.cpp:334:19:334:21 | getString output argument | +| bslx.cpp:341:15:341:18 | *data | bslx.cpp:341:2:341:7 | reset output argument | +| bslx.cpp:344:2:344:7 | *stream | bslx.cpp:344:18:344:23 | *call to getString | +| bslx.cpp:344:2:344:7 | *stream | bslx.cpp:344:19:344:21 | getString output argument | +| bslx.cpp:350:46:350:49 | *call to data | bslx.cpp:350:34:350:39 | call to ByteInStream | +| bslx.cpp:352:15:352:19 | *clean | bslx.cpp:352:2:352:7 | reset output argument | +| bslx.cpp:354:2:354:7 | *stream | bslx.cpp:354:18:354:23 | *call to getString | +| bslx.cpp:354:2:354:7 | *stream | bslx.cpp:354:19:354:21 | getString output argument | +| protobuf.cpp:118:22:118:25 | data | protobuf.cpp:118:2:118:4 | ParseFromString output argument | +| protobuf.cpp:125:22:125:25 | *data | protobuf.cpp:125:2:125:4 | ParseFromString output argument | +| protobuf.cpp:132:29:132:32 | data | protobuf.cpp:132:2:132:4 | ParsePartialFromString output argument | +| protobuf.cpp:139:29:139:32 | *data | protobuf.cpp:139:2:139:4 | ParsePartialFromString output argument | +| protobuf.cpp:146:22:146:25 | data | protobuf.cpp:146:2:146:4 | MergeFromString output argument | +| protobuf.cpp:153:22:153:25 | *data | protobuf.cpp:153:2:153:4 | MergeFromString output argument | +| protobuf.cpp:160:29:160:32 | data | protobuf.cpp:160:2:160:4 | MergePartialFromString output argument | +| protobuf.cpp:167:29:167:32 | *data | protobuf.cpp:167:2:167:4 | MergePartialFromString output argument | +| protobuf.cpp:174:21:174:31 | *call to data | protobuf.cpp:174:2:174:4 | ParseFromArray output argument | +| protobuf.cpp:181:28:181:38 | *call to data | protobuf.cpp:181:2:181:4 | ParsePartialFromArray output argument | +| protobuf.cpp:188:20:188:23 | *data | protobuf.cpp:188:2:188:4 | ParseFromCord output argument | +| protobuf.cpp:195:27:195:30 | *data | protobuf.cpp:195:2:195:4 | ParsePartialFromCord output argument | +| protobuf.cpp:202:20:202:23 | *data | protobuf.cpp:202:2:202:4 | MergeFromCord output argument | +| protobuf.cpp:209:27:209:30 | *data | protobuf.cpp:209:2:209:4 | MergePartialFromCord output argument | +| protobuf.cpp:216:23:216:25 | *& ... | protobuf.cpp:216:2:216:4 | ParseFromIstream output argument | +| protobuf.cpp:223:30:223:32 | *& ... | protobuf.cpp:223:2:223:4 | ParsePartialFromIstream output argument | +| protobuf.cpp:230:30:230:32 | *& ... | protobuf.cpp:230:2:230:4 | ParseFromZeroCopyStream output argument | +| protobuf.cpp:237:37:237:39 | *& ... | protobuf.cpp:237:2:237:4 | ParsePartialFromZeroCopyStream output argument | +| protobuf.cpp:244:37:244:39 | *& ... | protobuf.cpp:244:2:244:4 | ParseFromBoundedZeroCopyStream output argument | +| protobuf.cpp:251:44:251:46 | *& ... | protobuf.cpp:251:2:251:4 | ParsePartialFromBoundedZeroCopyStream output argument | +| protobuf.cpp:258:37:258:39 | *& ... | protobuf.cpp:258:2:258:4 | MergeFromBoundedZeroCopyStream output argument | +| protobuf.cpp:265:44:265:46 | *& ... | protobuf.cpp:265:2:265:4 | MergePartialFromBoundedZeroCopyStream output argument | +| protobuf.cpp:272:27:272:29 | *& ... | protobuf.cpp:272:2:272:4 | ParseFromCodedStream output argument | +| protobuf.cpp:279:34:279:36 | *& ... | protobuf.cpp:279:2:279:4 | ParsePartialFromCodedStream output argument | +| protobuf.cpp:286:27:286:29 | *& ... | protobuf.cpp:286:2:286:4 | MergeFromCodedStream output argument | +| protobuf.cpp:293:34:293:36 | *& ... | protobuf.cpp:293:2:293:4 | MergePartialFromCodedStream output argument | +| protobuf.cpp:300:22:300:25 | *data | protobuf.cpp:300:2:300:4 | ParseFromString output argument | +| protobuf.cpp:309:2:309:4 | *msg | protobuf.cpp:309:24:309:27 | SerializeToString output argument | +| protobuf.cpp:316:2:316:4 | *msg | protobuf.cpp:316:31:316:34 | SerializePartialToString output argument | +| protobuf.cpp:323:2:323:4 | *msg | protobuf.cpp:323:21:323:24 | AppendToString output argument | +| protobuf.cpp:330:2:330:4 | *msg | protobuf.cpp:330:28:330:31 | AppendPartialToString output argument | +| protobuf.cpp:337:2:337:4 | *msg | protobuf.cpp:337:24:337:27 | SerializeToString output argument | +| protobuf.cpp:344:2:344:4 | *msg | protobuf.cpp:344:31:344:34 | SerializePartialToString output argument | +| protobuf.cpp:351:2:351:4 | *msg | protobuf.cpp:351:21:351:24 | AppendToString output argument | +| protobuf.cpp:358:2:358:4 | *msg | protobuf.cpp:358:28:358:31 | AppendPartialToString output argument | +| protobuf.cpp:365:2:365:4 | *msg | protobuf.cpp:365:23:365:25 | SerializeToArray output argument | +| protobuf.cpp:372:2:372:4 | *msg | protobuf.cpp:372:30:372:32 | SerializePartialToArray output argument | +| protobuf.cpp:379:2:379:4 | *msg | protobuf.cpp:379:22:379:25 | SerializeToCord output argument | +| protobuf.cpp:386:2:386:4 | *msg | protobuf.cpp:386:29:386:32 | SerializePartialToCord output argument | +| protobuf.cpp:393:2:393:4 | *msg | protobuf.cpp:393:19:393:22 | AppendToCord output argument | +| protobuf.cpp:400:2:400:4 | *msg | protobuf.cpp:400:26:400:29 | AppendPartialToCord output argument | +| protobuf.cpp:407:2:407:4 | *msg | protobuf.cpp:407:25:407:28 | SerializeToOstream output argument | +| protobuf.cpp:414:2:414:4 | *msg | protobuf.cpp:414:32:414:35 | SerializePartialToOstream output argument | +| protobuf.cpp:421:2:421:4 | *msg | protobuf.cpp:421:32:421:35 | SerializeToZeroCopyStream output argument | +| protobuf.cpp:428:2:428:4 | *msg | protobuf.cpp:428:39:428:42 | SerializePartialToZeroCopyStream output argument | +| protobuf.cpp:435:2:435:4 | *msg | protobuf.cpp:435:29:435:32 | SerializeToCodedStream output argument | +| protobuf.cpp:442:2:442:4 | *msg | protobuf.cpp:442:36:442:39 | SerializePartialToCodedStream output argument | +| protobuf.cpp:450:7:450:9 | *msg | protobuf.cpp:450:11:450:27 | call to SerializeAsString | +| protobuf.cpp:455:7:455:9 | *msg | protobuf.cpp:455:11:455:34 | call to SerializePartialAsString | +| protobuf.cpp:460:7:460:9 | *msg | protobuf.cpp:460:11:460:25 | call to SerializeAsCord | +| protobuf.cpp:465:7:465:9 | *msg | protobuf.cpp:465:11:465:32 | call to SerializePartialAsCord | +| protobuf.cpp:470:7:470:9 | *msg | protobuf.cpp:470:11:470:27 | call to SerializeAsString | | test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | | test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | | test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp index 739c36bc67d3..bfc7c9ed1148 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp @@ -332,4 +332,138 @@ void test_parameter(SourceWrapper* p, SourceWrapper s, int* source) { ymlSink((int)source); // clean ymlSink(*source); // $ ir +} + + +struct ConstructableFromInt { + short s; + unsigned long ul; + ConstructableFromInt(short arg) { + this->s = arg; + } + + ConstructableFromInt(unsigned long arg) { + this->ul = arg; + } +}; + +template +struct Forwarder { + template + void forward(Args&&... args); + void forwardToElement(int arg); + + T get(); +}; + +void forward_test() { + { + Forwarder f; + short x = ymlSource(); + f.forward(x); + + ConstructableFromInt c = f.get(); + ymlSink(c.s); // $ ir + ymlSink(c.ul); // $ SPURIOUS: ir + } + { + Forwarder f; + unsigned long ul = ymlSource(); + f.forward(ul); + + ConstructableFromInt c = f.get(); + ymlSink(c.s); // $ SPURIOUS: ir + ymlSink(c.ul); // $ ir + } +} + +template +struct Container { + template + void emplace(int pos, Args&&... args); + + T& get(); +}; + +struct Element { + int x; + Element(int); +}; + +template +T makeForwarded(int arg); + +void forward_test_function_template_constructor() { + int x = ymlSource(); + Element e = makeForwarded(x); + ymlSink(e.x); // $ ir +} + +void forward_test_named_constructor() { + Forwarder f; + int x = ymlSource(); + f.forwardToElement(x); + Element e = f.get(); + ymlSink(e.x); // $ ir +} + +void forward_test_model() { + Container c; + int x = ymlSource(); + c.emplace(0, x); + + Element e = c.get(); + ymlSink(e.x); // $ ir +} + +struct ElementWithDefaultArgument { + int x; + ElementWithDefaultArgument(int x, int = 0); +}; + +void forward_test_model_with_default_argument() { + Container c; + int x = ymlSource(); + c.emplace(0, x); + + ElementWithDefaultArgument e = c.get(); + ymlSink(e.x); // $ ir +} + +struct ElementWithOverloadedArity { + int x; + ElementWithOverloadedArity(int first) : x(first) {} + ElementWithOverloadedArity(int, int second) : x(second) {} +}; + +void forward_test_constructor_arity() { + int x = ymlSource(); + { + Container c; + c.emplace(0, x); + ymlSink(c.get().x); // $ ir + } + { + Container c; + c.emplace(0, x, 0); + ymlSink(c.get().x); // clean + } + { + Container c; + c.emplace(0, 0, x); + ymlSink(c.get().x); // $ ir + } +} + +void forward_test_without_constructor() { + { + Forwarder f; + f.forward(ymlSource()); + ymlSink(f.get()); // $ ir + } + { + Forwarder f; + f.forward(ymlSourcePtr()); + ymlSink(*f.get()); // $ ir + } } \ No newline at end of file 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 15ae50bddc26..4e26bf1c2c2c 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected @@ -370,6 +370,8 @@ | 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 "(Blob *,int,const Blob &,int,int)" in summary model. | +| Dubious signature "(Blob *,int,const char *,int)" 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. | @@ -2948,6 +2950,7 @@ | Dubious signature "(char *,char *__restrict__,int,FILE *,FILE *__restrict__)" in summary model. | | Dubious signature "(char *,char *__restrict__,size_t,const char *,const char *__restrict__,const tm *,const tm *__restrict__,locale_t)" in summary model. | | Dubious signature "(char *,char,char **)" in summary model. | +| Dubious signature "(char *,const Blob &,int,int)" in summary model. | | Dubious signature "(char *,const char *)" in summary model. | | Dubious signature "(char *,const char **,const char **,const char **,const char **,const char **)" in summary model. | | Dubious signature "(char *,const char *,char **)" in summary model. | @@ -3164,6 +3167,7 @@ | Dubious signature "(const CURLU *,CURLUPart,char **,unsigned int)" in summary model. | | Dubious signature "(const ComPtr &)" 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 Cord &)" 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. | @@ -3347,6 +3351,14 @@ | Dubious signature "(const IPAddressRange *,unsigned char **)" in summary model. | | 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 InternetProtocol &,const string &,const string &)" in summary model. | +| Dubious signature "(const InternetProtocol &,const string &,const string &,error_code &)" in summary model. | +| Dubious signature "(const InternetProtocol &,const string &,const string &,flags)" in summary model. | +| Dubious signature "(const InternetProtocol &,const string &,const string &,flags,error_code &)" in summary model. | +| Dubious signature "(const InternetProtocol &,string_view,string_view)" in summary model. | +| Dubious signature "(const InternetProtocol &,string_view,string_view,error_code &)" in summary model. | +| Dubious signature "(const InternetProtocol &,string_view,string_view,flags)" in summary model. | +| Dubious signature "(const InternetProtocol &,string_view,string_view,flags,error_code &)" 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. | @@ -3357,6 +3369,7 @@ | Dubious signature "(const ML_KEM_KEY *,const ML_KEM_KEY *)" in summary model. | | Dubious signature "(const ML_KEM_KEY *,int)" in summary model. | | Dubious signature "(const ML_KEM_KEY *,unsigned char **)" in summary model. | +| Dubious signature "(const MessageProperties &,Allocator *)" in summary model. | | Dubious signature "(const NAMING_AUTHORITY *)" in summary model. | | Dubious signature "(const NAMING_AUTHORITY *,unsigned char **)" in summary model. | | Dubious signature "(const NETSCAPE_CERT_SEQUENCE *,unsigned char **)" in summary model. | @@ -3679,6 +3692,7 @@ | Dubious signature "(const SSL_SESSION *,unsigned int *)" in summary model. | | Dubious signature "(const SXNET *,unsigned char **)" in summary model. | | Dubious signature "(const SXNETID *,unsigned char **)" in summary model. | +| Dubious signature "(const StringRef &)" in summary model. | | Dubious signature "(const T &,BOOL)" in summary model. | | Dubious signature "(const TS_ACCURACY *)" in summary model. | | Dubious signature "(const TS_ACCURACY *,unsigned char **)" in summary model. | @@ -4005,6 +4019,7 @@ | Dubious signature "(const char *,size_t *)" in summary model. | | Dubious signature "(const char *,size_t *,int)" in summary model. | | Dubious signature "(const char *,size_t)" in summary model. | +| Dubious signature "(const char *,size_t,TYPE *,const char *)" in summary model. | | Dubious signature "(const char *,size_t,char **,size_t *,urlreject)" in summary model. | | Dubious signature "(const char *,size_t,const char *)" 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. | @@ -4150,6 +4165,10 @@ | 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 string &,const string &)" in summary model. | +| Dubious signature "(const string &,const string &,error_code &)" in summary model. | +| Dubious signature "(const string &,const string &,flags)" in summary model. | +| Dubious signature "(const string &,const string &,flags,error_code &)" in summary model. | | Dubious signature "(const td_thragent_t *,lwpid_t,td_thrhandle_t *)" in summary model. | | Dubious signature "(const td_thragent_t *,ps_prochandle **)" in summary model. | | Dubious signature "(const td_thragent_t *,pthread_t,td_thrhandle_t *)" in summary model. | @@ -4662,6 +4681,8 @@ | Dubious signature "(int,void *)" in summary model. | | Dubious signature "(int,void *,size_t)" in summary model. | | Dubious signature "(int_dhx942_dh **,const unsigned char **,long)" in summary model. | +| Dubious signature "(istream &,AnyRef *,const char *)" in summary model. | +| Dubious signature "(istream &,TYPE *,const char *)" in summary model. | | Dubious signature "(lemon *)" in summary model. | | Dubious signature "(lemon *,action *)" in summary model. | | Dubious signature "(lemon *,const char *)" in summary model. | @@ -4910,6 +4931,8 @@ | Dubious signature "(obstack *,int,int,..(*)(..),..(*)(..),void *)" in summary model. | | Dubious signature "(obstack *,void *)" in summary model. | | Dubious signature "(old_termios_t *,speed_t)" in summary model. | +| Dubious signature "(ostream &,const AnyConstRef &)" in summary model. | +| Dubious signature "(ostream &,const TYPE &)" in summary model. | | Dubious signature "(passwd *,char *,size_t,int *)" in summary model. | | Dubious signature "(passwd *,char *,size_t,passwd **)" in summary model. | | Dubious signature "(pgrs_dir *,curl_off_t,curltime)" in summary model. | @@ -5173,10 +5196,16 @@ | Dubious signature "(statvfs64 *,const statfs64 *)" in summary model. | | Dubious signature "(store_netrc *)" in summary model. | | Dubious signature "(store_netrc *,const char *,char **,char **,char *)" in summary model. | +| Dubious signature "(streambuf *,AnyRef *,const char *)" in summary model. | +| Dubious signature "(streambuf *,TYPE *,const char *)" in summary model. | +| Dubious signature "(streambuf *,const AnyConstRef &)" in summary model. | +| Dubious signature "(streambuf *,const TYPE &)" 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 "(string_view,string_view,error_code &)" in summary model. | +| Dubious signature "(string_view,string_view,flags,error_code &)" in summary model. | | Dubious signature "(stringtable *,const char *)" in summary model. | | Dubious signature "(stringtable *,stringtable_finalized *)" in summary model. | | Dubious signature "(support_descriptors *,const char *,FILE *)" in summary model. | diff --git a/cpp/ql/test/library-tests/dataflow/forwarding/test.cpp b/cpp/ql/test/library-tests/dataflow/forwarding/test.cpp new file mode 100644 index 000000000000..f00a473a5276 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/forwarding/test.cpp @@ -0,0 +1,531 @@ +template +struct Container { + template + void emplace(Args&&... args); +}; + +struct Element { + int x; + Element(int); // element_int + Element(short); // element_short + Element(unsigned long); // element_ul + Element(const char*, int x); // element_const_char_ptr_int + Element(char*, int x); // element_char_ptr_int +}; + +struct RefElement { + RefElement(int&& x); // element_ref_int_rref + RefElement(int& x); // element_ref_int_lref + RefElement(const int& x); // element_ref_const_int_ref + RefElement(const char* const&, int x); // element_ref_const_char_ptr_const_ref_int + RefElement(const char* const volatile&, int x); // element_ref_const_char_ptr_const_volatile_ref_int + RefElement(const char*&&, int, int); // element_ref_pointer_rref + RefElement(const char*&, int, int, int); // element_ref_pointer_lref +}; + +struct ElementWithDefaultArgument { + int x; + ElementWithDefaultArgument(int x, int = 0); // element_default_int +}; + +struct ElementWithOverloadedArity { + int x; + ElementWithOverloadedArity(int first); // element_overload_arith_1 + ElementWithOverloadedArity(int, int second); // element_overload_arith_2 +}; + +struct ElementFromMutablePointer { + ElementFromMutablePointer(char*, int); // element_from_mutable_ptr +}; + +void test() { + { + Container c; + c.emplace(42); // $ targets=element_int SPURIOUS: targets=element_short targets=element_ul + } + { + Container c; + c.emplace(42); // $ targets=element_default_int + c.emplace(42, 1); // $ targets=element_default_int + } + { + Container c; + c.emplace(42); // $ targets=element_overload_arith_1 + c.emplace(42, 1); // $ targets=element_overload_arith_2 + } + { + Container c; + c.emplace("abc", 42); // $ targets=element_const_char_ptr_int + c.emplace((char*)nullptr, 42); // $ targets=element_char_ptr_int SPURIOUS: targets=element_const_char_ptr_int + } + { + Container c; + Container cr; + { + const int x = 42; + c.emplace(x); // $ targets=element_int SPURIOUS: targets=element_short targets=element_ul + cr.emplace(x); // $ targets=element_ref_const_int_ref + } + { + int x = 42; + c.emplace(x); // $ targets=element_int SPURIOUS: targets=element_short targets=element_ul + cr.emplace(x); // $ targets=element_ref_int_lref SPURIOUS: targets=element_ref_const_int_ref + } + c.emplace(42); // $ targets=element_int SPURIOUS: targets=element_short targets=element_ul + cr.emplace(42); // $ targets=element_ref_int_rref SPURIOUS: targets=element_ref_const_int_ref + cr.emplace("abc", 42); // $ targets=element_ref_const_char_ptr_const_ref_int + const char buffer[] = "abc"; + cr.emplace(buffer, 42); // $ targets=element_ref_const_char_ptr_const_ref_int + } + { + Container container; + short shortValue = 42; + unsigned long longValue = 42; + container.emplace(shortValue); // $ targets=element_short SPURIOUS: targets=element_int targets=element_ul + container.emplace(longValue); // $ targets=element_ul SPURIOUS: targets=element_int targets=element_short + } +} + + +void test_invalid_pointer_conversion() { + Container container; + container.emplace("abc", 42); // no targets +} + +void test_volatile_reference_binding() { + Container container; + const char* volatile pointer = "abc"; + container.emplace(pointer, 42); // $ targets=element_ref_const_char_ptr_const_volatile_ref_int + container.emplace("abc", 42); // $ targets=element_ref_const_char_ptr_const_ref_int +} + +struct ImplicitConversion { + ImplicitConversion(int = 0, int = 0); + ImplicitConversion(const char* const&); +}; + +struct ExplicitConversion { + explicit ExplicitConversion(int); +}; + +struct DeletedConversion { + DeletedConversion(int) = delete; +}; + +struct RequiredArgumentConversion { + RequiredArgumentConversion(int, int); +}; + +struct LvalueConversion { + LvalueConversion(int&); +}; + +struct RvalueConversion { + RvalueConversion(int&&); +}; + +struct ChainedConversion { + ChainedConversion(ImplicitConversion); +}; + +struct ElementFromImplicitConversion { + explicit ElementFromImplicitConversion(ImplicitConversion); // element_conversion_value + ElementFromImplicitConversion(const ImplicitConversion&, int); // element_conversion_const_ref + ElementFromImplicitConversion(ImplicitConversion&&, int, int); // element_conversion_rref + ElementFromImplicitConversion(ImplicitConversion&, int, int, int); // element_conversion_lref + ElementFromImplicitConversion(const volatile ImplicitConversion&, int, int, int, int); // element_conversion_const_volatile_ref +}; + +struct ElementFromUnavailableConversion { + ElementFromUnavailableConversion(ExplicitConversion); // element_explicit_conversion + ElementFromUnavailableConversion(DeletedConversion, int); // element_deleted_conversion + ElementFromUnavailableConversion(RequiredArgumentConversion, int, int); // element_required_argument_conversion +}; + +struct ElementFromReferenceConversion { + ElementFromReferenceConversion(LvalueConversion); // element_lvalue_conversion + ElementFromReferenceConversion(RvalueConversion, int); // element_rvalue_conversion +}; + +struct ElementFromChainedConversion { + ElementFromChainedConversion(ChainedConversion); // element_chained_conversion + ElementFromChainedConversion(ImplicitConversion, ImplicitConversion); // element_two_conversions +}; + +void test_implicit_conversion() { + Container container; + container.emplace(42); // $ targets=element_conversion_value + container.emplace("abc"); // $ targets=element_conversion_value + container.emplace(42, 0); // $ targets=element_conversion_const_ref + container.emplace(42, 0, 0); // $ targets=element_conversion_rref + container.emplace(42, 0, 0, 0); // no targets + container.emplace(42, 0, 0, 0, 0); // no targets +} + +void test_unavailable_implicit_conversion() { + Container container; + container.emplace(42); // no targets + container.emplace(42, 0); // no targets + container.emplace(42, 0, 0); // no targets +} + +void test_implicit_conversion_input_references() { + Container container; + int value = 42; + const int constValue = 42; + volatile int volatileValue = 42; + container.emplace(value); // $ targets=element_lvalue_conversion + container.emplace(42); // no targets + container.emplace(constValue); // no targets + container.emplace(volatileValue); // no targets + container.emplace(42, 0); // $ targets=element_rvalue_conversion + container.emplace(value, 0); // no targets + container.emplace(static_cast(constValue), 0); // no targets + container.emplace(static_cast(volatileValue), 0); // no targets +} + +void test_implicit_conversion_limit() { + Container container; + container.emplace(42); // no targets + ImplicitConversion converted(42); + container.emplace(converted); // $ targets=element_chained_conversion + container.emplace(42, 42); // $ targets=element_two_conversions + + Container references; + references.emplace(converted, 0, 0); // no target + const ImplicitConversion constConverted(42); + references.emplace(constConverted, 0, 0, 0); // no target +} + +struct ValueConversionOperator { + operator int(); +}; + +struct LvalueConversionOperator { + operator int&() &; +}; + +struct RvalueConversionOperator { + operator int&&() &&; +}; + +struct ConstConversionOperator { + operator const int&() const &; +}; + +struct VolatileConversionOperator { + operator const volatile int&() const volatile; +}; + +struct ExplicitConversionOperator { + explicit operator int(); +}; + +struct DeletedConversionOperator { + operator int() = delete; +}; + +struct ChainedConversionOperator { + operator ValueConversionOperator&(); +}; + +struct ArrayConversionOperator { + using Buffer = const char[4]; + operator Buffer&() const; +}; + +struct ElementFromConversionOperator { + explicit ElementFromConversionOperator(int); // element_operator_value + ElementFromConversionOperator(int&, int); // element_operator_lref + ElementFromConversionOperator(const int&, int, int); // element_operator_const_ref + ElementFromConversionOperator(int&&, int, int, int); // element_operator_rref + ElementFromConversionOperator(const volatile int&, int, int, int, int); // element_operator_const_volatile_ref +}; + +void test_value_conversion_operator() { + Container container; + ValueConversionOperator value; + const ValueConversionOperator constValue; + volatile ValueConversionOperator volatileValue; + container.emplace(value); // $ targets=element_operator_value + container.emplace(ValueConversionOperator()); // $ targets=element_operator_value + container.emplace(constValue); // $ SPURIOUS: targets=element_operator_value + container.emplace(volatileValue); // $ SPURIOUS: targets=element_operator_value + container.emplace(value, 0); // no targets + container.emplace(value, 0, 0); // $ targets=element_operator_const_ref + container.emplace(value, 0, 0, 0); // $ targets=element_operator_rref + container.emplace(value, 0, 0, 0, 0); // no targets +} + +void test_lvalue_conversion_operator() { + Container container; + LvalueConversionOperator value; + const LvalueConversionOperator constValue; + volatile LvalueConversionOperator volatileValue; + container.emplace(value); // $ targets=element_operator_value + container.emplace(value, 0); // $ targets=element_operator_lref + container.emplace(value, 0, 0); // $ targets=element_operator_const_ref + container.emplace(value, 0, 0, 0); // no targets + container.emplace(value, 0, 0, 0, 0); // $ targets=element_operator_const_volatile_ref + container.emplace(value, ValueConversionOperator()); // $ targets=element_operator_lref + container.emplace(LvalueConversionOperator()); // $ SPURIOUS: targets=element_operator_value + container.emplace(constValue); // $ SPURIOUS: targets=element_operator_value + container.emplace(volatileValue); // $ SPURIOUS: targets=element_operator_value +} + +void test_rvalue_conversion_operator() { + Container container; + RvalueConversionOperator value; + const RvalueConversionOperator constValue; + container.emplace(value); // $ SPURIOUS: targets=element_operator_value + container.emplace(static_cast(constValue)); // $ SPURIOUS: targets=element_operator_value + container.emplace(RvalueConversionOperator()); // $ targets=element_operator_value + container.emplace(RvalueConversionOperator(), 0); // no targets + container.emplace(RvalueConversionOperator(), 0, 0); // $ targets=element_operator_const_ref + container.emplace(RvalueConversionOperator(), 0, 0, 0); // $ targets=element_operator_rref + container.emplace(RvalueConversionOperator(), 0, 0, 0, 0); // no targets +} + +void test_conversion_operator_qualification() { + Container container; + const ConstConversionOperator constValue; + volatile ConstConversionOperator volatileValue; + container.emplace(constValue, 0, 0); // $ targets=element_operator_const_ref + container.emplace(ConstConversionOperator(), 0, 0); // $ targets=element_operator_const_ref + container.emplace(constValue, 0); // no targets + container.emplace(constValue, 0, 0, 0); // no targets + container.emplace(volatileValue); // $ SPURIOUS: targets=element_operator_value + + const volatile VolatileConversionOperator constVolatileValue; + container.emplace(constVolatileValue, 0, 0, 0, 0); // $ targets=element_operator_const_volatile_ref + container.emplace(constVolatileValue, 0, 0); // no targets + container.emplace(constVolatileValue, 0); // no targets +} + +void test_conversion_operator_limit() { + Container container; + container.emplace(ExplicitConversionOperator()); // no targets + container.emplace(DeletedConversionOperator()); // no targets + container.emplace(ChainedConversionOperator()); // no targets + + Container converted; + converted.emplace(ValueConversionOperator()); // no targets +} + +void test_array_conversion_operator() { + Container container; + container.emplace(ArrayConversionOperator(), 42); // $ targets=element_ref_const_char_ptr_const_ref_int + container.emplace(ArrayConversionOperator(), 0, 0); // $ SPURIOUS: targets=element_ref_pointer_rref + container.emplace(ArrayConversionOperator(), 0, 0, 0); // no targets +} + +void test_pointer_value_categories() { + Container container; + const char buffer[] = "abc"; + const char* pointer = buffer; + const char* const constPointer = buffer; + container.emplace(buffer, 0, 0); // $ targets=element_ref_pointer_rref + container.emplace(pointer, 0, 0); // no target + container.emplace(static_cast(pointer), 0, 0); // $ targets=element_ref_pointer_rref + container.emplace(static_cast(constPointer), 0, 0); // no target + container.emplace(buffer, 0, 0, 0); // no targets + container.emplace(pointer, 0, 0, 0); // $ targets=element_ref_pointer_lref + container.emplace(constPointer, 0, 0, 0); // no target + container.emplace(static_cast(pointer), 0, 0, 0); // no target +} + +enum ArithmeticEnum { arithmeticValue = 42 }; +enum class ScopedArithmeticEnum { value = 42 }; + +struct ElementFromArithmetic { + ElementFromArithmetic(long); // element_arithmetic_long + ElementFromArithmetic(double, int); // element_arithmetic_double + ElementFromArithmetic(bool, int, int); // element_arithmetic_bool + ElementFromArithmetic(const long&, int, int, int); // element_arithmetic_const_ref + ElementFromArithmetic(long&&, int, int, int, int); // element_arithmetic_rref +}; + +void test_arithmetic_conversions() { + Container container; + short value = 42; + long longValue = 42; + container.emplace(value); // $ targets=element_arithmetic_long + container.emplace(1.5f, 0); // $ targets=element_arithmetic_double + container.emplace(arithmeticValue); // $ targets=element_arithmetic_long + container.emplace(42, 0, 0); // $ targets=element_arithmetic_bool + container.emplace(value, 0, 0, 0); // $ targets=element_arithmetic_const_ref + container.emplace(value, 0, 0, 0, 0); // $ targets=element_arithmetic_rref + container.emplace(longValue, 0, 0, 0, 0); // no target + container.emplace(ScopedArithmeticEnum::value); // no targets +} + +void test_standard_and_user_defined_conversions() { + short value = 42; + Container before; + before.emplace(value); // $ targets=element_conversion_value + Container after; + after.emplace(ValueConversionOperator()); // $ targets=element_arithmetic_long + after.emplace(ValueConversionOperator(), 0, 0, 0); // $ targets=element_arithmetic_const_ref +} + +struct ElementFromQualifiedPointer { + ElementFromQualifiedPointer(const char*); // element_qualified_pointer + ElementFromQualifiedPointer(const char* const&, int); // element_qualified_pointer_const_ref + ElementFromQualifiedPointer(const char*&&, int, int); // element_qualified_pointer_rref + ElementFromQualifiedPointer(const char*&, int, int, int); // element_qualified_pointer_lref + ElementFromQualifiedPointer(const char**, int, int, int, int); // element_qualified_double_pointer + ElementFromQualifiedPointer(const char* const*, int, int, int, int, int); // element_qualified_const_double_pointer +}; + +void test_pointer_qualification_conversions() { + Container container; + char buffer[] = "abc"; + char* pointer = buffer; + char** doublePointer = &pointer; + const char* constPointer = buffer; + container.emplace(buffer); // $ targets=element_qualified_pointer + container.emplace(pointer); // $ targets=element_qualified_pointer + container.emplace(pointer, 0); // $ targets=element_qualified_pointer_const_ref + container.emplace(buffer, 0, 0); // $ targets=element_qualified_pointer_rref + container.emplace(static_cast(pointer), 0, 0); // $ targets=element_qualified_pointer_rref + container.emplace(pointer, 0, 0, 0); // no target + container.emplace(doublePointer, 0, 0, 0, 0); // no target + container.emplace(doublePointer, 0, 0, 0, 0, 0); // $ MISSING: targets=element_qualified_const_double_pointer + Container mutableContainer; + mutableContainer.emplace(constPointer, 42); // no target +} + +struct ConversionBase { + operator int() const; +}; + +struct ConversionDerived : ConversionBase {}; +struct ConversionFurtherDerived : ConversionDerived {}; + +struct ElementFromBase { + ElementFromBase(ConversionBase); // element_base_value + ElementFromBase(ConversionBase&, int); // element_base_lref + ElementFromBase(const ConversionBase&, int, int); // element_base_const_ref + ElementFromBase(ConversionBase&&, int, int, int); // element_base_rref + ElementFromBase(ConversionBase*, int, int, int, int); // element_base_pointer + ElementFromBase(const ConversionBase*, int, int, int, int, int); // element_const_base_pointer +}; + +struct ElementFromDerived { + ElementFromDerived(ConversionDerived&); // element_derived_lref + ElementFromDerived(ConversionDerived*, int); // element_derived_pointer +}; + +void test_inheritance_conversions() { + ConversionFurtherDerived derived; + const ConversionDerived constDerived{}; + ConversionBase base; + Container container; + container.emplace(derived); // $ targets=element_base_value + container.emplace(derived, 0); // $ targets=element_base_lref + container.emplace(constDerived, 0, 0); // $ targets=element_base_const_ref + container.emplace(ConversionDerived(), 0, 0, 0); // $ targets=element_base_rref + container.emplace(derived, 0, 0, 0); // no targets + container.emplace(constDerived, 0); // no targets + container.emplace(&derived, 0, 0, 0, 0); // $ targets=element_base_pointer + container.emplace(&constDerived, 0, 0, 0, 0); // no targets + container.emplace(&constDerived, 0, 0, 0, 0, 0); // $ targets=element_const_base_pointer + Container downcast; + downcast.emplace(base); // no targets + downcast.emplace(&base, 0); // no targets + Container inherited; + inherited.emplace(derived); // $ targets=element_operator_value +} + +struct ElementFromStandardPointer { + ElementFromStandardPointer(void*); // element_void_pointer + ElementFromStandardPointer(const void*, int); // element_const_void_pointer + ElementFromStandardPointer(int*, int, int); // element_int_pointer + ElementFromStandardPointer(bool, int, int, int, int); // element_pointer_bool +}; + +void test_standard_pointer_conversions() { + Container container; + int value = 42; + const int constValue = 42; + container.emplace(&value); // $ targets=element_void_pointer + container.emplace(&constValue); // no targets + container.emplace(&constValue, 0); // $ targets=element_const_void_pointer + container.emplace(nullptr); // $ targets=element_void_pointer + container.emplace(nullptr, 0, 0); // $ targets=element_int_pointer + container.emplace(0, 0, 0); // no targets + container.emplace(&value, 0, 0, 0, 0); // $ targets=element_pointer_bool + container.emplace(nullptr, 0, 0, 0, 0); // no targets + void* opaque = &value; + container.emplace(opaque, 0, 0); // no targets +} + +using Callback = int (*)(int); +using NothrowCallback = int (*)(int) noexcept; +int callback(int); +int nothrowCallback(int) noexcept; +double differentCallback(int); + +struct ElementFromCallback { + ElementFromCallback(Callback); // element_callback + ElementFromCallback(NothrowCallback, int); // element_nothrow_callback + ElementFromCallback(const Callback&, int, int); // element_callback_const_ref +}; + +void test_function_conversions() { + Container container; + Callback pointer = callback; + NothrowCallback nothrowPointer = nothrowCallback; + container.emplace(callback); // $ targets=element_callback + container.emplace(nothrowCallback); // $ targets=element_callback + container.emplace(nothrowPointer); // $ targets=element_callback + container.emplace(nothrowCallback, 0); // $ targets=element_nothrow_callback + container.emplace(pointer, 0); // $ SPURIOUS: targets=element_nothrow_callback + container.emplace(callback, 0); // $ SPURIOUS: targets=element_nothrow_callback + container.emplace(callback, 0, 0); // $ targets=element_callback_const_ref + container.emplace(nullptr); // $ targets=element_callback + container.emplace(differentCallback); // no targets + Container boolean; + boolean.emplace(callback, 0, 0, 0, 0); // $ targets=element_pointer_bool + boolean.emplace(callback); // no targets +} + +void test_standard_conversion_phases() { + Container arithmetic; + long value = 42; + arithmetic.emplace(value, 0, 0, 0, 0); // no targets + arithmetic.emplace(&value); // no targets + arithmetic.emplace(nullptr, 0, 0); // no targets + arithmetic.emplace(ValueConversionOperator(), 0, 0, 0, 0); // $ targets=element_arithmetic_rref + + Container converted; + char buffer[] = "abc"; + converted.emplace(buffer); // $ targets=element_conversion_value + converted.emplace(&value); // no targets + converted.emplace(ScopedArithmeticEnum::value); // no targets +} + +void test_pointer_aliases() { + using Character = const char; + using Pointer = Character*; + using NestedPointer = Pointer*; + Pointer pointer = "abc"; + NestedPointer nested = &pointer; + Pointer const constPointer = pointer; + Pointer volatile volatilePointer = pointer; + Container container; + container.emplace(pointer); // $ targets=element_qualified_pointer + container.emplace(nested, 0, 0, 0, 0); // $ targets=element_qualified_double_pointer + container.emplace(&constPointer, 0, 0, 0, 0, 0); // $ targets=element_qualified_const_double_pointer + container.emplace(&constPointer, 0, 0, 0, 0); // no targets + container.emplace(&volatilePointer, 0, 0, 0, 0); // no targets + container.emplace(&volatilePointer, 0, 0, 0, 0, 0); // $ MISSING: targets=element_qualified_const_double_pointer + + using CallbackAlias = Callback; + CallbackAlias callbackPointer = callback; + Container callbacks; + callbacks.emplace(callbackPointer); // $ targets=element_callback + callbacks.emplace(callbackPointer, 0, 0); // $ targets=element_callback_const_ref + Container pointers; + pointers.emplace(callbackPointer); // no targets +} \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/forwarding/test.expected b/cpp/ql/test/library-tests/dataflow/forwarding/test.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/cpp/ql/test/library-tests/dataflow/forwarding/test.ext.yml b/cpp/ql/test/library-tests/dataflow/forwarding/test.ext.yml new file mode 100644 index 000000000000..44ba9a609803 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/forwarding/test.ext.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: forwardsModel + data: # namespace, type, subtypes, name, signature, ext, start, constructor, output, provenance + - ["", "Container", True, "emplace", "(Args &&)", "", "0", "T", "Argument[-1].Element", "manual"] diff --git a/cpp/ql/test/library-tests/dataflow/forwarding/test.ql b/cpp/ql/test/library-tests/dataflow/forwarding/test.ql new file mode 100644 index 000000000000..e625769b0224 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/forwarding/test.ql @@ -0,0 +1,31 @@ +import cpp +import utils.test.InlineExpectationsTest +import semmle.code.cpp.dataflow.ExternalFlow +import semmle.code.cpp.ir.IR + +bindingset[s] +string quote(string s) { if s.matches("% %") then result = "\"" + s + "\"" else result = s } + +string getConstructorId(Constructor constructor) { + exists(CppStyleComment comment, string filepath, int startline, int endline | + comment.getLocation().hasLocationInfo(filepath, startline, _, endline, _) and + constructor.getLocation().hasLocationInfo(filepath, startline, _, endline, _) and + result = comment.getContents().suffix(2).trim() + ) +} + +module AsDefinitionTest implements TestSig { + string getARelevantTag() { result = "targets" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(CallInstruction call, Constructor constructor | + constructor = ConstructorForwarding::getForwardingConstructor(call.getStaticCallTarget(), _) and + element = call.toString() and + tag = "targets" and + value = quote(getConstructorId(constructor)) and + location = call.getLocation() + ) + } +} + +import MakeTest 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 d494c09e71d5..f2339b9a5084 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 @@ -1962,6 +1962,15 @@ 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 | +| (Blob *,int,const Blob &,int,int) | BlobUtil | copy | 0 | Blob * | +| (Blob *,int,const Blob &,int,int) | BlobUtil | copy | 1 | int | +| (Blob *,int,const Blob &,int,int) | BlobUtil | copy | 2 | const Blob & | +| (Blob *,int,const Blob &,int,int) | BlobUtil | copy | 3 | int | +| (Blob *,int,const Blob &,int,int) | BlobUtil | copy | 4 | int | +| (Blob *,int,const char *,int) | BlobUtil | copy | 0 | Blob * | +| (Blob *,int,const char *,int) | BlobUtil | copy | 1 | int | +| (Blob *,int,const char *,int) | BlobUtil | copy | 2 | const char * | +| (Blob *,int,const char *,int) | BlobUtil | copy | 3 | int | | (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 * | @@ -13127,6 +13136,10 @@ getSignatureParameterName | (char *,char,char **) | | __old_strtok_r_1c | 0 | char * | | (char *,char,char **) | | __old_strtok_r_1c | 1 | char | | (char *,char,char **) | | __old_strtok_r_1c | 2 | char ** | +| (char *,const Blob &,int,int) | BlobUtil | copy | 0 | char * | +| (char *,const Blob &,int,int) | BlobUtil | copy | 1 | const Blob & | +| (char *,const Blob &,int,int) | BlobUtil | copy | 2 | int | +| (char *,const Blob &,int,int) | BlobUtil | copy | 3 | int | | (char *,const char *) | | xstrdup | 0 | char * | | (char *,const char *) | | xstrdup | 1 | const char * | | (char *,const char **,const char **,const char **,const char **,const char **) | | _nl_explode_name | 0 | char * | @@ -14051,6 +14064,10 @@ getSignatureParameterName | (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 Cord &) | MessageLite | MergeFromString | 0 | const Cord & | +| (const Cord &) | MessageLite | MergePartialFromString | 0 | const Cord & | +| (const Cord &) | MessageLite | ParseFromString | 0 | const Cord & | +| (const Cord &) | MessageLite | ParsePartialFromString | 0 | const Cord & | | (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 | @@ -15027,6 +15044,38 @@ getSignatureParameterName | (const ISSUER_SIGN_TOOL *,unsigned char **) | | i2d_ISSUER_SIGN_TOOL | 1 | unsigned char ** | | (const ISSUING_DIST_POINT *,unsigned char **) | | i2d_ISSUING_DIST_POINT | 0 | const ISSUING_DIST_POINT * | | (const ISSUING_DIST_POINT *,unsigned char **) | | i2d_ISSUING_DIST_POINT | 1 | unsigned char ** | +| (const InternetProtocol &,const string &,const string &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,const string &,const string &) | basic_resolver | resolve | 1 | const string & | +| (const InternetProtocol &,const string &,const string &) | basic_resolver | resolve | 2 | const string & | +| (const InternetProtocol &,const string &,const string &,error_code &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,const string &,const string &,error_code &) | basic_resolver | resolve | 1 | const string & | +| (const InternetProtocol &,const string &,const string &,error_code &) | basic_resolver | resolve | 2 | const string & | +| (const InternetProtocol &,const string &,const string &,error_code &) | basic_resolver | resolve | 3 | error_code & | +| (const InternetProtocol &,const string &,const string &,flags) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,const string &,const string &,flags) | basic_resolver | resolve | 1 | const string & | +| (const InternetProtocol &,const string &,const string &,flags) | basic_resolver | resolve | 2 | const string & | +| (const InternetProtocol &,const string &,const string &,flags) | basic_resolver | resolve | 3 | flags | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 1 | const string & | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 2 | const string & | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 3 | flags | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 4 | error_code & | +| (const InternetProtocol &,string_view,string_view) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,string_view,string_view) | basic_resolver | resolve | 1 | string_view | +| (const InternetProtocol &,string_view,string_view) | basic_resolver | resolve | 2 | string_view | +| (const InternetProtocol &,string_view,string_view,error_code &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,string_view,string_view,error_code &) | basic_resolver | resolve | 1 | string_view | +| (const InternetProtocol &,string_view,string_view,error_code &) | basic_resolver | resolve | 2 | string_view | +| (const InternetProtocol &,string_view,string_view,error_code &) | basic_resolver | resolve | 3 | error_code & | +| (const InternetProtocol &,string_view,string_view,flags) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,string_view,string_view,flags) | basic_resolver | resolve | 1 | string_view | +| (const InternetProtocol &,string_view,string_view,flags) | basic_resolver | resolve | 2 | string_view | +| (const InternetProtocol &,string_view,string_view,flags) | basic_resolver | resolve | 3 | flags | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 1 | string_view | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 2 | string_view | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 3 | flags | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 4 | error_code & | | (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 * | @@ -15068,6 +15117,8 @@ getSignatureParameterName | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | int | | (const ML_KEM_KEY *,unsigned char **) | | ossl_ml_kem_i2d_pubkey | 0 | const ML_KEM_KEY * | | (const ML_KEM_KEY *,unsigned char **) | | ossl_ml_kem_i2d_pubkey | 1 | unsigned char ** | +| (const MessageProperties &,Allocator *) | MessageProperties | MessageProperties | 0 | const MessageProperties & | +| (const MessageProperties &,Allocator *) | MessageProperties | MessageProperties | 1 | Allocator * | | (const NAMING_AUTHORITY *) | | NAMING_AUTHORITY_get0_authorityId | 0 | const NAMING_AUTHORITY * | | (const NAMING_AUTHORITY *) | | NAMING_AUTHORITY_get0_authorityText | 0 | const NAMING_AUTHORITY * | | (const NAMING_AUTHORITY *) | | NAMING_AUTHORITY_get0_authorityURL | 0 | const NAMING_AUTHORITY * | @@ -16050,6 +16101,7 @@ getSignatureParameterName | (const SXNET *,unsigned char **) | | i2d_SXNET | 1 | unsigned char ** | | (const SXNETID *,unsigned char **) | | i2d_SXNETID | 0 | const SXNETID * | | (const SXNETID *,unsigned char **) | | i2d_SXNETID | 1 | unsigned char ** | +| (const StringRef &) | ByteInStream | reset | 0 | const StringRef & | | (const T &,BOOL) | CComSafeArray | Add | 0 | const class:0 & | | (const T &,BOOL) | CComSafeArray | Add | 1 | BOOL | | (const TS_ACCURACY *) | | TS_ACCURACY_dup | 0 | const TS_ACCURACY * | @@ -18026,6 +18078,12 @@ getSignatureParameterName | (const char *,size_t) | | uv__strndup | 1 | size_t | | (const char *,size_t) | | xstrndup | 0 | const char * | | (const char *,size_t) | | xstrndup | 1 | size_t | +| (const char *,size_t) | ByteInStream | reset | 0 | const char * | +| (const char *,size_t) | ByteInStream | reset | 1 | size_t | +| (const char *,size_t,TYPE *,const char *) | Decoder | decode | 0 | const char * | +| (const char *,size_t,TYPE *,const char *) | Decoder | decode | 1 | size_t | +| (const char *,size_t,TYPE *,const char *) | Decoder | decode | 2 | func:0 * | +| (const char *,size_t,TYPE *,const char *) | Decoder | decode | 3 | const char * | | (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 ** | @@ -18539,6 +18597,18 @@ getSignatureParameterName | (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 string &,const string &) | basic_resolver | resolve | 0 | const string & | +| (const string &,const string &) | basic_resolver | resolve | 1 | const string & | +| (const string &,const string &,error_code &) | basic_resolver | resolve | 0 | const string & | +| (const string &,const string &,error_code &) | basic_resolver | resolve | 1 | const string & | +| (const string &,const string &,error_code &) | basic_resolver | resolve | 2 | error_code & | +| (const string &,const string &,flags) | basic_resolver | resolve | 0 | const string & | +| (const string &,const string &,flags) | basic_resolver | resolve | 1 | const string & | +| (const string &,const string &,flags) | basic_resolver | resolve | 2 | flags | +| (const string &,const string &,flags,error_code &) | basic_resolver | resolve | 0 | const string & | +| (const string &,const string &,flags,error_code &) | basic_resolver | resolve | 1 | const string & | +| (const string &,const string &,flags,error_code &) | basic_resolver | resolve | 2 | flags | +| (const string &,const string &,flags,error_code &) | basic_resolver | resolve | 3 | error_code & | | (const td_thragent_t *,lwpid_t,td_thrhandle_t *) | | __td_ta_lookup_th_unique | 0 | const td_thragent_t * | | (const td_thragent_t *,lwpid_t,td_thrhandle_t *) | | __td_ta_lookup_th_unique | 1 | lwpid_t | | (const td_thragent_t *,lwpid_t,td_thrhandle_t *) | | __td_ta_lookup_th_unique | 2 | td_thrhandle_t * | @@ -22089,6 +22159,15 @@ getSignatureParameterName | (int_dhx942_dh **,const unsigned char **,long) | | d2i_int_dhx | 1 | const unsigned char ** | | (int_dhx942_dh **,const unsigned char **,long) | | d2i_int_dhx | 2 | long | | (intptr_t) | | __sbrk | 0 | intptr_t | +| (istream &,AnyRef *,const char *) | Decoder | decodeAny | 0 | istream & | +| (istream &,AnyRef *,const char *) | Decoder | decodeAny | 1 | AnyRef * | +| (istream &,AnyRef *,const char *) | Decoder | decodeAny | 2 | const char * | +| (istream &,TYPE *,const char *) | Decoder | decode | 0 | istream & | +| (istream &,TYPE *,const char *) | Decoder | decode | 1 | func:0 * | +| (istream &,TYPE *,const char *) | Decoder | decode | 2 | const char * | +| (istream &,TYPE *,const char *) | Decoder | decodeAny | 0 | istream & | +| (istream &,TYPE *,const char *) | Decoder | decodeAny | 1 | func:0 * | +| (istream &,TYPE *,const char *) | Decoder | decodeAny | 2 | const char * | | (lemon *) | | ResortStates | 0 | lemon * | | (lemon *) | | getstate | 0 | lemon * | | (lemon *,action *) | | compute_action | 0 | lemon * | @@ -23378,6 +23457,12 @@ getSignatureParameterName | (old_termios_t *,speed_t) | | __old_cfsetospeed | 1 | speed_t | | (old_termios_t *,speed_t) | | __old_cfsetspeed | 0 | old_termios_t * | | (old_termios_t *,speed_t) | | __old_cfsetspeed | 1 | speed_t | +| (ostream &,const AnyConstRef &) | Encoder | encodeAny | 0 | ostream & | +| (ostream &,const AnyConstRef &) | Encoder | encodeAny | 1 | const AnyConstRef & | +| (ostream &,const TYPE &) | Encoder | encode | 0 | ostream & | +| (ostream &,const TYPE &) | Encoder | encode | 1 | const func:0 & | +| (ostream &,const TYPE &) | Encoder | encodeAny | 0 | ostream & | +| (ostream &,const TYPE &) | Encoder | encodeAny | 1 | const func:0 & | | (passwd *,char *,size_t,int *) | | _nss_compat_getpwent_r | 0 | passwd * | | (passwd *,char *,size_t,int *) | | _nss_compat_getpwent_r | 1 | char * | | (passwd *,char *,size_t,int *) | | _nss_compat_getpwent_r | 2 | size_t | @@ -24677,6 +24762,21 @@ getSignatureParameterName | (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 * | +| (streambuf *,AnyRef *,const char *) | Decoder | decodeAny | 0 | streambuf * | +| (streambuf *,AnyRef *,const char *) | Decoder | decodeAny | 1 | AnyRef * | +| (streambuf *,AnyRef *,const char *) | Decoder | decodeAny | 2 | const char * | +| (streambuf *,TYPE *,const char *) | Decoder | decode | 0 | streambuf * | +| (streambuf *,TYPE *,const char *) | Decoder | decode | 1 | func:0 * | +| (streambuf *,TYPE *,const char *) | Decoder | decode | 2 | const char * | +| (streambuf *,TYPE *,const char *) | Decoder | decodeAny | 0 | streambuf * | +| (streambuf *,TYPE *,const char *) | Decoder | decodeAny | 1 | func:0 * | +| (streambuf *,TYPE *,const char *) | Decoder | decodeAny | 2 | const char * | +| (streambuf *,const AnyConstRef &) | Encoder | encodeAny | 0 | streambuf * | +| (streambuf *,const AnyConstRef &) | Encoder | encodeAny | 1 | const AnyConstRef & | +| (streambuf *,const TYPE &) | Encoder | encode | 0 | streambuf * | +| (streambuf *,const TYPE &) | Encoder | encode | 1 | const func:0 & | +| (streambuf *,const TYPE &) | Encoder | encodeAny | 0 | streambuf * | +| (streambuf *,const TYPE &) | Encoder | encodeAny | 1 | const func:0 & | | (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 * | @@ -24689,6 +24789,22 @@ getSignatureParameterName | (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 * | +| (string_view) | MessageLite | MergeFromString | 0 | string_view | +| (string_view) | MessageLite | MergePartialFromString | 0 | string_view | +| (string_view) | MessageLite | ParseFromString | 0 | string_view | +| (string_view) | MessageLite | ParsePartialFromString | 0 | string_view | +| (string_view,string_view) | basic_resolver | resolve | 0 | string_view | +| (string_view,string_view) | basic_resolver | resolve | 1 | string_view | +| (string_view,string_view,error_code &) | basic_resolver | resolve | 0 | string_view | +| (string_view,string_view,error_code &) | basic_resolver | resolve | 1 | string_view | +| (string_view,string_view,error_code &) | basic_resolver | resolve | 2 | error_code & | +| (string_view,string_view,flags) | basic_resolver | resolve | 0 | string_view | +| (string_view,string_view,flags) | basic_resolver | resolve | 1 | string_view | +| (string_view,string_view,flags) | basic_resolver | resolve | 2 | flags | +| (string_view,string_view,flags,error_code &) | basic_resolver | resolve | 0 | string_view | +| (string_view,string_view,flags,error_code &) | basic_resolver | resolve | 1 | string_view | +| (string_view,string_view,flags,error_code &) | basic_resolver | resolve | 2 | flags | +| (string_view,string_view,flags,error_code &) | basic_resolver | resolve | 3 | error_code & | | (stringtable *,const char *) | | stringtable_add | 0 | stringtable * | | (stringtable *,const char *) | | stringtable_add | 1 | const char * | | (stringtable *,stringtable_finalized *) | | stringtable_finalize | 0 | stringtable * | diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index f8a9e70fec7c..a1f9668c9339 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -4304,6 +4304,89 @@ destructors_for_temps.cpp: # 103| Type = [IntType] int # 103| ValueCategory = prvalue # 104| getStmt(1): [ReturnStmt] return ... +# 106| [CopyAssignmentOperator] ClassWithArrayAndDestructor& ClassWithArrayAndDestructor::operator=(ClassWithArrayAndDestructor const&) +# 106| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const ClassWithArrayAndDestructor & +# 106| [Constructor] void ClassWithArrayAndDestructor::ClassWithArrayAndDestructor() +# 106| : +# 106| [Destructor] void ClassWithArrayAndDestructor::~ClassWithArrayAndDestructor() +# 106| : +# 108| [TopLevelFunction] void temp_test13(bool) +# 108| : +# 108| getParameter(0): [Parameter] b +# 108| Type = [BoolType] bool +# 108| getEntryPoint(): [BlockStmt] { ... } +# 109| getStmt(0): [DeclStmt] declaration +# 109| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 109| Type = [LValueReferenceType] const int & +# 109| getVariable().getInitializer(): [Initializer] initializer for t +# 109| getExpr(): [ConditionalExpr] ... ? ... : ... +# 109| Type = [IntType] int +# 109| ValueCategory = lvalue +# 109| getCondition(): [VariableAccess] b +# 109| Type = [BoolType] bool +# 109| ValueCategory = prvalue(load) +# 109| getThen(): [ArrayExpr] access to array +# 109| Type = [IntType] int +# 109| ValueCategory = lvalue +# 109| getArrayBase(): [ValueFieldAccess] a +# 109| Type = [ArrayType] int[2] +# 109| ValueCategory = prvalue +# 109| getQualifier(): [Literal] 0 +# 109| Type = [Struct] ClassWithArrayAndDestructor +# 109| Value = [Literal] 0 +# 109| ValueCategory = prvalue +# 109| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 109| Type = [Struct] ClassWithArrayAndDestructor +# 109| ValueCategory = prvalue(load) +# 109| getArrayOffset(): [Literal] 0 +# 109| Type = [IntType] int +# 109| Value = [Literal] 0 +# 109| ValueCategory = prvalue +# 109| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 109| Type = [IntPointerType] int * +# 109| ValueCategory = prvalue +# 109| getElse(): [ArrayExpr] access to array +# 109| Type = [IntType] int +# 109| ValueCategory = lvalue +# 109| getArrayBase(): [ValueFieldAccess] a +# 109| Type = [ArrayType] int[2] +# 109| ValueCategory = prvalue +# 109| getQualifier(): [Literal] 0 +# 109| Type = [Struct] ClassWithArrayAndDestructor +# 109| Value = [Literal] 0 +# 109| ValueCategory = prvalue +# 109| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 109| Type = [Struct] ClassWithArrayAndDestructor +# 109| ValueCategory = prvalue(load) +# 109| getArrayOffset(): [Literal] 1 +# 109| Type = [IntType] int +# 109| Value = [Literal] 1 +# 109| ValueCategory = prvalue +# 109| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 109| Type = [IntPointerType] int * +# 109| ValueCategory = prvalue +# 109| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 109| Type = [LValueReferenceType] const int & +# 109| ValueCategory = prvalue +# 109| getExpr(): [CStyleCast] (const int)... +# 109| Conversion = [GlvalueConversion] glvalue conversion +# 109| Type = [SpecifiedType] const int +# 109| ValueCategory = lvalue +# 110| getStmt(1): [ReturnStmt] return ... +# 111| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithArrayAndDestructor +# 111| Type = [VoidType] void +# 111| ValueCategory = prvalue +# 111| getQualifier(): [ReuseExpr] reuse of temporary object +# 111| Type = [Struct] ClassWithArrayAndDestructor +# 111| ValueCategory = xvalue +# 111| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithArrayAndDestructor +# 111| Type = [VoidType] void +# 111| ValueCategory = prvalue +# 111| getQualifier(): [ReuseExpr] reuse of temporary object +# 111| Type = [Struct] ClassWithArrayAndDestructor +# 111| ValueCategory = xvalue generic.c: # 1| [TopLevelFunction] void c11_generic_test_with_load(unsigned int, int) # 1| : @@ -14999,6 +15082,9 @@ ir.cpp: # 1476| getQualifier(): [FunctionCall] call to returnValue # 1476| Type = [Struct] UnusualFields # 1476| ValueCategory = prvalue +#-----| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [Struct] UnusualFields +#-----| ValueCategory = prvalue(load) # 1476| getArrayOffset(): [Literal] 3 # 1476| Type = [IntType] int # 1476| Value = [Literal] 3 @@ -25804,6 +25890,30 @@ ir.cpp: # 2919| Conversion = [FloatingPointToIntegralConversion] floating point to integral conversion # 2919| Type = [IntType] int # 2919| ValueCategory = prvalue +# 2921| [CopyAssignmentOperator] PointerWrapper& PointerWrapper::operator=(PointerWrapper const&) +# 2921| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const PointerWrapper & +# 2921| [MoveAssignmentOperator] PointerWrapper& PointerWrapper::operator=(PointerWrapper&&) +# 2921| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] PointerWrapper && +# 2925| [TopLevelFunction] PointerWrapper get_wrapper() +# 2925| : +# 2927| [TopLevelFunction] void test() +# 2927| : +# 2927| getEntryPoint(): [BlockStmt] { ... } +# 2928| getStmt(0): [ExprStmt] ExprStmt +# 2928| getExpr(): [ValueFieldAccess] x +# 2928| Type = [IntType] int +# 2928| ValueCategory = prvalue +# 2928| getQualifier(): [ValueFieldAccess] point +# 2928| Type = [Struct] Point +# 2928| ValueCategory = prvalue +# 2928| getQualifier(): [FunctionCall] call to get_wrapper +# 2928| Type = [Struct] PointerWrapper +# 2928| ValueCategory = prvalue +# 2929| getStmt(1): [ReturnStmt] return ... ir23.cpp: # 1| [TopLevelFunction] bool consteval_1() # 1| : 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 96035c165331..3e7afc7ed5ed 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -3280,6 +3280,57 @@ destructors_for_temps.cpp: # 102| v102_9(void) = AliasedUse : ~m103_26 # 102| v102_10(void) = ExitFunction : +# 108| void temp_test13(bool) +# 108| Block 0 +# 108| v108_1(void) = EnterFunction : +# 108| m108_2(unknown) = AliasedDefinition : +# 108| m108_3(unknown) = InitializeNonLocal : +# 108| m108_4(unknown) = Chi : total:m108_2, partial:m108_3 +# 108| r108_5(glval) = VariableAddress[b] : +# 108| m108_6(bool) = InitializeParameter[b] : &:r108_5 +# 109| r109_1(glval) = VariableAddress[t] : +# 109| r109_2(glval) = VariableAddress[b] : +# 109| r109_3(bool) = Load[b] : &:r109_2, m108_6 +# 109| v109_4(void) = ConditionalBranch : r109_3 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 109| Block 1 +# 109| m109_5(glval) = Phi : from 2:m109_19, from 3:m109_28 +# 109| r109_6(glval) = VariableAddress[#temp109:18] : +# 109| r109_7(glval) = Load[#temp109:18] : &:r109_6, m109_5 +# 109| r109_8(glval) = Convert : r109_7 +# 109| r109_9(int &) = CopyValue : r109_8 +# 109| m109_10(int &) = Store[t] : &:r109_1, r109_9 +# 110| v110_1(void) = NoOp : +# 108| v108_7(void) = ReturnVoid : +# 108| v108_8(void) = AliasedUse : m108_3 +# 108| v108_9(void) = ExitFunction : + +# 109| Block 2 +# 109| r109_11(glval) = VariableAddress[#temp109:22] : +# 109| r109_12(ClassWithArrayAndDestructor) = Constant[0] : +# 109| m109_13(ClassWithArrayAndDestructor) = Store[#temp109:22] : &:r109_11, r109_12 +# 109| r109_14(glval) = FieldAddress[a] : r109_11 +# 109| r109_15(int *) = Convert : r109_14 +# 109| r109_16(int) = Constant[0] : +# 109| r109_17(glval) = PointerAdd[4] : r109_15, r109_16 +# 109| r109_18(glval) = VariableAddress[#temp109:18] : +# 109| m109_19(glval) = Store[#temp109:18] : &:r109_18, r109_17 +#-----| Goto -> Block 1 + +# 109| Block 3 +# 109| r109_20(glval) = VariableAddress[#temp109:59] : +# 109| r109_21(ClassWithArrayAndDestructor) = Constant[0] : +# 109| m109_22(ClassWithArrayAndDestructor) = Store[#temp109:59] : &:r109_20, r109_21 +# 109| r109_23(glval) = FieldAddress[a] : r109_20 +# 109| r109_24(int *) = Convert : r109_23 +# 109| r109_25(int) = Constant[1] : +# 109| r109_26(glval) = PointerAdd[4] : r109_24, r109_25 +# 109| r109_27(glval) = VariableAddress[#temp109:18] : +# 109| m109_28(glval) = Store[#temp109:18] : &:r109_27, r109_26 +#-----| Goto -> Block 1 + generic.c: # 1| void c11_generic_test_with_load(unsigned int, int) # 1| Block 0 @@ -12128,19 +12179,19 @@ ir.cpp: # 1474| r1474_10(int) = Load[?] : &:r1474_9, ~m1474_5 # 1474| m1474_11(int) = Store[x] : &:r1474_1, r1474_10 # 1476| r1476_1(glval) = VariableAddress[rf] : +#-----| r0_1(glval) = VariableAddress[#temp0:0] : # 1476| r1476_2(glval) = FunctionAddress[returnValue] : # 1476| r1476_3(UnusualFields) = Call[returnValue] : func:r1476_2 # 1476| m1476_4(unknown) = ^CallSideEffect : ~m1474_5 # 1476| m1476_5(unknown) = Chi : total:m1474_5, partial:m1476_4 -# 1476| r1476_6(glval) = VariableAddress[#temp1476:23] : -# 1476| m1476_7(UnusualFields) = Store[#temp1476:23] : &:r1476_6, r1476_3 -# 1476| r1476_8(glval) = FieldAddress[a] : r1476_6 -# 1476| r1476_9(float *) = Convert : r1476_8 -# 1476| r1476_10(int) = Constant[3] : -# 1476| r1476_11(glval) = PointerAdd[4] : r1476_9, r1476_10 -# 1476| r1476_12(glval) = Convert : r1476_11 -# 1476| r1476_13(float &) = CopyValue : r1476_12 -# 1476| m1476_14(float &) = Store[rf] : &:r1476_1, r1476_13 +# 1476| m1476_6(UnusualFields) = Store[#temp0:0] : &:r0_1, r1476_3 +# 1476| r1476_7(glval) = FieldAddress[a] : r0_1 +# 1476| r1476_8(float *) = Convert : r1476_7 +# 1476| r1476_9(int) = Constant[3] : +# 1476| r1476_10(glval) = PointerAdd[4] : r1476_8, r1476_9 +# 1476| r1476_11(glval) = Convert : r1476_10 +# 1476| r1476_12(float &) = CopyValue : r1476_11 +# 1476| m1476_13(float &) = Store[rf] : &:r1476_1, r1476_12 # 1477| r1477_1(glval) = VariableAddress[f] : # 1477| r1477_2(glval) = FunctionAddress[returnValue] : # 1477| r1477_3(UnusualFields) = Call[returnValue] : func:r1477_2 @@ -21772,6 +21823,26 @@ ir.cpp: # 2919| v2919_13(void) = AliasedUse : ~m2919_11 # 2919| v2919_14(void) = ExitFunction : +# 2927| void test() +# 2927| Block 0 +# 2927| v2927_1(void) = EnterFunction : +# 2927| m2927_2(unknown) = AliasedDefinition : +# 2927| m2927_3(unknown) = InitializeNonLocal : +# 2927| m2927_4(unknown) = Chi : total:m2927_2, partial:m2927_3 +# 2928| r2928_1(glval) = FunctionAddress[get_wrapper] : +# 2928| r2928_2(PointerWrapper) = Call[get_wrapper] : func:r2928_1 +# 2928| m2928_3(unknown) = ^CallSideEffect : ~m2927_4 +# 2928| m2928_4(unknown) = Chi : total:m2927_4, partial:m2928_3 +# 2928| r2928_5(glval) = VariableAddress[#temp2928:3] : +# 2928| m2928_6(PointerWrapper) = Store[#temp2928:3] : &:r2928_5, r2928_2 +# 2928| r2928_7(glval) = FieldAddress[point] : r2928_5 +# 2928| r2928_8(glval) = FieldAddress[x] : r2928_7 +# 2928| r2928_9(int) = Load[?] : &:r2928_8, ~m2928_6 +# 2929| v2929_1(void) = NoOp : +# 2927| v2927_5(void) = ReturnVoid : +# 2927| v2927_6(void) = AliasedUse : ~m2928_4 +# 2927| v2927_7(void) = ExitFunction : + ir23.cpp: # 1| bool consteval_1() # 1| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp b/cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp index aefbc27173ac..eaeb222121f0 100644 --- a/cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp +++ b/cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp @@ -101,4 +101,11 @@ void temp_test11() { void temp_test12(ClassWithDestructor3 x) { x.getClassWithDestructor2().get_x() + 5; +} + +struct ClassWithArrayAndDestructor { int a[2]; ~ClassWithArrayAndDestructor(); }; + +void temp_test13(bool b) { + const int &t = b ? ClassWithArrayAndDestructor().a[0] : ClassWithArrayAndDestructor().a[1]; + return; } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 1d2d4d5a79e3..7bab60fbb21e 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -2918,4 +2918,14 @@ T VariableTemplateFunc(T x) { int VariableTemplateFuncUse = VariableTemplateFunc(2.3); +struct PointerWrapper { + Point point; +}; + +PointerWrapper get_wrapper(); + +void test() { + get_wrapper().point.x; +} + // semmle-extractor-options: -std=c++20 --clang 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 05ab6c50d703..7fbcdb9fd2c1 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -2901,6 +2901,55 @@ destructors_for_temps.cpp: # 102| v102_7(void) = AliasedUse : ~m? # 102| v102_8(void) = ExitFunction : +# 108| void temp_test13(bool) +# 108| Block 0 +# 108| v108_1(void) = EnterFunction : +# 108| mu108_2(unknown) = AliasedDefinition : +# 108| mu108_3(unknown) = InitializeNonLocal : +# 108| r108_4(glval) = VariableAddress[b] : +# 108| mu108_5(bool) = InitializeParameter[b] : &:r108_4 +# 109| r109_1(glval) = VariableAddress[t] : +# 109| r109_2(glval) = VariableAddress[b] : +# 109| r109_3(bool) = Load[b] : &:r109_2, ~m? +# 109| v109_4(void) = ConditionalBranch : r109_3 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 109| Block 1 +# 109| r109_5(glval) = VariableAddress[#temp109:18] : +# 109| r109_6(glval) = Load[#temp109:18] : &:r109_5, ~m? +# 109| r109_7(glval) = Convert : r109_6 +# 109| r109_8(int &) = CopyValue : r109_7 +# 109| mu109_9(int &) = Store[t] : &:r109_1, r109_8 +# 110| v110_1(void) = NoOp : +# 108| v108_6(void) = ReturnVoid : +# 108| v108_7(void) = AliasedUse : ~m? +# 108| v108_8(void) = ExitFunction : + +# 109| Block 2 +# 109| r109_10(glval) = VariableAddress[#temp109:22] : +# 109| r109_11(ClassWithArrayAndDestructor) = Constant[0] : +# 109| mu109_12(ClassWithArrayAndDestructor) = Store[#temp109:22] : &:r109_10, r109_11 +# 109| r109_13(glval) = FieldAddress[a] : r109_10 +# 109| r109_14(int *) = Convert : r109_13 +# 109| r109_15(int) = Constant[0] : +# 109| r109_16(glval) = PointerAdd[4] : r109_14, r109_15 +# 109| r109_17(glval) = VariableAddress[#temp109:18] : +# 109| mu109_18(glval) = Store[#temp109:18] : &:r109_17, r109_16 +#-----| Goto -> Block 1 + +# 109| Block 3 +# 109| r109_19(glval) = VariableAddress[#temp109:59] : +# 109| r109_20(ClassWithArrayAndDestructor) = Constant[0] : +# 109| mu109_21(ClassWithArrayAndDestructor) = Store[#temp109:59] : &:r109_19, r109_20 +# 109| r109_22(glval) = FieldAddress[a] : r109_19 +# 109| r109_23(int *) = Convert : r109_22 +# 109| r109_24(int) = Constant[1] : +# 109| r109_25(glval) = PointerAdd[4] : r109_23, r109_24 +# 109| r109_26(glval) = VariableAddress[#temp109:18] : +# 109| mu109_27(glval) = Store[#temp109:18] : &:r109_26, r109_25 +#-----| Goto -> Block 1 + generic.c: # 1| void c11_generic_test_with_load(unsigned int, int) # 1| Block 0 @@ -11124,18 +11173,18 @@ ir.cpp: # 1474| r1474_9(int) = Load[?] : &:r1474_8, ~m? # 1474| mu1474_10(int) = Store[x] : &:r1474_1, r1474_9 # 1476| r1476_1(glval) = VariableAddress[rf] : +#-----| r0_1(glval) = VariableAddress[#temp0:0] : # 1476| r1476_2(glval) = FunctionAddress[returnValue] : # 1476| r1476_3(UnusualFields) = Call[returnValue] : func:r1476_2 # 1476| mu1476_4(unknown) = ^CallSideEffect : ~m? -# 1476| r1476_5(glval) = VariableAddress[#temp1476:23] : -# 1476| mu1476_6(UnusualFields) = Store[#temp1476:23] : &:r1476_5, r1476_3 -# 1476| r1476_7(glval) = FieldAddress[a] : r1476_5 -# 1476| r1476_8(float *) = Convert : r1476_7 -# 1476| r1476_9(int) = Constant[3] : -# 1476| r1476_10(glval) = PointerAdd[4] : r1476_8, r1476_9 -# 1476| r1476_11(glval) = Convert : r1476_10 -# 1476| r1476_12(float &) = CopyValue : r1476_11 -# 1476| mu1476_13(float &) = Store[rf] : &:r1476_1, r1476_12 +# 1476| mu1476_5(UnusualFields) = Store[#temp0:0] : &:r0_1, r1476_3 +# 1476| r1476_6(glval) = FieldAddress[a] : r0_1 +# 1476| r1476_7(float *) = Convert : r1476_6 +# 1476| r1476_8(int) = Constant[3] : +# 1476| r1476_9(glval) = PointerAdd[4] : r1476_7, r1476_8 +# 1476| r1476_10(glval) = Convert : r1476_9 +# 1476| r1476_11(float &) = CopyValue : r1476_10 +# 1476| mu1476_12(float &) = Store[rf] : &:r1476_1, r1476_11 # 1477| r1477_1(glval) = VariableAddress[f] : # 1477| r1477_2(glval) = FunctionAddress[returnValue] : # 1477| r1477_3(UnusualFields) = Call[returnValue] : func:r1477_2 @@ -19777,6 +19826,24 @@ ir.cpp: # 2919| v2919_11(void) = AliasedUse : ~m? # 2919| v2919_12(void) = ExitFunction : +# 2927| void test() +# 2927| Block 0 +# 2927| v2927_1(void) = EnterFunction : +# 2927| mu2927_2(unknown) = AliasedDefinition : +# 2927| mu2927_3(unknown) = InitializeNonLocal : +# 2928| r2928_1(glval) = FunctionAddress[get_wrapper] : +# 2928| r2928_2(PointerWrapper) = Call[get_wrapper] : func:r2928_1 +# 2928| mu2928_3(unknown) = ^CallSideEffect : ~m? +# 2928| r2928_4(glval) = VariableAddress[#temp2928:3] : +# 2928| mu2928_5(PointerWrapper) = Store[#temp2928:3] : &:r2928_4, r2928_2 +# 2928| r2928_6(glval) = FieldAddress[point] : r2928_4 +# 2928| r2928_7(glval) = FieldAddress[x] : r2928_6 +# 2928| r2928_8(int) = Load[?] : &:r2928_7, ~m? +# 2929| v2929_1(void) = NoOp : +# 2927| v2927_4(void) = ReturnVoid : +# 2927| v2927_5(void) = AliasedUse : ~m? +# 2927| v2927_6(void) = ExitFunction : + ir23.cpp: # 1| bool consteval_1() # 1| Block 0 diff --git a/cpp/ql/test/library-tests/regex/locations.expected b/cpp/ql/test/library-tests/regex/locations.expected new file mode 100644 index 000000000000..faac1198b943 --- /dev/null +++ b/cpp/ql/test/library-tests/regex/locations.expected @@ -0,0 +1,68 @@ +| regexp.cpp:19:19:19:21 | abc | regexp.cpp | 19 | 19 | 19 | 21 | +| regexp.cpp:22:20:22:26 | a*b+c?d | regexp.cpp | 22 | 20 | 22 | 26 | +| regexp.cpp:23:20:23:25 | a{4,8} | regexp.cpp | 23 | 20 | 23 | 25 | +| regexp.cpp:24:20:24:24 | a{3,} | regexp.cpp | 24 | 20 | 24 | 24 | +| regexp.cpp:25:20:25:23 | a{7} | regexp.cpp | 25 | 20 | 25 | 23 | +| regexp.cpp:28:19:28:25 | foo\|bar | regexp.cpp | 28 | 19 | 28 | 25 | +| regexp.cpp:31:19:31:23 | [abc] | regexp.cpp | 31 | 19 | 31 | 23 | +| regexp.cpp:32:19:32:30 | [a-fA-F0-9_] | regexp.cpp | 32 | 19 | 32 | 30 | +| regexp.cpp:33:19:33:23 | [\\w]+ | regexp.cpp | 33 | 19 | 33 | 23 | +| regexp.cpp:34:19:34:27 | \\[\\][123] | regexp.cpp | 34 | 19 | 34 | 27 | +| regexp.cpp:35:19:35:24 | [^A-Z] | regexp.cpp | 35 | 19 | 35 | 24 | +| regexp.cpp:36:19:36:21 | []] | regexp.cpp | 36 | 19 | 36 | 21 | +| regexp.cpp:37:19:37:22 | [^]] | regexp.cpp | 37 | 19 | 37 | 22 | +| regexp.cpp:38:19:38:22 | [^-] | regexp.cpp | 38 | 19 | 38 | 22 | +| regexp.cpp:39:19:39:21 | [\|] | regexp.cpp | 39 | 19 | 39 | 21 | +| regexp.cpp:40:20:40:23 | [\\b] | regexp.cpp | 40 | 20 | 40 | 23 | +| regexp.cpp:43:22:43:31 | [[a-f]A-F] | regexp.cpp | 43 | 22 | 43 | 31 | +| regexp.cpp:46:21:46:22 | .* | regexp.cpp | 46 | 21 | 46 | 22 | +| regexp.cpp:47:21:47:25 | \\w+\\W | regexp.cpp | 47 | 21 | 47 | 25 | +| regexp.cpp:48:21:48:24 | \\s\\S | regexp.cpp | 48 | 21 | 48 | 24 | +| regexp.cpp:49:21:49:24 | \\d\\D | regexp.cpp | 49 | 21 | 49 | 24 | +| regexp.cpp:50:21:50:26 | \\n\\r\\t | regexp.cpp | 50 | 21 | 50 | 26 | +| regexp.cpp:53:20:53:25 | \\b!a\\B | regexp.cpp | 53 | 20 | 53 | 25 | +| regexp.cpp:56:20:56:28 | (foo)*bar | regexp.cpp | 56 | 20 | 56 | 28 | +| regexp.cpp:57:20:57:28 | fo(o\|b)ar | regexp.cpp | 57 | 20 | 57 | 28 | +| regexp.cpp:58:20:58:28 | (a\|b\|cd)e | regexp.cpp | 58 | 20 | 58 | 28 | +| regexp.cpp:59:20:59:27 | (?::+)\\w | regexp.cpp | 59 | 20 | 59 | 27 | +| regexp.cpp:62:21:62:28 | (a+)b+\\1 | regexp.cpp | 62 | 21 | 62 | 28 | +| regexp.cpp:65:21:65:32 | [[:alnum:]]* | regexp.cpp | 65 | 21 | 65 | 32 | +| regexp.cpp:66:21:66:32 | [[:digit:]]+ | regexp.cpp | 66 | 21 | 66 | 32 | +| regexp.cpp:67:21:67:36 | [[:alnum:]]{2,3} | regexp.cpp | 67 | 21 | 67 | 36 | +| regexp.cpp:68:21:68:35 | [a-f[:digit:]]+ | regexp.cpp | 68 | 21 | 68 | 35 | +| regexp.cpp:69:21:69:32 | [^[:digit:]] | regexp.cpp | 69 | 21 | 69 | 32 | +| regexp.cpp:72:22:72:43 | [[:alpha:]][[:digit:]] | regexp.cpp | 72 | 22 | 72 | 43 | +| regexp.cpp:75:22:75:41 | [[:alpha:][:digit:]] | regexp.cpp | 75 | 22 | 75 | 41 | +| regexp.cpp:78:22:78:38 | [A-F[:digit:]a-f] | regexp.cpp | 78 | 22 | 78 | 38 | +| regexp.cpp:81:27:81:33 | [[.a.]] | regexp.cpp | 81 | 27 | 81 | 33 | +| regexp.cpp:82:27:82:39 | [A-F[.b.]a-f] | regexp.cpp | 82 | 27 | 82 | 39 | +| regexp.cpp:83:27:83:34 | [[.ch.]] | regexp.cpp | 83 | 27 | 83 | 34 | +| regexp.cpp:86:28:86:34 | [[=a=]] | regexp.cpp | 86 | 28 | 86 | 34 | +| regexp.cpp:87:28:87:40 | [A-F[=b=]a-f] | regexp.cpp | 87 | 28 | 87 | 40 | +| regexp.cpp:90:22:90:30 | [:digit:] | regexp.cpp | 90 | 22 | 90 | 30 | +| regexp.cpp:93:19:93:24 | \\u0061 | regexp.cpp | 93 | 19 | 93 | 24 | +| regexp.cpp:96:19:96:22 | \\x61 | regexp.cpp | 96 | 19 | 96 | 22 | +| regexp.cpp:99:21:99:23 | \\cA | regexp.cpp | 99 | 21 | 99 | 23 | +| regexp.cpp:100:21:100:25 | [\\cz] | regexp.cpp | 100 | 21 | 100 | 25 | +| regexp.cpp:103:20:103:21 | \\0 | regexp.cpp | 103 | 20 | 103 | 21 | +| regexp.cpp:104:20:104:23 | [\\0] | regexp.cpp | 104 | 20 | 104 | 23 | +| regexp.cpp:107:21:107:23 | a*? | regexp.cpp | 107 | 21 | 107 | 23 | +| regexp.cpp:108:21:108:23 | b+? | regexp.cpp | 108 | 21 | 108 | 23 | +| regexp.cpp:109:21:109:23 | c?? | regexp.cpp | 109 | 21 | 109 | 23 | +| regexp.cpp:110:21:110:27 | d{2,3}? | regexp.cpp | 110 | 21 | 110 | 27 | +| regexp.cpp:111:18:111:21 | \\f\\v | regexp.cpp | 111 | 18 | 111 | 21 | +| regexp.cpp:114:25:114:28 | a\\nb | regexp.cpp | 114 | 25 | 114 | 28 | +| regexp.cpp:115:37:115:40 | a\\nc | regexp.cpp | 115 | 37 | 115 | 40 | +| regexp.cpp:116:39:116:42 | a\\nc | regexp.cpp | 116 | 39 | 116 | 42 | +| regexp.cpp:117:38:117:41 | a\\nc | regexp.cpp | 117 | 38 | 117 | 41 | +| regexp.cpp:118:38:118:41 | a\\nc | regexp.cpp | 118 | 38 | 118 | 41 | +| regexp.cpp:119:23:119:26 | a\\nc | regexp.cpp | 119 | 23 | 119 | 26 | +| regexp.cpp:120:26:120:29 | a\\nc | regexp.cpp | 120 | 26 | 120 | 29 | +| regexp.cpp:121:42:121:45 | a\\nc | regexp.cpp | 121 | 42 | 121 | 45 | +| regexp.cpp:122:41:122:44 | a\\nc | regexp.cpp | 122 | 41 | 122 | 44 | +| regexp.cpp:123:41:123:44 | a\\nc | regexp.cpp | 123 | 41 | 123 | 44 | +| regexp.cpp:124:25:124:28 | a\\nc | regexp.cpp | 124 | 25 | 124 | 28 | +| regexp.cpp:125:29:125:32 | a\\nc | regexp.cpp | 125 | 29 | 125 | 32 | +| regexp.cpp:130:29:130:32 | abc1 | regexp.cpp | 130 | 29 | 130 | 32 | +| regexp.cpp:131:35:131:38 | abc2 | regexp.cpp | 131 | 35 | 131 | 38 | +| regexp.cpp:132:25:132:30 | xabc3x | regexp.cpp | 132 | 25 | 132 | 30 | diff --git a/cpp/ql/test/library-tests/regex/locations.ql b/cpp/ql/test/library-tests/regex/locations.ql new file mode 100644 index 000000000000..0b6e23f2b79a --- /dev/null +++ b/cpp/ql/test/library-tests/regex/locations.ql @@ -0,0 +1,11 @@ +import semmle.code.cpp.regex.internal.ParseRegExp +import semmle.code.cpp.regex.RegexTreeView + +// Stop gap for missing flow configs +class RegExpTest extends RegExp { + RegExpTest() { any() } +} + +from RegExpTerm t, string file, int sl, int sc, int el, int ec +where t.isRootTerm() and t.hasLocationInfo(file, sl, sc, el, ec) +select t, file, sl, sc, el, ec diff --git a/cpp/ql/test/library-tests/regex/parse.expected b/cpp/ql/test/library-tests/regex/parse.expected new file mode 100644 index 000000000000..35ee14d13119 --- /dev/null +++ b/cpp/ql/test/library-tests/regex/parse.expected @@ -0,0 +1,655 @@ +regexp.cpp: +# 19| [RegExpConstant, RegExpNormalChars] abc + +# 22| [RegExpConstant, RegExpNormalChars] a + +# 22| [RegExpStar] a* +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a + +# 22| [RegExpSequence] a*b+c?d +#-----| 0 -> [RegExpStar] a* +#-----| 1 -> [RegExpPlus] b+ +#-----| 2 -> [RegExpOpt] c? +#-----| 3 -> [RegExpConstant, RegExpNormalChars] d + +# 22| [RegExpConstant, RegExpNormalChars] b + +# 22| [RegExpPlus] b+ +#-----| 0 -> [RegExpConstant, RegExpNormalChars] b + +# 22| [RegExpConstant, RegExpNormalChars] c + +# 22| [RegExpOpt] c? +#-----| 0 -> [RegExpConstant, RegExpNormalChars] c + +# 22| [RegExpConstant, RegExpNormalChars] d + +# 23| [RegExpConstant, RegExpNormalChars] a + +# 23| [RegExpRange] a{4,8} +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a + +# 24| [RegExpConstant, RegExpNormalChars] a + +# 24| [InfiniteRepetitionQuantifier, RegExpRange] a{3,} +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a + +# 25| [RegExpConstant, RegExpNormalChars] a + +# 25| [RegExpRange] a{7} +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a + +# 28| [RegExpConstant, RegExpNormalChars] foo + +# 28| [RegExpAlt] foo|bar +#-----| 0 -> [RegExpConstant, RegExpNormalChars] foo +#-----| 1 -> [RegExpConstant, RegExpNormalChars] bar + +# 28| [RegExpConstant, RegExpNormalChars] bar + +# 31| [RegExpCharacterClass] [abc] +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpNormalChars] b +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 31| [RegExpConstant, RegExpNormalChars] a + +# 31| [RegExpConstant, RegExpNormalChars] b + +# 31| [RegExpConstant, RegExpNormalChars] c + +# 32| [RegExpCharacterClass] [a-fA-F0-9_] +#-----| 0 -> [RegExpCharacterRange] a-f +#-----| 1 -> [RegExpCharacterRange] A-F +#-----| 2 -> [RegExpCharacterRange] 0-9 +#-----| 3 -> [RegExpConstant, RegExpNormalChars] _ + +# 32| [RegExpConstant, RegExpNormalChars] a + +# 32| [RegExpCharacterRange] a-f +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpNormalChars] f + +# 32| [RegExpConstant, RegExpNormalChars] f + +# 32| [RegExpConstant, RegExpNormalChars] A + +# 32| [RegExpCharacterRange] A-F +#-----| 0 -> [RegExpConstant, RegExpNormalChars] A +#-----| 1 -> [RegExpConstant, RegExpNormalChars] F + +# 32| [RegExpConstant, RegExpNormalChars] F + +# 32| [RegExpConstant, RegExpNormalChars] 0 + +# 32| [RegExpCharacterRange] 0-9 +#-----| 0 -> [RegExpConstant, RegExpNormalChars] 0 +#-----| 1 -> [RegExpConstant, RegExpNormalChars] 9 + +# 32| [RegExpConstant, RegExpNormalChars] 9 + +# 32| [RegExpConstant, RegExpNormalChars] _ + +# 33| [RegExpCharacterClass] [\w] +#-----| 0 -> [RegExpCharacterClassEscape] \w + +# 33| [RegExpPlus] [\w]+ +#-----| 0 -> [RegExpCharacterClass] [\w] + +# 33| [RegExpCharacterClassEscape] \w + +# 34| [RegExpConstant, RegExpEscape] \[ + +# 34| [RegExpSequence] \[\][123] +#-----| 0 -> [RegExpConstant, RegExpEscape] \[ +#-----| 1 -> [RegExpConstant, RegExpEscape] \] +#-----| 2 -> [RegExpCharacterClass] [123] + +# 34| [RegExpConstant, RegExpEscape] \] + +# 34| [RegExpCharacterClass] [123] +#-----| 0 -> [RegExpConstant, RegExpNormalChars] 1 +#-----| 1 -> [RegExpConstant, RegExpNormalChars] 2 +#-----| 2 -> [RegExpConstant, RegExpNormalChars] 3 + +# 34| [RegExpConstant, RegExpNormalChars] 1 + +# 34| [RegExpConstant, RegExpNormalChars] 2 + +# 34| [RegExpConstant, RegExpNormalChars] 3 + +# 35| [RegExpCharacterClass] [^A-Z] +#-----| 0 -> [RegExpCharacterRange] A-Z + +# 35| [RegExpConstant, RegExpNormalChars] A + +# 35| [RegExpCharacterRange] A-Z +#-----| 0 -> [RegExpConstant, RegExpNormalChars] A +#-----| 1 -> [RegExpConstant, RegExpNormalChars] Z + +# 35| [RegExpConstant, RegExpNormalChars] Z + +# 36| [RegExpCharacterClass] []] +#-----| 0 -> [RegExpConstant, RegExpNormalChars] ] + +# 36| [RegExpConstant, RegExpNormalChars] ] + +# 37| [RegExpCharacterClass] [^]] +#-----| 0 -> [RegExpConstant, RegExpNormalChars] ] + +# 37| [RegExpConstant, RegExpNormalChars] ] + +# 38| [RegExpCharacterClass] [^-] +#-----| 0 -> [RegExpConstant, RegExpNormalChars] - + +# 38| [RegExpConstant, RegExpNormalChars] - + +# 39| [RegExpCharacterClass] [|] +#-----| 0 -> [RegExpConstant, RegExpNormalChars] | + +# 39| [RegExpConstant, RegExpNormalChars] | + +# 40| [RegExpCharacterClass] [\b] +#-----| 0 -> [RegExpConstant, RegExpEscape] \b + +# 40| [RegExpConstant, RegExpEscape] \b + +# 43| [RegExpCharacterClass] [[a-f] +#-----| 0 -> [RegExpConstant, RegExpNormalChars] [ +#-----| 1 -> [RegExpCharacterRange] a-f + +# 43| [RegExpSequence] [[a-f]A-F] +#-----| 0 -> [RegExpCharacterClass] [[a-f] +#-----| 1 -> [RegExpConstant, RegExpNormalChars] A-F] + +# 43| [RegExpConstant, RegExpNormalChars] [ + +# 43| [RegExpConstant, RegExpNormalChars] a + +# 43| [RegExpCharacterRange] a-f +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpNormalChars] f + +# 43| [RegExpConstant, RegExpNormalChars] f + +# 43| [RegExpConstant, RegExpNormalChars] A-F] + +# 46| [RegExpDot] . + +# 46| [RegExpStar] .* +#-----| 0 -> [RegExpDot] . + +# 47| [RegExpCharacterClassEscape] \w + +# 47| [RegExpPlus] \w+ +#-----| 0 -> [RegExpCharacterClassEscape] \w + +# 47| [RegExpSequence] \w+\W +#-----| 0 -> [RegExpPlus] \w+ +#-----| 1 -> [RegExpCharacterClassEscape] \W + +# 47| [RegExpCharacterClassEscape] \W + +# 48| [RegExpCharacterClassEscape] \s + +# 48| [RegExpSequence] \s\S +#-----| 0 -> [RegExpCharacterClassEscape] \s +#-----| 1 -> [RegExpCharacterClassEscape] \S + +# 48| [RegExpCharacterClassEscape] \S + +# 49| [RegExpCharacterClassEscape] \d + +# 49| [RegExpSequence] \d\D +#-----| 0 -> [RegExpCharacterClassEscape] \d +#-----| 1 -> [RegExpCharacterClassEscape] \D + +# 49| [RegExpCharacterClassEscape] \D + +# 50| [RegExpConstant, RegExpEscape] \n + +# 50| [RegExpSequence] \n\r\t +#-----| 0 -> [RegExpConstant, RegExpEscape] \n +#-----| 1 -> [RegExpConstant, RegExpEscape] \r +#-----| 2 -> [RegExpConstant, RegExpEscape] \t + +# 50| [RegExpConstant, RegExpEscape] \r + +# 50| [RegExpConstant, RegExpEscape] \t + +# 53| [RegExpSpecialChar] \b + +# 53| [RegExpSequence] \b!a\B +#-----| 0 -> [RegExpSpecialChar] \b +#-----| 1 -> [RegExpConstant, RegExpNormalChars] !a +#-----| 2 -> [RegExpNonWordBoundary] \B + +# 53| [RegExpConstant, RegExpNormalChars] !a + +# 53| [RegExpNonWordBoundary] \B + +# 56| [RegExpGroup] (foo) +#-----| 0 -> [RegExpConstant, RegExpNormalChars] foo + +# 56| [RegExpStar] (foo)* +#-----| 0 -> [RegExpGroup] (foo) + +# 56| [RegExpSequence] (foo)*bar +#-----| 0 -> [RegExpStar] (foo)* +#-----| 1 -> [RegExpConstant, RegExpNormalChars] bar + +# 56| [RegExpConstant, RegExpNormalChars] foo + +# 56| [RegExpConstant, RegExpNormalChars] bar + +# 57| [RegExpConstant, RegExpNormalChars] fo + +# 57| [RegExpSequence] fo(o|b)ar +#-----| 0 -> [RegExpConstant, RegExpNormalChars] fo +#-----| 1 -> [RegExpGroup] (o|b) +#-----| 2 -> [RegExpConstant, RegExpNormalChars] ar + +# 57| [RegExpGroup] (o|b) +#-----| 0 -> [RegExpAlt] o|b + +# 57| [RegExpConstant, RegExpNormalChars] o + +# 57| [RegExpAlt] o|b +#-----| 0 -> [RegExpConstant, RegExpNormalChars] o +#-----| 1 -> [RegExpConstant, RegExpNormalChars] b + +# 57| [RegExpConstant, RegExpNormalChars] b + +# 57| [RegExpConstant, RegExpNormalChars] ar + +# 58| [RegExpGroup] (a|b|cd) +#-----| 0 -> [RegExpAlt] a|b|cd + +# 58| [RegExpSequence] (a|b|cd)e +#-----| 0 -> [RegExpGroup] (a|b|cd) +#-----| 1 -> [RegExpConstant, RegExpNormalChars] e + +# 58| [RegExpConstant, RegExpNormalChars] a + +# 58| [RegExpAlt] a|b|cd +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpNormalChars] b +#-----| 2 -> [RegExpConstant, RegExpNormalChars] cd + +# 58| [RegExpConstant, RegExpNormalChars] b + +# 58| [RegExpConstant, RegExpNormalChars] cd + +# 58| [RegExpConstant, RegExpNormalChars] e + +# 59| [RegExpGroup] (?::+) +#-----| 0 -> [RegExpPlus] :+ + +# 59| [RegExpSequence] (?::+)\w +#-----| 0 -> [RegExpGroup] (?::+) +#-----| 1 -> [RegExpCharacterClassEscape] \w + +# 59| [RegExpConstant, RegExpNormalChars] : + +# 59| [RegExpPlus] :+ +#-----| 0 -> [RegExpConstant, RegExpNormalChars] : + +# 59| [RegExpCharacterClassEscape] \w + +# 62| [RegExpGroup] (a+) +#-----| 0 -> [RegExpPlus] a+ + +# 62| [RegExpSequence] (a+)b+\1 +#-----| 0 -> [RegExpGroup] (a+) +#-----| 1 -> [RegExpPlus] b+ +#-----| 2 -> [RegExpBackRef] \1 + +# 62| [RegExpConstant, RegExpNormalChars] a + +# 62| [RegExpPlus] a+ +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a + +# 62| [RegExpConstant, RegExpNormalChars] b + +# 62| [RegExpPlus] b+ +#-----| 0 -> [RegExpConstant, RegExpNormalChars] b + +# 62| [RegExpBackRef] \1 + +# 65| [RegExpCharacterClass] [[:alnum:]] +#-----| 0 -> [RegExpNamedCharacterProperty] [:alnum:] + +# 65| [RegExpStar] [[:alnum:]]* +#-----| 0 -> [RegExpCharacterClass] [[:alnum:]] + +# 65| [RegExpNamedCharacterProperty] [:alnum:] + +# 66| [RegExpCharacterClass] [[:digit:]] +#-----| 0 -> [RegExpNamedCharacterProperty] [:digit:] + +# 66| [RegExpPlus] [[:digit:]]+ +#-----| 0 -> [RegExpCharacterClass] [[:digit:]] + +# 66| [RegExpNamedCharacterProperty] [:digit:] + +# 67| [RegExpCharacterClass] [[:alnum:]] +#-----| 0 -> [RegExpNamedCharacterProperty] [:alnum:] + +# 67| [RegExpRange] [[:alnum:]]{2,3} +#-----| 0 -> [RegExpCharacterClass] [[:alnum:]] + +# 67| [RegExpNamedCharacterProperty] [:alnum:] + +# 68| [RegExpCharacterClass] [a-f[:digit:]] +#-----| 0 -> [RegExpCharacterRange] a-f +#-----| 1 -> [RegExpNamedCharacterProperty] [:digit:] + +# 68| [RegExpPlus] [a-f[:digit:]]+ +#-----| 0 -> [RegExpCharacterClass] [a-f[:digit:]] + +# 68| [RegExpConstant, RegExpNormalChars] a + +# 68| [RegExpCharacterRange] a-f +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpNormalChars] f + +# 68| [RegExpConstant, RegExpNormalChars] f + +# 68| [RegExpNamedCharacterProperty] [:digit:] + +# 69| [RegExpCharacterClass] [^[:digit:]] +#-----| 0 -> [RegExpNamedCharacterProperty] [:digit:] + +# 69| [RegExpNamedCharacterProperty] [:digit:] + +# 72| [RegExpCharacterClass] [[:alpha:]] +#-----| 0 -> [RegExpNamedCharacterProperty] [:alpha:] + +# 72| [RegExpSequence] [[:alpha:]][[:digit:]] +#-----| 0 -> [RegExpCharacterClass] [[:alpha:]] +#-----| 1 -> [RegExpCharacterClass] [[:digit:]] + +# 72| [RegExpNamedCharacterProperty] [:alpha:] + +# 72| [RegExpCharacterClass] [[:digit:]] +#-----| 0 -> [RegExpNamedCharacterProperty] [:digit:] + +# 72| [RegExpNamedCharacterProperty] [:digit:] + +# 75| [RegExpCharacterClass] [[:alpha:][:digit:]] +#-----| 0 -> [RegExpNamedCharacterProperty] [:alpha:] +#-----| 1 -> [RegExpNamedCharacterProperty] [:digit:] + +# 75| [RegExpNamedCharacterProperty] [:alpha:] + +# 75| [RegExpNamedCharacterProperty] [:digit:] + +# 78| [RegExpCharacterClass] [A-F[:digit:]a-f] +#-----| 0 -> [RegExpCharacterRange] A-F +#-----| 1 -> [RegExpNamedCharacterProperty] [:digit:] +#-----| 2 -> [RegExpCharacterRange] a-f + +# 78| [RegExpConstant, RegExpNormalChars] A + +# 78| [RegExpCharacterRange] A-F +#-----| 0 -> [RegExpConstant, RegExpNormalChars] A +#-----| 1 -> [RegExpConstant, RegExpNormalChars] F + +# 78| [RegExpConstant, RegExpNormalChars] F + +# 78| [RegExpNamedCharacterProperty] [:digit:] + +# 78| [RegExpConstant, RegExpNormalChars] a + +# 78| [RegExpCharacterRange] a-f +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpNormalChars] f + +# 78| [RegExpConstant, RegExpNormalChars] f + +# 81| [RegExpCharacterClass] [[.a.]] +#-----| 0 -> [RegExpNamedCharacterProperty] [.a.] + +# 81| [RegExpNamedCharacterProperty] [.a.] + +# 82| [RegExpCharacterClass] [A-F[.b.]a-f] +#-----| 0 -> [RegExpCharacterRange] A-F +#-----| 1 -> [RegExpNamedCharacterProperty] [.b.] +#-----| 2 -> [RegExpCharacterRange] a-f + +# 82| [RegExpConstant, RegExpNormalChars] A + +# 82| [RegExpCharacterRange] A-F +#-----| 0 -> [RegExpConstant, RegExpNormalChars] A +#-----| 1 -> [RegExpConstant, RegExpNormalChars] F + +# 82| [RegExpConstant, RegExpNormalChars] F + +# 82| [RegExpNamedCharacterProperty] [.b.] + +# 82| [RegExpConstant, RegExpNormalChars] a + +# 82| [RegExpCharacterRange] a-f +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpNormalChars] f + +# 82| [RegExpConstant, RegExpNormalChars] f + +# 83| [RegExpCharacterClass] [[.ch.]] +#-----| 0 -> [RegExpNamedCharacterProperty] [.ch.] + +# 83| [RegExpNamedCharacterProperty] [.ch.] + +# 86| [RegExpCharacterClass] [[=a=]] +#-----| 0 -> [RegExpNamedCharacterProperty] [=a=] + +# 86| [RegExpNamedCharacterProperty] [=a=] + +# 87| [RegExpCharacterClass] [A-F[=b=]a-f] +#-----| 0 -> [RegExpCharacterRange] A-F +#-----| 1 -> [RegExpNamedCharacterProperty] [=b=] +#-----| 2 -> [RegExpCharacterRange] a-f + +# 87| [RegExpConstant, RegExpNormalChars] A + +# 87| [RegExpCharacterRange] A-F +#-----| 0 -> [RegExpConstant, RegExpNormalChars] A +#-----| 1 -> [RegExpConstant, RegExpNormalChars] F + +# 87| [RegExpConstant, RegExpNormalChars] F + +# 87| [RegExpNamedCharacterProperty] [=b=] + +# 87| [RegExpConstant, RegExpNormalChars] a + +# 87| [RegExpCharacterRange] a-f +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpNormalChars] f + +# 87| [RegExpConstant, RegExpNormalChars] f + +# 90| [RegExpNamedCharacterProperty] [:digit:] + +# 93| [RegExpConstant, RegExpEscape] \u0061 + +# 96| [RegExpConstant, RegExpEscape] \x61 + +# 99| [RegExpConstant, RegExpEscape] \cA + +# 100| [RegExpCharacterClass] [\cz] +#-----| 0 -> [RegExpConstant, RegExpEscape] \cz + +# 100| [RegExpConstant, RegExpEscape] \cz + +# 103| [RegExpConstant, RegExpEscape] \0 + +# 104| [RegExpCharacterClass] [\0] +#-----| 0 -> [RegExpConstant, RegExpEscape] \0 + +# 104| [RegExpConstant, RegExpEscape] \0 + +# 107| [RegExpConstant, RegExpNormalChars] a + +# 107| [RegExpStar] a*? +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a + +# 108| [RegExpConstant, RegExpNormalChars] b + +# 108| [RegExpPlus] b+? +#-----| 0 -> [RegExpConstant, RegExpNormalChars] b + +# 109| [RegExpConstant, RegExpNormalChars] c + +# 109| [RegExpOpt] c?? +#-----| 0 -> [RegExpConstant, RegExpNormalChars] c + +# 110| [RegExpConstant, RegExpNormalChars] d + +# 110| [RegExpQuantifier] d{2,3}? +#-----| 0 -> [RegExpConstant, RegExpNormalChars] d + +# 111| [RegExpConstant, RegExpEscape] \f + +# 111| [RegExpSequence] \f\v +#-----| 0 -> [RegExpConstant, RegExpEscape] \f +#-----| 1 -> [RegExpConstant, RegExpEscape] \v + +# 111| [RegExpConstant, RegExpEscape] \v + +# 114| [RegExpConstant, RegExpNormalChars] a + +# 114| [RegExpSequence] a\nb +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] b + +# 114| [RegExpConstant, RegExpEscape] \n + +# 114| [RegExpConstant, RegExpNormalChars] b + +# 115| [RegExpConstant, RegExpNormalChars] a + +# 115| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 115| [RegExpConstant, RegExpEscape] \n + +# 115| [RegExpConstant, RegExpNormalChars] c + +# 116| [RegExpConstant, RegExpNormalChars] a + +# 116| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 116| [RegExpConstant, RegExpEscape] \n + +# 116| [RegExpConstant, RegExpNormalChars] c + +# 117| [RegExpConstant, RegExpNormalChars] a + +# 117| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 117| [RegExpConstant, RegExpEscape] \n + +# 117| [RegExpConstant, RegExpNormalChars] c + +# 118| [RegExpConstant, RegExpNormalChars] a + +# 118| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 118| [RegExpConstant, RegExpEscape] \n + +# 118| [RegExpConstant, RegExpNormalChars] c + +# 119| [RegExpConstant, RegExpNormalChars] a + +# 119| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 119| [RegExpConstant, RegExpEscape] \n + +# 119| [RegExpConstant, RegExpNormalChars] c + +# 120| [RegExpConstant, RegExpNormalChars] a + +# 120| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 120| [RegExpConstant, RegExpEscape] \n + +# 120| [RegExpConstant, RegExpNormalChars] c + +# 121| [RegExpConstant, RegExpNormalChars] a + +# 121| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 121| [RegExpConstant, RegExpEscape] \n + +# 121| [RegExpConstant, RegExpNormalChars] c + +# 122| [RegExpConstant, RegExpNormalChars] a + +# 122| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 122| [RegExpConstant, RegExpEscape] \n + +# 122| [RegExpConstant, RegExpNormalChars] c + +# 123| [RegExpConstant, RegExpNormalChars] a + +# 123| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 123| [RegExpConstant, RegExpEscape] \n + +# 123| [RegExpConstant, RegExpNormalChars] c + +# 124| [RegExpConstant, RegExpNormalChars] a + +# 124| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 124| [RegExpConstant, RegExpEscape] \n + +# 124| [RegExpConstant, RegExpNormalChars] c + +# 125| [RegExpConstant, RegExpNormalChars] a + +# 125| [RegExpSequence] a\nc +#-----| 0 -> [RegExpConstant, RegExpNormalChars] a +#-----| 1 -> [RegExpConstant, RegExpEscape] \n +#-----| 2 -> [RegExpConstant, RegExpNormalChars] c + +# 125| [RegExpConstant, RegExpEscape] \n + +# 125| [RegExpConstant, RegExpNormalChars] c + +# 130| [RegExpConstant, RegExpNormalChars] abc1 + +# 131| [RegExpConstant, RegExpNormalChars] abc2 + +# 132| [RegExpConstant, RegExpNormalChars] xabc3x diff --git a/cpp/ql/test/library-tests/regex/parse.ql b/cpp/ql/test/library-tests/regex/parse.ql new file mode 100644 index 000000000000..2e9debf3784a --- /dev/null +++ b/cpp/ql/test/library-tests/regex/parse.ql @@ -0,0 +1,32 @@ +/** + * @kind graph + */ + +import semmle.code.cpp.regex.internal.ParseRegExp +import semmle.code.cpp.regex.RegexTreeView + +// Stop gap for missing flow configs +class RegExpTest extends RegExp { + RegExpTest() { any() } +} + +query predicate nodes(RegExpTerm n, string attr, string val) { + attr = "semmle.label" and + val = "[" + concat(n.getAPrimaryQlClass(), ", ") + "] " + n.toString() + or + attr = "semmle.order" and + val = + any(int i | + n = + rank[i](RegExpTerm t, string fp, int sl, int sc, int el, int ec | + t.hasLocationInfo(fp, sl, sc, el, ec) + | + t order by fp, sl, sc, el, ec, t.toString() + ) + ).toString() +} + +query predicate edges(RegExpTerm pred, RegExpTerm succ, string attr, string val) { + attr in ["semmle.label", "semmle.order"] and + val = any(int i | succ = pred.getChild(i)).toString() +} diff --git a/cpp/ql/test/library-tests/regex/rawstringliteral.expected b/cpp/ql/test/library-tests/regex/rawstringliteral.expected new file mode 100644 index 000000000000..7eae0eaee6d9 --- /dev/null +++ b/cpp/ql/test/library-tests/regex/rawstringliteral.expected @@ -0,0 +1,7 @@ +| regexp.cpp:119:20:119:28 | a\\nc | +| regexp.cpp:120:22:120:31 | a\\nc | +| regexp.cpp:121:37:121:47 | a\\nc | +| regexp.cpp:122:37:122:46 | a\\nc | +| regexp.cpp:123:37:123:46 | a\\nc | +| regexp.cpp:124:21:124:31 | a\\nc | +| regexp.cpp:125:23:125:37 | a\\nc | diff --git a/cpp/ql/test/library-tests/regex/rawstringliteral.ql b/cpp/ql/test/library-tests/regex/rawstringliteral.ql new file mode 100644 index 000000000000..17673c29790f --- /dev/null +++ b/cpp/ql/test/library-tests/regex/rawstringliteral.ql @@ -0,0 +1,4 @@ +import cpp + +from RawStringLiteral rsl +select rsl diff --git a/cpp/ql/test/library-tests/regex/regexp.cpp b/cpp/ql/test/library-tests/regex/regexp.cpp new file mode 100644 index 000000000000..a7956aa4a21d --- /dev/null +++ b/cpp/ql/test/library-tests/regex/regexp.cpp @@ -0,0 +1,132 @@ +// semmle-extractor-options: -std=c++20 + +namespace std { + template + class basic_regex { + public: + basic_regex(const CharT *s) {} + basic_regex(const CharT *s, int flags) {} + basic_regex &assign(const CharT *s) { return *this; } + }; + typedef basic_regex regex; + typedef basic_regex wregex; +} // namespace std + +// Empty +std::regex r_empty(""); + +// Basic sequence +std::regex r_abc("abc"); + +// Repetition +std::regex r_rep1("a*b+c?d"); +std::regex r_rep2("a{4,8}"); +std::regex r_rep3("a{3,}"); +std::regex r_rep4("a{7}"); + +// Alternation +std::regex r_alt("foo|bar"); + +// Character classes +std::regex r_cc1("[abc]"); +std::regex r_cc2("[a-fA-F0-9_]"); +std::regex r_cc3("[\\w]+"); +std::regex r_cc4("\\[\\][123]"); +std::regex r_cc5("[^A-Z]"); +std::regex r_cc6("[]]"); // Not a valid regex +std::regex r_cc7("[^]]"); // Not a valid regex +std::regex r_cc8("[^-]"); +std::regex r_cc9("[|]"); +std::regex r_cc10("[\\b]"); + +// Nested character classes (BAD - not parsed correctly) +std::regex r_nested("[[a-f]A-F]"); + +// Meta-character classes +std::regex r_meta1(".*"); +std::regex r_meta2("\\w+\\W"); +std::regex r_meta3("\\s\\S"); +std::regex r_meta4("\\d\\D"); +std::regex r_meta5("\\n\\r\\t"); + +// Anchors +std::regex r_anc1("\\b!a\\B"); + +// Groups +std::regex r_grp1("(foo)*bar"); +std::regex r_grp2("fo(o|b)ar"); +std::regex r_grp3("(a|b|cd)e"); +std::regex r_grp4("(?::+)\\w"); // Non-capturing group matching colons + +// Backreferences +std::regex r_bref1("(a+)b+\\1"); + +// Named character properties using a single POSIX bracket expression +std::regex r_prop1("[[:alnum:]]*"); +std::regex r_prop2("[[:digit:]]+"); +std::regex r_prop3("[[:alnum:]]{2,3}"); +std::regex r_prop4("[a-f[:digit:]]+"); // Also valid inside character classes +std::regex r_prop5("[^[:digit:]]"); + +// Two separate character classes, each containing a single POSIX bracket expression +std::regex r_posix1("[[:alpha:]][[:digit:]]"); + +// A single character class containing two POSIX bracket expressions +std::regex r_posix2("[[:alpha:][:digit:]]"); + +// A single character class containing two ranges and one POSIX bracket expression +std::regex r_posix3("[A-F[:digit:]a-f]"); + +// POSIX collating symbols +std::regex r_posix_coll1("[[.a.]]"); +std::regex r_posix_coll2("[A-F[.b.]a-f]"); +std::regex r_posix_coll3("[[.ch.]]"); + +// POSIX equivalence classes +std::regex r_posix_equiv1("[[=a=]]"); +std::regex r_posix_equiv2("[A-F[=b=]a-f]"); + +// *Not* a POSIX bracket expression; just a regular character class. +std::regex r_posix4("[:digit:]"); + +// unicode +std::regex r_uni("\\u0061"); + +// hex +std::regex r_hex("\\x61"); + +// control escapes +std::regex r_ctrl1("\\cA"); +std::regex r_ctrl2("[\\cz]"); + +// NUL escape +std::regex r_nul1("\\0"); +std::regex r_nul2("[\\0]"); + +// Lazy quantifiers and additional supported escapes +std::regex r_lazy1("a*?"); +std::regex r_lazy2("b+?"); +std::regex r_lazy3("c??"); +std::regex r_lazy4("d{2,3}?"); +std::regex r_fv("\\f\\v"); + +// String literal spellings for location tests +std::regex r_loc_plain("a\\nb"); +std::basic_regex r_loc_L(L"a\\nc"); +std::basic_regex r_loc_u8(u8"a\\nc"); +std::basic_regex r_loc_u(u"a\\nc"); +std::basic_regex r_loc_U(U"a\\nc"); +std::regex r_loc_R(R"(a\nc)"); +std::wregex r_loc_LR(LR"(a\nc)"); +std::basic_regex r_loc_u8R(u8R"(a\nc)"); +std::basic_regex r_loc_uR(uR"(a\nc)"); +std::basic_regex r_loc_UR(UR"(a\nc)"); +std::regex r_loc_Rx(R"x(a\nc)x"); +std::regex r_loc_Rfoo(R"foo(a\nc)foo"); + +// Composite and stringified string literals +#define STRINGIFY(str) #str +#define WRAP(str) "x" #str "x" +std::regex r_loc_composite("ab" "c1"); +std::regex r_loc_macro1(STRINGIFY(abc2)); +std::regex r_loc_macro2(WRAP(abc3)); diff --git a/cpp/ql/test/library-tests/regex/regexp.expected b/cpp/ql/test/library-tests/regex/regexp.expected new file mode 100644 index 000000000000..a5ce518846a4 --- /dev/null +++ b/cpp/ql/test/library-tests/regex/regexp.expected @@ -0,0 +1,374 @@ +groupNumber +| regexp.cpp:56:20:56:24 | (foo) | 1 | +| regexp.cpp:57:22:57:26 | (o\|b) | 1 | +| regexp.cpp:58:20:58:27 | (a\|b\|cd) | 1 | +| regexp.cpp:62:21:62:24 | (a+) | 1 | +term +| regexp.cpp:19:19:19:21 | abc | RegExpConstant,RegExpNormalChars | +| regexp.cpp:22:20:22:20 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:22:20:22:21 | a* | RegExpStar | +| regexp.cpp:22:20:22:26 | a*b+c?d | RegExpSequence | +| regexp.cpp:22:22:22:22 | b | RegExpConstant,RegExpNormalChars | +| regexp.cpp:22:22:22:23 | b+ | RegExpPlus | +| regexp.cpp:22:24:22:24 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:22:24:22:25 | c? | RegExpOpt | +| regexp.cpp:22:26:22:26 | d | RegExpConstant,RegExpNormalChars | +| regexp.cpp:23:20:23:20 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:23:20:23:25 | a{4,8} | RegExpRange | +| regexp.cpp:24:20:24:20 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:24:20:24:24 | a{3,} | InfiniteRepetitionQuantifier,RegExpRange | +| regexp.cpp:25:20:25:20 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:25:20:25:23 | a{7} | RegExpRange | +| regexp.cpp:28:19:28:21 | foo | RegExpConstant,RegExpNormalChars | +| regexp.cpp:28:19:28:25 | foo\|bar | RegExpAlt | +| regexp.cpp:28:23:28:25 | bar | RegExpConstant,RegExpNormalChars | +| regexp.cpp:31:19:31:23 | [abc] | RegExpCharacterClass | +| regexp.cpp:31:20:31:20 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:31:21:31:21 | b | RegExpConstant,RegExpNormalChars | +| regexp.cpp:31:22:31:22 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:32:19:32:30 | [a-fA-F0-9_] | RegExpCharacterClass | +| regexp.cpp:32:20:32:20 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:32:20:32:22 | a-f | RegExpCharacterRange | +| regexp.cpp:32:22:32:22 | f | RegExpConstant,RegExpNormalChars | +| regexp.cpp:32:23:32:23 | A | RegExpConstant,RegExpNormalChars | +| regexp.cpp:32:23:32:25 | A-F | RegExpCharacterRange | +| regexp.cpp:32:25:32:25 | F | RegExpConstant,RegExpNormalChars | +| regexp.cpp:32:26:32:26 | 0 | RegExpConstant,RegExpNormalChars | +| regexp.cpp:32:26:32:28 | 0-9 | RegExpCharacterRange | +| regexp.cpp:32:28:32:28 | 9 | RegExpConstant,RegExpNormalChars | +| regexp.cpp:32:29:32:29 | _ | RegExpConstant,RegExpNormalChars | +| regexp.cpp:33:19:33:22 | [\\w] | RegExpCharacterClass | +| regexp.cpp:33:19:33:23 | [\\w]+ | RegExpPlus | +| regexp.cpp:33:20:33:21 | \\w | RegExpCharacterClassEscape | +| regexp.cpp:34:19:34:20 | \\[ | RegExpConstant,RegExpEscape | +| regexp.cpp:34:19:34:27 | \\[\\][123] | RegExpSequence | +| regexp.cpp:34:21:34:22 | \\] | RegExpConstant,RegExpEscape | +| regexp.cpp:34:23:34:27 | [123] | RegExpCharacterClass | +| regexp.cpp:34:24:34:24 | 1 | RegExpConstant,RegExpNormalChars | +| regexp.cpp:34:25:34:25 | 2 | RegExpConstant,RegExpNormalChars | +| regexp.cpp:34:26:34:26 | 3 | RegExpConstant,RegExpNormalChars | +| regexp.cpp:35:19:35:24 | [^A-Z] | RegExpCharacterClass | +| regexp.cpp:35:21:35:21 | A | RegExpConstant,RegExpNormalChars | +| regexp.cpp:35:21:35:23 | A-Z | RegExpCharacterRange | +| regexp.cpp:35:23:35:23 | Z | RegExpConstant,RegExpNormalChars | +| regexp.cpp:36:19:36:21 | []] | RegExpCharacterClass | +| regexp.cpp:36:20:36:20 | ] | RegExpConstant,RegExpNormalChars | +| regexp.cpp:37:19:37:22 | [^]] | RegExpCharacterClass | +| regexp.cpp:37:21:37:21 | ] | RegExpConstant,RegExpNormalChars | +| regexp.cpp:38:19:38:22 | [^-] | RegExpCharacterClass | +| regexp.cpp:38:21:38:21 | - | RegExpConstant,RegExpNormalChars | +| regexp.cpp:39:19:39:21 | [\|] | RegExpCharacterClass | +| regexp.cpp:39:20:39:20 | \| | RegExpConstant,RegExpNormalChars | +| regexp.cpp:40:20:40:23 | [\\b] | RegExpCharacterClass | +| regexp.cpp:40:21:40:22 | \\b | RegExpConstant,RegExpEscape | +| regexp.cpp:43:22:43:27 | [[a-f] | RegExpCharacterClass | +| regexp.cpp:43:22:43:31 | [[a-f]A-F] | RegExpSequence | +| regexp.cpp:43:23:43:23 | [ | RegExpConstant,RegExpNormalChars | +| regexp.cpp:43:24:43:24 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:43:24:43:26 | a-f | RegExpCharacterRange | +| regexp.cpp:43:26:43:26 | f | RegExpConstant,RegExpNormalChars | +| regexp.cpp:43:28:43:31 | A-F] | RegExpConstant,RegExpNormalChars | +| regexp.cpp:46:21:46:21 | . | RegExpDot | +| regexp.cpp:46:21:46:22 | .* | RegExpStar | +| regexp.cpp:47:21:47:22 | \\w | RegExpCharacterClassEscape | +| regexp.cpp:47:21:47:23 | \\w+ | RegExpPlus | +| regexp.cpp:47:21:47:25 | \\w+\\W | RegExpSequence | +| regexp.cpp:47:24:47:25 | \\W | RegExpCharacterClassEscape | +| regexp.cpp:48:21:48:22 | \\s | RegExpCharacterClassEscape | +| regexp.cpp:48:21:48:24 | \\s\\S | RegExpSequence | +| regexp.cpp:48:23:48:24 | \\S | RegExpCharacterClassEscape | +| regexp.cpp:49:21:49:22 | \\d | RegExpCharacterClassEscape | +| regexp.cpp:49:21:49:24 | \\d\\D | RegExpSequence | +| regexp.cpp:49:23:49:24 | \\D | RegExpCharacterClassEscape | +| regexp.cpp:50:21:50:22 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:50:21:50:26 | \\n\\r\\t | RegExpSequence | +| regexp.cpp:50:23:50:24 | \\r | RegExpConstant,RegExpEscape | +| regexp.cpp:50:25:50:26 | \\t | RegExpConstant,RegExpEscape | +| regexp.cpp:53:20:53:21 | \\b | RegExpSpecialChar | +| regexp.cpp:53:20:53:25 | \\b!a\\B | RegExpSequence | +| regexp.cpp:53:22:53:23 | !a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:53:24:53:25 | \\B | RegExpNonWordBoundary | +| regexp.cpp:56:20:56:24 | (foo) | RegExpGroup | +| regexp.cpp:56:20:56:25 | (foo)* | RegExpStar | +| regexp.cpp:56:20:56:28 | (foo)*bar | RegExpSequence | +| regexp.cpp:56:21:56:23 | foo | RegExpConstant,RegExpNormalChars | +| regexp.cpp:56:26:56:28 | bar | RegExpConstant,RegExpNormalChars | +| regexp.cpp:57:20:57:21 | fo | RegExpConstant,RegExpNormalChars | +| regexp.cpp:57:20:57:28 | fo(o\|b)ar | RegExpSequence | +| regexp.cpp:57:22:57:26 | (o\|b) | RegExpGroup | +| regexp.cpp:57:23:57:23 | o | RegExpConstant,RegExpNormalChars | +| regexp.cpp:57:23:57:25 | o\|b | RegExpAlt | +| regexp.cpp:57:25:57:25 | b | RegExpConstant,RegExpNormalChars | +| regexp.cpp:57:27:57:28 | ar | RegExpConstant,RegExpNormalChars | +| regexp.cpp:58:20:58:27 | (a\|b\|cd) | RegExpGroup | +| regexp.cpp:58:20:58:28 | (a\|b\|cd)e | RegExpSequence | +| regexp.cpp:58:21:58:21 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:58:21:58:26 | a\|b\|cd | RegExpAlt | +| regexp.cpp:58:23:58:23 | b | RegExpConstant,RegExpNormalChars | +| regexp.cpp:58:25:58:26 | cd | RegExpConstant,RegExpNormalChars | +| regexp.cpp:58:28:58:28 | e | RegExpConstant,RegExpNormalChars | +| regexp.cpp:59:20:59:25 | (?::+) | RegExpGroup | +| regexp.cpp:59:20:59:27 | (?::+)\\w | RegExpSequence | +| regexp.cpp:59:23:59:23 | : | RegExpConstant,RegExpNormalChars | +| regexp.cpp:59:23:59:24 | :+ | RegExpPlus | +| regexp.cpp:59:26:59:27 | \\w | RegExpCharacterClassEscape | +| regexp.cpp:62:21:62:24 | (a+) | RegExpGroup | +| regexp.cpp:62:21:62:28 | (a+)b+\\1 | RegExpSequence | +| regexp.cpp:62:22:62:22 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:62:22:62:23 | a+ | RegExpPlus | +| regexp.cpp:62:25:62:25 | b | RegExpConstant,RegExpNormalChars | +| regexp.cpp:62:25:62:26 | b+ | RegExpPlus | +| regexp.cpp:62:27:62:28 | \\1 | RegExpBackRef | +| regexp.cpp:65:21:65:31 | [[:alnum:]] | RegExpCharacterClass | +| regexp.cpp:65:21:65:32 | [[:alnum:]]* | RegExpStar | +| regexp.cpp:65:22:65:30 | [:alnum:] | RegExpNamedCharacterProperty | +| regexp.cpp:66:21:66:31 | [[:digit:]] | RegExpCharacterClass | +| regexp.cpp:66:21:66:32 | [[:digit:]]+ | RegExpPlus | +| regexp.cpp:66:22:66:30 | [:digit:] | RegExpNamedCharacterProperty | +| regexp.cpp:67:21:67:31 | [[:alnum:]] | RegExpCharacterClass | +| regexp.cpp:67:21:67:36 | [[:alnum:]]{2,3} | RegExpRange | +| regexp.cpp:67:22:67:30 | [:alnum:] | RegExpNamedCharacterProperty | +| regexp.cpp:68:21:68:34 | [a-f[:digit:]] | RegExpCharacterClass | +| regexp.cpp:68:21:68:35 | [a-f[:digit:]]+ | RegExpPlus | +| regexp.cpp:68:22:68:22 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:68:22:68:24 | a-f | RegExpCharacterRange | +| regexp.cpp:68:24:68:24 | f | RegExpConstant,RegExpNormalChars | +| regexp.cpp:68:25:68:33 | [:digit:] | RegExpNamedCharacterProperty | +| regexp.cpp:69:21:69:32 | [^[:digit:]] | RegExpCharacterClass | +| regexp.cpp:69:23:69:31 | [:digit:] | RegExpNamedCharacterProperty | +| regexp.cpp:72:22:72:32 | [[:alpha:]] | RegExpCharacterClass | +| regexp.cpp:72:22:72:43 | [[:alpha:]][[:digit:]] | RegExpSequence | +| regexp.cpp:72:23:72:31 | [:alpha:] | RegExpNamedCharacterProperty | +| regexp.cpp:72:33:72:43 | [[:digit:]] | RegExpCharacterClass | +| regexp.cpp:72:34:72:42 | [:digit:] | RegExpNamedCharacterProperty | +| regexp.cpp:75:22:75:41 | [[:alpha:][:digit:]] | RegExpCharacterClass | +| regexp.cpp:75:23:75:31 | [:alpha:] | RegExpNamedCharacterProperty | +| regexp.cpp:75:32:75:40 | [:digit:] | RegExpNamedCharacterProperty | +| regexp.cpp:78:22:78:38 | [A-F[:digit:]a-f] | RegExpCharacterClass | +| regexp.cpp:78:23:78:23 | A | RegExpConstant,RegExpNormalChars | +| regexp.cpp:78:23:78:25 | A-F | RegExpCharacterRange | +| regexp.cpp:78:25:78:25 | F | RegExpConstant,RegExpNormalChars | +| regexp.cpp:78:26:78:34 | [:digit:] | RegExpNamedCharacterProperty | +| regexp.cpp:78:35:78:35 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:78:35:78:37 | a-f | RegExpCharacterRange | +| regexp.cpp:78:37:78:37 | f | RegExpConstant,RegExpNormalChars | +| regexp.cpp:81:27:81:33 | [[.a.]] | RegExpCharacterClass | +| regexp.cpp:81:28:81:32 | [.a.] | RegExpNamedCharacterProperty | +| regexp.cpp:82:27:82:39 | [A-F[.b.]a-f] | RegExpCharacterClass | +| regexp.cpp:82:28:82:28 | A | RegExpConstant,RegExpNormalChars | +| regexp.cpp:82:28:82:30 | A-F | RegExpCharacterRange | +| regexp.cpp:82:30:82:30 | F | RegExpConstant,RegExpNormalChars | +| regexp.cpp:82:31:82:35 | [.b.] | RegExpNamedCharacterProperty | +| regexp.cpp:82:36:82:36 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:82:36:82:38 | a-f | RegExpCharacterRange | +| regexp.cpp:82:38:82:38 | f | RegExpConstant,RegExpNormalChars | +| regexp.cpp:83:27:83:34 | [[.ch.]] | RegExpCharacterClass | +| regexp.cpp:83:28:83:33 | [.ch.] | RegExpNamedCharacterProperty | +| regexp.cpp:86:28:86:34 | [[=a=]] | RegExpCharacterClass | +| regexp.cpp:86:29:86:33 | [=a=] | RegExpNamedCharacterProperty | +| regexp.cpp:87:28:87:40 | [A-F[=b=]a-f] | RegExpCharacterClass | +| regexp.cpp:87:29:87:29 | A | RegExpConstant,RegExpNormalChars | +| regexp.cpp:87:29:87:31 | A-F | RegExpCharacterRange | +| regexp.cpp:87:31:87:31 | F | RegExpConstant,RegExpNormalChars | +| regexp.cpp:87:32:87:36 | [=b=] | RegExpNamedCharacterProperty | +| regexp.cpp:87:37:87:37 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:87:37:87:39 | a-f | RegExpCharacterRange | +| regexp.cpp:87:39:87:39 | f | RegExpConstant,RegExpNormalChars | +| regexp.cpp:90:22:90:30 | [:digit:] | RegExpNamedCharacterProperty | +| regexp.cpp:93:19:93:24 | \\u0061 | RegExpConstant,RegExpEscape | +| regexp.cpp:96:19:96:22 | \\x61 | RegExpConstant,RegExpEscape | +| regexp.cpp:99:21:99:23 | \\cA | RegExpConstant,RegExpEscape | +| regexp.cpp:100:21:100:25 | [\\cz] | RegExpCharacterClass | +| regexp.cpp:100:22:100:24 | \\cz | RegExpConstant,RegExpEscape | +| regexp.cpp:103:20:103:21 | \\0 | RegExpConstant,RegExpEscape | +| regexp.cpp:104:20:104:23 | [\\0] | RegExpCharacterClass | +| regexp.cpp:104:21:104:22 | \\0 | RegExpConstant,RegExpEscape | +| regexp.cpp:107:21:107:21 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:107:21:107:23 | a*? | RegExpStar | +| regexp.cpp:108:21:108:21 | b | RegExpConstant,RegExpNormalChars | +| regexp.cpp:108:21:108:23 | b+? | RegExpPlus | +| regexp.cpp:109:21:109:21 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:109:21:109:23 | c?? | RegExpOpt | +| regexp.cpp:110:21:110:21 | d | RegExpConstant,RegExpNormalChars | +| regexp.cpp:110:21:110:27 | d{2,3}? | RegExpQuantifier | +| regexp.cpp:111:18:111:19 | \\f | RegExpConstant,RegExpEscape | +| regexp.cpp:111:18:111:21 | \\f\\v | RegExpSequence | +| regexp.cpp:111:20:111:21 | \\v | RegExpConstant,RegExpEscape | +| regexp.cpp:114:25:114:25 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:114:25:114:28 | a\\nb | RegExpSequence | +| regexp.cpp:114:26:114:27 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:114:28:114:28 | b | RegExpConstant,RegExpNormalChars | +| regexp.cpp:115:37:115:37 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:115:37:115:40 | a\\nc | RegExpSequence | +| regexp.cpp:115:38:115:39 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:115:40:115:40 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:116:39:116:39 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:116:39:116:42 | a\\nc | RegExpSequence | +| regexp.cpp:116:40:116:41 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:116:42:116:42 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:117:38:117:38 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:117:38:117:41 | a\\nc | RegExpSequence | +| regexp.cpp:117:39:117:40 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:117:41:117:41 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:118:38:118:38 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:118:38:118:41 | a\\nc | RegExpSequence | +| regexp.cpp:118:39:118:40 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:118:41:118:41 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:119:23:119:23 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:119:23:119:26 | a\\nc | RegExpSequence | +| regexp.cpp:119:24:119:25 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:119:26:119:26 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:120:26:120:26 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:120:26:120:29 | a\\nc | RegExpSequence | +| regexp.cpp:120:27:120:28 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:120:29:120:29 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:121:42:121:42 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:121:42:121:45 | a\\nc | RegExpSequence | +| regexp.cpp:121:43:121:44 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:121:45:121:45 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:122:41:122:41 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:122:41:122:44 | a\\nc | RegExpSequence | +| regexp.cpp:122:42:122:43 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:122:44:122:44 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:123:41:123:41 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:123:41:123:44 | a\\nc | RegExpSequence | +| regexp.cpp:123:42:123:43 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:123:44:123:44 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:124:25:124:25 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:124:25:124:28 | a\\nc | RegExpSequence | +| regexp.cpp:124:26:124:27 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:124:28:124:28 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:125:29:125:29 | a | RegExpConstant,RegExpNormalChars | +| regexp.cpp:125:29:125:32 | a\\nc | RegExpSequence | +| regexp.cpp:125:30:125:31 | \\n | RegExpConstant,RegExpEscape | +| regexp.cpp:125:32:125:32 | c | RegExpConstant,RegExpNormalChars | +| regexp.cpp:130:29:130:32 | abc1 | RegExpConstant,RegExpNormalChars | +| regexp.cpp:131:35:131:38 | abc2 | RegExpConstant,RegExpNormalChars | +| regexp.cpp:132:25:132:30 | xabc3x | RegExpConstant,RegExpNormalChars | +regExpNormalCharValue +| regexp.cpp:19:19:19:21 | abc | abc | +| regexp.cpp:22:20:22:20 | a | a | +| regexp.cpp:22:22:22:22 | b | b | +| regexp.cpp:22:24:22:24 | c | c | +| regexp.cpp:22:26:22:26 | d | d | +| regexp.cpp:23:20:23:20 | a | a | +| regexp.cpp:24:20:24:20 | a | a | +| regexp.cpp:25:20:25:20 | a | a | +| regexp.cpp:28:19:28:21 | foo | foo | +| regexp.cpp:28:23:28:25 | bar | bar | +| regexp.cpp:31:20:31:20 | a | a | +| regexp.cpp:31:21:31:21 | b | b | +| regexp.cpp:31:22:31:22 | c | c | +| regexp.cpp:32:20:32:20 | a | a | +| regexp.cpp:32:22:32:22 | f | f | +| regexp.cpp:32:23:32:23 | A | A | +| regexp.cpp:32:25:32:25 | F | F | +| regexp.cpp:32:26:32:26 | 0 | 0 | +| regexp.cpp:32:28:32:28 | 9 | 9 | +| regexp.cpp:32:29:32:29 | _ | _ | +| regexp.cpp:33:20:33:21 | \\w | w | +| regexp.cpp:34:19:34:20 | \\[ | [ | +| regexp.cpp:34:21:34:22 | \\] | ] | +| regexp.cpp:34:24:34:24 | 1 | 1 | +| regexp.cpp:34:25:34:25 | 2 | 2 | +| regexp.cpp:34:26:34:26 | 3 | 3 | +| regexp.cpp:35:21:35:21 | A | A | +| regexp.cpp:35:23:35:23 | Z | Z | +| regexp.cpp:36:20:36:20 | ] | ] | +| regexp.cpp:37:21:37:21 | ] | ] | +| regexp.cpp:38:21:38:21 | - | - | +| regexp.cpp:39:20:39:20 | \| | \| | +| regexp.cpp:40:21:40:22 | \\b | b | +| regexp.cpp:43:23:43:23 | [ | [ | +| regexp.cpp:43:24:43:24 | a | a | +| regexp.cpp:43:26:43:26 | f | f | +| regexp.cpp:43:28:43:31 | A-F] | A-F] | +| regexp.cpp:47:21:47:22 | \\w | w | +| regexp.cpp:47:24:47:25 | \\W | W | +| regexp.cpp:48:21:48:22 | \\s | s | +| regexp.cpp:48:23:48:24 | \\S | S | +| regexp.cpp:49:21:49:22 | \\d | d | +| regexp.cpp:49:23:49:24 | \\D | D | +| regexp.cpp:50:21:50:22 | \\n | \n | +| regexp.cpp:50:23:50:24 | \\r | \r | +| regexp.cpp:50:25:50:26 | \\t | \t | +| regexp.cpp:53:22:53:23 | !a | !a | +| regexp.cpp:56:21:56:23 | foo | foo | +| regexp.cpp:56:26:56:28 | bar | bar | +| regexp.cpp:57:20:57:21 | fo | fo | +| regexp.cpp:57:23:57:23 | o | o | +| regexp.cpp:57:25:57:25 | b | b | +| regexp.cpp:57:27:57:28 | ar | ar | +| regexp.cpp:58:21:58:21 | a | a | +| regexp.cpp:58:23:58:23 | b | b | +| regexp.cpp:58:25:58:26 | cd | cd | +| regexp.cpp:58:28:58:28 | e | e | +| regexp.cpp:59:23:59:23 | : | : | +| regexp.cpp:59:26:59:27 | \\w | w | +| regexp.cpp:62:22:62:22 | a | a | +| regexp.cpp:62:25:62:25 | b | b | +| regexp.cpp:68:22:68:22 | a | a | +| regexp.cpp:68:24:68:24 | f | f | +| regexp.cpp:78:23:78:23 | A | A | +| regexp.cpp:78:25:78:25 | F | F | +| regexp.cpp:78:35:78:35 | a | a | +| regexp.cpp:78:37:78:37 | f | f | +| regexp.cpp:82:28:82:28 | A | A | +| regexp.cpp:82:30:82:30 | F | F | +| regexp.cpp:82:36:82:36 | a | a | +| regexp.cpp:82:38:82:38 | f | f | +| regexp.cpp:87:29:87:29 | A | A | +| regexp.cpp:87:31:87:31 | F | F | +| regexp.cpp:87:37:87:37 | a | a | +| regexp.cpp:87:39:87:39 | f | f | +| regexp.cpp:93:19:93:24 | \\u0061 | a | +| regexp.cpp:96:19:96:22 | \\x61 | a | +| regexp.cpp:99:21:99:23 | \\cA | \u0001 | +| regexp.cpp:100:22:100:24 | \\cz | \u001a | +| regexp.cpp:103:20:103:21 | \\0 | \u0000 | +| regexp.cpp:104:21:104:22 | \\0 | \u0000 | +| regexp.cpp:107:21:107:21 | a | a | +| regexp.cpp:108:21:108:21 | b | b | +| regexp.cpp:109:21:109:21 | c | c | +| regexp.cpp:110:21:110:21 | d | d | +| regexp.cpp:111:18:111:19 | \\f | \u000c | +| regexp.cpp:111:20:111:21 | \\v | \u000b | +| regexp.cpp:114:25:114:25 | a | a | +| regexp.cpp:114:26:114:27 | \\n | \n | +| regexp.cpp:114:28:114:28 | b | b | +| regexp.cpp:115:37:115:37 | a | a | +| regexp.cpp:115:38:115:39 | \\n | \n | +| regexp.cpp:115:40:115:40 | c | c | +| regexp.cpp:116:39:116:39 | a | a | +| regexp.cpp:116:40:116:41 | \\n | \n | +| regexp.cpp:116:42:116:42 | c | c | +| regexp.cpp:117:38:117:38 | a | a | +| regexp.cpp:117:39:117:40 | \\n | \n | +| regexp.cpp:117:41:117:41 | c | c | +| regexp.cpp:118:38:118:38 | a | a | +| regexp.cpp:118:39:118:40 | \\n | \n | +| regexp.cpp:118:41:118:41 | c | c | +| regexp.cpp:119:23:119:23 | a | a | +| regexp.cpp:119:24:119:25 | \\n | \n | +| regexp.cpp:119:26:119:26 | c | c | +| regexp.cpp:120:26:120:26 | a | a | +| regexp.cpp:120:27:120:28 | \\n | \n | +| regexp.cpp:120:29:120:29 | c | c | +| regexp.cpp:121:42:121:42 | a | a | +| regexp.cpp:121:43:121:44 | \\n | \n | +| regexp.cpp:121:45:121:45 | c | c | +| regexp.cpp:122:41:122:41 | a | a | +| regexp.cpp:122:42:122:43 | \\n | \n | +| regexp.cpp:122:44:122:44 | c | c | +| regexp.cpp:123:41:123:41 | a | a | +| regexp.cpp:123:42:123:43 | \\n | \n | +| regexp.cpp:123:44:123:44 | c | c | +| regexp.cpp:124:25:124:25 | a | a | +| regexp.cpp:124:26:124:27 | \\n | \n | +| regexp.cpp:124:28:124:28 | c | c | +| regexp.cpp:125:29:125:29 | a | a | +| regexp.cpp:125:30:125:31 | \\n | \n | +| regexp.cpp:125:32:125:32 | c | c | +| regexp.cpp:130:29:130:32 | abc1 | abc1 | +| regexp.cpp:131:35:131:38 | abc2 | abc2 | +| regexp.cpp:132:25:132:30 | xabc3x | xabc3x | diff --git a/cpp/ql/test/library-tests/regex/regexp.ql b/cpp/ql/test/library-tests/regex/regexp.ql new file mode 100644 index 000000000000..67246e433e9c --- /dev/null +++ b/cpp/ql/test/library-tests/regex/regexp.ql @@ -0,0 +1,15 @@ +import semmle.code.cpp.regex.internal.ParseRegExp +import semmle.code.cpp.regex.RegexTreeView + +// Stop gap for missing flow configs +class RegExpTest extends RegExp { + RegExpTest() { any() } +} + +query predicate groupNumber(RegExpGroup g, int number) { number = g.getNumber() } + +query predicate term(RegExpTerm term, string c) { c = term.getPrimaryQlClasses() } + +query predicate regExpNormalCharValue(RegExpNormalChars term, string value) { + value = term.getValue() +} diff --git a/cpp/ql/test/query-tests/Best Practices/BlockWithTooManyStatements/BlockWithTooManyStatements.cpp b/cpp/ql/test/query-tests/Best Practices/BlockWithTooManyStatements/BlockWithTooManyStatements.cpp new file mode 100644 index 000000000000..dacbdc797eee --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/BlockWithTooManyStatements/BlockWithTooManyStatements.cpp @@ -0,0 +1,86 @@ +void complex_block() { + while (true) { + int a = 1; + int b = 2; + int c = 3; + int d = 4; + int e = 5; + int f = 6; + int g = 7; + int h = 8; + int i = 9; + int j = 10; + } + while (true) { + int a = 1; + int b = 2; + int c = 3; + int d = 4; + int e = 5; + int f = 6; + int g = 7; + int h = 8; + int i = 9; + int j = 10; + } + while (true) { + int a = 1; + int b = 2; + int c = 3; + int d = 4; + int e = 5; + int f = 6; + int g = 7; + int h = 8; + int i = 9; + int j = 10; + } + while (true) { + int a = 1; + int b = 2; + int c = 3; + int d = 4; + int e = 5; + int f = 6; + int g = 7; + int h = 8; + int i = 9; + int j = 10; + } + while (true) { + int a = 1; + int b = 2; + int c = 3; + int d = 4; + int e = 5; + int f = 6; + int g = 7; + int h = 8; + int i = 9; + int j = 10; + } +} // $ Alert + +void not_complex_block() { + while (true) { + int a = 1; + int b = 2; + int c = 3; + int d = 4; + int e = 5; + } + while (true) { + int a = 1; + int b = 2; + int c = 3; + int d = 4; + int e = 5; + } + while (true) { + int a = 1; + int b = 2; + int c = 3; + int d = 4; + int e = 5; + } +} diff --git a/cpp/ql/test/query-tests/Best Practices/BlockWithTooManyStatements/BlockWithTooManyStatements.expected b/cpp/ql/test/query-tests/Best Practices/BlockWithTooManyStatements/BlockWithTooManyStatements.expected new file mode 100644 index 000000000000..6243b3a32fa7 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/BlockWithTooManyStatements/BlockWithTooManyStatements.expected @@ -0,0 +1 @@ +| BlockWithTooManyStatements.cpp:1:22:62:1 | { ... } | Block with too many statements (5 complex statements in the block). | diff --git a/cpp/ql/test/query-tests/Best Practices/BlockWithTooManyStatements/BlockWithTooManyStatements.qlref b/cpp/ql/test/query-tests/Best Practices/BlockWithTooManyStatements/BlockWithTooManyStatements.qlref new file mode 100644 index 000000000000..95e8a2612635 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/BlockWithTooManyStatements/BlockWithTooManyStatements.qlref @@ -0,0 +1,2 @@ +query: Best Practices/BlockWithTooManyStatements.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/Best Practices/ComplexCondition/ComplexCondition.cpp b/cpp/ql/test/query-tests/Best Practices/ComplexCondition/ComplexCondition.cpp new file mode 100644 index 000000000000..0322cddc2d7a --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/ComplexCondition/ComplexCondition.cpp @@ -0,0 +1,10 @@ +void complex_condition(bool a, bool b, bool c, bool d, bool e, bool f, bool g, bool h, bool i, bool j, + bool k, bool l, bool m, bool n, bool o) { + if (a || b && c || d && e || f && g || h && i || j && k || l && m || n && o) { // $ Alert + } +} + +void not_complex_condition(bool a, bool b, bool c, bool d, bool e, bool f) { + if (a && b || c && d || e && f) { + } +} diff --git a/cpp/ql/test/query-tests/Best Practices/ComplexCondition/ComplexCondition.expected b/cpp/ql/test/query-tests/Best Practices/ComplexCondition/ComplexCondition.expected new file mode 100644 index 000000000000..fc3d8570dc71 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/ComplexCondition/ComplexCondition.expected @@ -0,0 +1 @@ +| ComplexCondition.cpp:3:7:3:77 | ... \|\| ... | Complex condition: too many logical operations in this expression. | diff --git a/cpp/ql/test/query-tests/Best Practices/ComplexCondition/ComplexCondition.qlref b/cpp/ql/test/query-tests/Best Practices/ComplexCondition/ComplexCondition.qlref new file mode 100644 index 000000000000..156d845994c3 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/ComplexCondition/ComplexCondition.qlref @@ -0,0 +1,2 @@ +query: Best Practices/ComplexCondition.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/AccidentalRethrow/AccidentalRethrow.expected b/cpp/ql/test/query-tests/Best Practices/Exceptions/AccidentalRethrow/AccidentalRethrow.expected new file mode 100644 index 000000000000..4d8fe9aa867e --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/AccidentalRethrow/AccidentalRethrow.expected @@ -0,0 +1,2 @@ +| test.cpp:2:3:2:7 | re-throw exception | As there is no current exception, this rethrow expression will terminate the program. | +| test.cpp:6:3:6:7 | re-throw exception | As there is no current exception, this rethrow expression will terminate the program. | diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/AccidentalRethrow/AccidentalRethrow.qlref b/cpp/ql/test/query-tests/Best Practices/Exceptions/AccidentalRethrow/AccidentalRethrow.qlref new file mode 100644 index 000000000000..1f5897c9578c --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/AccidentalRethrow/AccidentalRethrow.qlref @@ -0,0 +1,2 @@ +query: Best Practices/Exceptions/AccidentalRethrow.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/AccidentalRethrow/test.cpp b/cpp/ql/test/query-tests/Best Practices/Exceptions/AccidentalRethrow/test.cpp new file mode 100644 index 000000000000..4d96a3c14d4e --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/AccidentalRethrow/test.cpp @@ -0,0 +1,34 @@ +void rethrowOutsideCatch() { + throw; // $ Alert +} + +void helperRethrow() { + throw; // $ Alert +} + +void safeRethrowInCatch() { + try { + } catch (...) { + throw; + } +} + +// The function name matches "%exception%", so a rethrow here is assumed to +// be intentional even though it is lexically and dynamically outside any +// catch block. +void rethrowException() { + throw; +} + +// Not lexically inside a catch block, but every call to this function is +// made from within a catch block, so the rethrow is assumed to be safe. +void calledFromCatch() { + throw; +} + +void triggersFromCatch() { + try { + } catch (...) { + calledFromCatch(); + } +} diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/CatchingByValue/CatchingByValue.expected b/cpp/ql/test/query-tests/Best Practices/Exceptions/CatchingByValue/CatchingByValue.expected new file mode 100644 index 000000000000..6e95febc5ce5 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/CatchingByValue/CatchingByValue.expected @@ -0,0 +1,2 @@ +| test.cpp:12:32:12:34 | { ... } | This should catch a DerivedException by (const) reference rather than by value. | +| test.cpp:16:29:16:31 | { ... } | This should catch a BaseException by (const) reference rather than by value. | diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/CatchingByValue/CatchingByValue.qlref b/cpp/ql/test/query-tests/Best Practices/Exceptions/CatchingByValue/CatchingByValue.qlref new file mode 100644 index 000000000000..0a79c26699a0 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/CatchingByValue/CatchingByValue.qlref @@ -0,0 +1,2 @@ +query: Best Practices/Exceptions/CatchingByValue.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/CatchingByValue/test.cpp b/cpp/ql/test/query-tests/Best Practices/Exceptions/CatchingByValue/test.cpp new file mode 100644 index 000000000000..c8c3da5223fa --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/CatchingByValue/test.cpp @@ -0,0 +1,33 @@ +class BaseException { +public: + virtual ~BaseException() {} +}; + +class DerivedException : public BaseException { +}; + +void catchByValueDerived() { + try { + throw DerivedException(); + } catch (DerivedException e) { } // $ Alert + + try { + throw BaseException(); + } catch (BaseException e) { } // $ Alert + + try { + throw DerivedException(); + } catch (DerivedException &e) { } + + try { + throw DerivedException(); + } catch (BaseException &e) { } + + try { + throw new BaseException(); + } catch (BaseException *e) { } + + try { + throw DerivedException(); + } catch (...) { } +} diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/LeakyCatch/LeakyCatch.expected b/cpp/ql/test/query-tests/Best Practices/Exceptions/LeakyCatch/LeakyCatch.expected new file mode 100644 index 000000000000..0c89ab8d5951 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/LeakyCatch/LeakyCatch.expected @@ -0,0 +1,2 @@ +| test.cpp:21:28:21:30 | { ... } | This catch block does not free the caught exception, thereby leaking memory. | +| test.cpp:27:31:27:51 | { ... } | This catch block does not free the caught exception, thereby leaking memory. | diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/LeakyCatch/LeakyCatch.qlref b/cpp/ql/test/query-tests/Best Practices/Exceptions/LeakyCatch/LeakyCatch.qlref new file mode 100644 index 000000000000..f25f199c27db --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/LeakyCatch/LeakyCatch.qlref @@ -0,0 +1,2 @@ +query: Best Practices/Exceptions/LeakyCatch.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/LeakyCatch/test.cpp b/cpp/ql/test/query-tests/Best Practices/Exceptions/LeakyCatch/test.cpp new file mode 100644 index 000000000000..f37b921d7c71 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/LeakyCatch/test.cpp @@ -0,0 +1,60 @@ +// --- definitions --- + +class MyException { +public: + void ReportError() {} + void Delete() {} +}; + +class OtherException { +public: + void ReportError() {} +}; + +void handle(OtherException *e) {} + +// --- test cases --- + +void leakyCatchEmpty() { + try { + // ... + } catch (MyException *e) { } // $ Alert +} + +void leakyCatchNoDelete() { + try { + // ... + } catch (OtherException *e) { e->ReportError(); } // $ Alert +} + +void catchWithDeleteMethodCall() { + try { + // ... + } catch (MyException *e) { + e->ReportError(); + e->Delete(); + } +} + +void catchWithOperatorDelete() { + try { + // ... + } catch (MyException *e) { + e->ReportError(); + delete e; + } +} + +void catchWithPassToFunction() { + try { + // ... + } catch (OtherException *e) { + handle(e); + } +} + +void catchByValueNotPointer() { + try { + // ... + } catch (MyException e) { } +} diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/ThrowingPointers/ThrowingPointers.expected b/cpp/ql/test/query-tests/Best Practices/Exceptions/ThrowingPointers/ThrowingPointers.expected new file mode 100644 index 000000000000..093b60e54d38 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/ThrowingPointers/ThrowingPointers.expected @@ -0,0 +1 @@ +| test.cpp:5:3:5:25 | throw ... | This should throw a MyException rather than a pointer to one. | diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/ThrowingPointers/ThrowingPointers.qlref b/cpp/ql/test/query-tests/Best Practices/Exceptions/ThrowingPointers/ThrowingPointers.qlref new file mode 100644 index 000000000000..03dbfa02a324 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/ThrowingPointers/ThrowingPointers.qlref @@ -0,0 +1,2 @@ +query: Best Practices/Exceptions/ThrowingPointers.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/Best Practices/Exceptions/ThrowingPointers/test.cpp b/cpp/ql/test/query-tests/Best Practices/Exceptions/ThrowingPointers/test.cpp new file mode 100644 index 000000000000..11703a59bf8d --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/Exceptions/ThrowingPointers/test.cpp @@ -0,0 +1,28 @@ +class MyException { +}; + +void throwsPointer1() { + throw new MyException(); // $ Alert +} + +void throwsPointer2() { + MyException *e = new MyException(); + + throw e; // $ MISSING: Alert +} + +void throwsByValue() { + throw MyException(); +} + +// Microsoft MFC's CException hierarchy is intended to be thrown (and +// caught) as a pointer, so it should not be flagged. +class CException { +}; + +class CMyFrameworkException : public CException { +}; + +void throwsFrameworkExceptionPointer() { + throw new CMyFrameworkException(); +} diff --git a/cpp/ql/test/query-tests/Best Practices/Likely Errors/EmptyBlock/EmptyBlock.expected b/cpp/ql/test/query-tests/Best Practices/Likely Errors/EmptyBlock/EmptyBlock.expected index dc572fae9bef..d6d9c209c79a 100644 --- a/cpp/ql/test/query-tests/Best Practices/Likely Errors/EmptyBlock/EmptyBlock.expected +++ b/cpp/ql/test/query-tests/Best Practices/Likely Errors/EmptyBlock/EmptyBlock.expected @@ -1,3 +1,7 @@ | empty_block.cpp:9:10:9:11 | { ... } | Empty block without comment. | | empty_block.cpp:12:10:13:3 | { ... } | Empty block without comment. | | empty_block.cpp:20:10:21:3 | { ... } | Empty block without comment. | +| empty_block.cpp:84:14:85:3 | { ... } | Empty block without comment. | +| empty_block.cpp:93:10:94:3 | { ... } | Empty block without comment. | +| empty_block.cpp:99:10:100:3 | { ... } | Empty block without comment. | +| empty_block.cpp:100:10:101:3 | { ... } | Empty block without comment. | diff --git a/cpp/ql/test/query-tests/Best Practices/Likely Errors/EmptyBlock/empty_block.cpp b/cpp/ql/test/query-tests/Best Practices/Likely Errors/EmptyBlock/empty_block.cpp index 8a8714d310f4..905b873c670d 100644 --- a/cpp/ql/test/query-tests/Best Practices/Likely Errors/EmptyBlock/empty_block.cpp +++ b/cpp/ql/test/query-tests/Best Practices/Likely Errors/EmptyBlock/empty_block.cpp @@ -80,5 +80,25 @@ int f(int x) { } } + // BAD + if (x > 1) { + } + + // GOOD + if (x) { + ++x; + } + + // DUBIOUS (reported) + if (x) { + } else { + ++x; + } + + // BAD (x2) + if (x) { + } else { + } + return 1; } diff --git a/cpp/ql/test/query-tests/Best Practices/UseOfGoto/UseOfGoto.cpp b/cpp/ql/test/query-tests/Best Practices/UseOfGoto/UseOfGoto.cpp new file mode 100644 index 000000000000..0902ea72ff90 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/UseOfGoto/UseOfGoto.cpp @@ -0,0 +1,25 @@ +bool cond(); + +void multiple_forward_and_backward_goto() { // $ Alert +backward_one: + if (cond()) goto forward_one; +backward_two: + if (cond()) goto forward_two; +forward_one: + if (cond()) goto backward_one; +forward_two: + if (cond()) goto backward_two; +} + +void only_forward_goto() { + if (cond()) goto end; + + // ... + + if (cond()) goto end; + + // ... + +end: + // ... +} diff --git a/cpp/ql/test/query-tests/Best Practices/UseOfGoto/UseOfGoto.expected b/cpp/ql/test/query-tests/Best Practices/UseOfGoto/UseOfGoto.expected new file mode 100644 index 000000000000..9d4c90b7b389 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/UseOfGoto/UseOfGoto.expected @@ -0,0 +1 @@ +| UseOfGoto.cpp:3:6:3:39 | definition of multiple_forward_and_backward_goto | Multiple forward and backward goto statements may make function multiple_forward_and_backward_goto hard to understand. | diff --git a/cpp/ql/test/query-tests/Best Practices/UseOfGoto/UseOfGoto.qlref b/cpp/ql/test/query-tests/Best Practices/UseOfGoto/UseOfGoto.qlref new file mode 100644 index 000000000000..82c5d4f08266 --- /dev/null +++ b/cpp/ql/test/query-tests/Best Practices/UseOfGoto/UseOfGoto.qlref @@ -0,0 +1,2 @@ +query: Best Practices/UseOfGoto.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.cpp b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.cpp index d6462ea2b991..461a1a2131ce 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.cpp @@ -43,3 +43,9 @@ int extreme_values(void) if (y >> 1 >= 0x7FFFFFFFFFFF) {} // $ Alert[cpp/constant-comparison] // always true if (y >> 1 >= 0xFFFFFFFFFFF) {} // $ Alert[cpp/constant-comparison] // always true } + +// Test for overlap between PointlessComparison and PointlessSelfComparison +// (PointlessComparison should *not* report this) +bool selfCmp1(int x) { + return (x == (int)x); +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/AmbiguousAssignmentOfComparison.expected b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/AmbiguousAssignmentOfComparison.expected new file mode 100644 index 000000000000..8b905f48bba2 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/AmbiguousAssignmentOfComparison.expected @@ -0,0 +1,36 @@ +| test.c:6:8:6:31 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:13:30:13:54 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:20:8:20:33 | ... /= ... | The '/=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:27:8:27:33 | ... %= ... | The '%=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:34:8:34:32 | ... \|= ... | The '\|=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:41:8:41:33 | ... >>= ... | The '>>=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:51:3:51:26 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:102:28:102:51 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:109:15:109:38 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:116:49:116:72 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.c:130:11:130:34 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:8:8:8:30 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:15:11:15:34 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:22:7:22:29 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:29:11:29:40 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:36:8:36:30 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:43:11:43:33 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:48:8:48:33 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:55:8:55:32 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:64:13:64:35 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:70:29:70:51 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:77:8:77:30 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:84:8:84:38 | ... <<= ... | The '<<=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:91:9:91:31 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:101:3:101:20 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:253:8:253:24 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:294:27:294:49 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:301:27:301:49 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:308:9:308:31 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:315:15:315:37 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:322:23:322:45 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:329:47:329:69 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:343:47:343:69 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:350:11:350:33 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:355:12:355:34 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | +| test.cpp:360:14:360:36 | ... = ... | The '=' operation assigns the result of an unparenthesized comparison, and its result is used as a truth value. | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/AmbiguousAssignmentOfComparison.qlref b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/AmbiguousAssignmentOfComparison.qlref new file mode 100644 index 000000000000..ffa4d7fb05d8 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/AmbiguousAssignmentOfComparison.qlref @@ -0,0 +1,2 @@ +query: Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/test.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/test.c new file mode 100644 index 000000000000..18e7675e40ad --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/test.c @@ -0,0 +1,136 @@ +int read_value(void); +int read_other_value(void); + +int c_direct_condition(void) { + int value; + if ((value = read_value() < 0)) // $ Alert // BAD + return value; + return 0; +} + +int c_logical_condition(void) { + int value; + if (read_other_value() && (value = read_value() >= 0)) // $ Alert // BAD + return value; + return 0; +} + +int c_compound_divide(void) { + int value = 8; + if ((value /= read_value() != 0)) // $ Alert // BAD + return value; + return 0; +} + +int c_compound_remainder(void) { + int value = 8; + if ((value %= read_value() != 0)) // $ Alert // BAD + return value; + return 0; +} + +int c_compound_bitwise_or(void) { + int value = 0; + if ((value |= read_value() > 0)) // $ Alert // BAD + return value; + return 0; +} + +int c_compound_right_shift(void) { + int value = 8; + if ((value >>= read_value() > 0)) // $ Alert // BAD + return value; + return 0; +} + +#define C_AMBIGUOUS_CHECK(VALUE) \ + if (((VALUE) = read_value() < 0)) return (VALUE) + +int c_macro_condition(void) { + int value; + C_AMBIGUOUS_CHECK(value); // $ Alert // BAD + return 0; +} + +int c_explicit_assign_then_compare(void) { + int value; + if ((value = read_value()) < 0) // GOOD + return value; + return 0; +} + +int c_explicit_compare_then_assign(void) { + int value; + if ((value = (read_value() < 0))) // GOOD + return value; + return 0; +} + +int c_explicit_cast_of_comparison(void) { + int value; + if ((value = (int)(read_value() < 0))) // GOOD: The cast explicitly groups the comparison. + return value; + return 0; +} + +int c_boolean_result_assignment(void) { + _Bool negative; + if ((negative = read_value() < 0)) // GOOD: Assigning a comparison result to a Boolean is natural. + return negative; + return 0; +} + +int c_switch_expression(void) { + int value; + switch (value = read_value() < 0) { // GOOD: The switch operand is not used as a truth value. + case 0: + return value; + default: + return 0; + } +} + +int c_discarded_assignment_in_comma_expression(void) { + int value; + if ((value = read_value() < 0, read_other_value())) // GOOD: The assignment result is discarded. + return value; + return 0; +} + +int c_truth_valued_assignment_in_comma_expression(void) { + int value; + if ((read_other_value(), value = read_value() < 0)) // $ Alert // BAD + return value; + return 0; +} + +int c_truth_valued_conditional_then_arm(int flag) { + int value; + if (flag ? (value = read_value() < 0) : 0) // $ Alert // BAD + return value; + return 0; +} + +int c_nested_truth_valued_comma_expression(void) { + int value; + if ((read_other_value(), (read_other_value(), value = read_value() < 0))) // $ Alert // BAD + return value; + return 0; +} + +int c_nested_discarded_comma_expression(void) { + int value; + if (((read_other_value(), value = read_value() < 0), read_other_value())) // GOOD: Discarded. + return value; + return 0; +} + +int c_logical_value_outside_branch(void) { + int value; + return (value = read_value() < 0) && read_other_value(); // $ Alert // BAD +} + +int c_returned_assignment(void) { + int value; + return value = read_value() < 0; // GOOD: The assignment result is not used as a truth value. +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/test.cpp b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/test.cpp new file mode 100644 index 000000000000..ac20faf01958 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AmbiguousAssignmentOfComparison/test.cpp @@ -0,0 +1,373 @@ +int get_value(); +int get_other_value(); +void *get_pointer(); +bool check(int value); + +int direct_if() { + int value; + if ((value = get_value() < 0)) // $ Alert // BAD + return value; + return 0; +} + +int direct_while() { + int value; + while ((value = get_value() != 0)) // $ Alert // BAD + return value; + return 0; +} + +int without_outer_parentheses() { + int value; + if (value = get_value() < 0) // $ Alert // BAD + return value; + return 0; +} + +int for_condition() { + int value; + for (; (value = get_other_value() <= 0);) // $ Alert // BAD + return value; + return 0; +} + +int logical_and() { + int value; + if ((value = get_value() < 0) && get_other_value()) // $ Alert // BAD + return value; + return 0; +} + +int ternary_condition() { + int value; + return (value = get_value() > 0) ? value : 0; // $ Alert // BAD +} + +int pointer_comparison() { + int value; + if ((value = get_pointer() == 0)) // $ Alert // BAD + return value; + return 0; +} + +int parenthesized_operand_only() { + int value; + if ((value = (get_value()) < 0)) // $ Alert // BAD + return value; + return 0; +} + +int do_while_condition() { + int value = 0; + do { + value++; + } while ((value = get_value() < 0)); // $ Alert // BAD + return value; +} + +int logical_or() { + int value; + if (get_other_value() || (value = get_value() > 0)) // $ Alert // BAD + return value; + return 0; +} + +int nested_comparison() { + int value; + if ((value = get_value() < 0) == false) // $ Alert // BAD + return value; + return 0; +} + +int compound_shift() { + int value = 1; + if ((value <<= get_other_value() > 0)) // $ Alert // BAD + return value; + return 0; +} + +int under_logical_not() { + int value; + if (!(value = get_value() < 0)) // $ Alert // BAD + return value; + return 0; +} + +#define CHECK_VALUE(VALUE) \ + if (((VALUE) = get_value() < 0)) return (VALUE) + +int macro_condition() { + int value; + CHECK_VALUE(value); // $ Alert // BAD + return 0; +} + +int explicit_assign_then_compare() { + int value; + if ((value = get_value()) < 0) // GOOD + return value; + return 0; +} + +int explicit_compare_then_assign() { + int value; + if ((value = (get_value() < 0))) // GOOD + return value; + return 0; +} + +int parenthesized_simple_assignment() { + int value; + if ((value = get_value())) // GOOD + return value; + return 0; +} + +int assignment_outside_condition() { + int value; + value = get_value() < 0; // GOOD: The assignment is not part of a condition. + return value; +} + +int plain_comparison() { + int value = get_value(); + if (value < 0) // GOOD + return value; + return 0; +} + +int explicit_compare_then_assign_without_outer_parentheses() { + int value; + if (value = (get_value() < 0)) // GOOD + return value; + return 0; +} + +int explicit_assign_then_compare_in_for() { + int value; + for (; (value = get_other_value()) >= 0;) // GOOD + return value; + return 0; +} + +int two_explicit_assignments() { + int left, right; + if ((left = get_value()) < 0 && (right = get_other_value()) < 0) // GOOD + return left + right; + return 0; +} + +int explicit_comparison_then_compound_assign() { + int value = 0; + if ((value += (get_value() < 0))) // GOOD + return value; + return 0; +} + +int compound_assignment_without_comparison() { + int value = ~0; + if ((value &= get_value())) // GOOD + return value; + return 0; +} + +int switch_expression() { + int value; + switch (value = get_value() < 0) { // GOOD: The switch operand is not used as a truth value. + case 0: + return value; + default: + return 0; + } +} + +#define EXPLICIT_CHECK(VALUE) \ + if (((VALUE) = get_value()) < 0) return (VALUE) + +int explicit_macro_condition() { + int value; + EXPLICIT_CHECK(value); // GOOD + return 0; +} + +template +int never_instantiated_template(T input) { + int value; + if ((value = input < 0)) // GOOD: Uninstantiated template code is excluded. + return value; + return 0; +} + +int unevaluated_assignment() { + int value; + if (sizeof(value = get_value() < 0)) // GOOD: The assignment is unevaluated. + return value; + return 0; +} + +int constant_assignment() { + int value; + if ((value = 0)) // GOOD: The right-hand side is not a comparison. + return value; + return 0; +} + +int explicit_compound_shift_then_compare() { + int value = 1; + if ((value <<= get_other_value()) > 0) // GOOD + return value; + return 0; +} + +int boolean_result_assignment() { + bool negative; + if ((negative = get_value() < 0)) // GOOD: Assigning a comparison result to a Boolean is natural. + return negative; + return 0; +} + +int boolean_result_compound_assignment() { + bool seen = false; + if ((seen |= get_value() < 0)) // GOOD: Accumulating a comparison result in a Boolean is natural. + return seen; + return 0; +} + +int explicit_static_cast_of_comparison() { + int value; + if ((value = static_cast(get_value() < 0))) // GOOD: The cast explicitly groups the comparison. + return value; + return 0; +} + +int explicit_functional_cast_of_comparison() { + int value; + if ((value = int(get_value() < 0))) // GOOD: The cast explicitly groups the comparison. + return value; + return 0; +} + +template +int instantiated_template_body(T input) { + int value; + if ((value = input < 0)) // $ Alert // BAD + return value; + return 0; +} + +int instantiate_template() { + return instantiated_template_body(get_value()); +} + +struct Comparable { + int value; +}; + +bool operator<(Comparable left, int right) { + return left.value < right; +} + +int overloaded_comparison() { + Comparable input = {get_value()}; + int value; + if ((value = input < 0)) // $ MISSING: Alert // BAD [NOT DETECTED]: overloaded operators are outside this query's scope. + return value; + return 0; +} + +int assignment_as_call_argument() { + int value; + if (check(value = get_value() < 0)) // GOOD: The assignment only computes an integer argument. + return value; + return 0; +} + +int discarded_assignment_in_comma_expression() { + int value; + if ((value = get_value() < 0, get_other_value())) // GOOD: The assignment result is discarded. + return value; + return 0; +} + +int truth_valued_assignment_in_comma_expression() { + int value; + if ((get_other_value(), value = get_value() < 0)) // $ Alert // BAD + return value; + return 0; +} + +int comma_assignment_under_comparison() { + int value; + if ((get_other_value(), value = get_value() < 0) == false) // $ Alert // BAD + return value; + return 0; +} + +int nested_truth_valued_comparisons() { + int value; + if (((value = get_value() < 0) == false) == false) // $ Alert // BAD + return value; + return 0; +} + +int truth_valued_conditional_then_arm(bool flag) { + int value; + if (flag ? (value = get_value() < 0) : false) // $ Alert // BAD + return value; + return 0; +} + +int truth_valued_conditional_else_arm(bool flag) { + int value; + if (flag ? false : (value = get_value() < 0)) // $ Alert // BAD + return value; + return 0; +} + +int nested_truth_valued_comma_expression() { + int value; + if ((get_other_value(), (get_other_value(), value = get_value() < 0))) // $ Alert // BAD + return value; + return 0; +} + +int nested_discarded_comma_expression() { + int value; + if (((get_other_value(), value = get_value() < 0), get_other_value())) // GOOD: Discarded. + return value; + return 0; +} + +int nested_comma_assignment_under_comparison() { + int value; + if ((get_other_value(), (get_other_value(), value = get_value() < 0)) == false) // $ Alert // BAD + return value; + return 0; +} + +bool logical_value_outside_branch() { + int value; + return (value = get_value() < 0) && get_other_value(); // $ Alert // BAD +} + +bool logical_not_outside_branch() { + int value; + return !(value = get_value() < 0); // $ Alert // BAD +} + +int truth_valued_assignment_inside_call_argument() { + int value; + if (check((value = get_value() < 0) && get_other_value())) // $ Alert // BAD + return value; + return 0; +} + +int assignment_in_lambda_body() { + int value; + if ([&]() { + value = get_value() < 0; // GOOD: The lambda body is not the surrounding condition. + return true; + }()) + return value; + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/FutileConditional/FutileConditional.cpp b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/FutileConditional/FutileConditional.cpp new file mode 100644 index 000000000000..1635300ac9a9 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/FutileConditional/FutileConditional.cpp @@ -0,0 +1,19 @@ +void emptyIfs(int value) { + if (value) {} // $ Alert[cpp/empty-if] + + if (value > 1) { + } // $ Alert[cpp/empty-if] + + if (value) { // GOOD + ++value; + } + + if (value) { // GOOD + } else { + ++value; + } + + if (value) { // $ MISSING: Alert[cpp/empty-if] + } else { + } +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/FutileConditional/FutileConditional.expected b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/FutileConditional/FutileConditional.expected new file mode 100644 index 000000000000..136258f326a2 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/FutileConditional/FutileConditional.expected @@ -0,0 +1,2 @@ +| FutileConditional.cpp:2:3:2:15 | if (...) ... | If-statement with an empty then-branch and no else-branch. | +| FutileConditional.cpp:4:3:5:3 | if (...) ... | If-statement with an empty then-branch and no else-branch. | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/FutileConditional/FutileConditional.qlref b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/FutileConditional/FutileConditional.qlref new file mode 100644 index 000000000000..a64e5b47b5bf --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/FutileConditional/FutileConditional.qlref @@ -0,0 +1,2 @@ +query: Likely Bugs/Likely Typos/FutileConditional.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql 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 1f8441edcd61..253fe0f02e14 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 @@ -6,6 +6,8 @@ | 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) | +| test_comdb2.c:22:28:22:36 | userInput | test_comdb2.c:18:8:18:16 | gets output argument | test_comdb2.c:22:28:22:36 | userInput | This argument to a SQL query function is derived from $@. | test_comdb2.c:18:8:18:16 | gets output argument | user input (string read by gets) | +| test_comdb2.c:23:34:23:42 | userInput | test_comdb2.c:18:8:18:16 | gets output argument | test_comdb2.c:23:34:23:42 | userInput | This argument to a SQL query function is derived from $@. | test_comdb2.c:18:8:18:16 | gets output argument | user input (string read by gets) | | test_libpq.c:26:16:26:24 | userInput | test_libpq.c:23:8:23:16 | gets output argument | test_libpq.c:26:16:26:24 | userInput | This argument to a SQL query function is derived from $@. | test_libpq.c:23:8:23:16 | gets output argument | user input (string read by gets) | | test_libpq.c:27:22:27:30 | userInput | test_libpq.c:23:8:23:16 | gets output argument | test_libpq.c:27:22:27:30 | userInput | This argument to a SQL query function is derived from $@. | test_libpq.c:23:8:23:16 | gets output argument | user input (string read by gets) | | test_libpq.c:28:27:28:35 | userInput | test_libpq.c:23:8:23:16 | gets output argument | test_libpq.c:28:27:28:35 | userInput | This argument to a SQL query function is derived from $@. | test_libpq.c:23:8:23:16 | gets output argument | user input (string read by gets) | @@ -26,6 +28,8 @@ edges | 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 | | +| test_comdb2.c:18:8:18:16 | gets output argument | test_comdb2.c:22:28:22:36 | userInput | provenance | Sink:MaD:9 | +| test_comdb2.c:18:8:18:16 | gets output argument | test_comdb2.c:23:34:23:42 | userInput | provenance | Sink:MaD:10 | | test_libpq.c:23:8:23:16 | gets output argument | test_libpq.c:26:16:26:24 | userInput | provenance | Sink:MaD:3 | | test_libpq.c:23:8:23:16 | gets output argument | test_libpq.c:27:22:27:30 | userInput | provenance | Sink:MaD:4 | | test_libpq.c:23:8:23:16 | gets output argument | test_libpq.c:28:27:28:35 | userInput | provenance | Sink:MaD:5 | @@ -41,6 +45,8 @@ models | 6 | Sink: ; ; false; PQsendPrepare; ; ; Argument[*2]; sql-injection; manual | | 7 | Sink: ; ; false; PQsendQuery; ; ; Argument[*1]; sql-injection; manual | | 8 | Sink: ; ; false; PQsendQueryParams; ; ; Argument[*1]; sql-injection; manual | +| 9 | Sink: ; ; false; cdb2_run_statement; ; ; Argument[*1]; sql-injection; manual | +| 10 | Sink: ; ; false; cdb2_run_statement_typed; ; ; Argument[*1]; 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 | @@ -59,6 +65,9 @@ nodes | 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 | +| test_comdb2.c:18:8:18:16 | gets output argument | semmle.label | gets output argument | +| test_comdb2.c:22:28:22:36 | userInput | semmle.label | userInput | +| test_comdb2.c:23:34:23:42 | userInput | semmle.label | userInput | | test_libpq.c:23:8:23:16 | gets output argument | semmle.label | gets output argument | | test_libpq.c:26:16:26:24 | userInput | semmle.label | userInput | | test_libpq.c:27:22:27:30 | userInput | semmle.label | userInput | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test_comdb2.c b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test_comdb2.c new file mode 100644 index 000000000000..ce30e27700d6 --- /dev/null +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/test_comdb2.c @@ -0,0 +1,32 @@ +// Minimal declarations from the public Comdb2 C API: +// https://github.com/bloomberg/comdb2/blob/dfb15415b48cbe67220d76964243086051813676/cdb2api/cdb2api.h +typedef struct cdb2_hndl cdb2_hndl_tp; + +enum { CDB2_CSTRING = 3 }; + +int cdb2_run_statement(cdb2_hndl_tp *hndl, const char *sql); +int cdb2_run_statement_typed(cdb2_hndl_tp *hndl, const char *sql, int ntypes, const int *types); +int cdb2_bind_param(cdb2_hndl_tp *hndl, const char *name, int type, + const void *varaddr, int length); + +char *gets(char *s); +typedef unsigned long size_t; +size_t strlen(const char *s); + +void comdb2Tests(cdb2_hndl_tp *hndl) { + char userInput[1000]; + gets(userInput); // $ Source + int types[] = {CDB2_CSTRING}; + + // Both execution functions interpret user-controlled query text as SQL. + cdb2_run_statement(hndl, userInput); // $ Alert + cdb2_run_statement_typed(hndl, userInput, 1, types); // $ Alert + + cdb2_run_statement(hndl, "SELECT 1"); // GOOD + cdb2_run_statement_typed(hndl, "SELECT 'constant'", 1, types); // GOOD + + // Bound values are data, not SQL text, even when controlled by the user. + cdb2_bind_param(hndl, "value", CDB2_CSTRING, userInput, strlen(userInput) + 1); // GOOD + cdb2_run_statement(hndl, "SELECT @value"); // GOOD + cdb2_run_statement_typed(hndl, "SELECT @value", 1, types); // GOOD +} diff --git a/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 71.1/AV Rule 71.1.expected b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 71.1/AV Rule 71.1.expected new file mode 100644 index 000000000000..e25e640f594b --- /dev/null +++ b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 71.1/AV Rule 71.1.expected @@ -0,0 +1,5 @@ +| test.cpp:4:5:4:8 | call to init | Call to virtual function $@ which is overridden in $@. If you intend to statically call this virtual function, it should be qualified with Base::. | test.cpp:18:16:18:19 | init | init | test.cpp:38:8:38:11 | init | Derived | +| test.cpp:5:11:5:14 | call to init | Call to virtual function $@ which is overridden in $@. If you intend to statically call this virtual function, it should be qualified with Base::. | test.cpp:18:16:18:19 | init | init | test.cpp:38:8:38:11 | init | Derived | +| test.cpp:6:13:6:16 | call to init | Call to virtual function $@ which is overridden in $@. If you intend to statically call this virtual function, it should be qualified with Base::. | test.cpp:18:16:18:19 | init | init | test.cpp:38:8:38:11 | init | Derived | +| test.cpp:7:5:7:10 | call to helper | Call to function helper that calls virtual function $@ (overridden in $@). | test.cpp:18:16:18:19 | init | init | test.cpp:38:8:38:11 | init | Derived | +| test.cpp:14:5:14:11 | call to cleanup | Call to virtual function $@ which is overridden in $@. If you intend to statically call this virtual function, it should be qualified with Base::. | test.cpp:19:16:19:22 | cleanup | cleanup | test.cpp:39:8:39:14 | cleanup | Derived | diff --git a/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 71.1/AV Rule 71.1.qlref b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 71.1/AV Rule 71.1.qlref new file mode 100644 index 000000000000..f8ed7e328584 --- /dev/null +++ b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 71.1/AV Rule 71.1.qlref @@ -0,0 +1,2 @@ +query: jsf/4.10 Classes/AV Rule 71.1.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 71.1/test.cpp b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 71.1/test.cpp new file mode 100644 index 000000000000..36a7722a402c --- /dev/null +++ b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 71.1/test.cpp @@ -0,0 +1,47 @@ +class Base { +public: + Base() { + init(); // $ Alert + this->init(); // $ Alert + (*this).init(); // $ Alert + helper(); // $ Alert (indirectly calls a virtual function) + Base::init(); // GOOD: explicitly qualified, so statically bound + notOverridden(); // GOOD: not overridden in any derived class + nonVirtual(); // GOOD: not virtual + } + + ~Base() { + cleanup(); // $ Alert + Base::cleanup(); // GOOD: explicitly qualified + } + + virtual void init() {} + virtual void cleanup() {} + virtual void notOverridden() {} + void nonVirtual() {} + + void helper() { + init(); + } + + void other() { + init(); // GOOD: not in a constructor or destructor + } +}; + +class Derived : public Base { +public: + Derived() { + init(); // GOOD: not overridden in a class derived from Derived + } + + void init() override {} + void cleanup() override {} +}; + +class Unrelated { +public: + Unrelated(Base &b) { + b.init(); // GOOD: not a call on `this` + } +}; diff --git a/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/AV Rule 79.expected b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/AV Rule 79.expected index 70ee3fb4704f..d7bd43c53ec4 100644 --- a/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/AV Rule 79.expected +++ b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/AV Rule 79.expected @@ -14,10 +14,10 @@ | DeleteThis.cpp:127:3:127:20 | ... = ... | Resource d is acquired by class MyClass9 but not released anywhere in this class. | | ExternalOwners.cpp:49:3:49:20 | ... = ... | Resource a is acquired by class MyScreen but not released anywhere in this class. | | Lambda.cpp:24:3:24:21 | ... = ... | Resource r4 is acquired by class testLambda but not released anywhere in this class. | -| ListDelete.cpp:21:3:21:21 | ... = ... | Resource first is acquired by class MyThingColection but not released anywhere in this class. | | NoDestructor.cpp:23:3:23:20 | ... = ... | Resource n is acquired by class MyClass5 but not released anywhere in this class. | | PlacementNew.cpp:36:3:36:36 | ... = ... | Resource p1 is acquired by class MyTestForPlacementNew but not released anywhere in this class. | | SelfRegistering.cpp:25:3:25:24 | ... = ... | Resource side is acquired by class MyOwner but not released anywhere in this class. | +| TemplateDestructor.cpp:55:5:55:23 | ... = ... | Resource ptr is acquired by class OverwrittenAlias but not released anywhere in this class. | | Variants.cpp:26:3:26:13 | ... = ... | Resource f is acquired by class MyClass4 but not released anywhere in this class. | | Variants.cpp:69:3:69:17 | ... = ... | Resource a is acquired by class MyClass6 but not released anywhere in this class. | | Variants.cpp:70:3:70:36 | ... = ... | Resource b is acquired by class MyClass6 but not released anywhere in this class. | diff --git a/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/ListDelete.cpp b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/ListDelete.cpp index bca36a174b5f..a501dd1fcea8 100644 --- a/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/ListDelete.cpp +++ b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/ListDelete.cpp @@ -18,7 +18,7 @@ class MyThingColection { public: MyThingColection() { - first = new MyThing; // $ SPURIOUS: Alert // GOOD (all deleted in destructor) [FALSE POSITIVE] + first = new MyThing; // GOOD (all deleted in destructor) first->next = new MyThing; // GOOD (all deleted in destructor) diff --git a/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/TemplateDestructor.cpp b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/TemplateDestructor.cpp new file mode 100644 index 000000000000..bff1f24b7080 --- /dev/null +++ b/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/TemplateDestructor.cpp @@ -0,0 +1,77 @@ +template +class TemplateArray { +public: + TemplateArray() : ptr(nullptr) {} + + ~TemplateArray() { + reset(); + } + + void init(unsigned size) { + ptr = new T[size]; // GOOD + } + + void reset() { + T *tmp = ptr; + ptr = nullptr; + delete[] tmp; + } + +private: + T *ptr; +}; + +class NonTemplateArray { +public: + NonTemplateArray() : ptr(nullptr) {} + + ~NonTemplateArray() { + reset(); + } + + void init(unsigned size) { + ptr = new int[size]; // GOOD + } + + void reset() { + int *tmp = ptr; + ptr = nullptr; + delete[] tmp; + } + +private: + int *ptr; +}; + +class OverwrittenAlias { +public: + OverwrittenAlias() : ptr(nullptr) {} + + ~OverwrittenAlias() { + reset(); + } + + void init(unsigned size) { + ptr = new int[size]; // $ Alert + } + + void reset() { + int *tmp = ptr; + tmp = new int[1]; + delete[] tmp; + } + +private: + int *ptr; +}; + +void testArrays() { + TemplateArray templateArray; + templateArray.init(10); + + NonTemplateArray nonTemplateArray; + nonTemplateArray.init(10); + + OverwrittenAlias overwrittenAlias; + overwrittenAlias.init(10); +} diff --git a/cpp/ql/test/query-tests/jsf/4.24 Control Flow Structures/AV Rule 197/AV Rule 197.expected b/cpp/ql/test/query-tests/jsf/4.24 Control Flow Structures/AV Rule 197/AV Rule 197.expected new file mode 100644 index 000000000000..49bd7edcc0ac --- /dev/null +++ b/cpp/ql/test/query-tests/jsf/4.24 Control Flow Structures/AV Rule 197/AV Rule 197.expected @@ -0,0 +1,4 @@ +| test.cpp:5:14:5:14 | f | Floating point variables should not be used as loop counters. | +| test.cpp:10:15:10:15 | d | Floating point variables should not be used as loop counters. | +| test.cpp:15:15:15:16 | ld | Floating point variables should not be used as loop counters. | +| test.cpp:36:13:36:13 | r | Floating point variables should not be used as loop counters. | diff --git a/cpp/ql/test/query-tests/jsf/4.24 Control Flow Structures/AV Rule 197/AV Rule 197.qlref b/cpp/ql/test/query-tests/jsf/4.24 Control Flow Structures/AV Rule 197/AV Rule 197.qlref new file mode 100644 index 000000000000..1bf55b3397a0 --- /dev/null +++ b/cpp/ql/test/query-tests/jsf/4.24 Control Flow Structures/AV Rule 197/AV Rule 197.qlref @@ -0,0 +1,2 @@ +query: jsf/4.24 Control Flow Structures/AV Rule 197.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/cpp/ql/test/query-tests/jsf/4.24 Control Flow Structures/AV Rule 197/test.cpp b/cpp/ql/test/query-tests/jsf/4.24 Control Flow Structures/AV Rule 197/test.cpp new file mode 100644 index 000000000000..59d85b11a236 --- /dev/null +++ b/cpp/ql/test/query-tests/jsf/4.24 Control Flow Structures/AV Rule 197/test.cpp @@ -0,0 +1,40 @@ +void use(double); + +void test() +{ + for (float f = 0.0f; f < 1.0f; f = f + 0.1f) // $ Alert + { + use(f); + } + + for (double d = 0.0; d < 10.0; d++) // $ Alert + { + use(d); + } + + long double ld; // $ Alert + for (ld = 10.0; ld > 0.0; ld--) + { + use(ld); + } + + for (double c = 0.0; c < 1.0; c += 0.1) // $ MISSING: Alert (compound assignment updates are not recognized) + { + use(c); + } + + for (int i = 0; i < 10; i++) // GOOD: integer loop counter + { + use(i * 0.1); + } +} + +typedef float real; + +void test_typedef() +{ + for (real r = 0.0f; r < 1.0f; r = r + 0.5f) // $ Alert + { + use(r); + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxy.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxy.cs deleted file mode 100644 index 3bf843d3fa2c..000000000000 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxy.cs +++ /dev/null @@ -1,136 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Cryptography.X509Certificates; -using Semmle.Util; -using Semmle.Util.Logging; -using Newtonsoft.Json; -using System.Linq; - -namespace Semmle.Extraction.CSharp.DependencyFetching -{ - public class DependabotProxy : IDependabotProxy - { - /// - /// Represents configurations for package registries. - /// - /// The type of package registry. - /// The URL of the package registry. - public record class RegistryConfig(string Type, string URL); - - public string Address { get; } - - public HashSet RegistryURLs { get; } = []; - - public string? CertificatePath { get; private set; } - - public X509Certificate2? Certificate { get; private set; } - - private DependabotProxy(IDependabotProxyConfiguration config, ILogger logger, TemporaryDirectory tempWorkingDirectory) - { - Address = $"http://{config.Host}:{config.Port}"; - - if (!string.IsNullOrWhiteSpace(config.Certificate)) - { - var certDirPath = new DirectoryInfo(Path.Join(tempWorkingDirectory.DirInfo.FullName, ".dependabot-proxy")); - Directory.CreateDirectory(certDirPath.FullName); - - CertificatePath = Path.Join(certDirPath.FullName, "proxy.crt"); - var certFile = new FileInfo(CertificatePath); - - using var writer = certFile.CreateText(); - writer.Write(config.Certificate); - writer.Close(); - - logger.LogInfo($"Stored Dependabot proxy certificate at {CertificatePath}"); - - Certificate = X509Certificate2.CreateFromPem(config.Certificate); - } - - if (!string.IsNullOrWhiteSpace(config.RegistryURLs)) - { - try - { - var array = JsonConvert.DeserializeObject>(config.RegistryURLs); - if (array is not null) - { - foreach (RegistryConfig registry in array) - { - // The array contains all configured private registries, not just ones for C#. - // We ignore the non-C# ones here. - if (!registry.Type.Equals("nuget_feed")) - { - logger.LogDebug($"Ignoring registry at '{registry.URL}' since it is not of type 'nuget_feed'."); - continue; - } - - logger.LogInfo($"Found private registry at '{registry.URL}'"); - RegistryURLs.Add(registry.URL); - } - } - } - catch (JsonException ex) - { - logger.LogError($"Unable to parse '{EnvironmentVariableNames.ProxyURLs}': {ex.Message}"); - } - } - } - - internal static IDependabotProxy? Make(ILogger logger, IDiagnosticsWriter diagnosticsWriter, TemporaryDirectory tempWorkingDirectory) - { - // Setting HTTP(S)_PROXY and SSL_CERT_FILE have no effect on Windows or macOS, - // but we would still end up using the Dependabot proxy to check for feed reachability. - // This would result in us discovering that the feeds are reachable, but `dotnet` would - // fail to connect to them. To prevent this from happening, we do not initialise an - // instance of `DependabotProxy` on those platforms. - if (SystemBuildActions.Instance.IsWindows() || SystemBuildActions.Instance.IsMacOs()) - { - return null; - } - - return Make(new DependabotProxyConfiguration(), logger, diagnosticsWriter, tempWorkingDirectory); - } - - /// - /// Creates an instance of the Dependabot proxy using the specified configuration. - /// Returns null if the proxy cannot be created. - /// This overload is exposed primarily to enable platform-independent unit testing. - /// - internal static IDependabotProxy? Make( - IDependabotProxyConfiguration proxyConfig, ILogger logger, IDiagnosticsWriter diagnosticsWriter, TemporaryDirectory tempWorkingDirectory) - { - if (string.IsNullOrWhiteSpace(proxyConfig.Host) || string.IsNullOrWhiteSpace(proxyConfig.Port)) - { - logger.LogDebug("No Dependabot proxy credentials are configured."); - return null; - } - - var result = new DependabotProxy(proxyConfig, logger, tempWorkingDirectory); - logger.LogInfo($"Dependabot proxy configured at {result.Address}"); - - // Emit a diagnostic for the discovered private registries, so that it is easy - // for users to see that they were picked up. - if (result.RegistryURLs.Count > 0) - { - diagnosticsWriter.AddEntry(new DiagnosticMessage( - Language.CSharp, - "buildless/analysis-using-private-registries", - severity: DiagnosticMessage.TspSeverity.Note, - visibility: new DiagnosticMessage.TspVisibility(true, true, true), - name: "C# extraction used private package registries", - markdownMessage: string.Format( - "C# was extracted using the following private package registries:\n\n{0}\n", - string.Join("\n", result.RegistryURLs.Select(url => string.Format("- `{0}`", url))) - ) - )); - } - - return result; - } - - public void Dispose() - { - Certificate?.Dispose(); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxyConfiguration.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxyConfiguration.cs deleted file mode 100644 index 2d81f94aea2c..000000000000 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxyConfiguration.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace Semmle.Extraction.CSharp.DependencyFetching -{ - public class DependabotProxyConfiguration : IDependabotProxyConfiguration - { - public string? Host { get; } = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ProxyHost); - - public string? Port { get; } = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ProxyPort); - - public string? Certificate { get; } = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ProxyCertificate); - - public string? RegistryURLs { get; } = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ProxyURLs); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index a985947c0c12..4bd0bb764a66 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -27,7 +27,7 @@ public sealed partial class DependencyManager : IDisposable, ICompilationInfoCon private readonly ILogger logger; private readonly IDiagnosticsWriter diagnosticsWriter; private readonly NugetPackageRestorer nugetPackageRestorer; - private readonly IDependabotProxy? dependabotProxy; + private readonly IRegistryProxy? registryProxy; private readonly IDotNet dotnet; private readonly FileContent fileContent; private readonly IFileProvider fileProvider; @@ -106,11 +106,11 @@ void exitCallback(int ret, string msg, bool silent) return BuildScript.Success; }).Run(SystemBuildActions.Instance, startCallback, exitCallback); - dependabotProxy = DependabotProxy.Make(logger, diagnosticsWriter, tempWorkingDirectory); + registryProxy = RegistryProxy.Make(logger, diagnosticsWriter, tempWorkingDirectory); try { - this.dotnet = DotNet.Make(logger, dotnetPath, tempWorkingDirectory, dependabotProxy); + this.dotnet = DotNet.Make(logger, dotnetPath, tempWorkingDirectory, registryProxy); runtimeLazy = new Lazy(() => new Runtime(dotnet)); } catch @@ -119,7 +119,7 @@ void exitCallback(int ret, string msg, bool silent) throw; } - nugetPackageRestorer = new NugetPackageRestorer(fileProvider, fileContent, dotnet, dependabotProxy, diagnosticsWriter, logger, this); + nugetPackageRestorer = new NugetPackageRestorer(fileProvider, fileContent, dotnet, registryProxy, diagnosticsWriter, logger, this); var dllLocations = fileProvider.Dlls.Select(x => new AssemblyLookupLocation(x)).ToHashSet(); dllLocations.UnionWith(nugetPackageRestorer.Restore()); @@ -544,7 +544,7 @@ private void AnalyseProject(FileInfo project) public void Dispose() { nugetPackageRestorer?.Dispose(); - dependabotProxy?.Dispose(); + registryProxy?.Dispose(); if (cleanupTempWorkingDirectory) { tempWorkingDirectory?.Dispose(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index 9958fbce4e71..f1cae33853a1 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -31,11 +31,11 @@ private DotNet(IDotNetCliInvoker dotnetCliInvoker, ILogger logger, bool runDotne } } - private DotNet(ILogger logger, string? dotNetPath, TemporaryDirectory tempWorkingDirectory, IDependabotProxy? dependabotProxy) : this(new DotNetCliInvoker(logger, Path.Join(dotNetPath ?? string.Empty, "dotnet"), dependabotProxy), logger, dotNetPath is null, tempWorkingDirectory) { } + private DotNet(ILogger logger, string? dotNetPath, TemporaryDirectory tempWorkingDirectory, IRegistryProxy? registryProxy) : this(new DotNetCliInvoker(logger, Path.Join(dotNetPath ?? string.Empty, "dotnet"), registryProxy), logger, dotNetPath is null, tempWorkingDirectory) { } internal static IDotNet Make(IDotNetCliInvoker dotnetCliInvoker, ILogger logger, bool runDotnetInfo) => new DotNet(dotnetCliInvoker, logger, runDotnetInfo); - public static IDotNet Make(ILogger logger, string? dotNetPath, TemporaryDirectory tempWorkingDirectory, IDependabotProxy? dependabotProxy) => new DotNet(logger, dotNetPath, tempWorkingDirectory, dependabotProxy); + public static IDotNet Make(ILogger logger, string? dotNetPath, TemporaryDirectory tempWorkingDirectory, IRegistryProxy? registryProxy) => new DotNet(logger, dotNetPath, tempWorkingDirectory, registryProxy); private static void HandleRetryExitCode143(string dotnet, int attempt, ILogger logger) { @@ -137,7 +137,7 @@ public bool Exec(List execArgs) private static readonly IReadOnlyList nugetListSourceCommandArgs = ["nuget", "list", "source", "--format", "Short"]; - public IList GetNugetFeeds(string nugetConfig) + public IList GetNugetFeedsFromConfig(string nugetConfig) { logger.LogInfo($"Getting NuGet feeds from '{nugetConfig}'..."); return GetResultList([.. nugetListSourceCommandArgs, "--configfile", nugetConfig]); @@ -280,9 +280,16 @@ private static BuildScript DownloadDotNetVersion(IBuildActions actions, ILogger getInstall = version => { var psCommand = $"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://dot.net/v1/dotnet-install.ps1'))) -Version {version} -InstallDir {path}"; + var environment = new Dictionary + { + // Starting with .NET 11, the installation script uses tar by default. However, + // tar extraction fails in dotnet-install.ps1, so force the script to download + // and extract the ZIP archive instead. This workaround may be removable in the future. + {"DOTNET_INSTALL_SKIP_TAR", "1"} + }; BuildScript GetInstall(string pwsh) => - new CommandBuilder(actions). + new CommandBuilder(actions, environment: environment). RunCommand(pwsh). Argument("-NoProfile"). Argument("-ExecutionPolicy"). diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs index c6f97c5f8be2..467a90ac7288 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs @@ -12,14 +12,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching internal sealed class DotNetCliInvoker : IDotNetCliInvoker { private readonly ILogger logger; - private readonly IDependabotProxy? proxy; + private readonly IRegistryProxy? proxy; public string Exec { get; } - public DotNetCliInvoker(ILogger logger, string exec, IDependabotProxy? dependabotProxy) + public DotNetCliInvoker(ILogger logger, string exec, IRegistryProxy? registryProxy) { this.logger = logger; - this.proxy = dependabotProxy; + this.proxy = registryProxy; this.Exec = exec; logger.LogInfo($"Using .NET CLI executable: '{Exec}'"); } @@ -44,14 +44,7 @@ private ProcessStartInfo MakeDotnetStartInfo(List args, string? workingD } // Configure the proxy settings, if applicable. - if (this.proxy != null) - { - logger.LogDebug($"Configuring environment variables for the Dependabot proxy at {this.proxy.Address}"); - - startInfo.EnvironmentVariables["HTTP_PROXY"] = this.proxy.Address; - startInfo.EnvironmentVariables["HTTPS_PROXY"] = this.proxy.Address; - startInfo.EnvironmentVariables["SSL_CERT_FILE"] = this.proxy.CertificatePath; - } + proxy?.SetProcessEnvironment(startInfo); return startInfo; } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs index b1134ad21e24..6b5b35ec03a3 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs @@ -56,7 +56,6 @@ internal static class EnvironmentVariableNames /// /// Specifies the NuGet feeds to use for fallback NuGet dependency fetching. The value is a space-separated list of feed URLs. - /// The default value is `https://api.nuget.org/v3/index.json`. /// public const string FallbackNugetFeeds = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_FALLBACK"; @@ -76,17 +75,17 @@ internal static class EnvironmentVariableNames public const string DiagnosticDir = "CODEQL_EXTRACTOR_CSHARP_DIAGNOSTIC_DIR"; /// - /// Specifies the hostname of the Dependabot proxy. + /// Specifies the hostname of the registry proxy. /// public const string ProxyHost = "CODEQL_PROXY_HOST"; /// - /// Specifies the hostname of the Dependabot proxy. + /// Specifies the port of the registry proxy. /// public const string ProxyPort = "CODEQL_PROXY_PORT"; /// - /// Contains the certificate used by the Dependabot proxy. + /// Contains the certificate used by the registry proxy. /// public const string ProxyCertificate = "CODEQL_PROXY_CA_CERTIFICATE"; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index 6c4593f3400c..a0b8977ed87a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -10,13 +10,17 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { internal sealed partial class FeedManager : IDisposable { - internal const string PublicNugetOrgFeed = "https://api.nuget.org/v3/index.json"; + private const string PublicNugetOrg = "nuget.org"; + private const string PublicDotNugetOrg = $".{PublicNugetOrg}"; + internal const string PublicApiNugetOrgFeed = $"https://api{PublicDotNugetOrg}/v3/index.json"; private readonly ILogger logger; private readonly IDotNet dotnet; private readonly IFileProvider fileProvider; private readonly DependencyDirectory emptyPackageDirectory; private readonly ImmutableHashSet privateRegistryFeeds; + private readonly bool hasPrivateRegistryBaseFeeds; + private readonly ImmutableHashSet privateRegistryBaseFeeds; private readonly IFeedManagerIO feedManagerIo; /// @@ -72,37 +76,67 @@ internal sealed partial class FeedManager : IDisposable /// public ImmutableHashSet ReachableFallbackFeeds => lazyReachableFallbackFeeds.Value; - public FeedManager(ILogger logger, IDotNet dotnet, IDependabotProxy? dependabotProxy, IFileProvider fileProvider, IFeedManagerIO feedManagerIo) + private readonly Lazy> lazyReachableDefaultFeeds; + + /// + /// Gets the list of default NuGet feeds that are configured in the environment. + /// This is either the public NuGet feed or a set of feeds specified by the environment. + /// + public ImmutableHashSet DefaultFeeds { get; init; } + + /// + /// Gets the list of reachable default NuGet feeds. + /// + public ImmutableHashSet ReachableDefaultFeeds => lazyReachableDefaultFeeds.Value; + + public FeedManager(ILogger logger, IDotNet dotnet, IRegistryProxy? registryProxy, IFileProvider fileProvider, IFeedManagerIO feedManagerIo) { this.logger = logger; this.dotnet = dotnet; this.fileProvider = fileProvider; this.feedManagerIo = feedManagerIo; - privateRegistryFeeds = dependabotProxy?.RegistryURLs.ToImmutableHashSet() ?? []; + privateRegistryFeeds = registryProxy?.RegistryURLs ?? []; HasPrivateRegistryFeeds = privateRegistryFeeds.Count > 0; + privateRegistryBaseFeeds = registryProxy?.RegistryBaseURLs ?? []; + hasPrivateRegistryBaseFeeds = privateRegistryBaseFeeds.Count > 0; + + DefaultFeeds = hasPrivateRegistryBaseFeeds + ? privateRegistryBaseFeeds + : [PublicApiNugetOrgFeed]; emptyPackageDirectory = new DependencyDirectory("empty", "empty package", logger); lazyExplicitFeeds = new Lazy>(GetExplicitFeeds); lazyAllFeeds = new Lazy>(GetAllFeeds); - lazyReachableExplicitFeeds = new Lazy>(() => CheckSpecifiedFeeds(ExplicitFeeds)); + lazyReachableExplicitFeeds = new Lazy>(() => CheckSpecifiedFeeds(ExplicitFeeds, "explicit")); lazyReachableFeeds = new Lazy>(() => { // Inherited feeds should only be used, if they are indeed reachable (as they may be environment specific). - var reachableInheritedFeeds = CheckSpecifiedFeeds(InheritedFeeds); + var reachableInheritedFeeds = CheckSpecifiedFeeds(InheritedFeeds, "inherited"); return ReachableExplicitFeeds.Union(reachableInheritedFeeds).ToImmutableHashSet(); }); - lazyReachableFallbackFeeds = new Lazy>(() => - { - var reachableFallbackFeeds = GetReachableFallbackNugetFeeds(); - return reachableFallbackFeeds.ToImmutableHashSet(); - }); + lazyReachableFallbackFeeds = new Lazy>(GetReachableFallbackNugetFeeds); + lazyReachableDefaultFeeds = new Lazy>(() => CheckSpecifiedFeeds(DefaultFeeds, "default")); } - public FeedManager(ILogger logger, IDotNet dotnet, IDependabotProxy? dependabotProxy, IFileProvider fileProvider) - : this(logger, dotnet, dependabotProxy, fileProvider, new FeedManagerIO(logger, dependabotProxy)) + public FeedManager(ILogger logger, IDotNet dotnet, IRegistryProxy? registryProxy, IFileProvider fileProvider) + : this(logger, dotnet, registryProxy, fileProvider, new FeedManagerIO(logger, registryProxy)) { } + private bool IsNugetOrgFeed(string url) + { + try + { + var uri = new Uri(url); + return uri.Host.EndsWith(PublicDotNugetOrg, StringComparison.InvariantCultureIgnoreCase) || + string.Equals(uri.Host, PublicNugetOrg, StringComparison.InvariantCultureIgnoreCase); + } + catch (UriFormatException) + { + return false; + } + } + private IEnumerable GetFeeds(Func> getNugetFeeds) { var results = getNugetFeeds(); @@ -124,10 +158,18 @@ private IEnumerable GetFeeds(Func> getNugetFeeds) continue; } - if (!string.IsNullOrWhiteSpace(url)) + if (hasPrivateRegistryBaseFeeds && IsNugetOrgFeed(url)) { - yield return url; + // Use private registry base feeds. + foreach (var feed in privateRegistryBaseFeeds) + { + logger.LogDebug($"Using private registry base feed '{feed}'."); + yield return feed; + } + continue; } + + yield return url; } } @@ -135,7 +177,7 @@ private IEnumerable GetFeedsFromFolder(string folderPath) => GetFeeds(() => dotnet.GetNugetFeedsFromFolder(folderPath)); private IEnumerable GetFeedsFromNugetConfig(string nugetConfigPath) => - GetFeeds(() => dotnet.GetNugetFeeds(nugetConfigPath)); + GetFeeds(() => dotnet.GetNugetFeedsFromConfig(nugetConfigPath)); /// /// Constructs the NuGet sources argument for the restore command based on the given feeds. @@ -244,8 +286,15 @@ private HashSet GetExcludedFeeds() /// /// The set of package feeds to check. /// The list of feeds that were reachable. - private ImmutableHashSet CheckSpecifiedFeeds(ImmutableHashSet feeds) + private ImmutableHashSet CheckSpecifiedFeeds(ImmutableHashSet feeds, string kind) { + if (feeds.Count == 0) + { + return []; + } + + logger.LogInfo($"Discovering reachable {kind} NuGet feeds."); + // Exclude any feeds from the feed check that are configured by the corresponding environment variable. // These feeds are always assumed to be reachable. var excludedFeeds = GetExcludedFeeds(); @@ -260,38 +309,21 @@ private ImmutableHashSet CheckSpecifiedFeeds(ImmutableHashSet fe return true; }).ToHashSet(); - var reachable = GetReachableNuGetFeeds(feedsToCheck, isFallback: false); + var reachable = feedsToCheck.Count > 0 ? GetReachableNuGetFeeds(feedsToCheck, kind, isFallback: false) : []; // Always consider feeds excluded for the reachability check as reachable. return reachable.Union(feeds.Where(feed => excludedFeeds.Contains(feed))).ToImmutableHashSet(); } - /// - /// Return true if the default NuGet feed is reachable, false otherwise. - /// If the reachability check is disabled, this method will always return true. - /// - /// True if the default NuGet feed is reachable, false otherwise. - public bool IsDefaultFeedReachable() - { - if (CheckNugetFeedResponsiveness) - { - var (initialTimeout, tryCount) = GetFeedRequestSettings(isFallback: false); - return feedManagerIo.IsFeedReachable(PublicNugetOrgFeed, initialTimeout, tryCount); - } - - return true; - } - /// /// Tests which of the feeds given by are reachable. /// /// The feeds to check. /// Whether the feeds are fallback feeds or not. /// The list of feeds that could be reached. - private List GetReachableNuGetFeeds(HashSet feedsToCheck, bool isFallback) + private List GetReachableNuGetFeeds(HashSet feedsToCheck, string kind, bool isFallback) { - var fallbackStr = isFallback ? "fallback " : ""; - logger.LogInfo($"Checking {fallbackStr}NuGet feed reachability on feeds: {string.Join(", ", feedsToCheck.OrderBy(f => f))}"); + logger.LogInfo($"Checking {kind} NuGet feed reachability on feeds: {string.Join(", ", feedsToCheck.OrderBy(f => f))}"); var (initialTimeout, tryCount) = GetFeedRequestSettings(isFallback); var reachableFeeds = feedsToCheck @@ -300,23 +332,23 @@ private List GetReachableNuGetFeeds(HashSet feedsToCheck, bool i if (reachableFeeds.Count == 0) { - logger.LogWarning($"No {fallbackStr}NuGet feeds are reachable."); + logger.LogWarning($"No {kind} NuGet feeds are reachable."); } else { - logger.LogInfo($"Reachable {fallbackStr}NuGet feeds: {string.Join(", ", reachableFeeds.OrderBy(f => f))}"); + logger.LogInfo($"Reachable {kind} NuGet feeds: {string.Join(", ", reachableFeeds.OrderBy(f => f))}"); } return reachableFeeds; } - private List GetReachableFallbackNugetFeeds() + private ImmutableHashSet GetReachableFallbackNugetFeeds() { var fallbackFeeds = EnvironmentVariables.GetURLs(EnvironmentVariableNames.FallbackNugetFeeds).ToHashSet(); if (fallbackFeeds.Count == 0) { - fallbackFeeds.Add(PublicNugetOrgFeed); - logger.LogInfo($"No fallback NuGet feeds specified. Adding default feed: {PublicNugetOrgFeed}"); + fallbackFeeds.UnionWith(DefaultFeeds); + logger.LogInfo($"No fallback NuGet feeds specified. Adding default feeds: {string.Join(", ", DefaultFeeds.OrderBy(f => f))}"); var shouldAddNugetConfigFeeds = EnvironmentVariables.GetBooleanOptOut(EnvironmentVariableNames.AddNugetConfigFeedsToFallback); logger.LogInfo($"Adding feeds from nuget.config to fallback restore: {shouldAddNugetConfigFeeds}"); @@ -329,12 +361,17 @@ private List GetReachableFallbackNugetFeeds() logger.LogInfo($"Using NuGet feeds from nuget.config files as fallback feeds: {string.Join(", ", ExplicitFeeds.OrderBy(f => f))}"); } } + else + { + logger.LogInfo($"Using fallback NuGet feeds from environment variable '{EnvironmentVariableNames.FallbackNugetFeeds}'."); + } - return GetReachableNuGetFeeds(fallbackFeeds, isFallback: true); + return GetReachableNuGetFeeds(fallbackFeeds, "fallback", isFallback: true).ToImmutableHashSet(); } private ImmutableHashSet GetExplicitFeeds() { + logger.LogInfo("Discovering explicit NuGet feeds from nuget.config files and private registries."); var nugetConfigs = fileProvider.NugetConfigs; // Find feeds that are explicitly configured in the NuGet configuration files that we found. @@ -364,6 +401,8 @@ private ImmutableHashSet GetExplicitFeeds() private ImmutableHashSet GetAllFeeds() { + logger.LogInfo("Discovering all NuGet feeds."); + var nugetConfigs = fileProvider.NugetConfigs; HashSet allFeeds = []; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManagerIO.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManagerIO.cs index 8e771f6037a4..012781b23276 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManagerIO.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManagerIO.cs @@ -13,12 +13,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching public class FeedManagerIO : IFeedManagerIO { private readonly ILogger logger; - private readonly IDependabotProxy? dependabotProxy; + private readonly IRegistryProxy? registryProxy; - public FeedManagerIO(ILogger logger, IDependabotProxy? dependabotProxy) + public FeedManagerIO(ILogger logger, IRegistryProxy? registryProxy) { this.logger = logger; - this.dependabotProxy = dependabotProxy; + this.registryProxy = registryProxy; } public string? GetDirectoryName(string path) @@ -43,13 +43,13 @@ public bool IsFeedReachable(string feed, int timeoutMilliSeconds, int tryCount) { logger.LogInfo($"Checking if NuGet feed '{feed}' is reachable..."); - // Configure the HttpClient to be aware of the Dependabot Proxy, if used. + // Configure the HttpClient to be aware of the registry proxy, if used. HttpClientHandler httpClientHandler = new(); - if (dependabotProxy != null) + if (registryProxy != null) { - httpClientHandler.Proxy = new WebProxy(dependabotProxy.Address); + httpClientHandler.Proxy = new WebProxy(registryProxy.Address); - if (dependabotProxy.Certificate != null) + if (registryProxy.Certificate != null) { httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, _) => { @@ -60,11 +60,11 @@ public bool IsFeedReachable(string feed, int timeoutMilliSeconds, int tryCount) : chain is null ? "chain" : "certificate"; - logger.LogWarning($"Dependabot proxy certificate validation failed due to missing {msg}"); + logger.LogWarning($"Registry proxy certificate validation failed due to missing {msg}"); return false; } chain.ChainPolicy.TrustMode = X509ChainTrustMode.CustomRootTrust; - chain.ChainPolicy.CustomTrustStore.Add(dependabotProxy.Certificate); + chain.ChainPolicy.CustomTrustStore.Add(registryProxy.Certificate); return chain.Build(cert); }; } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxy.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxy.cs deleted file mode 100644 index 37a11900fddf..000000000000 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxy.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Security.Cryptography.X509Certificates; - -namespace Semmle.Extraction.CSharp.DependencyFetching -{ - public interface IDependabotProxy : IDisposable - { - /// - /// The full address of the Dependabot proxy, if available. - /// - string Address { get; } - - /// - /// The URLs of package registries that are configured for the proxy. - /// - HashSet RegistryURLs { get; } - - /// - /// The path to the temporary file where the certificate is stored. - /// - string? CertificatePath { get; } - - /// - /// The certificate used for the Dependabot proxy. - /// - X509Certificate2? Certificate { get; } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxyConfiguration.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxyConfiguration.cs deleted file mode 100644 index c67ee4fc39df..000000000000 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxyConfiguration.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; - -namespace Semmle.Extraction.CSharp.DependencyFetching -{ - public interface IDependabotProxyConfiguration - { - // The host of the Dependabot proxy, if available. - string? Host { get; } - - // The port of the Dependabot proxy, if available. - string? Port { get; } - - // The certificate of the Dependabot proxy, if available. - string? Certificate { get; } - - // The list of package registries that are configured for the proxy, if any. - // The value of the environment variable should be a JSON array of objects, such as: - // [ { "type": "nuget_feed", "url": "https://nuget.pkg.github.com/org/index.json" } ] - string? RegistryURLs { get; } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs index 0e93fa92813a..06186f1a28d3 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs @@ -13,7 +13,7 @@ public interface IDotNet IList GetListedRuntimes(); IList GetListedSdks(); bool Exec(List execArgs); - IList GetNugetFeeds(string nugetConfig); + IList GetNugetFeedsFromConfig(string nugetConfig); IList GetNugetFeedsFromFolder(string folderPath); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxy.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxy.cs new file mode 100644 index 000000000000..a7f7c1567152 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxy.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Immutable; +using System.Diagnostics; +using System.Security.Cryptography.X509Certificates; + +namespace Semmle.Extraction.CSharp.DependencyFetching +{ + public interface IRegistryProxy : IDisposable + { + /// + /// The full address of the registry proxy, if available. + /// + string Address { get; } + + /// + /// The URLs of package registries that are configured for the proxy. + /// + ImmutableHashSet RegistryURLs { get; } + + /// + /// The URLs of package registries that replace the base registry. + /// + ImmutableHashSet RegistryBaseURLs { get; } + + /// + /// The path to the temporary file where the certificate is stored. + /// + string? CertificatePath { get; } + + /// + /// The certificate used for the registry proxy. + /// + X509Certificate2? Certificate { get; } + + /// + /// Configures the environment variables for a process to use the registry proxy. + /// + /// The process start info to configure. + void SetProcessEnvironment(ProcessStartInfo pi); + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxyConfiguration.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxyConfiguration.cs new file mode 100644 index 000000000000..0ca48da995f0 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxyConfiguration.cs @@ -0,0 +1,21 @@ +using System; + +namespace Semmle.Extraction.CSharp.DependencyFetching +{ + public interface IRegistryProxyConfiguration + { + // The host of the registry proxy, if available. + string? Host { get; } + + // The port of the registry proxy, if available. + string? Port { get; } + + // The certificate of the registry proxy, if available. + string? Certificate { get; } + + // The list of package registries that are configured for the registry proxy, if any. + // The value of the environment variable should be a JSON array of objects, such as: + // [ { "type": "nuget_feed", "url": "https://nuget.pkg.github.com/org/index.json" } ] + string? RegistryURLs { get; } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index 85d6056d7218..9257edfe2c19 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -18,6 +18,7 @@ internal sealed partial class NugetPackageRestorer : IDisposable private readonly IFileProvider fileProvider; private readonly FileContent fileContent; private readonly IDotNet dotnet; + private readonly IRegistryProxy? registryProxy; private readonly IDiagnosticsWriter diagnosticsWriter; private readonly DependencyDirectory legacyPackageDirectory; private readonly DependencyDirectory missingPackageDirectory; @@ -32,7 +33,7 @@ public NugetPackageRestorer( IFileProvider fileProvider, FileContent fileContent, IDotNet dotnet, - IDependabotProxy? dependabotProxy, + IRegistryProxy? registryProxy, IDiagnosticsWriter diagnosticsWriter, ILogger logger, ICompilationInfoContainer compilationInfoContainer) @@ -40,6 +41,7 @@ public NugetPackageRestorer( this.fileProvider = fileProvider; this.fileContent = fileContent; this.dotnet = dotnet; + this.registryProxy = registryProxy; this.diagnosticsWriter = diagnosticsWriter; this.logger = logger; this.compilationInfoContainer = compilationInfoContainer; @@ -47,7 +49,7 @@ public NugetPackageRestorer( PackageDirectory = new DependencyDirectory("packages", "package", logger); legacyPackageDirectory = new DependencyDirectory("legacypackages", "legacy package", logger); missingPackageDirectory = new DependencyDirectory("missingpackages", "missing package", logger); - feedManager = new FeedManager(logger, dotnet, dependabotProxy, fileProvider); + feedManager = new FeedManager(logger, dotnet, registryProxy, fileProvider); } public string? TryRestore(string package) @@ -133,7 +135,7 @@ public HashSet Restore() try { - var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager); + var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager, registryProxy); var count = packagesConfigRestore.InstallPackages(); if (packagesConfigRestore.PackageCount > 0) { @@ -460,7 +462,7 @@ private bool TryRestorePackageManually(string package, List nugetSources return true; } - if (!feedManager.CheckNugetFeedResponsiveness && res.HasNugetPackageSourceError && nugetSources.Count > 0) + if (!feedManager.CheckNugetFeedResponsiveness && !feedManager.HasPrivateRegistryFeeds && res.HasNugetPackageSourceError && nugetSources.Count > 0) { logger.LogDebug($"Trying to restore '{package}' without explicitly providing NuGet sources."); // Restore could not be completed because the listed source is unavailable. Try without an explicit restore source argument. diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs index d4403bb955ef..29276d72a82c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs @@ -33,11 +33,11 @@ internal interface IPackagesConfigRestore /// internal class PackagesConfigRestoreFactory { - public static IPackagesConfigRestore Create(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager) + public static IPackagesConfigRestore Create(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, IRegistryProxy? registryProxy) { if (SystemBuildActions.Instance.IsWindows() || SystemBuildActions.Instance.IsMonoInstalled()) { - return new NugetExeWrapper(fileProvider, packageDirectory, logger, feedManager); + return new NugetExeWrapper(fileProvider, packageDirectory, logger, feedManager, registryProxy); } return new NoOpPackagesConfig(fileProvider.PackagesConfigs, logger); @@ -52,6 +52,7 @@ private class NugetExeWrapper : IPackagesConfigRestore { private readonly string? nugetExe; private readonly Semmle.Util.Logging.ILogger logger; + private readonly IRegistryProxy? registryProxy; public int PackageCount => fileProvider.PackagesConfigs.Count; @@ -67,19 +68,16 @@ private class NugetExeWrapper : IPackagesConfigRestore private bool IsWindows => SystemBuildActions.Instance.IsWindows(); - private bool? isDefaultFeedReachable; - private bool IsDefaultFeedReachable => - isDefaultFeedReachable ??= feedManager.IsDefaultFeedReachable(); - /// /// Create the package manager for a specified source tree. /// - public NugetExeWrapper(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager) + public NugetExeWrapper(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, IRegistryProxy? registryProxy) { this.fileProvider = fileProvider; this.packageDirectory = packageDirectory; this.logger = logger; this.feedManager = feedManager; + this.registryProxy = registryProxy; if (fileProvider.PackagesConfigs.Count > 0) { @@ -169,15 +167,18 @@ private bool TryRestoreNugetPackage(string packagesConfig) List sourcesArgument = []; var feedsToUse = feedManager.FeedsToUse(packagesConfig).ToList(); - var useDefaultFeed = feedsToUse.Count == 0 && IsDefaultFeedReachable; + var defaultFeeds = feedManager.CheckNugetFeedResponsiveness + ? feedManager.ReachableDefaultFeeds + : feedManager.DefaultFeeds; + var useDefaultFeeds = feedsToUse.Count == 0 && defaultFeeds.Count > 0; // Explicitly construct the sources to be used for the restore command when checking feed - // responsiveness, using private registries, or falling back to nuget.org. - if (feedManager.CheckNugetFeedResponsiveness || feedManager.HasPrivateRegistryFeeds || useDefaultFeed) + // responsiveness, using private registries, or falling back to default feeds. + if (feedManager.CheckNugetFeedResponsiveness || feedManager.HasPrivateRegistryFeeds || useDefaultFeeds) { - if (useDefaultFeed) + if (useDefaultFeeds) { - feedsToUse.Add(FeedManager.PublicNugetOrgFeed); + feedsToUse.AddRange(defaultFeeds); } var restoreFeeds = feedManager.RestoreFeeds(feedsToUse); sourcesArgument = restoreFeeds.SelectMany(feed => ["-Source", feed]).ToList(); @@ -210,9 +211,13 @@ private bool TryRestoreNugetPackage(string packagesConfig) UseShellExecute = false }; + // Configure the proxy settings, if applicable. + registryProxy?.SetProcessEnvironment(pi); + var threadId = Environment.CurrentManagedThreadId; void onOut(string s) => logger.LogDebug(s, threadId); void onError(string s) => logger.LogError(s, threadId); + logger.LogInfo($"Running '{pi.FileName} {string.Join(" ", pi.ArgumentList)}'"); var exitCode = pi.ReadOutput(out _, onOut, onError); if (exitCode != 0) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxy.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxy.cs new file mode 100644 index 000000000000..d49d08510a22 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxy.cs @@ -0,0 +1,210 @@ +using System; +using System.Collections.Immutable; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Security.Cryptography.X509Certificates; +using Semmle.Util; +using Semmle.Util.Logging; +using Newtonsoft.Json; +using System.Linq; + +namespace Semmle.Extraction.CSharp.DependencyFetching +{ + public class RegistryProxy : IRegistryProxy + { + /// + /// Represents configurations for package registries. + /// + public class RegistryConfig + { + /// + /// The type of the package registry. + /// + public string? Type { get; init; } + + /// + /// The URL of the package registry. + /// + public string? Url { get; init; } + + /// + /// A boolean indicating whether this registry replaces the base registry. + /// + [JsonProperty("replaces-base")] + public bool ReplacesBase { get; init; } = false; + }; + + public string Address { get; } + + private readonly ILogger logger; + + /// + /// A dictionary mapping registry URLs to a boolean indicating whether they replace the base registry. + /// + private readonly Dictionary registryMapping = []; + + private ImmutableHashSet? registryURLs; + /// + /// Gets the set of registry URLs that have been configured as part of the organization-level + /// private registry configuration. This includes all registries, regardless of whether they replace + /// the default feeds. + /// + public ImmutableHashSet RegistryURLs => + registryURLs ??= registryMapping.Keys.ToImmutableHashSet(); + + private ImmutableHashSet? registryBaseURLs; + /// + /// Gets the set of registry URLs that have been configured as part of the organization-level + /// private registry configuration and that replace the default registry. This is a subset of + /// . + /// If non-empty, the set should be used as a replacement for the default registry during + /// package resolution. + /// + public ImmutableHashSet RegistryBaseURLs => + registryBaseURLs ??= registryMapping.Where(kvp => kvp.Value).Select(kvp => kvp.Key).ToImmutableHashSet(); + + public string? CertificatePath { get; private set; } + + public X509Certificate2? Certificate { get; private set; } + + private RegistryProxy(IRegistryProxyConfiguration config, ILogger l, TemporaryDirectory tempWorkingDirectory) + { + logger = l; + Address = $"http://{config.Host}:{config.Port}"; + + if (!string.IsNullOrWhiteSpace(config.Certificate)) + { + var certDirPath = new DirectoryInfo(Path.Join(tempWorkingDirectory.DirInfo.FullName, ".registry-proxy")); + Directory.CreateDirectory(certDirPath.FullName); + + CertificatePath = Path.Join(certDirPath.FullName, "proxy.crt"); + var certFile = new FileInfo(CertificatePath); + + using var writer = certFile.CreateText(); + writer.Write(config.Certificate); + writer.Close(); + + logger.LogInfo($"Stored registry proxy certificate at {CertificatePath}"); + + Certificate = X509Certificate2.CreateFromPem(config.Certificate); + } + + if (!string.IsNullOrWhiteSpace(config.RegistryURLs)) + { + try + { + var array = JsonConvert.DeserializeObject>(config.RegistryURLs); + if (array is not null) + { + foreach (RegistryConfig registry in array) + { + if (string.IsNullOrWhiteSpace(registry.Url)) + { + logger.LogError("Ignoring registry with empty URL."); + continue; + } + + if (string.IsNullOrWhiteSpace(registry.Type)) + { + logger.LogError($"Ignoring registry at '{registry.Url}' since it has no type."); + continue; + } + + // The array contains all configured private registries, not just ones for C#. + // We ignore the non-C# ones here. + if (!registry.Type.Equals("nuget_feed")) + { + logger.LogDebug($"Ignoring registry at '{registry.Url}' since it is not of type 'nuget_feed'."); + continue; + } + + logger.LogInfo($"Found private registry at '{registry.Url}'"); + registryMapping.AddOrUpdateToLatest(registry.Url, registry.ReplacesBase); + } + } + } + catch (JsonException ex) + { + logger.LogError($"Unable to parse '{EnvironmentVariableNames.ProxyURLs}': {ex.Message}"); + } + } + } + + internal static IRegistryProxy? Make(ILogger logger, IDiagnosticsWriter diagnosticsWriter, TemporaryDirectory tempWorkingDirectory) + { + // Setting HTTP(S)_PROXY and SSL_CERT_FILE have no effect on Windows or macOS, + // but we would still end up using the registry proxy to check for feed reachability. + // This would result in us discovering that the feeds are reachable, but `dotnet` would + // fail to connect to them. To prevent this from happening, we do not initialise an + // instance of `RegistryProxy` on those platforms. + if (SystemBuildActions.Instance.IsWindows() || SystemBuildActions.Instance.IsMacOs()) + { + return null; + } + + return Make(new RegistryProxyConfiguration(), logger, diagnosticsWriter, tempWorkingDirectory); + } + + /// + /// Creates an instance of the registry proxy using the specified configuration. + /// Returns null if the proxy cannot be created. + /// This overload is exposed primarily to enable platform-independent unit testing. + /// + internal static IRegistryProxy? Make( + IRegistryProxyConfiguration proxyConfig, ILogger logger, IDiagnosticsWriter diagnosticsWriter, TemporaryDirectory tempWorkingDirectory) + { + if (string.IsNullOrWhiteSpace(proxyConfig.Host) || string.IsNullOrWhiteSpace(proxyConfig.Port)) + { + logger.LogDebug("No registry proxy credentials are configured."); + return null; + } + + var result = new RegistryProxy(proxyConfig, logger, tempWorkingDirectory); + logger.LogInfo($"Registry proxy configured at {result.Address}"); + + // Emit a diagnostic for the discovered private registries, so that it is easy + // for users to see that they were picked up. + if (result.RegistryURLs.Count > 0) + { + diagnosticsWriter.AddEntry(new DiagnosticMessage( + Language.CSharp, + "buildless/analysis-using-private-registries", + severity: DiagnosticMessage.TspSeverity.Note, + visibility: new DiagnosticMessage.TspVisibility(true, true, true), + name: "C# extraction used private package registries", + markdownMessage: string.Format( + "C# was extracted using the following private package registries:\n\n{0}\n", + string.Join("\n", result.RegistryURLs.Select(url => string.Format("- `{0}`", url))) + ) + )); + } + + return result; + } + + public void SetProcessEnvironment(ProcessStartInfo pi) + { + logger.LogDebug($"Configuring environment variables for the registry proxy at {Address}"); + + pi.EnvironmentVariables["HTTP_PROXY"] = Address; + pi.EnvironmentVariables["HTTPS_PROXY"] = Address; + + // Also set the lower case variants of the environment variables + // This might be needed on Linux systems. + pi.EnvironmentVariables["http_proxy"] = Address; + pi.EnvironmentVariables["https_proxy"] = Address; + + if (CertificatePath != null) + { + logger.LogDebug("Setting the SSL certificate path for the registry proxy."); + pi.EnvironmentVariables["SSL_CERT_FILE"] = CertificatePath; + } + } + + public void Dispose() + { + Certificate?.Dispose(); + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxyConfiguration.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxyConfiguration.cs new file mode 100644 index 000000000000..aeb7e665b62f --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxyConfiguration.cs @@ -0,0 +1,15 @@ +using System; + +namespace Semmle.Extraction.CSharp.DependencyFetching +{ + public class RegistryProxyConfiguration : IRegistryProxyConfiguration + { + public string? Host { get; } = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ProxyHost); + + public string? Port { get; } = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ProxyPort); + + public string? Certificate { get; } = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ProxyCertificate); + + public string? RegistryURLs { get; } = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ProxyURLs); + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/CodeAnalysisExtensions/SymbolExtensions.cs b/csharp/extractor/Semmle.Extraction.CSharp/CodeAnalysisExtensions/SymbolExtensions.cs index dd7246fa6597..0402c345532e 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/CodeAnalysisExtensions/SymbolExtensions.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/CodeAnalysisExtensions/SymbolExtensions.cs @@ -785,6 +785,18 @@ public static AnnotatedTypeSymbol GetType(this Context cx, Microsoft.CodeAnalysi return new AnnotatedTypeSymbol(info.Type.DisambiguateType(), info.Nullability.Annotation); } + /// + /// Gets the converted type of a syntax node, or default if it could not be determined. + /// + /// Extractor context. + /// The syntax node to determine the converted type for. + /// The converted type symbol of the node, or default. + public static AnnotatedTypeSymbol GetConvertedType(this Context cx, Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode node) + { + var info = GetTypeInfo(cx, node); + return new AnnotatedTypeSymbol(info.ConvertedType.DisambiguateType(), info.ConvertedNullability.Annotation); + } + /// /// Gets the annotated type arguments of an INamedTypeSymbol. /// This has not yet been exposed on the public API. diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/BinaryPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/BinaryPattern.cs index 3eaf9cc55c3d..e45b53e3cfae 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/BinaryPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/BinaryPattern.cs @@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class BinaryPattern : Expression { public BinaryPattern(Context cx, BinaryPatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), GetKind(syntax.OperatorToken, syntax), parent, child, isCompilerGenerated: false, null)) + base(new ExpressionInfo(cx, cx.GetConvertedType(syntax), cx.CreateLocation(syntax.GetLocation()), GetKind(syntax.OperatorToken, syntax), parent, child, isCompilerGenerated: false, null)) { Pattern.Create(cx, syntax.Left, this, 0); Pattern.Create(cx, syntax.Right, this, 1); @@ -24,4 +24,4 @@ private static ExprKind GetKind(SyntaxToken operatorToken, BinaryPatternSyntax s }; } } -} \ No newline at end of file +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/ListPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/ListPattern.cs index 492e2bcb1ce0..a28743058e6d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/ListPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/ListPattern.cs @@ -7,9 +7,9 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class ListPattern : Expression { internal ListPattern(Context cx, ListPatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.LIST_PATTERN, parent, child, isCompilerGenerated: false, null)) + base(new ExpressionInfo(cx, cx.GetConvertedType(syntax), cx.CreateLocation(syntax.GetLocation()), ExprKind.LIST_PATTERN, parent, child, isCompilerGenerated: false, null)) { syntax.Patterns.ForEach((p, i) => Pattern.Create(cx, p, this, i)); } } -} \ No newline at end of file +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RecursivePattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RecursivePattern.cs index febbdacd14c4..5e18169ceb14 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RecursivePattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RecursivePattern.cs @@ -15,7 +15,7 @@ internal class RecursivePattern : Expression /// The parent pattern/expression. /// The child index of this pattern. public RecursivePattern(Context cx, RecursivePatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.RECURSIVE_PATTERN, parent, child, isCompilerGenerated: false, null)) + base(new ExpressionInfo(cx, cx.GetConvertedType(syntax), cx.CreateLocation(syntax.GetLocation()), ExprKind.RECURSIVE_PATTERN, parent, child, isCompilerGenerated: false, null)) { // Extract the type access if (syntax.Type is TypeSyntax t) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RelationalPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RelationalPattern.cs index 4f6c2eac11ff..570f35ac817b 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RelationalPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RelationalPattern.cs @@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class RelationalPattern : Expression { public RelationalPattern(Context cx, RelationalPatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), GetKind(syntax.OperatorToken), parent, child, isCompilerGenerated: false, null)) + base(new ExpressionInfo(cx, cx.GetConvertedType(syntax), cx.CreateLocation(syntax.GetLocation()), GetKind(syntax.OperatorToken), parent, child, isCompilerGenerated: false, null)) { Expression.Create(cx, syntax.Expression, this, 0); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/SlicePattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/SlicePattern.cs index 69d7cc878beb..4ef1ba856f7f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/SlicePattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/SlicePattern.cs @@ -6,7 +6,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class SlicePattern : Expression { public SlicePattern(Context cx, SlicePatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.SLICE_PATTERN, parent, child, isCompilerGenerated: false, null)) + base(new ExpressionInfo(cx, cx.GetConvertedType(syntax), cx.CreateLocation(syntax.GetLocation()), ExprKind.SLICE_PATTERN, parent, child, isCompilerGenerated: false, null)) { if (syntax.Pattern is not null) { @@ -14,4 +14,4 @@ public SlicePattern(Context cx, SlicePatternSyntax syntax, IExpressionParentEnti } } } -} \ No newline at end of file +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/UnaryPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/UnaryPattern.cs index 64663c7a6e14..2c7dc32e8f4f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/UnaryPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/UnaryPattern.cs @@ -6,9 +6,9 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class UnaryPattern : Expression { public UnaryPattern(Context cx, UnaryPatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.NOT_PATTERN, parent, child, isCompilerGenerated: false, null)) + base(new ExpressionInfo(cx, cx.GetConvertedType(syntax), cx.CreateLocation(syntax.GetLocation()), ExprKind.NOT_PATTERN, parent, child, isCompilerGenerated: false, null)) { Pattern.Create(cx, syntax.Pattern, this, 0); } } -} \ No newline at end of file +} diff --git a/csharp/extractor/Semmle.Extraction.Tests/DependabotProxy.cs b/csharp/extractor/Semmle.Extraction.Tests/DependabotProxy.cs deleted file mode 100644 index 9c8c762f5989..000000000000 --- a/csharp/extractor/Semmle.Extraction.Tests/DependabotProxy.cs +++ /dev/null @@ -1,185 +0,0 @@ -using Xunit; -using System; -using System.IO; -using Semmle.Extraction.CSharp.DependencyFetching; -using Semmle.Util; - -namespace Semmle.Extraction.Tests -{ - public class DependabotConfigurationStub : IDependabotProxyConfiguration - { - public string? Host { get; set; } - public string? Port { get; set; } - public string? Certificate { get; set; } - public string? RegistryURLs { get; set; } - } - - public class DiagnosticsWriterStub : IDiagnosticsWriter - { - public void AddEntry(Semmle.Util.DiagnosticMessage entry) { } - public void Dispose() { } - } - - public class DependabotProxyTests - { - private static TemporaryDirectory MakeTemporaryDirectory() - { - var tmp = Path.Join(Path.GetTempPath(), "DependabotProxyTests", Guid.NewGuid().ToString()); - return new TemporaryDirectory(tmp, "testing", new LoggerStub()); - } - - [Fact] - public void TestDependabotProxyCreation1() - { - // Setup - var config = new DependabotConfigurationStub - { - Host = "localhost", - Port = "", - }; - - // Execute - using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); - - // Verify - Assert.Null(proxy); - } - - [Fact] - public void TestDependabotProxyCreation2() - { - // Setup - var config = new DependabotConfigurationStub - { - Port = "8080", - }; - - // Execute - using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); - - // Verify - Assert.Null(proxy); - } - - private const string ExampleCertificate = """ - -----BEGIN CERTIFICATE----- - MIIFJTCCAw2gAwIBAgIUDImU6YnuAqJ1QuRp+OpJQPnPu6wwDQYJKoZIhvcNAQEL - BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDkwMTEyMjUzMVoXDTI3MDkw - MTEyMjUzMVowFDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEF - AAOCAg8AMIICCgKCAgEAnlp7yQ1VuocMwIZWlCle3bEM86+1ED6BFfPFpIrRhfUT - c+5IvPng8TIZPO4mROp5G9YDZfOtXW2bwktyZNUhsBcxqUT1lmXit21vc5W9Gxx5 - 4G8nyF4/FcjFkmxkZifxiUCdBceDcE7+kx2itq/a7gLPlyTzvz5etu1nHEC3Jg/y - TVhAwdwysgAo9WymFCczDa2ga6nOPBOaxwLnoPl9041KSu5oIo9QC0Im+US1R18Q - /mXa+wkmjf+bYAkE/pZie8z8Q7h9yppTngGzkoDEebFYyaMr8MXlFdWS8f/eMwSp - iMFSsmlCqgUbA672APxzOcuSMMYrblzGkvZp23qbNjwQuQKlgAYBTSGltLv4U8JF - ePNcgDCY6RG55rNvF1gk1L2h25jcw1LX6fSvQGCOkzNmP03AhqZBUigO1Zt0zLwi - K4m0bH7nPLJFEN6tI3tybyZeC2RVyiSHvOkgx35Qj8RQ3XMVkImJNBYOMc2MkmMZ - ux6XMiHqXCON4zaWuWSovciZeMAQAspCrzVDLH6p2DWEfw/zDfQNU3iLk21sZGei - 0GKzs8zrxUcqOU9V4Cnm+7JJ6eqS72f1+wX0ROb3djC6KgCE/NaHqo4apiI3K+CH - T0rVRsJIHyT39YO1c1I1vhAKRSH5kQVe3qRfIT/AuaDLQY6WqGPzrOkem78sjtsC - AwEAAaNvMG0wHQYDVR0OBBYEFK0DP5MD6mhEcdcm346uwoPL2NFGMB8GA1UdIwQY - MBaAFK0DP5MD6mhEcdcm346uwoPL2NFGMA8GA1UdEwEB/wQFMAMBAf8wGgYDVR0R - BBMwEYIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEBCwUAA4ICAQCc5u8qNHHG - kONjfvq7Denq6QaEt4dZZDDODAvgUzZnnBjEhgrp7zfxtbyU/I0+DWnKQMKA9wPM - ktiFGd0lldEqoT+E7b0kN124lBGqZ/uYkhsWZ0Nc5dD+UB9oJszwOc5KNuquOnr6 - SbsfXVm4yLvVLXl67c0jvqvRgGg9/6Q6eMzohW6abMdbYhS28/DsJhCea/dV3+L1 - oVJ3O/A8e86m174ZCGE8s9UtnVYylBkAryDqaaQLdOBQ2C7uxdRAUNHSIa2JlqUc - 5+cod8lFojKb74hbgj6wkXyajsFttqYMh7CeASsnjZXDQ4MC3DqqDVCZuNvJ85Rt - ya3Tljp4Ln2AAAoKC3REUeU8PQqpk1vVIj0FSr3RvBTvwzyNfWFVqyBiXTATuV9n - 6AemqqXo5MZrHHeRaSTF8A70Jxbt9yx75xQxp3O3tdEL1Mxbl9X7c/hizOfLbeHH - IkAgzALQgi87Zbf2tOhRwH5NrB4ijyUUfovRHUwzsZOoTNqlVeNzbDRVbegx9V99 - /3vwNZgpStGl/JYhN9qY5hJKnC64ltMvuNGpLeJCGyFkrtFS8gKkgR7VKrGo7h3+ - Zo8rz8TFjP7RmSgQbrmFuPqNOGXzPidu2sMMFacKV7Rn4bEtHzW3MDhqVD4w/pGD - L0xpnWjzLYltVjz8mo07yh+zQ10G71Cl1w== - -----END CERTIFICATE----- - """; - - [Fact] - public void TestDependabotProxyCertificate() - { - // Setup - var config = new DependabotConfigurationStub - { - Port = "8080", - Host = "localhost", - Certificate = ExampleCertificate - }; - - // Execute - using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); - - // Verify - Assert.NotNull(proxy); - Assert.Equal("http://localhost:8080", proxy.Address); - Assert.NotNull(proxy.Certificate); - Assert.NotNull(proxy.CertificatePath); - } - - [Fact] - public void TestDependabotRegistryUrls1() - { - // Setup - var config = new DependabotConfigurationStub - { - Port = "8080", - Host = "localhost", - RegistryURLs = "Doesn't parse as a JSON list" - }; - - // Execute - using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); - - // Verify - Assert.NotNull(proxy); - Assert.Equal([], proxy.RegistryURLs); - } - - [Fact] - public void TestDependabotRegistryUrls2() - { - // Setup - var config = new DependabotConfigurationStub - { - Port = "8080", - Host = "localhost", - RegistryURLs = "[ { \"type\": \"nuget_feed\", \"url\": \"https://nuget.pkg.github.com/org/index.json\" } ]" - }; - - // Execute - using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); - - // Verify - Assert.NotNull(proxy); - Assert.Equal([ - "https://nuget.pkg.github.com/org/index.json" - ], proxy.RegistryURLs); - } - - [Fact] - public void TestDependabotRegistryUrls3() - { - // Setup - var config = new DependabotConfigurationStub - { - Port = "8080", - Host = "localhost", - RegistryURLs = "[ { \"type\": \"nuget_feed\", \"url\": \"https://example.com/org/index.json\" }, { \"type\": \"wrong_type\", \"url\": \"https://nuget.pkg.github.com/org/index.json\" } ]" - }; - - // Execute - using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); - - // Verify - Assert.NotNull(proxy); - Assert.Equal([ - "https://example.com/org/index.json" - ], proxy.RegistryURLs); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs b/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs index 77e88a58443a..1d393a418ca9 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/DotNet.cs @@ -285,7 +285,7 @@ public void TestNugetFeeds() var dotnet = MakeDotnet(dotnetCliInvoker); // Execute - dotnet.GetNugetFeeds("abc"); + dotnet.GetNugetFeedsFromConfig("abc"); // Verify var lastArgs = dotnetCliInvoker.GetLastArgs(); diff --git a/csharp/extractor/Semmle.Extraction.Tests/DotNetStub.cs b/csharp/extractor/Semmle.Extraction.Tests/DotNetStub.cs index 119e39fd0974..12a131380e41 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/DotNetStub.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/DotNetStub.cs @@ -30,7 +30,7 @@ public DotNetStub(IList runtimes, IList sdks, IList nuge public bool Exec(List execArgs) => true; - public IList GetNugetFeeds(string nugetConfig) => nugetFeedsFromConfig; + public IList GetNugetFeedsFromConfig(string nugetConfig) => nugetFeedsFromConfig; public IList GetNugetFeedsFromFolder(string folderPath) => nugetFeedsFromFolder; } diff --git a/csharp/extractor/Semmle.Extraction.Tests/FeedManager.cs b/csharp/extractor/Semmle.Extraction.Tests/FeedManager.cs index f70efdb4cdcc..ae97d2e7e346 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/FeedManager.cs @@ -1,19 +1,37 @@ using Xunit; using System; using System.Collections.Generic; +using System.Collections.Immutable; +using System.Diagnostics; using System.IO; using System.Linq; +using System.Security.Cryptography.X509Certificates; using Semmle.Extraction.CSharp.DependencyFetching; namespace Semmle.Extraction.Tests { - public class DependabotProxyStub : IDependabotProxy + public class RegistryProxyStub : IRegistryProxy { public string Address { get; } = ""; - public HashSet RegistryURLs { get; } = ["https://example.com/registry1", "https://example.com/registry2"]; + public ImmutableHashSet RegistryURLs { get; } = ["https://example.com/registry1", "https://example.com/registry2"]; + public ImmutableHashSet RegistryBaseURLs { get; } = []; public string? CertificatePath { get; } = null; - public System.Security.Cryptography.X509Certificates.X509Certificate2? Certificate { get; } = null; + public X509Certificate2? Certificate { get; } = null; + public void SetProcessEnvironment(ProcessStartInfo pi) { } + + public void Dispose() { } + } + + public class RegistryProxyStubWithBaseUrls : IRegistryProxy + { + public string Address { get; } = ""; + public ImmutableHashSet RegistryURLs { get; } = ["https://example.com/registry1", "https://example.com/registry2", "https://example.com/base1", "https://example.com/base2"]; + public ImmutableHashSet RegistryBaseURLs { get; } = ["https://example.com/base1", "https://example.com/base2"]; + public string? CertificatePath { get; } = null; + public X509Certificate2? Certificate { get; } = null; + + public void SetProcessEnvironment(ProcessStartInfo pi) { } public void Dispose() { } } @@ -54,18 +72,29 @@ public class FileProviderStub : IFileProvider public ICollection Resources { get; } = new List(); } + /// + /// The purpose of this test class is to verify the behavior of the FeedManager class. + /// The tests use stub implementations of the FeedManager's dependencies to control the behavior of the FeedManager + /// and verify its behavior. + /// public class FeedManagerTests { private static FeedManager MakeFeedManager() { var logger = new LoggerStub(); var dotnet = new DotNetStub([], [], ["E https://feed.from/config"], ["E https://feed.from/folder1", "E https://feed.from/folder2", "D https://feed.from/folder3"]); - var dependabotProxy = new DependabotProxyStub(); + var registryProxy = new RegistryProxyStub(); var fileProvider = new FileProviderStub(); var feedManagerIo = new FeedManagerIOStub(["https://example.com/registry1", "https://feed.from/folder2"]); - return new FeedManager(logger, dotnet, dependabotProxy, fileProvider, feedManagerIo); + return new FeedManager(logger, dotnet, registryProxy, fileProvider, feedManagerIo); } + /// + /// Verify that `FeedManager` correctly computes the explicit feeds using feeds discovered in nuget.config files and + /// private registries. + /// See the initialization of `DotNetStub` and `RegistryProxyStub` in `MakeFeedManager` for the feeds configured + /// to be returned and classified as explicit feeds. + /// [Fact] public void TestExplicitFeeds() { @@ -83,6 +112,11 @@ public void TestExplicitFeeds() ], actualFeeds); } + /// + /// Verify that `FeedManager` correctly computes the inherited feeds using feeds discovered from the environment. + /// See the initialization of `DotNetStub` in `MakeFeedManager` for the feeds configured + /// to be returned and classified as inherited feeds. + /// [Fact] public void TestInheritedFeeds() { @@ -99,6 +133,12 @@ public void TestInheritedFeeds() ], inherited); } + /// + /// Verify that `FeedManager` correctly computes all feeds using feeds discovered in nuget.config files, private registries, + /// and the environment. + /// See the initialization of `DotNetStub` and `RegistryProxyStub` in `MakeFeedManager` for the feeds configured + /// to be returned and included in all feeds. + /// [Fact] public void TestAllFeeds() { @@ -118,6 +158,12 @@ public void TestAllFeeds() ], all); } + /// + /// Verify that `FeedManager` correctly computes the reachable feeds using feeds discovered in + /// nuget.config files, private registries, and the environment. + /// See the initialization of `FeedManagerIOStub` in `MakeFeedManager` for the feeds configured as unreachable + /// and therefore filtered out of the reachable feeds. + /// [Fact] public void TestReachableFeeds() { @@ -135,6 +181,12 @@ public void TestReachableFeeds() ], reachableFeeds); } + /// + /// Verify that `FeedManager` correctly computes the reachable explicit feeds using feeds discovered in + /// nuget.config files and private registries. + /// See the initialization of `FeedManagerIOStub` in `MakeFeedManager` for the feeds configured as unreachable + /// and therefore filtered out of the reachable explicit feeds. + /// [Fact] public void TestReachableExplicitFeeds() { @@ -151,6 +203,12 @@ public void TestReachableExplicitFeeds() ], reachableFeeds); } + /// + /// Verify that `FeedManager` correctly computes the reachable fallback feeds using feeds discovered in + /// nuget.config files and the default NuGet.org feed. + /// See the initialization of `FeedManagerIOStub` in `MakeFeedManager` for the feeds configured as unreachable + /// and therefore filtered out of the reachable fallback feeds. + /// [Fact] public void TestReachableFallbackFeeds() { @@ -168,6 +226,12 @@ public void TestReachableFallbackFeeds() ], reachableFallback); } + /// + /// Verify that `FeedManager` correctly computes the feeds to use for a given packages.config file from feeds discovered + /// in private registries and the environment. + /// See the initialization of `DotNetStub` in `MakeFeedManager` for the feeds configured + /// to be returned and selected for use. + /// [Fact] public void TestFeedsToUse() { @@ -183,5 +247,130 @@ public void TestFeedsToUse() "https://feed.from/folder1" ], feedsToUse); } + + /// + /// Verify that `FeedManager` correctly computes the default feeds and reachable default feeds + /// when no private registries are configured. + /// + [Fact] + public void TestDefaultFeedsNugetOrg() + { + // Setup + var feedManager = MakeFeedManager(); + + // Execute + var defaultFeeds = feedManager.DefaultFeeds; + var reachableDefault = feedManager.ReachableDefaultFeeds; + + // Verify + Assert.Equal([ + "https://api.nuget.org/v3/index.json" + ], defaultFeeds); + Assert.Equal([ + "https://api.nuget.org/v3/index.json" + ], reachableDefault); + } + + /// + /// Verify that `FeedManager` correctly computes the default feeds and reachable default feeds + /// when private registries are configured to replace the default feeds. + /// See the initialization of `RegistryProxyStubWithBaseUrls` for the feeds configured to replace the default feeds. + /// + [Fact] + public void TestDefaultFeedsPrivateRegistries() + { + // Setup + var logger = new LoggerStub(); + var dotnet = new DotNetStub([], [], [], []); + var registryProxy = new RegistryProxyStubWithBaseUrls(); + var fileProvider = new FileProviderStub(); + var feedManagerIo = new FeedManagerIOStub(["https://example.com/registry2", "https://example.com/base1"]); + var feedManager = new FeedManager(logger, dotnet, registryProxy, fileProvider, feedManagerIo); + + // Execute + var defaultFeeds = feedManager.DefaultFeeds; + var reachableDefault = feedManager.ReachableDefaultFeeds; + var reachableFallback = feedManager.ReachableFallbackFeeds; + + // Verify + Assert.Equal([ + "https://example.com/base1", + "https://example.com/base2" + ], defaultFeeds); + Assert.Equal([ + "https://example.com/base2" + ], reachableDefault); + Assert.Equal([ + "https://example.com/registry1", + "https://example.com/base2" + ], reachableFallback); + } + + /// + /// Verify that `FeedManager` correctly computes all feeds when https://api.nuget.org/v3/index.json is not replaced + /// by a private registry because no private registry is configured to replace the base feed. + /// + [Fact] + public void TestNugetOrgNotReplaced() + { + // Setup + var logger = new LoggerStub(); + var dotnet = new DotNetStub([], [], [], ["E https://api.nuget.org/v3/index.json"]); + var registryProxy = new RegistryProxyStub(); + var fileProvider = new FileProviderStub(); + var feedManagerIo = new FeedManagerIOStub(["https://example.com/registry2", "https://example.com/base1"]); + var feedManager = new FeedManager(logger, dotnet, registryProxy, fileProvider, feedManagerIo); + + // Execute + var explicitFeeds = feedManager.ExplicitFeeds; + var allFeeds = feedManager.AllFeeds; + + // Verify + Assert.Equal([ + "https://example.com/registry1", + "https://example.com/registry2", + ], explicitFeeds); + Assert.Equal([ + "https://example.com/registry1", + "https://example.com/registry2", + "https://api.nuget.org/v3/index.json" + ], allFeeds); + + } + + /// + /// Verify that `FeedManager` correctly computes the explicit and all feeds when https://api.nuget.org/v3/index.json and + /// related NuGet.org URLs are replaced by private registries configured to replace the base feeds. + /// See the initialization of `RegistryProxyStubWithBaseUrls` for the feeds configured as default replacements. + /// + [Fact] + public void TestNugetOrgReplacement() + { + // Setup + var logger = new LoggerStub(); + var dotnet = new DotNetStub([], [], ["E https://www.nuget.org/api/v2/"], ["E https://api.nuget.org/v3/index.json"]); + var registryProxy = new RegistryProxyStubWithBaseUrls(); + var fileProvider = new FileProviderStub(); + var feedManagerIo = new FeedManagerIOStub(["https://example.com/registry2", "https://example.com/base1"]); + var feedManager = new FeedManager(logger, dotnet, registryProxy, fileProvider, feedManagerIo); + + // Execute + var explicitFeeds = feedManager.ExplicitFeeds; + var allFeeds = feedManager.AllFeeds; + + // Verify + Assert.Equal([ + "https://example.com/base1", + "https://example.com/base2", + "https://example.com/registry1", + "https://example.com/registry2" + ], explicitFeeds); + Assert.Equal([ + "https://example.com/base1", + "https://example.com/base2", + "https://example.com/registry1", + "https://example.com/registry2", + ], allFeeds); + } } } diff --git a/csharp/extractor/Semmle.Extraction.Tests/RegistryProxy.cs b/csharp/extractor/Semmle.Extraction.Tests/RegistryProxy.cs new file mode 100644 index 000000000000..f978736416fd --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.Tests/RegistryProxy.cs @@ -0,0 +1,285 @@ +using Xunit; +using System; +using System.Diagnostics; +using System.IO; +using Semmle.Extraction.CSharp.DependencyFetching; +using Semmle.Util; + +namespace Semmle.Extraction.Tests +{ + public class RegistryConfigurationStub : IRegistryProxyConfiguration + { + public string? Host { get; set; } + public string? Port { get; set; } + public string? Certificate { get; set; } + public string? RegistryURLs { get; set; } + } + + public class DiagnosticsWriterStub : IDiagnosticsWriter + { + public void AddEntry(Semmle.Util.DiagnosticMessage entry) { } + public void Dispose() { } + } + + public class RegistryProxyTests + { + private static TemporaryDirectory MakeTemporaryDirectory() + { + var tmp = Path.Join(Path.GetTempPath(), "RegistryProxyTests", Guid.NewGuid().ToString()); + return new TemporaryDirectory(tmp, "testing", new LoggerStub()); + } + + /// + /// Verify that the registry proxy correctly handles the case where the port is not specified. + /// In this case, the registry proxy should not be created. + /// + [Fact] + public void TestRegistryProxyNoPort() + { + // Setup + var config = new RegistryConfigurationStub + { + Host = "localhost", + Port = "", + }; + + // Execute + using var tempWorkingDirectory = MakeTemporaryDirectory(); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + + // Verify + Assert.Null(proxy); + } + + /// + /// Verify that the registry proxy correctly handles the case where the host is not specified. + /// In this case, the registry proxy should not be created. + /// + [Fact] + public void TestRegistryProxyNoHost() + { + // Setup + var config = new RegistryConfigurationStub + { + Port = "8080", + }; + + // Execute + using var tempWorkingDirectory = MakeTemporaryDirectory(); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + + // Verify + Assert.Null(proxy); + } + + private const string ExampleCertificate = """ + -----BEGIN CERTIFICATE----- + MIIFJTCCAw2gAwIBAgIUDImU6YnuAqJ1QuRp+OpJQPnPu6wwDQYJKoZIhvcNAQEL + BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDkwMTEyMjUzMVoXDTI3MDkw + MTEyMjUzMVowFDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEF + AAOCAg8AMIICCgKCAgEAnlp7yQ1VuocMwIZWlCle3bEM86+1ED6BFfPFpIrRhfUT + c+5IvPng8TIZPO4mROp5G9YDZfOtXW2bwktyZNUhsBcxqUT1lmXit21vc5W9Gxx5 + 4G8nyF4/FcjFkmxkZifxiUCdBceDcE7+kx2itq/a7gLPlyTzvz5etu1nHEC3Jg/y + TVhAwdwysgAo9WymFCczDa2ga6nOPBOaxwLnoPl9041KSu5oIo9QC0Im+US1R18Q + /mXa+wkmjf+bYAkE/pZie8z8Q7h9yppTngGzkoDEebFYyaMr8MXlFdWS8f/eMwSp + iMFSsmlCqgUbA672APxzOcuSMMYrblzGkvZp23qbNjwQuQKlgAYBTSGltLv4U8JF + ePNcgDCY6RG55rNvF1gk1L2h25jcw1LX6fSvQGCOkzNmP03AhqZBUigO1Zt0zLwi + K4m0bH7nPLJFEN6tI3tybyZeC2RVyiSHvOkgx35Qj8RQ3XMVkImJNBYOMc2MkmMZ + ux6XMiHqXCON4zaWuWSovciZeMAQAspCrzVDLH6p2DWEfw/zDfQNU3iLk21sZGei + 0GKzs8zrxUcqOU9V4Cnm+7JJ6eqS72f1+wX0ROb3djC6KgCE/NaHqo4apiI3K+CH + T0rVRsJIHyT39YO1c1I1vhAKRSH5kQVe3qRfIT/AuaDLQY6WqGPzrOkem78sjtsC + AwEAAaNvMG0wHQYDVR0OBBYEFK0DP5MD6mhEcdcm346uwoPL2NFGMB8GA1UdIwQY + MBaAFK0DP5MD6mhEcdcm346uwoPL2NFGMA8GA1UdEwEB/wQFMAMBAf8wGgYDVR0R + BBMwEYIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEBCwUAA4ICAQCc5u8qNHHG + kONjfvq7Denq6QaEt4dZZDDODAvgUzZnnBjEhgrp7zfxtbyU/I0+DWnKQMKA9wPM + ktiFGd0lldEqoT+E7b0kN124lBGqZ/uYkhsWZ0Nc5dD+UB9oJszwOc5KNuquOnr6 + SbsfXVm4yLvVLXl67c0jvqvRgGg9/6Q6eMzohW6abMdbYhS28/DsJhCea/dV3+L1 + oVJ3O/A8e86m174ZCGE8s9UtnVYylBkAryDqaaQLdOBQ2C7uxdRAUNHSIa2JlqUc + 5+cod8lFojKb74hbgj6wkXyajsFttqYMh7CeASsnjZXDQ4MC3DqqDVCZuNvJ85Rt + ya3Tljp4Ln2AAAoKC3REUeU8PQqpk1vVIj0FSr3RvBTvwzyNfWFVqyBiXTATuV9n + 6AemqqXo5MZrHHeRaSTF8A70Jxbt9yx75xQxp3O3tdEL1Mxbl9X7c/hizOfLbeHH + IkAgzALQgi87Zbf2tOhRwH5NrB4ijyUUfovRHUwzsZOoTNqlVeNzbDRVbegx9V99 + /3vwNZgpStGl/JYhN9qY5hJKnC64ltMvuNGpLeJCGyFkrtFS8gKkgR7VKrGo7h3+ + Zo8rz8TFjP7RmSgQbrmFuPqNOGXzPidu2sMMFacKV7Rn4bEtHzW3MDhqVD4w/pGD + L0xpnWjzLYltVjz8mo07yh+zQ10G71Cl1w== + -----END CERTIFICATE----- + """; + + /// + /// Verify that the registry proxy correctly handles the case + /// where the port, host, and certificate are specified. + /// + [Fact] + public void TestRegistryProxyCertificate() + { + // Setup + var config = new RegistryConfigurationStub + { + Port = "8080", + Host = "localhost", + Certificate = ExampleCertificate + }; + + // Execute + using var tempWorkingDirectory = MakeTemporaryDirectory(); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + + // Verify + Assert.NotNull(proxy); + Assert.Equal("http://localhost:8080", proxy.Address); + Assert.NotNull(proxy.Certificate); + Assert.NotNull(proxy.CertificatePath); + } + + /// + /// Verify that the registry proxy correctly handles the case where the RegistryURLs environment variable + /// is not a valid JSON list. + /// In this case, the registry proxy should be created, but the list of private registries should be empty. + /// + [Fact] + public void TestRegistryProxyUrlsParseError() + { + // Setup + var config = new RegistryConfigurationStub + { + Port = "8080", + Host = "localhost", + RegistryURLs = "Doesn't parse as a JSON list" + }; + + // Execute + using var tempWorkingDirectory = MakeTemporaryDirectory(); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + + // Verify + Assert.NotNull(proxy); + Assert.Empty(proxy.RegistryURLs); + Assert.Empty(proxy.RegistryBaseURLs); + } + + /// + /// Verify that the registry proxy correctly handles the case where the RegistryURLs environment variable + /// is a valid JSON list with a single entry. + /// In this case, the registry proxy should be created, and the list of private registries should contain the single entry. + /// + [Fact] + public void TestRegistryProxyUrlsSingle() + { + // Setup + var config = new RegistryConfigurationStub + { + Port = "8080", + Host = "localhost", + RegistryURLs = "[ { \"type\": \"nuget_feed\", \"url\": \"https://nuget.pkg.github.com/org/index.json\" } ]" + }; + + // Execute + using var tempWorkingDirectory = MakeTemporaryDirectory(); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + + // Verify + Assert.NotNull(proxy); + Assert.Equal([ + "https://nuget.pkg.github.com/org/index.json" + ], proxy.RegistryURLs); + Assert.Empty(proxy.RegistryBaseURLs); + } + + /// + /// Verify that the registry proxy correctly handles the case where the RegistryURLs environment variable + /// is a valid JSON list with multiple entries, but only one of them is of type "nuget_feed", which is + /// relevant for C#. + /// In this case, the registry proxy should be created, and the list of private registries should + /// contain only the entry of type "nuget_feed". + /// + [Fact] + public void TestRegistryProxyUrls3() + { + // Setup + var config = new RegistryConfigurationStub + { + Port = "8080", + Host = "localhost", + RegistryURLs = "[ { \"type\": \"nuget_feed\", \"url\": \"https://example.com/org/index.json\" }, { \"type\": \"wrong_type\", \"url\": \"https://nuget.pkg.github.com/org/index.json\" } ]" + }; + + // Execute + using var tempWorkingDirectory = MakeTemporaryDirectory(); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + + // Verify + Assert.NotNull(proxy); + Assert.Equal([ + "https://example.com/org/index.json" + ], proxy.RegistryURLs); + Assert.Empty(proxy.RegistryBaseURLs); + } + + /// + /// Verify that the registry proxy correctly handles the case where the RegistryURLs environment variable + /// is a valid JSON list with multiple entries and one of them is configured to replace the base feeds. + /// In this case, the registry proxy should be created, and the list of private registries should contain all + /// entries, while the list of base registries should contain only the entry that replaces the base feeds. + /// + [Fact] + public void TestRegistryProxyUrlsReplacesBase() + { + // Setup + var config = new RegistryConfigurationStub + { + Port = "8080", + Host = "localhost", + RegistryURLs = "[ { \"type\": \"nuget_feed\", \"url\": \"https://example.com/org/index.json\", \"replaces-base\": true }, { \"type\": \"nuget_feed\", \"url\": \"https://example2.com/org/index.json\", \"replaces-base\": false } ]" + }; + + // Execute + using var tempWorkingDirectory = MakeTemporaryDirectory(); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + + // Verify + Assert.NotNull(proxy); + Assert.Equal([ + "https://example.com/org/index.json", + "https://example2.com/org/index.json" + ], proxy.RegistryURLs); + Assert.Equal([ + "https://example.com/org/index.json", + ], proxy.RegistryBaseURLs); + } + + /// + /// Verifies that the registry proxy correctly sets the environment variables needed for a .NET process to use the proxy. + /// In this case, the environment variables for the HTTP and HTTPS proxies, as well as the SSL certificate file, should be correctly set. + /// The http proxies should be set to the proxy address, and the SSL certificate file should point to the certificate path. + /// The latter is tested by verifying that the SSL_CERT_FILE environment variable ends with "proxy.crt" as we can't check the absolute path + /// due to temporary directories. + /// + [Fact] + public void TestRegistryProxyProcessEnvironment() + { + // Setup + var config = new RegistryConfigurationStub + { + Port = "8080", + Host = "localhost", + Certificate = ExampleCertificate + }; + + // Execute + using var tempWorkingDirectory = MakeTemporaryDirectory(); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + + var pi = new ProcessStartInfo("nuget"); + proxy?.SetProcessEnvironment(pi); + + // Verify + Assert.NotNull(proxy); + Assert.Equal("http://localhost:8080", proxy.Address); + Assert.Equal("http://localhost:8080", pi.EnvironmentVariables["HTTP_PROXY"]); + Assert.Equal("http://localhost:8080", pi.EnvironmentVariables["HTTPS_PROXY"]); + Assert.Equal("http://localhost:8080", pi.EnvironmentVariables["http_proxy"]); + Assert.Equal("http://localhost:8080", pi.EnvironmentVariables["https_proxy"]); + Assert.EndsWith("proxy.crt", pi.EnvironmentVariables["SSL_CERT_FILE"]); + } + } +} diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 8d3c16f6bc95..0ece244ec308 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.7.77 + +No user-facing changes. + +## 1.7.76 + +No user-facing changes. + +## 1.7.75 + +No user-facing changes. + ## 1.7.74 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.75.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.75.md new file mode 100644 index 000000000000..0793cd5cd065 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.75.md @@ -0,0 +1,3 @@ +## 1.7.75 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.76.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.76.md new file mode 100644 index 000000000000..902eae830166 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.76.md @@ -0,0 +1,3 @@ +## 1.7.76 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.77.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.77.md new file mode 100644 index 000000000000..14045aed3dd4 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.77.md @@ -0,0 +1,3 @@ +## 1.7.77 + +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 34061dc1c22a..6ebdd95a6ece 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.74 +lastReleaseVersion: 1.7.77 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 990c6ad4dbc8..9c3552c89f94 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.74 +version: 1.7.77 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 8d3c16f6bc95..0ece244ec308 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.7.77 + +No user-facing changes. + +## 1.7.76 + +No user-facing changes. + +## 1.7.75 + +No user-facing changes. + ## 1.7.74 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.75.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.75.md new file mode 100644 index 000000000000..0793cd5cd065 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.75.md @@ -0,0 +1,3 @@ +## 1.7.75 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.76.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.76.md new file mode 100644 index 000000000000..902eae830166 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.76.md @@ -0,0 +1,3 @@ +## 1.7.76 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.77.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.77.md new file mode 100644 index 000000000000..14045aed3dd4 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.77.md @@ -0,0 +1,3 @@ +## 1.7.77 + +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 34061dc1c22a..6ebdd95a6ece 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.74 +lastReleaseVersion: 1.7.77 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 199504aa7dd3..72b51821fe88 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.74 +version: 1.7.77 groups: - csharp - solorigate diff --git a/csharp/ql/consistency-queries/SsaConsistency.ql b/csharp/ql/consistency-queries/SsaConsistency.ql index 003e7ddd5e94..152258220a7f 100644 --- a/csharp/ql/consistency-queries/SsaConsistency.ql +++ b/csharp/ql/consistency-queries/SsaConsistency.ql @@ -1,6 +1,7 @@ import csharp import semmle.code.csharp.dataflow.internal.SsaImpl as Impl import Impl::Consistency +import Impl::DataFlowIntegration::DfConsistency import Ssa query predicate localDeclWithSsaDef(LocalVariableDeclExpr d) { @@ -10,7 +11,7 @@ query predicate localDeclWithSsaDef(LocalVariableDeclExpr d) { exists(SsaExplicitWrite def | d = def.getDefinition().(AssignableDefinitions::LocalVariableDefinition).getDeclaration() | - not d = any(ForeachStmt fs).getVariableDeclExpr() and + not d = any(ForEachStmt fs).getVariableDeclExpr() and not d = any(SpecificCatchClause scc).getVariableDeclExpr() and not d.getVariable().getType() instanceof Struct and not d instanceof PatternExpr and diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_11/Program.cs b/csharp/ql/integration-tests/all-platforms/dotnet_11/Program.cs new file mode 100644 index 000000000000..bd44629f7e23 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_11/Program.cs @@ -0,0 +1 @@ +Console.WriteLine($"{string.Join(",", args)}"); diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_11/dotnet_build.csproj b/csharp/ql/integration-tests/all-platforms/dotnet_11/dotnet_build.csproj new file mode 100644 index 000000000000..5bf6c9b8cff2 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_11/dotnet_build.csproj @@ -0,0 +1,10 @@ + + + + Exe + net11.0 + enable + enable + + + diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_11/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_11/global.json new file mode 100644 index 000000000000..f79f89df7d1a --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_11/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "11.0.100-rc.1.26425.128" + } +} diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_11/test.py b/csharp/ql/integration-tests/all-platforms/dotnet_11/test.py new file mode 100644 index 000000000000..1f1fe52a4e5e --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_11/test.py @@ -0,0 +1,7 @@ +import pytest + +def test1(codeql, csharp): + codeql.database.create() + +def test2(codeql, csharp): + codeql.database.create(build_mode="none") 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 index c6361fe69c52..931f5f372d40 100644 --- 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 @@ -93,6 +93,7 @@ ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql ql/csharp/ql/src/Linq/BadMultipleIteration.ql ql/csharp/ql/src/Linq/MissedAllOpportunity.ql ql/csharp/ql/src/Linq/MissedCastOpportunity.ql +ql/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.ql ql/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql ql/csharp/ql/src/Linq/MissedSelectOpportunity.ql ql/csharp/ql/src/Linq/MissedWhereOpportunity.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 b944b848df8e..420c53f9f277 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 @@ -55,6 +55,7 @@ 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/MissedFirstOrDefaultOpportunity.ql ql/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql ql/csharp/ql/src/Linq/MissedSelectOpportunity.ql ql/csharp/ql/src/Linq/MissedWhereOpportunity.ql diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 78b2f677db3e..0ac8860a7ed0 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,27 @@ +## 7.4.1 + +### Minor Analysis Improvements + +* Avoid logging warnings when there are no explicit or inherited feeds to check for reachability. +* The subprocess for the NuGet CLI is now provided with the proxy and certificate environment variables needed to access private registries if any are configured. +* Added support for data flow through positional patterns in `is` expressions and `switch` cases. + +## 7.4.0 + +### Major Analysis Improvements + +* Fixed a false positive in `cs/web/xss` for ASP.NET Core Razor Pages/MVC views: `WriteLiteral` calls generated for tag helper attribute values (for example, `asp-for`) capture the value into an internal buffer instead of writing it directly to the response, so they are no longer treated as XSS sinks. + +### Bug Fixes + +* Fixed an issue where types for pattern expressions were not extracted correctly. + +## 7.3.1 + +### Minor Analysis Improvements + +* Private NuGet registries for which the "Replaces base" option is enabled in the organization-level private registry configuration now replace default NuGet feeds whenever dependencies are downloaded, including when default NuGet feeds are configured explicitly for a project. + ## 7.3.0 ### New Features diff --git a/csharp/ql/lib/Linq/Helpers.qll b/csharp/ql/lib/Linq/Helpers.qll index fcbc01c5e35d..1657e812c268 100644 --- a/csharp/ql/lib/Linq/Helpers.qll +++ b/csharp/ql/lib/Linq/Helpers.qll @@ -8,18 +8,48 @@ private import semmle.code.csharp.frameworks.system.collections.Generic as Gener private import semmle.code.csharp.frameworks.system.Collections as Collections //#################### PREDICATES #################### -private Stmt firstStmt(ForeachStmt fes) { +private Stmt firstStmt(ForEachStmt fes) { if fes.getBody() instanceof BlockStmt then result = fes.getBody().(BlockStmt).getStmt(0) else result = fes.getBody() } -private int numStmts(ForeachStmt fes) { +private int numStmts(ForEachStmt fes) { if fes.getBody() instanceof BlockStmt then result = count(fes.getBody().(BlockStmt).getAStmt()) else result = 1 } +private predicate returnsLoopVariable(ForEachStmt fes, Stmt s) { + exists(ReturnStmt ret | + ret = s.stripSingletonBlocks() and + ret.getExpr().stripImplicit().(VariableAccess).getTarget() = fes.getVariable() + ) +} + +private predicate hasNullDefault(Type t) { t.isRefType() or t instanceof NullableType } + +private predicate returnsDefaultValueAfterForeach(ForEachStmt fes) { + exists(BlockStmt enclosingBlock, int i, Type elementType, ReturnStmt ret | + enclosingBlock.getStmt(i) = fes and + enclosingBlock.getStmt(i + 1) = ret and + elementType = fes.getVariable().getType() + | + ret.getExpr().stripImplicit() instanceof NullLiteral and + hasNullDefault(elementType) + or + exists(DefaultValueExpr defaultValue | + defaultValue = ret.getExpr().stripImplicit() and + ( + defaultValue.getType() = elementType + or + hasNullDefault(elementType) and + hasNullDefault(defaultValue.getType()) + ) + ) + ) +} + private predicate terminatesCallable(Stmt s) { exists(Stmt stripped | stripped = s.stripSingletonBlocks() | stripped instanceof ReturnStmt @@ -53,12 +83,15 @@ predicate isIEnumerableType(ValueOrRefType t) { ) } +/** DEPRECATED: Use `ForEachStmtGenericEnumerable` instead. */ +deprecated class ForeachStmtGenericEnumerable = ForEachStmtGenericEnumerable; + /** * A class of foreach statements where the iterable expression * supports the use of the LINQ extension methods on `IEnumerable`. */ -class ForeachStmtGenericEnumerable extends ForeachStmt { - ForeachStmtGenericEnumerable() { +class ForEachStmtGenericEnumerable extends ForEachStmt { + ForEachStmtGenericEnumerable() { exists(ValueOrRefType t | t = this.getIterableExpr().getType() | t.getABaseType*().getUnboundDeclaration() instanceof GenericCollections::SystemCollectionsGenericIEnumerableTInterface or @@ -67,12 +100,15 @@ class ForeachStmtGenericEnumerable extends ForeachStmt { } } +/** DEPRECATED: Use `ForEachStmtEnumerable` instead. */ +deprecated class ForeachStmtEnumerable = ForEachStmtEnumerable; + /** * A class of foreach statements where the iterable expression * supports the use of the LINQ extension methods on `IEnumerable`. */ -class ForeachStmtEnumerable extends ForeachStmt { - ForeachStmtEnumerable() { +class ForEachStmtEnumerable extends ForEachStmt { + ForEachStmtEnumerable() { exists(ValueOrRefType t | t = this.getIterableExpr().getType() | t.getABaseType*() instanceof Collections::SystemCollectionsIEnumerableInterface or t.(ArrayType).getRank() = 1 @@ -80,28 +116,79 @@ class ForeachStmtEnumerable extends ForeachStmt { } } +bindingset[e] +private predicate acceptableForLinqCapture(Expr e) { + not exists(ParameterAccess pa, Parameter p | + p = pa.getTarget() and + pa = e.getAChildExpr*() + | + p.isOutOrRef() or p.isIn() or p.isReadonlyRef() + ) +} + +private signature predicate linqCandidateSig(Stmt s, Expr e); + +private module LinqFilterOpportunity { + predicate missed(ForEachStmtGenericEnumerable fes, Stmt s) { + s = firstStmt(fes) and + // The linq candidate expression accesses the loop variable, and the + // candidate doesn't access an in, out, or ref parameter. + exists(Expr candidate | linqCandidate(s, candidate) | + fes.getVariable().getAnAccess() = candidate.getAChildExpr*() and + acceptableForLinqCapture(candidate) + ) + } +} + +private module LinqMapOpportunity { + predicate missed(ForEachStmt fes, Stmt s) { + s = firstStmt(fes) and + // The linq candidate (and only the candidate) expression accesses the loop variable and the + // candidate doesn't access an in, out, or ref parameter. + exists(Expr candidate | linqCandidate(s, candidate) | + forex(VariableAccess va | va = fes.getVariable().getAnAccess() | + va = candidate.getAChildExpr*() + ) and + acceptableForLinqCapture(candidate) + ) + } +} + +private predicate linqAllCandidate(Stmt s, Expr e) { + s = + any(IfStmt is | + e = is.getCondition() and + not exists(is.getElse()) and // The then case of the if assigns false to something and breaks out of the loop. + exists(Assignment a, BoolLiteral bl | + a = is.getThen().getAChild*() and + bl = a.getRightOperand() and + bl.toString() = "false" + ) and + is.getThen().getAChild*() instanceof BreakStmt + ) +} + /** * Holds if `foreach` statement `fes` could be converted to a `.All()` call. - * That is, the `ForeachStmt` contains a single `if` with a condition that + * That is, the `ForEachStmt` contains a single `if` with a condition that * accesses the loop variable and with a body that assigns `false` to a variable * and `break`s out of the `foreach`. */ -predicate missedAllOpportunity(ForeachStmtGenericEnumerable fes) { - exists(IfStmt is | - // The loop contains an if statement with no else case, and nothing else. - is = firstStmt(fes) and - numStmts(fes) = 1 and - not exists(is.getElse()) and - // The if statement accesses the loop variable. - is.getCondition().getAChildExpr*() = fes.getVariable().getAnAccess() and - // The then case of the if assigns false to something and breaks out of the loop. - exists(Assignment a, BoolLiteral bl | - a = is.getThen().getAChild*() and - bl = a.getRightOperand() and - bl.toString() = "false" - ) and - is.getThen().getAChild*() instanceof BreakStmt - ) +predicate missedAllOpportunity(ForEachStmtGenericEnumerable fes) { + // The loop contains an if statement with no else case, and nothing else. + LinqFilterOpportunity::missed(fes, _) and + numStmts(fes) = 1 +} + +private predicate linqCastCandidate(Stmt s, Expr e) { + s = + any(LocalVariableDeclStmt lvds | + exists(CastExpr ce | + ce = lvds.getAVariableDeclExpr().getInitializer() and + e = ce.getExpr() and + e instanceof LocalVariableAccess + ) + ) } /** @@ -110,15 +197,19 @@ predicate missedAllOpportunity(ForeachStmtGenericEnumerable fes) { * block, the access is a cast, and the first statement is a * local variable declaration statement `s`. */ -predicate missedCastOpportunity(ForeachStmtEnumerable fes, LocalVariableDeclStmt s) { - s = firstStmt(fes) and - forex(VariableAccess va | va = fes.getVariable().getAnAccess() | - va = s.getAVariableDeclExpr().getAChildExpr*() - ) and - exists(CastExpr ce | - ce = s.getAVariableDeclExpr().getInitializer() and - ce.getExpr() = fes.getVariable().getAnAccess() - ) +predicate missedCastOpportunity(ForEachStmtEnumerable fes, LocalVariableDeclStmt s) { + LinqMapOpportunity::missed(fes, s) +} + +private predicate linqOfTypeCandidate(Stmt s, Expr e) { + s = + any(LocalVariableDeclStmt lvds | + exists(AsExpr ae | + ae = lvds.getAVariableDeclExpr().getInitializer() and + e = ae.getExpr() and + e instanceof LocalVariableAccess + ) + ) } /** @@ -127,15 +218,17 @@ predicate missedCastOpportunity(ForeachStmtEnumerable fes, LocalVariableDeclStmt * block, the access is a cast with the `as` operator, and the first statement * is a local variable declaration statement `s`. */ -predicate missedOfTypeOpportunity(ForeachStmtEnumerable fes, LocalVariableDeclStmt s) { - s = firstStmt(fes) and - forex(VariableAccess va | va = fes.getVariable().getAnAccess() | - va = s.getAVariableDeclExpr().getAChildExpr*() - ) and - exists(AsExpr ae | - ae = s.getAVariableDeclExpr().getInitializer() and - ae.getExpr() = fes.getVariable().getAnAccess() - ) +predicate missedOfTypeOpportunity(ForEachStmtEnumerable fes, LocalVariableDeclStmt s) { + LinqMapOpportunity::missed(fes, s) +} + +private predicate linqSelectCandidate(Stmt s, Expr e) { + s = + any(LocalVariableDeclStmt lvds | + e = lvds.getAVariableDeclExpr().getInitializer() and + not e instanceof Cast and + not e.getAChildExpr*() instanceof AwaitExpr + ) } /** @@ -145,13 +238,25 @@ predicate missedOfTypeOpportunity(ForeachStmtEnumerable fes, LocalVariableDeclSt * local variable declaration statement `s`, and the initializer does not * contain an `await` expression (since `Select` does not support async lambdas). */ -predicate missedSelectOpportunity(ForeachStmtGenericEnumerable fes, LocalVariableDeclStmt s) { - s = firstStmt(fes) and - forex(VariableAccess va | va = fes.getVariable().getAnAccess() | - va = s.getAVariableDeclExpr().getAChildExpr*() - ) and - not s.getAVariableDeclExpr().getInitializer() instanceof Cast and - not s.getAVariableDeclExpr().getInitializer().getAChildExpr*() instanceof AwaitExpr +predicate missedSelectOpportunity(ForEachStmtGenericEnumerable fes, LocalVariableDeclStmt s) { + LinqMapOpportunity::missed(fes, s) +} + +private predicate linqWhereCandidateCase1(Stmt s, Expr e) { + s = + any(IfStmt is | + e = is.getCondition() and + is.getThen() instanceof ContinueStmt + ) +} + +private predicate linqWhereCandidateCase2(Stmt s, Expr e) { + s = + any(IfStmt is | + e = is.getCondition() and + not exists(is.getElse()) and + not terminatesCallable(is.getThen()) + ) } /** @@ -160,21 +265,38 @@ predicate missedSelectOpportunity(ForeachStmtGenericEnumerable fes, LocalVariabl * variable, and the body of the `if` is either a `continue` or there's nothing * else in the loop than the `if`. */ -predicate missedWhereOpportunity(ForeachStmtGenericEnumerable fes, IfStmt is) { - // The very first thing the foreach loop does is test its iteration variable. - is = firstStmt(fes) and - exists(VariableAccess va | - va.getTarget() = fes.getVariable() and - va = is.getCondition().getAChildExpr*() - ) and - // It then either (a) continues, or (b) performs the entire body of the loop within the condition. - ( - is.getThen() instanceof ContinueStmt - or - not exists(is.getElse()) and - numStmts(fes) = 1 and - not terminatesCallable(is.getThen()) - ) +predicate missedWhereOpportunity(ForEachStmtGenericEnumerable fes, IfStmt is) { + // The body of the `if` is a continue. + LinqFilterOpportunity::missed(fes, is) + or + // There's nothing else in the loop than the `if`. + LinqFilterOpportunity::missed(fes, is) and + numStmts(fes) = 1 +} + +private predicate linqFirstOrDefaultCandidate(Stmt s, Expr e) { + s = + any(IfStmt is | + e = is.getCondition() and + not exists(is.getElse()) and + not e.getAChildExpr*() instanceof AwaitExpr + ) +} + +/** + * Holds if `foreach` statement `fes` could be converted to a `.FirstOrDefault()` call. + * That is, the loop contains a single `if` statement that accesses the loop variable, + * returns the loop variable when the condition matches, and is followed by a default return. + */ +predicate missedFirstOrDefaultOpportunity(ForEachStmtGenericEnumerable fes, IfStmt is) { + // The loop only checks whether the current element is the first match. + LinqFilterOpportunity::missed(fes, is) and + numStmts(fes) = 1 and + not fes.isAsync() and + not fes.getVariable().isCaptured() and + returnsLoopVariable(fes, is.getThen()) and + fes.getElementType() = fes.getVariable().getType() and + returnsDefaultValueAfterForeach(fes) } //#################### CLASSES #################### diff --git a/csharp/ql/lib/change-notes/released/7.3.1.md b/csharp/ql/lib/change-notes/released/7.3.1.md new file mode 100644 index 000000000000..07bdb3c1b643 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/7.3.1.md @@ -0,0 +1,5 @@ +## 7.3.1 + +### Minor Analysis Improvements + +* Private NuGet registries for which the "Replaces base" option is enabled in the organization-level private registry configuration now replace default NuGet feeds whenever dependencies are downloaded, including when default NuGet feeds are configured explicitly for a project. diff --git a/csharp/ql/lib/change-notes/released/7.4.0.md b/csharp/ql/lib/change-notes/released/7.4.0.md new file mode 100644 index 000000000000..232bafc7d9ee --- /dev/null +++ b/csharp/ql/lib/change-notes/released/7.4.0.md @@ -0,0 +1,9 @@ +## 7.4.0 + +### Major Analysis Improvements + +* Fixed a false positive in `cs/web/xss` for ASP.NET Core Razor Pages/MVC views: `WriteLiteral` calls generated for tag helper attribute values (for example, `asp-for`) capture the value into an internal buffer instead of writing it directly to the response, so they are no longer treated as XSS sinks. + +### Bug Fixes + +* Fixed an issue where types for pattern expressions were not extracted correctly. diff --git a/csharp/ql/lib/change-notes/released/7.4.1.md b/csharp/ql/lib/change-notes/released/7.4.1.md new file mode 100644 index 000000000000..94e6284215a8 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/7.4.1.md @@ -0,0 +1,7 @@ +## 7.4.1 + +### Minor Analysis Improvements + +* Avoid logging warnings when there are no explicit or inherited feeds to check for reachability. +* The subprocess for the NuGet CLI is now provided with the proxy and certificate environment variables needed to access private registries if any are configured. +* Added support for data flow through positional patterns in `is` expressions and `switch` cases. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 2b9b871fffa7..da28a63a9be9 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.3.0 +lastReleaseVersion: 7.4.1 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 109afc454092..f7419fae9ac7 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 7.3.0 +version: 7.4.1 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/lib/semmle/code/csharp/Assignable.qll b/csharp/ql/lib/semmle/code/csharp/Assignable.qll index d98d78331c83..b4014f09f5ce 100644 --- a/csharp/ql/lib/semmle/code/csharp/Assignable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Assignable.qll @@ -277,15 +277,28 @@ module AssignableInternal { def = TParameterDefaultDefinition(_, result) } - /** A local variable declaration at the top-level of a pattern. */ - class TopLevelPatternDecl extends LocalVariableDeclExpr { + /** A pattern containing a local variable declaration. */ + class LocalVariablePatternDecl extends LocalVariableDeclExpr { private PatternMatch pm; - TopLevelPatternDecl() { this = pm.getPattern().(BindingPatternExpr).getVariableDeclExpr() } + LocalVariablePatternDecl() { + exists(BindingPatternExpr bpe | + this = bpe.getVariableDeclExpr() and pm = bpe.getPatternMatch() + ) + } + + /** Holds if the local variable definition is at the top level of the pattern. */ + predicate isTopLevel() { this = pm.getPattern().(BindingPatternExpr).getVariableDeclExpr() } + /** Gets the pattern match that this local variable declaration (pattern) belongs to. */ PatternMatch getMatch() { result = pm } } + /** A local variable declaration at the top-level of a pattern. */ + class TopLevelPatternDecl extends LocalVariablePatternDecl { + TopLevelPatternDecl() { this.isTopLevel() } + } + cached private module Cached { cached @@ -305,7 +318,7 @@ module AssignableInternal { TLocalVariableDefinition(LocalVariableDeclExpr lvde) { not lvde.hasInitializer() and not exists(getTupleSource(TTupleAssignmentDefinition(_, lvde))) and - not lvde instanceof TopLevelPatternDecl and + not lvde instanceof LocalVariablePatternDecl and not lvde.isOutArgument() } or TImplicitParameterDefinition(Parameter p) { @@ -324,7 +337,7 @@ module AssignableInternal { default = p.getDefaultValue() } or TAddressOfDefinition(AddressOfExpr aoe) or - TPatternDefinition(TopLevelPatternDecl tlpd) or + TPatternDefinition(LocalVariablePatternDecl lvpd) or TAssignOperationDefinition(AssignOperation ao) { ao instanceof AssignCallExpr and not ao instanceof CompoundAssignmentOperatorCall or @@ -737,24 +750,31 @@ module AssignableDefinitions { } /** - * A local variable definition in a pattern, for example `x is int i`. + * A local variable definition in a pattern, for example `int i` in `x is int i`. */ class PatternDefinition extends AssignableDefinition, TPatternDefinition { - TopLevelPatternDecl tlpd; + LocalVariablePatternDecl lvpd; - PatternDefinition() { this = TPatternDefinition(tlpd) } + PatternDefinition() { this = TPatternDefinition(lvpd) } /** Gets the element matches against this pattern. */ - PatternMatch getMatch() { result = tlpd.getMatch() } + PatternMatch getMatch() { result = lvpd.getMatch() } /** Gets the underlying local variable declaration. */ - LocalVariableDeclExpr getDeclaration() { result = tlpd } - - override Expr getSource() { result = this.getMatch().getExpr() } + LocalVariableDeclExpr getDeclaration() { result = lvpd } override string toString() { result = this.getDeclaration().toString() } } + /** + * A local variable definition at the top level of a pattern. + */ + class TopLevelPatternDefinition extends PatternDefinition { + TopLevelPatternDefinition() { lvpd.isTopLevel() } + + override Expr getSource() { result = this.getMatch().getExpr() } + } + /** * An initializer definition for a field or a property, for example * line 2 in diff --git a/csharp/ql/lib/semmle/code/csharp/Stmt.qll b/csharp/ql/lib/semmle/code/csharp/Stmt.qll index 3be818e43a50..ebf0e354b9bc 100644 --- a/csharp/ql/lib/semmle/code/csharp/Stmt.qll +++ b/csharp/ql/lib/semmle/code/csharp/Stmt.qll @@ -305,7 +305,7 @@ class DefaultCase extends CaseStmt, LabeledStmt { * * Either a `while` statement (`WhileStmt`), a `do`-`while` statement * (`DoStmt`), a `for` statement (`ForStmt`), or a `foreach` statement - * (`ForeachStmt`). + * (`ForEachStmt`). */ class LoopStmt extends Stmt, @loop_stmt { /** Gets the body of this loop statement. */ @@ -422,6 +422,9 @@ class ForStmt extends LoopStmt, @for_stmt { override string getAPrimaryQlClass() { result = "ForStmt" } } +/** DEPRECATED: Use `ForEachStmt` instead. */ +deprecated class ForeachStmt = ForEachStmt; + /** * A `foreach` loop, for example * @@ -431,7 +434,7 @@ class ForStmt extends LoopStmt, @for_stmt { * } * ``` */ -class ForeachStmt extends LoopStmt, @foreach_stmt { +class ForEachStmt extends LoopStmt, @foreach_stmt { /** * Gets the local variable of this `foreach` loop, if any. * @@ -564,7 +567,7 @@ class ForeachStmt extends LoopStmt, @foreach_stmt { override string toString() { result = "foreach (... ... in ...) ..." } - override string getAPrimaryQlClass() { result = "ForeachStmt" } + override string getAPrimaryQlClass() { result = "ForEachStmt" } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraph.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraph.qll index b30646466a57..60051b7e6c3c 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraph.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraph.qll @@ -162,6 +162,8 @@ module Ast implements AstSig { class Stmt = CS::Stmt; + class LabeledStmt = CS::LabelStmt; + class Expr = CS::Expr; class BlockStmt = CS::BlockStmt; @@ -188,9 +190,9 @@ module Ast implements AstSig { AstNode getUpdate(int index) { result = super.getUpdate(index) } } - final private class FinalForeachStmt = CS::ForeachStmt; + final private class FinalForEachStmt = CS::ForEachStmt; - class ForEachStmt extends FinalForeachStmt { + class ForEachStmt extends FinalForEachStmt { Expr getVariable() { result = this.getVariableDeclExpr() or result = this.getVariableDeclTuple() } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 1cd9c71acfc9..4b57930bc378 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -110,13 +110,13 @@ private predicate nonNullDef(SsaExplicitWrite def) { def.getValue() instanceof NonNullExpr or exists(AssignableDefinition ad | ad = def.getDefinition() | - ad instanceof AssignableDefinitions::PatternDefinition + ad instanceof AssignableDefinitions::TopLevelPatternDefinition or ad = any(AssignableDefinitions::LocalVariableDefinition d | d.getExpr() = any(SpecificCatchClause scc).getVariableDeclExpr() or - d.getExpr() = any(ForeachStmt fs).getAVariableDeclExpr() + d.getExpr() = any(ForEachStmt fs).getAVariableDeclExpr() ) ) } @@ -306,7 +306,7 @@ class Dereference extends G::DereferenceableExpr { or this = any(LockStmt stmt).getExpr() or - this = any(ForeachStmt stmt).getIterableExpr() + this = any(ForEachStmt stmt).getIterableExpr() or exists(ExtensionMethodCall emc, Parameter p | this = emc.getArgumentForParameter(p) and diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index d114101a7a38..a829eafa51cd 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -560,10 +560,22 @@ module LocalFlow { or exists(AssignExpr ae | ae.getLeftOperand().(TupleExpr) = e2 and ae.getRightOperand() = e1) or - exists(ControlFlowElement cfe | cfe = e2.(TupleExpr).(PatternExpr).getPatternMatch() | - cfe.(IsExpr).getExpr() = e1 - or - exists(Switch sw | sw.getACase() = cfe and sw.getExpr() = e1) + exists(IsExpr e | + e1 = e.getExpr() and + e2 = e.getPattern() and + ( + e2 instanceof TuplePatternExpr or + e2 instanceof RecursivePatternExpr + ) + ) + or + exists(Switch sw | + e1 = sw.getExpr() and + e2 = sw.getACase().getPattern() and + ( + e2 instanceof TuplePatternExpr or + e2 instanceof RecursivePatternExpr + ) ) } @@ -2202,12 +2214,46 @@ predicate storeStep(Node node1, ContentSet c, Node node2) { storeStepDelegateCall(node1, c, node2) } +private predicate readStepPattern(Node node1, Content c, Node node2) { + exists(RecursivePatternExpr pattern, PatternExpr item, int i | + node1.asExpr() = pattern and + item = pattern.getPositionalPatterns().getPattern(i) and + c.(FieldContent).getField() = + pattern.getType().(TupleType).getElement(i).getUnboundDeclaration() + | + // item = { ... } in node1 = (var ..., { ... }) + item = node2.asExpr().(RecursivePatternExpr) + or + // item = (...,...) in node1 = (var ..., (..., ...)) + item = node2.asExpr().(TuplePatternExpr) + or + // item = variable in node1 = (..., variable, ...) in a case/is (var ..., var ...) + exists(AssignableDefinitions::PatternDefinition lvd | + node2.(AssignableDefinitionNode).getDefinition() = lvd and + item.(BindingPatternExpr).getVariableDeclExpr() = lvd.getDeclaration() + ) + ) + or + // item = variable in node1 = (..., variable, ...) in a case/is var (..., ...) + exists(TuplePatternExpr pattern, PatternExpr item, int i | + node1.asExpr() = pattern and + c.(FieldContent).getField() = + pattern.getType().(TupleType).getElement(i).getUnboundDeclaration() and + item = pattern.getArgument(i) + | + exists(AssignableDefinitions::PatternDefinition lvd | + node2.(AssignableDefinitionNode).getDefinition() = lvd and + item = lvd.getDeclaration() + ) + ) +} + private predicate readContentStep(Node node1, Content c, Node node2) { arrayRead(node1.asExpr(), node2.asExpr()) and c instanceof ElementContent or exists( - ForeachStmt fs, SsaExplicitWrite def, AssignableDefinitions::LocalVariableDefinition defTo + ForEachStmt fs, SsaExplicitWrite def, AssignableDefinitions::LocalVariableDefinition defTo | node1.asExpr() = fs.getIterableExpr() and defTo.getDeclaration() = fs.getVariableDeclExpr() and @@ -2240,15 +2286,10 @@ private predicate readContentStep(Node node1, Content c, Node node2) { node2.(AssignableDefinitionNode).getDefinition() = tad and tad.getLeaf() = item ) - or - // item = variable in node1 = (..., variable, ...) in a case/is var (..., ...) - isPatternExprDescendant(te) and - exists(AssignableDefinitions::LocalVariableDefinition lvd | - node2.(AssignableDefinitionNode).getDefinition() = lvd and - lvd.getDeclaration() = item - ) ) or + readStepPattern(node1, c, node2) + or VariableCapture::readStep(node1, c, node2) } @@ -2677,7 +2718,7 @@ class CastNode extends Node { this.asExpr() instanceof Cast or this.(AssignableDefinitionNode).getDefinition() instanceof - AssignableDefinitions::PatternDefinition + AssignableDefinitions::TopLevelPatternDefinition } } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll index 857212f90aac..53e6d359c212 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll @@ -547,6 +547,13 @@ class PositionalPatternExpr extends PatternExpr, @positional_pattern_expr { override string getAPrimaryQlClass() { result = "PositionalPatternExpr" } } +/** + * A tuple pattern. For example, `var (x, y)`. + */ +class TuplePatternExpr extends TupleExpr, PatternExpr { + override string getAPrimaryQlClass() { result = "TuplePatternExpr" } +} + /** A list pattern. For example `[1, 2, int y]` in `x is [1, 2, int y]`. */ class ListPatternExpr extends PatternExpr, @list_pattern_expr { override string toString() { result = "[ ... ]" } @@ -1107,7 +1114,7 @@ class QualifiableExpr extends Expr, @qualifiable_expr { private Expr getAnAssignOrForeachChild() { result = any(AssignExpr e).getLeftOperand() or - result = any(ForeachStmt fs).getVariableDeclTuple() + result = any(ForEachStmt fs).getVariableDeclTuple() or result = getAnAssignOrForeachChild().getAChildExpr() } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Microsoft.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Microsoft.qll index 261b15cd4440..f8e98f423a3e 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/Microsoft.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Microsoft.qll @@ -9,3 +9,16 @@ class MicrosoftNamespace extends Namespace { this.hasName("Microsoft") } } + +/** The `Microsoft.Net.Http.Headers.HeaderNames` class. */ +class MicrosoftNetHttpHeadersHeaderNames extends Class { + MicrosoftNetHttpHeadersHeaderNames() { + this.hasFullyQualifiedName("Microsoft.Net.Http.Headers", "HeaderNames") + } + + /** Gets the `XFrameOptions` field. */ + Field getXFrameOptionsField() { result = this.getField("XFrameOptions") } + + /** Gets the `ContentSecurityPolicy` field. */ + Field getContentSecurityPolicyField() { result = this.getField("ContentSecurityPolicy") } +} diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/AspNetCore.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/AspNetCore.qll index abdd81646828..1f5060a6ce06 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/AspNetCore.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/AspNetCore.qll @@ -144,6 +144,15 @@ class ValidateAntiForgeryAttribute extends Attribute { } } +/** + * The `Microsoft.AspNetCore.Mvc.AutoValidateAntiforgeryTokenAttribute` class. + */ +class AutoValidateAntiforgeryTokenAttribute extends Class { + AutoValidateAntiforgeryTokenAttribute() { + this.hasFullyQualifiedName("Microsoft.AspNetCore.Mvc", "AutoValidateAntiforgeryTokenAttribute") + } +} + /** * A class that has a name like `[Auto...]Validate[...]Anti[Ff]orgery[...Token]` and implements `IFilterMetadata` interface * This class can be added to a collection of global `MvcOptions.Filters` collection. @@ -164,8 +173,8 @@ class MicrosoftAspNetCoreMvcFilterCollection extends Class { /** Gets an `Add` method. */ Method getAddMethod() { - result = this.getAMethod("Add") or - result = this.getABaseType().getAMethod("Add") + result = this.getAMethod(["Add", "Add`1"]) or + result = this.getABaseType().getAMethod(["Add", "Add`1"]) } } @@ -230,11 +239,20 @@ private Assembly getAnAssemblyFor(Type type) { result = getACompilationFor(type).getOutputAssembly() } -private predicate isMicrosoftAspNetCoreMvcRegistration(MethodCall call) { - call.getTarget() - .hasFullyQualifiedName("Microsoft.Extensions.DependencyInjection", - ["MvcServiceCollectionExtensions", "MvcCoreServiceCollectionExtensions"], - ["AddControllers", "AddControllersWithViews", "AddMvc", "AddMvcCore"]) +/** + * A method that is a registration of an ASP.NET Core MVC service, i.e. `AddControllers`, `AddControllersWithViews`, `AddMvc`, or `AddMvcCore`. + */ +class MicrosoftAspNetCoreMvcRegistration extends Method { + MicrosoftAspNetCoreMvcRegistration() { + this.hasFullyQualifiedName("Microsoft.Extensions.DependencyInjection", + ["MvcServiceCollectionExtensions", "MvcCoreServiceCollectionExtensions"], + ["AddControllers", "AddControllersWithViews", "AddMvc", "AddMvcCore"]) + } +} + +/** Holds if the method call is a registration of an ASP.NET Core MVC service. */ +predicate isMicrosoftAspNetCoreMvcRegistration(MethodCall call) { + call.getTarget() instanceof MicrosoftAspNetCoreMvcRegistration } private predicate isMicrosoftAspNetCoreMvcApplication(Compilation compilation) { @@ -473,6 +491,16 @@ class MicrosoftAspNetCoreMvcRazorPageBase extends Class { /** Gets the `WriteLiteral` method. */ Method getWriteLiteralMethod() { result = this.getAMethod("WriteLiteral") } + + /** Gets the `BeginWriteTagHelperAttribute` method. */ + Method getBeginWriteTagHelperAttributeMethod() { + result = this.getAMethod("BeginWriteTagHelperAttribute") + } + + /** Gets the `EndWriteTagHelperAttribute` method. */ + Method getEndWriteTagHelperAttributeMethod() { + result = this.getAMethod("EndWriteTagHelperAttribute") + } } /** A class deriving from `Microsoft.AspNetCore.Http.HttpRequest`, implements `HttpRequest` in ASP.NET Core. */ @@ -547,6 +575,19 @@ class MicrosoftAspNetCoreHttpHeaderDictionaryExtensions extends RefType { Method getSetCommaSeparatedValuesMethod() { result = this.getAMethod("SetCommaSeparatedValues") } } +/** The `Microsoft.AspNetCore.Http.IHeaderDictionary` interface. */ +class MicrosoftAspNetCoreHttpIHeaderDictionary extends RefType { + MicrosoftAspNetCoreHttpIHeaderDictionary() { + this.hasFullyQualifiedName("Microsoft.AspNetCore.Http", "IHeaderDictionary") + } + + /** Gets the `XFrameOptions` property. */ + Property getXFrameOptionsProperty() { result = this.getProperty("XFrameOptions") } + + /** Gets the `ContentSecurityPolicy` property. */ + Property getContentSecurityPolicyProperty() { result = this.getProperty("ContentSecurityPolicy") } +} + /** The `Microsoft.AspNetCore.Http.CookieOptions` class. */ class MicrosoftAspNetCoreHttpCookieOptions extends RefType { MicrosoftAspNetCoreHttpCookieOptions() { diff --git a/csharp/ql/lib/semmle/code/csharp/security/MissingXFrameOptionsQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/MissingXFrameOptionsQuery.qll new file mode 100644 index 000000000000..41192823dafb --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/security/MissingXFrameOptionsQuery.qll @@ -0,0 +1,112 @@ +/** Provides predicates for recognizing clickjacking-related response-header configuration. */ + +import csharp +import semmle.code.csharp.dataflow.DataFlow +import semmle.code.csharp.frameworks.microsoft.AspNetCore +import semmle.code.csharp.frameworks.system.Web + +/** Holds if `name` is the `X-Frame-Options` header name, ignoring case. */ +bindingset[name] +predicate isXFrameOptionsText(string name) { name.toLowerCase() = "x-frame-options" } + +/** Holds if `name` is the enforced `Content-Security-Policy` header name, ignoring case. */ +bindingset[name] +predicate isContentSecurityPolicyText(string name) { + name.toLowerCase() = "content-security-policy" +} + +/** + * Holds if `value` contains a `frame-ancestors` directive at the start of a CSP policy or + * after a directive or policy separator. + */ +bindingset[value] +predicate containsFrameAncestorsDirective(string value) { + value.regexpMatch("(?is)(^|.*[;,])\\s*frame-ancestors(\\s|;|$).*") +} + +private predicate isXFrameOptionsHeaderNameExpr(Expr name) { + isXFrameOptionsText(name.stripImplicit().getValue()) + or + name.stripImplicit().(FieldAccess).getTarget() = + any(MicrosoftNetHttpHeadersHeaderNames f).getXFrameOptionsField() +} + +private predicate isContentSecurityPolicyHeaderNameExpr(Expr name) { + isContentSecurityPolicyText(name.stripImplicit().getValue()) or + name.stripImplicit().(FieldAccess).getTarget() = + any(MicrosoftNetHttpHeadersHeaderNames f).getContentSecurityPolicyField() +} + +private predicate containsFrameAncestorsDirectiveExpr(Expr value) { + containsFrameAncestorsDirective(value.stripImplicit().getValue()) +} + +private predicate isDirectResponseHeadersAccess(Expr expr) { + exists(PropertyAccess headers, MicrosoftAspNetCoreHttpHttpResponse response | + expr.stripImplicit() = headers and headers.getProperty() = response.getHeadersProperty() + ) +} + +private predicate isCallOnResponseHeadersAccess(Call call) { + exists(Expr qualifier | + call.(MethodCall).getQualifier() = qualifier or + call.(ExtensionMethodCall).getArgument(0) = qualifier or + call.(AccessorCall).getQualifier() = qualifier + | + exists(Expr directAccess | + isDirectResponseHeadersAccess(directAccess) and + DataFlow::localExprFlow(directAccess, qualifier.stripImplicit()) + ) + ) +} + +private predicate isClickjackingHeaderCall(MethodCall call) { + ( + call.getTarget() = any(SystemWebHttpResponseClass r).getAppendHeaderMethod() or + call.getTarget() = any(SystemWebHttpResponseClass r).getAddHeaderMethod() + ) and + ( + isXFrameOptionsHeaderNameExpr(call.getArgumentForName("name")) + or + isContentSecurityPolicyHeaderNameExpr(call.getArgumentForName("name")) and + containsFrameAncestorsDirectiveExpr(call.getArgumentForName("value")) + ) +} + +private predicate isClickjackingHeaderDictionaryLikeWrite(Call call) { + ( + call.getTarget().hasUndecoratedName(["Append", "Add", "TryAdd"]) + or + call.(IndexerCall).getTarget() instanceof Setter + ) and + ( + isXFrameOptionsHeaderNameExpr(call.getArgumentForName("key")) + or + isContentSecurityPolicyHeaderNameExpr(call.getArgumentForName("key")) and + containsFrameAncestorsDirectiveExpr(call.getArgumentForName("value")) + ) +} + +private predicate isClickjackingPropertyWrite(Call c) { + c.getTarget() instanceof Setter and + ( + c.(PropertyCall).getProperty() = + any(MicrosoftAspNetCoreHttpIHeaderDictionary dic).getXFrameOptionsProperty() + or + c.(PropertyCall).getProperty() = + any(MicrosoftAspNetCoreHttpIHeaderDictionary dic).getContentSecurityPolicyProperty() and + containsFrameAncestorsDirectiveExpr(c.getArgumentForName("value")) + ) +} + +/** Gets an expression that configures a clickjacking-related response header. */ +Call getAClickjackingHeaderWrite() { + isClickjackingHeaderCall(result) + or + isCallOnResponseHeadersAccess(result) and + ( + isClickjackingHeaderDictionaryLikeWrite(result) + or + isClickjackingPropertyWrite(result) + ) +} diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/Html.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/Html.qll index 362a993e5321..bcc36a54abad 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/Html.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/Html.qll @@ -177,14 +177,94 @@ class MicrosoftAspNetCoreMvcHtmlHelperRawSink extends AspNetCoreHtmlSink { } } +/** + * Holds if `writeLiteral` is a call to `RazorPageBase.WriteLiteral` whose argument is captured + * between a matching pair of `BeginWriteTagHelperAttribute()`/`EndWriteTagHelperAttribute()` + * calls, in the same basic block, with no other such calls in between. + * + * The Razor source generator emits this bracketing for every literal or expression segment of an + * HTML attribute value on an element that also carries a tag helper (for example `asp-for`). Such + * a `WriteLiteral` call does not write directly to the response: `WriteLiteral` appends to an + * internal string buffer, and `EndWriteTagHelperAttribute()` returns that buffer as a tag helper + * attribute value rather than as page markup. This is therefore not a direct-write sink, unlike an + * unbracketed `WriteLiteral` call, whose argument is written straight to the response. + * + * Because a basic block cannot contain a branch, requiring `beginCall`, `writeLiteral`, and + * `endCall` to appear (in that order) in the same basic block, with no other + * `Begin`/`EndWriteTagHelperAttribute` call strictly between `beginCall` and `endCall`, + * guarantees that `beginCall`/`endCall` are the immediately enclosing bracket around + * `writeLiteral` on every path that reaches it (that is, the bracket opened by `beginCall` is + * still open, and not yet closed by some other `endCall`, at the point `writeLiteral` executes). + * No other such call can coincide with `writeLiteral` itself, so checking the whole open interval + * between `beginCall` and `endCall` is equivalent to checking it on both sides of `writeLiteral` + * separately. + * + * `beginCall`, `writeLiteral`, and `endCall` are additionally required to have an implicit `this` + * qualifier, which is how the Razor source generator always emits these calls. Combined with all + * three calls being required to lie in the same basic block (and hence the same method body), + * this ensures all three calls act on the same page instance, so a bracket on one page cannot be + * mistaken for a bracket around a `WriteLiteral` call on a different page. + * + * The `WriteLiteral`/`BeginWriteTagHelperAttribute`/`EndWriteTagHelperAttribute` methods are + * looked up via `any(MicrosoftAspNetCoreMvcRazorPageBase page).get...Method()` rather than + * through a single shared `page` variable bound across `writeLiteral`, `beginCall`, and + * `endCall`. These methods are inherited (not overridden) from the shared `RazorPageBase` + * framework type, so every generated Razor page class resolves to the same handful of `Method` + * entities; binding a single `page` variable across all three calls would force the join to be + * repeated once per generated page class in the codebase, rather than once per distinct `Method`, + * causing severe performance degradation on codebases with many Razor views. + */ +private predicate isBracketedForTagHelperAttribute(Call writeLiteral) { + exists(MethodCall beginCall, MethodCall endCall, BasicBlock bb, int i, int j, int k | + bb = writeLiteral.getBasicBlock() and + writeLiteral = any(MicrosoftAspNetCoreMvcRazorPageBase page).getWriteLiteralMethod().getACall() and + beginCall = + any(MicrosoftAspNetCoreMvcRazorPageBase page) + .getBeginWriteTagHelperAttributeMethod() + .getACall() and + endCall = + any(MicrosoftAspNetCoreMvcRazorPageBase page).getEndWriteTagHelperAttributeMethod().getACall() and + writeLiteral.(QualifiableExpr).hasImplicitThisQualifier() and + beginCall.hasImplicitThisQualifier() and + endCall.hasImplicitThisQualifier() and + bb.getNode(i) = beginCall.getControlFlowNode() and + bb.getNode(j) = writeLiteral.getControlFlowNode() and + bb.getNode(k) = endCall.getControlFlowNode() and + i < j and + j < k and + not exists(int l, Call other | + ( + other = + any(MicrosoftAspNetCoreMvcRazorPageBase page) + .getBeginWriteTagHelperAttributeMethod() + .getACall() or + other = + any(MicrosoftAspNetCoreMvcRazorPageBase page) + .getEndWriteTagHelperAttributeMethod() + .getACall() + ) and + bb.getNode(l) = other.getControlFlowNode() and + i < l and + l < k + ) + ) +} + /** * An expression that is used as an argument to `Page.WriteLiteral` in ASP.NET 6.0 razor page, typically in * a `.cshtml` file. + * + * `WriteLiteral` calls whose argument is captured for a tag helper attribute value (see + * `isBracketedForTagHelperAttribute`) are excluded, since such calls buffer the value as a tag + * helper attribute rather than writing it directly to the response. */ class MicrosoftAspNetRazorPageWriteLiteralSink extends AspNetCoreHtmlSink { MicrosoftAspNetRazorPageWriteLiteralSink() { - this.getExpr() = - any(MicrosoftAspNetCoreMvcRazorPageBase h).getWriteLiteralMethod().getACall().getAnArgument() + exists(Call writeLiteral | + writeLiteral = any(MicrosoftAspNetCoreMvcRazorPageBase h).getWriteLiteralMethod().getACall() and + this.getExpr() = writeLiteral.getAnArgument() and + not isBracketedForTagHelperAttribute(writeLiteral) + ) } } diff --git a/csharp/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/csharp/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 35901ee64012..1c5be4160ae0 100644 --- a/csharp/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/csharp/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import csharp private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/csharp/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/csharp/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index 6916c5f61067..f623d683dca6 100644 --- a/csharp/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/csharp/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -49,4 +49,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = CS::Location; + + string getRelativeUrl(Location location) { + exists(CS::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql b/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql index 3fc8e07f6afe..e99647939c38 100644 --- a/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql +++ b/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql @@ -59,7 +59,7 @@ module DisposeCallOnLocalIDisposableConfig implements DataFlow::ConfigSig { exists(UsingStmt us | us.getAnExpr() = e) or // Foreach calls Dispose - exists(ForeachStmt fs | fs.getIterableExpr() = e) + exists(ForEachStmt fs | fs.getIterableExpr() = e) or // As are disposables on which the Dispose method is called explicitly exists(MethodCall mc | diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index cf86d815aa53..af251858f599 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,28 @@ +## 1.10.2 + +### Minor Analysis Improvements + +* The `cs/simplifiable-boolean-expression` query now produces fewer false-positive results when type information is incomplete. + +## 1.10.1 + +### Minor Analysis Improvements + +* The `cs/web/missing-x-frame-options` query now recognizes clickjacking protection configured + through ASP.NET Core response headers and enforced Content Security Policy `frame-ancestors` + directives. + +## 1.10.0 + +### New Queries + +* Added a new query, `cs/linq/missed-firstordefault`, that detects `foreach` loops that can be expressed more clearly using LINQ's `FirstOrDefault` method. + +### Minor Analysis Improvements + +* The `cs/linq/missed-*` queries no longer suggest rewrites that would capture `in`, `out`, or `ref` parameters in a lambda, fixing false-positive results for transformations that would not compile. +* The `cs/web/missing-token-validation` query now recognizes an ASP.NET Core `AutoValidateAntiforgeryTokenAttribute` registered as a global MVC filter through `AddControllersWithViews` (and friends), avoiding false-positive results for covered actions. + ## 1.9.3 ### Minor Analysis Improvements diff --git a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql index 20f522e7b484..dc1647f14f83 100644 --- a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +++ b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql @@ -31,11 +31,11 @@ class RelevantDefinition extends AssignableDefinition { any(LocalVariableDeclExpr lvde | lvde = any(SpecificCatchClause scc).getVariableDeclExpr() or - lvde = any(ForeachStmt fs).getVariableDeclExpr() and + lvde = any(ForEachStmt fs).getVariableDeclExpr() and not lvde.getName() = "_" ) or - this instanceof AssignableDefinitions::PatternDefinition + this instanceof AssignableDefinitions::TopLevelPatternDefinition or this instanceof AssignableDefinitions::AssignOperationDefinition } diff --git a/csharp/ql/src/Language Abuse/ForeachCapture.ql b/csharp/ql/src/Language Abuse/ForeachCapture.ql index 2ed24b42eba9..77226bdead79 100644 --- a/csharp/ql/src/Language Abuse/ForeachCapture.ql +++ b/csharp/ql/src/Language Abuse/ForeachCapture.ql @@ -23,17 +23,17 @@ predicate lambdaCaptures(AnonymousFunctionExpr lambda, Variable v) { exists(VariableAccess va | va.getEnclosingCallable() = lambda | va.getTarget() = v) } -predicate lambdaCapturesLoopVariable(AnonymousFunctionExpr lambda, ForeachStmt loop, Variable v) { +predicate lambdaCapturesLoopVariable(AnonymousFunctionExpr lambda, ForEachStmt loop, Variable v) { lambdaCaptures(lambda, v) and - inForeachStmtBody(loop, lambda) and + inForEachStmtBody(loop, lambda) and loop.getVariable() = v } -predicate inForeachStmtBody(ForeachStmt loop, Element e) { +predicate inForEachStmtBody(ForEachStmt loop, Element e) { e = loop.getBody() or exists(Element mid | - inForeachStmtBody(loop, mid) and + inForEachStmtBody(loop, mid) and e = mid.getAChild() ) } @@ -53,7 +53,7 @@ module LambdaDataFlow { exists(DataFlow::Node sink | flow(DataFlow::exprNode(lambda), sink) | storage = getAssignmentTarget(sink.asExpr()) ) and - exists(ForeachStmt loop | lambdaCapturesLoopVariable(lambda, loop, loopVar) | + exists(ForEachStmt loop | lambdaCapturesLoopVariable(lambda, loop, loopVar) | not declaredInsideLoop(loop, storage) ) } @@ -103,9 +103,9 @@ Element getCollectionAssignmentTarget(Expr e) { } // Variable v is declared inside the loop body -predicate declaredInsideLoop(ForeachStmt loop, LocalVariable v) { +predicate declaredInsideLoop(ForEachStmt loop, LocalVariable v) { exists(LocalVariableDeclStmt decl | decl.getVariableDeclExpr(_).getVariable() = v | - inForeachStmtBody(loop, decl) + inForEachStmtBody(loop, decl) ) } diff --git a/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql b/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql index 100fa2338110..5656da73af71 100644 --- a/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql +++ b/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql @@ -13,56 +13,88 @@ import csharp /** - * Holds if expression `expr` has Boolean `value` at child `child`. - * No other child nodes are boolean literals. + * Holds if the left operand of a binary operation is a Boolean literal with the specified value + * and the right operand is not a Boolean literal. */ -predicate literalChild(Expr expr, int child, boolean value) { - value = expr.getChild(child).(BoolLiteral).getBoolValue() and - forall(int c | c != child | not expr.getChild(c) instanceof BoolLiteral) +predicate binaryLiteralLeft(BinaryOperation op, boolean value) { + value = op.getLeftOperand().(BoolLiteral).getBoolValue() and + not op.getRightOperand() instanceof BoolLiteral } /** - * Expression `expr` has Boolean `value1` at child `child1`, and boolean `value2` at `child2`. - * No other child nodes are boolean literals. + * Holds if the right operand of a binary operation is a Boolean literal with the specified value + * and the left operand is not a Boolean literal. */ -predicate literalChildren(Expr expr, int child1, boolean value1, int child2, boolean value2) { - value1 = expr.getChild(child1).(BoolLiteral).getBoolValue() and - value2 = expr.getChild(child2).(BoolLiteral).getBoolValue() and - forall(int c | c != child1 and c != child2 | not expr.getChild(c) instanceof BoolLiteral) +predicate binaryLiteralRight(BinaryOperation op, boolean value) { + value = op.getRightOperand().(BoolLiteral).getBoolValue() and + not op.getLeftOperand() instanceof BoolLiteral } -predicate rewriteBinaryExpr(BinaryOperation op, boolean value, string oldPattern) { - literalChild(op, 0, value) and oldPattern = value + " " + op.getOperator() + " A" - or - literalChild(op, 1, value) and oldPattern = "A " + op.getOperator() + " " + value +/** + * Holds if the 'then' branch of a conditional expression is a Boolean literal with the specified value + * and the 'condition' or 'else' branch are not Boolean literals. + */ +predicate conditionalThenLiteral(ConditionalExpr cond, boolean value) { + value = cond.getThen().(BoolLiteral).getBoolValue() and + not cond.getCondition() instanceof BoolLiteral and + not cond.getElse() instanceof BoolLiteral } -bindingset[withFalseOperand, withTrueOperand] -predicate rewriteBinaryExpr( - BinaryOperation op, string oldPattern, string withFalseOperand, string withTrueOperand, - string newPattern -) { - rewriteBinaryExpr(op, false, oldPattern) and newPattern = withFalseOperand - or - rewriteBinaryExpr(op, true, oldPattern) and newPattern = withTrueOperand +/** + * Holds if the 'else' branch of a conditional expression is a Boolean literal with the specified value + * and the 'condition' or 'then' branch are not Boolean literals. + */ +predicate conditionalElseLiteral(ConditionalExpr cond, boolean value) { + value = cond.getElse().(BoolLiteral).getBoolValue() and + not cond.getCondition() instanceof BoolLiteral and + not cond.getThen() instanceof BoolLiteral +} + +/** + * Holds if both the 'then' and 'else' branches of a conditional expression are Boolean literals with the specified values + * and the 'condition' branch is not a Boolean literal. + */ +predicate conditionalThenAndElseLiteral(ConditionalExpr cond, boolean thenValue, boolean elseValue) { + thenValue = cond.getThen().(BoolLiteral).getBoolValue() and + elseValue = cond.getElse().(BoolLiteral).getBoolValue() and + not cond.getCondition() instanceof BoolLiteral +} + +predicate rewriteBinaryExpr(BinaryOperation op, boolean value, string oldPattern) { + op.getLeftOperand().getType() instanceof BoolType and + op.getRightOperand().getType() instanceof BoolType and + ( + binaryLiteralLeft(op, value) and oldPattern = value + " " + op.getOperator() + " A" + or + binaryLiteralRight(op, value) and oldPattern = "A " + op.getOperator() + " " + value + ) } predicate rewriteConditionalExpr(ConditionalExpr cond, string oldPattern, string newPattern) { - literalChild(cond, 1, false) and oldPattern = "A ? false : B" and newPattern = "!A && B" - or - literalChild(cond, 1, true) and oldPattern = "A ? true : B" and newPattern = "A || B" - or - literalChild(cond, 2, false) and oldPattern = "A ? B : false" and newPattern = "A && B" - or - literalChild(cond, 2, true) and oldPattern = "A ? B : true" and newPattern = "!A || B" - or - exists(boolean b | literalChildren(cond, 1, b, 2, b) | - oldPattern = "A ? " + b + " : " + b and newPattern = b.toString() + cond.getCondition().getType() instanceof BoolType and + cond.getThen().getType() instanceof BoolType and + cond.getElse().getType() instanceof BoolType and + ( + conditionalThenLiteral(cond, false) and oldPattern = "A ? false : B" and newPattern = "!A && B" + or + conditionalThenLiteral(cond, true) and oldPattern = "A ? true : B" and newPattern = "A || B" + or + conditionalElseLiteral(cond, false) and oldPattern = "A ? B : false" and newPattern = "A && B" + or + conditionalElseLiteral(cond, true) and oldPattern = "A ? B : true" and newPattern = "!A || B" + or + exists(boolean b | conditionalThenAndElseLiteral(cond, b, b) | + oldPattern = "A ? " + b + " : " + b and newPattern = b.toString() + ) + or + conditionalThenAndElseLiteral(cond, true, false) and + oldPattern = "A ? true : false" and + newPattern = "A" + or + conditionalThenAndElseLiteral(cond, false, true) and + oldPattern = "A ? false : true" and + newPattern = "!A" ) - or - literalChildren(cond, 1, true, 2, false) and oldPattern = "A ? true : false" and newPattern = "A" - or - literalChildren(cond, 1, false, 2, true) and oldPattern = "A ? false : true" and newPattern = "!A" } predicate negatedOperators(string op, string negated) { @@ -115,12 +147,20 @@ predicate pushNegation(LogicalNotExpr expr, string oldPattern, string newPattern ) } -predicate rewrite(Expr expr, string oldPattern, string newPattern) { +predicate rewriteBinaryOperation(BinaryOperation op, string oldPattern, string newPattern) { exists(string withFalseOperand, string withTrueOperand | - simplifyBinaryExpr(expr.(BinaryOperation).getOperator(), withFalseOperand, withTrueOperand) + simplifyBinaryExpr(op.getOperator(), withFalseOperand, withTrueOperand) | - rewriteBinaryExpr(expr, oldPattern, withFalseOperand, withTrueOperand, newPattern) + rewriteBinaryExpr(op, false, oldPattern) and + newPattern = withFalseOperand + or + rewriteBinaryExpr(op, true, oldPattern) and + newPattern = withTrueOperand ) +} + +predicate rewrite(Expr expr, string oldPattern, string newPattern) { + rewriteBinaryOperation(expr, oldPattern, newPattern) or rewriteConditionalExpr(expr, oldPattern, newPattern) or diff --git a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql index 046099213cc6..df382ee4b9f7 100644 --- a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +++ b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql @@ -28,7 +28,7 @@ where any(LocalVariableDeclAndInitExpr ass | ass.getRightOperand() instanceof ObjectCreation) .getLeftOperand() ) and - not v = any(ForeachStmt fs).getVariable() and + not v = any(ForEachStmt fs).getVariable() and not v = any(BindingPatternExpr vpe).getVariableDeclExpr().getVariable() and not v = any(Attribute a).getTarget() select v, "The contents of this container are never accessed." diff --git a/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql b/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql index 39f0bfddf6aa..ccac74250dab 100644 --- a/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql +++ b/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql @@ -36,7 +36,7 @@ class IfThenElseStmt extends IfStmt { Stmt getTrailingBody(Stmt s) { result = s.(ForStmt).getBody() or - result = s.(ForeachStmt).getBody() or + result = s.(ForEachStmt).getBody() or result = s.(WhileStmt).getBody() or result = s.(IfThenStmt).getThen() or result = s.(IfThenElseStmt).getElse() diff --git a/csharp/ql/src/Linq/BadMultipleIteration.ql b/csharp/ql/src/Linq/BadMultipleIteration.ql index 0f9e335e2251..7de0d7f1b6d8 100644 --- a/csharp/ql/src/Linq/BadMultipleIteration.ql +++ b/csharp/ql/src/Linq/BadMultipleIteration.ql @@ -38,7 +38,7 @@ predicate likelyNonRepeatableSequence(IEnumerableSequence seq) { /** An access to an enumerable sequence that potentially consumes sequence elements. */ predicate potentiallyConsumingAccess(VariableAccess va) { - exists(ForeachStmt fes | va = fes.getIterableExpr()) + exists(ForEachStmt fes | va = fes.getIterableExpr()) or exists(MethodCall mc | va = mc.getArgument(0) and diff --git a/csharp/ql/src/Linq/MissedAllOpportunity.ql b/csharp/ql/src/Linq/MissedAllOpportunity.ql index 1c03372d23b6..9e84c280c3f5 100644 --- a/csharp/ql/src/Linq/MissedAllOpportunity.ql +++ b/csharp/ql/src/Linq/MissedAllOpportunity.ql @@ -32,7 +32,7 @@ import Linq.Helpers * bool allEven = lst.All(i => i % 2 == 0); */ -from ForeachStmtGenericEnumerable fes +from ForEachStmtGenericEnumerable fes where missedAllOpportunity(fes) select fes, "This foreach loop looks as if it might be testing whether every sequence element satisfies a predicate - consider using '.All(...)'." diff --git a/csharp/ql/src/Linq/MissedCastOpportunity.ql b/csharp/ql/src/Linq/MissedCastOpportunity.ql index d40009e24c89..66e920f740e1 100644 --- a/csharp/ql/src/Linq/MissedCastOpportunity.ql +++ b/csharp/ql/src/Linq/MissedCastOpportunity.ql @@ -15,7 +15,7 @@ import csharp import Linq.Helpers -from ForeachStmtEnumerable fes, LocalVariableDeclStmt s +from ForEachStmtEnumerable fes, LocalVariableDeclStmt s where missedCastOpportunity(fes, s) select fes, "This foreach loop immediately $@ - consider casting the sequence explicitly using '.Cast(...)'.", diff --git a/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.cs b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.cs new file mode 100644 index 000000000000..ef968cc7dfd9 --- /dev/null +++ b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; + +class MissedFirstOrDefaultOpportunity +{ + public static Operation FindOperation(IEnumerable operations, string operationId) + { + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + return operation; + } + + return null; + } +} + +class Operation +{ + public string OperationId { get; set; } +} diff --git a/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.qhelp b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.qhelp new file mode 100644 index 000000000000..578b062ca34e --- /dev/null +++ b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.qhelp @@ -0,0 +1,36 @@ + + + +

    Programmers sometimes search a sequence by iterating over each element, testing it, and returning +the first element that satisfies the test. If the loop completes without finding a match, the method +then returns a default value such as null or default.

    + +
    + +

    This pattern is directly available as the FirstOrDefault method in LINQ. Using the +library method makes the search intent explicit and avoids manually spelling out the loop and +fallback return.

    + +
    + +

    In this example the method searches a list of operations for the first operation with a matching +identifier, returning null if no match is found.

    + + +

    The LINQ FirstOrDefault method can express this search more directly.

    + + +

    The following examples should not use FirstOrDefault, because they do more than +return the matching element or because the fallback value is not the default value.

    + + +
    + + +
  • MSDN: Enumerable.FirstOrDefault Method.
  • + + +
    +
    diff --git a/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.ql b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.ql new file mode 100644 index 000000000000..286b653979e3 --- /dev/null +++ b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunity.ql @@ -0,0 +1,22 @@ +/** + * @name Missed opportunity to use FirstOrDefault + * @description The intent of a foreach loop that returns the first sequence element satisfying a predicate, or a default value otherwise, + * can often be better expressed using LINQ's 'FirstOrDefault' method. + * @kind problem + * @problem.severity recommendation + * @precision high + * @id cs/linq/missed-firstordefault + * @tags quality + * maintainability + * readability + * language-features + */ + +import csharp +import Linq.Helpers + +from ForEachStmtGenericEnumerable fes, IfStmt is +where missedFirstOrDefaultOpportunity(fes, is) +select fes, + "This foreach loop returns the first sequence element satisfying a $@ - consider finding the element explicitly using '.FirstOrDefault(...)'.", + is.getCondition(), "predicate" diff --git a/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunityFix.cs b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunityFix.cs new file mode 100644 index 000000000000..3d7818fc0db8 --- /dev/null +++ b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunityFix.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +class MissedFirstOrDefaultOpportunityFix +{ + public static Operation FindOperation(IEnumerable operations, string operationId) + { + return operations.FirstOrDefault(operation => + string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)); + } +} diff --git a/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunityGood.cs b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunityGood.cs new file mode 100644 index 000000000000..6c65760416de --- /dev/null +++ b/csharp/ql/src/Linq/MissedFirstOrDefaultOpportunityGood.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; + +class MissedFirstOrDefaultOpportunityGood +{ + public static Operation FindOperationOrThrow(IEnumerable operations, string operationId) + { + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + throw new InvalidOperationException("Unexpected operation."); + } + + return null; + } + + public static Operation FindReplacementOperation(IEnumerable operations, string operationId) + { + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + return operation; + } + + return new Operation(); + } + + public static string FindOperationId(IEnumerable operations, string operationId) + { + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + return operation.OperationId; + } + + return null; + } +} diff --git a/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql b/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql index a4c8dff4b538..d80f9d983a7f 100644 --- a/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql +++ b/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql @@ -15,7 +15,7 @@ import csharp import Linq.Helpers -from ForeachStmtEnumerable fes, LocalVariableDeclStmt s +from ForEachStmtEnumerable fes, LocalVariableDeclStmt s where missedOfTypeOpportunity(fes, s) select fes, "This foreach loop immediately uses 'as' to $@ - consider using '.OfType(...)' instead.", s, diff --git a/csharp/ql/src/Linq/MissedSelectOpportunity.ql b/csharp/ql/src/Linq/MissedSelectOpportunity.ql index 8ea2a1c11d73..9e3571f36d54 100644 --- a/csharp/ql/src/Linq/MissedSelectOpportunity.ql +++ b/csharp/ql/src/Linq/MissedSelectOpportunity.ql @@ -22,7 +22,7 @@ predicate oversized(LocalVariableDeclStmt s) { ) } -from ForeachStmtGenericEnumerable fes, LocalVariableDeclStmt s +from ForEachStmtGenericEnumerable fes, LocalVariableDeclStmt s where missedSelectOpportunity(fes, s) and not oversized(s) diff --git a/csharp/ql/src/Linq/MissedWhereOpportunity.ql b/csharp/ql/src/Linq/MissedWhereOpportunity.ql index 62b34b93305a..e9e82f79baf3 100644 --- a/csharp/ql/src/Linq/MissedWhereOpportunity.ql +++ b/csharp/ql/src/Linq/MissedWhereOpportunity.ql @@ -14,7 +14,7 @@ import csharp import Linq.Helpers -from ForeachStmtGenericEnumerable fes, IfStmt is +from ForEachStmtGenericEnumerable fes, IfStmt is where missedWhereOpportunity(fes, is) and not missedAllOpportunity(fes) diff --git a/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql b/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql index 77a3f2b59450..8a568c6eca57 100644 --- a/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql +++ b/csharp/ql/src/Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql @@ -12,6 +12,7 @@ */ import csharp +import semmle.code.csharp.commons.Compilation import semmle.code.csharp.frameworks.system.Web import semmle.code.csharp.frameworks.system.web.Helpers import semmle.code.csharp.frameworks.system.web.Mvc @@ -34,20 +35,41 @@ private Method getAStartedMethod() { getAStartedMethod().calls(result) } -/** - * Holds if the project has a global anti forgery filter. - * - * No AspNetCore case here as the corresponding class doesn't seem to exist. - */ -predicate hasGlobalAntiForgeryFilter() { - // A global filter added +private predicate hasGlobalWebMvcAntiforgeryFilter(Compilation compilation) { exists(MethodCall addGlobalFilter | // addGlobalFilter adds a filter to the global filter collection addGlobalFilter.getTarget() = any(GlobalFilterCollection gfc).getAddMethod() and // The filter is an antiforgery filter addGlobalFilter.getArgumentForName("filter").getType() instanceof AntiForgeryAuthorizationFilter and // The filter is added by the Application_Start() method - getAStartedMethod() = addGlobalFilter.getEnclosingCallable() + getAStartedMethod() = addGlobalFilter.getEnclosingCallable() and + addGlobalFilter.getFile() = compilation.getAFileCompiled() + ) +} + +predicate hasGlobalAspNetMvcAntiForgeryFilter(Compilation compilation) { + exists(MethodCall addGlobalFilter, MethodCall registrationCall | + ( + // The filter is the `AutoValidateAntiforgeryTokenAttribute` filter. + addGlobalFilter.getTarget() = + any(AspNetCore::MicrosoftAspNetCoreMvcFilterCollection collection).getAddMethod() and + ( + addGlobalFilter.getArgument(0).getType() instanceof + AspNetCore::AutoValidateAntiforgeryTokenAttribute or + addGlobalFilter.getArgument(0).(TypeofExpr).getTypeAccess().getTarget() instanceof + AspNetCore::AutoValidateAntiforgeryTokenAttribute + ) + or + addGlobalFilter.getTarget().getUnboundDeclaration() = + any(AspNetCore::MicrosoftAspNetCoreMvcFilterCollection collection).getAddMethod() and + addGlobalFilter.getTarget().(ConstructedGeneric).getTypeArgument(0) instanceof + AspNetCore::AutoValidateAntiforgeryTokenAttribute + ) and + // The filter is added in an ASP.NET Core registration call, which is provided as a lambda argument + // to the Mvc registration method. + registrationCall.getTarget() instanceof AspNetCore::MicrosoftAspNetCoreMvcRegistration and + registrationCall.getAnArgument() = addGlobalFilter.getEnclosingCallable() and + addGlobalFilter.getFile() = compilation.getAFileCompiled() ) } @@ -67,11 +89,12 @@ private class RequireAntiforgeryTokenAttribute extends Attribute { } } -private predicate hasAspNetCoreAntiForgeryMiddleware() { +private predicate hasAspNetCoreAntiForgeryMiddleware(Compilation compilation) { exists(MethodCall call | call.getTarget() .hasFullyQualifiedName("Microsoft.AspNetCore.Builder", - "AntiforgeryApplicationBuilderExtensions", "UseAntiforgery") + "AntiforgeryApplicationBuilderExtensions", "UseAntiforgery") and + call.getFile() = compilation.getAFileCompiled() ) } @@ -106,7 +129,12 @@ private RequireAntiforgeryTokenAttribute getEffectiveRequireAntiforgeryTokenAttr class MvcControllerPostMethod extends Method { private Controller controller; - MvcControllerPostMethod() { controller.getAPostActionMethod() = this } + MvcControllerPostMethod() { + controller.getAPostActionMethod() = this and + exists(Compilation compilation | compilation.getAFileCompiled() = this.getFile() | + not hasGlobalWebMvcAntiforgeryFilter(compilation) + ) + } predicate hasValidateAntiForgeryAttribute() { this.getAnAttribute() instanceof ValidateAntiForgeryTokenAttribute or @@ -116,10 +144,13 @@ class MvcControllerPostMethod extends Method { class AspNetCoreControllerPostMethod extends Method { private AspNetCore::MicrosoftAspNetCoreMvcController controller; + private Compilation compilation; AspNetCoreControllerPostMethod() { controller.getAnActionMethod() = this and - this.getAnAttribute() instanceof AspNetCore::MicrosoftAspNetCoreMvcHttpPostAttribute + this.getAnAttribute() instanceof AspNetCore::MicrosoftAspNetCoreMvcHttpPostAttribute and + compilation.getAFileCompiled() = this.getFile() and + not hasGlobalAspNetMvcAntiForgeryFilter(compilation) } predicate hasValidateAntiForgeryAttribute() { @@ -128,7 +159,7 @@ class AspNetCoreControllerPostMethod extends Method { } predicate hasRequireAntiForgeryAttribute() { - hasAspNetCoreAntiForgeryMiddleware() and + hasAspNetCoreAntiForgeryMiddleware(compilation) and ( getEffectiveRequireAntiforgeryTokenAttributeOnMethod(this).requiresValidation() or @@ -157,7 +188,7 @@ Element getAValidatedElement() { or any(AspNetCore::ValidateAntiForgeryAttribute a).getTarget() = result or - hasAspNetCoreAntiForgeryMiddleware() and + hasAspNetCoreAntiForgeryMiddleware(_) and any(RequireAntiforgeryTokenAttribute a | a.requiresValidation()).getTarget() = result } @@ -167,9 +198,7 @@ where // Verify that validate anti forgery token attributes are used somewhere within this project, to // avoid reporting false positives on projects that use an alternative approach to mitigate CSRF // issues. - exists(getAValidatedElement()) and - // Also ignore cases where a global anti forgery filter is in use. - not hasGlobalAntiForgeryFilter() + exists(getAValidatedElement()) select postMethod, "Method '" + postMethod.getName() + "' handles a POST request without performing CSRF token validation." diff --git a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.qhelp b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.qhelp index 6d5d298c8e43..5f7dd4f3282f 100644 --- a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.qhelp +++ b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.qhelp @@ -5,9 +5,10 @@

    -Web sites that do not specify the X-Frame-Options HTTP header may be vulnerable to UI -redress attacks ("clickjacking"). In these attacks, the vulnerable site is loaded in a frame on -an attacker-controlled site which uses opaque or transparent layers to trick the user into +Web sites that do not restrict framing using the X-Frame-Options HTTP header or the +frame-ancestors Content Security Policy directive may be vulnerable to UI redress +attacks ("clickjacking"). In these attacks, the vulnerable site is loaded in a frame on an +attacker-controlled site which uses opaque or transparent layers to trick the user into unintentionally clicking a button or link on the vulnerable site.

    @@ -17,16 +18,24 @@ unintentionally clicking a button or link on the vulnerable site.

    Set the X-Frame-Options HTTP header to DENY, to instruct web browsers to block attempts to load the site in a frame. Alternatively, if framing is needed in certain -circumstances, specify SAMEORIGIN or ALLOW FROM: ... to limit the ability -to frame the site to pages from the same origin, or from an allowed whitelist of trusted domains. +circumstances, specify SAMEORIGIN to permit framing by the same origin. The +frame-ancestors directive in an enforced Content-Security-Policy header +provides a more flexible alternative. For example, use frame-ancestors 'none' to +prevent all framing, or use its source list to specify which origins may embed the application.

    -For ASP.NET web applications, the header may be specified either in the Web.config -file, using the <customHeaders> tag, or within the source code of the -application using the HttpResponse.AddHeader method. In general, prefer specifying the -header in the Web.config file to ensure it is added to all requests. If adding it -to the source code, ensure that it is added unconditionally to all requests. For example, add the -header in the Application_BeginRequest method in the global.asax file. +For ASP.NET Framework applications, the header may be specified either in the +Web.config file, using the <customHeaders> tag, or within the source +code of the application using the HttpResponse.AddHeader method. In general, prefer +specifying the header in the Web.config file to ensure it is added to all requests. If +adding it to the source code, ensure that it is added unconditionally to all requests. For example, +add the header in the Application_BeginRequest method in the +global.asax file. +

    +

    +For ASP.NET Core applications, set the header on HttpResponse.Headers. This can be +done using the header dictionary's indexer or its Append, Add, or +TryAdd methods.

    @@ -41,11 +50,17 @@ The following example shows how to specify the X-Frame-Options head

    This next example shows how to specify the X-Frame-Options header within the -global.asax file for ASP.NET application: +global.asax file for an ASP.NET application:

    +

    +The following ASP.NET Core example uses an enforced Content Security Policy to disallow framing: +

    + + + @@ -57,6 +72,10 @@ OWASP: Mozilla: X-Frame-Options +
  • +Mozilla: +Content-Security-Policy: frame-ancestors +
  • diff --git a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql index 1b647457e7c8..cc3612ce89c1 100644 --- a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql +++ b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql @@ -1,7 +1,8 @@ /** - * @name Missing X-Frame-Options HTTP header - * @description If the 'X-Frame-Options' setting is not provided, a malicious user may be able to - * overlay their own UI on top of the site by using an iframe. + * @name Missing clickjacking protection + * @description If neither the 'X-Frame-Options' header nor a Content Security Policy + * 'frame-ancestors' directive is provided, a malicious user may be able to overlay + * their own UI on top of the site by using an iframe. * @kind problem * @problem.severity error * @security-severity 7.5 @@ -14,7 +15,7 @@ import csharp import semmle.code.asp.WebConfig -import semmle.code.csharp.frameworks.system.Web +import semmle.code.csharp.security.MissingXFrameOptionsQuery XmlElement getAWebConfigRoot(WebConfigXml webConfig) { result = webConfig.getARootElement() @@ -28,9 +29,10 @@ XmlElement getAWebConfigRoot(WebConfigXml webConfig) { } /** - * Holds if the `Web.config` file `webConfig` adds an `X-Frame-Options` header. + * Holds if the `Web.config` file `webConfig` adds an `X-Frame-Options` header or a + * `Content-Security-Policy` header containing a `frame-ancestors` directive. */ -predicate hasWebConfigXFrameOptions(WebConfigXml webConfig) { +predicate hasWebConfigClickjackingProtection(WebConfigXml webConfig) { // Looking for an entry in `webConfig` that looks like this: // ```xml // @@ -42,29 +44,30 @@ predicate hasWebConfigXFrameOptions(WebConfigXml webConfig) { // // ``` // This can also be in a `location` - getAWebConfigRoot(webConfig) - .getAChild("system.webServer") - .getAChild("httpProtocol") - .getAChild("customHeaders") - .getAChild("add") - .getAttributeValue("name") = "X-Frame-Options" + exists(XmlElement add, string name | + add = + getAWebConfigRoot(webConfig) + .getAChild("system.webServer") + .getAChild("httpProtocol") + .getAChild("customHeaders") + .getAChild("add") and + name = add.getAttributeValue("name") and + ( + isXFrameOptionsText(name) + or + isContentSecurityPolicyText(name) and + containsFrameAncestorsDirective(add.getAttributeValue("value")) + ) + ) } /** - * Holds if there exists a call to `AddHeader` or `AppendHeader` adding the `X-Frame-Options` - * header. + * Holds if code configures a clickjacking protection response header. */ -predicate hasCodeXFrameOptions() { - exists(MethodCall call | - call.getTarget() = any(SystemWebHttpResponseClass r).getAppendHeaderMethod() or - call.getTarget() = any(SystemWebHttpResponseClass r).getAddHeaderMethod() - | - call.getArgumentForName("name").getValue() = "X-Frame-Options" - ) -} +predicate hasCodeClickjackingProtection() { exists(getAClickjackingHeaderWrite()) } from WebConfigXml webConfig where - not hasWebConfigXFrameOptions(webConfig) and - not hasCodeXFrameOptions() -select webConfig, "Configuration file is missing the X-Frame-Options setting." + not hasWebConfigClickjackingProtection(webConfig) and + not hasCodeClickjackingProtection() +select webConfig, "Configuration file is missing clickjacking protection." diff --git a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptionsAspNetCore.cs b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptionsAspNetCore.cs new file mode 100644 index 000000000000..f735a8f0ae7c --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptionsAspNetCore.cs @@ -0,0 +1,8 @@ +void Configure(IApplicationBuilder app) +{ + app.Use(async (context, next) => + { + context.Response.Headers["Content-Security-Policy"] = "frame-ancestors 'none'"; + await next(); + }); +} diff --git a/csharp/ql/src/change-notes/released/1.10.0.md b/csharp/ql/src/change-notes/released/1.10.0.md new file mode 100644 index 000000000000..55a1dcb12b89 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.10.0.md @@ -0,0 +1,10 @@ +## 1.10.0 + +### New Queries + +* Added a new query, `cs/linq/missed-firstordefault`, that detects `foreach` loops that can be expressed more clearly using LINQ's `FirstOrDefault` method. + +### Minor Analysis Improvements + +* The `cs/linq/missed-*` queries no longer suggest rewrites that would capture `in`, `out`, or `ref` parameters in a lambda, fixing false-positive results for transformations that would not compile. +* The `cs/web/missing-token-validation` query now recognizes an ASP.NET Core `AutoValidateAntiforgeryTokenAttribute` registered as a global MVC filter through `AddControllersWithViews` (and friends), avoiding false-positive results for covered actions. diff --git a/csharp/ql/src/change-notes/released/1.10.1.md b/csharp/ql/src/change-notes/released/1.10.1.md new file mode 100644 index 000000000000..ae61f5048922 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.10.1.md @@ -0,0 +1,7 @@ +## 1.10.1 + +### Minor Analysis Improvements + +* The `cs/web/missing-x-frame-options` query now recognizes clickjacking protection configured + through ASP.NET Core response headers and enforced Content Security Policy `frame-ancestors` + directives. diff --git a/csharp/ql/src/change-notes/released/1.10.2.md b/csharp/ql/src/change-notes/released/1.10.2.md new file mode 100644 index 000000000000..cf530869f0bc --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.10.2.md @@ -0,0 +1,5 @@ +## 1.10.2 + +### Minor Analysis Improvements + +* The `cs/simplifiable-boolean-expression` query now produces fewer false-positive results when type information is incomplete. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 46a56c94195c..7303d5a67610 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.9.3 +lastReleaseVersion: 1.10.2 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index a2f6f0aac243..8a84da191462 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.9.3 +version: 1.10.2 groups: - csharp - queries diff --git a/csharp/ql/test/library-tests/csharp11/patternExprTypes.expected b/csharp/ql/test/library-tests/csharp11/patternExprTypes.expected new file mode 100644 index 000000000000..c24c0edda27e --- /dev/null +++ b/csharp/ql/test/library-tests/csharp11/patternExprTypes.expected @@ -0,0 +1,58 @@ +| ListPattern.cs:7:18:7:19 | [ ... ] | Int32[] | +| ListPattern.cs:8:18:8:20 | [ ... ] | Int32[] | +| ListPattern.cs:8:19:8:19 | 1 | Int32 | +| ListPattern.cs:9:18:9:23 | [ ... ] | Int32[] | +| ListPattern.cs:9:19:9:19 | _ | Int32 | +| ListPattern.cs:9:22:9:22 | 2 | Int32 | +| ListPattern.cs:10:18:10:30 | [ ... ] | Int32[] | +| ListPattern.cs:10:19:10:23 | Int32 y | Int32 | +| ListPattern.cs:10:26:10:26 | 3 | Int32 | +| ListPattern.cs:10:29:10:29 | 4 | Int32 | +| ListPattern.cs:11:18:11:31 | [ ... ] | Int32[] | +| ListPattern.cs:11:19:11:19 | 5 | Int32 | +| ListPattern.cs:11:19:11:24 | ... or ... | Int32 | +| ListPattern.cs:11:24:11:24 | 6 | Int32 | +| ListPattern.cs:11:27:11:27 | _ | Int32 | +| ListPattern.cs:11:30:11:30 | 7 | Int32 | +| ListPattern.cs:12:18:12:31 | [ ... ] | Int32[] | +| ListPattern.cs:12:19:12:23 | Int32 a | Int32 | +| ListPattern.cs:12:26:12:27 | .. | Int32[] | +| ListPattern.cs:12:30:12:30 | 2 | Int32 | +| ListPattern.cs:13:18:13:50 | [ ... ] | Int32[] | +| ListPattern.cs:13:19:13:23 | Int32 b | Int32 | +| ListPattern.cs:13:26:13:46 | .. | Int32[] | +| ListPattern.cs:13:29:13:46 | { ... } | Int32[] | +| ListPattern.cs:13:29:13:46 | { ... } | null | +| ListPattern.cs:13:39:13:39 | 2 | Int32 | +| ListPattern.cs:13:39:13:44 | ... or ... | Int32 | +| ListPattern.cs:13:44:13:44 | 5 | Int32 | +| ListPattern.cs:13:49:13:49 | 2 | Int32 | +| ListPattern.cs:20:18:20:19 | [ ... ] | String[] | +| ListPattern.cs:22:18:22:22 | [ ... ] | String[] | +| ListPattern.cs:22:19:22:21 | "A" | String | +| ListPattern.cs:24:18:24:25 | [ ... ] | String[] | +| ListPattern.cs:24:19:24:19 | _ | String | +| ListPattern.cs:24:22:24:24 | "B" | String | +| ListPattern.cs:26:18:26:34 | [ ... ] | String[] | +| ListPattern.cs:26:19:26:23 | String y | String | +| ListPattern.cs:26:26:26:28 | "C" | String | +| ListPattern.cs:26:31:26:33 | "D" | String | +| ListPattern.cs:28:18:28:37 | [ ... ] | String[] | +| ListPattern.cs:28:19:28:21 | "E" | String | +| ListPattern.cs:28:19:28:28 | ... or ... | String | +| ListPattern.cs:28:26:28:28 | "F" | String | +| ListPattern.cs:28:31:28:31 | _ | String | +| ListPattern.cs:28:34:28:36 | "G" | String | +| ListPattern.cs:30:18:30:33 | [ ... ] | String[] | +| ListPattern.cs:30:19:30:23 | String a | String | +| ListPattern.cs:30:26:30:27 | .. | String[] | +| ListPattern.cs:30:30:30:32 | "H" | String | +| ListPattern.cs:32:18:32:39 | [ ... ] | String[] | +| ListPattern.cs:32:19:32:23 | String b | String | +| ListPattern.cs:32:26:32:33 | .. | String[] | +| ListPattern.cs:32:29:32:33 | String[] c | String[] | +| ListPattern.cs:32:36:32:38 | "I" | String | +| PatternMatchSpan.cs:8:19:8:23 | "ABC" | String | +| PatternMatchSpan.cs:15:18:15:22 | "DEF" | String | +| Strings.cs:10:13:10:14 | 42 | Int32 | +| Strings.cs:11:13:11:13 | _ | Int32 | diff --git a/csharp/ql/test/library-tests/csharp11/patternExprTypes.ql b/csharp/ql/test/library-tests/csharp11/patternExprTypes.ql new file mode 100644 index 000000000000..814019ecc818 --- /dev/null +++ b/csharp/ql/test/library-tests/csharp11/patternExprTypes.ql @@ -0,0 +1,4 @@ +import csharp + +from PatternExpr pattern +select pattern, pattern.getType().toString() diff --git a/csharp/ql/test/library-tests/csharp7/ForEach.ql b/csharp/ql/test/library-tests/csharp7/ForEach.ql index e42b6f47372f..5391d6b96f8a 100644 --- a/csharp/ql/test/library-tests/csharp7/ForEach.ql +++ b/csharp/ql/test/library-tests/csharp7/ForEach.ql @@ -1,5 +1,5 @@ import csharp -from ForeachStmt stmt, int i +from ForEachStmt stmt, int i select stmt, i, stmt.getVariableDeclExpr(i), stmt.getVariable(i), stmt.getIterableExpr(), stmt.getBody() diff --git a/csharp/ql/test/library-tests/csharp7/PrintAst.expected b/csharp/ql/test/library-tests/csharp7/PrintAst.expected index 47ab207bb556..6ac8d9d92ac7 100644 --- a/csharp/ql/test/library-tests/csharp7/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp7/PrintAst.expected @@ -864,19 +864,19 @@ CSharp7.cs: # 283| -1: [ParameterAccess] access to parameter item # 283| 1: [PropertyCall] access to property Value # 283| -1: [ParameterAccess] access to parameter item -# 285| 2: [ForeachStmt] foreach (... ... in ...) ... +# 285| 2: [ForEachStmt] foreach (... ... in ...) ... # 285| 0: [TupleExpr] (..., ...) # 285| 0: [LocalVariableDeclExpr] Int32 a # 285| 1: [LocalVariableDeclExpr] String b # 285| 1: [LocalVariableAccess] access to local variable list # 285| 2: [BlockStmt] {...} -# 287| 3: [ForeachStmt] foreach (... ... in ...) ... +# 287| 3: [ForEachStmt] foreach (... ... in ...) ... # 287| 0: [TupleExpr] (..., ...) # 287| 0: [LocalVariableDeclExpr] Int32 a # 287| 1: [LocalVariableDeclExpr] String b # 287| 1: [LocalVariableAccess] access to local variable list # 287| 2: [BlockStmt] {...} -# 289| 4: [ForeachStmt] foreach (... ... in ...) ... +# 289| 4: [ForEachStmt] foreach (... ... in ...) ... # 289| 0: [TupleExpr] (..., ...) # 289| 0: [LocalVariableDeclExpr] Int32 a # 289| 1: [LocalVariableDeclExpr] String b diff --git a/csharp/ql/test/library-tests/csharp8/PrintAst.expected b/csharp/ql/test/library-tests/csharp8/PrintAst.expected index f5eb7caab572..b2471d3ca201 100644 --- a/csharp/ql/test/library-tests/csharp8/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp8/PrintAst.expected @@ -33,7 +33,7 @@ AsyncStreams.cs: # 15| 7: [Method] F # 15| -1: [TypeMention] Void # 16| 4: [BlockStmt] {...} -# 17| 0: [ForeachStmt] foreach (... ... in ...) ... +# 17| 0: [ForEachStmt] foreach (... ... in ...) ... # 17| 0: [LocalVariableDeclExpr] Int32 item # 17| 0: [TypeMention] int # 17| 1: [MethodCall] call to method Items @@ -929,7 +929,7 @@ patterns.cs: # 57| 1: [ConstantPatternExpr,IntLiteral] 2 # 58| 10: [BreakStmt] break; # 59| 11: [CaseStmt] case ...: -# 59| 0: [TupleExpr] (..., ...) +# 59| 0: [TuplePatternExpr] (..., ...) # 59| 0: [VariablePatternExpr] Int32 x # 59| 1: [VariablePatternExpr] Int32 y # 60| 12: [BreakStmt] break; @@ -1156,7 +1156,7 @@ patterns.cs: # 130| 1: [ConstantPatternExpr,IntLiteral] 2 # 130| 2: [IntLiteral] 2 # 131| 3: [SwitchCaseExpr] ... => ... -# 131| 0: [TupleExpr] (..., ...) +# 131| 0: [TuplePatternExpr] (..., ...) # 131| 0: [VariablePatternExpr] Int32 x # 131| 1: [DiscardPatternExpr] _ # 131| 2: [IntLiteral] 3 diff --git a/csharp/ql/test/library-tests/csharp8/patterns.expected b/csharp/ql/test/library-tests/csharp8/patterns.expected index ca4c7f507793..fbfba8a6a825 100644 --- a/csharp/ql/test/library-tests/csharp8/patterns.expected +++ b/csharp/ql/test/library-tests/csharp8/patterns.expected @@ -188,16 +188,140 @@ labeledPatternExpr | patterns.cs:129:27:129:28 | 10 | X | | patterns.cs:142:31:142:32 | 10 | X | tupleTypes -| patterns.cs:59:18:59:27 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:86:15:86:19 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:91:16:91:20 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:108:9:108:20 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:108:24:108:31 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:110:22:110:26 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:111:22:111:26 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:115:9:115:16 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:115:20:115:27 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:117:27:117:33 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:118:28:118:34 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:119:33:119:38 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) | -| patterns.cs:131:13:131:22 | (..., ...) | file://:0:0:0:0 | (Int32,Object) | +| patterns.cs:59:18:59:27 | (..., ...) | (Int32,Int32) | +| patterns.cs:86:15:86:19 | (..., ...) | (Int32,Int32) | +| patterns.cs:91:16:91:20 | (..., ...) | (Int32,Int32) | +| patterns.cs:108:9:108:20 | (..., ...) | (Int32,Int32) | +| patterns.cs:108:24:108:31 | (..., ...) | (Int32,Int32) | +| patterns.cs:110:22:110:26 | (..., ...) | (Int32,Int32) | +| patterns.cs:111:22:111:26 | (..., ...) | (Int32,Int32) | +| patterns.cs:115:9:115:16 | (..., ...) | (Int32,Int32) | +| patterns.cs:115:20:115:27 | (..., ...) | (Int32,Int32) | +| patterns.cs:117:27:117:33 | (..., ...) | (Int32,Int32) | +| patterns.cs:118:28:118:34 | (..., ...) | (Int32,Int32) | +| patterns.cs:119:33:119:38 | (..., ...) | (Int32,Int32) | +| patterns.cs:131:13:131:22 | (..., ...) | (Int32,Object) | +patternExprTypes +| patterns.cs:9:18:9:29 | MyStruct ms1 | MyStruct | +| patterns.cs:13:18:13:25 | access to type MyStruct | MyStruct | +| patterns.cs:13:18:13:40 | MyStruct s | MyStruct | +| patterns.cs:13:18:13:40 | { ... } | MyStruct | +| patterns.cs:13:27:13:38 | { ... } | null | +| patterns.cs:13:32:13:36 | Int32 x | Int32 | +| patterns.cs:17:18:17:19 | { ... } | null | +| patterns.cs:17:18:17:21 | Object p | Object | +| patterns.cs:17:18:17:21 | { ... } | Object | +| patterns.cs:22:18:22:25 | access to type MyStruct | MyStruct | +| patterns.cs:22:18:22:53 | { ... } | MyStruct | +| patterns.cs:22:27:22:53 | { ... } | null | +| patterns.cs:22:31:22:32 | 12 | Int32 | +| patterns.cs:22:38:22:51 | { ... } | MyStruct | +| patterns.cs:22:38:22:51 | { ... } | null | +| patterns.cs:22:42:22:49 | Int32 subX | Int32 | +| patterns.cs:27:18:27:25 | access to type MyStruct | MyStruct | +| patterns.cs:27:18:27:58 | { ... } | MyStruct | +| patterns.cs:27:27:27:58 | { ... } | null | +| patterns.cs:27:31:27:32 | 12 | Int32 | +| patterns.cs:27:38:27:45 | access to type MyStruct | MyStruct | +| patterns.cs:27:38:27:56 | MyStruct ms | MyStruct | +| patterns.cs:27:38:27:56 | { ... } | MyStruct | +| patterns.cs:27:47:27:53 | { ... } | null | +| patterns.cs:27:51:27:51 | _ | Int32 | +| patterns.cs:38:18:38:29 | MyStruct ms1 | MyStruct | +| patterns.cs:41:18:41:29 | MyStruct ms2 | MyStruct | +| patterns.cs:48:18:48:25 | access to type MyStruct | MyStruct | +| patterns.cs:48:18:48:38 | { ... } | MyStruct | +| patterns.cs:48:27:48:38 | { ... } | null | +| patterns.cs:48:32:48:36 | Int32 x | Int32 | +| patterns.cs:51:18:51:25 | access to type MyStruct | MyStruct | +| patterns.cs:51:18:51:38 | MyStruct ms | MyStruct | +| patterns.cs:51:18:51:38 | { ... } | MyStruct | +| patterns.cs:51:27:51:35 | { ... } | null | +| patterns.cs:51:32:51:33 | 10 | Int32 | +| patterns.cs:54:18:54:30 | { ... } | MyStruct | +| patterns.cs:54:18:54:30 | { ... } | null | +| patterns.cs:54:23:54:28 | Int32 x2 | Int32 | +| patterns.cs:57:18:57:23 | ( ... ) | null | +| patterns.cs:57:18:57:23 | { ... } | MyStruct | +| patterns.cs:57:19:57:19 | 1 | Int32 | +| patterns.cs:57:22:57:22 | 2 | Int32 | +| patterns.cs:59:18:59:27 | (..., ...) | (Int32,Int32) | +| patterns.cs:59:23:59:23 | Int32 x | Int32 | +| patterns.cs:59:26:59:26 | Int32 y | Int32 | +| patterns.cs:67:18:67:25 | access to type MyStruct | MyStruct | +| patterns.cs:67:18:67:38 | { ... } | MyStruct | +| patterns.cs:67:27:67:38 | { ... } | null | +| patterns.cs:67:32:67:36 | Int32 x | Int32 | +| patterns.cs:70:18:70:25 | access to type MyStruct | MyStruct | +| patterns.cs:70:18:70:38 | MyStruct ms | MyStruct | +| patterns.cs:70:18:70:38 | { ... } | MyStruct | +| patterns.cs:70:27:70:35 | { ... } | null | +| patterns.cs:70:32:70:33 | 10 | Int32 | +| patterns.cs:78:18:78:33 | ( ... ) | null | +| patterns.cs:78:18:78:33 | { ... } | ITuple | +| patterns.cs:78:19:78:23 | Int32 x | Int32 | +| patterns.cs:78:26:78:32 | Single y | Single | +| patterns.cs:80:18:80:19 | ( ... ) | null | +| patterns.cs:80:18:80:19 | { ... } | ITuple | +| patterns.cs:82:18:82:19 | { ... } | Object | +| patterns.cs:82:18:82:19 | { ... } | null | +| patterns.cs:88:18:88:23 | ( ... ) | null | +| patterns.cs:88:18:88:23 | { ... } | (Int32,Int32) | +| patterns.cs:88:19:88:19 | 1 | Int32 | +| patterns.cs:88:22:88:22 | 2 | Int32 | +| patterns.cs:93:18:93:27 | ( ... ) | null | +| patterns.cs:93:18:93:27 | { ... } | (Int32,Int32) | +| patterns.cs:93:19:93:19 | 1 | Int32 | +| patterns.cs:93:22:93:26 | Int32 x | Int32 | +| patterns.cs:94:18:94:23 | ( ... ) | null | +| patterns.cs:94:18:94:23 | { ... } | (Int32,Int32) | +| patterns.cs:94:19:94:19 | 2 | Int32 | +| patterns.cs:94:22:94:22 | _ | Int32 | +| patterns.cs:101:13:101:17 | Int32 y | Int32 | +| patterns.cs:102:13:102:13 | _ | Int32 | +| patterns.cs:110:13:110:17 | ( ... ) | null | +| patterns.cs:110:13:110:17 | { ... } | (Int32,Int32) | +| patterns.cs:110:14:110:14 | 0 | Int32 | +| patterns.cs:110:16:110:16 | 1 | Int32 | +| patterns.cs:111:13:111:17 | ( ... ) | null | +| patterns.cs:111:13:111:17 | { ... } | (Int32,Int32) | +| patterns.cs:111:14:111:14 | 1 | Int32 | +| patterns.cs:111:16:111:16 | 0 | Int32 | +| patterns.cs:117:13:117:22 | ( ... ) | null | +| patterns.cs:117:13:117:22 | { ... } | (Int32,Int32) | +| patterns.cs:117:14:117:14 | 0 | Int32 | +| patterns.cs:117:16:117:21 | Int32 y2 | Int32 | +| patterns.cs:118:13:118:23 | ( ... ) | null | +| patterns.cs:118:13:118:23 | { ... } | (Int32,Int32) | +| patterns.cs:118:14:118:19 | Int32 x2 | Int32 | +| patterns.cs:118:22:118:22 | 0 | Int32 | +| patterns.cs:119:13:119:28 | ( ... ) | null | +| patterns.cs:119:13:119:28 | { ... } | (Int32,Int32) | +| patterns.cs:119:14:119:19 | Int32 x2 | Int32 | +| patterns.cs:119:22:119:27 | Int32 y2 | Int32 | +| patterns.cs:128:13:128:20 | access to type MyStruct | MyStruct | +| patterns.cs:128:13:128:33 | { ... } | MyStruct | +| patterns.cs:128:22:128:33 | { ... } | null | +| patterns.cs:128:27:128:31 | Int32 x | Int32 | +| patterns.cs:129:13:129:20 | access to type MyStruct | MyStruct | +| patterns.cs:129:13:129:33 | MyStruct ms | MyStruct | +| patterns.cs:129:13:129:33 | { ... } | MyStruct | +| patterns.cs:129:22:129:30 | { ... } | null | +| patterns.cs:129:27:129:28 | 10 | Int32 | +| patterns.cs:130:13:130:18 | ( ... ) | null | +| patterns.cs:130:13:130:18 | { ... } | MyStruct | +| patterns.cs:130:14:130:14 | 1 | Int32 | +| patterns.cs:130:17:130:17 | 2 | Int32 | +| patterns.cs:131:13:131:22 | (..., ...) | (Int32,Object) | +| patterns.cs:131:18:131:18 | Int32 x | Int32 | +| patterns.cs:131:21:131:21 | _ | null | +| patterns.cs:138:17:138:17 | 1 | Int32 | +| patterns.cs:139:17:139:17 | 2 | Int32 | +| patterns.cs:140:17:140:24 | Object y | Object | +| patterns.cs:140:36:140:37 | { ... } | Object | +| patterns.cs:140:36:140:37 | { ... } | null | +| patterns.cs:141:17:141:22 | access to type String | String | +| patterns.cs:142:17:142:24 | access to type MyStruct | MyStruct | +| patterns.cs:142:17:142:36 | { ... } | MyStruct | +| patterns.cs:142:26:142:34 | { ... } | null | +| patterns.cs:142:31:142:32 | 10 | Int32 | diff --git a/csharp/ql/test/library-tests/csharp8/patterns.ql b/csharp/ql/test/library-tests/csharp8/patterns.ql index fc758eb92160..164eea21e09a 100644 --- a/csharp/ql/test/library-tests/csharp8/patterns.ql +++ b/csharp/ql/test/library-tests/csharp8/patterns.ql @@ -68,4 +68,8 @@ query predicate isRecursivePatternExprWithDecl( query predicate labeledPatternExpr(LabeledPatternExpr e, string s) { s = e.getLabel() } -query predicate tupleTypes(TupleExpr te, Type t) { te.getType() = t } +query predicate tupleTypes(TupleExpr te, string type) { te.getType().toString() = type } + +query predicate patternExprTypes(PatternExpr pattern, string type) { + pattern.getType().toString() = type +} diff --git a/csharp/ql/test/library-tests/csharp9/PrintAst.expected b/csharp/ql/test/library-tests/csharp9/PrintAst.expected index 459349fb9fc8..f86c98e4c6cf 100644 --- a/csharp/ql/test/library-tests/csharp9/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp9/PrintAst.expected @@ -241,7 +241,7 @@ ForeachExtension.cs: # 23| 0: [TypeMention] Enumerable # 23| 0: [IntLiteral] 0 # 23| 1: [IntLiteral] 10 -# 24| 1: [ForeachStmt] foreach (... ... in ...) ... +# 24| 1: [ForEachStmt] foreach (... ... in ...) ... # 24| 0: [LocalVariableDeclExpr] Int32 item # 24| 0: [TypeMention] int # 24| 1: [LocalVariableAccess] access to local variable enumerator1 @@ -252,17 +252,17 @@ ForeachExtension.cs: # 28| 1: [TypeMention] int # 28| 0: [LocalVariableAccess] access to local variable enumerator2 # 28| 1: [MethodCall] call to method GetAsyncEnumerator -# 29| 3: [ForeachStmt] foreach (... ... in ...) ... +# 29| 3: [ForEachStmt] foreach (... ... in ...) ... # 29| 0: [LocalVariableDeclExpr] Int32 item # 29| 0: [TypeMention] int # 29| 1: [LocalVariableAccess] access to local variable enumerator2 # 30| 2: [BlockStmt] {...} -# 33| 4: [ForeachStmt] foreach (... ... in ...) ... +# 33| 4: [ForEachStmt] foreach (... ... in ...) ... # 33| 0: [LocalVariableDeclExpr] Int32 item # 33| 0: [TypeMention] int # 33| 1: [IntLiteral] 42 # 34| 2: [BlockStmt] {...} -# 37| 5: [ForeachStmt] foreach (... ... in ...) ... +# 37| 5: [ForEachStmt] foreach (... ... in ...) ... # 37| 0: [LocalVariableDeclExpr] Int32 i # 37| 0: [TypeMention] int # 37| 1: [ArrayCreation] array creation of type Int32[] diff --git a/csharp/ql/test/library-tests/csharp9/foreach.ql b/csharp/ql/test/library-tests/csharp9/foreach.ql index 343ecc556ab8..eae1f44fdd25 100644 --- a/csharp/ql/test/library-tests/csharp9/foreach.ql +++ b/csharp/ql/test/library-tests/csharp9/foreach.ql @@ -4,11 +4,11 @@ private string getLocation(Member m) { if m.fromSource() then result = m.getALocation().(SourceLocation).toString() else result = "-" } -private string getIsAsync(ForeachStmt f) { +private string getIsAsync(ForEachStmt f) { if f.isAsync() then result = "async" else result = "sync" } -from ForeachStmt f +from ForEachStmt f select f, f.getElementType().toString(), getIsAsync(f), f.getGetEnumerator().getDeclaringType().getFullyQualifiedNameDebug(), getLocation(f.getGetEnumerator()), f.getCurrent().getDeclaringType().getFullyQualifiedNameDebug(), diff --git a/csharp/ql/test/library-tests/csharp9/patternExprTypes.expected b/csharp/ql/test/library-tests/csharp9/patternExprTypes.expected new file mode 100644 index 000000000000..f85df3d0802d --- /dev/null +++ b/csharp/ql/test/library-tests/csharp9/patternExprTypes.expected @@ -0,0 +1,61 @@ +| BinaryPattern.cs:8:14:8:16 | a | Char | +| BinaryPattern.cs:8:14:8:23 | ... or ... | Char | +| BinaryPattern.cs:8:21:8:23 | b | Char | +| BinaryPattern.cs:10:14:10:21 | Object o | Object | +| BinaryPattern.cs:10:14:10:51 | ... and ... | BinaryPattern | +| BinaryPattern.cs:10:27:10:39 | access to type BinaryPattern | BinaryPattern | +| BinaryPattern.cs:10:27:10:51 | BinaryPattern u | BinaryPattern | +| BinaryPattern.cs:10:27:10:51 | { ... } | BinaryPattern | +| BinaryPattern.cs:10:41:10:49 | { ... } | null | +| BinaryPattern.cs:10:47:10:47 | 1 | Int32 | +| BinaryPattern.cs:12:14:12:21 | Object o | Object | +| BinaryPattern.cs:12:14:12:41 | ... and ... | BinaryPattern | +| BinaryPattern.cs:12:27:12:41 | BinaryPattern u | BinaryPattern | +| BinaryPattern.cs:18:13:18:13 | 1 | Int32 | +| BinaryPattern.cs:18:13:18:18 | ... or ... | Int32 | +| BinaryPattern.cs:18:18:18:18 | 2 | Int32 | +| BinaryPattern.cs:19:13:19:13 | _ | Int32 | +| ParenthesizedPattern.cs:9:18:9:19 | { ... } | null | +| ParenthesizedPattern.cs:9:18:9:22 | Object p1 | Object | +| ParenthesizedPattern.cs:9:18:9:22 | { ... } | Object | +| ParenthesizedPattern.cs:13:19:13:20 | { ... } | null | +| ParenthesizedPattern.cs:13:19:13:23 | Object p2 | Object | +| ParenthesizedPattern.cs:13:19:13:23 | { ... } | Object | +| ParenthesizedPattern.cs:22:13:22:13 | 1 | Int32 | +| ParenthesizedPattern.cs:23:14:23:14 | 2 | Int32 | +| ParenthesizedPattern.cs:24:13:24:15 | T t | T | +| ParenthesizedPattern.cs:24:27:24:28 | { ... } | T | +| ParenthesizedPattern.cs:24:27:24:28 | { ... } | null | +| ParenthesizedPattern.cs:25:14:25:22 | Object o1 | Object | +| ParenthesizedPattern.cs:25:37:25:38 | { ... } | Object | +| ParenthesizedPattern.cs:25:37:25:38 | { ... } | null | +| ParenthesizedPattern.cs:26:14:26:19 | access to type String | String | +| RelationalPattern.cs:6:14:6:19 | >= ... | Char | +| RelationalPattern.cs:8:14:8:18 | > ... | Char | +| RelationalPattern.cs:10:14:10:19 | <= ... | Char | +| RelationalPattern.cs:12:14:12:18 | < ... | Char | +| RelationalPattern.cs:18:13:18:13 | 1 | Int32 | +| RelationalPattern.cs:19:13:19:14 | > ... | Int32 | +| RelationalPattern.cs:20:13:20:13 | _ | Int32 | +| TargetType.cs:31:38:31:41 | null | null | +| TypePattern.cs:8:18:8:30 | ( ... ) | null | +| TypePattern.cs:8:18:8:30 | { ... } | (Object,Object) | +| TypePattern.cs:8:19:8:21 | access to type Int32 | Int32 | +| TypePattern.cs:8:24:8:29 | access to type String | String | +| TypePattern.cs:11:13:11:15 | access to type Int32 | Int32 | +| TypePattern.cs:12:13:12:20 | Double d | Double | +| TypePattern.cs:13:13:13:25 | access to type String | String | +| TypePattern.cs:14:13:14:27 | Object o | Object | +| UnaryPattern.cs:8:14:8:20 | not ... | Char | +| UnaryPattern.cs:8:18:8:20 | a | Char | +| UnaryPattern.cs:10:14:10:21 | not ... | Object | +| UnaryPattern.cs:10:18:10:21 | null | null | +| UnaryPattern.cs:12:14:12:41 | not ... | Object | +| UnaryPattern.cs:12:18:12:29 | access to type UnaryPattern | UnaryPattern | +| UnaryPattern.cs:12:18:12:41 | UnaryPattern u | UnaryPattern | +| UnaryPattern.cs:12:18:12:41 | { ... } | UnaryPattern | +| UnaryPattern.cs:12:31:12:39 | { ... } | null | +| UnaryPattern.cs:12:37:12:37 | 1 | Int32 | +| UnaryPattern.cs:18:13:18:17 | not ... | Int32 | +| UnaryPattern.cs:18:17:18:17 | 1 | Int32 | +| UnaryPattern.cs:19:13:19:13 | _ | Int32 | diff --git a/csharp/ql/test/library-tests/csharp9/patternExprTypes.ql b/csharp/ql/test/library-tests/csharp9/patternExprTypes.ql new file mode 100644 index 000000000000..814019ecc818 --- /dev/null +++ b/csharp/ql/test/library-tests/csharp9/patternExprTypes.ql @@ -0,0 +1,4 @@ +import csharp + +from PatternExpr pattern +select pattern, pattern.getType().toString() diff --git a/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected b/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected index 583bae92d93f..615f40e15850 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/DataFlowStep.expected @@ -108,7 +108,6 @@ | Tuples.cs:59:17:59:32 | (..., ...) | Tuples.cs:59:13:59:13 | access to local variable x | | Tuples.cs:60:17:60:17 | access to local variable x | Tuples.cs:62:18:62:57 | (String,(Int32,String),Int32) t | | Tuples.cs:60:17:60:17 | access to local variable x | Tuples.cs:67:18:67:35 | (..., ...) | -| Tuples.cs:60:17:60:17 | access to local variable x | Tuples.cs:67:18:67:35 | (..., ...) | | Tuples.cs:60:17:60:17 | access to local variable x | Tuples.cs:87:13:87:13 | access to local variable x | | Tuples.cs:62:18:62:57 | (String,(Int32,String),Int32) t | Tuples.cs:62:18:62:57 | SSA def(t) | | Tuples.cs:62:18:62:57 | SSA def(t) | Tuples.cs:62:64:62:64 | access to local variable t | @@ -144,7 +143,7 @@ | Tuples.cs:75:13:75:30 | SSA qualifier def(y.Item2.Item2) | Tuples.cs:80:22:80:34 | access to field Item2 | | Tuples.cs:75:17:75:30 | (..., ...) | Tuples.cs:75:13:75:13 | access to local variable y | | Tuples.cs:75:18:75:18 | access to parameter s | Tuples.cs:75:25:75:25 | access to parameter s | -| Tuples.cs:76:17:76:17 | access to local variable y | Tuples.cs:78:26:78:35 | (..., ...) | +| Tuples.cs:76:17:76:17 | access to local variable y | Tuples.cs:78:18:78:39 | { ... } | | Tuples.cs:76:17:76:17 | access to local variable y | Tuples.cs:79:22:79:22 | access to local variable y | | Tuples.cs:78:19:78:23 | SSA def(a) | Tuples.cs:78:46:78:46 | access to local variable a | | Tuples.cs:78:19:78:23 | String a | Tuples.cs:78:19:78:23 | SSA def(a) | @@ -161,7 +160,6 @@ | Tuples.cs:82:22:82:34 | access to field Item1 | Tuples.cs:82:22:82:34 | (...) ... | | Tuples.cs:83:22:83:22 | access to local variable b | Tuples.cs:83:22:83:22 | (...) ... | | Tuples.cs:87:13:87:13 | access to local variable x | Tuples.cs:87:18:87:35 | (..., ...) | -| Tuples.cs:87:13:87:13 | access to local variable x | Tuples.cs:87:18:87:35 | (..., ...) | | Tuples.cs:87:23:87:23 | SSA def(p) | Tuples.cs:89:18:89:18 | access to local variable p | | Tuples.cs:87:23:87:23 | String p | Tuples.cs:87:23:87:23 | SSA def(p) | | Tuples.cs:87:27:87:27 | Int32 q | Tuples.cs:87:27:87:27 | SSA def(q) | @@ -229,4 +227,62 @@ | Tuples.cs:133:24:133:29 | (..., ...) | Tuples.cs:133:9:133:20 | (..., ...) | | Tuples.cs:133:25:133:25 | 1 | Tuples.cs:133:9:133:29 | ... = ... | | Tuples.cs:133:28:133:28 | access to local variable o | Tuples.cs:133:18:133:19 | access to local variable y4 | -| Tuples.cs:144:18:144:31 | this | Tuples.cs:144:18:144:31 | this access | +| Tuples.cs:139:13:139:14 | access to local variable o1 | Tuples.cs:139:13:139:35 | SSA def(o1) | +| Tuples.cs:139:13:139:35 | SSA def(o1) | Tuples.cs:141:18:141:19 | access to local variable o1 | +| Tuples.cs:139:18:139:35 | call to method Source | Tuples.cs:139:13:139:14 | access to local variable o1 | +| Tuples.cs:139:33:139:34 | 10 | Tuples.cs:139:33:139:34 | (...) ... | +| Tuples.cs:140:13:140:14 | access to local variable o2 | Tuples.cs:140:13:140:35 | SSA def(o2) | +| Tuples.cs:140:13:140:35 | SSA def(o2) | Tuples.cs:141:26:141:27 | access to local variable o2 | +| Tuples.cs:140:18:140:35 | call to method Source | Tuples.cs:140:13:140:14 | access to local variable o2 | +| Tuples.cs:140:33:140:34 | 11 | Tuples.cs:140:33:140:34 | (...) ... | +| Tuples.cs:141:13:141:13 | access to local variable x | Tuples.cs:141:13:141:32 | SSA def(x) | +| Tuples.cs:141:13:141:32 | SSA def(x) | Tuples.cs:142:17:142:17 | access to local variable x | +| Tuples.cs:141:17:141:32 | (..., ...) | Tuples.cs:141:13:141:13 | access to local variable x | +| Tuples.cs:142:17:142:17 | access to local variable x | Tuples.cs:144:18:144:46 | { ... } | +| Tuples.cs:144:19:144:24 | SSA def(a1) | Tuples.cs:145:22:145:23 | access to local variable a1 | +| Tuples.cs:144:19:144:24 | String a1 | Tuples.cs:144:19:144:24 | SSA def(a1) | +| Tuples.cs:144:28:144:33 | Int32 b1 | Tuples.cs:144:28:144:33 | SSA def(b1) | +| Tuples.cs:144:28:144:33 | SSA def(b1) | Tuples.cs:147:22:147:23 | access to local variable b1 | +| Tuples.cs:144:36:144:41 | SSA def(c1) | Tuples.cs:146:22:146:23 | access to local variable c1 | +| Tuples.cs:144:36:144:41 | String c1 | Tuples.cs:144:36:144:41 | SSA def(c1) | +| Tuples.cs:147:22:147:23 | access to local variable b1 | Tuples.cs:147:22:147:23 | (...) ... | +| Tuples.cs:151:13:151:14 | access to local variable o3 | Tuples.cs:151:13:151:35 | SSA def(o3) | +| Tuples.cs:151:13:151:35 | SSA def(o3) | Tuples.cs:153:18:153:19 | access to local variable o3 | +| Tuples.cs:151:18:151:35 | call to method Source | Tuples.cs:151:13:151:14 | access to local variable o3 | +| Tuples.cs:151:33:151:34 | 12 | Tuples.cs:151:33:151:34 | (...) ... | +| Tuples.cs:152:13:152:14 | access to local variable o4 | Tuples.cs:152:13:152:35 | SSA def(o4) | +| Tuples.cs:152:13:152:35 | SSA def(o4) | Tuples.cs:153:26:153:27 | access to local variable o4 | +| Tuples.cs:152:18:152:35 | call to method Source | Tuples.cs:152:13:152:14 | access to local variable o4 | +| Tuples.cs:152:33:152:34 | 13 | Tuples.cs:152:33:152:34 | (...) ... | +| Tuples.cs:153:13:153:13 | access to local variable y | Tuples.cs:153:13:153:32 | SSA def(y) | +| Tuples.cs:153:13:153:32 | SSA def(y) | Tuples.cs:154:13:154:13 | access to local variable y | +| Tuples.cs:153:17:153:32 | (..., ...) | Tuples.cs:153:13:153:13 | access to local variable y | +| Tuples.cs:154:13:154:13 | access to local variable y | Tuples.cs:154:18:154:42 | { ... } | +| Tuples.cs:154:19:154:24 | SSA def(a2) | Tuples.cs:156:18:156:19 | access to local variable a2 | +| Tuples.cs:154:19:154:24 | String a2 | Tuples.cs:154:19:154:24 | SSA def(a2) | +| Tuples.cs:154:32:154:33 | Int32 b2 | Tuples.cs:154:32:154:33 | SSA def(b2) | +| Tuples.cs:154:32:154:33 | SSA def(b2) | Tuples.cs:158:18:158:19 | access to local variable b2 | +| Tuples.cs:154:36:154:37 | SSA def(c2) | Tuples.cs:157:18:157:19 | access to local variable c2 | +| Tuples.cs:154:36:154:37 | String c2 | Tuples.cs:154:36:154:37 | SSA def(c2) | +| Tuples.cs:158:18:158:19 | access to local variable b2 | Tuples.cs:158:18:158:19 | (...) ... | +| Tuples.cs:161:13:161:14 | access to local variable o5 | Tuples.cs:161:13:161:35 | SSA def(o5) | +| Tuples.cs:161:13:161:35 | SSA def(o5) | Tuples.cs:163:18:163:19 | access to local variable o5 | +| Tuples.cs:161:18:161:35 | call to method Source | Tuples.cs:161:13:161:14 | access to local variable o5 | +| Tuples.cs:161:33:161:34 | 14 | Tuples.cs:161:33:161:34 | (...) ... | +| Tuples.cs:162:13:162:14 | access to local variable o6 | Tuples.cs:162:13:162:35 | SSA def(o6) | +| Tuples.cs:162:13:162:35 | SSA def(o6) | Tuples.cs:163:26:163:27 | access to local variable o6 | +| Tuples.cs:162:18:162:35 | call to method Source | Tuples.cs:162:13:162:14 | access to local variable o6 | +| Tuples.cs:162:33:162:34 | 15 | Tuples.cs:162:33:162:34 | (...) ... | +| Tuples.cs:163:13:163:13 | access to local variable z | Tuples.cs:163:13:163:32 | SSA def(z) | +| Tuples.cs:163:13:163:32 | SSA def(z) | Tuples.cs:164:13:164:13 | access to local variable z | +| Tuples.cs:163:17:163:32 | (..., ...) | Tuples.cs:163:13:163:13 | access to local variable z | +| Tuples.cs:164:13:164:13 | access to local variable z | Tuples.cs:164:18:164:47 | { ... } | +| Tuples.cs:164:19:164:24 | SSA def(a3) | Tuples.cs:166:18:166:19 | access to local variable a3 | +| Tuples.cs:164:19:164:24 | String a3 | Tuples.cs:164:19:164:24 | SSA def(a3) | +| Tuples.cs:164:27:164:43 | (Int32,String) t | Tuples.cs:164:27:164:43 | SSA def(t) | +| Tuples.cs:164:27:164:43 | SSA def(t) | Tuples.cs:167:18:167:18 | access to local variable t | +| Tuples.cs:164:27:164:43 | SSA qualifier def(t.Item2) | Tuples.cs:167:18:167:24 | access to field Item2 | +| Tuples.cs:164:28:164:33 | Int32 b3 | Tuples.cs:164:28:164:33 | SSA def(b3) | +| Tuples.cs:164:28:164:33 | SSA def(b3) | Tuples.cs:168:18:168:19 | access to local variable b3 | +| Tuples.cs:168:18:168:19 | access to local variable b3 | Tuples.cs:168:18:168:19 | (...) ... | +| Tuples.cs:179:18:179:31 | this | Tuples.cs:179:18:179:31 | this access | diff --git a/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected b/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected index 11e14eeb6c59..9e9edd2f5875 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected @@ -262,9 +262,9 @@ Tuples.cs: # 65| -1: [LocalVariableAccess] access to local variable t # 66| 4: [BreakStmt] break; # 67| 5: [CaseStmt] case ...: -# 67| 0: [TupleExpr] (..., ...) +# 67| 0: [TuplePatternExpr] (..., ...) # 67| 0: [VariablePatternExpr] String a -# 67| 1: [TupleExpr] (..., ...) +# 67| 1: [TuplePatternExpr] (..., ...) # 67| 0: [VariablePatternExpr] Int32 b # 67| 1: [VariablePatternExpr] String c # 67| 2: [DiscardPatternExpr] _ @@ -302,7 +302,7 @@ Tuples.cs: # 78| 0: [RecursivePatternExpr] { ... } # 78| 2: [PositionalPatternExpr] ( ... ) # 78| 0: [VariablePatternExpr] String a -# 78| 1: [TupleExpr] (..., ...) +# 78| 1: [TuplePatternExpr] (..., ...) # 78| 0: [VariablePatternExpr] Int32 b # 78| 1: [VariablePatternExpr] String c # 78| 2: [DiscardPatternExpr] _ @@ -335,9 +335,9 @@ Tuples.cs: # 87| 7: [IfStmt] if (...) ... # 87| 0: [IsExpr] ... is ... # 87| 0: [LocalVariableAccess] access to local variable x -# 87| 1: [TupleExpr] (..., ...) +# 87| 1: [TuplePatternExpr] (..., ...) # 87| 0: [VariablePatternExpr] String p -# 87| 1: [TupleExpr] (..., ...) +# 87| 1: [TuplePatternExpr] (..., ...) # 87| 0: [VariablePatternExpr] Int32 q # 87| 1: [VariablePatternExpr] String r # 87| 2: [DiscardPatternExpr] _ @@ -417,7 +417,7 @@ Tuples.cs: # 107| 6: [SwitchStmt] switch (...) {...} # 107| 0: [LocalVariableAccess] access to local variable r # 109| 0: [CaseStmt] case ...: -# 109| 0: [TupleExpr] (..., ...) +# 109| 0: [TuplePatternExpr] (..., ...) # 109| 0: [VariablePatternExpr] String x # 109| 1: [VariablePatternExpr] Int32 y # 110| 1: [ExprStmt] ...; @@ -504,20 +504,162 @@ Tuples.cs: # 134| 12: [ExprStmt] ...; # 134| 0: [MethodCall] call to method Sink # 134| 0: [LocalVariableAccess] access to local variable y4 -# 137| 13: [Method] Sink +# 137| 13: [Method] M7 # 137| -1: [TypeMention] Void +# 138| 4: [BlockStmt] {...} +# 139| 0: [LocalVariableDeclStmt] ... ...; +# 139| 0: [LocalVariableDeclAndInitExpr] String o1 = ... +# 139| -1: [TypeMention] string +# 139| 0: [LocalVariableAccess] access to local variable o1 +# 139| 1: [MethodCall] call to method Source +# 139| 0: [CastExpr] (...) ... +# 139| 1: [IntLiteral] 10 +# 140| 1: [LocalVariableDeclStmt] ... ...; +# 140| 0: [LocalVariableDeclAndInitExpr] String o2 = ... +# 140| -1: [TypeMention] string +# 140| 0: [LocalVariableAccess] access to local variable o2 +# 140| 1: [MethodCall] call to method Source +# 140| 0: [CastExpr] (...) ... +# 140| 1: [IntLiteral] 11 +# 141| 2: [LocalVariableDeclStmt] ... ...; +# 141| 0: [LocalVariableDeclAndInitExpr] (String,(Int32,String),Int32) x = ... +# 141| -1: [TypeMention] (string, (int, string), int) +# 141| 0: [LocalVariableAccess] access to local variable x +# 141| 1: [TupleExpr] (..., ...) +# 141| 0: [LocalVariableAccess] access to local variable o1 +# 141| 1: [TupleExpr] (..., ...) +# 141| 0: [IntLiteral] 2 +# 141| 1: [LocalVariableAccess] access to local variable o2 +# 141| 2: [IntLiteral] 3 +# 142| 3: [SwitchStmt] switch (...) {...} +# 142| 0: [LocalVariableAccess] access to local variable x +# 144| 0: [CaseStmt] case ...: +# 144| 0: [RecursivePatternExpr] { ... } +# 144| 2: [PositionalPatternExpr] ( ... ) +# 144| 0: [VariablePatternExpr] String a1 +# 144| 1: [RecursivePatternExpr] { ... } +# 144| 2: [PositionalPatternExpr] ( ... ) +# 144| 0: [VariablePatternExpr] Int32 b1 +# 144| 1: [VariablePatternExpr] String c1 +# 144| 2: [DiscardPatternExpr] _ +# 145| 1: [ExprStmt] ...; +# 145| 0: [MethodCall] call to method Sink +# 145| 0: [LocalVariableAccess] access to local variable a1 +# 146| 2: [ExprStmt] ...; +# 146| 0: [MethodCall] call to method Sink +# 146| 0: [LocalVariableAccess] access to local variable c1 +# 147| 3: [ExprStmt] ...; +# 147| 0: [MethodCall] call to method Sink +# 147| 0: [CastExpr] (...) ... +# 147| 1: [LocalVariableAccess] access to local variable b1 +# 148| 4: [BreakStmt] break; +# 151| 4: [LocalVariableDeclStmt] ... ...; +# 151| 0: [LocalVariableDeclAndInitExpr] String o3 = ... +# 151| -1: [TypeMention] string +# 151| 0: [LocalVariableAccess] access to local variable o3 +# 151| 1: [MethodCall] call to method Source +# 151| 0: [CastExpr] (...) ... +# 151| 1: [IntLiteral] 12 +# 152| 5: [LocalVariableDeclStmt] ... ...; +# 152| 0: [LocalVariableDeclAndInitExpr] String o4 = ... +# 152| -1: [TypeMention] string +# 152| 0: [LocalVariableAccess] access to local variable o4 +# 152| 1: [MethodCall] call to method Source +# 152| 0: [CastExpr] (...) ... +# 152| 1: [IntLiteral] 13 +# 153| 6: [LocalVariableDeclStmt] ... ...; +# 153| 0: [LocalVariableDeclAndInitExpr] (String,(Int32,String),Int32) y = ... +# 153| -1: [TypeMention] (string, (int, string), int) +# 153| 0: [LocalVariableAccess] access to local variable y +# 153| 1: [TupleExpr] (..., ...) +# 153| 0: [LocalVariableAccess] access to local variable o3 +# 153| 1: [TupleExpr] (..., ...) +# 153| 0: [IntLiteral] 2 +# 153| 1: [LocalVariableAccess] access to local variable o4 +# 153| 2: [IntLiteral] 3 +# 154| 7: [IfStmt] if (...) ... +# 154| 0: [IsExpr] ... is ... +# 154| 0: [LocalVariableAccess] access to local variable y +# 154| 1: [RecursivePatternExpr] { ... } +# 154| 2: [PositionalPatternExpr] ( ... ) +# 154| 0: [VariablePatternExpr] String a2 +# 154| 1: [TuplePatternExpr] (..., ...) +# 154| 0: [VariablePatternExpr] Int32 b2 +# 154| 1: [VariablePatternExpr] String c2 +# 154| 2: [DiscardPatternExpr] _ +# 155| 1: [BlockStmt] {...} +# 156| 0: [ExprStmt] ...; +# 156| 0: [MethodCall] call to method Sink +# 156| 0: [LocalVariableAccess] access to local variable a2 +# 157| 1: [ExprStmt] ...; +# 157| 0: [MethodCall] call to method Sink +# 157| 0: [LocalVariableAccess] access to local variable c2 +# 158| 2: [ExprStmt] ...; +# 158| 0: [MethodCall] call to method Sink +# 158| 0: [CastExpr] (...) ... +# 158| 1: [LocalVariableAccess] access to local variable b2 +# 161| 8: [LocalVariableDeclStmt] ... ...; +# 161| 0: [LocalVariableDeclAndInitExpr] String o5 = ... +# 161| -1: [TypeMention] string +# 161| 0: [LocalVariableAccess] access to local variable o5 +# 161| 1: [MethodCall] call to method Source +# 161| 0: [CastExpr] (...) ... +# 161| 1: [IntLiteral] 14 +# 162| 9: [LocalVariableDeclStmt] ... ...; +# 162| 0: [LocalVariableDeclAndInitExpr] String o6 = ... +# 162| -1: [TypeMention] string +# 162| 0: [LocalVariableAccess] access to local variable o6 +# 162| 1: [MethodCall] call to method Source +# 162| 0: [CastExpr] (...) ... +# 162| 1: [IntLiteral] 15 +# 163| 10: [LocalVariableDeclStmt] ... ...; +# 163| 0: [LocalVariableDeclAndInitExpr] (String,(Int32,String),Int32) z = ... +# 163| -1: [TypeMention] (string, (int, string), int) +# 163| 0: [LocalVariableAccess] access to local variable z +# 163| 1: [TupleExpr] (..., ...) +# 163| 0: [LocalVariableAccess] access to local variable o5 +# 163| 1: [TupleExpr] (..., ...) +# 163| 0: [IntLiteral] 2 +# 163| 1: [LocalVariableAccess] access to local variable o6 +# 163| 2: [IntLiteral] 3 +# 164| 11: [IfStmt] if (...) ... +# 164| 0: [IsExpr] ... is ... +# 164| 0: [LocalVariableAccess] access to local variable z +# 164| 1: [RecursivePatternExpr] { ... } +# 164| 2: [PositionalPatternExpr] ( ... ) +# 164| 0: [VariablePatternExpr] String a3 +# 164| 1: [RecursivePatternExpr] { ... } +# 164| 0: [VariablePatternExpr] (Int32,String) t +# 164| 2: [PositionalPatternExpr] ( ... ) +# 164| 0: [VariablePatternExpr] Int32 b3 +# 164| 1: [DiscardPatternExpr] _ +# 164| 2: [DiscardPatternExpr] _ +# 165| 1: [BlockStmt] {...} +# 166| 0: [ExprStmt] ...; +# 166| 0: [MethodCall] call to method Sink +# 166| 0: [LocalVariableAccess] access to local variable a3 +# 167| 1: [ExprStmt] ...; +# 167| 0: [MethodCall] call to method Sink +# 167| 0: [FieldAccess] access to field Item2 +# 167| -1: [LocalVariableAccess] access to local variable t +# 168| 2: [ExprStmt] ...; +# 168| 0: [MethodCall] call to method Sink +# 168| 0: [CastExpr] (...) ... +# 168| 1: [LocalVariableAccess] access to local variable b3 +# 172| 14: [Method] Sink +# 172| -1: [TypeMention] Void #-----| 2: (Parameters) -# 137| 0: [Parameter] o -# 137| -1: [TypeMention] object -# 137| 4: [BlockStmt] {...} -# 139| 16: [Method] Source`1 -# 139| -1: [TypeMention] T +# 172| 0: [Parameter] o +# 172| -1: [TypeMention] object +# 172| 4: [BlockStmt] {...} +# 174| 17: [Method] Source`1 +# 174| -1: [TypeMention] T #-----| 1: (Type parameters) -# 139| 0: [TypeParameter] T +# 174| 0: [TypeParameter] T #-----| 2: (Parameters) -# 139| 0: [Parameter] source -# 139| -1: [TypeMention] object -# 139| 4: [ThrowExpr] throw ... -# 139| 0: [NullLiteral] null -# 142| [NamespaceDeclaration] namespace ... { ... } -# 144| 1: [Class] IsExternalInit +# 174| 0: [Parameter] source +# 174| -1: [TypeMention] object +# 174| 4: [ThrowExpr] throw ... +# 174| 0: [NullLiteral] null +# 177| [NamespaceDeclaration] namespace ... { ... } +# 179| 1: [Class] IsExternalInit diff --git a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.cs b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.cs index a57bd0ccc7af..a3f4a336acd1 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.cs +++ b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.cs @@ -134,6 +134,41 @@ static void M6() Sink(y4); // $ hasValueFlow=9 } + static void M7() + { + var o1 = Source(10); + var o2 = Source(11); + var x = (o1, (2, o2), 3); + switch (x) + { + case (var a1, (var b1, var c1), _): + Sink(a1); // $ hasValueFlow=10 + Sink(c1); // $ hasValueFlow=11 + Sink(b1); + break; + } + + var o3 = Source(12); + var o4 = Source(13); + var y = (o3, (2, o4), 3); + if (y is (var a2, var (b2, c2), _)) + { + Sink(a2); // $ hasValueFlow=12 + Sink(c2); // $ hasValueFlow=13 + Sink(b2); + } + + var o5 = Source(14); + var o6 = Source(15); + var z = (o5, (2, o6), 3); + if (z is (var a3, (var b3, var _) t, _)) + { + Sink(a3); // $ hasValueFlow=14 + Sink(t.Item2); // $ hasValueFlow=15 + Sink(b3); + } + } + public static void Sink(object o) { } static T Source(object source) => throw null; @@ -142,4 +177,4 @@ public static void Sink(object o) { } namespace System.Runtime.CompilerServices { public class IsExternalInit { } -} \ No newline at end of file +} diff --git a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected index 41ea12890262..e3b79c4c0eb9 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected @@ -214,6 +214,90 @@ edges | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | | Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | | Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:139:13:139:14 | access to local variable o1 : String | Tuples.cs:141:18:141:19 | access to local variable o1 : String | provenance | | +| Tuples.cs:139:13:139:14 | access to local variable o1 : String | Tuples.cs:141:18:141:19 | access to local variable o1 : String | provenance | | +| Tuples.cs:139:18:139:35 | call to method Source : String | Tuples.cs:139:13:139:14 | access to local variable o1 : String | provenance | | +| Tuples.cs:139:18:139:35 | call to method Source : String | Tuples.cs:139:13:139:14 | access to local variable o1 : String | provenance | | +| Tuples.cs:140:13:140:14 | access to local variable o2 : String | Tuples.cs:141:26:141:27 | access to local variable o2 : String | provenance | | +| Tuples.cs:140:13:140:14 | access to local variable o2 : String | Tuples.cs:141:26:141:27 | access to local variable o2 : String | provenance | | +| Tuples.cs:140:18:140:35 | call to method Source : String | Tuples.cs:140:13:140:14 | access to local variable o2 : String | provenance | | +| Tuples.cs:140:18:140:35 | call to method Source : String | Tuples.cs:140:13:140:14 | access to local variable o2 : String | provenance | | +| Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item1] : String | Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item1] : String | Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:141:18:141:19 | access to local variable o1 : String | Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:141:18:141:19 | access to local variable o1 : String | Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:141:22:141:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:141:22:141:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:141:26:141:27 | access to local variable o2 : String | Tuples.cs:141:22:141:28 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:141:26:141:27 | access to local variable o2 : String | Tuples.cs:141:22:141:28 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item1] : String | Tuples.cs:145:22:145:23 | access to local variable a1 | provenance | | +| Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item1] : String | Tuples.cs:145:22:145:23 | access to local variable a1 | provenance | | +| Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:144:27:144:42 | { ... } : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:144:27:144:42 | { ... } : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:144:27:144:42 | { ... } : ValueTuple [field Item2] : String | Tuples.cs:146:22:146:23 | access to local variable c1 | provenance | | +| Tuples.cs:144:27:144:42 | { ... } : ValueTuple [field Item2] : String | Tuples.cs:146:22:146:23 | access to local variable c1 | provenance | | +| Tuples.cs:151:13:151:14 | access to local variable o3 : String | Tuples.cs:153:18:153:19 | access to local variable o3 : String | provenance | | +| Tuples.cs:151:13:151:14 | access to local variable o3 : String | Tuples.cs:153:18:153:19 | access to local variable o3 : String | provenance | | +| Tuples.cs:151:18:151:35 | call to method Source : String | Tuples.cs:151:13:151:14 | access to local variable o3 : String | provenance | | +| Tuples.cs:151:18:151:35 | call to method Source : String | Tuples.cs:151:13:151:14 | access to local variable o3 : String | provenance | | +| Tuples.cs:152:13:152:14 | access to local variable o4 : String | Tuples.cs:153:26:153:27 | access to local variable o4 : String | provenance | | +| Tuples.cs:152:13:152:14 | access to local variable o4 : String | Tuples.cs:153:26:153:27 | access to local variable o4 : String | provenance | | +| Tuples.cs:152:18:152:35 | call to method Source : String | Tuples.cs:152:13:152:14 | access to local variable o4 : String | provenance | | +| Tuples.cs:152:18:152:35 | call to method Source : String | Tuples.cs:152:13:152:14 | access to local variable o4 : String | provenance | | +| Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item1] : String | Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item1] : String | Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:153:18:153:19 | access to local variable o3 : String | Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:153:18:153:19 | access to local variable o3 : String | Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:153:22:153:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:153:22:153:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:153:26:153:27 | access to local variable o4 : String | Tuples.cs:153:22:153:28 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:153:26:153:27 | access to local variable o4 : String | Tuples.cs:153:22:153:28 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item1] : String | Tuples.cs:156:18:156:19 | access to local variable a2 | provenance | | +| Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item1] : String | Tuples.cs:156:18:156:19 | access to local variable a2 | provenance | | +| Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:154:27:154:38 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:154:27:154:38 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:154:27:154:38 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:157:18:157:19 | access to local variable c2 | provenance | | +| Tuples.cs:154:27:154:38 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:157:18:157:19 | access to local variable c2 | provenance | | +| Tuples.cs:161:13:161:14 | access to local variable o5 : String | Tuples.cs:163:18:163:19 | access to local variable o5 : String | provenance | | +| Tuples.cs:161:13:161:14 | access to local variable o5 : String | Tuples.cs:163:18:163:19 | access to local variable o5 : String | provenance | | +| Tuples.cs:161:18:161:35 | call to method Source : String | Tuples.cs:161:13:161:14 | access to local variable o5 : String | provenance | | +| Tuples.cs:161:18:161:35 | call to method Source : String | Tuples.cs:161:13:161:14 | access to local variable o5 : String | provenance | | +| Tuples.cs:162:13:162:14 | access to local variable o6 : String | Tuples.cs:163:26:163:27 | access to local variable o6 : String | provenance | | +| Tuples.cs:162:13:162:14 | access to local variable o6 : String | Tuples.cs:163:26:163:27 | access to local variable o6 : String | provenance | | +| Tuples.cs:162:18:162:35 | call to method Source : String | Tuples.cs:162:13:162:14 | access to local variable o6 : String | provenance | | +| Tuples.cs:162:18:162:35 | call to method Source : String | Tuples.cs:162:13:162:14 | access to local variable o6 : String | provenance | | +| Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item1] : String | Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item1] : String | Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:163:18:163:19 | access to local variable o5 : String | Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:163:18:163:19 | access to local variable o5 : String | Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:163:22:163:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:163:22:163:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:163:26:163:27 | access to local variable o6 : String | Tuples.cs:163:22:163:28 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:163:26:163:27 | access to local variable o6 : String | Tuples.cs:163:22:163:28 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item1] : String | Tuples.cs:166:18:166:19 | access to local variable a3 | provenance | | +| Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item1] : String | Tuples.cs:166:18:166:19 | access to local variable a3 | provenance | | +| Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:167:18:167:18 | access to local variable t : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:167:18:167:18 | access to local variable t : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:167:18:167:18 | access to local variable t : ValueTuple [field Item2] : String | Tuples.cs:167:18:167:24 | access to field Item2 | provenance | | +| Tuples.cs:167:18:167:18 | access to local variable t : ValueTuple [field Item2] : String | Tuples.cs:167:18:167:24 | access to field Item2 | provenance | | nodes | Tuples.cs:7:13:7:14 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | | Tuples.cs:7:13:7:14 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | @@ -439,6 +523,102 @@ nodes | Tuples.cs:133:28:133:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | | Tuples.cs:134:14:134:15 | access to local variable y4 | semmle.label | access to local variable y4 | | Tuples.cs:134:14:134:15 | access to local variable y4 | semmle.label | access to local variable y4 | +| Tuples.cs:139:13:139:14 | access to local variable o1 : String | semmle.label | access to local variable o1 : String | +| Tuples.cs:139:13:139:14 | access to local variable o1 : String | semmle.label | access to local variable o1 : String | +| Tuples.cs:139:18:139:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:139:18:139:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:140:13:140:14 | access to local variable o2 : String | semmle.label | access to local variable o2 : String | +| Tuples.cs:140:13:140:14 | access to local variable o2 : String | semmle.label | access to local variable o2 : String | +| Tuples.cs:140:18:140:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:140:18:140:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable x : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable x : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable x : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:141:13:141:13 | access to local variable x : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable x : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:141:17:141:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:141:18:141:19 | access to local variable o1 : String | semmle.label | access to local variable o1 : String | +| Tuples.cs:141:18:141:19 | access to local variable o1 : String | semmle.label | access to local variable o1 : String | +| Tuples.cs:141:22:141:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:141:22:141:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:141:26:141:27 | access to local variable o2 : String | semmle.label | access to local variable o2 : String | +| Tuples.cs:141:26:141:27 | access to local variable o2 : String | semmle.label | access to local variable o2 : String | +| Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item1] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item1] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:144:18:144:46 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:144:27:144:42 | { ... } : ValueTuple [field Item2] : String | semmle.label | { ... } : ValueTuple [field Item2] : String | +| Tuples.cs:144:27:144:42 | { ... } : ValueTuple [field Item2] : String | semmle.label | { ... } : ValueTuple [field Item2] : String | +| Tuples.cs:145:22:145:23 | access to local variable a1 | semmle.label | access to local variable a1 | +| Tuples.cs:145:22:145:23 | access to local variable a1 | semmle.label | access to local variable a1 | +| Tuples.cs:146:22:146:23 | access to local variable c1 | semmle.label | access to local variable c1 | +| Tuples.cs:146:22:146:23 | access to local variable c1 | semmle.label | access to local variable c1 | +| Tuples.cs:151:13:151:14 | access to local variable o3 : String | semmle.label | access to local variable o3 : String | +| Tuples.cs:151:13:151:14 | access to local variable o3 : String | semmle.label | access to local variable o3 : String | +| Tuples.cs:151:18:151:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:151:18:151:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:152:13:152:14 | access to local variable o4 : String | semmle.label | access to local variable o4 : String | +| Tuples.cs:152:13:152:14 | access to local variable o4 : String | semmle.label | access to local variable o4 : String | +| Tuples.cs:152:18:152:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:152:18:152:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable y : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable y : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable y : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:153:13:153:13 | access to local variable y : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable y : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:153:17:153:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:153:18:153:19 | access to local variable o3 : String | semmle.label | access to local variable o3 : String | +| Tuples.cs:153:18:153:19 | access to local variable o3 : String | semmle.label | access to local variable o3 : String | +| Tuples.cs:153:22:153:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:153:22:153:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:153:26:153:27 | access to local variable o4 : String | semmle.label | access to local variable o4 : String | +| Tuples.cs:153:26:153:27 | access to local variable o4 : String | semmle.label | access to local variable o4 : String | +| Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item1] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item1] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:154:18:154:42 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:154:27:154:38 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:154:27:154:38 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:156:18:156:19 | access to local variable a2 | semmle.label | access to local variable a2 | +| Tuples.cs:156:18:156:19 | access to local variable a2 | semmle.label | access to local variable a2 | +| Tuples.cs:157:18:157:19 | access to local variable c2 | semmle.label | access to local variable c2 | +| Tuples.cs:157:18:157:19 | access to local variable c2 | semmle.label | access to local variable c2 | +| Tuples.cs:161:13:161:14 | access to local variable o5 : String | semmle.label | access to local variable o5 : String | +| Tuples.cs:161:13:161:14 | access to local variable o5 : String | semmle.label | access to local variable o5 : String | +| Tuples.cs:161:18:161:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:161:18:161:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:162:13:162:14 | access to local variable o6 : String | semmle.label | access to local variable o6 : String | +| Tuples.cs:162:13:162:14 | access to local variable o6 : String | semmle.label | access to local variable o6 : String | +| Tuples.cs:162:18:162:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:162:18:162:35 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable z : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable z : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable z : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:163:13:163:13 | access to local variable z : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable z : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:163:17:163:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:163:18:163:19 | access to local variable o5 : String | semmle.label | access to local variable o5 : String | +| Tuples.cs:163:18:163:19 | access to local variable o5 : String | semmle.label | access to local variable o5 : String | +| Tuples.cs:163:22:163:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:163:22:163:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:163:26:163:27 | access to local variable o6 : String | semmle.label | access to local variable o6 : String | +| Tuples.cs:163:26:163:27 | access to local variable o6 : String | semmle.label | access to local variable o6 : String | +| Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item1] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item1] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:164:18:164:47 | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | { ... } : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:166:18:166:19 | access to local variable a3 | semmle.label | access to local variable a3 | +| Tuples.cs:166:18:166:19 | access to local variable a3 | semmle.label | access to local variable a3 | +| Tuples.cs:167:18:167:18 | access to local variable t : ValueTuple [field Item2] : String | semmle.label | access to local variable t : ValueTuple [field Item2] : String | +| Tuples.cs:167:18:167:18 | access to local variable t : ValueTuple [field Item2] : String | semmle.label | access to local variable t : ValueTuple [field Item2] : String | +| Tuples.cs:167:18:167:24 | access to field Item2 | semmle.label | access to field Item2 | +| Tuples.cs:167:18:167:24 | access to field Item2 | semmle.label | access to field Item2 | subpaths | Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:95:22:95:22 | i : String | Tuples.cs:95:12:95:13 | this [Return] : R1 [property i] : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | | Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:95:22:95:22 | i : String | Tuples.cs:95:12:95:13 | this [Return] : R1 [property i] : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | @@ -490,3 +670,15 @@ testFailures | Tuples.cs:130:14:130:15 | access to local variable y3 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:134:14:134:15 | access to local variable y4 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:134:14:134:15 | access to local variable y4 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:145:22:145:23 | access to local variable a1 | Tuples.cs:139:18:139:35 | call to method Source : String | Tuples.cs:145:22:145:23 | access to local variable a1 | $@ | Tuples.cs:139:18:139:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:145:22:145:23 | access to local variable a1 | Tuples.cs:139:18:139:35 | call to method Source : String | Tuples.cs:145:22:145:23 | access to local variable a1 | $@ | Tuples.cs:139:18:139:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:146:22:146:23 | access to local variable c1 | Tuples.cs:140:18:140:35 | call to method Source : String | Tuples.cs:146:22:146:23 | access to local variable c1 | $@ | Tuples.cs:140:18:140:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:146:22:146:23 | access to local variable c1 | Tuples.cs:140:18:140:35 | call to method Source : String | Tuples.cs:146:22:146:23 | access to local variable c1 | $@ | Tuples.cs:140:18:140:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:156:18:156:19 | access to local variable a2 | Tuples.cs:151:18:151:35 | call to method Source : String | Tuples.cs:156:18:156:19 | access to local variable a2 | $@ | Tuples.cs:151:18:151:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:156:18:156:19 | access to local variable a2 | Tuples.cs:151:18:151:35 | call to method Source : String | Tuples.cs:156:18:156:19 | access to local variable a2 | $@ | Tuples.cs:151:18:151:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:157:18:157:19 | access to local variable c2 | Tuples.cs:152:18:152:35 | call to method Source : String | Tuples.cs:157:18:157:19 | access to local variable c2 | $@ | Tuples.cs:152:18:152:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:157:18:157:19 | access to local variable c2 | Tuples.cs:152:18:152:35 | call to method Source : String | Tuples.cs:157:18:157:19 | access to local variable c2 | $@ | Tuples.cs:152:18:152:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:166:18:166:19 | access to local variable a3 | Tuples.cs:161:18:161:35 | call to method Source : String | Tuples.cs:166:18:166:19 | access to local variable a3 | $@ | Tuples.cs:161:18:161:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:166:18:166:19 | access to local variable a3 | Tuples.cs:161:18:161:35 | call to method Source : String | Tuples.cs:166:18:166:19 | access to local variable a3 | $@ | Tuples.cs:161:18:161:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:167:18:167:24 | access to field Item2 | Tuples.cs:162:18:162:35 | call to method Source : String | Tuples.cs:167:18:167:24 | access to field Item2 | $@ | Tuples.cs:162:18:162:35 | call to method Source : String | call to method Source : String | +| Tuples.cs:167:18:167:24 | access to field Item2 | Tuples.cs:162:18:162:35 | call to method Source : String | Tuples.cs:167:18:167:24 | access to field Item2 | $@ | Tuples.cs:162:18:162:35 | call to method Source : String | call to method Source : String | diff --git a/csharp/ql/test/library-tests/definitions/PrintAst.expected b/csharp/ql/test/library-tests/definitions/PrintAst.expected index 28196c75a857..fd9adbb2bff0 100644 --- a/csharp/ql/test/library-tests/definitions/PrintAst.expected +++ b/csharp/ql/test/library-tests/definitions/PrintAst.expected @@ -199,7 +199,7 @@ definitions.cs: # 86| 0: [LocalVariableDeclExpr] Exception e # 86| 0: [TypeMention] Exception # 87| 1: [BlockStmt] {...} -# 88| 0: [ForeachStmt] foreach (... ... in ...) ... +# 88| 0: [ForEachStmt] foreach (... ... in ...) ... # 88| 0: [LocalVariableDeclExpr] S1 s # 88| 0: [TypeMention] S1 # 88| 1: [ParameterAccess] access to parameter ss diff --git a/csharp/ql/test/library-tests/methods/PrintAst.expected b/csharp/ql/test/library-tests/methods/PrintAst.expected index 4810c6c0b5b7..f8a673575a12 100644 --- a/csharp/ql/test/library-tests/methods/PrintAst.expected +++ b/csharp/ql/test/library-tests/methods/PrintAst.expected @@ -323,7 +323,7 @@ methods.cs: # 127| 1: [StringLiteralUtf16] "22" # 127| 2: [StringLiteralUtf16] "333" # 127| 3: [StringLiteralUtf16] "4444" -# 128| 1: [ForeachStmt] foreach (... ... in ...) ... +# 128| 1: [ForEachStmt] foreach (... ... in ...) ... # 128| 0: [LocalVariableDeclExpr] String s # 128| 0: [TypeMention] string # 128| 1: [MethodCall] call to method Slice diff --git a/csharp/ql/test/library-tests/statements/Foreach1.ql b/csharp/ql/test/library-tests/statements/Foreach1.ql index 3f70956d9ca6..6f52f23fd988 100644 --- a/csharp/ql/test/library-tests/statements/Foreach1.ql +++ b/csharp/ql/test/library-tests/statements/Foreach1.ql @@ -4,5 +4,5 @@ import csharp -where forall(ForeachStmt s | exists(s.getBody()) and exists(s.getIterableExpr())) +where forall(ForEachStmt s | exists(s.getBody()) and exists(s.getIterableExpr())) select 1 diff --git a/csharp/ql/test/library-tests/statements/Foreach3.ql b/csharp/ql/test/library-tests/statements/Foreach3.ql index 9dfe5ba6a4e9..2ff6a0cdbe68 100644 --- a/csharp/ql/test/library-tests/statements/Foreach3.ql +++ b/csharp/ql/test/library-tests/statements/Foreach3.ql @@ -4,7 +4,7 @@ import csharp -from Method m, ForeachStmt s +from Method m, ForEachStmt s where m.getName() = "MainForeach" and s.getEnclosingCallable() = m and diff --git a/csharp/ql/test/library-tests/statements/PrintAst.expected b/csharp/ql/test/library-tests/statements/PrintAst.expected index 59af8ce4a2ea..7709f65b7c3c 100644 --- a/csharp/ql/test/library-tests/statements/PrintAst.expected +++ b/csharp/ql/test/library-tests/statements/PrintAst.expected @@ -357,7 +357,7 @@ statements.cs: # 139| -1: [TypeMention] String[] # 139| 1: [TypeMention] string # 140| 4: [BlockStmt] {...} -# 141| 0: [ForeachStmt] foreach (... ... in ...) ... +# 141| 0: [ForEachStmt] foreach (... ... in ...) ... # 141| 0: [LocalVariableDeclExpr] String s # 141| 0: [TypeMention] string # 141| 1: [ParameterAccess] access to parameter args @@ -501,7 +501,7 @@ statements.cs: # 192| 24: [Method] MainYield # 192| -1: [TypeMention] Void # 193| 4: [BlockStmt] {...} -# 194| 0: [ForeachStmt] foreach (... ... in ...) ... +# 194| 0: [ForEachStmt] foreach (... ... in ...) ... # 194| 0: [LocalVariableDeclExpr] Int32 x # 194| 0: [TypeMention] int # 194| 1: [MethodCall] call to method Range diff --git a/csharp/ql/test/query-tests/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs b/csharp/ql/test/query-tests/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs index 175507010a13..388b07a5a8d8 100644 --- a/csharp/ql/test/query-tests/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs +++ b/csharp/ql/test/query-tests/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs @@ -44,5 +44,8 @@ void Fn() if (true != false) ; if (true && true) ; if (true || false) ; + + bool? boption = false; + if (boption == true) ; // GOOD. Can't be simplified like a regular bool } } diff --git a/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/MissedAllOpportunity.cs b/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/MissedAllOpportunity.cs new file mode 100644 index 000000000000..4b09d8bd6409 --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/MissedAllOpportunity.cs @@ -0,0 +1,53 @@ +using System; +using System.Linq; +using System.Collections.Generic; + +class MissedAllOpportunity +{ + public void M1(List lst) + { + // BAD: Can be replaced with lst.All(e => e % 2 == 0) + var allEven = true; + foreach (int i in lst) + { + if (i % 2 != 0) + { + allEven = false; + break; + } + } // $ Alert + } + + public void M2(NonEnumerableClass nec) + { + // GOOD: Linq can't be used here. + var allEven = true; + foreach (int i in nec) + { + if (i % 2 != 0) + { + allEven = false; + break; + } + } + } + + public void M3(List lst, ref int x) + { + // GOOD: Linq can't be used here because the condition uses a ref parameter. + var allEven = true; + foreach (int i in lst) + { + if (i % 2 != x) + { + allEven = false; + break; + } + } + } + + public class NonEnumerableClass + { + public IEnumerator GetEnumerator() => throw null; + } +} diff --git a/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/MissedAllOpportunity.expected b/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/MissedAllOpportunity.expected new file mode 100644 index 000000000000..b4300f8caf07 --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/MissedAllOpportunity.expected @@ -0,0 +1 @@ +| MissedAllOpportunity.cs:11:9:18:9 | foreach (... ... in ...) ... | This foreach loop looks as if it might be testing whether every sequence element satisfies a predicate - consider using '.All(...)'. | diff --git a/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/MissedAllOpportunity.qlref b/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/MissedAllOpportunity.qlref new file mode 100644 index 000000000000..689d5fbb60a4 --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/MissedAllOpportunity.qlref @@ -0,0 +1,2 @@ +query: Linq/MissedAllOpportunity.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/options b/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/options new file mode 100644 index 000000000000..75c39b4541ba --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedAllOpportunity/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Linq/MissedFirstOrDefaultOpportunity/MissedFirstOrDefaultOpportunity.cs b/csharp/ql/test/query-tests/Linq/MissedFirstOrDefaultOpportunity/MissedFirstOrDefaultOpportunity.cs new file mode 100644 index 000000000000..84824efee4bc --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedFirstOrDefaultOpportunity/MissedFirstOrDefaultOpportunity.cs @@ -0,0 +1,203 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +class MissedFirstOrDefaultOpportunity +{ + public Operation M1(IEnumerable operations, string operationId) + { + // BAD: Can be replaced with operations.FirstOrDefault(operation => ...). + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + return operation; + } // $ Alert + + return null; + } + + public int M2(IEnumerable values) + { + // BAD: Can be replaced with values.FirstOrDefault(value => ...). + foreach (var value in values) + { + if (value > 0) + { + return value; + } + } // $ Alert + + return default; + } + + public int? M3(List values) + { + // BAD: Can be replaced with values.FirstOrDefault(value => ...). + foreach (var value in values) + { + if (value > 0) + return value; + } // $ Alert + + return default(int); + } + + public Operation M4(IEnumerable operations, string operationId) + { + // GOOD: FirstOrDefault does not throw when a match is found. + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + throw new InvalidOperationException(); + } + + return null; + } + + public Operation M5(IEnumerable operations, string operationId) + { + // GOOD: FirstOrDefault would return null/default when no match is found. + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + return operation; + } + + return new Operation(); + } + + public string M6(IEnumerable operations, string operationId) + { + // GOOD: FirstOrDefault would return the matching operation, not one of its properties. + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + return operation.OperationId; + } + + return null; + } + + public Operation M7(IEnumerable operations, string operationId) + { + // GOOD: The matched case has an additional side effect. + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + { + Console.WriteLine(operation.OperationId); + return operation; + } + } + + return null; + } + + public async Task M8(IEnumerable operations, string operationId) + { + // GOOD: FirstOrDefault does not support an async predicate. + foreach (var operation in operations) + { + if (await IsMatch(operation, operationId)) + return operation; + } + + return null; + } + + public Operation M9(IEnumerable operations, string operationId) + { + // GOOD: FirstOrDefault does not have an equivalent for an else branch in the loop. + foreach (var operation in operations) + { + if (string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)) + return operation; + else + return null; + } + + return null; + } + + public object M10(IEnumerable values) + { + // GOOD: FirstOrDefault would return boxed 0 when no match is found, not null. + foreach (var value in values) + { + if (value > 0) + return value; + } + + return null; + } + + public object M11(IEnumerable values) + { + // GOOD: FirstOrDefault would return boxed 0 when no match is found, not default(object). + foreach (var value in values) + { + if (value > 0) + return value; + } + + return default(object); + } + + public object M12(IEnumerable values) + { + // BAD: FirstOrDefault returns null for missing reference-type elements, matching the fallback. + foreach (var value in values) + { + if (value.Length > 0) + return value; + } // $ Alert + + return null; + } + + public object M13(IEnumerable values) + { + // BAD: FirstOrDefault returns 0 for missing int elements, matching the fallback before boxing. + foreach (var value in values) + { + if (value > 0) + return value; + } // $ Alert + + return default(int); + } + + public Operation M14(IEnumerable operations, Func[] predicates) + { + // GOOD: Ignore the corner case where the foreach variable is captured by a nested lambda. + foreach (var operation in operations) + { + if (Array.Exists(predicates, predicate => predicate(operation.OperationId))) + return operation; + } + + return null; + } + + public int M15(IEnumerable values, ref readonly int x) + { + // GOOD: FirstOrDefault does not support a predicate that captures a ref parameter. + foreach (var value in values) + { + if (value > x) + { + return value; + } + } + + return default; + } + + private static Task IsMatch(Operation operation, string operationId) => + Task.FromResult(string.Equals(operation.OperationId, operationId, StringComparison.Ordinal)); +} + +class Operation +{ + public string OperationId { get; set; } +} diff --git a/csharp/ql/test/query-tests/Linq/MissedFirstOrDefaultOpportunity/MissedFirstOrDefaultOpportunity.expected b/csharp/ql/test/query-tests/Linq/MissedFirstOrDefaultOpportunity/MissedFirstOrDefaultOpportunity.expected new file mode 100644 index 000000000000..b4cfdff5fdd9 --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedFirstOrDefaultOpportunity/MissedFirstOrDefaultOpportunity.expected @@ -0,0 +1,5 @@ +| MissedFirstOrDefaultOpportunity.cs:10:9:14:9 | foreach (... ... in ...) ... | This foreach loop returns the first sequence element satisfying a $@ - consider finding the element explicitly using '.FirstOrDefault(...)'. | MissedFirstOrDefaultOpportunity.cs:12:17:12:91 | call to method Equals | predicate | +| MissedFirstOrDefaultOpportunity.cs:22:9:28:9 | foreach (... ... in ...) ... | This foreach loop returns the first sequence element satisfying a $@ - consider finding the element explicitly using '.FirstOrDefault(...)'. | MissedFirstOrDefaultOpportunity.cs:24:17:24:25 | ... > ... | predicate | +| MissedFirstOrDefaultOpportunity.cs:36:9:40:9 | foreach (... ... in ...) ... | This foreach loop returns the first sequence element satisfying a $@ - consider finding the element explicitly using '.FirstOrDefault(...)'. | MissedFirstOrDefaultOpportunity.cs:38:17:38:25 | ... > ... | predicate | +| MissedFirstOrDefaultOpportunity.cs:149:9:153:9 | foreach (... ... in ...) ... | This foreach loop returns the first sequence element satisfying a $@ - consider finding the element explicitly using '.FirstOrDefault(...)'. | MissedFirstOrDefaultOpportunity.cs:151:17:151:32 | ... > ... | predicate | +| MissedFirstOrDefaultOpportunity.cs:161:9:165:9 | foreach (... ... in ...) ... | This foreach loop returns the first sequence element satisfying a $@ - consider finding the element explicitly using '.FirstOrDefault(...)'. | MissedFirstOrDefaultOpportunity.cs:163:17:163:25 | ... > ... | predicate | diff --git a/csharp/ql/test/query-tests/Linq/MissedFirstOrDefaultOpportunity/MissedFirstOrDefaultOpportunity.qlref b/csharp/ql/test/query-tests/Linq/MissedFirstOrDefaultOpportunity/MissedFirstOrDefaultOpportunity.qlref new file mode 100644 index 000000000000..91cc5ae4d348 --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedFirstOrDefaultOpportunity/MissedFirstOrDefaultOpportunity.qlref @@ -0,0 +1,2 @@ +query: Linq/MissedFirstOrDefaultOpportunity.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs index 9655a5a0fa9c..0a958d3e50d8 100644 --- a/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs +++ b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs @@ -25,6 +25,17 @@ public async Task M2(IEnumerable counters) } } + public void M3(List lst, out int x) + { + // GOOD: Linq can't be used here as the Select would capture an out parameter. + x = 2; + foreach (int i in lst) + { + int j = i * x; + Console.WriteLine(j); + } + } + public interface ICounter { Task CountAsync(); diff --git a/csharp/ql/test/query-tests/Linq/MissedWhereOpportunity/MissedWhereOpportunity.cs b/csharp/ql/test/query-tests/Linq/MissedWhereOpportunity/MissedWhereOpportunity.cs index 7b9d35821299..b3575473eab9 100644 --- a/csharp/ql/test/query-tests/Linq/MissedWhereOpportunity/MissedWhereOpportunity.cs +++ b/csharp/ql/test/query-tests/Linq/MissedWhereOpportunity/MissedWhereOpportunity.cs @@ -174,6 +174,18 @@ public void M12(IEnumerable elements) } } + public void M13(List lst, in int x) + { + // GOOD: Linq can't be used here because the condition uses an in parameter. + foreach (int i in lst) + { + if (i % 2 != x) + continue; + Console.WriteLine(i); + Console.WriteLine((i / 2)); + } + } + public class NonEnumerableClass { public IEnumerator GetEnumerator() => throw null; diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/RazorTagHelperAttribute.cshtml b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/RazorTagHelperAttribute.cshtml new file mode 100644 index 000000000000..8b1a393741c9 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/RazorTagHelperAttribute.cshtml @@ -0,0 +1 @@ +// empty diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/RazorTagHelperAttribute.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/RazorTagHelperAttribute.cshtml.g.cs new file mode 100644 index 000000000000..12c2b389709a --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/RazorTagHelperAttribute.cshtml.g.cs @@ -0,0 +1,89 @@ +// A hand-written test file that mimics the output of compiling a `.cshtml` file that has an +// element with a tag helper (e.g. `asp-for`) and an HTML attribute whose value contains a +// tainted expression, for example: +#pragma checksum "RazorTagHelperAttribute.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "c4ae76542f1958092cebd8f57beef899d20fc548" +// +#pragma warning disable 1591 +[assembly: global::Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute(typeof(dotnetweb.Pages.Pages_RazorTagHelperAttribute), @"mvc.1.0.razor-page", @"RazorTagHelperAttribute.cshtml")] +namespace dotnetweb.Pages +{ + #line hidden + using System; + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; + using Microsoft.AspNetCore.Mvc; + using Microsoft.AspNetCore.Mvc.Rendering; + using Microsoft.AspNetCore.Mvc.ViewFeatures; +#nullable restore +using dotnetweb; + +#line default +#line hidden +#nullable disable + [global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute(@"SHA1", @"c4ae76542f1958092cebd8f57beef899d20fc548", @"RazorTagHelperAttribute.cshtml")] + public class Pages_RazorTagHelperAttribute : global::Microsoft.AspNetCore.Mvc.RazorPages.Page + { + #pragma warning disable 1998 + public async override global::System.Threading.Tasks.Task ExecuteAsync() + { +#nullable restore +#line 3 "RazorTagHelperAttribute.cshtml" + + var model = Request.Query["m"]; // $ Source=model + +#line default +#line hidden +#nullable disable + WriteLiteral(""); + + // BAD: a `WriteLiteral` call that is not bracketed by + // `BeginWriteTagHelperAttribute()`/`EndWriteTagHelperAttribute()` writes directly, + // unencoded, to the response and must still be flagged. + WriteLiteral(model); // $ Alert=model + + // GOOD: two independent tag helper attribute brackets that occur one after another + // in the same basic block must each be matched with their own nearest + // `Begin`/`EndWriteTagHelperAttribute` call, and neither should leak into the other. + BeginWriteTagHelperAttribute(); + WriteLiteral("literal-prefix-"); + var __tagHelperAttribute_2 = EndWriteTagHelperAttribute(); + BeginWriteTagHelperAttribute(); + WriteLiteral(model); + var __tagHelperAttribute_3 = EndWriteTagHelperAttribute(); + + // BAD: a bare `WriteLiteral` call sandwiched between two unrelated tag helper + // attribute brackets, in the same basic block, must not be mistaken for being + // captured by either neighboring bracket. + BeginWriteTagHelperAttribute(); + WriteLiteral("prefix"); + var __tagHelperAttribute_4 = EndWriteTagHelperAttribute(); + WriteLiteral(model); // $ Alert=model + BeginWriteTagHelperAttribute(); + WriteLiteral("suffix"); + var __tagHelperAttribute_5 = EndWriteTagHelperAttribute(); + } + #pragma warning restore 1998 + [global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] + public global::Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider { get; private set; } + [global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] + public global::Microsoft.AspNetCore.Mvc.IUrlHelper Url { get; private set; } + [global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] + public global::Microsoft.AspNetCore.Mvc.IViewComponentHelper Component { get; private set; } + [global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] + public global::Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json { get; private set; } + [global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] + public global::Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html { get; private set; } + public global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary)PageContext?.ViewData; + } +} +#pragma warning restore 1591 diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected index fe184fdff75a..f560bb101456 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected @@ -1,5 +1,7 @@ #select | Index.cshtml:14:16:14:22 | call to operator implicit conversion | Index.cshtml:5:19:5:31 | access to property Query : IQueryCollection | Index.cshtml:14:16:14:22 | call to operator implicit conversion | $@ flows to here and is written to HTML or JavaScript: Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.Raw() method. | Index.cshtml:5:19:5:31 | access to property Query : IQueryCollection | User-provided value | +| RazorTagHelperAttribute.cshtml.g.cs:52:26:52:30 | call to operator implicit conversion | RazorTagHelperAttribute.cshtml:4:17:4:29 | access to property Query : IQueryCollection | RazorTagHelperAttribute.cshtml.g.cs:52:26:52:30 | call to operator implicit conversion | $@ flows to here and is written to HTML or JavaScript: Microsoft.AspNetCore.Mvc.Razor.RazorPageBase.WriteLiteral() method. | RazorTagHelperAttribute.cshtml:4:17:4:29 | access to property Query : IQueryCollection | User-provided value | +| RazorTagHelperAttribute.cshtml.g.cs:70:26:70:30 | call to operator implicit conversion | RazorTagHelperAttribute.cshtml:4:17:4:29 | access to property Query : IQueryCollection | RazorTagHelperAttribute.cshtml.g.cs:70:26:70:30 | call to operator implicit conversion | $@ flows to here and is written to HTML or JavaScript: Microsoft.AspNetCore.Mvc.Razor.RazorPageBase.WriteLiteral() method. | RazorTagHelperAttribute.cshtml:4:17:4:29 | access to property Query : IQueryCollection | User-provided value | | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | $@ flows to here and is written to HTML or JavaScript: System.Web.WebPages.WebPage.WriteLiteral() method. | XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | User-provided value | | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | $@ flows to here and is written to HTML or JavaScript: System.Web.WebPages.WebPage.WriteLiteralTo() method. | XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | User-provided value | | XSSAspNet.cs:44:28:44:33 | access to local variable sayHi2 | XSSAspNet.cs:43:26:43:44 | access to property QueryString : NameValueCollection | XSSAspNet.cs:44:28:44:33 | access to local variable sayHi2 | $@ flows to here and is written to HTML or JavaScript. | XSSAspNet.cs:43:26:43:44 | access to property QueryString : NameValueCollection | User-provided value | @@ -13,6 +15,9 @@ edges | Index.cshtml:5:9:5:15 | access to local variable message : StringValues | Index.cshtml:14:16:14:22 | call to operator implicit conversion | provenance | | | Index.cshtml:5:19:5:31 | access to property Query : IQueryCollection | Index.cshtml:5:9:5:15 | access to local variable message : StringValues | provenance | | +| RazorTagHelperAttribute.cshtml:4:9:4:13 | access to local variable model : StringValues | RazorTagHelperAttribute.cshtml.g.cs:52:26:52:30 | call to operator implicit conversion | provenance | | +| RazorTagHelperAttribute.cshtml:4:9:4:13 | access to local variable model : StringValues | RazorTagHelperAttribute.cshtml.g.cs:70:26:70:30 | call to operator implicit conversion | provenance | | +| RazorTagHelperAttribute.cshtml:4:17:4:29 | access to property Query : IQueryCollection | RazorTagHelperAttribute.cshtml:4:9:4:13 | access to local variable model : StringValues | provenance | | | XSSAspNet.cs:19:17:19:21 | access to local variable sayHi : String | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | provenance | | | XSSAspNet.cs:19:17:19:21 | access to local variable sayHi : String | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | provenance | | | XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:19:17:19:21 | access to local variable sayHi : String | provenance | | @@ -49,6 +54,10 @@ nodes | Index.cshtml:5:9:5:15 | access to local variable message : StringValues | semmle.label | access to local variable message : StringValues | | Index.cshtml:5:19:5:31 | access to property Query : IQueryCollection | semmle.label | access to property Query : IQueryCollection | | Index.cshtml:14:16:14:22 | call to operator implicit conversion | semmle.label | call to operator implicit conversion | +| RazorTagHelperAttribute.cshtml.g.cs:52:26:52:30 | call to operator implicit conversion | semmle.label | call to operator implicit conversion | +| RazorTagHelperAttribute.cshtml.g.cs:70:26:70:30 | call to operator implicit conversion | semmle.label | call to operator implicit conversion | +| RazorTagHelperAttribute.cshtml:4:9:4:13 | access to local variable model : StringValues | semmle.label | access to local variable model : StringValues | +| RazorTagHelperAttribute.cshtml:4:17:4:29 | access to property Query : IQueryCollection | semmle.label | access to property Query : IQueryCollection | | XSSAspNet.cs:19:17:19:21 | access to local variable sayHi : String | semmle.label | access to local variable sayHi : String | | XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | XSSAspNet.cs:19:25:19:52 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/MissingAntiForgeryTokenValidation.cs b/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/MissingAntiForgeryTokenValidation.cs new file mode 100644 index 000000000000..438ad03f3200 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/MissingAntiForgeryTokenValidation.cs @@ -0,0 +1,39 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.DependencyInjection; + +public class HomeController : Controller +{ + // GOOD: This is validated by the global filter. + [HttpPost] + public ActionResult Login() + { + return View(); + } + + // GOOD: Antiforgery token is validated explicitly. + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult UpdateDetails() + { + return View(); + } +} + +public class Program +{ + public static void Main(string[] args) + { + var builder = WebApplication.CreateBuilder(args); + + // Register MVC controllers and Razor views. + // The global filter automatically validates antiforgery tokens + // for unsafe HTTP methods such as POST, PUT, PATCH, and DELETE. + builder.Services.AddControllersWithViews(options => + { + options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()); + }); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/MissingAntiForgeryTokenValidation.expected b/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/MissingAntiForgeryTokenValidation.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/MissingAntiForgeryTokenValidation.qlref b/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/MissingAntiForgeryTokenValidation.qlref new file mode 100644 index 000000000000..5e1ab2426c65 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/MissingAntiForgeryTokenValidation.qlref @@ -0,0 +1 @@ +query: Security Features/CWE-352/MissingAntiForgeryTokenValidation.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/options b/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/options new file mode 100644 index 000000000000..698ad488b6d4 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/global-aspnetcore/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +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-451/MissingXFrameOptions/CodeAddedHeader/MissingXFrameOptions.qlref b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/MissingXFrameOptions.qlref index d0d38c4b0117..b8a963200e57 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/MissingXFrameOptions.qlref +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/MissingXFrameOptions.qlref @@ -1,2 +1 @@ -query: Security Features/CWE-451/MissingXFrameOptions.ql -postprocess: utils/test/InlineExpectationsTestQuery.ql +Security Features/CWE-451/MissingXFrameOptions.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.cs b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.cs new file mode 100644 index 000000000000..907de6823982 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Microsoft.Net.Http.Headers; +using AspNetCoreHttpContext = Microsoft.AspNetCore.Http.HttpContext; + +public class HeaderWrites +{ + public void AspNetCoreResponseHeaders(AspNetCoreHttpContext context) + { + context.Response.Headers.Append(HeaderNames.XFrameOptions, "DENY"); // $ Alert + context.Response.Headers.Add("x-frame-options", "SAMEORIGIN"); // $ Alert + context.Response.Headers.TryAdd( + HeaderNames.ContentSecurityPolicy, + "default-src 'self'; FrAmE-AnCeStOrS 'none'"); // $ Alert + + context.Response.Headers["X-Frame-Options"] = "DENY"; // $ Alert + context.Response.Headers["Content-Security-Policy"] = // $ Alert + "default-src 'self'; frame-ancestors 'none'"; + context.Response.Headers.XFrameOptions = "DENY"; // $ Alert + context.Response.Headers.ContentSecurityPolicy = // $ Alert + "default-src 'self'; frame-ancestors 'self'"; + context.Response.Headers["Content-Security-Policy"] = // $ Alert + "default-src 'self', frame-ancestors 'none'"; + + IHeaderDictionary responseHeaders = context.Response.Headers; + responseHeaders.Append("X-Frame-Options", "DENY"); // $ Alert + } + + public void IgnoredHeaderWrites(AspNetCoreHttpContext context) + { + context.Request.Headers["X-Frame-Options"] = "DENY"; + + IHeaderDictionary reassignedHeaders = context.Response.Headers; + reassignedHeaders = context.Request.Headers; + reassignedHeaders["X-Frame-Options"] = "DENY"; + + var standaloneHeaders = new HeaderDictionary(); + standaloneHeaders.Append("X-Frame-Options", "DENY"); + standaloneHeaders["Content-Security-Policy"] = "frame-ancestors 'none'"; + + context.Response.Headers["Content-Security-Policy-Report-Only"] = + "frame-ancestors 'none'"; + context.Response.Headers.ContentSecurityPolicyReportOnly = "frame-ancestors 'none'"; + context.Response.Headers["X-Content-Security-Policy"] = "frame-ancestors 'none'"; + context.Response.Headers["Content-Security-Policy"] = "default-src 'self'"; + context.Response.Headers["Content-Security-Policy"] = + "report-uri https://example.test/frame-ancestors"; + context.Response.Headers["Content-Security-Policy"] = + "default-src 'self'; not-frame-ancestors 'none'"; + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.expected b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.expected new file mode 100644 index 000000000000..163cdda95910 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.expected @@ -0,0 +1,9 @@ +| HeaderWrites.cs:10:9:10:74 | call to method Append | A clickjacking-related response header is configured here. | +| HeaderWrites.cs:11:9:11:69 | call to method Add | A clickjacking-related response header is configured here. | +| HeaderWrites.cs:12:9:14:57 | call to method TryAdd | A clickjacking-related response header is configured here. | +| HeaderWrites.cs:16:9:16:51 | access to indexer | A clickjacking-related response header is configured here. | +| HeaderWrites.cs:17:9:17:59 | access to indexer | A clickjacking-related response header is configured here. | +| HeaderWrites.cs:19:9:19:46 | access to property XFrameOptions | A clickjacking-related response header is configured here. | +| HeaderWrites.cs:20:9:20:54 | access to property ContentSecurityPolicy | A clickjacking-related response header is configured here. | +| HeaderWrites.cs:22:9:22:59 | access to indexer | A clickjacking-related response header is configured here. | +| HeaderWrites.cs:26:9:26:57 | call to method Append | A clickjacking-related response header is configured here. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.ql b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.ql new file mode 100644 index 000000000000..607510cd1111 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.ql @@ -0,0 +1,12 @@ +/** + * @kind problem + * @id cs/test/clickjacking-header-write + * @problem.severity warning + */ + +import csharp +import semmle.code.csharp.security.MissingXFrameOptionsQuery + +from Expr write +where write = getAClickjackingHeaderWrite() +select write, "A clickjacking-related response header is configured here." diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.qlref b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.qlref new file mode 100644 index 000000000000..a2d35d0adb5b --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/HeaderWrites.qlref @@ -0,0 +1,2 @@ +query: HeaderWrites.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/MissingXFrameOptions.expected b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/MissingXFrameOptions.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/MissingXFrameOptions.qlref b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/MissingXFrameOptions.qlref new file mode 100644 index 000000000000..b8a963200e57 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/MissingXFrameOptions.qlref @@ -0,0 +1 @@ +Security Features/CWE-451/MissingXFrameOptions.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/Web.config new file mode 100644 index 000000000000..484daccbf3a4 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/Web.config @@ -0,0 +1,2 @@ + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/options b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/options new file mode 100644 index 000000000000..ce3f295ed117 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/HeaderWrites/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/MissingXFrameOptions.expected b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/MissingXFrameOptions.expected index 74dfb6fc2f47..d1708140c9d7 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/MissingXFrameOptions.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/MissingXFrameOptions.expected @@ -1 +1 @@ -| Web.config:0:0:0:0 | Web.config | Configuration file is missing the X-Frame-Options setting. | +| Web.config:0:0:0:0 | Web.config | Configuration file is missing clickjacking protection. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/Csp.Web.config b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/Csp.Web.config new file mode 100644 index 000000000000..733792aadd8d --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/Csp.Web.config @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/CspSubstring.Web.config b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/CspSubstring.Web.config new file mode 100644 index 000000000000..caf093f9ecbe --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/CspSubstring.Web.config @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/MissingXFrameOptions.expected b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/MissingXFrameOptions.expected index e69de29bb2d1..31aad4a5216f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/MissingXFrameOptions.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/MissingXFrameOptions.expected @@ -0,0 +1,2 @@ +| CspSubstring.Web.config:0:0:0:0 | CspSubstring.Web.config | Configuration file is missing clickjacking protection. | +| PrefixedCsp.Web.config:0:0:0:0 | PrefixedCsp.Web.config | Configuration file is missing clickjacking protection. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/MissingXFrameOptions.qlref b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/MissingXFrameOptions.qlref index d0d38c4b0117..b8a963200e57 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/MissingXFrameOptions.qlref +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/MissingXFrameOptions.qlref @@ -1,2 +1 @@ -query: Security Features/CWE-451/MissingXFrameOptions.ql -postprocess: utils/test/InlineExpectationsTestQuery.ql +Security Features/CWE-451/MissingXFrameOptions.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/PrefixedCsp.Web.config b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/PrefixedCsp.Web.config new file mode 100644 index 000000000000..334b63ce5b0e --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/PrefixedCsp.Web.config @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/Web.config index 78f6c30a819f..74c0fa10fd27 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/Web.config +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/Web.config @@ -5,7 +5,7 @@ - + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.qlref b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.qlref index d0d38c4b0117..b8a963200e57 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.qlref +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.qlref @@ -1,2 +1 @@ -query: Security Features/CWE-451/MissingXFrameOptions.ql -postprocess: utils/test/InlineExpectationsTestQuery.ql +Security Features/CWE-451/MissingXFrameOptions.ql diff --git a/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs index 882ded10f873..c9ce38772a7c 100644 --- a/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs +++ b/csharp/ql/test/query-tests/standalone/Language Abuse/SimplifyBoolExpr/SimplifyBoolExpr.cs @@ -58,3 +58,25 @@ class IncompleteNestedOperatorTest return lambda() || Local(); } } + +class Test +{ + public class Container + { + public bool? Field; + } + + public void Fn() + { + bool? boption = false; + if (boption == true) ; // GOOD. Can't be simplified like a regular bool + + bool b = false; + if (b ? boption : false) ; // GOOD. Can't be simplified like a regular bool + + // Emulating incomplete type information by not declaring container explicitly. + if (container.Field == true) ; // GOOD. Can't be simplified like a regular bool + + if (b ? container.Field : false) ; // GOOD. Can't be simplified like a regular bool + } +} diff --git a/docs/codeql/README.rst b/docs/codeql/README.rst index 70686aae436c..2242519c7491 100644 --- a/docs/codeql/README.rst +++ b/docs/codeql/README.rst @@ -71,7 +71,7 @@ For example, to generate the HTML output for a project in the You can use errors reported during the build to debug problems in your source code, such as broken internal links and malformed tables. You can also check external links using Sphinx's `external link builder - `__. + `__. Add the ``-a`` flag to regenerate all output files. By default, only files that have changed are rebuilt. diff --git a/docs/codeql/codeql-language-guides/codeql-library-for-javascript.rst b/docs/codeql/codeql-language-guides/codeql-library-for-javascript.rst index aeaf68aeee4c..60d3054cd8d9 100644 --- a/docs/codeql/codeql-language-guides/codeql-library-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/codeql-library-for-javascript.rst @@ -762,7 +762,7 @@ HTTP framework libraries The library ``semmle.javacript.frameworks.HTTP`` provides classes modeling common concepts from various HTTP frameworks. -Currently supported frameworks are `Express `__, the standard Node.js ``http`` and ``https`` modules, `Connect `__, `Koa `__, `Hapi `__ and `Restify `__. +Currently supported frameworks are `Express `__, the standard Node.js ``http`` and ``https`` modules, `Connect `__, `Koa `__, `Hapi `__ and `Restify `__. The most important classes include (all in module ``HTTP``): @@ -779,7 +779,7 @@ For each framework library, there is a corresponding CodeQL library (for example Node.js ^^^^^^^ -The ``semmle.javascript.NodeJS`` library provides support for working with `Node.js `__ modules through the following classes: +The ``semmle.javascript.NodeJS`` library provides support for working with `Node.js `__ modules through the following classes: - `NodeModule `__: a top-level that defines a Node.js module; see the section on `Modules <#modules>`__ for more information. - `Require `__: a call to the special ``require`` function that imports a module. @@ -927,7 +927,7 @@ However, unlike HTML, JSX is interleaved with JavaScript, hence `JSXElement `__ files that were processed by the JavaScript extractor when building the CodeQL database. +The ``semmle.javascript.JSON`` library provides support for working with `JSON `__ files that were processed by the JavaScript extractor when building the CodeQL database. JSON files are modeled as trees of JSON values. Each JSON value is represented by an entity of class `JSONValue `__, which provides the following member predicates: diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-actions.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-actions.rst index 0b78b37359f4..82890f05520d 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-actions.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-actions.rst @@ -7,7 +7,29 @@ Customizing library models for GitHub Actions GitHub Actions analysis can be customized by adding library models in data extension files. -A data extension for GitHub Actions is a YAML file of the form: +A data extension for GitHub Actions can be written using either JSON or YAML. JSON is the preferred format, for performance reasons, and takes the following form: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/actions-all", + "extensible": "" + }, + "data": [ + ["", "", "..."], + ["", "", "..."] + // ... + ] + } + ] + } + +Files in the JSON format must use the ``.json`` file extension. Single-line (``//``) and multi-line (``/* ... */``) comments are supported as a non-standard JSON extension. + +A YAML file has the following form: .. code-block:: yaml @@ -16,8 +38,8 @@ A data extension for GitHub Actions is a YAML file of the form: pack: codeql/actions-all extensible: data: - - - - + - ["", "", "..."] + - ["", "", "..."] - ... The CodeQL library for GitHub Actions exposes the following extensible predicates: @@ -57,16 +79,23 @@ If there is an Action publisher that you trust, you can include the owner name/o To allow any Action from the publisher ``octodemo``, such as ``octodemo/3rd-party-action``, follow these steps: -1. Create a data extension file ``/models/trusted-owner.model.yml`` with the following content: +1. Create a data extension file ``/models/trusted-owner.model.json`` with the following content: - .. code-block:: yaml + .. code-block:: json - extensions: - - addsTo: - pack: codeql/actions-all - extensible: trustedActionsOwnerDataModel - data: - - ["octodemo"] + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/actions-all", + "extensible": "trustedActionsOwnerDataModel" + }, + "data": [ + ["octodemo"] + ] + } + ] + } 2. Create a model pack file ``/codeql-pack.yml`` with the following content: @@ -78,8 +107,34 @@ To allow any Action from the publisher ``octodemo``, such as ``octodemo/3rd-part extensionTargets: codeql/actions-all: '*' dataExtensions: - - models/**/*.yml + - models/**/*.json 3. Ensure that the model pack is included in your CodeQL analysis. By following these steps, you will add ``octodemo`` to the list of trusted Action publishers, and the query will no longer generate security alerts for unpinned tags from this publisher. For more information, see `Extending CodeQL coverage with CodeQL model packs in default setup `_ and `Creating and working with CodeQL packs `_. + +Example: Remove a trusted Actions publisher for the ``actions/unpinned-tag`` query +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +GitHub's own organizations (``actions``, ``github`` and ``advanced-security``) are trusted by default. If you want unpinned tags for these first-party Actions to be reported as well, you can remove an owner from the trusted list by adding an entry prefixed with ``!``. A ``!`` entry always takes precedence over a plain entry for the same owner. + +To distrust the first-party ``github`` owner, add a data extension file with the following content: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/actions-all", + "extensible": "trustedActionsOwnerDataModel" + }, + "data": [ + ["!github"] + ] + } + ] + } + +With this in place, the query will once again report unpinned tags for Actions published by ``github``. + diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-cpp.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-cpp.rst index 7ca619632272..0bbf0b1654b1 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-cpp.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-cpp.rst @@ -25,7 +25,29 @@ Syntax used to define an element in an extension file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Each model of an element is defined using a data extension where each tuple constitutes a model. -A data extension file to extend the standard CPP queries included with CodeQL is a YAML file with the form: +A data extension file to extend the standard CPP queries included with CodeQL can be written using either JSON or YAML. JSON is the preferred format, for performance reasons, and takes the following form: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/cpp-all", + "extensible": "" + }, + "data": [ + ["", "", "..."], + ["", "", "..."] + // ... + ] + } + ] + } + +Files in the JSON format must use the ``.json`` file extension. Single-line (``//``) and multi-line (``/* ... */``) comments are supported as a non-standard JSON extension. + +A YAML file has the following form: .. code-block:: yaml @@ -34,11 +56,11 @@ A data extension file to extend the standard CPP queries included with CodeQL is pack: codeql/cpp-all extensible: data: - - - - + - ["", "", "..."] + - ["", "", "..."] - ... -Each YAML file may contain one or more top-level extensions. +Each data extension file may contain one or more top-level extensions. - ``addsTo`` defines the CodeQL pack name and extensible predicate that the extension is injected into. - ``data`` defines one or more rows of tuples that are injected as values into the extensible predicate. The number of columns and their types must match the definition of the extensible predicate. @@ -79,20 +101,27 @@ This example shows how the CPP query pack models the return value from the ``rea We need to add a tuple to the ``sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/cpp-all - extensible: sourceModel - data: - - ["boost::asio", "", False, "read_until", "", "", "Argument[*1]", "remote", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/cpp-all", + "extensible": "sourceModel" + }, + "data": [ + ["boost::asio", "", false, "read_until", "", "", "Argument[*1]", "remote", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a free function) to be modeled as a source. - The first value ``"boost::asio"`` is the namespace name. - The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``False``. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``false``. - The fourth value ``"read_until"`` is the function name. - The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. In this case, we want the model to include all functions in ``boost::asio`` called ``read_until``. @@ -114,20 +143,27 @@ This example shows how the CPP query pack models the second argument of the ``bo We need to add a tuple to the ``sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/cpp-all - extensible: sinkModel - data: - - ["boost::asio", "", False, "write", "", "", "Argument[*1]", "remote-sink", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/cpp-all", + "extensible": "sinkModel" + }, + "data": [ + ["boost::asio", "", false, "write", "", "", "Argument[*1]", "remote-sink", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a free function) to be modeled as a sink. - The first value ``"boost::asio"`` is the namespace name. - The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``False``. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``false``. - The fourth value ``"write"`` is the function name. - The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. In this case, we want the model to include all functions in ``boost::asio`` called ``write``. @@ -149,20 +185,27 @@ This example shows how the CPP query pack models flow through a function for a s We need to add tuples to the ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/cpp-all - extensible: summaryModel - data: - - ["boost::asio", "", False, "buffer", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/cpp-all", + "extensible": "summaryModel" + }, + "data": [ + ["boost::asio", "", false, "buffer", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"] + ] + } + ] + } The first five values identify the callable (in this case free function) to be modeled as a summary. - The first value ``"boost::asio"`` is the namespace name. - The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``False``. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``false``. - The fourth value ``"buffer"`` is the function name. - The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. In this case, we want the model to include all functions in ``boost::asio`` called ``buffer``. @@ -190,20 +233,27 @@ This function escapes special characters in a string for use in an SQL statement We need to add a tuple to the ``barrierModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/cpp-all - extensible: barrierModel - data: - - ["", "", False, "mysql_real_escape_string", "", "", "Argument[*1]", "sql-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/cpp-all", + "extensible": "barrierModel" + }, + "data": [ + ["", "", false, "mysql_real_escape_string", "", "", "Argument[*1]", "sql-injection", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a free function) to be modeled as a barrier. - The first value ``""`` is the namespace name. - The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``False``. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``false``. - The fourth value ``"mysql_real_escape_string"`` is the function name. - The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. @@ -229,20 +279,27 @@ Consider a function called ``is_safe`` which returns ``true`` when the data is c We need to add a tuple to the ``barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/cpp-all - extensible: barrierGuardModel - data: - - ["", "", False, "is_safe", "", "", "Argument[*0]", "true", "sql-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/cpp-all", + "extensible": "barrierGuardModel" + }, + "data": [ + ["", "", false, "is_safe", "", "", "Argument[*0]", "true", "sql-injection", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a free function) to be modeled as a barrier guard. - The first value ``""`` is the namespace name. - The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. -- The third value ``False`` is a flag that indicates whether or not the model guard also applies to all overrides of the method. For a free function, this should be ``False``. +- The third value ``false`` is a flag that indicates whether or not the model guard also applies to all overrides of the method. For a free function, this should be ``false``. - The fourth value ``"is_safe"`` is the function name. - The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst index a4b0e26d1bc8..7b053c19c426 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst @@ -25,7 +25,29 @@ Syntax used to define an element in an extension file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Each model of an element is defined using a data extension where each tuple constitutes a model. -A data extension file to extend the standard C# queries included with CodeQL is a YAML file with the form: +A data extension file to extend the standard C# queries included with CodeQL can be written using either JSON or YAML. JSON is the preferred format, for performance reasons, and takes the following form: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "" + }, + "data": [ + ["", "", "..."], + ["", "", "..."] + // ... + ] + } + ] + } + +Files in the JSON format must use the ``.json`` file extension. Single-line (``//``) and multi-line (``/* ... */``) comments are supported as a non-standard JSON extension. + +A YAML file has the following form: .. code-block:: yaml @@ -34,11 +56,11 @@ A data extension file to extend the standard C# queries included with CodeQL is pack: codeql/csharp-all extensible: data: - - - - + - ["", "", "..."] + - ["", "", "..."] - ... -Each YAML file may contain one or more top-level extensions. +Each data extension file may contain one or more top-level extensions. - ``addsTo`` defines the CodeQL pack name and extensible predicate that the extension is injected into. - ``data`` defines one or more rows of tuples that are injected as values into the extensible predicate. The number of columns and their types must match the definition of the extensible predicate. @@ -84,20 +106,27 @@ This is the constructor of the ``SqlCommand`` class, which is located in the ``S We need to add a tuple to the ``sinkModel``\(namespace, type, subtypes, name, signature, ext, input, kind, provenance) extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/csharp-all - extensible: sinkModel - data: - - ["System.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String,System.Data.SqlClient.SqlConnection)", "", "Argument[0]", "sql-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "sinkModel" + }, + "data": [ + ["System.Data.SqlClient", "SqlCommand", false, "SqlCommand", "(System.String,System.Data.SqlClient.SqlConnection)", "", "Argument[0]", "sql-injection", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a method) to be modeled as a sink. - The first value ``System.Data.SqlClient`` is the namespace name. - The second value ``SqlCommand`` is the name of the class (type) that contains the method. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``SqlCommand`` is the method name. Constructors are named after the class. - The fifth value ``(System.String,System.Data.SqlClient.SqlConnection)`` is the method input type signature. The type names must be fully qualified. @@ -122,20 +151,27 @@ This is the ``GetStream`` method in the ``TcpClient`` class, which is located in We need to add a tuple to the ``sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/csharp-all - extensible: sourceModel - data: - - ["System.Net.Sockets", "TcpClient", False, "GetStream", "()", "", "ReturnValue", "remote", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "sourceModel" + }, + "data": [ + ["System.Net.Sockets", "TcpClient", false, "GetStream", "()", "", "ReturnValue", "remote", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a method) to be modeled as a source. - The first value ``System.Net.Sockets`` is the namespace name. - The second value ``TcpClient`` is the name of the class (type) that contains the source. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``GetStream`` is the method name. - The fifth value ``()`` is the method input type signature. @@ -160,15 +196,22 @@ This pattern covers many of the cases where we need to summarize flow through a We need to add tuples to the ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/csharp-all - extensible: summaryModel - data: - - ["System", "String", False, "Concat", "(System.Object,System.Object)", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["System", "String", False, "Concat", "(System.Object,System.Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "summaryModel" + }, + "data": [ + ["System", "String", false, "Concat", "(System.Object,System.Object)", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["System", "String", false, "Concat", "(System.Object,System.Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"] + ] + } + ] + } Each tuple defines flow from one argument to the return value. The first row defines flow from the first argument (``s1`` in the example) to the return value (``t`` in the example) and the second row defines flow from the second argument (``s2`` in the example) to the return value (``t`` in the example). @@ -178,7 +221,7 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``System`` is the namespace name. - The second value ``String`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``Concat`` is the method name. - The fifth value ``(System.Object,System.Object)`` is the method input type signature. @@ -192,14 +235,21 @@ The remaining values are used to define the ``access-path``, the ``kind``, and t It would also be possible to merge the two rows into one by using a comma-separated list in the seventh value. This would be useful if the method has many arguments and the flow is the same for all of them. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/csharp-all - extensible: summaryModel - data: - - ["System", "String", False, "Concat", "(System.Object,System.Object)", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "summaryModel" + }, + "data": [ + ["System", "String", false, "Concat", "(System.Object,System.Object)", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] + ] + } + ] + } This row defines flow from both the first and the second argument to the return value. The seventh value ``Argument[0,1]`` is shorthand for specifying an access path to both ``Argument[0]`` and ``Argument[1]``. @@ -216,14 +266,21 @@ This example shows how the C# query pack models flow through a method for a simp We need to add a tuple to the ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/csharp-all - extensible: summaryModel - data: - - ["System", "String", False, "Trim", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "summaryModel" + }, + "data": [ + ["System", "String", false, "Trim", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] + ] + } + ] + } Each tuple defines flow from one argument to the return value. The first row defines flow from the qualifier of the method call (``s1`` in the example) to the return value (``t`` in the example). @@ -233,7 +290,7 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``System`` is the namespace name. - The second value ``String`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``Trim`` is the method name. - The fifth value ``()`` is the method input type signature. @@ -259,15 +316,22 @@ Here we model flow through higher order methods and collection types, as well as We need to add tuples to the ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/csharp-all - extensible: summaryModel - data: - - ["System.Linq", "Enumerable", False, "Select", "(System.Collections.Generic.IEnumerable,System.Func)", "", "Argument[0].Element", "Argument[1].Parameter[0]", "value", "manual"] - - ["System.Linq", "Enumerable", False, "Select", "(System.Collections.Generic.IEnumerable,System.Func)", "", "Argument[1].ReturnValue", "ReturnValue.Element", "value", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "summaryModel" + }, + "data": [ + ["System.Linq", "Enumerable", false, "Select", "(System.Collections.Generic.IEnumerable,System.Func)", "", "Argument[0].Element", "Argument[1].Parameter[0]", "value", "manual"], + ["System.Linq", "Enumerable", false, "Select", "(System.Collections.Generic.IEnumerable,System.Func)", "", "Argument[1].ReturnValue", "ReturnValue.Element", "value", "manual"] + ] + } + ] + } Each tuple defines part of the flow that comprises the total flow through the ``Select`` method. The first five values identify the callable (in this case a method) to be modeled as a summary. @@ -275,7 +339,7 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``System.Linq`` is the namespace name. - The second value ``Enumerable`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``Select`` is the method name, along with the type parameters for the method. The names of the generic type parameters provided in the model must match the names of the generic type parameters in the method signature in the source code. - The fifth value ``(System.Collections.Generic.IEnumerable,System.Func)`` is the method input type signature. The generics in the signature must match the generics in the method signature in the source code. @@ -318,20 +382,27 @@ The ``RawUrl`` property returns the raw URL of the current request, which is con We need to add a tuple to the ``barrierModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/csharp-all - extensible: barrierModel - data: - - ["System.Web", "HttpRequest", False, "get_RawUrl", "()", "", "ReturnValue", "url-redirection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "barrierModel" + }, + "data": [ + ["System.Web", "HttpRequest", false, "get_RawUrl", "()", "", "ReturnValue", "url-redirection", "manual"] + ] + } + ] + } The first five values identify the callable (in this case the getter of a property) to be modeled as a barrier. - The first value ``System.Web`` is the namespace name. - The second value ``HttpRequest`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``get_RawUrl`` is the method name. Getter and setter methods are named ``get_`` and ``set_`` respectively. - The fifth value ``()`` is the method input type signature. @@ -359,20 +430,27 @@ When the ``IsAbsoluteUri`` property returns ``false``, the URL is relative and t We need to add a tuple to the ``barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/csharp-all - extensible: barrierGuardModel - data: - - ["System", "Uri", False, "get_IsAbsoluteUri", "()", "", "Argument[this]", "false", "url-redirection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "barrierGuardModel" + }, + "data": [ + ["System", "Uri", false, "get_IsAbsoluteUri", "()", "", "Argument[this]", "false", "url-redirection", "manual"] + ] + } + ] + } The first five values identify the callable (in this case the getter of a property) to be modeled as a barrier guard. - The first value ``System`` is the namespace name. - The second value ``Uri`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the model guard also applies to all overrides of the method. +- The third value ``false`` is a flag that indicates whether or not the model guard also applies to all overrides of the method. - The fourth value ``get_IsAbsoluteUri`` is the method name. Getter and setter methods are named ``get_`` and ``set_`` respectively. - The fifth value ``()`` is the method input type signature. @@ -398,14 +476,21 @@ A neutral model is used to define that there is no flow through a method. We need to add a tuple to the ``neutralModel(namespace, type, name, signature, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/csharp-all - extensible: neutralModel - data: - - ["System", "DateTime", "get_Now", "()", "summary", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/csharp-all", + "extensible": "neutralModel" + }, + "data": [ + ["System", "DateTime", "get_Now", "()", "summary", "manual"] + ] + } + ] + } The first four values identify the callable (in this case the getter of the ``Now`` property) to be modeled as a neutral, the fifth value is the kind, and the sixth value is the provenance (origin) of the neutral. diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-go.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-go.rst index f8f576b16b16..8ccd8ec935d8 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-go.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-go.rst @@ -25,7 +25,29 @@ Syntax used to define an element in an extension file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Each model of an element is defined using a data extension where each tuple constitutes a model. -A data extension file to extend the standard Go queries included with CodeQL is a YAML file with the form: +A data extension file to extend the standard Go queries included with CodeQL can be written using either JSON or YAML. JSON is the preferred format, for performance reasons, and takes the following form: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "" + }, + "data": [ + ["", "", "..."], + ["", "", "..."] + // ... + ] + } + ] + } + +Files in the JSON format must use the ``.json`` file extension. Single-line (``//``) and multi-line (``/* ... */``) comments are supported as a non-standard JSON extension. + +A YAML file has the following form: .. code-block:: yaml @@ -34,11 +56,11 @@ A data extension file to extend the standard Go queries included with CodeQL is pack: codeql/go-all extensible: data: - - - - + - ["", "", "..."] + - ["", "", "..."] - ... -Each YAML file may contain one or more top-level extensions. +Each data extension file may contain one or more top-level extensions. - ``addsTo`` defines the CodeQL pack name and extensible predicate that the extension is injected into. - ``data`` defines one or more rows of tuples that are injected as values into the extensible predicate. The number of columns and their types must match the definition of the extensible predicate. @@ -84,20 +106,27 @@ This is the ``Prepare`` method of the ``DB`` type in the ``database/sql`` packag We need to add a tuple to the ``sinkModel``\(package, type, subtypes, name, signature, ext, input, kind, provenance) extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["database/sql", "DB", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["database/sql", "DB", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] + ] + } + ] + } The first five values identify the function (in this case a method) to be modeled as a sink. - The first value ``database/sql`` is the package name. - The second value ``DB`` is the name of the type that the method is associated with. -- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. +- The third value ``true`` is a flag that indicates whether or not the model also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. - The fourth value ``Prepare`` is the method name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. @@ -123,20 +152,27 @@ This is the ``FormValue`` method of the ``Request`` type which is located in the We need to add a tuple to the ``sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["net/http", "Request", True, "FormValue", "", "", "ReturnValue", "remote", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["net/http", "Request", true, "FormValue", "", "", "ReturnValue", "remote", "manual"] + ] + } + ] + } The first five values identify the function to be modeled as a source. - The first value ``net/http`` is the package name. - The second value ``Request`` is the type name, since the function is a method of the ``Request`` type. -- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. +- The third value ``true`` is a flag that indicates whether or not the model also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. - The fourth value ``FormValue`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. @@ -163,14 +199,21 @@ This pattern covers many of the cases where we need to summarize flow through a We need to add a tuple to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["slices", "", False, "Max", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["slices", "", false, "Max", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"] + ] + } + ] + } The first row defines flow from the first argument (``a`` in the example) to the return value (``max`` in the example). @@ -178,7 +221,7 @@ The first five values identify the function to be modeled as a summary. - The first value ``slices`` is the package name. - The second value ``""`` is left blank, since the function is not a method of a type. -- The third value ``False`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. +- The third value ``false`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. - The fourth value ``Max`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. @@ -207,14 +250,21 @@ This pattern covers many of the cases where we need to summarize flow through a We need to add a tuple to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["slices", "", False, "Concat", "", "", "Argument[0].ArrayElement.ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["slices", "", false, "Concat", "", "", "Argument[0].ArrayElement.ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] + ] + } + ] + } The first row defines flow from the arguments (``a`` and ``b`` in the example) to the return value (``c`` in the example). @@ -222,7 +272,7 @@ The first five values identify the function to be modeled as a summary. - The first value ``slices`` is the package name. - The second value ``""`` is left blank, since the function is not a method of a type. -- The third value ``False`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. +- The third value ``false`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. - The fourth value ``Concat`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. @@ -250,15 +300,22 @@ This pattern covers many of the cases where we need to summarize flow through a We need to add tuples to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["strings", "", False, "Join", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Join", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["strings", "", false, "Join", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "Join", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] + ] + } + ] + } Each tuple defines flow from one argument to the return value. The first row defines flow from the first argument (``elems`` in the example) to the return value (``t`` in the example) and the second row defines flow from the second argument (``sep`` in the example) to the return value (``t`` in the example). @@ -268,7 +325,7 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``strings`` is the package name. - The second value ``""`` is left blank, since the function is not a method of a type. -- The third value ``False`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. +- The third value ``false`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. - The fourth value ``Join`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. @@ -282,14 +339,21 @@ The remaining values are used to define the ``access-path``, the ``kind``, and t It would also be possible to merge the two rows into one by using ".." to indicate a range in the seventh value. This would be useful if the method has many arguments and the flow is the same for all of them. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["strings", "", False, "Join", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["strings", "", false, "Join", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + ] + } + ] + } This row defines flow from both the first and the second argument to the return value. The seventh value ``Argument[0..1]`` is shorthand for specifying an access path to both ``Argument[0]`` and ``Argument[1]``. @@ -306,14 +370,21 @@ This example shows how the Go query pack models flow through a method for a simp We need to add a tuple to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["net/url", "URL", True, "Hostname", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["net/url", "URL", true, "Hostname", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] + } Each tuple defines flow from one argument to the return value. The first row defines flow from the qualifier of the method call (``u`` in the example) to the return value (``host`` in the example). @@ -322,7 +393,7 @@ The first five values identify the function (in this case a method) to be modele - The first value ``net/url`` is the package name. - The second value ``URL`` is the receiver type. -- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. +- The third value ``true`` is a flag that indicates whether or not the model also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. - The fourth value ``Hostname`` is the method name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. @@ -349,20 +420,27 @@ The ``Htmlquote`` function from the `beego` framework HTML-escapes a string, whi We need to add a tuple to the ``barrierModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: barrierModel - data: - - ["group:beego", "", True, "Htmlquote", "", "", "ReturnValue", "html-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "barrierModel" + }, + "data": [ + ["group:beego", "", true, "Htmlquote", "", "", "ReturnValue", "html-injection", "manual"] + ] + } + ] + } The first five values identify the function to be modeled as a barrier. - The first value ``group:beego`` is the package group name. The ``group:`` prefix indicates that this is a package group, which is used to match multiple package paths that refer to the same package. - The second value ``""`` is left blank since the function is not a method of a type. -- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. +- The third value ``true`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. - The fourth value ``Htmlquote`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. @@ -389,20 +467,27 @@ Consider a function called ``IsSafe`` which returns ``true`` when the data is co We need to add a tuple to the ``barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: barrierGuardModel - data: - - ["example.com/example", "", False, "IsSafe", "", "", "Argument[0]", "true", "sql-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "barrierGuardModel" + }, + "data": [ + ["example.com/example", "", false, "IsSafe", "", "", "Argument[0]", "true", "sql-injection", "manual"] + ] + } + ] + } The first five values identify the function to be modeled as a barrier guard. - The first value ``example.com/example`` is the package name. - The second value ``""`` is left blank since the function is not a method of a type. -- The third value ``False`` is a flag that indicates whether or not the model guard also applies to subtypes. This has no effect for non-method functions. +- The third value ``false`` is a flag that indicates whether or not the model guard also applies to subtypes. This has no effect for non-method functions. - The fourth value ``IsSafe`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. @@ -427,20 +512,27 @@ This example shows how we can model a field read as a source of tainted data. We need to add a tuple to the ``sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["net/http", "Request", True, "Body", "", "", "", "remote", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["net/http", "Request", true, "Body", "", "", "", "remote", "manual"] + ] + } + ] + } The first five values identify the field to be modeled as a source. - The first value ``net/http`` is the package name. - The second value ``Request`` is the name of the type that the field is associated with. -- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. For fields this means when the field is accessed as a promoted field in another type. +- The third value ``true`` is a flag that indicates whether or not the model also applies to subtypes. For fields this means when the field is accessed as a promoted field in another type. - The fourth value ``Body`` is the field name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. @@ -460,15 +552,22 @@ Note that packages hosted at ``gopkg.in`` use a slightly different syntax: the m To write models that only apply to ``github.com/couchbase/gocb/v2``, it is sufficient to include the major version suffix (``/v2``) in the package column. To write models that only apply to ``github.com/couchbase/gocb``, you may prefix the package column with ``fixed-version:``. For example, here are two models for a method that has changed name from v1 to v2. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["fixed-version:github.com/couchbase/gocb", "Cluster", True, "ExecuteAnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["github.com/couchbase/gocb/v2", "Cluster", True, "AnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["fixed-version:github.com/couchbase/gocb", "Cluster", true, "ExecuteAnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"], + ["github.com/couchbase/gocb/v2", "Cluster", true, "AnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] + ] + } + ] + } Package grouping ~~~~~~~~~~~~~~~~ @@ -478,20 +577,31 @@ Since Go uses URLs for package identifiers, it is possible for packages to be im To handle this, the CodeQL Go library uses a mapping from the package path to a group name for the package. This mapping can be specified using the ``packageGrouping`` extensible predicate, and then the models for the APIs in the package will use the the prefix ``group:`` followed by the group name in place of the package path. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/go - extensible: packageGrouping - data: - - ["glog", "github.com/golang/glog"] - - ["glog", "gopkg.in/glog"] - - addsTo: - pack: codeql/go - extensible: sinkModel - data: - - ["group:glog", "", False, "Info", "", "", "Argument[0]", "log-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["glog", "github.com/golang/glog"], + ["glog", "gopkg.in/glog"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:glog", "", false, "Info", "", "", "Argument[0]", "log-injection", "manual"] + ] + } + ] + } .. _threat-models-go: diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst index a3435002c858..94f8d795732d 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst @@ -30,7 +30,29 @@ Syntax used to define an element in an extension file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Each model of an element is defined using a data extension where each tuple constitutes a model. -A data extension file to extend the standard Java queries included with CodeQL is a YAML file with the form: +A data extension file to extend the standard Java queries included with CodeQL can be written using either JSON or YAML. JSON is the preferred format, for performance reasons, and takes the following form: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/java-all", + "extensible": "" + }, + "data": [ + ["", "", "..."], + ["", "", "..."] + // ... + ] + } + ] + } + +Files in the JSON format must use the ``.json`` file extension. Single-line (``//``) and multi-line (``/* ... */``) comments are supported as a non-standard JSON extension. + +A YAML file has the following form: .. code-block:: yaml @@ -39,11 +61,11 @@ A data extension file to extend the standard Java queries included with CodeQL i pack: codeql/java-all extensible: data: - - - - + - ["", "", "..."] + - ["", "", "..."] - ... -Each YAML file may contain one or more top-level extensions. +Each data extension file may contain one or more top-level extensions. - ``addsTo`` defines the CodeQL pack name and extensible predicate that the extension is injected into. - ``data`` defines one or more rows of tuples that are injected as values into the extensible predicate. The number of columns and their types must match the definition of the extensible predicate. @@ -74,9 +96,9 @@ Specifying types in Java and Kotlin models **Nested and inner classes** are denoted by joining the enclosing type and the nested type with a dollar sign (``$``), for example ``Outer$Inner``. This applies both to the type column and to nested types in a signature. For example, the ``Level`` enum nested inside the ``Logger`` interface, nested inside the ``System`` class, is written as ``System$Logger$Level``: -.. code-block:: yaml +.. code-block:: json - - ["java.lang", "System$Logger", True, "log", "(System$Logger$Level,String)", "", "Argument[1]", "log-injection", "manual"] + ["java.lang", "System$Logger", true, "log", "(System$Logger$Level,String)", "", "Argument[1]", "log-injection", "manual"] **Generics** are erased, so type parameters are removed: @@ -85,9 +107,9 @@ Specifying types in Java and Kotlin models For example, ``forEach`` on ``Iterable`` takes a ``Consumer`` argument, so the type is ``Iterable`` and the signature is ``(Consumer)``: -.. code-block:: yaml +.. code-block:: json - - ["java.lang", "Iterable", True, "forEach", "(Consumer)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] + ["java.lang", "Iterable", true, "forEach", "(Consumer)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] Examples of custom model definitions ------------------------------------ @@ -109,20 +131,27 @@ This is the ``execute`` method in the ``Statement`` class, which is located in t We need to add a tuple to the ``sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/java-all - extensible: sinkModel - data: - - ["java.sql", "Statement", True, "execute", "(String)", "", "Argument[0]", "sql-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/java-all", + "extensible": "sinkModel" + }, + "data": [ + ["java.sql", "Statement", true, "execute", "(String)", "", "Argument[0]", "sql-injection", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a method) to be modeled as a sink. - The first value ``java.sql`` is the package name. - The second value ``Statement`` is the name of the class (type) that contains the method. -- The third value ``True`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``true`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``execute`` is the method name. - The fifth value ``(String)`` is the method input type signature. @@ -147,20 +176,27 @@ This is the ``getInputStream`` method in the ``Socket`` class, which is located We need to add a tuple to the ``sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/java-all - extensible: sourceModel - data: - - ["java.net", "Socket", False, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/java-all", + "extensible": "sourceModel" + }, + "data": [ + ["java.net", "Socket", false, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a method) to be modeled as a source. - The first value ``java.net`` is the package name. - The second value ``Socket`` is the name of the class (type) that contains the source. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``getInputStream`` is the method name. - The fifth value ``()`` is the method input type signature. @@ -185,15 +221,22 @@ This pattern covers many of the cases where we need to summarize flow through a We need to add tuples to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/java-all - extensible: summaryModel - data: - - ["java.lang", "String", False, "concat", "(String)", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["java.lang", "String", False, "concat", "(String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/java-all", + "extensible": "summaryModel" + }, + "data": [ + ["java.lang", "String", false, "concat", "(String)", "", "Argument[this]", "ReturnValue", "taint", "manual"], + ["java.lang", "String", false, "concat", "(String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] + } Each tuple defines flow from one argument to the return value. The first row defines flow from the qualifier (``s1`` in the example) to the return value (``t`` in the example) and the second row defines flow from the first argument (``s2`` in the example) to the return value (``t`` in the example). @@ -203,7 +246,7 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``java.lang`` is the package name. - The second value ``String`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``false`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``concat`` is the method name. - The fifth value ``(String)`` is the method input type signature. @@ -229,15 +272,22 @@ Here we model flow through higher order methods and collection types. We need to add tuples to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/java-all - extensible: summaryModel - data: - - ["java.util.stream", "Stream", True, "map", "(Function)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - - ["java.util.stream", "Stream", True, "map", "(Function)", "", "Argument[0].ReturnValue", "ReturnValue.Element", "value", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/java-all", + "extensible": "summaryModel" + }, + "data": [ + ["java.util.stream", "Stream", true, "map", "(Function)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"], + ["java.util.stream", "Stream", true, "map", "(Function)", "", "Argument[0].ReturnValue", "ReturnValue.Element", "value", "manual"] + ] + } + ] + } Each tuple defines part of the flow that comprises the total flow through the ``map`` method. The first five values identify the callable (in this case a method) to be modeled as a summary. @@ -245,7 +295,7 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``java.util.stream`` is the package name. - The second value ``Stream`` is the class (type) name. -- The third value ``True`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``true`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``map`` is the method name. - The fifth value ``Function`` is the method input type signature. @@ -286,20 +336,27 @@ This is the ``getName`` method in the ``File`` class, which is located in the `` We need to add a tuple to the ``barrierModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/java-all - extensible: barrierModel - data: - - ["java.io", "File", True, "getName", "()", "", "ReturnValue", "path-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/java-all", + "extensible": "barrierModel" + }, + "data": [ + ["java.io", "File", true, "getName", "()", "", "ReturnValue", "path-injection", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a method) to be modeled as a barrier. - The first value ``java.io`` is the package name. - The second value ``File`` is the name of the class (type) that contains the method. -- The third value ``True`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The third value ``true`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``getName`` is the method name. - The fifth value ``()`` is the method input type signature. @@ -328,20 +385,27 @@ When the ``isAbsolute`` method returns ``false``, the URI is relative and theref We need to add a tuple to the ``barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/java-all - extensible: barrierGuardModel - data: - - ["java.net", "URI", True, "isAbsolute", "()", "", "Argument[this]", "false", "request-forgery", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/java-all", + "extensible": "barrierGuardModel" + }, + "data": [ + ["java.net", "URI", true, "isAbsolute", "()", "", "Argument[this]", "false", "request-forgery", "manual"] + ] + } + ] + } The first five values identify the callable (in this case a method) to be modeled as a barrier guard. - The first value ``java.net`` is the package name. - The second value ``URI`` is the name of the class (type) that contains the method. -- The third value ``True`` is a flag that indicates whether or not the model guard also applies to all overrides of the method. +- The third value ``true`` is a flag that indicates whether or not the model guard also applies to all overrides of the method. - The fourth value ``isAbsolute`` is the method name. - The fifth value ``()`` is the method input type signature. @@ -367,14 +431,21 @@ A neutral model is used to define that there is no flow through a method. We need to add a tuple to the ``neutralModel(package, type, name, signature, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/java-all - extensible: neutralModel - data: - - ["java.time", "Instant", "now", "()", "summary", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/java-all", + "extensible": "neutralModel" + }, + "data": [ + ["java.time", "Instant", "now", "()", "summary", "manual"] + ] + } + ] + } The first four values identify the callable (in this case a method) to be modeled as a neutral, the fifth value is the kind, and the sixth value is the provenance (origin) of the neutral. 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 7ede0d0aff3a..865e7de43dec 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 @@ -7,18 +7,42 @@ Customizing Library Models for JavaScript JavaScript analysis can be customized by adding library models in data extension files. -A data extension for JavaScript is a YAML file of the form: +A data extension for JavaScript can be written using either JSON or YAML. JSON is the preferred format, for performance reasons, and takes the following form: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "" + }, + "data": [ + ["", "", "..."], + ["", "", "..."] + // ... + ] + } + ] + } + +Files in the JSON format must use the ``.json`` file extension. Single-line (``//``) and multi-line (``/* ... */``) comments are supported as a non-standard JSON extension. + +A YAML file has the following form: .. code-block:: yaml - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: - data: - - - - - - ... + extensions: + - addsTo: + pack: codeql/javascript-all + extensible: + data: + - ["", "", "..."] + - ["", "", "..."] + - ... + +Each data extension file may contain one or more top-level extensions. The CodeQL library for JavaScript exposes the following extensible predicates: @@ -44,14 +68,21 @@ In this example, we'll show how to add the following argument, passed to ``execa Note that this sink is already recognized by the CodeQL JS analysis, but for this example, you could add a tuple to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["execa", "Member[shell].Argument[0]", "command-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["execa", "Member[shell].Argument[0]", "command-injection"] + ] + } + ] + } - The first column, ``"execa"``, identifies a set of values from which to begin the search for the sink. The string ``"execa"`` means we start at the places where the codebase imports the NPM package ``execa``. @@ -76,18 +107,21 @@ In this example, we'll show how the ``event.data`` expression below could be mar Note that this source is already recognized by the CodeQL JS analysis, but for this example, you could add a tuple to the ``sourceModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - [ - "global", - "Member[addEventListener].Argument[1].Parameter[0].Member[data]", - "remote", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["global", "Member[addEventListener].Argument[1].Parameter[0].Member[data]", "remote"] + ] + } + ] + } - The first column, ``"global"``, begins the search at references to the global object (also known as ``window`` in browser contexts). This is a special JavaScript object that contains all global variables and methods. - ``Member[addEventListener]`` selects accesses to the ``addEventListener`` member. @@ -113,18 +147,21 @@ For example, it would also pick up this irrelevant source: We can refine the model by adding the ``WithStringArgument`` component to restrict the set of calls being considered: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - [ - "global", - "Member[addEventListener].WithStringArgument[0=message].Argument[1].Parameter[0].Member[data]", - "remote", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["global", "Member[addEventListener].WithStringArgument[0=message].Argument[1].Parameter[0].Member[data]", "remote"] + ] + } + ] + } The ``WithStringArgument[0=message]`` component here selects the subset of calls to ``addEventListener`` where the first argument is a string literal with the value ``"message"``. @@ -143,14 +180,21 @@ In this example, we'll show how to add the following SQL injection sink: We need to add a tuple to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["mysql.Connection", "Member[query].Argument[0]", "sql-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["mysql.Connection", "Member[query].Argument[0]", "sql-injection"] + ] + } + ] + } - The first column, ``"mysql.Connection"``, begins the search at any expression whose value is known to be an instance of the ``Connection`` type from the ``mysql`` package. This will select the ``connection`` parameter above because of its type annotation. @@ -162,11 +206,12 @@ This works in this example because the ``connection`` parameter has a type annot Note that there is a significant difference between the following two rows: -.. code-block:: yaml +.. code-block:: json - data: - - ["mysql.Connection", "", ...] - - ["mysql", "Member[Connection]", ...] + "data": [ + ["mysql.Connection", "" /* ... */], + ["mysql", "Member[Connection]" /* ... */] + ] The first row matches instances of ``mysql.Connection``, which are objects that encapsulate a MySQL connection. The second row would match something like ``require('mysql').Connection``, which is not itself a connection object. @@ -188,14 +233,21 @@ There is no type annotation on ``connection``, and there is no indication of wha By adding a tuple to the ``typeModel(type1, type2, path)`` extensible predicate we can tell our model that this function returns an instance of ``mysql.Connection``: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["mysql.Connection", "@example/db", "Member[getConnection].ReturnValue"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["mysql.Connection", "@example/db", "Member[getConnection].ReturnValue"] + ] + } + ] + } - The first column, ``"mysql.Connection"``, names the type that we're adding a new definition for. - The second column, ``"@example/db"``, begins the search at imports of the hypothetical NPM package ``@example/db``. @@ -209,9 +261,9 @@ The mechanism used here is how library models work for both TypeScript and plain A good library model contains ``typeModel`` tuples to ensure it works even in codebases without type annotations. For example, the ``mysql`` model that is included with the CodeQL JS analysis includes this type definition (among many others): -.. code-block:: yaml +.. code-block:: json - - ["mysql.Connection", "mysql", "Member[createConnection].ReturnValue"] + ["mysql.Connection", "mysql", "Member[createConnection].ReturnValue"] Example: Using fuzzy models to simplify modeling ------------------------------------------------ @@ -228,14 +280,21 @@ In this example, we'll show how to add the following SQL injection sink using a We need to add a tuple for a fuzzy model to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["mysql", "Fuzzy.Member[query].Argument[0]", "sql-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["mysql", "Fuzzy.Member[query].Argument[0]", "sql-injection"] + ] + } + ] + } - The first column, ``"mysql"``, begins the search at places where the `mysql` package is imported. - ``Fuzzy`` selects all objects that appear to originate from the `mysql` package, such as the `pool`, `conn`, `err`, and `rows` objects. @@ -247,21 +306,31 @@ We need to add a tuple for a fuzzy model to the ``sinkModel(type, path, kind)`` For reference, a more detailed model might look like this, as described in the preceding examples: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["mysql.Connection", "Member[query].Argument[0]", "sql-injection"] - - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["mysql.Pool", "mysql", "Member[createPool].ReturnValue"] - - ["mysql.Connection", "mysql.Pool", "Member[getConnection].Argument[0].Parameter[1]"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["mysql.Connection", "Member[query].Argument[0]", "sql-injection"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["mysql.Pool", "mysql", "Member[createPool].ReturnValue"], + ["mysql.Connection", "mysql.Pool", "Member[getConnection].Argument[0].Parameter[1]"] + ] + } + ] + } The model using the ``Fuzzy`` component is simpler, at the cost of being approximate. This technique is useful when modeling a large or complex library, where it is difficult to write a detailed model. @@ -278,20 +347,21 @@ In this example, we'll show how to add flow through calls to `decodeURIComponent Note that this flow is already recognized by the CodeQL JS analysis, but for this example, you could add a tuple to the ``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - [ - "global", - "Member[decodeURIComponent]", - "Argument[0]", - "ReturnValue", - "taint", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["global", "Member[decodeURIComponent]", "Argument[0]", "ReturnValue", "taint"] + ] + } + ] + } - The first column, ``"global"``, begins the search for relevant calls at references to the global object. In JavaScript, global variables are properties of the global object, so this lets us access global variables or functions. @@ -315,20 +385,21 @@ In this example, we'll show how to add flow through calls to ``forEach`` from th Note that this flow is already recognized by the CodeQL JS analysis, but for this example, you could add a tuple to the ``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - [ - "underscore", - "Member[forEach]", - "Argument[0].ArrayElement", - "Argument[1].Parameter[0]", - "value", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["underscore", "Member[forEach]", "Argument[0].ArrayElement", "Argument[1].Parameter[0]", "value"] + ] + } + ] + } - The first column, ``"underscore"``, begins the search for relevant calls at places where the ``underscore`` package is imported. - The second column, ``Member[forEach]``, selects references to the ``forEach`` member from the ``underscore`` package. @@ -365,18 +436,21 @@ on the incoming request objects: We need to add a tuple to the ``sourceModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - [ - "@example/middleware", - "Member[injectData].ReturnValue.GuardedRouteHandler.Parameter[0].Member[data]", - "remote", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["@example/middleware", "Member[injectData].ReturnValue.GuardedRouteHandler.Parameter[0].Member[data]", "remote"] + ] + } + ] + } - The first column, ``"@example/middleware"``, begins the search at imports of the hypothetical NPM package ``@example/middleware``. - ``Member[injectData]`` selects accesses to the ``injectData`` member. @@ -398,14 +472,21 @@ In this example, we'll show how to add the return value of ``encodeURIComponent` We need to add a tuple to the ``barrierModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: barrierModel - data: - - ["global", "Member[encodeURIComponent].ReturnValue", "html-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "barrierModel" + }, + "data": [ + ["global", "Member[encodeURIComponent].ReturnValue", "html-injection"] + ] + } + ] + } - The first column, ``"global"``, begins the search for relevant calls at references to the global object. - The second column, ``Member[encodeURIComponent].ReturnValue``, selects the return value of the ``encodeURIComponent`` function. @@ -425,14 +506,21 @@ Consider a function called `isValid` which returns `true` when the data is consi We need to add a tuple to the ``barrierGuardModel(type, path, acceptingValue, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: barrierGuardModel - data: - - ["my-package", "Member[isValid].Argument[0]", "true", "sql-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "barrierGuardModel" + }, + "data": [ + ["my-package", "Member[isValid].Argument[0]", "true", "sql-injection"] + ] + } + ] + } - The first column, ``"my-package"``, begins the search at imports of the hypothetical NPM package ``my-package``. - The second column, ``Member[isValid].Argument[0]``, selects the first argument of the `isValid` function. This is the value being validated. @@ -458,14 +546,21 @@ Adds a new taint source. Most taint-tracking queries will use the new source. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ["global", "Member[user].Member[name]", "remote"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["global", "Member[user].Member[name]", "remote"] + ] + } + ] + } sinkModel(type, path, kind) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -478,14 +573,21 @@ Adds a new taint sink. Sinks are query-specific and will typically affect one or Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["global", "Member[eval].Argument[0]", "code-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["global", "Member[eval].Argument[0]", "code-injection"] + ] + } + ] + } summaryModel(type, path, input, output, kind) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -500,20 +602,21 @@ Adds flow through a function call. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - [ - "global", - "Member[decodeURIComponent]", - "Argument[0]", - "ReturnValue", - "taint", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["global", "Member[decodeURIComponent]", "Argument[0]", "ReturnValue", "taint"] + ] + } + ] + } typeModel(type1, type2, path) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -526,18 +629,21 @@ Adds a new definition of a type. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - [ - "mysql.Connection", - "@example/db", - "Member[getConnection].ReturnValue", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["mysql.Connection", "@example/db", "Member[getConnection].ReturnValue"] + ] + } + ] + } Types ----- diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-python.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-python.rst index ee4565caff3e..507fd7ae223f 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-python.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-python.rst @@ -7,18 +7,42 @@ Customizing Library Models for Python Python analysis can be customized by adding library models in data extension files. -A data extension for Python is a YAML file of the form: +A data extension for Python can be written using either JSON or YAML. JSON is the preferred format, for performance reasons, and takes the following form: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "" + }, + "data": [ + ["", "", "..."], + ["", "", "..."] + // ... + ] + } + ] + } + +Files in the JSON format must use the ``.json`` file extension. Single-line (``//``) and multi-line (``/* ... */``) comments are supported as a non-standard JSON extension. + +A YAML file has the following form: .. code-block:: yaml - extensions: - - addsTo: - pack: codeql/python-all - extensible: - data: - - - - - - ... + extensions: + - addsTo: + pack: codeql/python-all + extensible: + data: + - ["", "", "..."] + - ["", "", "..."] + - ... + +Each data extension file may contain one or more top-level extensions. The CodeQL library for Python exposes the following extensible predicates: @@ -44,14 +68,21 @@ In this example, we'll show how to add the following argument, passed to ``sudo` Note that this sink is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: sinkModel - data: - - ["fabric", "Member[operations].Member[sudo].Argument[0]", "command-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "sinkModel" + }, + "data": [ + ["fabric", "Member[operations].Member[sudo].Argument[0]", "command-injection"] + ] + } + ] + } - The first column, ``"fabric"``, identifies a set of values from which to begin the search for the sink. The string ``"fabric"`` means we start at the places where the codebase imports the package ``fabric``. @@ -77,14 +108,21 @@ Often sinks are found as arguments to methods rather than functions. In this exa Note that this sink is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: sinkModel - data: - - ["invoke", "Member[Context].Instance.Member[run].Argument[0]", "command-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "sinkModel" + }, + "data": [ + ["invoke", "Member[Context].Instance.Member[run].Argument[0]", "command-injection"] + ] + } + ] + } - The first column, ``"invoke"``, begins the search at places where the codebase imports the package ``invoke``. - The second column is an access path that is evaluated from left to right, starting at the values that were identified by the first column. @@ -100,14 +138,21 @@ Note that the ``Instance`` component is used to select instances of a class, inc Since methods on instances are common targets, we have a more compact syntax for selecting them. The first column, the type, is allowed to contain a dotted path ending in a class name. This will begin the search at instances of that class. Using this syntax, the previous example could be written as: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: sinkModel - data: - - ["invoke.Context", "Member[run].Argument[0]", "command-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "sinkModel" + }, + "data": [ + ["invoke.Context", "Member[run].Argument[0]", "command-injection"] + ] + } + ] + } Continued example: Multiple ways to obtain a type ------------------------------------------------- @@ -124,14 +169,21 @@ Comparing to the previous Python snippet, the ``Context`` class is now found as We could add a data extension similar to the previous one, but with the type ``invoke.context.Context``. However, we can also use the ``typeModel(type1, type2, path)`` extensible predicate to describe how to reach ``invoke.Context`` from ``invoke.context.Context``: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: typeModel - data: - - ["invoke.Context", "invoke.context.Context", ""] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "typeModel" + }, + "data": [ + ["invoke.Context", "invoke.context.Context", ""] + ] + } + ] + } - The first column, ``"invoke.Context"``, is the name of the type to reach. - The second column, ``"invoke.context.Context"``, is the name of the type from which to evaluate the path. @@ -162,18 +214,21 @@ This filename is what we want to mark as a taint source. An example use looks as Note that this source is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the ``sourceModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: sourceModel - data: - - [ - "django.db.models.FileField!", - "Call.Argument[0,upload_to:].Parameter[1]", - "remote", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "sourceModel" + }, + "data": [ + ["django.db.models.FileField!", "Call.Argument[0,upload_to:].Parameter[1]", "remote"] + ] + } + ] + } - The first column, ``"django.db.models.FileField!"``, is a dotted path to the ``FileField`` class from the ``django.db.models`` package. The ``!`` at the end of the type name indicates that we are looking for the class itself rather than instances of this class. @@ -201,20 +256,21 @@ In this example, we'll show how to add flow through calls to ``re.compile``. Note that this flow is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the ``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: summaryModel - data: - - [ - "re", - "Member[compile]", - "Argument[0,pattern:]", - "ReturnValue.Attribute[pattern]", - "value", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "summaryModel" + }, + "data": [ + ["re", "Member[compile]", "Argument[0,pattern:]", "ReturnValue.Attribute[pattern]", "value"] + ] + } + ] + } - The first column, ``"re"``, begins the search for relevant calls at places where the ``re`` package is imported. - The second column, ``"Member[compile]"``, is a path leading to the function calls we wish to model. @@ -236,20 +292,21 @@ In this example, we'll show how to add flow through calls to the built-in functi Note that this flow is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the ``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: summaryModel - data: - - [ - "builtins", - "Member[sorted]", - "Argument[0]", - "ReturnValue", - "taint", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "summaryModel" + }, + "data": [ + ["builtins", "Member[sorted]", "Argument[0]", "ReturnValue", "taint"] + ] + } + ] + } - The first column, ``"builtins"``, begins the search for relevant calls among references to the built-in names. In Python, many built-in functions are available. Technically, most of these are part of the ``builtins`` package, but they can be accessed without an explicit import. When we write ``builtins`` in the first column, we will find both the implicit and explicit references to the built-in functions. @@ -261,20 +318,21 @@ Note that this flow is already recognized by the CodeQL Python analysis, but for We might also provide a summary stating that the elements of the input list are preserved in the output list: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: summaryModel - data: - - [ - "builtins", - "Member[sorted]", - "Argument[0].ListElement", - "ReturnValue.ListElement", - "value", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "summaryModel" + }, + "data": [ + ["builtins", "Member[sorted]", "Argument[0].ListElement", "ReturnValue.ListElement", "value"] + ] + } + ] + } The tracking of list elements is imprecise in that the analysis does not know where in the list the tracked value is found. So this summary simply states that if the value is found somewhere in the input list, it will also be found somewhere in the output list, unchanged. @@ -291,14 +349,21 @@ In this example, we'll show how to add the return value of ``html.escape`` as a We need to add a tuple to the ``barrierModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: barrierModel - data: - - ["html", "Member[escape].ReturnValue", "html-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "barrierModel" + }, + "data": [ + ["html", "Member[escape].ReturnValue", "html-injection"] + ] + } + ] + } - The first column, ``"html"``, begins the search at places where the ``html`` module is imported. - The second column, ``Member[escape].ReturnValue``, selects the return value of the ``escape`` function from the ``html`` module. @@ -318,19 +383,21 @@ Consider the function ``url_has_allowed_host_and_scheme`` from the ``django.util We need to add a tuple to the ``barrierGuardModel(type, path, acceptingValue, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: barrierGuardModel - data: - - [ - "django", - "Member[utils].Member[http].Member[url_has_allowed_host_and_scheme].Argument[0,url:]", - "true", - "url-redirection", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "barrierGuardModel" + }, + "data": [ + ["django", "Member[utils].Member[http].Member[url_has_allowed_host_and_scheme].Argument[0,url:]", "true", "url-redirection"] + ] + } + ] + } - The first column, ``"django"``, begins the search at places where the ``django`` package is imported. - The second column, ``Member[utils].Member[http].Member[url_has_allowed_host_and_scheme].Argument[0,url:]``, selects the first argument (or the keyword argument ``url``) of the ``url_has_allowed_host_and_scheme`` function in the ``django.utils.http`` module. This is the value being validated. @@ -356,14 +423,21 @@ Adds a new taint source. Most taint-tracking queries will use the new source. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: sourceModel - data: - - ["flask", "Member[request]", "remote"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "sourceModel" + }, + "data": [ + ["flask", "Member[request]", "remote"] + ] + } + ] + } sinkModel(type, path, kind) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -376,14 +450,21 @@ Adds a new taint sink. Sinks are query-specific and will typically affect one or Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: sinkModel - data: - - ["builtins", "Member[exec].Argument[0]", "code-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "sinkModel" + }, + "data": [ + ["builtins", "Member[exec].Argument[0]", "code-injection"] + ] + } + ] + } summaryModel(type, path, input, output, kind) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -398,20 +479,21 @@ Adds flow through a function call. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: summaryModel - data: - - [ - "builtins", - "Member[reversed]", - "Argument[0]", - "ReturnValue", - "taint", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "summaryModel" + }, + "data": [ + ["builtins", "Member[reversed]", "Argument[0]", "ReturnValue", "taint"] + ] + } + ] + } typeModel(type1, type2, path) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -426,18 +508,21 @@ In the context of instances, this describes how to obtain an instance of ``type1 Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/python-all - extensible: typeModel - data: - - [ - "flask.Response", - "flask", - "Member[jsonify].ReturnValue", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/python-all", + "extensible": "typeModel" + }, + "data": [ + ["flask.Response", "flask", "Member[jsonify].ReturnValue"] + ] + } + ] + } Types ----- diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst index beccf82327f2..883203c675a5 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst @@ -8,18 +8,42 @@ Customizing library models for Ruby Ruby analysis can be customized by adding library models in data extension files. -A data extension for Ruby is a YAML file of the form: +A data extension for Ruby can be written using either JSON or YAML. JSON is the preferred format, for performance reasons, and takes the following form: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "" + }, + "data": [ + ["", "", "..."], + ["", "", "..."] + // ... + ] + } + ] + } + +Files in the JSON format must use the ``.json`` file extension. Single-line (``//``) and multi-line (``/* ... */``) comments are supported as a non-standard JSON extension. + +A YAML file has the following form: .. code-block:: yaml - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: - data: - - - - - - ... + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: + data: + - ["", "", "..."] + - ["", "", "..."] + - ... + +Each data extension file may contain one or more top-level extensions. The CodeQL library for Ruby exposes the following extensible predicates: @@ -45,15 +69,21 @@ In this example, we'll show how to add the following argument, passed to ``tty-c We need to add a tuple to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: sinkModel - data: - - ["TTY::Command", "Method[run].Argument[0]", "command-injection"] - +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "sinkModel" + }, + "data": [ + ["TTY::Command", "Method[run].Argument[0]", "command-injection"] + ] + } + ] + } - The first column, ``"TTY::Command"``, identifies a set of values from which to begin the search for the sink. The string ``"TTY::Command"`` means we start at the places where the codebase constructs instances of the class ``TTY::Command``. @@ -79,18 +109,21 @@ In this example, we'll show how the 'x' parameter below could be marked as a rem We need to add a tuple to the ``sourceModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: sourceModel - data: - - [ - "Sinatra::Base!", - "Method[get].Argument[block].Parameter[0]", - "remote", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "sourceModel" + }, + "data": [ + ["Sinatra::Base!", "Method[get].Argument[block].Parameter[0]", "remote"] + ] + } + ] + } - The first column, ``"Sinatra::Base!"``, begins the search at references to the ``Sinatra::Base`` class. The ``!`` suffix indicates that we want to search for references to the class itself, rather than instances of the class. @@ -113,14 +146,21 @@ In this example, we'll show how to add the following SQL injection sink: We need to add a tuple to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: sinkModel - data: - - ["Mysql2::Client", "Method[query].Argument[0]", "sql-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "sinkModel" + }, + "data": [ + ["Mysql2::Client", "Method[query].Argument[0]", "sql-injection"] + ] + } + ] + } - The first column, ``"Mysql2::Client"``, begins the search at any instance of the ``Mysql2::Client`` class. - ``Method[query]`` selects any call to the ``query`` method on that instance. @@ -145,14 +185,21 @@ may have many models for the various methods available. Because ``Mysql2::EM::Cl Instead of updating all our models to include both classes, we can add a tuple to the ``typeModel(type, subtype, ext)`` extensible predicate to indicate that ``Mysql2::EM::Client`` is a subclass of ``Mysql2::Client``: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: typeModel - data: - - ["Mysql2::Client", "Mysql2::EM::Client", ""] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "typeModel" + }, + "data": [ + ["Mysql2::Client", "Mysql2::EM::Client", ""] + ] + } + ] + } Example: Adding flow through 'URI.decode_uri_component' ------------------------------------------------------- @@ -165,20 +212,21 @@ In this example, we'll show how to add flow through calls to 'URI.decode_uri_com We need to add a tuple to the ``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: summaryModel - data: - - [ - "URI!", - "Method[decode_uri_component]", - "Argument[0]", - "ReturnValue", - "taint", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "summaryModel" + }, + "data": [ + ["URI!", "Method[decode_uri_component]", "Argument[0]", "ReturnValue", "taint"] + ] + } + ] + } - The first column, ``"URI!"``, begins the search for relevant calls at references to the ``URI`` class. The ``!`` suffix indicates that we are looking for the class itself, rather than instances of the class. @@ -201,20 +249,21 @@ In this example, we'll show how to add flow through calls to ``File#each`` from We need to add a tuple to the ``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: summaryModel - data: - - [ - "File", - "Method[each]", - "Argument[self]", - "Argument[block].Parameter[0]", - "taint", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "summaryModel" + }, + "data": [ + ["File", "Method[each]", "Argument[self]", "Argument[block].Parameter[0]", "taint"] + ] + } + ] + } - The first column, ``"File"``, begins the search for relevant calls at places where the ``File`` class is used. - The second column, ``Method[each]``, selects references to the ``each`` method on the ``File`` class. @@ -240,14 +289,21 @@ In this example, we'll show how to add the return value of ``Mysql2::Client#esca We need to add a tuple to the ``barrierModel(type, path, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: barrierModel - data: - - ["Mysql2::Client!", "Method[escape].ReturnValue", "sql-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "barrierModel" + }, + "data": [ + ["Mysql2::Client!", "Method[escape].ReturnValue", "sql-injection"] + ] + } + ] + } - The first column, ``"Mysql2::Client!"``, begins the search for relevant calls at references to the ``Mysql2::Client`` class. The ``!`` suffix indicates that we want to search for references to the class itself, rather than instances of the class. @@ -269,14 +325,21 @@ Consider a validation method ``Validator.is_safe`` which returns ``true`` when t We need to add a tuple to the ``barrierGuardModel(type, path, acceptingValue, kind)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: barrierGuardModel - data: - - ["Validator!", "Method[is_safe].Argument[0]", "true", "sql-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "barrierGuardModel" + }, + "data": [ + ["Validator!", "Method[is_safe].Argument[0]", "true", "sql-injection"] + ] + } + ] + } - The first column, ``"Validator!"``, begins the search at references to the ``Validator`` class. The ``!`` suffix indicates that we want to search for references to the class itself, rather than instances of the class. @@ -303,14 +366,21 @@ Adds a new taint source. Most taint-tracking queries will use the new source. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: sourceModel - data: - - ["User", "Method[name]", "remote"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "sourceModel" + }, + "data": [ + ["User", "Method[name]", "remote"] + ] + } + ] + } sinkModel(type, path, kind) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -323,14 +393,21 @@ Adds a new taint sink. Sinks are query-specific and will typically affect one or Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: sinkModel - data: - - ["ExecuteShell", "Method[run].Argument[0]", "command-injection"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "sinkModel" + }, + "data": [ + ["ExecuteShell", "Method[run].Argument[0]", "command-injection"] + ] + } + ] + } summaryModel(type, path, input, output, kind) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -345,20 +422,21 @@ Adds flow through a method call. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: summaryModel - data: - - [ - "URI", - "Method[decode_uri_component]", - "Argument[0]", - "ReturnValue", - "taint", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "summaryModel" + }, + "data": [ + ["URI", "Method[decode_uri_component]", "Argument[0]", "ReturnValue", "taint"] + ] + } + ] + } typeModel(type1, type2, path) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -371,18 +449,21 @@ Adds a new definition of a type. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/ruby-all - extensible: typeModel - data: - - [ - "Mysql2::Client", - "MyDbWrapper", - "Method[getConnection].ReturnValue", - ] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/ruby-all", + "extensible": "typeModel" + }, + "data": [ + ["Mysql2::Client", "MyDbWrapper", "Method[getConnection].ReturnValue"] + ] + } + ] + } Types ----- diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-rust.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-rust.rst index 45983f4e62c5..2c2298768aad 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-rust.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-rust.rst @@ -25,7 +25,29 @@ Syntax used to define an element in an extension file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Each model of an element is defined using a data extension where each tuple constitutes a model. -A data extension file to extend the standard Rust queries included with CodeQL is a YAML file with the form: +A data extension file to extend the standard Rust queries included with CodeQL can be written using either JSON or YAML. JSON is the preferred format, for performance reasons, and takes the following form: + +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "" + }, + "data": [ + ["", "", "..."], + ["", "", "..."] + // ... + ] + } + ] + } + +Files in the JSON format must use the ``.json`` file extension. Single-line (``//``) and multi-line (``/* ... */``) comments are supported as a non-standard JSON extension. + +A YAML file has the following form: .. code-block:: yaml @@ -34,11 +56,11 @@ A data extension file to extend the standard Rust queries included with CodeQL i pack: codeql/rust-all extensible: data: - - - - + - ["", "", "..."] + - ["", "", "..."] - ... -Each YAML file may contain one or more top-level extensions. +Each data extension file may contain one or more top-level extensions. - ``addsTo`` defines the CodeQL pack name and extensible predicate that the extension is injected into. - ``data`` defines one or more rows of tuples that are injected as values into the extensible predicate. The number of columns and their types must match the definition of the extensible predicate. @@ -99,15 +121,21 @@ This example shows how the Rust query pack models the first argument of the ``sq We need to add a tuple to the ``sinkModel(path, input, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["sqlx_core::query::query", "Argument[0]", "sql-injection", "manual"] - +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "sinkModel" + }, + "data": [ + ["sqlx_core::query::query", "Argument[0]", "sql-injection", "manual"] + ] + } + ] + } - The first value ``sqlx_core::query::query`` is the canonical path of the function to model. Note that this is the internal module path (``sqlx_core::query::query``), not the public re-export path (``sqlx::query``). - The second value ``Argument[0]`` is the access path to the first argument of the function call, which is the SQL query string. This is the location of the sink. @@ -128,15 +156,21 @@ This example shows how the Rust query pack models the return value of the ``reqw We need to add a tuple to the ``sourceModel(path, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: sourceModel - data: - - ["reqwest::get", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] - +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "sourceModel" + }, + "data": [ + ["reqwest::get", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] + ] + } + ] + } - The first value ``reqwest::get`` is the canonical path of the function. - The second value ``ReturnValue.Future.Field[core::result::Result::Ok(0)]`` is the access path to the output. This compound path is read left to right: @@ -162,14 +196,21 @@ This example shows how the Rust query pack models the return value of ``std::env We need to add a tuple to the ``sourceModel(path, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: sourceModel - data: - - ["std::env::var", "ReturnValue.Field[core::result::Result::Ok(0)]", "environment", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "sourceModel" + }, + "data": [ + ["std::env::var", "ReturnValue.Field[core::result::Result::Ok(0)]", "environment", "manual"] + ] + } + ] + } - The first value ``std::env::var`` is the canonical path to the ``var`` function in the ``std::env`` module. - The second value ``ReturnValue.Field[core::result::Result::Ok(0)]`` selects the ``Ok`` variant of the returned ``Result``. @@ -190,15 +231,21 @@ This example shows how the Rust query pack models taint flow through the ``text` We need to add a tuple to the ``summaryModel(path, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "summaryModel" + }, + "data": [ + ["::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + ] + } + ] + } - The first value ``::text`` is the canonical path. Note the format ``::method`` used for inherent methods. Also note that the canonical path uses the internal module path ``reqwest::response::Response``, not just ``reqwest::Response``. - The second value ``Argument[self]`` is the access path to the input. ``Argument[self]`` refers to the receiver of the method call (``response`` in the example). @@ -222,15 +269,22 @@ This example shows how the Rust query pack models taint flow through the ``join` We need to add tuples to the ``summaryModel(path, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["::join", "Argument[self].Reference", "ReturnValue", "taint", "manual"] - - ["::join", "Argument[0]", "ReturnValue", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "summaryModel" + }, + "data": [ + ["::join", "Argument[self].Reference", "ReturnValue", "taint", "manual"], + ["::join", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] + } Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. Each tuple defines flow from one input to the output. The first row defines flow from the receiver and the second row defines flow from the first argument. @@ -263,15 +317,21 @@ This example shows how the Rust query pack models a more complex flow through a We need to add tuples to the ``summaryModel(path, input, output, kind, provenance)`` extensible predicate by updating a data extension file: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "summaryModel" + }, + "data": [ + ["::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] + ] + } + ] + } - The first value ``::map`` is the canonical path. The ``::method`` form matches any type that implements the ``Iterator`` trait. - The second value ``Argument[self].Element`` is the access path to the input — the elements of the iterator (the receiver). @@ -290,14 +350,21 @@ This example shows how the Rust query pack models the ``Option::map`` method as A neutral model prevents generated or inherited models of a specific category (``source``, ``sink``, or ``summary``) from being applied to a callable. This is useful when an automatically generated model incorrectly identifies a callable as, for example, a sink. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: neutralModel - data: - - ["::map", "sink", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "neutralModel" + }, + "data": [ + ["::map", "sink", "manual"] + ] + } + ] + } Since we are adding a neutral model, we need to add a tuple to the ``neutralModel`` extensible predicate. The tuple has three values: @@ -322,15 +389,21 @@ Consider a hypothetical function ``my_crate::sanitize::escape_sql`` which escape We need to add a tuple to the ``barrierModel(path, output, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: barrierModel - data: - - ["my_crate::sanitize::escape_sql", "ReturnValue", "sql-injection", "manual"] - +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "barrierModel" + }, + "data": [ + ["my_crate::sanitize::escape_sql", "ReturnValue", "sql-injection", "manual"] + ] + } + ] + } - The first value ``my_crate::sanitize::escape_sql`` is the canonical path of the function. - The second value ``ReturnValue`` is the access path to the output of the barrier, which means that the return value is considered sanitized. @@ -356,15 +429,21 @@ Consider a hypothetical function ``my_crate::validate::is_safe_path`` which retu We need to add a tuple to the ``barrierGuardModel(path, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: barrierGuardModel - data: - - ["my_crate::validate::is_safe_path", "Argument[0]", "true", "path-injection", "manual"] - +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "barrierGuardModel" + }, + "data": [ + ["my_crate::validate::is_safe_path", "Argument[0]", "true", "path-injection", "manual"] + ] + } + ] + } - The first value ``my_crate::validate::is_safe_path`` is the canonical path of the function. - The second value ``Argument[0]`` is the access path to the input whose flow is blocked. In this case, the first argument to the function (``user_path`` in the example). @@ -399,14 +478,21 @@ Adds a new taint source. Most taint-tracking queries will use the new source. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: sourceModel - data: - - ["std::env::var", "ReturnValue.Field[core::result::Result::Ok(0)]", "environment", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "sourceModel" + }, + "data": [ + ["std::env::var", "ReturnValue.Field[core::result::Result::Ok(0)]", "environment", "manual"] + ] + } + ] + } sinkModel(path, input, kind, provenance) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -420,14 +506,21 @@ Adds a new taint sink. Sinks are query-specific and will typically affect one or Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["sqlx_core::query::query", "Argument[0]", "sql-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "sinkModel" + }, + "data": [ + ["sqlx_core::query::query", "Argument[0]", "sql-injection", "manual"] + ] + } + ] + } summaryModel(path, input, output, kind, provenance) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -442,14 +535,21 @@ Adds flow through a function or method call. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "summaryModel" + }, + "data": [ + ["::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + ] + } + ] + } neutralModel(path, kind, provenance) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -462,14 +562,21 @@ Prevents generated or inherited models of the specified category from being appl Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: neutralModel - data: - - ["::map", "sink", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "neutralModel" + }, + "data": [ + ["::map", "sink", "manual"] + ] + } + ] + } barrierModel(path, output, kind, provenance) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -483,14 +590,21 @@ Adds a new barrier that stops the flow of taint at the specified element. Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: barrierModel - data: - - ["my_crate::sanitize::escape_sql", "ReturnValue", "sql-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "barrierModel" + }, + "data": [ + ["my_crate::sanitize::escape_sql", "ReturnValue", "sql-injection", "manual"] + ] + } + ] + } barrierGuardModel(path, input, acceptingValue, kind, provenance) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -505,14 +619,21 @@ Adds a new barrier guard that stops the flow of taint when a conditional check i Example: -.. code-block:: yaml - - extensions: - - addsTo: - pack: codeql/rust-all - extensible: barrierGuardModel - data: - - ["my_crate::validate::is_safe_path", "Argument[0]", "true", "path-injection", "manual"] +.. code-block:: json + + { + "extensions": [ + { + "addsTo": { + "pack": "codeql/rust-all", + "extensible": "barrierGuardModel" + }, + "data": [ + ["my_crate::validate::is_safe_path", "Argument[0]", "true", "path-injection", "manual"] + ] + } + ] + } Access paths ------------ diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst index 0993702172f3..5d8ae0993813 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst @@ -295,7 +295,7 @@ New Features JavaScript/TypeScript """"""""""""""""""""" -* Improved support for `Restify `__ framework, leading to more results when scanning applications developed with this framework. +* Improved support for `Restify `__ framework, leading to more results when scanning applications developed with this framework. * Added support for the `Spife `__ framework. Shared Libraries diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.27.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.27.0.rst new file mode 100644 index 000000000000..43dd62546243 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.27.0.rst @@ -0,0 +1,152 @@ +.. _codeql-cli-2.27.0: + +========================== +CodeQL 2.27.0 (2026-09-09) +========================== + +.. 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.27.0 runs a total of 498 security queries when configured with the Default suite (covering 170 CWE). The Extended suite enables an additional 131 queries (covering 32 more CWE). 1 security query has been added with this release. + +CodeQL CLI +---------- + +Deprecations +~~~~~~~~~~~~ + +* Language support for Java 9 and 10 has been deprecated and will be removed in January 2027. Java 7 and 8 will continue to be supported. +* The generic multi-platform :code:`codeql.zip` CLI distribution is deprecated and will be removed in a future release. Download the per-platform + :code:`codeql-PLATFORM.zip` for your platform instead. The CLI now emits a warning when it is run from an all-platforms distribution; set + :code:`CODEQL_ALLOW_ALL_PLATFORMS_DIST=true` to suppress it. + +New Features +~~~~~~~~~~~~ + +* CodeQL now supports native Linux arm64 (:code:`linux-arm64`) as a first-class platform. The per-platform CLI (:code:`codeql-linux-arm64.zip`) and CodeQL bundle + (:code:`codeql-bundle-linux-arm64.tar.gz` and :code:`codeql-bundle-linux-arm64.tar.zst`) + are available as release assets. Arm64 binaries are provided as a per-platform download only, and are not included in the combined :code:`codeql.zip`, + :code:`codeql-bundle.tar.gz`, or :code:`codeql-bundle.tar.zst`. +* CodeQL can now take advantage of an organization's private registry configurations in Code Scanning Default Setup to authenticate to container registries or the GitHub API when trying to fetch custom queries or packs. + This allows custom queries or packs to be accessed from private locations in Code Scanning Default Setup as long as suitable "Git Source" or "Docker Registry" private registry configurations are set up for the organization. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The :code:`cpp/leap-year/unsafe-array-for-days-of-the-year` query ("Unsafe array for days of the year") no longer reports an alert on the :code:`__PRETTY_FUNCTION__` variable (and related variables) when the enclosing function has a signature that is exactly 364 characters. + +C# +"" + +* The :code:`cs/linq/missed-where` query no longer flags :code:`foreach` loops where the matching branch terminates the method, iterator, or loop instead of continuing with filtered loop work. + +JavaScript/TypeScript +""""""""""""""""""""" + +* HTML files are now included in file-coverage stats, and will start showing up on the status page for CodeQL under "Scanned Files". + +Rust +"""" + +* The :code:`rust/hard-coded-cryptographic-value` query has been adjusted to produce fewer results in certain situations where many results were being produced with very similar source locations. +* The :code:`rust/unused-variable` query no longer reports variables in functions containing the standard :code:`todo!()` or :code:`unimplemented!()` macros. + +New Queries +~~~~~~~~~~~ + +Rust +"""" + +* Added a new query, :code:`rust/command-line-injection`, to detect uncontrolled command lines. + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +Python +"""""" + +* Fixed a bug where a Python file could be silently dropped from the analysis (with a spurious "A parse error occurred" diagnostic) when it contained a string literal, comment, or identifier with a character such as the U+FE0F emoji variation selector, a U+200D zero width joiner, or a combining accent. +* Fixed the extraction of PEP 758 :code:`except A, B:` clauses by the default (non-tree-sitter) Python parser. Previously the second exception type was extracted as a Python 2 style alias binding, so it was recorded as a :code:`Store` rather than a use. This caused false positives from queries that reason about whether a name is used, such as :code:`py/unused-import`. When extracting Python 2 (:code:`--lang=2`), :code:`except A, e:` continues to bind :code:`e` as an alias, since that is what the syntax means in that version. + +Breaking Changes +~~~~~~~~~~~~~~~~ + +Ruby +"""" + +* The Ruby control flow graph implementation has been completely replaced. This affects a number of queries slightly. The CFG now includes additional nodes to more accurately represent certain constructs. This also means that any existing code that implicitly relies on very specific details about the CFG may need to be updated. The CFG no longer uses splitting, which means that AST nodes now have a unique CFG node representation. In particular, + :code:`ControlFlowNode.getAstNode` has changed its meaning. The AST-to-CFG mapping remains one-to-many, but now for a different reason. It used to be because of splitting, but now it's because of additional "helper" CFG nodes. To get the + (now canonical) CFG node for a given AST node, use + :code:`Stmt.getControlFlowNode()` instead. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added the PostgreSQL libpq (asynchronous) query-execution functions :code:`PQexec`, :code:`PQexecParams`, :code:`PQprepare`, :code:`PQsendQuery`, :code:`PQsendQueryParams`, :code:`PQsendPrepare` as :code:`sql-injection` sinks. +* Initializers of compiler-generated variables are now recognized as compiler-generated. A new predicate :code:`isCompilerGenerated` on :code:`Initializer` has been added to reflect this. + +C# +"" + +* In :code:`build-mode: none`, project and solution restoration is now always attempted using the feeds available. +* C# analysis with build mode :code:`none` now lists unreachable explicitly configured NuGet feeds in both the extraction warning and the tool status page note. This makes it easier to identify feeds that may cause dependencies to be missing from the analysis. +* Improved ASP.NET Core MVC controller and action discovery to more closely match runtime behavior, including application parts, endpoint mappings, inherited actions, and controller and action exclusions. Service-injected action parameters are no longer modeled as remote input. + +Java/Kotlin +""""""""""" + +* Added modeling for the Micronaut framework, including HTTP controllers, WebSocket endpoints, configuration injection, data access, security annotations, and HTTP client sinks. + +GitHub Actions +"""""""""""""" + +* Checks on author association fields read from the event payload (e.g. :code:`github.event.pull_request.author_association`) now only count as protection for events whose payload actually populates that field. Previously, a condition such as :code:`github.event.pull_request.author_association != 'NONE'` on a workflow triggered by :code:`issues` events was treated as a protective check even though :code:`github.event.pull_request` is not populated for :code:`issues` events, which makes the condition vacuous. This change may result in more alerts for queries using the :code:`ControlCheck` class. + +Rust +"""" + +* Canonical paths for Rust trait items now use the format :code:`::item` instead of + :code:`crate::Trait::item`. Custom data extension models that reference trait items must be updated to use the new format. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* Sources and sinks defined using models-as-data now support access paths with fields. For example, the path :code:`ReturnValue.Field[S::f]` makes the field :code:`S::f` a flow source when it is returned by a call. + +C# +"" + +* Added taint modeling for OData action parameter binding (:code:`Microsoft.AspNet.OData`\ /\ :code:`Microsoft.AspNetCore.OData`). Values cast, :code:`as`\ -converted, or type-tested out of :code:`ODataActionParameters`, and entities tracked by :code:`Delta` (via :code:`GetInstance`, :code:`Patch`, :code:`Put`, :code:`CopyChangedValues`, and :code:`CopyUnchangedValues`), now taint the members of the target type. + +Java/Kotlin +""""""""""" + +* Factories returned by the Apache Commons Secure XML (:code:`org.apache.commons.xml.secure`) hardening library's :code:`SecureDocumentBuilderFactory`, :code:`SecureSAXParserFactory`, :code:`SecureXMLInputFactory`, :code:`SecureTransformerFactory` and :code:`SecureSchemaFactory` classes are now recognized as safely configured by the XXE query. +* A new extensible class :code:`SafeXmlFactorySource` was added to :code:`semmle.code.java.security.XmlParsers` for modeling sources of pre-hardened JAXP factories. + +GitHub Actions +"""""""""""""" + +* GitHub Actions databases now extract :code:`actions.lock` files. The new :code:`ActionsLock` class provides access to their YAML abstract syntax trees. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.27.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.27.1.rst new file mode 100644 index 000000000000..b7ed802b9613 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.27.1.rst @@ -0,0 +1,105 @@ +.. _codeql-cli-2.27.1: + +========================== +CodeQL 2.27.1 (2026-09-22) +========================== + +.. 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.27.1 runs a total of 498 security queries when configured with the Default suite (covering 170 CWE). The Extended suite enables an additional 131 queries (covering 32 more CWE). + +CodeQL CLI +---------- + +Miscellaneous +~~~~~~~~~~~~~ + +* The build of Eclipse Temurin OpenJDK that is used to run the CodeQL CLI has been updated to version 25.0.4.1. + + New Java releases may not be completely backwards compatible. For example, + Java 25 has a known issue that affects symlink resolution on mapped drives on Windows (JDK-8355342). Users impacted by such regressions can run CodeQL with an alternative JDK using the CODEQL_JAVA_HOME environment variable. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The :code:`cs/linq/missed-*` queries no longer suggest rewrites that would capture :code:`in`, :code:`out`, or :code:`ref` parameters in a lambda, fixing false-positive results for transformations that would not compile. +* The :code:`cs/web/missing-token-validation` query now recognizes an ASP.NET Core :code:`AutoValidateAntiforgeryTokenAttribute` registered as a global MVC filter through :code:`AddControllersWithViews` (and friends), avoiding false-positive results for covered actions. + +GitHub Actions +"""""""""""""" + +* The :code:`actions/unpinned-tag` query no longer reports action references pinned by a structurally valid :code:`.github/workflows/actions.lock` entry for the enclosing workflow. +* The :code:`actions/unpinned-tag` query no longer reports :code:`$/` self repository references (e.g. :code:`uses: $/path/to/action`), which resolve to the same repository at the running commit and are therefore inherently pinned, just like :code:`./` self workspace (local) references. + +New Queries +~~~~~~~~~~~ + +C/C++ +""""" + +* Added a new query, :code:`cpp/ambiguous-assignment-of-comparison`, to detect potentially ambiguous expressions where a comparison result is assigned to a variable and the assignment is used as a truth value. + +C# +"" + +* Added a new query, :code:`cs/linq/missed-firstordefault`, that detects :code:`foreach` loops that can be expressed more clearly using LINQ's :code:`FirstOrDefault` method. + +Language Libraries +------------------ + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added taint flow models for the :code:`boost::asio::ip::basic_resolver::resolve` function. +* Added flow summaries for the BDE :code:`BloombergLP::bdlbb::Blob` segmented byte buffer. +* Added flow summaries for the Protocol Buffers :code:`google::protobuf::MessageLite` C++ API. + +C# +"" + +* Private NuGet registries for which the "Replaces base" option is enabled in the organization-level private registry configuration now replace default NuGet feeds whenever dependencies are downloaded, including when default NuGet feeds are configured explicitly for a project. + +Golang +"""""" + +* Added or improved data flow models for the following Go standard-library APIs introduced or updated in Go 1.27: + + * :code:`bytes.CutLast`, :code:`database/sql.ConvertAssign`, :code:`database/sql/driver.RowsColumnScanner.ScanColumn`, :code:`net/url.URL.Clone`, :code:`net/url.Values.Clone` and :code:`strings.CutLast`. + * The new :code:`encoding/json/jsontext` package. + +* Added more data flow models for the :code:`strings` package: :code:`strings.Clone`, :code:`Cut`, :code:`CutPrefix`, :code:`CutSuffix`, :code:`Fields`, :code:`FieldsFunc`, and :code:`Join`\ ; :code:`strings.Builder.String`, :code:`Builder.WriteByte`, and :code:`Builder.WriteRune`\ ; :code:`strings.Reader.ReadByte` and :code:`Reader.ReadRune`\ ; and :code:`strings.Replacer.Replace` and :code:`Replacer.WriteString`. + +Java/Kotlin +""""""""""" + +* Support for Kotlin 2.4.20 has been added. +* Fixed an issue where :code:`Foo::class.java` arguments were dropped during extraction under the Kotlin K2 compiler, which could cause false positives in queries such as :code:`java/android/implicit-pendingintents`. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Fastify servers reached through a chainable configuration method, such as :code:`fastify().withTypeProvider()` or :code:`fastify().setValidatorCompiler(...)`, are now recognized as the same server instance. Routes registered on such an instance are now attributed to their server, which may add results for queries such as :code:`js/missing-rate-limiting` where routes were previously not recognized at all, and remove false positives where a globally registered plugin guards them. + +Rust +"""" + +* Fix path resolution for :code:`m::{self}` paths where :code:`m` is a trait. +* Added data-flow models for :code:`core::fmt::Write`. This may improve detection of vulnerabilities where tainted data is written to a formatted output buffer. +* The Rust extractor has been upgraded to use :code:`rust-analyzer` version 0.0.347. As a result, the AST exposed by the Rust libraries has changed: new :code:`DerefPat`, :code:`ImplRestriction`, :code:`IncludeBytesExpr`, :code:`MutRestriction`, :code:`NotNull`, :code:`PatternTypeRepr`, and :code:`VisibilityInner` classes have been added; the :code:`FormatArgsArgName` class has been removed in favour of :code:`FormatArgsArg.getName()`, which now returns a :code:`Name`\ ; :code:`Visibility.getPath()` has been moved onto the new :code:`VisibilityInner` class, reachable via :code:`Visibility.getVisibilityInner()`\ ; and :code:`attrs` have been added to the inline assembly nodes, :code:`getMutRestriction()` to :code:`StructField` and :code:`TupleField`, and :code:`getImplRestriction()` to :code:`Trait`. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.27.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.27.2.rst new file mode 100644 index 000000000000..aab7a5306962 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.27.2.rst @@ -0,0 +1,135 @@ +.. _codeql-cli-2.27.2: + +========================== +CodeQL 2.27.2 (2026-10-07) +========================== + +.. 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.27.2 runs a total of 498 security queries when configured with the Default suite (covering 170 CWE). The Extended suite enables an additional 131 queries (covering 32 more CWE). + +CodeQL CLI +---------- + +Bug Fixes +~~~~~~~~~ + +* Fixed a crash in :code:`codeql resolve queries` (and other commands that resolve query suites) that reported a fatal internal error when a suite entry's :code:`qlpack:` or :code:`from:` value was not a valid QL pack name. Such input now produces a clear, user-facing error instead. +* Fixed a bug in the handling of YAML data extensions that would quietly accept integers outside of the signed 64-bit range, truncating them to smaller values. (Values outside of the signed 32-bit range, but inside the signed 64-bit range, were correctly rejected.) Now, all integers outside of the signed 32-bit range are rejected and will cause evaluation to fail. + +Improvements +~~~~~~~~~~~~ + +* Error and warning messages printed to standard error are now labelled with an + :code:`ERROR:` or :code:`WARNING:` prefix. Previously only diagnostics carried such a label, so the severity of other messages was not apparent in plain-text output. Structured output is unaffected: log files, SARIF, and stored diagnostics continue to record severity without the prefix. +* The :code:`codeql query compile` command now accepts the :code:`--dil-constants` flag. When specified along with :code:`--dump-dil`, the emitted DIL will include the values of predicates that have been optimized into constant tuple sets. Otherwise, these constants are omitted. This flag also enables pretty-printing of constant tuple sets for higher-level commands that involve query compilation. + +Miscellaneous +~~~~~~~~~~~~~ + +* CLI commands that load data extensions, such as :code:`codeql database run-queries`, + previously emitted a warning for each file-pattern from the :code:`dataExtensions` list of a :code:`qlpack.yml` manifest that failed to match any extension files. + This check has been relaxed, and will now only emit a warning if none of the patterns match any files (i.e. when there is at least one pattern but no extensions are found). + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The :code:`cs/web/missing-x-frame-options` query now recognizes clickjacking protection configured through ASP.NET Core response headers and enforced Content Security Policy :code:`frame-ancestors` directives. + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +C# +"" + +* Fixed an issue where types for pattern expressions were not extracted correctly. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Improved Hapi route handler and request input tracking through custom route registration helpers and higher-order function wrappers. + +Breaking Changes +~~~~~~~~~~~~~~~~ + +Golang +"""""" + +* The Go control flow graph (CFG) implementation has been completely rewritten to use the shared CFG library. The CFG now includes additional nodes to more accurately represent certain constructs, including assignments, function parameters and results, range statements, and deferred calls. The CFG now only includes nodes that are reachable from the entry point. Basic blocks are also now constructed directly from the shared CFG. Existing code that relies on specific CFG nodes, edges, locations, textual representations, or basic block boundaries may need to be updated. Additionally, the following API changes have been made: + + * :code:`BasicBlocks::Cfg` has been removed. :code:`BasicBlock` now directly uses the basic-block implementation provided by the shared CFG library. + * :code:`ControlFlow::EntryNode` and :code:`ControlFlow::ExitNode` have been added, and + :code:`ControlFlow::entryNode` and :code:`ControlFlow::exitNode` now return these more specific types. + * :code:`IfStmt.getCond` has been deprecated. Please use the new :code:`IfStmt.getCondition` instead. + * The result types of :code:`IfStmt.getThen` and :code:`LoopStmt.getBody` have been widened from :code:`BlockStmt` to :code:`Stmt`. + * :code:`SwitchStmt.getExpr` has been added, providing a common accessor for the expression examined by expression and type switches. + * Several IR instruction classes have been removed or consolidated, including + :code:`ReadArgumentInstruction`, :code:`InitResultInstruction`, :code:`IncDecInstruction`, + :code:`EvalIncDecRhsInstruction`, :code:`EvalImplicitOneInstruction`, + :code:`SelectInstruction`, and :code:`SendInstruction`. + * :code:`EvalCompoundAssignRhsInstruction` now also represents increment and decrement operations, and it and :code:`EvalImplicitInitInstruction` directly represent their associated writes. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* Fixed a false positive in :code:`cs/web/xss` for ASP.NET Core Razor Pages/MVC views: :code:`WriteLiteral` calls generated for tag helper attribute values (for example, :code:`asp-for`) capture the value into an internal buffer instead of writing it directly to the response, so they are no longer treated as XSS sinks. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added SQL-injection sink models for the Comdb2 C API functions :code:`cdb2_run_statement` and :code:`cdb2_run_statement_typed`. +* Added flow summaries for the BDE codecs :code:`BloombergLP::balber::BerDecoder`\ /\ :code:`BerEncoder`, :code:`BloombergLP::baljsn::Decoder`\ /\ :code:`Encoder` and :code:`BloombergLP::balxml::Decoder`\ /\ :code:`Encoder`. +* Added taint flow summaries for the BDE :code:`bslx` byte-stream deserializers :code:`BloombergLP::bslx::ByteInStream`, :code:`BloombergLP::bslx::GenericInStream`, and :code:`BloombergLP::bslx::InStreamFunctions::bdexStreamIn`. + +Golang +"""""" + +* Models for the :code:`nhooyr.io/websocket` package have been updated to also support its new import path :code:`github.com/coder/websocket`. + +JavaScript/TypeScript +""""""""""""""""""""" + +* The Workflow SDK directives :code:`"use workflow"` and :code:`"use step"` are now recognized as known directives, so the :code:`js/unknown-directive` query no longer flags them. + +GitHub Actions +"""""""""""""" + +* The :code:`trustedActionsOwnerDataModel` extensible predicate, used by the :code:`actions/unpinned-tag` query, now supports removing an owner from the trusted set by adding an entry prefixed with :code:`!` (for example, :code:`!github`). This makes it possible to distrust first-party owners (:code:`actions`, :code:`github`, :code:`advanced-security`) so that unpinned tags for their Actions are reported. + +Rust +"""" + +* The Rust extractor has been upgraded to use :code:`rust-analyzer` version 0.0.352. As a result, the AST exposed by the Rust libraries now includes the :code:`AnyAttr` and :code:`DocComment` classes. +* Improve data flow for async blocks when used with :code:`await`. +* Added new flow summary models for the :code:`native-tls`, :code:`async-native-tls`, and :code:`tokio-native-tls` crates. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* Added a C++ regular-expression parser for the ECMAScript grammar used by :code:`std::regex`. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 0267c6ef8ef5..3c0a5a3ed499 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,9 @@ A list of queries for each suite and language `is available here
    - +

    CodeQL documentation

    CodeQL enables you to query code as though it were data. Write a query to find all variants of a vulnerability, eradicating it forever. Then share your query to help others do the same.

    @@ -250,7 +250,7 @@

    Platform

    • Developer API
    • -
    • Partners
    • Education
    • diff --git a/docs/codeql/ql-language-reference/about-the-ql-language.rst b/docs/codeql/ql-language-reference/about-the-ql-language.rst index c24a29aea96c..97f2272d1fbb 100644 --- a/docs/codeql/ql-language-reference/about-the-ql-language.rst +++ b/docs/codeql/ql-language-reference/about-the-ql-language.rst @@ -66,7 +66,7 @@ Further reading `Academic references `__ also provide an overview of QL and its semantics. Other useful references on database query languages and Datalog: -- `Database theory: Query languages `__ +- `Database theory: Query languages `__ - `Logic Programming and Databases book `__ - `Foundations of Databases `__ - `Datalog `__ diff --git a/docs/codeql/ql-training/java/apache-struts-java.rst b/docs/codeql/ql-training/java/apache-struts-java.rst index 503dfad54501..8c520c7f788a 100644 --- a/docs/codeql/ql-training/java/apache-struts-java.rst +++ b/docs/codeql/ql-training/java/apache-struts-java.rst @@ -41,7 +41,7 @@ RCE in Apache Struts - Xstream allows deserialization of **dynamic proxies**, which permit remote code execution. -- Disclosed as `CVE-2017-9805 `__ +- Disclosed as `CVE-2017-9805 `__ - Blog post: https://securitylab.github.com/research/apache-struts-vulnerability-cve-2017-9805 diff --git a/docs/codeql/qllexer.py b/docs/codeql/qllexer.py index 55a65e84152f..d8191ed10007 100644 --- a/docs/codeql/qllexer.py +++ b/docs/codeql/qllexer.py @@ -1,7 +1,7 @@ """ Custom Pygments lexer for highlighting QL code. - Based on instructions from http://pygments.org/docs/lexerdevelopment/. + Based on instructions from https://pygments.org/docs/lexerdevelopment/. """ import re diff --git a/docs/codeql/reusables/supported-frameworks.rst b/docs/codeql/reusables/supported-frameworks.rst index 257fc17e5a44..6fa32547d05a 100644 --- a/docs/codeql/reusables/supported-frameworks.rst +++ b/docs/codeql/reusables/supported-frameworks.rst @@ -74,7 +74,7 @@ and the CodeQL library pack ``codeql/go-all`` (`changelog `_, Serverless framework `beego `_, Web/logging/database framework `Chi `_, Web framework - Couchbase (`gocb `_ and `go-couchbase `_), Database + Couchbase (`gocb `_ and `go-couchbase `_), Database `Echo `_, Web framework `Gin `_, Web framework `glog `_, Logging library @@ -87,7 +87,7 @@ and the CodeQL library pack ``codeql/go-all`` (`changelog `_, Network communicator `golang.org/x/net/websocket `_, Network communicator `goproxy `_, HTTP proxy library - `Gorilla mux `_, HTTP request router and dispatcher + `Gorilla mux `_, HTTP request router and dispatcher `Gorilla websocket `_, Network communicator `GORM `_, Database `GoWebsocket `_, Network communicator @@ -100,11 +100,11 @@ and the CodeQL library pack ``codeql/go-all`` (`changelog `_, Logging library `Macaron `_, Web framework `mongo `_, Database - `nhooyr.io/websocket `_, Network communicator + `coder/websocket `_ (formerly nhooyr.io/websocket), Network communicator `protobuf `_, Serialization - `Revel `_, Web framework + `Revel `_, Web framework `SendGrid `_, Email library - `sqlx `_, Database + `sqlx `_, Database `Squirrel `_, Database `ws `_, Network communicator `xmlpath `_, XPath library @@ -327,8 +327,9 @@ and the CodeQL library pack ``codeql/rust-all`` (`changelog `__, Web framework alloc, Standard library `async-std `__, Asynchronous programming library + `axum `__, Web framework `biscotti `__, Cookie management - `clap `__, Utility library + `clap `__, Utility library `cookie `__, Cookie management core, Standard library `digest `__, Cryptography library @@ -341,6 +342,8 @@ and the CodeQL library pack ``codeql/rust-all`` (`changelog `__, Utility library `mysql `__, Database `mysql_async `__, Database + `native-tls `__, Network communicator + `async-native-tls `__, Network communicator `once_cell `__, Utility library `poem `__, Web framework `postgres `__, Database diff --git a/docs/codeql/reusables/supported-platforms.rst b/docs/codeql/reusables/supported-platforms.rst index c12b89fc37e6..4b424130d6ab 100644 --- a/docs/codeql/reusables/supported-platforms.rst +++ b/docs/codeql/reusables/supported-platforms.rst @@ -10,13 +10,15 @@ Windows,"Windows 10 / Windows Server 2019 Windows 11 / Windows Server 2022/2025","x86-64" - macOS,"macOS 14 Sonoma + macOS,"macOS 15 Sequoia - macOS 15 Sequoia + macOS 26 Tahoe [2]_ - macOS 26 Tahoe","x86-64, arm64 (Apple Silicon) [2]_" + macOS 27 Golden Gate [3]_","x86-64, arm64 (Apple Silicon) [4]_" .. container:: footnote-group .. [1] Support for Linux on arm64 is currently in beta. - .. [2] Support for Apple Silicon is currently in beta. Building your code during analysis requires Rosetta 2; analyzing an interpreted language or using build mode ``none`` runs natively. + .. [2] Support for macOS 26 with Xcode 27 selected is limited to using build mode ``none``. + .. [3] Support for macOS 27 is limited to Apple Silicon and using build mode ``none``. + .. [4] Support for Apple Silicon is currently in beta. Building your code during analysis requires Rosetta 2; analyzing an interpreted language or using build mode ``none`` runs natively. diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 8651fa91a269..e08ae794d1f1 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -4,11 +4,11 @@ :stub-columns: 1 Language,Variants,Compilers,Extensions - C/C++,"C89, C99, C11, C17, C23, C++98, C++03, C++11, C++14, C++17, C++20, C++23 [1]_ [2]_ [3]_","Clang (including clang-cl and armclang) extensions (up to Clang 21), + C/C++,"C89, C99, C11, C17, C23, C++98, C++03, C++11, C++14, C++17, C++20, C++23 [1]_ [2]_ [3]_","Clang (including clang-cl and armclang) extensions (up to Clang 23), - GNU extensions (up to GCC 15), + GNU extensions (up to GCC 16), - Microsoft extensions (up to VS 2022), + Microsoft extensions (up to VS 2026), Arm Compiler 5 [4]_","``.cpp``, ``.c++``, ``.cxx``, ``.hpp``, ``.hh``, ``.h++``, ``.hxx``, ``.c``, ``.cc``, ``.h``" C#,C# up to 14,"Microsoft Visual Studio up to 2019 with .NET up to 4.8, @@ -21,7 +21,7 @@ Java,"Java 7 to 26 [5]_","javac (OpenJDK and Oracle JDK), Eclipse compiler for Java (ECJ) [6]_",``.java`` - Kotlin,"Kotlin 1.8.0 to 2.4.1\ *x*","kotlinc",``.kt`` + Kotlin,"Kotlin 1.8.0 to 2.4.20","kotlinc",``.kt`` 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`` [7]_" Python [8]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14",Not applicable,``.py`` Ruby,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" diff --git a/docs/codeql/reusables/threat-model-description.rst b/docs/codeql/reusables/threat-model-description.rst index ff1718fcedcc..4f4966dc23f3 100644 --- a/docs/codeql/reusables/threat-model-description.rst +++ b/docs/codeql/reusables/threat-model-description.rst @@ -11,6 +11,7 @@ Note that subcategories can be turned included or excluded separately, so you ca The less commonly used categories are: +- ``ai`` which represents output generated by large language models (LLMs). This threat model is opt-in. - ``android`` which represents reads from external files in Android (``android-external-storage-dir``) and parameter of an entry-point method declared in a ``ContentProvider`` class (``contentprovider``). Currently only used by Java/Kotlin. - ``database-access-result`` which represents a database access. Currently only used by JavaScript. - ``file-write`` which represents opening a file in write mode. Currently only used in C#. diff --git a/docs/prepare-db-upgrade-downgrade.md b/docs/prepare-db-upgrade-downgrade.md new file mode 100644 index 000000000000..1ea1dcffd45d --- /dev/null +++ b/docs/prepare-db-upgrade-downgrade.md @@ -0,0 +1,190 @@ +# Upgrading a language database schema + +When a `.dbscheme` file changes, you need to provide two things: + +1. An upgrade script that modifies old databases (built against an earlier schema), so they can use new query functionality (albeit with possibly degraded results). +2. A downgrade script that reverses those changes, so that newer databases can be queried using older query and library packs. + +This document explains how to write or generate those scripts. + +## Process Overview + + 1. Commit the change to your language's `.dbscheme` file, along with any library updates required to work with the change. + 2. Run `misc/scripts/prepare-db-upgrade.sh --lang `. This will generate skeleton upgrade/downgrade scripts in the appropriate directories. + 3. Fill in the details in the two `upgrade.properties` files that it generated, and add any required upgrade queries. + +The generated directory names are hashes of the old and new `.dbscheme` files. If the +schema changes after generating the scripts, delete the generated directories and run the +script again so that the directory names and schema snapshots use the correct hashes. + +It may be helpful to look at some of the existing upgrade/downgrade scripts, to see how they work. + +## Details + +An `upgrade.properties` file will look something like: + +``` +description: what it does +compatibility: partial +some_relation.rel: run some_relation.qlo +``` + +The `description` field is a textual description of the aim of the step. Describe the +operation in its actual direction: for example, a downgrade that removes a newly added +table should say that it removes the table. + +The `compatibility` field takes one of four values. In these definitions, the source schema is +`old.dbscheme`, and the target schema is the other `.dbscheme` in the script directory. Thus, +the source is the older schema for an upgrade and the newer schema for a downgrade. + + * **full**: query results from the transformed database will be identical to results from a database built with the target version of the toolchain. + + * **backwards**: the step is safe and preserves the meaning of the source database, but features provided by the target query and library packs may not work correctly on the transformed database. + + * **partial**: the step is safe and preserves the meaning of the source database, but rebuilding the database with the target version of the toolchain would produce better results. + + * **breaking**: the step is unsafe and will prevent certain target queries from working. + +Choose compatibility independently for the upgrade and downgrade, because the two directions +may preserve different amounts of information. + +The `some_relation.rel` line(s) are the actions required to transform the database in the +direction of the step. Upgrade and downgrade directories use the same file name and command +syntax, even though a file in a downgrade directory describes a downgrade. Diff `old.dbscheme` +against the target `.dbscheme` in the generated directory to determine which actions are +needed. + +No action is needed for a relation added by the target schema if it should be empty in the +transformed database. A missing relation is treated as empty, so do not add a `.rel` line just +to create an empty file. If extraction would populate the new relation, however, the upgrade +is not `full`: it will usually be `backwards`, because queries using the new relation may have +degraded results on upgraded databases. + +A relation that exists in `old.dbscheme` but not in the target schema should normally be +deleted explicitly with `relation.rel: delete` so that the transformation does not leave +obsolete data behind. + +Sometimes no commands are needed because the schema changed only cosmetically, for example +by adding or removing comments or changing union type relationships without changing the +on-disk format. The script then documents that it is safe to replace the old schema with the +new one. + +Ideally, your downgrade script will perfectly revert the changes applied by the upgrade script, such that applying the upgrade and then the downgrade will result in the same database you started with. + +Some typical upgrade or downgrade commands look like this: + +``` +// Delete a relation that does not exist in the target schema +obsolete.rel: delete + +// Create a new version of a table by applying an expression (using a simple +// synthetic language) to an existing table. The example duplicates the 'id' +// column of input.rel as the last column of extended.rel, perhaps to record our +// best guess at newly-populated "source declaration" information. +extended.rel: reorder input.rel (int id, string name, int parent) id name parent id + +// Create relationname.rel by running relationname.qlo and writing the query +// results as a .rel file. The query file should be named relationname.ql and +// should be placed in the upgrade directory. It should avoid using the default +// QLL library, and will run in the context of the *old* dbscheme. +relationname.rel: run relationname.qlo + +// Create relation1.rel by running the query predicate 'predicate1' in upgrade.qlo +// and writing the query results as a .rel file, and running 'predicate2' in +// upgrade.qlo and writing the query results as a .rel file. This command +// expects the upgrade relation to be a query predicate, which has the advantage +// of allowing multiple upgrade relations to appear in the same .ql file as +// multiple query predicates. The query file should be named upgrade.ql and +// should be placed in the upgrade directory. It should avoid using the default +// QLL library, and will run in the context of the *old* dbscheme. +relation1.rel: run upgrade.qlo predicate1 +relation2.rel: run upgrade.qlo predicate2 +``` + +### Testing your scripts + +Although we have some automated testing of the scripts (e.g. to test that you can upgrade databases all the way from an initial dbscheme to the newest, and back), it's essential that you apply some more rigorous testing for any non-trivial upgrade or downgrade. You might do so as follows: + +#### Running qltests + +To test the upgrade script, run: + +``` +codeql test run --search-path= --search-path= +``` + +Where `` is an extractor pack containing the old extractor and dbscheme that pre-date your changes, `` is the directory containing the qltests for your language, and `` is the root directory of the `github/codeql` clone that contains ``. This will run the tests using an old extractor, and the test databases will all be upgraded in place using your new upgrade script. + +To test the downgrade script, create an extractor pack that includes your new dbscheme and extractor changes. Then checkout the `main` branch of `codeql` (i.e. a branch that does not include your changes), and run: + +``` +codeql test run --search-path= +``` + +This will run the tests using your new extractor, and the databases will be downgraded using your new downgrade script so that they match the dbscheme of the `main` branch. + +#### Manual testing + +You might also choose to test with a real-world database. + + 1. Create a snapshot of your favourite project using the old version of the code. + + 2. Switch to the new version of the code. + + 3. Try to run some queries that will depend on your upgrade script working correctly. + + 4. Observe the upgrade being performed in the query server log. + + 5. Verify that your queries produced sensible results. + +#### Creating the scripts manually + +To create both directions manually, without using `prepare-db-upgrade.sh`, run the following +commands from the repository root. First set `lang` to the language directory and `schema_file` +to the repository-relative path of its `.dbscheme` file. For example, for Go: + + ```sh + lang=go + schema_file=go/ql/lib/go.dbscheme + ``` + +1. Get the hashes of the old `.dbscheme` from `main` and the new `.dbscheme` from + your branch. For example: + + ```sh + old_hash=$(git show "main:$schema_file" | git hash-object --stdin) + new_hash=$(git hash-object "$schema_file") + ``` + +2. Create the upgrade directory using the old hash and the downgrade directory using the + new hash: + + ```sh + upgrade_dir="$lang/ql/lib/upgrades/$old_hash" + downgrade_dir="$lang/downgrades/$new_hash" + mkdir -p "$upgrade_dir" "$downgrade_dir" + ``` + +3. Populate the upgrade directory. Here, `old.dbscheme` is the schema from `main`, and + the other `.dbscheme` file is the new target schema: + + ```sh + git show "main:$schema_file" > "$upgrade_dir/old.dbscheme" + cp "$schema_file" "$upgrade_dir/$(basename "$schema_file")" + ``` + +4. Populate the downgrade directory in the opposite direction. For a downgrade, the new + schema is called `old.dbscheme`, because it is the schema before the downgrade step: + + ```sh + cp "$schema_file" "$downgrade_dir/old.dbscheme" + git show "main:$schema_file" > "$downgrade_dir/$(basename "$schema_file")" + ``` + +5. Create an `upgrade.properties` file in each directory. The file in the upgrade directory + describes the forward transformation, while the file in the downgrade directory describes + the reverse transformation. + +### Debugging your scripts + +Database upgrade/downgrade may fail for several reasons. To find out the exact issue it is recommended to rerun the `codeql test run` commands from above in a verbose mode, e.g. `codeql test run -vvvv ...`. diff --git a/docs/prepare-db-upgrade.md b/docs/prepare-db-upgrade.md deleted file mode 100644 index 58806ecebebf..000000000000 --- a/docs/prepare-db-upgrade.md +++ /dev/null @@ -1,150 +0,0 @@ -# Upgrading a language database schema - -When a `.dbscheme` file changes, you need to provide two things: - -1. An upgrade script that modifies old databases (built against an earlier schema), so they can use new query functionality (albeit with possibly degraded results). -2. A downgrade script that reverses those changes, so that newer databases can be queried using older query and library packs. - -This document explains how to write or generate those scripts. - -## Process Overview - - 1. Commit the change to your language's `.dbscheme` file, along with any library updates required to work with the change. - 2. Run `misc/scripts/prepare-db-upgrade.sh --lang `. This will generate skeleton upgrade/downgrade scripts in the appropriate directories. - 3. Fill in the details in the two `upgrade.properties` files that it generated, and add any required upgrade queries. - -It may be helpful to look at some of the existing upgrade/downgrade scripts, to see how they work. - -## Details - -An `upgrade.properties` file will look something like: - -``` -description: what it does -compatibility: partial -some_relation.rel: run some_relation.qlo -``` - -The `description` field is a textual description of the aim of the upgrade. - -The `compatibility` field takes one of four values: - - * **full**: results from the upgraded snapshot will be identical to results from a snapshot built with the new version of the toolchain. - - * **backwards**: the step is safe and preserves the meaning of the old database, but new features may not work correctly on the upgraded snapshot. - - * **partial**: the step is safe and preserves the meaning of the old database, but you would get better results if you rebuilt the snapshot with the new version of the toolchain. - - * **breaking**: the step is unsafe and will prevent certain queries from working. - -The `some_relation.rel` line(s) are the actions required to perform the database upgrade. Do a diff on the new vs old `.dbscheme` file to get an idea of what they have to achieve. Sometimes you won't need any upgrade commands – this happens when the dbscheme has changed in "cosmetic" ways, for example by adding/removing comments or changing union type relationships, but still retains the same on-disk format for all tables; the purpose of the upgrade script is then to document the fact that it's safe to replace the old dbscheme with the new one. - -Ideally, your downgrade script will perfectly revert the changes applied by the upgrade script, such that applying the upgrade and then the downgrade will result in the same database you started with. - -Some typical upgrade commands look like this: - -``` -// Delete a relation that has been replaced in the new scheme -obsolete.rel: delete - -// Create a new version of a table by applying an expression (using a simple -// synthetic language) to an existing table. The example duplicates the 'id' -// column of input.rel as the last column of extended.rel, perhaps to record our -// best guess at newly-populated "source declaration" information. -extended.rel: reorder input.rel (int id, string name, int parent) id name parent id - -// Create relationname.rel by running relationname.qlo and writing the query -// results as a .rel file. The query file should be named relationname.ql and -// should be placed in the upgrade directory. It should avoid using the default -// QLL library, and will run in the context of the *old* dbscheme. -relationname.rel: run relationname.qlo - -// Create relation1.rel by running the query predicate 'predicate1' in upgrade.qlo -// and writing the query results as a .rel file, and running 'predicate2' in -// upgrade.qlo and writing the query results as a .rel file. This command -// expects the upgrade relation to be a query predicate, which has the advantage -// of allowing multiple upgrade relations to appear in the same .ql file as -// multiple query predicates. The query file should be named upgrade.ql and -// should be placed in the upgrade directory. It should avoid using the default -// QLL library, and will run in the context of the *old* dbscheme. -relation1.rel: run upgrade.qlo predicate1 -relation2.rel: run upgrade.qlo predicate2 -``` - -### Testing your scripts - -Although we have some automated testing of the scripts (e.g. to test that you can upgrade databases all the way from an initial dbscheme to the newest, and back), it's essential that you apply some more rigorous testing for any non-trivial upgrade or downgrade. You might do so as follows: - -#### Running qltests - -To test the upgrade script, run: - -``` -codeql test run --search-path= --search-path= -``` - -Where `` is an extractor pack containing the old extractor and dbscheme that pre-date your changes, `` is the directory containing the qltests for your language, and `` is the root directory directory of the `github/codeql` clone that contains ``. This will run the tests using an old extractor, and the test databases will all be upgraded in place using your new upgrade script. - -To test the downgrade script, create an extractor pack that includes your new dbscheme and extractor changes. Then checkout the `main` branch of `codeql` (i.e. a branch that does not include your changes), and run: - -``` -codeql test run --search-path= -``` - -This will run the tests using your new extractor, and the databases will be downgraded using your new downgrade script so that they match the dbscheme of the `main` branch. - -#### Manual testing - -You might also choose to test with a real-world database. - - 1. Create a snapshot of your favourite project using the old version of the code. - - 2. Switch to the new version of the code. - - 3. Try to run some queries that will depend on your upgrade script working correctly. - - 4. Observe the upgrade being performed in the query server log. - - 5. Verify that your queries produced sensible results. - -#### Doing the upgrade manually - -To create the upgrade directory manually, without using `prepare-db-upgrade.sh`: - -1. Get a hash of the old `.dbscheme` file from `main` (i.e. from just before your changes). You can do this by checking out the code prior to your changes and running `git hash-object ql/lib/.dbscheme` - -2. Go back to your branch and create an upgrade directory with that hash as its name, for example: -``` -mkdir ql/lib/upgrades/454f1e15151422355049dc4f1f0486a03baeffef -``` - - -3. Copy the old `.dbscheme` file to that directory, using the name old.dbscheme. - -``` -cp ql/lib/.dbscheme ql/lib/upgrades/454f1e15151422355049dc4f1f0486a03baeffef/old.dbscheme -``` - -4. Put a copy of your new `.dbscheme` file in that directory and create an `upgrade.properties` file (as described above). - -#### Doing the downgrade manually - -The process is similar for downgrade scripts, but there is a reversal in terminology: your **new** dbscheme will now be the one called `old.dbscheme`. - -1. Get a hash of your new `.dbscheme` file, with `git hash-object ql/lib/.dbscheme` - -2. Create a downgrade directory with that hash as its name, for example: -``` -mkdir downgrades/9fdd1d40fd3c3f8f9db8fabf5a353580d14c663a -``` - -3. Copy your new `.dbscheme` file to that directory, using the name `old.dbscheme`. -``` -cp ql/lib/.dbscheme ql/lib/upgrades/454f1e15151422355049dc4f1f0486a03baeffef/old.dbscheme -``` - -4. Put a copy of the `.dbscheme` from `main` in that directory and create an `upgrade.properties` file that performs the downgrade (as described above). - -### Debugging your scripts - -Database upgrade/downgrade may fail for several reasons. To find out the exact issue it is recommended to rerun the `codeql test run` commands from above in a verbose mode, e.g. `codeql test run -vvvv ...`. diff --git a/go/actions/test/action.yml b/go/actions/test/action.yml index 25ff389dc01e..f115bd3eae0c 100644 --- a/go/actions/test/action.yml +++ b/go/actions/test/action.yml @@ -4,7 +4,7 @@ inputs: go-test-version: description: Which Go version to use for running the tests required: false - default: "~1.27.0" + default: "~1.27.2" run-code-checks: description: Whether to run qhelp generation checks required: false diff --git a/go/docs/language/learn-ql/go/ast-class-reference.rst b/go/docs/language/learn-ql/go/ast-class-reference.rst index d874652a8946..fc46df7c65d4 100644 --- a/go/docs/language/learn-ql/go/ast-class-reference.rst +++ b/go/docs/language/learn-ql/go/ast-class-reference.rst @@ -450,8 +450,6 @@ Miscellaneous +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ``...`` | `Ellipsis `__ | | | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``(``\ `Expr `__\ ``)`` | `ParenExpr `__ | | | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `Ident `__\ ``.``\ `Ident `__ | `SelectorExpr `__ | | | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `Expr `__\ ``[``\ `Expr `__\ ``]`` | `IndexExpr `__ | | | diff --git a/go/documentation/library-coverage/coverage.csv b/go/documentation/library-coverage/coverage.csv index d4266a31dfb4..6260bcd1f3aa 100644 --- a/go/documentation/library-coverage/coverage.csv +++ b/go/documentation/library-coverage/coverage.csv @@ -3,7 +3,7 @@ package,sink,source,summary,sink:command-injection,sink:credentials-key,sink:jwt archive/tar,,,5,,,,,,,,,,,,,,,,,,,,,,,5, archive/zip,,,6,,,,,,,,,,,,,,,,,,,,,,,6, bufio,,,17,,,,,,,,,,,,,,,,,,,,,,,17, -bytes,,,44,,,,,,,,,,,,,,,,,,,,,,,44, +bytes,,,45,,,,,,,,,,,,,,,,,,,,,,,45, clevergo.tech/clevergo,1,,,,,,,,,,,,,,,,,1,,,,,,,,, cloud.google.com/go/bigquery,1,,,,,,,,,,,,,,1,,,,,,,,,,,, compress/bzip2,,,1,,,,,,,,,,,,,,,,,,,,,,,1, @@ -16,8 +16,8 @@ container/list,,,20,,,,,,,,,,,,,,,,,,,,,,,20, container/ring,,,5,,,,,,,,,,,,,,,,,,,,,,,5, context,,,5,,,,,,,,,,,,,,,,,,,,,,,5, crypto,,,10,,,,,,,,,,,,,,,,,,,,,,,10, -database/sql,30,18,12,,,,,,,,,,,,30,,,,,,18,,,,,12, -encoding,,,81,,,,,,,,,,,,,,,,,,,,,,,81, +database/sql,30,18,14,,,,,,,,,,,,30,,,,,,18,,,,,14, +encoding,,,112,,,,,,,,,,,,,,,,,,,,,,,112, errors,,,4,,,,,,,,,,,,,,,,,,,,,,,4, expvar,,,6,,,,,,,,,,,,,,,,,,,,,,,6, fmt,3,,16,,,,3,,,,,,,,,,,,,,,,,,,16, @@ -33,6 +33,7 @@ github.com/astaxie/beego,71,34,21,,,,34,,5,,,,,,30,2,,,,,13,,,21,,21, github.com/beego/beego,142,68,42,,,,68,,10,,,,,,60,4,,,,,26,,,42,,42, github.com/caarlos0/env,,5,2,,,,,,,,,,,,,,,,,,,5,,,,1,1 github.com/clevergo/clevergo,1,,,,,,,,,,,,,,,,,1,,,,,,,,, +github.com/coder/websocket,,2,,,,,,,,,,,,,,,,,,,,,,2,,, github.com/codeskyblue/go-sh,4,,,4,,,,,,,,,,,,,,,,,,,,,,, github.com/couchbase/gocb,8,22,48,,,,,8,,,,,,,,,,,,,22,,,,,48, github.com/couchbaselabs/gocb,8,22,48,,,,,8,,,,,,,,,,,,,22,,,,,48, @@ -126,7 +127,7 @@ launchpad.net/xmlpath,2,,,,,,,,,,,,,,,,,,2,,,,,,,, log,43,,16,,,,43,,,,,,,,,,,,,,,,,,,16, math/big,,,1,,,,,,,,,,,,,,,,,,,,,,,1, mime,,,14,,,,,,,,,,,,,,,,,,,,,,,14, -net,2,16,100,,,,,,1,,,,,,,,1,,,,,,,16,,100, +net,2,16,102,,,,,,1,,,,,,,,1,,,,,,,16,,102, nhooyr.io/websocket,,2,,,,,,,,,,,,,,,,,,,,,,2,,, os,29,12,6,3,,,,,26,,,,,,,,,,,1,,7,3,,1,6, path,,,18,,,,,,,,,,,,,,,,,,,,,,,18, @@ -135,7 +136,7 @@ regexp,10,,20,,,,,,,3,3,4,,,,,,,,,,,,,,20, slices,,,17,,,,,,,,,,,,,,,,,,,,,,,,17 sort,,,1,,,,,,,,,,,,,,,,,,,,,,,1, strconv,,,9,,,,,,,,,,,,,,,,,,,,,,,9, -strings,,,34,,,,,,,,,,,,,,,,,,,,,,,34, +strings,,,47,,,,,,,,,,,,,,,,,,,,,,,46,1 sync,,,34,,,,,,,,,,,,,,,,,,,,,,,34, syscall,5,2,8,5,,,,,,,,,,,,,,,,,,2,,,,8, text/scanner,,,3,,,,,,,,,,,,,,,,,,,,,,,3, diff --git a/go/documentation/library-coverage/coverage.rst b/go/documentation/library-coverage/coverage.rst index fc16fb8c2c57..849c1c937f01 100644 --- a/go/documentation/library-coverage/coverage.rst +++ b/go/documentation/library-coverage/coverage.rst @@ -32,7 +32,7 @@ Go framework & library support `Revel `_,"``github.com/revel/revel*``, ``github.com/robfig/revel*``",46,20,4 `SendGrid `_,``github.com/sendgrid/sendgrid-go*``,,1, `Squirrel `_,"``github.com/Masterminds/squirrel*``, ``github.com/lann/squirrel*``, ``gopkg.in/Masterminds/squirrel``",81,,96 - `Standard library `_,"````, ``archive/*``, ``bufio``, ``bytes``, ``cmp``, ``compress/*``, ``container/*``, ``context``, ``crypto``, ``crypto/*``, ``database/*``, ``debug/*``, ``embed``, ``encoding``, ``encoding/*``, ``errors``, ``expvar``, ``flag``, ``fmt``, ``go/*``, ``hash``, ``hash/*``, ``html``, ``html/*``, ``image``, ``image/*``, ``index/*``, ``io``, ``io/*``, ``log``, ``log/*``, ``maps``, ``math``, ``math/*``, ``mime``, ``mime/*``, ``net``, ``net/*``, ``os``, ``os/*``, ``path``, ``path/*``, ``plugin``, ``reflect``, ``reflect/*``, ``regexp``, ``regexp/*``, ``slices``, ``sort``, ``strconv``, ``strings``, ``sync``, ``sync/*``, ``syscall``, ``syscall/*``, ``testing``, ``testing/*``, ``text/*``, ``time``, ``time/*``, ``unicode``, ``unicode/*``, ``unsafe``, ``weak``",52,625,127 + `Standard library `_,"````, ``archive/*``, ``bufio``, ``bytes``, ``cmp``, ``compress/*``, ``container/*``, ``context``, ``crypto``, ``crypto/*``, ``database/*``, ``debug/*``, ``embed``, ``encoding``, ``encoding/*``, ``errors``, ``expvar``, ``flag``, ``fmt``, ``go/*``, ``hash``, ``hash/*``, ``html``, ``html/*``, ``image``, ``image/*``, ``index/*``, ``io``, ``io/*``, ``log``, ``log/*``, ``maps``, ``math``, ``math/*``, ``mime``, ``mime/*``, ``net``, ``net/*``, ``os``, ``os/*``, ``path``, ``path/*``, ``plugin``, ``reflect``, ``reflect/*``, ``regexp``, ``regexp/*``, ``slices``, ``sort``, ``strconv``, ``strings``, ``sync``, ``sync/*``, ``syscall``, ``syscall/*``, ``testing``, ``testing/*``, ``text/*``, ``time``, ``time/*``, ``unicode``, ``unicode/*``, ``unsafe``, ``weak``",52,674,127 `XORM `_,"``github.com/go-xorm/xorm*``, ``xorm.io/xorm*``",,,68 `XPath `_,``github.com/antchfx/xpath*``,,,4 `appleboy/gin-jwt `_,``github.com/appleboy/gin-jwt*``,,,1 @@ -74,5 +74,6 @@ Go framework & library support `xpathparser `_,``github.com/santhosh-tekuri/xpathparser*``,,,2 `yaml `_,``gopkg.in/yaml*``,,9, `zap `_,``go.uber.org/zap*``,,11,33 - Totals,,688,1085,1580 + Others,``github.com/coder/websocket``,2,, + Totals,,690,1134,1580 diff --git a/go/downgrades/b4012cfa6fa7de1878c247155b7dfcd76df2604d/go.dbscheme b/go/downgrades/b4012cfa6fa7de1878c247155b7dfcd76df2604d/go.dbscheme new file mode 100644 index 000000000000..d0e7336b491e --- /dev/null +++ b/go/downgrades/b4012cfa6fa7de1878c247155b7dfcd76df2604d/go.dbscheme @@ -0,0 +1,564 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx, is_from_recv] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, + int bound: @compositetype ref, int parent: @typeparamparentobject ref, int idx: int ref, boolean is_from_recv: boolean ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr +| 55 = @rangeelementexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/b4012cfa6fa7de1878c247155b7dfcd76df2604d/old.dbscheme b/go/downgrades/b4012cfa6fa7de1878c247155b7dfcd76df2604d/old.dbscheme new file mode 100644 index 000000000000..b4012cfa6fa7 --- /dev/null +++ b/go/downgrades/b4012cfa6fa7de1878c247155b7dfcd76df2604d/old.dbscheme @@ -0,0 +1,565 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +isParenthesized(unique int id: @expr ref, int parentheses: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx, is_from_recv] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, + int bound: @compositetype ref, int parent: @typeparamparentobject ref, int idx: int ref, boolean is_from_recv: boolean ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr +| 55 = @rangeelementexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; diff --git a/go/downgrades/b4012cfa6fa7de1878c247155b7dfcd76df2604d/upgrade.properties b/go/downgrades/b4012cfa6fa7de1878c247155b7dfcd76df2604d/upgrade.properties new file mode 100644 index 000000000000..74cb08710c86 --- /dev/null +++ b/go/downgrades/b4012cfa6fa7de1878c247155b7dfcd76df2604d/upgrade.properties @@ -0,0 +1,3 @@ +description: Remove table recording the number of parentheses around expressions +compatibility: full +isParenthesized.rel: delete diff --git a/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/exprs.ql b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/exprs.ql new file mode 100644 index 000000000000..80911bb7a6b8 --- /dev/null +++ b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/exprs.ql @@ -0,0 +1,31 @@ +class Expr_ extends @expr { + string toString() { result = "Expr" } +} + +class ExprParent_ extends @exprparent { + string toString() { result = "ExprParent" } +} + +// The schema for exprs is: +// +// exprs(unique int id: @expr, +// int kind: int ref, +// int parent: @exprparent ref, +// int idx: int ref); +// +// `@rangeelementexpr` (kind 55) is a synthesized node that groups the loop +// variables (the key and value) of a `range` statement. To downgrade we remove +// those nodes and reparent their children (the key and value expressions) +// directly onto the `range` statement, at the same indices. +from Expr_ id, int kind, ExprParent_ newparent, int idx +where + exists(ExprParent_ parent | exprs(id, kind, parent, idx) and kind != 55 | + // A key or value grouped by a range element node: reparent it onto the + // range statement (the range element node's own parent). + exists(Expr_ pe | pe = parent and exprs(pe, 55, newparent, _)) + or + // Any other expression keeps its parent unchanged. + not exists(Expr_ pe | pe = parent and exprs(pe, 55, _, _)) and + newparent = parent + ) +select id, kind, newparent, idx diff --git a/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/go.dbscheme b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/go.dbscheme new file mode 100644 index 000000000000..5ff5325d274a --- /dev/null +++ b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/go.dbscheme @@ -0,0 +1,563 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx, is_from_recv] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, + int bound: @compositetype ref, int parent: @typeparamparentobject ref, int idx: int ref, boolean is_from_recv: boolean ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/has_location.ql b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/has_location.ql new file mode 100644 index 000000000000..34dda880ebd1 --- /dev/null +++ b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/has_location.ql @@ -0,0 +1,23 @@ +class Locatable_ extends @locatable { + string toString() { result = "Locatable" } +} + +class Location_ extends @location { + string toString() { result = "Location" } +} + +class Expr_ extends @expr { + string toString() { result = "Expr" } +} + +// The schema for has_location is: +// +// has_location(unique int locatable: @locatable ref, int location: @location ref); +// +// The synthesized `@rangeelementexpr` nodes (kind 55) are removed by the +// accompanying `exprs` downgrade, so their locations must be removed too. +from Locatable_ locatable, Location_ location +where + has_location(locatable, location) and + not exists(Expr_ e | e = locatable and exprs(e, 55, _, _)) +select locatable, location diff --git a/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/old.dbscheme b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/old.dbscheme new file mode 100644 index 000000000000..d0e7336b491e --- /dev/null +++ b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/old.dbscheme @@ -0,0 +1,564 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx, is_from_recv] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, + int bound: @compositetype ref, int parent: @typeparamparentobject ref, int idx: int ref, boolean is_from_recv: boolean ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr +| 55 = @rangeelementexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/upgrade.properties b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/upgrade.properties new file mode 100644 index 000000000000..abaabbd305de --- /dev/null +++ b/go/downgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/upgrade.properties @@ -0,0 +1,4 @@ +description: Remove @rangeelementexpr, reparenting range loop variables onto the range statement +compatibility: full +exprs.rel: run exprs.qlo +has_location.rel: run has_location.qlo diff --git a/go/extractor/dbscheme/dbscheme.go b/go/extractor/dbscheme/dbscheme.go index 45aea39b4e54..66152eca49da 100644 --- a/go/extractor/dbscheme/dbscheme.go +++ b/go/extractor/dbscheme/dbscheme.go @@ -415,17 +415,19 @@ func AddDefaultSnippet(snippet string) bool { // PrintDbScheme prints the schema of this database to the writer `w` func PrintDbScheme(w io.Writer) { - fmt.Fprintf(w, "/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */\n\n") + var b strings.Builder + fmt.Fprintf(&b, "/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */\n\n") for _, snippet := range defaultSnippets { - fmt.Fprintf(w, "%s\n", snippet) + fmt.Fprintf(&b, "%s\n", snippet) } for _, table := range tables { - fmt.Fprintf(w, "%s\n\n", table.String()) + fmt.Fprintf(&b, "%s\n\n", table.String()) } for _, tp := range types { def := tp.def() if def != "" { - fmt.Fprintf(w, "%s\n\n", def) + fmt.Fprintf(&b, "%s\n\n", def) } } + fmt.Fprintln(w, strings.TrimRight(b.String(), "\n")) } diff --git a/go/extractor/dbscheme/tables.go b/go/extractor/dbscheme/tables.go index b72c33795182..8335734963c5 100644 --- a/go/extractor/dbscheme/tables.go +++ b/go/extractor/dbscheme/tables.go @@ -532,6 +532,12 @@ var ChanTypeExprs = map[ast.ChanDir]*BranchType{ ast.SEND | ast.RECV: ExprKind.NewBranch("@sendrcvchantypeexpr", ChanTypeExpr), } +// RangeElementExpr is the type of the synthesized node representing the loop +// variables (key and value) bound by a `range` statement. It groups the key and +// value expressions into a single "tuple pattern" target, mirroring how other +// languages present a single variable node for a `foreach` loop. +var RangeElementExpr = ExprKind.NewBranch("@rangeelementexpr") + // StmtKind is a case type for distinguishing different kinds of statement AST nodes var StmtKind = NewCaseType(StmtType, "kind") @@ -990,6 +996,12 @@ var ExprsTable = NewTable("exprs", IntColumn("idx"), ).KeySet("parent", "idx") +// IsParenthesizedTable is the table associating expressions with how many parentheses they originally had +var IsParenthesizedTable = NewTable("isParenthesized", + EntityColumn(ExprType, "id").Unique(), + IntColumn("parentheses"), +) + // LiteralsTable is the table associating literal expression AST nodes with their values var LiteralsTable = NewTable("literals", EntityColumn(ExprType, "expr").Unique(), diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index fe798bc9f406..cbe24088d7c0 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -1025,7 +1025,23 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int, ski return } + // Skip parenthesised expressions and extract their child directly in their place + nParens := 0 + for { + paren, ok := expr.(*ast.ParenExpr) + if !ok { + break + } + nParens++ + expr = paren.X + } + lbl := tw.Labeler.LocalID(expr) + + if nParens > 0 { + dbscheme.IsParenthesizedTable.Emit(tw, lbl, nParens) + } + extractTypeOf(tw, expr, lbl) var kind int @@ -1099,9 +1115,6 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int, ski kind = dbscheme.CompositeLitExpr.Index() extractExpr(tw, expr.Type, lbl, 0, false) extractExprs(tw, expr.Elts, lbl, 1, 1) - case *ast.ParenExpr: - kind = dbscheme.ParenExpr.Index() - extractExpr(tw, expr.X, lbl, 0, false) case *ast.SelectorExpr: kind = dbscheme.SelectorExpr.Index() extractExpr(tw, expr.X, lbl, 0, false) @@ -1428,8 +1441,18 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) { emitScopeNodeInfo(tw, stmt, lbl) case *ast.RangeStmt: kind = dbscheme.RangeStmtType.Index() - extractExpr(tw, stmt.Key, lbl, 0, false) - extractExpr(tw, stmt.Value, lbl, 1, false) + // Synthesize a "range element" node that groups the loop variables (the + // key and value) into a single target. This mirrors how other languages + // present a single loop-variable node for a `foreach` loop and lets the + // shared control-flow library drive the destructuring through this node. + patternLbl := tw.Labeler.FreshID() + dbscheme.ExprsTable.Emit(tw, patternLbl, dbscheme.RangeElementExpr.Index(), lbl, 0) + // The range element node uses the location of the whole range statement, + // so that the destructuring control-flow and data-flow nodes derived from + // it keep the same location they had before this node was introduced. + extractNodeLocation(tw, stmt, patternLbl) + extractExpr(tw, stmt.Key, patternLbl, 0, false) + extractExpr(tw, stmt.Value, patternLbl, 1, false) extractExpr(tw, stmt.X, lbl, 2, false) extractStmt(tw, stmt.Body, lbl, 3) emitScopeNodeInfo(tw, stmt, lbl) diff --git a/go/extractor/go.mod b/go/extractor/go.mod index 74a25627fdce..621a47c33dcd 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -2,25 +2,22 @@ module github.com/github/codeql-go/extractor go 1.27 -toolchain go1.27.0 +toolchain go1.27.2 // when updating this, run // bazel run @rules_go//go -- mod tidy // when adding or removing dependencies, run // bazel mod tidy -require ( - golang.org/x/mod v0.40.0 - golang.org/x/tools v0.49.0 -) - require ( github.com/stretchr/testify v1.11.1 - golang.org/x/sys v0.47.0 + golang.org/x/mod v0.42.0 + golang.org/x/sys v0.49.0 + golang.org/x/tools v0.52.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/sync v0.22.0 // indirect + golang.org/x/sync v0.24.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go/extractor/go.sum b/go/extractor/go.sum index f06d2fb2b567..25b1d0bc411b 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -6,14 +6,14 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs= -golang.org/x/mod v0.40.0/go.mod h1:0/weTWkPWGBikyTWAX3dkjVztMmBA5hM0DH6BElSupE= -golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= -golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= -golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI= -golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo= +golang.org/x/mod v0.42.0 h1:ICeL3t2L30ljSPHHxDnR4fqVcBt/zR2zJAb9juavmQg= +golang.org/x/mod v0.42.0/go.mod h1:u5fzIrRInkL8MaO1cbRkUHT64v303YIT5KEqpNr7jRs= +golang.org/x/sync v0.24.0 h1:iqiDrGoDgyuvAKrhLQthUEzU/R378N78gXbBjxed7oA= +golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= +golang.org/x/sys v0.49.0 h1:XbzkgYJHdqh/8m2Uu0W/dQv8nktxx4BFHp1M0gROTXA= +golang.org/x/sys v0.49.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= +golang.org/x/tools v0.52.0 h1:ryxg4U63oaUYk7uOLTF37n43f4qgtGvqV4Ioit1BaEs= +golang.org/x/tools v0.52.0/go.mod h1:ItcP5UNaVGG+Yc4eIYmaFLNJ4soEopkx5Y2d4lcEurs= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 3a71bc3b5561..022e978cff17 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/go/ql/consistency-queries/CfgConsistency.ql b/go/ql/consistency-queries/CfgConsistency.ql new file mode 100644 index 000000000000..86aa5260886c --- /dev/null +++ b/go/ql/consistency-queries/CfgConsistency.ql @@ -0,0 +1,3 @@ +import go +private import semmle.go.controlflow.ControlFlowGraphImpl +import CfgImpl::ControlFlow::Consistency diff --git a/go/ql/consistency-queries/change-notes/released/1.0.58.md b/go/ql/consistency-queries/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.59.md b/go/ql/consistency-queries/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.60.md b/go/ql/consistency-queries/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +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 08ea3909354f..e0eab12f1948 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.57 +lastReleaseVersion: 1.0.60 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 353e4dd1cdcd..a57f8c2d145b 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.57 +version: 1.0.60 groups: - go - queries diff --git a/go/ql/examples/snippets/emptythen.ql b/go/ql/examples/snippets/emptythen.ql index 97a810e388c1..0973a791dd7f 100644 --- a/go/ql/examples/snippets/emptythen.ql +++ b/go/ql/examples/snippets/emptythen.ql @@ -14,5 +14,5 @@ import go from IfStmt i -where i.getThen().getNumStmt() = 0 +where i.getThen().(BlockStmt).getNumStmt() = 0 select i diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 0c60f6aed295..50cff8505a60 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,51 @@ +## 8.0.1 + +No user-facing changes. + +## 8.0.0 + +### Breaking Changes + +* The Go control flow graph (CFG) implementation has been completely rewritten + to use the shared CFG library. The CFG now includes additional nodes to more + accurately represent certain constructs, including assignments, function + parameters and results, range statements, and deferred calls. The CFG now + only includes nodes that are reachable from the entry point. Basic blocks are + also now constructed directly from the shared CFG. Existing code that relies + on specific CFG nodes, edges, locations, textual representations, or basic + block boundaries may need to be updated. Additionally, the following API + changes have been made: + - `BasicBlocks::Cfg` has been removed. `BasicBlock` now directly uses the + basic-block implementation provided by the shared CFG library. + - `ControlFlow::EntryNode` and `ControlFlow::ExitNode` have been added, and + `ControlFlow::entryNode` and `ControlFlow::exitNode` now return these more + specific types. + - `IfStmt.getCond` has been deprecated. Please use the new `IfStmt.getCondition` instead. + - The result types of `IfStmt.getThen` and `LoopStmt.getBody` have been + widened from `BlockStmt` to `Stmt`. + - `SwitchStmt.getExpr` has been added, providing a common accessor for the + expression examined by expression and type switches. + - Several IR instruction classes have been removed or consolidated, including + `ReadArgumentInstruction`, `InitResultInstruction`, `IncDecInstruction`, + `EvalIncDecRhsInstruction`, `EvalImplicitOneInstruction`, + `SelectInstruction`, and `SendInstruction`. + - `EvalCompoundAssignRhsInstruction` now also represents increment and + decrement operations, and it and `EvalImplicitInitInstruction` directly + represent their associated writes. + +### Minor Analysis Improvements + +* Models for the `nhooyr.io/websocket` package have been updated to also support its new import path `github.com/coder/websocket`. + +## 7.3.2 + +### Minor Analysis Improvements + +* Added or improved data flow models for the following Go standard-library APIs introduced or updated in Go 1.27: + * `bytes.CutLast`, `database/sql.ConvertAssign`, `database/sql/driver.RowsColumnScanner.ScanColumn`, `net/url.URL.Clone`, `net/url.Values.Clone` and `strings.CutLast`. + * The new `encoding/json/jsontext` package. +* Added more data flow models for the `strings` package: `strings.Clone`, `Cut`, `CutPrefix`, `CutSuffix`, `Fields`, `FieldsFunc`, and `Join`; `strings.Builder.String`, `Builder.WriteByte`, and `Builder.WriteRune`; `strings.Reader.ReadByte` and `Reader.ReadRune`; and `strings.Replacer.Replace` and `Replacer.WriteString`. + ## 7.3.1 No user-facing changes. diff --git a/go/ql/lib/change-notes/released/7.3.2.md b/go/ql/lib/change-notes/released/7.3.2.md new file mode 100644 index 000000000000..988651b7ec2c --- /dev/null +++ b/go/ql/lib/change-notes/released/7.3.2.md @@ -0,0 +1,8 @@ +## 7.3.2 + +### Minor Analysis Improvements + +* Added or improved data flow models for the following Go standard-library APIs introduced or updated in Go 1.27: + * `bytes.CutLast`, `database/sql.ConvertAssign`, `database/sql/driver.RowsColumnScanner.ScanColumn`, `net/url.URL.Clone`, `net/url.Values.Clone` and `strings.CutLast`. + * The new `encoding/json/jsontext` package. +* Added more data flow models for the `strings` package: `strings.Clone`, `Cut`, `CutPrefix`, `CutSuffix`, `Fields`, `FieldsFunc`, and `Join`; `strings.Builder.String`, `Builder.WriteByte`, and `Builder.WriteRune`; `strings.Reader.ReadByte` and `Reader.ReadRune`; and `strings.Replacer.Replace` and `Replacer.WriteString`. diff --git a/go/ql/lib/change-notes/released/8.0.0.md b/go/ql/lib/change-notes/released/8.0.0.md new file mode 100644 index 000000000000..2f89b50122ee --- /dev/null +++ b/go/ql/lib/change-notes/released/8.0.0.md @@ -0,0 +1,34 @@ +## 8.0.0 + +### Breaking Changes + +* The Go control flow graph (CFG) implementation has been completely rewritten + to use the shared CFG library. The CFG now includes additional nodes to more + accurately represent certain constructs, including assignments, function + parameters and results, range statements, and deferred calls. The CFG now + only includes nodes that are reachable from the entry point. Basic blocks are + also now constructed directly from the shared CFG. Existing code that relies + on specific CFG nodes, edges, locations, textual representations, or basic + block boundaries may need to be updated. Additionally, the following API + changes have been made: + - `BasicBlocks::Cfg` has been removed. `BasicBlock` now directly uses the + basic-block implementation provided by the shared CFG library. + - `ControlFlow::EntryNode` and `ControlFlow::ExitNode` have been added, and + `ControlFlow::entryNode` and `ControlFlow::exitNode` now return these more + specific types. + - `IfStmt.getCond` has been deprecated. Please use the new `IfStmt.getCondition` instead. + - The result types of `IfStmt.getThen` and `LoopStmt.getBody` have been + widened from `BlockStmt` to `Stmt`. + - `SwitchStmt.getExpr` has been added, providing a common accessor for the + expression examined by expression and type switches. + - Several IR instruction classes have been removed or consolidated, including + `ReadArgumentInstruction`, `InitResultInstruction`, `IncDecInstruction`, + `EvalIncDecRhsInstruction`, `EvalImplicitOneInstruction`, + `SelectInstruction`, and `SendInstruction`. + - `EvalCompoundAssignRhsInstruction` now also represents increment and + decrement operations, and it and `EvalImplicitInitInstruction` directly + represent their associated writes. + +### Minor Analysis Improvements + +* Models for the `nhooyr.io/websocket` package have been updated to also support its new import path `github.com/coder/websocket`. diff --git a/go/ql/lib/change-notes/released/8.0.1.md b/go/ql/lib/change-notes/released/8.0.1.md new file mode 100644 index 000000000000..72c82ffed0b6 --- /dev/null +++ b/go/ql/lib/change-notes/released/8.0.1.md @@ -0,0 +1,3 @@ +## 8.0.1 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 43cb026b1392..145ae8f5b473 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.3.1 +lastReleaseVersion: 8.0.1 diff --git a/go/ql/lib/ext/bytes.model.yml b/go/ql/lib/ext/bytes.model.yml index b55749f828bf..9f5ad37176a7 100644 --- a/go/ql/lib/ext/bytes.model.yml +++ b/go/ql/lib/ext/bytes.model.yml @@ -5,6 +5,7 @@ extensions: data: - ["bytes", "", False, "Clone", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["bytes", "", False, "Cut", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] + - ["bytes", "", False, "CutLast", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] - ["bytes", "", False, "CutPrefix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - ["bytes", "", False, "CutSuffix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - ["bytes", "", False, "Fields", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/database.sql.driver.model.yml b/go/ql/lib/ext/database.sql.driver.model.yml index 0f33a6e14b8c..2c5770e26194 100644 --- a/go/ql/lib/ext/database.sql.driver.model.yml +++ b/go/ql/lib/ext/database.sql.driver.model.yml @@ -24,5 +24,6 @@ extensions: - ["database/sql/driver", "Conn", True, "Prepare", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - ["database/sql/driver", "ConnPrepareContext", True, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - ["database/sql/driver", "Rows", True, "Next", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + - ["database/sql/driver", "RowsColumnScanner", True, "ScanColumn", "", "", "Argument[receiver]", "Argument[2]", "taint", "manual"] - ["database/sql/driver", "ValueConverter", True, "ConvertValue", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - ["database/sql/driver", "Valuer", True, "Value", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/database.sql.model.yml b/go/ql/lib/ext/database.sql.model.yml index 8d67dd921423..3f37c2a6eab4 100644 --- a/go/ql/lib/ext/database.sql.model.yml +++ b/go/ql/lib/ext/database.sql.model.yml @@ -49,6 +49,7 @@ extensions: pack: codeql/go-all extensible: summaryModel data: + - ["database/sql", "", False, "ConvertAssign", "", "", "Argument[2]", "Argument[1]", "taint", "manual"] - ["database/sql", "", False, "Named", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - ["database/sql", "Conn", True, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - ["database/sql", "DB", True, "Prepare", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.json.jsontext.model.yml b/go/ql/lib/ext/encoding.json.jsontext.model.yml new file mode 100644 index 000000000000..d04afceaefe2 --- /dev/null +++ b/go/ql/lib/ext/encoding.json.jsontext.model.yml @@ -0,0 +1,36 @@ +extensions: + - addsTo: + pack: codeql/go-all + extensible: summaryModel + data: + - ["encoding/json/jsontext", "", False, "AppendFloat", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "", False, "AppendFormat", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "", False, "AppendQuote", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "", False, "AppendUnquote", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "", False, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "", False, "Float", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "", False, "Float32", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "", False, "Int", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "", False, "String", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "", False, "Uint", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Decoder", True, "ReadToken", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "Decoder", True, "ReadValue", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "Decoder", True, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + - ["encoding/json/jsontext", "Decoder", True, "UnreadBuffer", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Encoder", True, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + - ["encoding/json/jsontext", "Encoder", True, "WriteToken", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + - ["encoding/json/jsontext", "Encoder", True, "WriteValue", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + - ["encoding/json/jsontext", "Pointer", True, "AppendToken", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Pointer", True, "AppendToken", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Pointer", True, "LastToken", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Pointer", True, "Parent", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Token", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Token", True, "Float", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "Token", True, "Float32", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "Token", True, "Int", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "Token", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Token", True, "Uint", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "Value", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Value", True, "MarshalJSON", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + - ["encoding/json/jsontext", "Value", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["encoding/json/jsontext", "Value", True, "UnmarshalJSON", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.coder.websocket.model.yml b/go/ql/lib/ext/github.com.coder.websocket.model.yml new file mode 100644 index 000000000000..cf94840ea910 --- /dev/null +++ b/go/ql/lib/ext/github.com.coder.websocket.model.yml @@ -0,0 +1,13 @@ +extensions: + - addsTo: + pack: codeql/go-all + extensible: packageGrouping + data: + - ["coder/websocket", "github.com/coder/websocket"] + - ["coder/websocket", "nhooyr.io/websocket"] + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["group:coder/websocket", "Conn", True, "Read", "", "", "ReturnValue[1]", "remote", "manual"] + - ["group:coder/websocket", "Conn", True, "Reader", "", "", "ReturnValue[1]", "remote", "manual"] diff --git a/go/ql/lib/ext/net.url.model.yml b/go/ql/lib/ext/net.url.model.yml index 0b48aa2352c2..ca4cf2c170f2 100644 --- a/go/ql/lib/ext/net.url.model.yml +++ b/go/ql/lib/ext/net.url.model.yml @@ -12,6 +12,7 @@ extensions: - ["net/url", "", False, "QueryUnescape", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - ["net/url", "", False, "User", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["net/url", "", False, "UserPassword", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["net/url", "URL", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - ["net/url", "URL", True, "EscapedPath", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - ["net/url", "URL", True, "Hostname", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - ["net/url", "URL", True, "MarshalBinary", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] @@ -24,5 +25,6 @@ extensions: - ["net/url", "URL", True, "ResolveReference", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["net/url", "Userinfo", True, "Password", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - ["net/url", "Userinfo", True, "Username", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["net/url", "Values", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - ["net/url", "Values", True, "Encode", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - ["net/url", "Values", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/nhooyr.io.websocket.model.yml b/go/ql/lib/ext/nhooyr.io.websocket.model.yml deleted file mode 100644 index bb94c1ce2d4c..000000000000 --- a/go/ql/lib/ext/nhooyr.io.websocket.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["nhooyr.io/websocket", "Conn", True, "Read", "", "", "ReturnValue[1]", "remote", "manual"] - - ["nhooyr.io/websocket", "Conn", True, "Reader", "", "", "ReturnValue[1]", "remote", "manual"] diff --git a/go/ql/lib/ext/strings.model.yml b/go/ql/lib/ext/strings.model.yml index 01015b31517e..4a6d852baab4 100644 --- a/go/ql/lib/ext/strings.model.yml +++ b/go/ql/lib/ext/strings.model.yml @@ -3,9 +3,15 @@ extensions: pack: codeql/go-all extensible: summaryModel data: - - ["strings", "", False, "Fields", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "FieldsFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Join", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["strings", "", False, "Clone", "", "", "Argument[0]", "ReturnValue", "value", "manual"] + - ["strings", "", False, "Cut", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] + - ["strings", "", False, "CutLast", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] + - ["strings", "", False, "CutPrefix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + - ["strings", "", False, "CutSuffix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + - ["strings", "", False, "Fields", "", "", "Argument[0]", "ReturnValue.ArrayElement", "taint", "manual"] + - ["strings", "", False, "FieldsFunc", "", "", "Argument[0]", "ReturnValue.ArrayElement", "taint", "manual"] + - ["strings", "", False, "Join", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"] + - ["strings", "", False, "Join", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - ["strings", "", False, "Map", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - ["strings", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["strings", "", False, "Repeat", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] @@ -34,6 +40,13 @@ extensions: - ["strings", "", False, "TrimRightFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["strings", "", False, "TrimSpace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["strings", "", False, "TrimSuffix", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["strings", "Builder", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["strings", "Builder", True, "WriteByte", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + - ["strings", "Builder", True, "WriteRune", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + - ["strings", "Reader", True, "ReadByte", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + - ["strings", "Reader", True, "ReadRune", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - ["strings", "Reader", True, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + - ["strings", "Replacer", True, "Replace", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - ["strings", "Replacer", True, "Replace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["strings", "Replacer", True, "WriteString", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - ["strings", "Replacer", True, "WriteString", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/go.dbscheme b/go/ql/lib/go.dbscheme index 5ff5325d274a..b4012cfa6fa7 100644 --- a/go/ql/lib/go.dbscheme +++ b/go/ql/lib/go.dbscheme @@ -162,6 +162,8 @@ doc_comments(unique int node: @documentable ref, int comment: @comment_group ref #keyset[parent, idx] exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); +isParenthesized(unique int id: @expr ref, int parentheses: int ref); + literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); @@ -336,7 +338,8 @@ case @expr.kind of | 51 = @andnotexpr | 52 = @sendchantypeexpr | 53 = @recvchantypeexpr -| 54 = @sendrcvchantypeexpr; +| 54 = @sendrcvchantypeexpr +| 55 = @rangeelementexpr; @basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; @@ -560,4 +563,3 @@ case @error.kind of | 1 = @listerror | 2 = @parseerror | 3 = @typeerror; - diff --git a/go/ql/lib/printCfg.ql b/go/ql/lib/printCfg.ql new file mode 100644 index 000000000000..2b018caf5acc --- /dev/null +++ b/go/ql/lib/printCfg.ql @@ -0,0 +1,53 @@ +/** + * @name Print CFG + * @description Produces a representation of a file's Control Flow Graph. + * This query is used by the VS Code extension. + * @id go/print-cfg + * @kind graph + * @tags ide-contextual-queries/print-cfg + */ + +import go +import semmle.go.controlflow.ControlFlowGraph +private import semmle.go.controlflow.ControlFlowGraphImpl + +external string selectedSourceFile(); + +private predicate selectedSourceFileAlias = selectedSourceFile/0; + +external int selectedSourceLine(); + +private predicate selectedSourceLineAlias = selectedSourceLine/0; + +external int selectedSourceColumn(); + +private predicate selectedSourceColumnAlias = selectedSourceColumn/0; + +module ViewCfgQueryInput implements CfgImpl::ControlFlow::ViewCfgQueryInputSig { + predicate selectedSourceFile = selectedSourceFileAlias/0; + + predicate selectedSourceLine = selectedSourceLineAlias/0; + + predicate selectedSourceColumn = selectedSourceColumnAlias/0; + + predicate cfgScopeSpan( + CfgScope scope, File file, int startLine, int startColumn, int endLine, int endColumn + ) { + file = scope.getFile() and + scope.getLocation().getStartLine() = startLine and + scope.getLocation().getStartColumn() = startColumn and + exists(Location loc | + loc.getEndLine() = endLine and + loc.getEndColumn() = endColumn and + loc = scope.(FuncDef).getBody().getLocation() + ) + or + file = scope.(File) and + startLine = 1 and + startColumn = 1 and + endLine = file.getNumberOfLines() and + endColumn = 999999 + } +} + +import CfgImpl::ControlFlow::ViewCfgQuery diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index fb42dcb703ae..09c4c604ebdf 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 7.3.1 +version: 8.0.1 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/lib/semmle/go/Comments.qll b/go/ql/lib/semmle/go/Comments.qll index 08a0fabc1cab..b5cd9a48e173 100644 --- a/go/ql/lib/semmle/go/Comments.qll +++ b/go/ql/lib/semmle/go/Comments.qll @@ -190,6 +190,18 @@ private Comment getInitialComment(File f, int i) { ) } +bindingset[comment] +pragma[inline_late] +private predicate hasBuildConstraintText(Comment comment) { + comment.getText().regexpMatch("\\s*(\\+|go:)build.*") +} + +pragma[noinline] +private predicate isInitialBuildConstraintComment(Comment comment) { + isInitialComment(comment, _, _, _) and + hasBuildConstraintText(comment) +} + /** * A build constraint comment of the form `// +build ...` or `//go:build ...`. * @@ -211,7 +223,7 @@ class BuildConstraintComment extends LineComment { not getInitialComment(f, [0 .. i - 1]) instanceof BlockComment ) and // comment text starts with `+build` or `go:build` - this.getText().regexpMatch("\\s*(\\+|go:)build.*") + isInitialBuildConstraintComment(this) } override string getAPrimaryQlClass() { result = "BuildConstraintComment" } diff --git a/go/ql/lib/semmle/go/Concepts.qll b/go/ql/lib/semmle/go/Concepts.qll index 302149149520..1194b2051f5a 100644 --- a/go/ql/lib/semmle/go/Concepts.qll +++ b/go/ql/lib/semmle/go/Concepts.qll @@ -431,7 +431,7 @@ private class HeuristicLoggerFunction extends Method { ) } - override predicate mayReturnNormally() { logFunctionPrefix != "Fatal" } + override predicate mustNotReturnNormally() { logFunctionPrefix = "Fatal" } override predicate mustPanic() { logFunctionPrefix = "Panic" } } diff --git a/go/ql/lib/semmle/go/Expr.qll b/go/ql/lib/semmle/go/Expr.qll index 9a8481a2dcc8..81b71c670841 100644 --- a/go/ql/lib/semmle/go/Expr.qll +++ b/go/ql/lib/semmle/go/Expr.qll @@ -551,6 +551,11 @@ class SliceLit extends ArrayOrSliceLit { * ```go * (x + y) * ``` + * + * Note that `ParenExpr` is no longer extracted - the child expression takes + * the place of the parenthesized expression directly. This class only exists + * for compatibility with old databases, and will be deprecated and removed in + * the future. */ class ParenExpr extends @parenexpr, Expr { /** Gets the expression between parentheses. */ @@ -971,6 +976,18 @@ class KeyValueExpr extends @keyvalueexpr, Expr { /** Gets the composite literal to which this key-value pair belongs. */ CompositeLit getLiteral() { this = result.getElement(_) } + /** + * Gets the type of this key-value pair. + * + * The Go type checker does not assign a type to key-value pairs, so we use the + * type of the value, which is the value that flows through this node. + */ + override Type getType() { + type_of(this, result) + or + not type_of(this, _) and result = this.getValue().getType() + } + override string toString() { result = "key-value pair" } override string getAPrimaryQlClass() { result = "KeyValueExpr" } @@ -2137,8 +2154,6 @@ private predicate isTypeExprBottomUp(Expr e) { or e instanceof @indexexpr and isTypeExprBottomUp(e.getChildExpr(0)) or - isTypeExprBottomUp(e.(ParenExpr).getExpr()) - or isTypeExprBottomUp(e.(StarExpr).getBase()) or isTypeExprBottomUp(e.(Ellipsis).getOperand()) @@ -2189,8 +2204,6 @@ private predicate isTypeExprTopDown(Expr e) { or e = any(SelectorExpr sel | isTypeExprTopDown(sel)).getBase() or - e = any(ParenExpr pe | isTypeExprTopDown(pe)).getExpr() - or e = any(StarExpr se | isTypeExprTopDown(se)).getBase() or e = any(Ellipsis ell | isTypeExprTopDown(ell)).getOperand() @@ -2239,8 +2252,6 @@ class ReferenceExpr extends Expr { not this = any(MethodSpec md).getNameExpr() and not this = any(StructLit sl).getKey(_) or - this.(ParenExpr).getExpr() instanceof ReferenceExpr - or this.(StarExpr).getBase() instanceof ReferenceExpr or this instanceof DerefExpr @@ -2290,7 +2301,6 @@ class ValueExpr extends Expr { this instanceof BasicLit or this instanceof FuncLit or this instanceof CompositeLit or - this.(ParenExpr).getExpr() instanceof ValueExpr or this instanceof SliceExpr or this instanceof TypeAssertExpr or this instanceof CallOrConversionExpr or diff --git a/go/ql/lib/semmle/go/PrintAst.qll b/go/ql/lib/semmle/go/PrintAst.qll index 6ea5fcc39719..c7c9bb5b4b7e 100644 --- a/go/ql/lib/semmle/go/PrintAst.qll +++ b/go/ql/lib/semmle/go/PrintAst.qll @@ -1,7 +1,7 @@ /** * Provides queries to pretty-print a Go AST as a graph. */ -overlay[local] +overlay[local?] module; import go diff --git a/go/ql/lib/semmle/go/Scopes.qll b/go/ql/lib/semmle/go/Scopes.qll index 9f18290fb011..735dbe80d590 100644 --- a/go/ql/lib/semmle/go/Scopes.qll +++ b/go/ql/lib/semmle/go/Scopes.qll @@ -437,11 +437,12 @@ class Function extends ValueEntity, @functionobject { * This predicate is an over-approximation: it may hold for functions that can never * return normally, but it never fails to hold for functions that can. * - * Note this is declared here and not in `DeclaredFunction` so that library models can override this - * by extending `Function` rather than having to remember to extend `DeclaredFunction`. + * Library models should not override this predicate; override `mustNotReturnNormally` + * instead, so that the control-flow graph construction can take the model into account. */ predicate mayReturnNormally() { not this.mustPanic() and + not this.mustNotReturnNormally() and (ControlFlow::mayReturnNormally(this.getFuncDecl()) or not exists(this.getBody())) } @@ -461,6 +462,16 @@ class Function extends ValueEntity, @functionobject { */ predicate mustPanic() { none() } + /** + * Holds if calling this function never returns normally (for example because it + * always panics, exits the process, or loops forever). + * + * Unlike `mayReturnNormally`, this predicate must be defined without reference to + * the control-flow graph, so that it can be used during CFG construction to + * suppress normal-flow successors of calls to this function. + */ + predicate mustNotReturnNormally() { none() } + /** Gets the number of parameters of this function. */ int getNumParameter() { result = this.getType().(SignatureType).getNumParameter() } diff --git a/go/ql/lib/semmle/go/Stmt.qll b/go/ql/lib/semmle/go/Stmt.qll index aa6fe7c24de9..04d9b24e9f70 100644 --- a/go/ql/lib/semmle/go/Stmt.qll +++ b/go/ql/lib/semmle/go/Stmt.qll @@ -571,7 +571,7 @@ class ReturnStmt extends @returnstmt, Stmt { int getNumExpr() { result = count(this.getAnExpr()) } /** Gets the unique returned expression, if there is only one. */ - Expr getExpr() { this.getNumChild() = 1 and result = this.getExpr(0) } + Expr getExpr() { this.getNumExpr() = 1 and result = this.getExpr(0) } override predicate mayHaveSideEffects() { this.getAnExpr().mayHaveSideEffects() } @@ -710,18 +710,21 @@ class IfStmt extends @ifstmt, Stmt, ScopeNode { /** Gets the init statement of this `if` statement, if any. */ Stmt getInit() { result = this.getChildStmt(0) } + /** DEPRECATED: Use `getCondition` instead. */ + deprecated Expr getCond() { result = this.getCondition() } + /** Gets the condition of this `if` statement. */ - Expr getCond() { result = this.getChildExpr(1) } + Expr getCondition() { result = this.getChildExpr(1) } /** Gets the "then" branch of this `if` statement. */ - BlockStmt getThen() { result = this.getChildStmt(2) } + Stmt getThen() { result = this.getChildStmt(2) } /** Gets the "else" branch of this `if` statement, if any. */ Stmt getElse() { result = this.getChildStmt(3) } override predicate mayHaveSideEffects() { this.getInit().mayHaveSideEffects() or - this.getCond().mayHaveSideEffects() or + this.getCondition().mayHaveSideEffects() or this.getThen().mayHaveSideEffects() or this.getElse().mayHaveSideEffects() } @@ -829,6 +832,12 @@ class SwitchStmt extends @switchstmt, Stmt, ScopeNode { /** Gets the init statement of this `switch` statement, if any. */ Stmt getInit() { result = this.getChildStmt(0) } + /** + * Gets the expression whose value or type is examined by this `switch` + * statement, if any. + */ + Expr getExpr() { none() } + /** Gets the body of this `switch` statement. */ BlockStmt getBody() { result = this.getChildStmt(2) } @@ -877,8 +886,7 @@ class SwitchStmt extends @switchstmt, Stmt, ScopeNode { * ``` */ class ExpressionSwitchStmt extends @exprswitchstmt, SwitchStmt { - /** Gets the switch expression of this `switch` statement. */ - Expr getExpr() { result = this.getChildExpr(1) } + override Expr getExpr() { result = this.getChildExpr(1) } override predicate mayHaveSideEffects() { this.getInit().mayHaveSideEffects() or @@ -909,14 +917,14 @@ class ExpressionSwitchStmt extends @exprswitchstmt, SwitchStmt { * ``` */ class TypeSwitchStmt extends @typeswitchstmt, SwitchStmt { - /** Gets the assign statement of this type-switch statement. */ + /** Gets the assignment statement of this type-switch statement, if any. */ SimpleAssignStmt getAssign() { result = this.getChildStmt(1) } /** Gets the test statement of this type-switch statement. This is a `SimpleAssignStmt` or `ExprStmt`. */ Stmt getTest() { result = this.getChildStmt(1) } /** Gets the expression whose type is examined by this `switch` statement. */ - Expr getExpr() { + override Expr getExpr() { result = this.getAssign().getRhs() or result = this.getChildStmt(1).(ExprStmt).getExpr() } @@ -1082,7 +1090,7 @@ class SelectStmt extends @selectstmt, Stmt { */ class LoopStmt extends @loopstmt, Stmt, ScopeNode { /** Gets the body of this loop. */ - BlockStmt getBody() { none() } + Stmt getBody() { none() } } /** @@ -1148,11 +1156,14 @@ class ForStmt extends @forstmt, LoopStmt { * ``` */ class RangeStmt extends @rangestmt, LoopStmt { + /** Gets the synthesized node grouping the loop variables of this `range` statement. */ + RangeElementExpr getPattern() { result = this.getChildExpr(0) } + /** Gets the expression denoting the key of this `range` statement. */ - Expr getKey() { result = this.getChildExpr(0) } + Expr getKey() { result = this.getPattern().getKey() } /** Get the expression denoting the value of this `range` statement. */ - Expr getValue() { result = this.getChildExpr(1) } + Expr getValue() { result = this.getPattern().getValue() } /** Gets the domain of this `range` statement. */ Expr getDomain() { result = this.getChildExpr(2) } @@ -1165,3 +1176,31 @@ class RangeStmt extends @rangestmt, LoopStmt { override string getAPrimaryQlClass() { result = "RangeStmt" } } + +/** + * A synthesized node grouping the loop variables (key and value) bound by a + * `range` statement. + * + * This node acts as the single target of the destructuring performed on each + * iteration of the loop, so that a `range` statement can be modeled with a + * single loop-variable node in the same way as a `foreach` loop in other + * languages. It is present for every `range` statement, even when no loop + * variables are bound (as in `for range x`). + */ +class RangeElementExpr extends @rangeelementexpr, Expr { + /** Gets the `range` statement that this node belongs to. */ + RangeStmt getRangeStmt() { result = this.getParent() } + + /** Gets the expression denoting the key of the `range` statement. */ + Expr getKey() { result = this.getChildExpr(0) } + + /** Gets the expression denoting the value of the `range` statement. */ + Expr getValue() { result = this.getChildExpr(1) } + + /** Gets the domain of the `range` statement. */ + Expr getDomain() { result = this.getRangeStmt().getDomain() } + + override string toString() { result = "range element" } + + override string getAPrimaryQlClass() { result = "RangeElementExpr" } +} diff --git a/go/ql/lib/semmle/go/StringOps.qll b/go/ql/lib/semmle/go/StringOps.qll index 6af2946f95c5..a00f8d90b48e 100644 --- a/go/ql/lib/semmle/go/StringOps.qll +++ b/go/ql/lib/semmle/go/StringOps.qll @@ -138,6 +138,18 @@ module StringOps { override boolean getPolarity() { result = expr.getPolarity() } } + bindingset[slice, substring] + pragma[inline_late] + private predicate hasPrefixSliceUpperBound(DataFlow::SliceNode slice, DataFlow::Node substring) { + exists(DataFlow::CallNode len | + len = Builtin::len().getACall() and + len.getArgument(0) = globalValueNumber(substring).getANode() and + slice.getHigh() = globalValueNumber(len).getANode() + ) + or + substring.getStringValue().length() = slice.getHigh().getIntValue() + } + /** * A comparison of the form `x[:len(y)] == y`. */ @@ -147,16 +159,9 @@ module StringOps { HasPrefix_Substring() { this.eq(_, slice, substring) and - slice.getLow().getIntValue() = 0 and - ( - exists(DataFlow::CallNode len | - len = Builtin::len().getACall() and - len.getArgument(0) = globalValueNumber(substring).getANode() and - slice.getHigh() = globalValueNumber(len).getANode() - ) - or - substring.getStringValue().length() = slice.getHigh().getIntValue() - ) + // An omitted lower bound (`x[:len(y)]`) is implicitly `0`. + (not exists(slice.getLow()) or slice.getLow().getIntValue() = 0) and + hasPrefixSliceUpperBound(slice, substring) } override DataFlow::Node getBaseString() { result = slice.getBase() } diff --git a/go/ql/lib/semmle/go/controlflow/BasicBlocks.qll b/go/ql/lib/semmle/go/controlflow/BasicBlocks.qll index 9bb92bb7d460..3ae911e931d0 100644 --- a/go/ql/lib/semmle/go/controlflow/BasicBlocks.qll +++ b/go/ql/lib/semmle/go/controlflow/BasicBlocks.qll @@ -6,65 +6,26 @@ module; import go private import ControlFlowGraphImpl -private import codeql.controlflow.BasicBlock as BB -private import codeql.controlflow.SuccessorType -private module Input implements BB::InputSig { - /** A delineated part of the AST with its own CFG. */ - class CfgScope = ControlFlow::Root; +/** A basic block in the control-flow graph. */ +class BasicBlock = CfgImpl::Cfg::BasicBlock; - /** The class of control flow nodes. */ - class Node = ControlFlowNode; - - /** Gets the CFG scope in which this node occurs. */ - CfgScope nodeGetCfgScope(Node node) { node.getRoot() = result } - - /** Gets an immediate successor of this node. */ - Node nodeGetASuccessor(Node node, SuccessorType t) { - result = node.getASuccessor() and - ( - not result instanceof ControlFlow::ConditionGuardNode and t instanceof DirectSuccessor - or - t.(BooleanSuccessor).getValue() = result.(ControlFlow::ConditionGuardNode).getOutcome() - ) - } - - /** - * Holds if `node` represents an entry node to be used when calculating - * dominance. - */ - predicate nodeIsDominanceEntry(Node node) { node instanceof EntryNode } - - /** - * Holds if `node` represents an exit node to be used when calculating - * post dominance. - */ - predicate nodeIsPostDominanceExit(Node node) { node instanceof ExitNode } -} - -module Cfg = BB::Make; - -class BasicBlock = Cfg::BasicBlock; - -class EntryBasicBlock = Cfg::EntryBasicBlock; - -cached -private predicate reachableBB(BasicBlock bb) { - bb instanceof EntryBasicBlock - or - exists(BasicBlock predBB | predBB.getASuccessor(_) = bb | reachableBB(predBB)) -} +/** An entry basic block. */ +class EntryBasicBlock = CfgImpl::Cfg::EntryBasicBlock; /** * A basic block that is reachable from an entry basic block. + * + * Since the shared CFG library only creates nodes for reachable code, + * all basic blocks are reachable by construction. */ class ReachableBasicBlock extends BasicBlock { - ReachableBasicBlock() { reachableBB(this) } + ReachableBasicBlock() { any() } } /** * A reachable basic block with more than one predecessor. */ class ReachableJoinBlock extends ReachableBasicBlock { - ReachableJoinBlock() { this.getFirstNode().isJoin() } + ReachableJoinBlock() { this.getFirstNode().(ControlFlow::Node).isJoin() } } diff --git a/go/ql/lib/semmle/go/controlflow/ControlFlowGraph.qll b/go/ql/lib/semmle/go/controlflow/ControlFlowGraph.qll index 77bb94d89f8c..37b81d0f4fe7 100644 --- a/go/ql/lib/semmle/go/controlflow/ControlFlowGraph.qll +++ b/go/ql/lib/semmle/go/controlflow/ControlFlowGraph.qll @@ -1,17 +1,22 @@ /** - * Provides classes for working with a CFG-based program representation. + * Provides the public API for working with Go's control-flow graph. */ overlay[local] module; import go private import ControlFlowGraphImpl +private import codeql.controlflow.SuccessorType -/** Provides helper predicates for mapping btween CFG nodes and the AST. */ +/** Provides helper predicates for mapping between CFG nodes and the AST. */ module ControlFlow { /** A file or function with which a CFG is associated. */ class Root extends AstNode { - Root() { exists(this.(File).getADecl()) or exists(this.(FuncDef).getBody()) } + Root() { + exists(this.(FuncDef).getBody()) + or + exists(this.(File).getADecl()) + } /** Holds if `nd` belongs to this file or function. */ predicate isRootOf(AstNode nd) { @@ -29,22 +34,15 @@ module ControlFlow { } /** - * A node in the intra-procedural control-flow graph of a Go function or file. + * A node in the control-flow graph of a Go file or function. * * Nodes correspond to expressions and statements that compute a value or perform * an operation (as opposed to providing syntactic structure or type information). * - * There are also synthetic entry and exit nodes for each Go function and file - * that mark the beginning and the end, respectively, of the execution of the - * function and the loading of the file. + * There are also synthetic entry and exit nodes for each Go file or function + * that mark the beginning and the end, respectively, of its execution. */ - class Node extends TControlFlowNode { - /** Gets a node that directly follows this one in the control-flow graph. */ - Node getASuccessor() { result = CFG::succ(this) } - - /** Gets a node that directly precedes this one in the control-flow graph. */ - Node getAPredecessor() { this = result.getASuccessor() } - + class Node extends CfgImpl::ControlFlowNode { /** Holds if this is a node with more than one successor. */ predicate isBranch() { strictcount(this.getASuccessor()) > 1 } @@ -52,22 +50,19 @@ module ControlFlow { predicate isJoin() { strictcount(this.getAPredecessor()) > 1 } /** Holds if this is the first control-flow node in `subtree`. */ - predicate isFirstNodeOf(AstNode subtree) { CFG::firstNode(subtree, this) } + predicate isFirstNodeOf(AstNode subtree) { this.isBefore(subtree) } - /** Holds if this node is the (unique) entry node of a function or file. */ - predicate isEntryNode() { this instanceof MkEntryNode } + /** Holds if this node is the unique entry node of a file or function. */ + predicate isEntryNode() { this instanceof CfgImpl::ControlFlow::EntryNode } - /** Holds if this node is the (unique) exit node of a function or file. */ - predicate isExitNode() { this instanceof MkExitNode } - - /** Gets the basic block to which this node belongs. */ - BasicBlock getBasicBlock() { result.getANode() = this } + /** Holds if this node is the unique exit node of a file or function. */ + predicate isExitNode() { this instanceof CfgImpl::ControlFlow::ExitNode } /** Holds if this node dominates `dominee` in the control-flow graph. */ overlay[caller?] pragma[inline] predicate dominatesNode(ControlFlow::Node dominee) { - exists(ReachableBasicBlock thisbb, ReachableBasicBlock dbb, int i, int j | + exists(CfgImpl::Cfg::BasicBlock thisbb, CfgImpl::Cfg::BasicBlock dbb, int i, int j | this = thisbb.getNode(i) and dominee = dbb.getNode(j) | thisbb.strictlyDominates(dbb) @@ -76,19 +71,15 @@ module ControlFlow { ) } - /** Gets the innermost function or file to which this node belongs. */ - Root getRoot() { none() } - - /** Gets the file to which this node belongs. */ - File getFile() { result = this.getLocation().getFile() } - /** - * Gets a textual representation of this control flow node. + * Gets the innermost function to which this node belongs, or the file if + * it is not inside a function. */ - string toString() { result = "control-flow node" } + cached + Root getRoot() { result = this.getEnclosingCallable() } - /** Gets the source location for this element. */ - Location getLocation() { none() } + /** Gets the file to which this node belongs. */ + File getFile() { result = this.getLocation().getFile() } /** * DEPRECATED: Use `getLocation()` instead. @@ -113,6 +104,26 @@ module ControlFlow { } } + /** A synthetic entry node for a function or a file. */ + class EntryNode extends Node instanceof CfgImpl::ControlFlow::EntryNode { } + + /** A synthetic exit node for a function or a file. */ + class ExitNode extends Node instanceof CfgImpl::ControlFlow::ExitNode { } + + private predicate isConditionGuardRoot(Expr expr) { + expr = any(LogicalBinaryExpr lbe).getLeftOperand() + or + expr = any(ForStmt fs).getCond() + or + expr = any(IfStmt is).getCondition() + or + isExpressionlessSwitchCaseCondition(expr) + } + + private predicate isExpressionlessSwitchCaseCondition(Expr expr) { + expr = any(ExpressionSwitchStmt ess | not exists(ess.getExpr())).getACase().getAnExpr() + } + /** * A control-flow node that initializes or updates the value of a constant, a variable, * a field, or an (array, slice, or map) element. @@ -172,7 +183,7 @@ module ControlFlow { exists(IR::FieldTarget trg | trg = super.getLhs() | ( trg.getBase() = base or - trg.getBase() = MkImplicitDeref(base.(IR::EvalInstruction).getExpr()) + trg.getBase() = IR::implicitDerefInstruction(base.(IR::EvalInstruction).getExpr()) ) and trg.getField() = f and super.getRhs() = rhs @@ -220,7 +231,7 @@ module ControlFlow { exists(IR::ElementTarget trg | trg = super.getLhs() | ( trg.getBase() = base or - trg.getBase() = MkImplicitDeref(base.(IR::EvalInstruction).getExpr()) + trg.getBase() = IR::implicitDerefInstruction(base.(IR::EvalInstruction).getExpr()) ) and trg.getIndex() = index and super.getRhs() = rhs @@ -250,17 +261,28 @@ module ControlFlow { * A control-flow node recording the fact that a certain expression has a known * Boolean value at this point in the program. */ - class ConditionGuardNode extends IR::Instruction, MkConditionGuardNode { + class ConditionGuardNode extends IR::Instruction { Expr cond; boolean outcome; - ConditionGuardNode() { this = MkConditionGuardNode(cond, outcome) } + ConditionGuardNode() { + isConditionGuardRoot(cond) and + this.isAfterTrue(cond) and + outcome = true + or + isConditionGuardRoot(cond) and + this.isAfterFalse(cond) and + outcome = false + or + isExpressionlessSwitchCaseCondition(cond) and + exists(MatchingSuccessor successor | + this.isAfterValue(cond, successor) and outcome = successor.getValue() + ) + } private predicate ensuresAux(Expr expr, boolean b) { expr = cond and b = outcome or - expr = any(ParenExpr par | this.ensuresAux(par, b)).getExpr() - or expr = any(NotExpr ne | this.ensuresAux(ne, b.booleanNot())).getOperand() or expr = any(LandExpr land | this.ensuresAux(land, true)).getAnOperand() and @@ -318,23 +340,17 @@ module ControlFlow { /** Gets the value of the condition that this node corresponds to. */ boolean getOutcome() { result = outcome } - - override Root getRoot() { result.isRootOf(cond) } - - override string toString() { result = cond + " is " + outcome } - - override Location getLocation() { result = cond.getLocation() } } /** - * Gets the entry node of function or file `root`. + * Gets the entry node of file or function `root`. */ - Node entryNode(Root root) { result = MkEntryNode(root) } + EntryNode entryNode(Root root) { result.getEnclosingCallable() = root } /** - * Gets the exit node of function or file `root`. + * Gets the exit node of file or function `root`. */ - Node exitNode(Root root) { result = MkExitNode(root) } + ExitNode exitNode(Root root) { result.getEnclosingCallable() = root } /** * Holds if the function `f` may return without panicking, exiting the process, or looping forever. @@ -342,20 +358,40 @@ module ControlFlow { * This is defined conservatively, and so may also hold of a function that in fact * cannot return normally, but never fails to hold of a function that can return normally. */ - predicate mayReturnNormally(FuncDecl f) { CFG::mayReturnNormally(f.getBody()) } + predicate mayReturnNormally(FuncDecl f) { + exists(CfgImpl::ControlFlow::NormalExitNode exit | + exit.getEnclosingCallable() = f and + exists(exit.getAPredecessor()) + ) + } /** - * Holds if `pred` is the node for the case `testExpr` in an expression - * switch statement which is switching on `switchExpr`, and `succ` is the - * node to be executed next if the case test succeeds. + * Holds if `pred` is the node reached when a case of the expression switch + * statement switching on `switchExpr` matches, `testExpr` is one of that + * case's test expressions, and `succ` is the node to be executed next when + * the case matches. + * + * In the control-flow graph the individual case test expressions of a case + * clause all funnel into a single "matched" node for the clause, from which + * control transfers to the case body. Hence `pred` is that shared matched + * node, and the same `(pred, succ)` pair is reported once per test + * expression `testExpr` of the clause. */ predicate isSwitchCaseTestPassingEdge( ControlFlow::Node pred, ControlFlow::Node succ, Expr switchExpr, Expr testExpr ) { - CFG::isSwitchCaseTestPassingEdge(pred, succ, switchExpr, testExpr) + exists(ExpressionSwitchStmt ess, CaseClause cc, int i | + ess.getExpr() = switchExpr and + cc = ess.getACase() and + testExpr = cc.getExpr(i) and + pred.isAfter(cc) and + succ.isFirstNodeOf(cc.getStmt(0)) + ) } } class ControlFlowNode = ControlFlow::Node; +class CfgScope = CfgImpl::CfgScope; + class Write = ControlFlow::WriteNode; diff --git a/go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll b/go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll index a26ab3adaf5f..9d73c09a2a75 100644 --- a/go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll +++ b/go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll @@ -1,2133 +1,1731 @@ /** - * INTERNAL: Analyses should use module `ControlFlowGraph` instead. - * - * Provides predicates for building intra-procedural CFGs. + * Provides the shared CFG library instantiation for Go. */ overlay[local] module; -import go +private import codeql.controlflow.ControlFlowGraph as CfgLib +private import codeql.controlflow.SuccessorType +private import codeql.util.Void -/** A block statement that is not the body of a `switch` or `select` statement. */ -class PlainBlock extends BlockStmt { - PlainBlock() { - not this = any(SwitchStmt sw).getBody() and not this = any(SelectStmt sel).getBody() - } -} - -private predicate notBlankIdent(Expr e) { not e instanceof BlankIdent } - -private predicate pureLvalue(ReferenceExpr e) { not e.isRvalue() } - -/** - * Holds if `e` is a branch condition, including the LHS of a short-circuiting binary operator. - */ -private predicate isCondRoot(Expr e) { - e = any(LogicalBinaryExpr lbe).getLeftOperand() - or - e = any(ForStmt fs).getCond() - or - e = any(IfStmt is).getCond() - or - e = any(ExpressionSwitchStmt ess | not exists(ess.getExpr())).getACase().getAnExpr() -} - -/** - * Holds if `e` is a branch condition or part of a logical binary expression contributing to a - * branch condition. - * - * For example, in `v := (x && y) || (z && w)`, `x` and `(x && y)` and `z` are branch conditions - * (`isCondRoot` holds of them), whereas this predicate also holds of `y` (contributes to condition - * `x && y`) but not of `w` (contributes to the value `v`, but not to any branch condition). - * - * In the context `if (x && y) || (z && w)` then the whole `(x && y) || (z && w)` is a branch condition - * as well as `x` and `(x && y)` and `z` as previously, and this predicate holds of all their - * subexpressions. - */ -private predicate isCond(Expr e) { - isCondRoot(e) or - e = any(LogicalBinaryExpr lbe | isCond(lbe)).getRightOperand() or - e = any(ParenExpr par | isCond(par)).getExpr() -} - -/** - * Holds if `e` implicitly reads the embedded field `implicitField`. - * - * The `index` is the distance from the promoted field. For example, if `A` contains an embedded - * field `B`, `B` contains an embedded field `C` and `C` contains the non-embedded field `x`. - * Then `a.x` implicitly reads `C` with index 1 and `B` with index 2. - */ -private predicate implicitFieldSelectionForField(PromotedSelector e, int index, Field implicitField) { - exists(StructType baseType, PromotedField child, int implicitFieldDepth | - baseType = e.getSelectedStructType() and - ( - e.refersTo(child) - or - implicitFieldSelectionForField(e, implicitFieldDepth + 1, child) - ) - | - child = baseType.getFieldOfEmbedded(implicitField, _, implicitFieldDepth + 1, _) and - exists(PromotedField explicitField, int explicitFieldDepth | - e.refersTo(explicitField) and baseType.getFieldAtDepth(_, explicitFieldDepth) = explicitField - | - index = explicitFieldDepth - implicitFieldDepth - ) - ) -} - -private predicate implicitFieldSelectionForMethod(PromotedSelector e, int index, Field implicitField) { - exists(StructType baseType, PromotedMethod method, int mDepth, int implicitFieldDepth | - baseType = e.getSelectedStructType() and - e.refersTo(method) and - baseType.getMethodAtDepth(_, mDepth) = method and - index = mDepth - implicitFieldDepth - | - method = baseType.getMethodOfEmbedded(implicitField, _, implicitFieldDepth + 1) - or - exists(PromotedField child | - child = baseType.getFieldOfEmbedded(implicitField, _, implicitFieldDepth + 1, _) and - implicitFieldSelectionForMethod(e, implicitFieldDepth + 1, child) - ) - ) -} - -/** - * A node in the intra-procedural control-flow graph of a Go function or file. - * - * There are two kinds of control-flow nodes: - * - * 1. Instructions: these are nodes that correspond to expressions and statements - * that compute a value or perform an operation (as opposed to providing syntactic - * structure or type information). - * 2. Synthetic nodes: - * - Entry and exit nodes for each Go function and file that mark the beginning and the end, - * respectively, of the execution of the function and the loading of the file; - * - Skip nodes that are semantic no-ops, but make CFG construction easier. - */ -cached -newtype TControlFlowNode = - /** - * A control-flow node that represents the evaluation of an expression. - */ - MkExprNode(Expr e) { CFG::hasEvaluationNode(e) } or - /** - * A control-flow node that represents the initialization of an element of a composite literal. - */ - MkLiteralElementInitNode(Expr e) { e = any(CompositeLit lit).getAnElement() } or - /** - * A control-flow node that represents the implicit index of an element in a slice or array literal. - */ - MkImplicitLiteralElementIndex(Expr e) { - exists(CompositeLit lit | not lit instanceof StructLit | - e = lit.getAnElement() and - not e instanceof KeyValueExpr - ) - } or - /** - * A control-flow node that represents a (single) assignment. - * - * Assignments with multiple left-hand sides are split up into multiple assignment nodes, - * one for each left-hand side. Assignments to `_` are not represented in the control-flow graph. - */ - MkAssignNode(AstNode assgn, int i) { - // the `i`th assignment in a (possibly multi-)assignment - notBlankIdent(assgn.(Assignment).getLhs(i)) - or - // the `i`th name declared in a (possibly multi-)declaration specifier - notBlankIdent(assgn.(ValueSpec).getNameExpr(i)) - or - // the assignment to the "key" variable in a `range` statement - notBlankIdent(assgn.(RangeStmt).getKey()) and i = 0 - or - // the assignment to the "value" variable in a `range` statement - notBlankIdent(assgn.(RangeStmt).getValue()) and i = 1 - } or - /** - * A control-flow node that represents the implicit right-hand side of a compound assignment. - * - * For example, the compound assignment `x += 1` has an implicit right-hand side `x + 1`. - */ - MkCompoundAssignRhsNode(CompoundAssignStmt assgn) or - /** - * A control-flow node that represents the `i`th component of a tuple expression `s`. - */ - MkExtractNode(AstNode s, int i) { - // in an assignment `x, y, z = tuple` - exists(Assignment assgn | - s = assgn and - exists(assgn.getRhs()) and - assgn.getNumLhs() > 1 and - exists(assgn.getLhs(i)) - ) - or - // in a declaration `var x, y, z = tuple` - exists(ValueSpec spec | - s = spec and - exists(spec.getInit()) and - spec.getNumName() > 1 and - exists(spec.getNameExpr(i)) - ) - or - // in a `range` statement - exists(RangeStmt rs | s = rs | - exists(rs.getKey()) and i = 0 - or - exists(rs.getValue()) and i = 1 - ) - or - // in a return statement `return f()` where `f` has multiple return values - exists(ReturnStmt ret, SignatureType rettp | - s = ret and - // the return statement has a single expression - exists(ret.getExpr()) and - // but the enclosing function has multiple results - rettp = ret.getEnclosingFunction().getType() and - rettp.getNumResult() > 1 and - exists(rettp.getResultType(i)) - ) - or - // in a call `f(g())` where `g` has multiple return values - exists(CallExpr outer, CallExpr inner | s = outer | - inner = outer.getArgument(0).stripParens() and - outer.getNumArgument() = 1 and - exists(inner.getType().(TupleType).getComponentType(i)) - ) - } or - /** - * A control-flow node that represents the zero value to which a variable without an initializer - * expression is initialized. - */ - MkZeroInitNode(ValueEntity v) { - exists(ValueSpec spec | - not exists(spec.getAnInit()) and - spec.getNameExpr(_) = v.getDeclaration() - ) - or - exists(v.(ResultVariable).getFunction().getBody()) - } or - /** - * A control-flow node that represents a function declaration. - */ - MkFuncDeclNode(FuncDecl fd) or - /** - * A control-flow node that represents a `defer` statement. - */ - MkDeferNode(DeferStmt def) or - /** - * A control-flow node that represents a `go` statement. - */ - MkGoNode(GoStmt go) or - /** - * A control-flow node that represents the fact that `e` is known to evaluate to - * `outcome`. - */ - MkConditionGuardNode(Expr e, Boolean outcome) { isCondRoot(e) } or - /** - * A control-flow node that represents an increment or decrement statement. - */ - MkIncDecNode(IncDecStmt ids) or - /** - * A control-flow node that represents the implicit right-hand side of an increment or decrement statement. - */ - MkIncDecRhs(IncDecStmt ids) or - /** - * A control-flow node that represents the implicit operand 1 of an increment or decrement statement. - */ - MkImplicitOne(IncDecStmt ids) or - /** - * A control-flow node that represents a return from a function. - */ - MkReturnNode(ReturnStmt ret) or - /** - * A control-flow node that represents the implicit write to a named result variable in a return statement. - */ - MkResultWriteNode(ResultVariable var, int i, ReturnStmt ret) { - ret.getEnclosingFunction().getResultVar(i) = var and - exists(ret.getAnExpr()) - } or - /** - * A control-flow node that represents the implicit read of a named result variable upon returning from - * a function (after any deferred calls have been executed). - */ - MkResultReadNode(ResultVariable var) or - /** - * A control-flow node that represents a no-op. - * - * These control-flow nodes correspond to Go statements that have no runtime semantics other than potentially - * influencing control flow: the branching statements `continue`, `break`, `fallthrough` and `goto`; empty - * blocks; empty statements; and import and type declarations. - */ - MkSkipNode(AstNode skip) { - skip instanceof BranchStmt - or - skip instanceof EmptyStmt - or - skip.(PlainBlock).getNumStmt() = 0 - or - skip instanceof ImportDecl - or - skip instanceof TypeDecl - or - pureLvalue(skip) - or - skip.(CaseClause).getNumStmt() = 0 - or - skip.(CommClause).getNumStmt() = 0 - } or - /** - * A control-flow node that represents a `select` operation. - */ - MkSelectNode(SelectStmt sel) or - /** - * A control-flow node that represents a `send` operation. - */ - MkSendNode(SendStmt send) or - /** - * A control-flow node that represents the initialization of a parameter to its corresponding argument. - */ - MkParameterInit(Parameter parm) { exists(parm.getFunction().getBody()) } or - /** - * A control-flow node that represents the argument corresponding to a parameter. - */ - MkArgumentNode(Parameter parm) { exists(parm.getFunction().getBody()) } or - /** - * A control-flow node that represents the initialization of a result variable to its zero value. - */ - MkResultInit(ResultVariable rv) { exists(rv.getFunction().getBody()) } or - /** - * A control-flow node that represents the operation of retrieving the next (key, value) pair in a - * `range` statement, if any. - */ - MkNextNode(RangeStmt rs) or - /** - * A control-flow node that represents the implicit `true` expression in `switch { ... }`. - */ - MkImplicitTrue(ExpressionSwitchStmt stmt) { not exists(stmt.getExpr()) } or - /** - * A control-flow node that represents the implicit comparison or type check performed by - * the `i`th expression of a case clause `cc`. - */ - MkCaseCheckNode(CaseClause cc, int i) { exists(cc.getExpr(i)) } or - /** - * A control-flow node that represents the implicit declaration of the - * variable `lv` in case clause `cc` and its assignment of the value - * `switchExpr` from the guard. This only occurs in case clauses in a type - * switch statement which declares a variable in its guard. - */ - MkTypeSwitchImplicitVariable(CaseClause cc, LocalVariable lv, Expr switchExpr) { - exists(TypeSwitchStmt ts, DefineStmt ds | ds = ts.getAssign() | - cc = ts.getACase() and - lv = cc.getImplicitlyDeclaredVariable() and - switchExpr = ds.getRhs().(TypeAssertExpr).getExpr() - ) - } or - /** - * A control-flow node that represents the implicit lower bound of a slice expression. - */ - MkImplicitLowerSliceBound(SliceExpr sl) { not exists(sl.getLow()) } or - /** - * A control-flow node that represents the implicit upper bound of a simple slice expression. - */ - MkImplicitUpperSliceBound(SliceExpr sl) { not exists(sl.getHigh()) } or - /** - * A control-flow node that represents the implicit max bound of a simple slice expression. - */ - MkImplicitMaxSliceBound(SliceExpr sl) { not exists(sl.getMax()) } or - /** - * A control-flow node that represents the implicit dereference of the base in a field/method - * access, element access, or slice expression. - */ - MkImplicitDeref(Expr e) { - e.getType().getUnderlyingType() instanceof PointerType and - ( - exists(SelectorExpr sel | e = sel.getBase() | - // field accesses through a pointer always implicitly dereference - sel = any(Field f).getAReference() - or - // method accesses only dereference if the receiver is _not_ a pointer - exists(Method m, Type tp | - sel = m.getAReference() and - tp = m.getReceiver().getType().getUnderlyingType() and - not tp instanceof PointerType - ) - ) - or - e = any(IndexExpr ie).getBase() - or - e = any(SliceExpr se).getBase() - ) - } or - /** - * A control-flow node that represents the implicit selection of a field when - * accessing a promoted field. - * - * If that field has a pointer type then this control-flow node also - * represents an implicit dereference of it. - */ - MkImplicitFieldSelection(PromotedSelector e, int i, Field implicitField) { - implicitFieldSelectionForField(e, i, implicitField) or - implicitFieldSelectionForMethod(e, i, implicitField) - } or - /** - * A control-flow node that represents the start of the execution of a function or file. - */ - MkEntryNode(ControlFlow::Root root) or - /** - * A control-flow node that represents the end of the execution of a function or file. - */ - MkExitNode(ControlFlow::Root root) +/** Contains the shared CFG library instantiation for Go. */ +module CfgImpl { + private import go as Go -/** A representation of the target of a write. */ -newtype TWriteTarget = - /** A write target that is represented explicitly in the AST. */ - MkLhs(TControlFlowNode write, Expr lhs) { - exists(AstNode assgn, int i | write = MkAssignNode(assgn, i) | - lhs = assgn.(Assignment).getLhs(i).stripParens() - or - lhs = assgn.(ValueSpec).getNameExpr(i) - or - exists(RangeStmt rs | rs = assgn | - i = 0 and lhs = rs.getKey().stripParens() - or - i = 1 and lhs = rs.getValue().stripParens() - ) - ) - or - exists(IncDecStmt ids | write = MkIncDecNode(ids) | lhs = ids.getOperand().stripParens()) - or - exists(Parameter parm | write = MkParameterInit(parm) | lhs = parm.getDeclaration()) - or - exists(ResultVariable res | write = MkResultInit(res) | lhs = res.getDeclaration()) - } or - /** A write target for an element in a compound literal, viewed as a field write. */ - MkLiteralElementTarget(MkLiteralElementInitNode elt) or - /** A write target for a returned expression, viewed as a write to the corresponding result variable. */ - MkResultWriteTarget(MkResultWriteNode w) - -/** - * A control-flow node that represents a no-op. - * - * These control-flow nodes correspond to Go statements that have no runtime semantics other than - * potentially influencing control flow: the branching statements `continue`, `break`, - * `fallthrough` and `goto`; empty blocks; empty statements; and import and type declarations. - */ -class SkipNode extends ControlFlow::Node, MkSkipNode { - AstNode skip; - - SkipNode() { this = MkSkipNode(skip) } - - override ControlFlow::Root getRoot() { result.isRootOf(skip) } - - override string toString() { result = "skip" } - - override Location getLocation() { result = skip.getLocation() } -} + private module Cfg0 = CfgLib::Make0; -/** - * A control-flow node that represents the start of the execution of a function or file. - */ -class EntryNode extends ControlFlow::Node, MkEntryNode { - ControlFlow::Root root; - - EntryNode() { this = MkEntryNode(root) } - - override ControlFlow::Root getRoot() { result = root } - - override string toString() { result = "entry" } + private module Cfg1 = Cfg0::Make1; - override Location getLocation() { result = root.getLocation() } -} - -/** - * A control-flow node that represents the end of the execution of a function or file. - */ -class ExitNode extends ControlFlow::Node, MkExitNode { - ControlFlow::Root root; + private module EarlyCfg2 = Cfg1::Make2; - ExitNode() { this = MkExitNode(root) } + private module Cfg2 = Cfg1::Make2; - override ControlFlow::Root getRoot() { result = root } + private import Cfg0 + private import Cfg1 + private import Cfg2 + import Public - override string toString() { result = "exit" } + class CfgScope = Ast::Callable; - override Location getLocation() { result = root.getLocation() } -} - -/** - * Provides classes and predicates for computing the control-flow graph. - */ -cached -module CFG { - /** - * The target of a branch statement, which is either the label of a labeled statement or - * the special target `""` referring to the innermost enclosing loop or `switch`. - */ - private class BranchTarget extends string { - BranchTarget() { this = any(LabeledStmt ls).getLabel() or this = "" } - } - - private module BranchTarget { - /** Holds if this is the target of branch statement `stmt` or the label of compound statement `stmt`. */ - BranchTarget of(Stmt stmt) { - exists(BranchStmt bs | bs = stmt | - result = bs.getLabel() - or - not exists(bs.getLabel()) and result = "" - ) - or - exists(LabeledStmt ls | stmt = ls.getStmt() | result = ls.getLabel()) - or - (stmt instanceof LoopStmt or stmt instanceof SwitchStmt or stmt instanceof SelectStmt) and - result = "" - } - } - - private newtype TCompletion = - /** A completion indicating that an expression or statement was evaluated successfully. */ - Done() or - /** - * A completion indicating that an expression was successfully evaluated to Boolean value `b`. - * - * Note that many Boolean expressions are modeled as having completion `Done()` instead. - * Completion `Bool` is only used in contexts where the Boolean value can be determined. - */ - Bool(boolean b) { b = true or b = false } or - /** - * A completion indicating that execution of a (compound) statement ended with a `break` - * statement targeting the given label. - */ - Break(BranchTarget lbl) or - /** - * A completion indicating that execution of a (compound) statement ended with a `continue` - * statement targeting the given label. - */ - Continue(BranchTarget lbl) or - /** - * A completion indicating that execution of a (compound) statement ended with a `fallthrough` - * statement. - */ - Fallthrough() or - /** - * A completion indicating that execution of a (compound) statement ended with a `return` - * statement. - */ - Return() or - /** - * A completion indicating that execution of a statement or expression may have ended with - * a panic being raised. - */ - Panic() - - private Completion normalCompletion() { result.isNormal() } - - private class Completion extends TCompletion { - predicate isNormal() { this = Done() or this = Bool(_) } - - Boolean getOutcome() { this = Done() or this = Bool(result) } - - string toString() { - this = Done() and result = "normal" - or - exists(boolean b | this = Bool(b) | result = b.toString()) - or - exists(BranchTarget lbl | - this = Break(lbl) and result = "break " + lbl - or - this = Continue(lbl) and result = "continue " + lbl - ) - or - this = Fallthrough() and result = "fallthrough" - or - this = Return() and result = "return" - or - this = Panic() and result = "panic" - } - } - - /** - * Holds if `e` should have an evaluation node in the control-flow graph. - * - * Excluded expressions include those not evaluated at runtime (e.g. identifiers, type expressions) - * and some logical expressions that are expressed as control-flow edges rather than having a specific - * evaluation node. - */ - cached - predicate hasEvaluationNode(Expr e) { - // exclude expressions that do not denote a value - not e instanceof TypeExpr and - not e = any(FieldDecl f).getTag() and - not e instanceof KeyValueExpr and - not e = any(SelectorExpr sel).getSelector() and - not e = any(StructLit sl).getKey(_) and - not (e instanceof Ident and not e instanceof ReferenceExpr) and - not (e instanceof SelectorExpr and not e instanceof ReferenceExpr) and - not pureLvalue(e) and - // exclude parentheses, which are purely concrete syntax, and some logical binary expressions - // whose evaluation is implied by control-flow edges without requiring an evaluation node. - not isControlFlowStructural(e) and - // exclude expressions that are not evaluated at runtime - not e = any(ImportSpec is).getPathExpr() and - not e.getParent*() = any(ArrayTypeExpr ate).getLength() and - // sub-expressions of constant expressions are not evaluated (even if they don't look constant - // themselves) - not constRoot(e.getParent+()) + /** Holds if `e` has an implicit field selection at `index` for `implicitField`. */ + predicate implicitFieldSelection(Go::AstNode e, int index, Go::Field implicitField) { + Input1::implicitFieldSelection(e, index, implicitField) } /** - * Holds if `e` is an expression that purely serves grouping or control-flow purposes. - * - * Examples include parenthesized expressions and short-circuiting Boolean expressions used within - * a branch condition (`if` or `for` condition, or as part of a larger boolean expression, e.g. - * in `(x && y) || z`, the `&&` subexpression matches this predicate). + * Holds if `root` is a constant root: a constant expression (with any + * enclosing parentheses stripped) whose parent expression is not itself + * constant. The strict sub-expressions of a constant root are folded at + * compile time and are not evaluated at run time, so they get no evaluation + * node; the constant root itself is evaluated as a single leaf value. */ - private predicate isControlFlowStructural(Expr e) { - // Some logical binary operators do not need an evaluation node - // (for example, in `if x && y`, we evaluate `x` and then branch straight to either `y` or the - // `else` block, so there is no control-flow step where `x && y` is specifically calculated) - e instanceof LogicalBinaryExpr and - isCond(e) - or - // Purely concrete-syntactic structural expression: - e instanceof ParenExpr - } - - /** - * Gets a constant root, that is, an expression that is constant but whose parent expression is not. - * - * As an exception to the latter, for a control-flow structural expression such as `(c1)` or `c1 && c2` - * where `cn` are constants we still consider the `cn`s to be a constant roots, even though their parent - * expression is also constant. - */ - private predicate constRoot(Expr root) { - exists(Expr c | + private predicate constantRoot(Go::Expr root) { + exists(Go::Expr c | c.isConst() and - not c.getParent().(Expr).isConst() and - root = stripStructural(c) + not c.getParent().(Go::Expr).isConst() and + root = c.stripParens() ) } - /** - * Strips off any control-flow structural components from `e`. - */ - private Expr stripStructural(Expr e) { - if isControlFlowStructural(e) then result = stripStructural(e.getAChildExpr()) else result = e + private predicate insideConstantRoot(Go::AstNode node) { + constantRoot(node.getParent()) + or + insideConstantRoot(node.getParent()) } - private class ControlFlowTree extends AstNode { - predicate firstNode(ControlFlow::Node first) { none() } + private predicate inArrayLength(Go::AstNode node) { + node = any(Go::ArrayTypeExpr array).getLength() + or + inArrayLength(node.getParent()) + } - predicate lastNode(ControlFlow::Node last, Completion cmpl) { - // propagate abnormal completion from children - lastNode(this.getAChild(), last, cmpl) and - not cmpl.isNormal() - } + /** Provides an implementation of the AST signature for Go. */ + private module Ast implements CfgLib::AstSig { + class AstNode = Go::AstNode; /** - * Holds if `succ` is a successor of `pred`, ignoring the execution of any - * deferred functions when a function ends. + * Holds if `e` is excluded from ordinary AST child traversal by `getChild`. + * This does not exclude `e` from the CFG entirely: specialized accessors and + * explicit control-flow steps can still use it, for example as a type-switch + * pattern or a select-receive assignment target. */ - pragma[nomagic] - predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - exists(int i | - lastNode(this.getChildTreeRanked(i), pred, normalCompletion()) and - firstNode(this.getChildTreeRanked(i + 1), succ) - ) - } - - /** Holds if `succ` is a successor of `pred`. */ - predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { this.succ0(pred, succ) } - - final ControlFlowTree getChildTreeRanked(int i) { - exists(int j | - result = this.getChildTree(j) and - j = rank[i + 1](int k | exists(this.getChildTree(k))) - ) - } - - ControlFlowTree getFirstChildTree() { result = this.getChildTreeRanked(0) } - - ControlFlowTree getLastChildTree() { - result = max(ControlFlowTree ch, int j | ch = this.getChildTree(j) | ch order by j) - } - - ControlFlowTree getChildTree(int i) { none() } - } - - private class AtomicTree extends ControlFlowTree { - ControlFlow::Node nd; - Completion cmpl; - - AtomicTree() { - exists(Expr e | - e = this and - e.isConst() and - nd = mkExprOrSkipNode(this) - | - if e.isPlatformIndependentConstant() and exists(e.getBoolValue()) - then cmpl = Bool(e.getBoolValue()) - else cmpl = Done() - ) + private predicate skipCfg(AstNode e) { + e instanceof Go::TypeExpr and not e instanceof Go::FuncTypeExpr or - this instanceof Ident and - not this.(Expr).isConst() and - nd = mkExprOrSkipNode(this) and - cmpl = Done() + e = any(Go::FieldDecl f).getTag() or - this instanceof BreakStmt and - nd = MkSkipNode(this) and - cmpl = Break(BranchTarget::of(this)) + e instanceof Go::KeyValueExpr and not e = any(Go::CompositeLit lit).getAnElement() or - this instanceof ContinueStmt and - nd = MkSkipNode(this) and - cmpl = Continue(BranchTarget::of(this)) + e = any(Go::SelectorExpr sel).getSelector() or - this instanceof Decl and - nd = MkSkipNode(this) and - cmpl = Done() + e = any(Go::StructLit sl).getKey(_) or - this instanceof EmptyStmt and - nd = MkSkipNode(this) and - cmpl = Done() + e instanceof Go::Ident and not e instanceof Go::ReferenceExpr or - this instanceof FallthroughStmt and - nd = MkSkipNode(this) and - cmpl = Fallthrough() + e instanceof Go::SelectorExpr and not e instanceof Go::ReferenceExpr or - this instanceof FuncLit and - nd = MkExprNode(this) and - cmpl = Done() + e instanceof Go::ReferenceExpr and + not e.(Go::ReferenceExpr).isRvalue() and + not e instanceof Go::SelectorExpr and + not e = any(Go::SelectorExpr sel).getBase() and + not e instanceof Go::IndexExpr and + not e = any(Go::IndexExpr idx).getBase() and + not e = any(Go::IndexExpr idx).getIndex() or - this instanceof PlainBlock and - nd = MkSkipNode(this) and - cmpl = Done() + e instanceof Go::CommentGroup or - this instanceof SelectorExpr and - not this.(SelectorExpr).getBase() instanceof ValueExpr and - nd = mkExprOrSkipNode(this) and - cmpl = Done() + e instanceof Go::Comment or - this instanceof GenericFunctionInstantiationExpr and - nd = MkExprNode(this) and - cmpl = Done() - } - - override predicate firstNode(ControlFlow::Node first) { first = nd } - - override predicate lastNode(ControlFlow::Node last, Completion c) { last = nd and c = cmpl } - } - - abstract private class PostOrderTree extends ControlFlowTree { - abstract ControlFlow::Node getNode(); - - Completion getCompletion() { result = Done() } - - override predicate firstNode(ControlFlow::Node first) { - firstNode(this.getFirstChildTree(), first) + e = any(Go::ImportSpec is).getPathExpr() or - not exists(this.getChildTree(_)) and - first = this.getNode() - } - - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - super.lastNode(last, cmpl) + inArrayLength(e) or - last = this.getNode() and cmpl = this.getCompletion() - } - - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - super.succ0(pred, succ) + // The shared switch model wires control flow directly from the switch to + // its case clauses (in control-flow order) and between cases, so the + // enclosing block must not introduce its own nodes or default + // left-to-right sequencing of the case clauses. + e = any(Go::SwitchStmt sw).getBody() or - lastNode(this.getLastChildTree(), pred, normalCompletion()) and - succ = this.getNode() - } - } - - abstract private class PreOrderTree extends ControlFlowTree { - abstract ControlFlow::Node getNode(); - - override predicate firstNode(ControlFlow::Node first) { first = this.getNode() } - - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - super.lastNode(last, cmpl) - or - lastNode(this.getLastChildTree(), last, cmpl) + // The test statement of a type switch (`y := x.(type)` or the bare + // `x.(type)` expression statement) is transparent: the shared switch + // model evaluates the underlying type-assertion expression directly as + // the switch expression (see `Switch.getExpr`), so the wrapping + // statement must not introduce its own assignment or expression nodes. + e = any(Go::TypeSwitchStmt ts).getTest() or - not exists(this.getChildTree(_)) and - last = this.getNode() and - cmpl = Done() + // The strict sub-expressions of a constant expression are not evaluated + // at run time, so they must not get their own evaluation nodes. + insideConstantRoot(e.(Go::Expr)) } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - super.succ0(pred, succ) - or - pred = this.getNode() and - firstNode(this.getFirstChildTree(), succ) - } - } - - private class WrapperTree extends ControlFlowTree { - WrapperTree() { - this instanceof ConstDecl or - this instanceof DeclStmt or - this instanceof ExprStmt or - this instanceof KeyValueExpr or - this instanceof LabeledStmt or - this instanceof ParenExpr or - this instanceof PlainBlock or - this instanceof VarDecl + AstNode getChild(AstNode n, int index) { + ( + not n instanceof Go::FuncDef and + not n instanceof Go::ImportDecl and + not n instanceof Go::TypeDecl and + not skipCfg(n) and + result = n.getChild(index) + or + exists(Go::Assignment assgn, Go::Expr lhs | + n = assgn and lhs = assgn.getLhs(_) and lhs = n.getChild(index) and skipCfg(lhs) + | + result = lhs.(Go::StarExpr).getBase() + or + result = lhs.(Go::DerefExpr).getOperand() + ) + or + // The body block of a switch (expression or type) is transparent (see + // `skipCfg`), so it is not itself a child and contributes no children. + // Expose the case clauses directly as children of the switch instead, + // so that the AST child chain stays connected for abrupt-completion + // propagation (e.g. a panicking call in a case body reaching the + // enclosing function's exceptional exit). + result = n.(Go::SwitchStmt).getBody().getChild(index) + or + // The type-switch test statement is transparent (see `skipCfg`), so + // expose the underlying type-assertion expression directly as a child + // of the type switch, keeping the AST child chain connected. + result = n.(Go::TypeSwitchStmt).getExpr() and index = 1 + ) and + not skipCfg(result) } - override predicate firstNode(ControlFlow::Node first) { - firstNode(this.getFirstChildTree(), first) + class Callable extends AstNode { + Callable() { + exists(this.(Go::FuncDef).getBody()) + or + exists(this.(Go::File).getADecl()) + } } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - super.lastNode(last, cmpl) - or - lastNode(this.getLastChildTree(), last, cmpl) + AstNode callableGetBody(Callable c) { + result = c.(Go::FuncDef).getBody() or - exists(LoopStmt ls | this = ls.getBody() | - lastNode(this, last, Continue(BranchTarget::of(ls))) and - cmpl = Done() - ) + result = c.(Go::File) } - override ControlFlowTree getChildTree(int i) { - i = 0 and result = this.(DeclStmt).getDecl() - or - i = 0 and result = this.(ExprStmt).getExpr() - or - result = this.(GenDecl).getSpec(i) - or - exists(KeyValueExpr kv | kv = this | - not kv.getLiteral() instanceof StructLit and - i = 0 and - result = kv.getKey() - or - i = 1 and result = kv.getValue() - ) - or - i = 0 and result = this.(LabeledStmt).getStmt() - or - i = 0 and result = this.(ParenExpr).getExpr() - or - result = this.(PlainBlock).getStmt(i) - } - } + class Parameter extends AstNode { + Parameter() { this = any(Go::Parameter p).getDeclaration() } - private class AssignmentTree extends ControlFlowTree { - AssignmentTree() { - this instanceof Assignment or - this instanceof ValueSpec - } + AstNode getPattern() { result = this } - Expr getLhs(int i) { - result = this.(Assignment).getLhs(i) or - result = this.(ValueSpec).getNameExpr(i) + Expr getDefaultValue() { none() } } - int getNumLhs() { - result = this.(Assignment).getNumLhs() or - result = this.(ValueSpec).getNumName() + Parameter callableGetParameter(Callable c, int index) { + result = c.(Go::FuncDef).getParameter(index).getDeclaration() } - Expr getRhs(int i) { - result = this.(Assignment).getRhs(i) or - result = this.(ValueSpec).getInit(i) + cached + Callable getEnclosingCallable(AstNode node) { + result = node.getEnclosingFunction() + or + not exists(node.getEnclosingFunction()) and + result = node.getFile() } - int getNumRhs() { - result = this.(Assignment).getNumRhs() or - result = this.(ValueSpec).getNumInit() - } + class Stmt = Go::Stmt; - predicate isExtractingAssign() { this.getNumRhs() = 1 and this.getNumLhs() > 1 } + class LabeledStmt = Go::LabeledStmt; - override predicate firstNode(ControlFlow::Node first) { - not this instanceof RecvStmt and - firstNode(this.getLhs(0), first) - } + class Expr = Go::Expr; - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) - or - ( - last = max(int i | | this.epilogueNode(i) order by i) - or - not exists(this.epilogueNode(_)) and - lastNode(this.getLastSubExprInEvalOrder(), last, normalCompletion()) - ) and - cmpl = Done() - } + class BlockStmt extends Go::BlockStmt { + BlockStmt() { + not this = any(Go::FuncDef fd).getBody() and + not this = any(Go::SwitchStmt sw).getBody() and + not this = any(Go::SelectStmt sel).getBody() + } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - ControlFlowTree.super.succ0(pred, succ) - or - exists(int i | lastNode(this.getLhs(i), pred, normalCompletion()) | - firstNode(this.getLhs(i + 1), succ) - or - not this instanceof RecvStmt and - i = this.getNumLhs() - 1 and - ( - firstNode(this.getRhs(0), succ) - or - not exists(this.getRhs(_)) and - succ = this.epilogueNodeRanked(0) - ) - ) - or - exists(int i | - lastNode(this.getRhs(i), pred, normalCompletion()) and - firstNode(this.getRhs(i + 1), succ) - ) - or - not this instanceof RecvStmt and - lastNode(this.getRhs(this.getNumRhs() - 1), pred, normalCompletion()) and - succ = this.epilogueNodeRanked(0) - or - exists(int i | - pred = this.epilogueNodeRanked(i) and - succ = this.epilogueNodeRanked(i + 1) - ) + Stmt getLastStmt() { + exists(int last | result = this.getStmt(last) and not exists(this.getStmt(last + 1))) + } } - ControlFlow::Node epilogueNodeRanked(int i) { - exists(int j | - result = this.epilogueNode(j) and - j = rank[i + 1](int k | exists(this.epilogueNode(k))) - ) - } + class ExprStmt extends Stmt instanceof Go::ExprStmt { + // The `x.(type)` test statement of a type switch is transparent (see + // `skipCfg`): the shared switch model evaluates the underlying + // type-assertion expression directly as the switch expression. It must + // therefore not be treated as an ordinary expression statement, whose + // value would otherwise be propagated from the expression to the + // statement (creating a spurious flow into the transparent wrapper). + ExprStmt() { not this = any(Go::TypeSwitchStmt ts).getTest() } - private Expr getSubExprInEvalOrder(int evalOrder) { - if evalOrder < this.getNumLhs() - then result = this.getLhs(evalOrder) - else result = this.getRhs(evalOrder - this.getNumLhs()) + Expr getExpr() { result = Go::ExprStmt.super.getExpr() } } - private Expr getLastSubExprInEvalOrder() { - result = max(int i | | this.getSubExprInEvalOrder(i) order by i) - } + class IfStmt = Go::IfStmt; - private ControlFlow::Node epilogueNode(int i) { - i = -1 and - result = MkCompoundAssignRhsNode(this) - or - exists(int j | - result = MkExtractNode(this, j) and - i = 2 * j - or - result = MkZeroInitNode(any(ValueEntity v | this.getLhs(j) = v.getDeclaration())) and - i = 2 * j - or - result = MkAssignNode(this, j) and - i = 2 * j + 1 - ) - } - } + AstNode getIfInit(IfStmt ifstmt) { result = ifstmt.(Go::IfStmt).getInit() } + + class LoopStmt = Go::LoopStmt; - private class BinaryExprTree extends PostOrderTree, BinaryExpr { - override ControlFlow::Node getNode() { result = MkExprNode(this) } + class WhileStmt extends LoopStmt { + WhileStmt() { none() } - private predicate equalityTestMayPanic() { - this instanceof EqualityTestExpr and - exists(Type t | - t = this.getAnOperand().getType().getUnderlyingType() and - ( - t instanceof InterfaceType or // panic due to comparison of incomparable interface values - t instanceof StructType or // may contain an interface-typed field - t instanceof ArrayType // may be an array of interface values - ) - ) + Expr getCondition() { none() } } - override Completion getCompletion() { - result = PostOrderTree.super.getCompletion() - or - // runtime panic due to division by zero or comparison of incomparable interface values - (this instanceof DivExpr or this.equalityTestMayPanic()) and - not this.(Expr).isConst() and - result = Panic() - } + class DoStmt extends LoopStmt { + DoStmt() { none() } - override ControlFlowTree getChildTree(int i) { - i = 0 and result = this.getLeftOperand() - or - i = 1 and result = this.getRightOperand() + Expr getCondition() { none() } } - } - private class LogicalBinaryExprTree extends BinaryExprTree, LogicalBinaryExpr { - boolean shortCircuit; + class UntilStmt extends LoopStmt { + UntilStmt() { none() } - LogicalBinaryExprTree() { - this instanceof LandExpr and shortCircuit = false - or - this instanceof LorExpr and shortCircuit = true + Expr getCondition() { none() } } - private ControlFlow::Node getGuard(boolean outcome) { - result = MkConditionGuardNode(this.getLeftOperand(), outcome) - } + class ForStmt extends LoopStmt instanceof Go::ForStmt { + AstNode getInit(int index) { index = 0 and result = this.(Go::ForStmt).getInit() } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - lastNode(this.getAnOperand(), last, cmpl) and - not cmpl.isNormal() - or - if isCond(this) - then ( - last = this.getGuard(shortCircuit) and - cmpl = Bool(shortCircuit) - or - lastNode(this.getRightOperand(), last, cmpl) - ) else ( - last = MkExprNode(this) and - cmpl = Done() - ) - } + Expr getCondition() { result = this.(Go::ForStmt).getCond() } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - exists(Completion lcmpl | - lastNode(this.getLeftOperand(), pred, lcmpl) and - succ = this.getGuard(lcmpl.getOutcome()) - ) - or - pred = this.getGuard(shortCircuit.booleanNot()) and - firstNode(this.getRightOperand(), succ) - or - not isCond(this) and - ( - pred = this.getGuard(shortCircuit) and - succ = MkExprNode(this) - or - exists(Completion rcmpl | - lastNode(this.getRightOperand(), pred, rcmpl) and - rcmpl.isNormal() and - succ = MkExprNode(this) - ) - ) + AstNode getUpdate(int index) { index = 0 and result = this.(Go::ForStmt).getPost() } } - } - private class CallExprTree extends PostOrderTree, CallExpr { - private predicate isSpecial() { - this = any(DeferStmt defer).getCall() or - this = any(GoStmt go).getCall() - } + class ForEachStmt extends LoopStmt instanceof Go::RangeStmt { + Expr getVariable() { result = this.(Go::RangeStmt).getPattern() } - override ControlFlow::Node getNode() { - not this.isSpecial() and - result = MkExprNode(this) + Expr getCollection() { result = this.(Go::RangeStmt).getDomain() } } - override Completion getCompletion() { - (not exists(this.getTarget()) or this.getTarget().mayReturnNormally()) and - result = Done() - or - (not exists(this.getTarget()) or this.getTarget().mayPanic()) and - result = Panic() - } + class BreakStmt = Go::BreakStmt; - override ControlFlowTree getChildTree(int i) { - i = 0 and result = this.getCalleeExpr() - or - result = this.getArgument(i - 1) and - // calls to `make` and `new` can have type expressions as arguments - not result instanceof TypeExpr - } + class ContinueStmt = Go::ContinueStmt; - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - // interpose implicit argument destructuring nodes between last argument - // and call itself; this is for cases like `f(g())` where `g` has multiple - // results - exists(ControlFlow::Node mid | PostOrderTree.super.succ0(pred, mid) | - if mid = this.getNode() then succ = this.getEpilogueNode(0) else succ = mid - ) - or - exists(int i | - pred = this.getEpilogueNode(i) and - succ = this.getEpilogueNode(i + 1) - ) - } + class GotoStmt = Go::GotoStmt; - private ControlFlow::Node getEpilogueNode(int i) { - result = MkExtractNode(this, i) - or - i = max(int j | exists(MkExtractNode(this, j))) + 1 and - result = this.getNode() - or - not exists(MkExtractNode(this, _)) and - i = 0 and - result = this.getNode() + class ReturnStmt = Go::ReturnStmt; + + class Throw extends AstNode { + Throw() { none() } + + Expr getExpr() { none() } } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - PostOrderTree.super.lastNode(last, cmpl) - or - this.isSpecial() and - lastNode(this.getLastChildTree(), last, cmpl) + class TryStmt extends Stmt { + TryStmt() { none() } + + AstNode getBody(int index) { none() } + + CatchClause getCatch(int index) { none() } + + Stmt getFinally() { none() } } - } - private class CaseClauseTree extends ControlFlowTree, CaseClause { - private ControlFlow::Node getExprStart(int i) { - firstNode(this.getExpr(i), result) - or - this.getExpr(i) instanceof TypeExpr and - result = MkCaseCheckNode(this, i) + class CatchClause extends AstNode { + CatchClause() { none() } + + AstNode getPattern() { none() } + + AstNode getVariable() { none() } + + Expr getCondition() { none() } + + Stmt getBody() { none() } } - ControlFlow::Node getExprEnd(int i, Boolean outcome) { - exists(Expr e | e = this.getExpr(i) | - result = MkConditionGuardNode(e, outcome) - or - not exists(MkConditionGuardNode(e, _)) and - result = MkCaseCheckNode(this, i) - ) + class Switch extends AstNode instanceof Go::SwitchStmt { + Expr getExpr() { result = this.(Go::SwitchStmt).getExpr() } + + Case getCase(int index) { result = this.(Go::SwitchStmt).getCase(index) } + + Stmt getStmt(int index) { + // Go nests each case clause's body statements under the clause rather + // than in a flat list, so we expose a flattened view in which every + // case clause is immediately followed by its own body statements. This + // lets the shared library compute the body of a case as the statements + // between it and the next clause. + result = + rank[index + 1](Go::Stmt s, int caseIdx, int inner | + switchFlatItem(this, s, caseIdx, inner) + | + s order by caseIdx, inner + ) + } } - private ControlFlow::Node getBodyStart() { - firstNode(this.getStmt(0), result) or result = MkSkipNode(this) + class Case extends AstNode { + Case() { this = any(Go::SwitchStmt sw).getACase() } + + AstNode getPattern(int index) { result = this.(Go::CaseClause).getExpr(index) } + + Expr getGuard() { none() } + + AstNode getBody() { none() } } - override predicate firstNode(ControlFlow::Node first) { - first = this.getExprStart(0) - or - not exists(this.getAnExpr()) and - first = MkTypeSwitchImplicitVariable(this, _, _) - or - not exists(this.getAnExpr()) and - not exists(MkTypeSwitchImplicitVariable(this, _, _)) and - first = this.getBodyStart() + class DefaultCase extends Case { + DefaultCase() { not exists(this.(Go::CaseClause).getAnExpr()) } } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) - or - // TODO: shouldn't be here - last = this.getExprEnd(this.getNumExpr() - 1, false) and - cmpl = Bool(false) - or - last = MkSkipNode(this) and - cmpl = Done() - or - lastNode(this.getStmt(this.getNumStmt() - 1), last, cmpl) + AstNode getSwitchInit(Switch switch) { result = switch.(Go::SwitchStmt).getInit() } + + predicate fallsThrough(Case c) { + // Go has no implicit fall-through between case clauses; an explicit + // `fallthrough` statement is required. + c.(Go::CaseClause).getStmt(max(int i | exists(c.(Go::CaseClause).getStmt(i)))) instanceof + Go::FallthroughStmt } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - ControlFlowTree.super.succ0(pred, succ) - or - pred = MkTypeSwitchImplicitVariable(this, _, _) and - succ = this.getBodyStart() + /** + * Holds if `s` is the flattened body element at position (`caseIdx`, + * `inner`) of switch `sw`: either the `caseIdx`-th case clause itself (with + * `inner` = -1) or its `inner`-th body statement. + */ + private predicate switchFlatItem(Go::SwitchStmt sw, Go::Stmt s, int caseIdx, int inner) { + s = sw.getCase(caseIdx) and inner = -1 or - exists(int i | - lastNode(this.getExpr(i), pred, normalCompletion()) and - succ = MkCaseCheckNode(this, i) - or - // visit guard node if there is one - pred = MkCaseCheckNode(this, i) and - succ = this.getExprEnd(i, _) and - succ != pred // this avoids self-loops if there isn't a guard node - or - pred = this.getExprEnd(i, false) and - succ = this.getExprStart(i + 1) - or - this.isPassingEdge(i, pred, succ, _) - ) + s = sw.getCase(caseIdx).getStmt(inner) } - predicate isPassingEdge(int i, ControlFlow::Node pred, ControlFlow::Node succ, Expr testExpr) { - pred = this.getExprEnd(i, true) and - testExpr = this.getExpr(i) and - ( - succ = MkTypeSwitchImplicitVariable(this, _, _) - or - not exists(MkTypeSwitchImplicitVariable(this, _, _)) and - succ = this.getBodyStart() - ) - } + class ConditionalExpr extends Expr { + ConditionalExpr() { none() } - override ControlFlowTree getChildTree(int i) { result = this.getStmt(i) } - } + Expr getCondition() { none() } - private class CommClauseTree extends ControlFlowTree, CommClause { - override predicate firstNode(ControlFlow::Node first) { firstNode(this.getComm(), first) } + Expr getThen() { none() } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) - or - last = MkSkipNode(this) and - cmpl = Done() - or - lastNode(this.getStmt(this.getNumStmt() - 1), last, cmpl) + Expr getElse() { none() } } - override ControlFlowTree getChildTree(int i) { result = this.getStmt(i) } - } + class BinaryExpr = Go::BinaryExpr; - private class CompositeLiteralTree extends ControlFlowTree, CompositeLit { - private ControlFlow::Node getElementInit(int i) { - result = MkLiteralElementInitNode(this.getElement(i)) + // Constant short-circuiting operators are folded at compile time and their + // operands are not evaluated at run time, so they are not treated as + // logical operators here (which would give their operands their own + // evaluation nodes via `getLeftOperand`/`getRightOperand`/`getOperand`, + // bypassing `skipCfg`). Instead they are handled as constant-root leaf + // value nodes (see `postOrInOrder`). + class LogicalAndExpr extends Go::LandExpr { + LogicalAndExpr() { not this.isConst() } } - private ControlFlow::Node getElementStart(int i) { - exists(Expr elt | elt = this.getElement(i) | - result = MkImplicitLiteralElementIndex(elt) - or - (elt instanceof KeyValueExpr or this instanceof StructLit) and - firstNode(this.getElement(i), result) - ) + class LogicalOrExpr extends Go::LorExpr { + LogicalOrExpr() { not this.isConst() } } - override predicate firstNode(ControlFlow::Node first) { first = MkExprNode(this) } + class NullCoalescingExpr extends BinaryExpr { + NullCoalescingExpr() { none() } + } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) - or - last = this.getElementInit(this.getNumElement() - 1) and - cmpl = Done() - or - not exists(this.getElement(_)) and - last = MkExprNode(this) and - cmpl = Done() + class UnaryExpr = Go::UnaryExpr; + + class LogicalNotExpr extends Go::NotExpr { + LogicalNotExpr() { not this.isConst() } } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - this.firstNode(pred) and - succ = this.getElementStart(0) - or - exists(int i | - pred = MkImplicitLiteralElementIndex(this.getElement(i)) and - firstNode(this.getElement(i), succ) - or - lastNode(this.getElement(i), pred, normalCompletion()) and - succ = this.getElementInit(i) + class BooleanLiteral extends Expr { + boolean val; + + BooleanLiteral() { + this.(Go::Ident).getName() = "true" and val = true or - pred = this.getElementInit(i) and - succ = this.getElementStart(i + 1) - ) + this.(Go::Ident).getName() = "false" and val = false + } + + boolean getValue() { result = val } } - } - private class ConversionExprTree extends PostOrderTree, ConversionExpr { - override Completion getCompletion() { - // conversions of a slice to an array pointer are the only kind that may panic - this.getType().(PointerType).getBaseType() instanceof ArrayType and - result = Panic() - or - result = Done() + class Assignment extends BinaryExpr { + Assignment() { none() } } - override ControlFlow::Node getNode() { result = MkExprNode(this) } + class AssignExpr extends Assignment { + AssignExpr() { none() } + } - override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getOperand() } - } + class CompoundAssignment extends Assignment { + CompoundAssignment() { none() } + } + + class AssignLogicalAndExpr extends CompoundAssignment { + AssignLogicalAndExpr() { none() } + } - private class DeferStmtTree extends PostOrderTree, DeferStmt { - override ControlFlow::Node getNode() { result = MkDeferNode(this) } + class AssignLogicalOrExpr extends CompoundAssignment { + AssignLogicalOrExpr() { none() } + } - override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getCall() } - } + class AssignNullCoalescingExpr extends CompoundAssignment { + AssignNullCoalescingExpr() { none() } + } - private class FuncDeclTree extends PostOrderTree, FuncDecl { - override ControlFlow::Node getNode() { result = MkFuncDeclNode(this) } + class PatternMatchExpr extends Expr { + PatternMatchExpr() { none() } - override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getNameExpr() } + Expr getExpr() { none() } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - // override to prevent panic propagation out of function declarations - last = this.getNode() and cmpl = Done() + AstNode getPattern() { none() } } } - private class GoStmtTree extends PostOrderTree, GoStmt { - override ControlFlow::Node getNode() { result = MkGoNode(this) } + /** Predicates shared by the two stages of Go CFG construction. */ + private module Input1 implements Cfg0::InputSig1 { + predicate cfgCachedStageRef() { CfgCachedStage::ref() } - override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getCall() } - } + class CallableContext = Void; - private class IfStmtTree extends ControlFlowTree, IfStmt { - private ControlFlow::Node getGuard(boolean outcome) { - result = MkConditionGuardNode(this.getCond(), outcome) - } + class Label extends string { + Label() { this = any(Go::LabeledStmt ls).getLabel() } - override predicate firstNode(ControlFlow::Node first) { - firstNode(this.getInit(), first) - or - not exists(this.getInit()) and - firstNode(this.getCond(), first) + string toString() { result = this } } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) + predicate hasLabel(Ast::AstNode n, Label l) { + l = n.(Go::LabeledStmt).getLabel() or - lastNode(this.getThen(), last, cmpl) + l = n.(Go::BreakStmt).getLabel() or - lastNode(this.getElse(), last, cmpl) + l = n.(Go::ContinueStmt).getLabel() or - not exists(this.getElse()) and - last = this.getGuard(false) and - cmpl = Done() + l = n.(Go::GotoStmt).getLabel() + } + + predicate preOrderExpr(Ast::Expr e) { + // The call of a `defer` statement is not invoked at the statement + // itself; its callee expression and arguments are evaluated in place, + // but the call is only invoked later, at function exit (modeled by the + // `defer-invoke` node and the final-stage defer steps). Marking it as + // pre-order means no in-order "invocation" node (and hence no inline + // exceptional-exit edge) is created at the `defer` statement. + e = any(Go::DeferStmt s).getCall() } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - lastNode(this.getInit(), pred, normalCompletion()) and - firstNode(this.getCond(), succ) + predicate postOrInOrder(Ast::AstNode n) { + // References other than plain identifiers need an in-order value node + // even when they have no CFG children. Basic literals, function literals, + // and plain identifiers instead evaluate at their before node. + n instanceof Go::ReferenceExpr and not n instanceof Go::Ident or - exists(Completion condCmpl | - lastNode(this.getCond(), pred, condCmpl) and - succ = MkConditionGuardNode(this.getCond(), condCmpl.getOutcome()) - ) + // An empty composite literal (e.g. `T{}`) has no CFG children, so it too + // needs an explicit in-order (allocation) node. + n instanceof Go::CompositeLit or - pred = this.getGuard(true) and - firstNode(this.getThen(), succ) + // A constant expression is folded at compile time and its sub-expressions + // are not evaluated (they are pruned by `skipCfg`), so the constant root + // has no CFG children. Except for basic literals and identifiers, it + // needs an explicit in-order node to remain a single value-producing + // leaf (e.g. `unsafe.Sizeof(test())`, `1 << 10`, or `!d` for constant `d`). + constantRoot(n) and not n instanceof Go::BasicLit and not n instanceof Go::Ident or - pred = this.getGuard(false) and - firstNode(this.getElse(), succ) - } - } - - private class IndexExprTree extends ControlFlowTree, IndexExpr { - override predicate firstNode(ControlFlow::Node first) { firstNode(this.getBase(), first) } - - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) + // Statements/declarations that compute a value or perform an operation and + // are not among the statements the shared library makes post-order by + // default. + n instanceof Go::DeferStmt + or + n instanceof Go::GoStmt + or + n instanceof Go::CompoundAssignStmt or - // panic due to `nil` dereference - last = MkImplicitDeref(this.getBase()) and - cmpl = Panic() + n instanceof Go::IncDecStmt or - last = mkExprOrSkipNode(this) and - (cmpl = Done() or cmpl = Panic()) + n instanceof Go::SelectStmt + or + n instanceof Go::SendStmt } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - lastNode(this.getBase(), pred, normalCompletion()) and + predicate additionalNode(Ast::AstNode n, string tag, NormalSuccessor t) { + t instanceof DirectSuccessor and ( - succ = MkImplicitDeref(this.getBase()) + // Assignment write nodes: one per LHS + exists(int i | + ( + notBlankIdent(n.(Go::Assignment).getLhs(i)) and + // A compound assignment (`x += y`) performs its write at its + // post-order operation node rather than emitting a separate + // `assign:i` write node (see + // `IR::EvalCompoundAssignRhsInstruction`). + not n instanceof Go::CompoundAssignStmt and + // The `y := x.(type)` test statement of a type switch is transparent + // (see `skipCfg`): the per-case implicit variables are written at the + // case match nodes (see `IR::TypeSwitchImplicitVariableInstruction`), + // so the guard itself emits no assignment write node. + not n = any(Go::TypeSwitchStmt ts).getAssign() and + // A tuple-destructuring assignment (`x, y = f()`) folds its per-target + // write into the `extract` node (see `IR::ExtractWriteInstruction`). + not extractNodeCondition(n, i) + or + // A `ValueSpec` without an initializer is written by its `zero-init` + // node directly (see `IR::EvalImplicitInitInstruction`), and a + // tuple-destructuring declaration (`var x, y = f()`) is written by its + // `extract` node; only specs with a per-name initializer emit + // `assign:i`. + notBlankIdent(n.(Go::ValueSpec).getNameExpr(i)) and + exists(n.(Go::ValueSpec).getAnInit()) and + not extractNodeCondition(n, i) + ) and + tag = "assign:" + i.toString() + ) + or + // Get the next key-value pair produced by a `range` statement. + n instanceof Go::RangeElementExpr and tag = "next" + or + // Tuple extraction nodes + exists(int i | + extractNodeCondition(n, i) and + tag = "extract:" + i.toString() + ) + or + // Zero initialization (on the ValueSpec) + exists(int i, Go::ValueSpec spec | + n = spec and + not exists(spec.getAnInit()) and + exists(spec.getNameExpr(i)) and + tag = "zero-init:" + i.toString() + ) + or + // Result write nodes in return statements + exists(int i, Go::ReturnStmt ret | + n = ret and + exists(ret.getEnclosingFunction().getResultVar(i)) and + exists(ret.getAnExpr()) and + tag = "result-write:" + i.toString() + ) + or + // Result read nodes (on the function body) + exists(int i, Go::FuncDef fd | + n = fd.getBody() and + exists(fd.getBody()) and + exists(fd.getResultVar(i)) and + tag = "result-read:" + i.toString() + ) + or + // Result-variable zero-initialization (on the function body). This single + // node computes the zero value and writes it to the result variable (see + // `IR::EvalImplicitInitInstruction`); it is the same kind of node as the + // `zero-init` of an uninitialised local variable. + exists(int i, Go::FuncDef fd | + n = fd.getBody() and + exists(fd.getBody()) and + exists(fd.getResultVar(i)) and + tag = "zero-init:" + i.toString() + ) + or + // Implicit deref + implicitDerefCondition(n) and tag = "implicit-deref" + or + // Literal element initialization + n = any(Go::CompositeLit lit).getAnElement() and + tag = "lit-init" + or + // Implicit field selection for promoted fields + exists(int i, Go::Field implicitField | + implicitFieldSelection(n, i, implicitField) and + tag = "implicit-field:" + i.toString() + ) + or + // Deferred-call invocation node, placed at function exit by the final-stage defer steps + n = any(Go::DeferStmt s).getCall() and tag = "defer-invoke" + or + n instanceof Go::DeferStmt and tag = "catch-defer-panic" + or + not n instanceof Go::DeferStmt and + mayPanic(n) and + mayDeferParent(n) and + tag = "catch-panic" or - not exists(MkImplicitDeref(this.getBase())) and - firstNode(this.getIndex(), succ) + mayReturn(n) and mayDeferParent(n) and tag = "catch-return" + ) + } + + /** Helper: condition for MkExtractNode */ + private predicate extractNodeCondition(Ast::AstNode s, int i) { + exists(Go::Assignment assgn | + s = assgn and + exists(assgn.getRhs()) and + assgn.getNumLhs() > 1 and + exists(assgn.getLhs(i)) + ) + or + exists(Go::ValueSpec spec | + s = spec and + exists(spec.getInit()) and + spec.getNumName() > 1 and + exists(spec.getNameExpr(i)) + ) + or + exists(Go::RangeElementExpr p | s = p | + exists(p.getKey()) and i = 0 + or + exists(p.getValue()) and i = 1 ) or - pred = MkImplicitDeref(this.getBase()) and - firstNode(this.getIndex(), succ) + exists(Go::ReturnStmt ret, Go::SignatureType rettp | + s = ret and + exists(ret.getExpr()) and + rettp = ret.getEnclosingFunction().getType() and + rettp.getNumResult() > 1 and + exists(rettp.getResultType(i)) + ) or - lastNode(this.getIndex(), pred, normalCompletion()) and - succ = mkExprOrSkipNode(this) + exists(Go::CallExpr outer, Go::CallExpr inner | s = outer | + inner = outer.getArgument(0).stripParens() and + outer.getNumArgument() = 1 and + exists(inner.getType().(Go::TupleType).getComponentType(i)) + ) } - } - - private class LoopTree extends ControlFlowTree, LoopStmt { - BranchTarget getLabel() { result = BranchTarget::of(this) } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - exists(Completion inner | lastNode(this.getBody(), last, inner) and not inner.isNormal() | - if inner = Break(this.getLabel()) - then cmpl = Done() - else ( - not inner = Continue(this.getLabel()) and - cmpl = inner + /** Helper: condition for implicit dereference */ + private predicate implicitDerefCondition(Ast::AstNode e) { + e.(Go::Expr).getType().getUnderlyingType() instanceof Go::PointerType and + ( + exists(Go::SelectorExpr sel | e = sel.getBase() | + sel = any(Go::Field f).getAReference() + or + exists(Go::Method m, Go::Type tp | + sel = m.getAReference() and + tp = m.getReceiver().getType().getUnderlyingType() and + not tp instanceof Go::PointerType + ) ) + or + e = any(Go::IndexExpr ie).getBase() + or + e = any(Go::SliceExpr se).getBase() ) } - } - private class FileTree extends ControlFlowTree, File { - FileTree() { exists(this.getADecl()) } + /** Helper: blank identifier check */ + private predicate notBlankIdent(Go::Expr e) { not e instanceof Go::BlankIdent } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { none() } + /** Holds if `e` is invoked in a newly started goroutine. */ + private predicate isGoStmtCall(Ast::AstNode e) { e = any(Go::GoStmt s).getCall() } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - ControlFlowTree.super.succ0(pred, succ) - or - pred = MkEntryNode(this) and - firstNode(this.getDecl(0), succ) + /** Helper: implicit field selection for promoted selectors */ + additional predicate implicitFieldSelection(Ast::AstNode e, int index, Go::Field implicitField) { + exists(Go::StructType baseType, Go::PromotedField child, int implicitFieldDepth | + baseType = e.(Go::PromotedSelector).getSelectedStructType() and + ( + e.(Go::PromotedSelector).refersTo(child) + or + implicitFieldSelection(e, implicitFieldDepth + 1, child) + ) + | + child = baseType.getFieldOfEmbedded(implicitField, _, implicitFieldDepth + 1, _) and + exists(Go::PromotedField explicitField, int explicitFieldDepth | + e.(Go::PromotedSelector).refersTo(explicitField) and + baseType.getFieldAtDepth(_, explicitFieldDepth) = explicitField + | + index = explicitFieldDepth - implicitFieldDepth and index > 0 + ) + ) or - exists(int i, Completion inner | lastNode(this.getDecl(i), pred, inner) | - not inner.isNormal() + exists( + Go::StructType baseType, Go::PromotedMethod method, int mDepth, int implicitFieldDepth + | + baseType = e.(Go::PromotedSelector).getSelectedStructType() and + e.(Go::PromotedSelector).refersTo(method) and + baseType.getMethodAtDepth(_, mDepth) = method and + index = mDepth - implicitFieldDepth and + index > 0 + | + method = baseType.getMethodOfEmbedded(implicitField, _, implicitFieldDepth + 1) or - i = this.getNumDecl() - 1 - ) and - succ = MkExitNode(this) - } - - override ControlFlowTree getChildTree(int i) { result = this.getDecl(i) } - } - - private class ForTree extends LoopTree, ForStmt { - private ControlFlow::Node getGuard(boolean outcome) { - result = MkConditionGuardNode(this.getCond(), outcome) - } - - override predicate firstNode(ControlFlow::Node first) { - firstNode(this.getFirstChildTree(), first) + exists(Go::PromotedField child | + child = baseType.getFieldOfEmbedded(implicitField, _, implicitFieldDepth + 1, _) and + implicitFieldSelection(e, implicitFieldDepth + 1, child) + ) + ) } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - LoopTree.super.lastNode(last, cmpl) - or - lastNode(this.getInit(), last, cmpl) and - not cmpl.isNormal() - or - lastNode(this.getCond(), last, cmpl) and - not cmpl.isNormal() + additional predicate beginAbruptCompletion( + Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c, boolean always + ) { + ast instanceof Go::CallExpr and + not isGoStmtCall(ast) and + ( + not exists(ast.(Go::CallExpr).getTarget()) or + ast.(Go::CallExpr).getTarget().mayPanic() + ) and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = false or - lastNode(this.getPost(), last, cmpl) and - not cmpl.isNormal() + ast instanceof Go::CallExpr and + ast = any(Go::DeferStmt defer).getCall() and + ( + not exists(ast.(Go::CallExpr).getTarget()) or + ast.(Go::CallExpr).getTarget().mayPanic() + ) and + n.isAdditional(ast, "defer-invoke") and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = false + or + // Calls to functions that never return normally (e.g. `os.Exit`, `log.Fatal`, + // `panic`) must suppress normal flow past the call site. We emit an `always` + // exception completion so that the shared library's default In->After step + // is suppressed. + ast instanceof Go::CallExpr and + not isGoStmtCall(ast) and + exists(Go::Function target | target = ast.(Go::CallExpr).getTarget() | + target.mustPanic() or target.mustNotReturnNormally() + ) and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = true + or + ast instanceof Go::CallExpr and + ast = any(Go::DeferStmt defer).getCall() and + exists(Go::Function target | target = ast.(Go::CallExpr).getTarget() | + target.mustPanic() or target.mustNotReturnNormally() + ) and + n.isAdditional(ast, "defer-invoke") and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = true + or + ast instanceof Go::DivExpr and + not ast.(Go::Expr).isConst() and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = false + or + ast instanceof Go::DerefExpr and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = false + or + ast instanceof Go::TypeAssertExpr and + not exists(Go::Assignment assgn | + assgn.getNumLhs() = 2 and ast = assgn.getRhs().stripParens() + ) and + not exists(Go::ValueSpec vs | vs.getNumName() = 2 and ast = vs.getInit().stripParens()) and + not exists(Go::TypeSwitchStmt ts | ast = ts.getExpr()) and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = false + or + ast instanceof Go::IndexExpr and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = false + or + ast instanceof Go::ConversionExpr and + ast.(Go::ConversionExpr).getType().(Go::PointerType).getBaseType() instanceof Go::ArrayType and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = false + } + + additional predicate endAbruptCompletion( + Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c + ) { + ast instanceof Go::DeferStmt and + n.isAdditional(ast, "catch-defer-panic") and + c.getSuccessorType() instanceof ExceptionSuccessor + or + not ast instanceof Go::DeferStmt and + mayPanic(ast) and + mayDeferParent(ast) and + n.isAdditional(ast, "catch-panic") and + c.getSuccessorType() instanceof ExceptionSuccessor + or + mayReturn(ast) and + mayDeferParent(ast) and + n.isAdditional(ast, "catch-return") and + c.getSuccessorType() instanceof ReturnSuccessor + or + // An unlabeled `break` in a communication clause body terminates the + // enclosing `select`. Labeled breaks are handled by the shared + // `LabeledStmt` logic. + exists(Go::SelectStmt sel, Go::CommClause cc | + cc = sel.getACommClause() and + ast = cc.getStmt(_) and + n.isAfter(sel) and + c.getSuccessorType() instanceof BreakSuccessor + | + not c.hasLabel(_) + ) or - last = this.getGuard(false) and - cmpl = Done() + exists(Go::FuncDef fd | + ast = fd.getBody() and + not funcHasDefer(fd) and + c.getSuccessorType() instanceof ReturnSuccessor and + // If the function has result variables, route the return completion + // through the result-read epilogue before reaching the function exit. + exists(fd.getResultVar(0)) and + n.isAdditional(fd.getBody(), "result-read:0") + ) } - override ControlFlowTree getChildTree(int i) { - i = 0 and result = this.getInit() + /** Holds if `ast` or one of its CFG children may panic. */ + private predicate mayPanic(Ast::AstNode ast) { + ast instanceof Go::CallExpr and + not ast = any(Go::DeferStmt s).getCall() and + not isGoStmtCall(ast) and + (not exists(ast.(Go::CallExpr).getTarget()) or ast.(Go::CallExpr).getTarget().mayPanic()) and + not exists(Go::Function target | target = ast.(Go::CallExpr).getTarget() | + target.mustNotReturnNormally() and not target.mustPanic() + ) or - i = 1 and result = this.getCond() + ast instanceof Go::DivExpr and not ast.(Go::Expr).isConst() or - i = 2 and result = this.getBody() + ast instanceof Go::DerefExpr or - i = 3 and result = this.getPost() + ast instanceof Go::TypeAssertExpr and + not exists(Go::Assignment assgn | + assgn.getNumLhs() = 2 and ast = assgn.getRhs().stripParens() + ) and + not exists(Go::ValueSpec vs | vs.getNumName() = 2 and ast = vs.getInit().stripParens()) and + not exists(Go::TypeSwitchStmt ts | ast = ts.getExpr()) + or + ast instanceof Go::IndexExpr or - i = 4 and result = this.getCond() + ast instanceof Go::ConversionExpr and + ast.(Go::ConversionExpr).getType().(Go::PointerType).getBaseType() instanceof Go::ArrayType or - i = 5 and result = this.getBody() + mayPanic(Ast::getChild(ast, _)) } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - exists(int i, ControlFlowTree predTree, Completion cmpl | - predTree = this.getChildTreeRanked(i) and - lastNode(predTree, pred, cmpl) and - cmpl.isNormal() - | - if predTree = this.getCond() - then succ = this.getGuard(cmpl.getOutcome()) - else firstNode(this.getChildTreeRanked(i + 1), succ) - ) + /** Holds if `ast` or one of its CFG children may return abruptly. */ + private predicate mayReturn(Ast::AstNode ast) { + ast instanceof Go::ReturnStmt or - pred = this.getGuard(true) and - firstNode(this.getBody(), succ) + mayReturn(Ast::getChild(ast, _)) } - } - private class FuncDefTree extends ControlFlowTree, FuncDef { - FuncDefTree() { exists(this.getBody()) } + /** Holds if `ast` or one of its CFG children registers a deferred call. */ + private predicate mayDefer(Ast::AstNode ast) { + ast instanceof Go::DeferStmt + or + mayDefer(Ast::getChild(ast, _)) + } - pragma[noinline] - private MkEntryNode getEntry() { result = MkEntryNode(this) } + /** Holds if the CFG parent of `ast` may register a deferred call. */ + private predicate mayDeferParent(Ast::AstNode ast) { + exists(Ast::AstNode parent | ast = Ast::getChild(parent, _) and mayDefer(parent)) + } - private Parameter getParameterRanked(int i) { - result = rank[i + 1](Parameter p, int j | p = this.getParameter(j) | p order by j) + /** Holds if `fd` contains at least one `defer` statement. */ + private predicate funcHasDefer(Go::FuncDef fd) { + exists(Go::DeferStmt s | s.getEnclosingFunction() = fd) } - private ControlFlow::Node getPrologueNode(int i) { - i = -1 and result = this.getEntry() - or - exists(int numParm, int numRes | - numParm = count(this.getParameter(_)) and - numRes = count(this.getResultVar(_)) - | - exists(int j, Parameter p | p = this.getParameterRanked(j) | - i = 2 * j and result = MkArgumentNode(p) - or - i = 2 * j + 1 and result = MkParameterInit(p) - ) - or - exists(int j, ResultVariable v | v = this.getResultVar(j) | - i = 2 * numParm + 2 * j and - result = MkZeroInitNode(v) - or - i = 2 * numParm + 2 * j + 1 and - result = MkResultInit(v) - ) - or - i = 2 * numParm + 2 * numRes and - firstNode(this.getBody(), result) - ) + /** + * Holds if `n` is the registration node of `defer` statement `s` (the + * post-order node of the statement, reached once its call's arguments have + * been evaluated). + */ + private predicate deferRegistration(PreControlFlowNode n, Go::DeferStmt s) { n.isIn(s) } + + /** + * Holds if `n` is the deferred-invocation node for `defer` statement `s`, + * which models the deferred call running at function exit. + */ + private predicate deferInvoke(PreControlFlowNode n, Go::DeferStmt s) { + n.isAdditional(s.getCall(), "defer-invoke") } - private ControlFlow::Node getEpilogueNode(int i) { - result = MkResultReadNode(this.getResultVar(i)) - or - i = count(this.getAResultVar()) and - result = MkExitNode(this) + /** Holds if invoking deferred call `s` may return normally. */ + private predicate deferInvocationMayReturnNormally(Go::DeferStmt s) { + not exists(Go::Function target | target = s.getCall().getTarget() | + target.mustPanic() or target.mustNotReturnNormally() + ) } - pragma[noinline] - private predicate firstDefer(ControlFlow::Node nd) { - exists(DeferStmt defer | - nd = MkExprNode(defer.getCall()) and - // `defer` can be the first `defer` statement executed - // there is always a predecessor node because the `defer`'s call is always - // evaluated before the defer statement itself - MkDeferNode(defer) = succ0(notDeferSucc0*(this.getEntry())) + /** Holds if invoking deferred call `s` terminates without panic unwinding. */ + private predicate deferInvocationStopsUnwinding(Go::DeferStmt s) { + exists(Go::Function target | target = s.getCall().getTarget() | + target.mustNotReturnNormally() and not target.mustPanic() ) } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { none() } + /** + * Gets a defer-free successor of `n` that is not a `defer` registration + * node. Walking this relation from a node stops at the next registration + * node, which is how the reachability gate for deferred calls is computed. + * + * This is computed over the early CFG, before deferred-invocation edges are + * added to the final CFG. + */ + private PreControlFlowNode succBeforeNextDeferRegistration(PreControlFlowNode n) { + earlySuccessor(n) = result and + not deferRegistration(result, _) + } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - exists(int i | - pred = this.getPrologueNode(i) and - succ = this.getPrologueNode(i + 1) - ) - or - exists(GotoStmt goto, LabeledStmt ls | - pred = MkSkipNode(goto) and - this = goto.getEnclosingFunction() and - this = ls.getEnclosingFunction() and - goto.getLabel() = ls.getLabel() and - firstNode(ls, succ) - ) + /** Gets a successor of `n` in the early CFG, before deferred invocations are added. */ + private PreControlFlowNode earlySuccessor(PreControlFlowNode n) { + exists(EarlyCfg2::ControlFlowNode early | early = n and result = early.getASuccessor()) + } + + /** Gets a node reachable from `start` over `succBeforeNextDeferRegistration`, reflexively. */ + private PreControlFlowNode reachableBeforeNextDeferRegistration(PreControlFlowNode start) { + result = start or - exists(int i | - pred = this.getEpilogueNode(i) and - succ = this.getEpilogueNode(i + 1) + result = succBeforeNextDeferRegistration(reachableBeforeNextDeferRegistration(start)) + } + + /** Gets the entry node of `fd`. */ + private PreControlFlowNode funcEntry(Go::FuncDef fd) { + result.(EntryNodeImpl).getEnclosingCallable() = fd + } + + /** + * Holds if `s` can be the first `defer` statement registered in `fd`, and + * hence the last to run: its registration node is reachable from the entry + * node without passing through another registration node. + */ + private predicate firstRegisteredDefer(Go::DeferStmt s, Go::FuncDef fd) { + s.getEnclosingFunction() = fd and + exists(PreControlFlowNode reg, PreControlFlowNode m | + deferRegistration(reg, s) and + m = reachableBeforeNextDeferRegistration(funcEntry(fd)) and + earlySuccessor(m) = reg ) } - override predicate succ(ControlFlow::Node pred, ControlFlow::Node succ) { - this.succ0(pred, succ) - or - exists(Completion cmpl | - lastNode(this.getBody(), pred, cmpl) and - // last node of function body can be reached without going through a `defer` statement - pred = notDeferSucc0*(this.getEntry()) + /** + * Holds if the registration node of `laterRegistered` is the next registration + * node reachable from the registration node of `earlierRegistered`. The later + * registration therefore runs immediately before the earlier one (deferred calls + * run in last-in-first-out order). + */ + private predicate nextRegisteredDefer( + Go::DeferStmt laterRegistered, Go::DeferStmt earlierRegistered + ) { + exists( + PreControlFlowNode laterRegistration, PreControlFlowNode earlierRegistration, + PreControlFlowNode m | - // panic goes directly to exit, non-panic reads result variables first - if cmpl = Panic() then succ = MkExitNode(this) else succ = this.getEpilogueNode(0) + deferRegistration(laterRegistration, laterRegistered) and + deferRegistration(earlierRegistration, earlierRegistered) and + m = reachableBeforeNextDeferRegistration(earlierRegistration) and + earlySuccessor(m) = laterRegistration ) - or - lastNode(this.getBody(), pred, _) and - exists(DeferStmt defer | defer = this.getADeferStmt() | - succ = MkExprNode(defer.getCall()) and - // the last `DeferStmt` executed before pred is this `defer` - pred = notDeferSucc0*(MkDeferNode(defer)) + } + + /** + * Holds if `n` is a normal-exit predecessor of `fd`: a `return` statement + * node, or the normal fall-through from the body's last statement. + */ + private predicate normalExitPred(PreControlFlowNode n, Go::FuncDef fd) { + exists(Ast::AstNode ast | + ast.getEnclosingFunction() = fd and n.isAdditional(ast, "catch-return") ) or - exists(DeferStmt predDefer, DeferStmt succDefer | - predDefer = this.getADeferStmt() and - succDefer = this.getADeferStmt() - | - // reversed because `defer`s are executed in LIFO order - MkDeferNode(predDefer) = nextDefer(MkDeferNode(succDefer)) and - pred = MkExprNode(predDefer.getCall()) and - succ = MkExprNode(succDefer.getCall()) + n.isAfter(getLastRankedChild(fd.getBody())) + } + + /** + * Holds if `n` is an exceptional-exit predecessor of `fd`: the in-order + * node of an operation that may panic. In Go, deferred functions run on + * panic, so these nodes must also enter the deferred-call chain. Other + * nonreturning calls, such as `os.Exit`, do not run deferred functions. + */ + private predicate exceptionalExitPred(PreControlFlowNode n, Go::FuncDef fd) { + exists(Ast::AstNode ast | + ast.getEnclosingFunction() = fd and n.isAdditional(ast, "catch-panic") ) + } + + /** + * Holds if, after running its deferred calls, `fd` should continue at + * `target` on a normal exit. For functions with result variables this is + * the start of the result-read epilogue; otherwise it is the function + * body's `After` node. + */ + private predicate deferChainExitTarget(Go::FuncDef fd, PreControlFlowNode target) { + exists(fd.getResultVar(0)) and target.isAdditional(fd.getBody(), "result-read:0") or - this.firstDefer(pred) and + not exists(fd.getResultVar(_)) and target.isAfter(fd.getBody()) + } + + additional predicate finalDeferStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::FuncDef fd | funcHasDefer(fd) | + // an exit predecessor with no active defer flows straight to the exit target + normalExitPred(n1, fd) and + n1 = reachableBeforeNextDeferRegistration(funcEntry(fd)) and + deferChainExitTarget(fd, n2) + or + // an exit predecessor flows to the invocation of the last-registered active defer + exists(Go::DeferStmt d, PreControlFlowNode reg | + deferRegistration(reg, d) and + d.getEnclosingFunction() = fd and + normalExitPred(n1, fd) and + n1 = reachableBeforeNextDeferRegistration(reg) and + deferInvoke(n2, d) + ) + or + // deferred invocations chain in last-in-first-out order + exists(Go::DeferStmt laterRegistered, Go::DeferStmt earlierRegistered | + laterRegistered.getEnclosingFunction() = fd and + nextRegisteredDefer(laterRegistered, earlierRegistered) and + not deferInvocationStopsUnwinding(laterRegistered) and + deferInvoke(n1, laterRegistered) and + deferInvoke(n2, earlierRegistered) + ) + or + // a panic in a deferred invocation continues unwinding through earlier defers + exists(Go::DeferStmt laterRegistered, Go::DeferStmt earlierRegistered | + laterRegistered.getEnclosingFunction() = fd and + nextRegisteredDefer(laterRegistered, earlierRegistered) and + not deferInvocationStopsUnwinding(laterRegistered) and + n1.isAdditional(laterRegistered, "catch-defer-panic") and + deferInvoke(n2, earlierRegistered) + ) + or + // the invocation of the first-registered (last to run) defer flows to the exit target + exists(Go::DeferStmt firstD | + firstRegisteredDefer(firstD, fd) and + deferInvocationMayReturnNormally(firstD) and + deferInvoke(n1, firstD) and + deferChainExitTarget(fd, n2) + ) + or + // a panic in the first-registered defer finishes at the exceptional exit + exists(Go::DeferStmt firstD | + firstRegisteredDefer(firstD, fd) and + n1.isAdditional(firstD, "catch-defer-panic") and + n2.(ExceptionalExitNodeImpl).getEnclosingCallable() = fd + ) + or + // a non-panicking, non-returning deferred call stops unwinding immediately + exists(Go::DeferStmt d | + d.getEnclosingFunction() = fd and + deferInvocationStopsUnwinding(d) and + n1.isAdditional(d, "catch-defer-panic") and + n2.(ExceptionalExitNodeImpl).getEnclosingCallable() = fd + ) + or + // a possible panic with active defers flows to the last-registered active defer + exists(Go::DeferStmt d, PreControlFlowNode reg | + deferRegistration(reg, d) and + d.getEnclosingFunction() = fd and + exceptionalExitPred(n1, fd) and + n1 = reachableBeforeNextDeferRegistration(reg) and + deferInvoke(n2, d) + ) + or + // a possible panic with no active defer flows to the exceptional exit + exceptionalExitPred(n1, fd) and + n1 = reachableBeforeNextDeferRegistration(funcEntry(fd)) and + n2.(ExceptionalExitNodeImpl).getEnclosingCallable() = fd + ) + } + + additional predicate step(PreControlFlowNode n1, PreControlFlowNode n2) { + rangeStmtStep(n1, n2) or + selectStmtStep(n1, n2) or + assignmentStep(n1, n2) or + returnStep(n1, n2) or + callExprStep(n1, n2) or + indexExprStep(n1, n2) or + sliceExprStep(n1, n2) or + selectorExprStep(n1, n2) or + compositeLitStep(n1, n2) or + funcDefStep(n1, n2) + } + + /** + * Gets the non-skipped child of `parent` at rank `rnk` (1-based). + * This mimics the shared library's getRankedChild for explicit sequencing of + * function bodies and nodes with epilogues. + */ + private Ast::AstNode getRankedChild(Ast::AstNode parent, int rnk) { ( - // conservatively assume that we might either panic (and hence skip the result reads) - // or not - succ = MkExitNode(this) + parent = any(Go::FuncDef fd).getBody() or - succ = this.getEpilogueNode(0) - ) + exists(getEpilogueTag(parent, _)) + ) and + result = rank[rnk](Ast::AstNode c, int ix | c = Ast::getChild(parent, ix) | c order by ix) } - } - - private class GotoTree extends ControlFlowTree, GotoStmt { - override predicate firstNode(ControlFlow::Node first) { first = MkSkipNode(this) } - } - - private class IncDecTree extends ControlFlowTree, IncDecStmt { - override predicate firstNode(ControlFlow::Node first) { firstNode(this.getOperand(), first) } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) - or - last = MkIncDecNode(this) and - cmpl = Done() + /** Gets the last non-skipped child of `parent`, or fails if none. */ + private Ast::AstNode getLastRankedChild(Ast::AstNode parent) { + exists(int i | + result = getRankedChild(parent, i) and + not exists(getRankedChild(parent, i + 1)) + ) } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - lastNode(this.getOperand(), pred, normalCompletion()) and - succ = MkImplicitOne(this) - or - pred = MkImplicitOne(this) and - succ = MkIncDecRhs(this) + /** Routes into and between the children of `parent` in evaluation order. */ + private predicate childSequenceStep( + Ast::AstNode parent, PreControlFlowNode n1, PreControlFlowNode n2 + ) { + n1.isBefore(parent) and n2.isBefore(getRankedChild(parent, 1)) or - pred = MkIncDecRhs(this) and - succ = MkIncDecNode(this) + exists(int i | + n1.isAfter(getRankedChild(parent, i)) and n2.isBefore(getRankedChild(parent, i + 1)) + ) } - } - private class RangeTree extends LoopTree, RangeStmt { - override predicate firstNode(ControlFlow::Node first) { firstNode(this.getDomain(), first) } + /** Routes between consecutive epilogue nodes of `parent`. */ + private predicate epilogueSequenceStep( + Ast::AstNode parent, PreControlFlowNode n1, PreControlFlowNode n2 + ) { + exists(string tag1, string tag2 | + epilogueTagSucc(parent, tag1, tag2) and + n1.isAdditional(parent, tag1) and + n2.isAdditional(parent, tag2) + ) + } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - LoopTree.super.lastNode(last, cmpl) - or - last = MkNextNode(this) and - cmpl = Done() + /** Routes into and between the epilogue nodes of `parent`. */ + private predicate epilogueStep(Ast::AstNode parent, PreControlFlowNode n1, PreControlFlowNode n2) { + exists(getFirstEpilogueTag(parent)) and childSequenceStep(parent, n1, n2) or - lastNode(this.getKey(), last, cmpl) and - not cmpl.isNormal() + n1.isAfter(getLastRankedChild(parent)) and + n2.isAdditional(parent, getFirstEpilogueTag(parent)) or - lastNode(this.getValue(), last, cmpl) and - not cmpl.isNormal() + not exists(getRankedChild(parent, _)) and + n1.isBefore(parent) and + n2.isAdditional(parent, getFirstEpilogueTag(parent)) or - lastNode(this.getDomain(), last, cmpl) and - not cmpl.isNormal() + epilogueSequenceStep(parent, n1, n2) } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - lastNode(this.getDomain(), pred, normalCompletion()) and - succ = MkNextNode(this) - or - pred = MkNextNode(this) and - ( - firstNode(this.getKey(), succ) + /** + * Assignment flow: routes through LHS/RHS children, then through + * additional nodes for extract, zero-init, and assign operations. + */ + private predicate assignmentStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Ast::AstNode assgn | + assgn instanceof Go::Assignment and + not assgn instanceof Go::RecvStmt and + // The `y := x.(type)` test statement of a type switch is transparent + // (see `skipCfg`); the shared switch model evaluates the underlying + // type-assertion expression directly, so this statement has no + // assignment flow of its own. + not assgn = any(Go::TypeSwitchStmt ts).getAssign() or - not exists(this.getKey()) and - firstNode(this.getBody(), succ) - ) - or - lastNode(this.getKey(), pred, normalCompletion()) and - ( - firstNode(this.getValue(), succ) + assgn instanceof Go::ValueSpec + | + epilogueStep(assgn, n1, n2) or - not exists(this.getValue()) and - succ = MkExtractNode(this, 0) - ) - or - lastNode(this.getValue(), pred, normalCompletion()) and - succ = MkExtractNode(this, 0) - or - pred = MkExtractNode(this, 0) and - ( - if exists(this.getValue()) - then succ = MkExtractNode(this, 1) - else - if exists(MkAssignNode(this, 0)) - then succ = MkAssignNode(this, 0) - else - if exists(MkAssignNode(this, 1)) - then succ = MkAssignNode(this, 1) - else firstNode(this.getBody(), succ) - ) - or - pred = MkExtractNode(this, 1) and - ( - if exists(MkAssignNode(this, 0)) - then succ = MkAssignNode(this, 0) - else - if exists(MkAssignNode(this, 1)) - then succ = MkAssignNode(this, 1) - else firstNode(this.getBody(), succ) - ) - or - pred = MkAssignNode(this, 0) and - ( - if exists(MkAssignNode(this, 1)) - then succ = MkAssignNode(this, 1) - else firstNode(this.getBody(), succ) + n1.isAdditional(assgn, getLastEpilogueTag(assgn)) and + n2.isAfter(assgn) ) - or - pred = MkAssignNode(this, 1) and - firstNode(this.getBody(), succ) - or - exists(Completion inner | - lastNode(this.getBody(), pred, inner) and - (inner.isNormal() or inner = Continue(BranchTarget::of(this))) and - succ = MkNextNode(this) - ) - } - } - - private class RecvStmtTree extends ControlFlowTree, RecvStmt { - override predicate firstNode(ControlFlow::Node first) { - firstNode(this.getExpr().getOperand(), first) } - } - - private class ReturnStmtTree extends PostOrderTree, ReturnStmt { - override ControlFlow::Node getNode() { result = MkReturnNode(this) } - override Completion getCompletion() { result = Return() } - - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { + /** Gets a tuple-extraction epilogue tag and its order. */ + private string getExtractionEpilogueTag(Ast::AstNode node, int ord) { exists(int i | - lastNode(this.getExpr(i), pred, normalCompletion()) and - succ = this.complete(i) - or - pred = MkExtractNode(this, i) and - succ = this.after(i) - or - pred = MkResultWriteNode(_, i, this) and - succ = this.next(i) + extractNodeCondition(node, i) and + result = "extract:" + i.toString() and + ord = 2 * i ) } - private ControlFlow::Node complete(int i) { - result = MkExtractNode(this, i) - or - not exists(MkExtractNode(this, _)) and - result = this.after(i) + /** Gets an assignment epilogue tag and its order. */ + private string getAssignmentEpilogueTag(Ast::AstNode assgn, int ord) { + exists(int j | + ( + exists(Go::ValueSpec spec | + assgn = spec and + not exists(spec.getAnInit()) and + exists(spec.getNameExpr(j)) and + result = "zero-init:" + j.toString() and + ord = 2 * j + ) + or + ( + notBlankIdent(assgn.(Go::Assignment).getLhs(j)) and + // Compound assignments perform their write at their post-order + // operation node, so they emit no separate `assign:j` node. + not assgn instanceof Go::CompoundAssignStmt and + // Tuple-destructuring targets are written by their `extract` node. + not extractNodeCondition(assgn, j) + or + // A `ValueSpec` without an initializer is written by its `zero-init` + // node directly, and a tuple-destructuring declaration by its + // `extract` node, so only specs with a per-name initializer emit + // `assign:j`. + notBlankIdent(assgn.(Go::ValueSpec).getNameExpr(j)) and + exists(assgn.(Go::ValueSpec).getAnInit()) and + not extractNodeCondition(assgn, j) + ) and + result = "assign:" + j.toString() and + ord = 2 * j + 1 + ) + ) } - private ControlFlow::Node after(int i) { - result = MkResultWriteNode(_, i, this) - or - not exists(MkResultWriteNode(_, i, this)) and - result = this.next(i) + /** Gets a result-write epilogue tag and its order. */ + private string getResultWriteEpilogueTag(Ast::AstNode node, int ord) { + exists(int i, Go::ReturnStmt ret, Go::ResultVariable rv | + node = ret and + ret.getEnclosingFunction().getResultVar(i) = rv and + exists(ret.getAnExpr()) and + result = "result-write:" + i.toString() and + ord = 2 * i + 1 + ) } - private ControlFlow::Node next(int i) { - firstNode(this.getExpr(i + 1), result) + /** Gets an epilogue tag and its order. */ + private string getEpilogueTag(Ast::AstNode node, int ord) { + result = getExtractionEpilogueTag(node, ord) or - exists(MkExtractNode(this, _)) and - result = this.complete(i + 1) + result = getAssignmentEpilogueTag(node, ord) or - i + 1 = this.getEnclosingFunction().getType().getNumResult() and - result = this.getNode() + result = getResultWriteEpilogueTag(node, ord) } - override ControlFlowTree getChildTree(int i) { result = this.getExpr(i) } - } + private string getRankedEpilogueTag(Ast::AstNode node, int rnk) { + result = rank[rnk](string tag, int ord | tag = getEpilogueTag(node, ord) | tag order by ord) + } - private class SelectStmtTree extends ControlFlowTree, SelectStmt { - private BranchTarget getLabel() { result = BranchTarget::of(this) } + private string getFirstEpilogueTag(Ast::AstNode node) { result = getRankedEpilogueTag(node, 1) } - override predicate firstNode(ControlFlow::Node first) { - firstNode(this.getNonDefaultCommClause(0), first) - or - this.getNumNonDefaultCommClause() = 0 and - first = MkSelectNode(this) + private string getLastEpilogueTag(Ast::AstNode node) { + exists(int i | + result = getRankedEpilogueTag(node, i) and + not exists(getRankedEpilogueTag(node, i + 1)) + ) } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - exists(Completion inner | lastNode(this.getACommClause(), last, inner) | - if inner = Break(this.getLabel()) then cmpl = Done() else cmpl = inner + private predicate epilogueTagSucc(Ast::AstNode node, string tag1, string tag2) { + exists(int i | + tag1 = getRankedEpilogueTag(node, i) and + tag2 = getRankedEpilogueTag(node, i + 1) ) } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - ControlFlowTree.super.succ0(pred, succ) - or - exists(CommClause cc, int i, Stmt comm | - cc = this.getNonDefaultCommClause(i) and - comm = cc.getComm() and - ( - comm instanceof RecvStmt and - lastNode(comm.(RecvStmt).getExpr().getOperand(), pred, normalCompletion()) - or - comm instanceof SendStmt and - lastNode(comm.(SendStmt).getValue(), pred, normalCompletion()) - ) - | - firstNode(this.getNonDefaultCommClause(i + 1), succ) + /** + * Return statement: evaluate expressions, extract tuples, write results, + * then the return node. + */ + private predicate returnStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::ReturnStmt ret | + epilogueStep(ret, n1, n2) or - i = this.getNumNonDefaultCommClause() - 1 and - succ = MkSelectNode(this) + n1.isAdditional(ret, getLastEpilogueTag(ret)) and + n2.isIn(ret) ) - or - pred = MkSelectNode(this) and - exists(CommClause cc, Stmt comm | - cc = this.getNonDefaultCommClause(_) and comm = cc.getComm() + } + + /** + * Call with spread arguments, e.g. `f(g())` where the inner call `g` + * returns multiple results that are passed as the arguments of the outer + * call `f`: evaluate the function expression and argument call, extract + * each tuple element of the argument's result, then invoke the outer call. + * + * The tuple-extraction nodes are additional nodes (see + * `extractNodeCondition`); without wiring them into the control flow they + * would be unreachable and pruned, breaking data flow through `f(g())`. + */ + private predicate callExprStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::CallExpr call | + // Restrict to ordinary invoked calls; the calls of `defer`/`go` + // statements do not use this tuple-extraction override. + not call = any(Go::DeferStmt s).getCall() and + not call = any(Go::GoStmt s).getCall() and + extractNodeCondition(call, _) | - comm instanceof RecvStmt and - succ = MkExprNode(comm.(RecvStmt).getExpr()) + epilogueStep(call, n1, n2) or - comm instanceof SendStmt and - succ = MkSendNode(comm) - ) - or - pred = MkSelectNode(this) and - exists(CommClause cc | cc = this.getDefaultCommClause() | - firstNode(cc.getStmt(0), succ) + n1.isAdditional(call, getLastEpilogueTag(call)) and n2.isIn(call) or - succ = MkSkipNode(cc) + n1.isIn(call) and + n2.isAfter(call) and + not beginAbruptCompletion(call, n1, _, true) ) - or - exists(CommClause cc, RecvStmt recv | cc = this.getCommClause(_) and recv = cc.getComm() | - pred = MkExprNode(recv.getExpr()) and + } + + /** + * Index expression: base -> implicit-deref? -> index -> In(indexExpr) + */ + private predicate indexExprStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::IndexExpr ie | + implicitDerefCondition(ie.getBase()) and ( - firstNode(recv.getLhs(0), succ) + n1.isBefore(ie) and n2.isBefore(ie.getBase()) or - not exists(recv.getLhs(0)) and - (firstNode(cc.getStmt(0), succ) or succ = MkSkipNode(cc)) - ) - or - lastNode(recv.getLhs(0), pred, normalCompletion()) and - not exists(recv.getLhs(1)) and - ( - succ = MkAssignNode(recv, 0) + n1.isAfter(ie.getBase()) and n2.isAdditional(ie.getBase(), "implicit-deref") or - not exists(MkAssignNode(recv, 0)) and - (firstNode(cc.getStmt(0), succ) or succ = MkSkipNode(cc)) - ) - or - lastNode(recv.getLhs(1), pred, normalCompletion()) and - succ = MkExtractNode(recv, 0) - or - ( - pred = MkAssignNode(recv, 0) and - not exists(MkExtractNode(recv, 1)) + n1.isAdditional(ie.getBase(), "implicit-deref") and n2.isBefore(ie.getIndex()) or - pred = MkExtractNode(recv, 1) and - not exists(MkAssignNode(recv, 1)) + n1.isAfter(ie.getIndex()) and n2.isIn(ie) or - pred = MkAssignNode(recv, 1) - ) and - (firstNode(cc.getStmt(0), succ) or succ = MkSkipNode(cc)) - ) - or - exists(CommClause cc, SendStmt ss | - cc = this.getCommClause(_) and - ss = cc.getComm() and - pred = MkSendNode(ss) - | - firstNode(cc.getStmt(0), succ) - or - succ = MkSkipNode(cc) + n1.isIn(ie) and n2.isAfter(ie) + ) ) } - } - - private class SelectorExprTree extends ControlFlowTree, SelectorExpr { - SelectorExprTree() { this.getBase() instanceof ValueExpr } - override predicate firstNode(ControlFlow::Node first) { firstNode(this.getBase(), first) } - - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) + /** + * Gets the bound expression of slice `se` at position `r` (`0` = low, + * `1` = high, `2` = max), if it is present. + */ + private Go::Expr sliceBoundExpr(Go::SliceExpr se, int r) { + r = 0 and result = se.getLow() or - // panic due to `nil` dereference - last = MkImplicitDeref(this.getBase()) and - cmpl = Panic() + r = 1 and result = se.getHigh() or - last = mkExprOrSkipNode(this) and - cmpl = Done() + r = 2 and result = se.getMax() } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - exists(int i | pred = this.getStepWithRank(i) and succ = this.getStepWithRank(i + 1)) + /** + * Holds if, having finished evaluating the slice component at position `p` + * (`-1` = base, `0` = low, `1` = high, `2` = max), `n2` is the control-flow + * node to execute next: the next present bound in `low, high, max` order, or + * the slice evaluation node `In(se)` if no further bound is present. + * + * Implicit (omitted) bounds have no control-flow node of their own, so + * control simply skips over them. + */ + bindingset[p] + private predicate sliceNext(Go::SliceExpr se, int p, PreControlFlowNode n2) { + exists(int q | q = min(int r | r > p and exists(sliceBoundExpr(se, r)) | r) | + n2.isBefore(sliceBoundExpr(se, q)) + ) + or + not exists(int r | r > p and exists(sliceBoundExpr(se, r))) and + n2.isIn(se) } - private ControlFlow::Node getStepOrdered(int i) { - i = -2 and lastNode(this.getBase(), result, normalCompletion()) - or - i = -1 and result = MkImplicitDeref(this.getBase()) - or - exists(int maxIndex | - maxIndex = max(int k | k = 0 or exists(MkImplicitFieldSelection(this, k, _))) - | - result = MkImplicitFieldSelection(this, maxIndex - i, _) + /** + * Slice expression with implicit dereference: base -> implicit-deref -> + * low? -> high? -> max? -> In(sliceExpr). + * + * Missing (implicit) bounds have no control-flow node of their own; the + * implicit lower bound of `0` is modeled as a constant on the + * `SliceInstruction` rather than as a separate node. + */ + private predicate sliceExprStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::SliceExpr se | implicitDerefCondition(se.getBase()) | + n1.isBefore(se) and n2.isBefore(se.getBase()) + or + n1.isAfter(se.getBase()) and + n2.isAdditional(se.getBase(), "implicit-deref") + or + n1.isAdditional(se.getBase(), "implicit-deref") and sliceNext(se, -1, n2) or - i = maxIndex and - result = mkExprOrSkipNode(this) + n1.isAfter(se.getLow()) and sliceNext(se, 0, n2) + or + n1.isAfter(se.getHigh()) and sliceNext(se, 1, n2) + or + n1.isAfter(se.getMax()) and sliceNext(se, 2, n2) + or + n1.isIn(se) and n2.isAfter(se) ) } - private ControlFlow::Node getStepWithRank(int i) { - exists(int j | - result = this.getStepOrdered(j) and - j = rank[i + 1](int k | exists(this.getStepOrdered(k))) + /** + * Selector expression with value base: base -> implicit-deref? -> + * implicit-field-selections -> In(selector) + */ + private predicate selectorExprStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::SelectorExpr sel | + sel.getBase() instanceof Go::ValueExpr and + ( + implicitDerefCondition(sel.getBase()) or + implicitFieldSelection(sel, _, _) + ) and + ( + n1.isBefore(sel) and n2.isBefore(sel.getBase()) + or + n1.isAfter(sel.getBase()) and + not implicitDerefCondition(sel.getBase()) and + ( + // Has implicit field reads: go to outermost (highest index) + exists(int maxIdx | + maxIdx = max(int i | implicitFieldSelection(sel, i, _)) and + n2.isAdditional(sel, "implicit-field:" + maxIdx.toString()) + ) + or + // No implicit field reads: go directly to In(sel) + not implicitFieldSelection(sel, _, _) and n2.isIn(sel) + ) + or + n1.isAfter(sel.getBase()) and + implicitDerefCondition(sel.getBase()) and + n2.isAdditional(sel.getBase(), "implicit-deref") + or + n1.isAdditional(sel.getBase(), "implicit-deref") and + ( + // Has implicit field reads: go to outermost (highest index) + exists(int maxIdx | + maxIdx = max(int i | implicitFieldSelection(sel, i, _)) and + n2.isAdditional(sel, "implicit-field:" + maxIdx.toString()) + ) + or + // No implicit field reads: go directly to In(sel) + not implicitFieldSelection(sel, _, _) and n2.isIn(sel) + ) + or + exists(int i | + i > 1 and + implicitFieldSelection(sel, i, _) and + implicitFieldSelection(sel, i - 1, _) and + n1.isAdditional(sel, "implicit-field:" + i.toString()) and + n2.isAdditional(sel, "implicit-field:" + (i - 1).toString()) + ) + or + implicitFieldSelection(sel, 1, _) and + n1.isAdditional(sel, "implicit-field:1") and + n2.isIn(sel) + or + n1.isIn(sel) and n2.isAfter(sel) + ) ) } - } - private class SendStmtTree extends ControlFlowTree, SendStmt { - override predicate firstNode(ControlFlow::Node first) { firstNode(this.getChannel(), first) } + /** + * Composite literal: In(lit) -> element-init chain -> After(lit) + * CompositeLit evaluates the literal (allocation) first (pre-order), + * then initializes elements. + */ + private predicate compositeLitStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::CompositeLit lit | + n1.isBefore(lit) and n2.isIn(lit) + or + n1.isIn(lit) and + ( + n2.isBefore(lit.getElement(0)) + or + not exists(lit.getElement(_)) and n2.isAfter(lit) + ) + or + // Positional array/slice elements have an implicit index that is + // modeled on the `lit-init` instruction itself (see + // `IR::InitLiteralElementInstruction`) rather than as a separate node. + exists(int i | + n1.isAfter(lit.getElement(i)) and + n2.isAdditional(lit.getElement(i), "lit-init") + or + n1.isAdditional(lit.getElement(i), "lit-init") and + ( + n2.isBefore(lit.getElement(i + 1)) + or + not exists(lit.getElement(i + 1)) and n2.isAfter(lit) + ) + ) + ) + } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) - or - last = MkSendNode(this) and - (cmpl = Done() or cmpl = Panic()) + private predicate rangeStmtStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::RangeElementExpr p | + // The shared `ForEachStmt` model owns the loop skeleton (testing the + // domain for emptiness, the `[LoopHeader]` join/branch point, and the + // loop exit) and routes control flow into `Before(p)` and out of + // `After(p)`, where `p` is the synthesized "range element" loop + // variable. Here we get the next key-value pair and destructure it into + // the key/value variables using the shared extract/assign epilogue + // machinery. + n1.isBefore(p) and n2.isAdditional(p, "next") + or + n1.isAdditional(p, "next") and + ( + exists(getFirstEpilogueTag(p)) and + n2.isAdditional(p, getFirstEpilogueTag(p)) + or + not exists(getFirstEpilogueTag(p)) and n2.isAfter(p) + ) + or + epilogueSequenceStep(p, n1, n2) + or + n1.isAdditional(p, getLastEpilogueTag(p)) and n2.isAfter(p) + ) } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - ControlFlowTree.super.succ0(pred, succ) + private predicate commClauseBodyStart( + Go::SelectStmt sel, Go::CommClause cc, PreControlFlowNode n + ) { + n.isBefore(cc.getStmt(0)) or - not this = any(CommClause cc).getComm() and - lastNode(this.getValue(), pred, normalCompletion()) and - succ = MkSendNode(this) + not exists(cc.getStmt(0)) and n.isAfter(sel) } - override ControlFlowTree getChildTree(int i) { - i = 0 and result = this.getChannel() + private predicate selectCommPrepStart(Go::CommClause cc, PreControlFlowNode n) { + exists(Go::RecvStmt recv | recv = cc.getComm() | n.isBefore(recv.getExpr().getOperand())) or - i = 1 and result = this.getValue() + exists(Go::SendStmt send | send = cc.getComm() | n.isBefore(send.getChannel())) } - } - - private class SliceExprTree extends ControlFlowTree, SliceExpr { - override predicate firstNode(ControlFlow::Node first) { firstNode(this.getBase(), first) } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - ControlFlowTree.super.lastNode(last, cmpl) + private predicate selectCommPrepEnd(Go::CommClause cc, PreControlFlowNode n) { + exists(Go::RecvStmt recv | recv = cc.getComm() | n.isAfter(recv.getExpr().getOperand())) or - // panic due to `nil` dereference - last = MkImplicitDeref(this.getBase()) and - cmpl = Panic() - or - last = MkExprNode(this) and - (cmpl = Done() or cmpl = Panic()) + exists(Go::SendStmt send | send = cc.getComm() | n.isAfter(send.getValue())) } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - ControlFlowTree.super.succ0(pred, succ) - or - lastNode(this.getBase(), pred, normalCompletion()) and - ( - succ = MkImplicitDeref(this.getBase()) - or - not exists(MkImplicitDeref(this.getBase())) and - (firstNode(this.getLow(), succ) or succ = MkImplicitLowerSliceBound(this)) + private predicate selectCommPrepStep( + Go::CommClause cc, PreControlFlowNode n1, PreControlFlowNode n2 + ) { + exists(Go::SendStmt send | send = cc.getComm() | + n1.isAfter(send.getChannel()) and n2.isBefore(send.getValue()) ) - or - pred = MkImplicitDeref(this.getBase()) and - (firstNode(this.getLow(), succ) or succ = MkImplicitLowerSliceBound(this)) - or - (lastNode(this.getLow(), pred, normalCompletion()) or pred = MkImplicitLowerSliceBound(this)) and - (firstNode(this.getHigh(), succ) or succ = MkImplicitUpperSliceBound(this)) - or - (lastNode(this.getHigh(), pred, normalCompletion()) or pred = MkImplicitUpperSliceBound(this)) and - (firstNode(this.getMax(), succ) or succ = MkImplicitMaxSliceBound(this)) - or - (lastNode(this.getMax(), pred, normalCompletion()) or pred = MkImplicitMaxSliceBound(this)) and - succ = MkExprNode(this) } - } - - private class StarExprTree extends PostOrderTree, StarExpr { - override ControlFlow::Node getNode() { result = mkExprOrSkipNode(this) } - override Completion getCompletion() { result = Done() or result = Panic() } - - override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getBase() } - } - - private class SwitchTree extends ControlFlowTree, SwitchStmt { - override predicate firstNode(ControlFlow::Node first) { - firstNode(this.getInit(), first) - or - not exists(this.getInit()) and - ( - firstNode(this.(ExpressionSwitchStmt).getExpr(), first) - or - first = MkImplicitTrue(this) + /** + * Holds if there is a control-flow step from `n1` to `n2` for the + * communication operation of a comm clause of `sel` that has been selected. + * + * The channel operands (and, for a send, the value) of every clause are + * evaluated up front in the prep phase (see `selectCommPrepStart` and + * friends), and the `select` then non-deterministically dispatches to one + * clause via `In(sel) -> Before(cc) -> Before(comm)`. Explicit steps from + * the communication statement's `Before` node then skip the operands that + * were already evaluated during preparation and perform the selected + * communication. + */ + private predicate selectedCommStep( + Go::SelectStmt sel, PreControlFlowNode n1, PreControlFlowNode n2 + ) { + exists(Go::SendStmt send | send = sel.getACommClause().getComm() | + n1.isBefore(send) and n2.isIn(send) or - firstNode(this.(TypeSwitchStmt).getTest(), first) + // The send communication happens at `In(send)`; flow then continues to + // the clause body via `selectStmtStep`. + n1.isIn(send) and n2.isAfter(send) ) } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - lastNode(this.getInit(), last, cmpl) and - not cmpl.isNormal() - or + private predicate selectRecvStmtStep( + Go::SelectStmt sel, Go::CommClause cc, Go::RecvStmt recv, PreControlFlowNode n1, + PreControlFlowNode n2 + ) { + cc = sel.getACommClause() and + recv = cc.getComm() and ( - lastNode(this.(ExpressionSwitchStmt).getExpr(), last, cmpl) + n1.isBefore(recv) and n2.isBefore(recv.getExpr()) or - lastNode(this.(TypeSwitchStmt).getTest(), last, cmpl) - ) and - ( - not cmpl.isNormal() + n1.isBefore(recv.getExpr()) and n2.isIn(recv.getExpr()) or - not exists(this.getDefault()) - ) - or - last = MkImplicitTrue(this) and - cmpl = Bool(true) and - this.getNumCase() = 0 - or - exists(CaseClause cc, int i, Completion inner | - cc = this.getCase(i) and lastNode(cc, last, inner) - | - not exists(this.getDefault()) and - i = this.getNumCase() - 1 and - last = cc.(CaseClauseTree).getExprEnd(cc.getNumExpr() - 1, false) and - inner.isNormal() and - cmpl = inner - or - not last = cc.(CaseClauseTree).getExprEnd(_, _) and - inner.isNormal() and - cmpl = inner - or - if inner = Break(BranchTarget::of(this)) - then cmpl = Done() - else ( - not inner.isNormal() and inner != Fallthrough() and cmpl = inner + n1.isIn(recv.getExpr()) and + ( + n2.isBefore(recv.getLhs(0)) + or + not exists(recv.getLhs(0)) and commClauseBodyStart(sel, cc, n2) + ) + or + exists(int j | n1.isAfter(recv.getLhs(j)) and n2.isBefore(recv.getLhs(j + 1))) + or + exists(int last | exists(recv.getLhs(last)) and not exists(recv.getLhs(last + 1)) | + n1.isAfter(recv.getLhs(last)) and + n2.isAdditional(recv, getFirstEpilogueTag(recv)) + ) + or + exists(int last | exists(recv.getLhs(last)) and not exists(recv.getLhs(last + 1)) | + not exists(getFirstEpilogueTag(recv)) and + n1.isAfter(recv.getLhs(last)) and + commClauseBodyStart(sel, cc, n2) ) + or + epilogueSequenceStep(recv, n1, n2) + or + n1.isAdditional(recv, getLastEpilogueTag(recv)) and + commClauseBodyStart(sel, cc, n2) ) } - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - ControlFlowTree.super.succ0(pred, succ) - or - lastNode(this.getInit(), pred, normalCompletion()) and - ( - firstNode(this.(ExpressionSwitchStmt).getExpr(), succ) or - succ = MkImplicitTrue(this) or - firstNode(this.(TypeSwitchStmt).getTest(), succ) - ) - or - ( - lastNode(this.(ExpressionSwitchStmt).getExpr(), pred, normalCompletion()) or - pred = MkImplicitTrue(this) or - lastNode(this.(TypeSwitchStmt).getTest(), pred, normalCompletion()) - ) and - ( - firstNode(this.getNonDefaultCase(0), succ) + private predicate selectStmtStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::SelectStmt sel | + selectedCommStep(sel, n1, n2) or - not exists(this.getANonDefaultCase()) and - firstNode(this.getDefault(), succ) - ) - or - exists(CaseClause cc, int i | - cc = this.getNonDefaultCase(i) and - lastNode(cc, pred, normalCompletion()) and - pred = cc.(CaseClauseTree).getExprEnd(_, false) - | - firstNode(this.getNonDefaultCase(i + 1), succ) + n1.isBefore(sel) and + ( + selectCommPrepStart(sel.getNonDefaultCommClause(0), n2) + or + not exists(sel.getNonDefaultCommClause(0)) and n2.isIn(sel) + ) or - i = this.getNumNonDefaultCase() - 1 and - firstNode(this.getDefault(), succ) - ) - or - exists(CaseClause cc, int i, CaseClause next | - cc = this.getCase(i) and - lastNode(cc, pred, Fallthrough()) and - next = this.getCase(i + 1) - | - firstNode(next.getStmt(0), succ) + exists(Go::CommClause cc, int i | cc = sel.getNonDefaultCommClause(i) | + selectCommPrepStep(cc, n1, n2) + or + selectCommPrepEnd(cc, n1) and + ( + selectCommPrepStart(sel.getNonDefaultCommClause(i + 1), n2) + or + not exists(sel.getNonDefaultCommClause(i + 1)) and n2.isIn(sel) + ) + ) + or + n1.isIn(sel) and + exists(Go::CommClause cc | sel.getACommClause() = cc | n2.isBefore(cc)) or - succ = MkSkipNode(next) + exists(Go::CommClause cc | sel.getACommClause() = cc | + n1.isBefore(cc) and + ( + n2.isBefore(cc.getComm()) + or + not exists(cc.getComm()) and commClauseBodyStart(sel, cc, n2) + ) + or + exists(Go::RecvStmt recv | selectRecvStmtStep(sel, cc, recv, n1, n2)) + or + n1.isAfter(cc.getComm().(Go::SendStmt)) and commClauseBodyStart(sel, cc, n2) + or + exists(int j | n1.isAfter(cc.getStmt(j)) and n2.isBefore(cc.getStmt(j + 1))) + or + exists(int last | + last = max(int j | exists(cc.getStmt(j))) and + n1.isAfter(cc.getStmt(last)) and + n2.isAfter(sel) + ) + ) ) } - } - private class TypeAssertTree extends PostOrderTree, TypeAssertExpr { - override ControlFlow::Node getNode() { result = MkExprNode(this) } + private predicate hasFuncDefPrologue(Go::FuncDef fd) { exists(fd.getResultVar(_)) } - override Completion getCompletion() { - result = Done() + private predicate funcDefBodyStart(Go::FuncDef fd, PreControlFlowNode n) { + n.isBefore(getRankedChild(fd.getBody(), 1)) or - // panic due to type mismatch, but not if the assertion appears in an assignment or - // initialization with two variables or a type-switch - not exists(Assignment assgn | assgn.getNumLhs() = 2 and this = assgn.getRhs().stripParens()) and - not exists(ValueSpec vs | vs.getNumName() = 2 and this = vs.getInit().stripParens()) and - not exists(TypeSwitchStmt ts | this = ts.getExpr()) and - result = Panic() + not exists(getRankedChild(fd.getBody(), _)) and + n.isAdditional(fd.getBody(), "result-read:0") } - override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getExpr() } - } - - private class UnaryExprTree extends ControlFlowTree, UnaryExpr { - override predicate firstNode(ControlFlow::Node first) { firstNode(this.getOperand(), first) } - - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { - last = MkExprNode(this) and - ( - cmpl = Done() + /** + * Function body flow for named result variables: `Before(body)` -> + * `zero-init:0` -> ... -> first statement -> ... -> `result-read:0` -> ... + * -> `After(body)`. Parameters precede `Before(body)` through the shared + * callable flow. Return and defer handling route into the result-read + * sequence separately; this predicate sequences its nodes and routes + * defer-free fall-through into it. + */ + private predicate funcDefStep(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(Go::FuncDef fd | exists(fd.getBody()) | + funcHasDefer(fd) and + not hasFuncDefPrologue(fd) and + n1.isBefore(fd.getBody()) and + n2.isBefore(getRankedChild(fd.getBody(), 1)) + or + (hasFuncDefPrologue(fd) or funcHasDefer(fd)) and + exists(int i | + n1.isAfter(getRankedChild(fd.getBody(), i)) and + n2.isBefore(getRankedChild(fd.getBody(), i + 1)) + ) + or + n1.isBefore(fd.getBody()) and + exists(fd.getResultVar(0)) and + n2.isAdditional(fd.getBody(), "zero-init:0") + or + exists(int j | exists(fd.getResultVar(j)) | + n1.isAdditional(fd.getBody(), "zero-init:" + j.toString()) and + ( + exists(fd.getResultVar(j + 1)) and + n2.isAdditional(fd.getBody(), "zero-init:" + (j + 1).toString()) + or + not exists(fd.getResultVar(j + 1)) and + funcDefBodyStart(fd, n2) + ) + ) + or + exists(int j | exists(fd.getResultVar(j + 1)) | + n1.isAdditional(fd.getBody(), "result-read:" + j.toString()) and + n2.isAdditional(fd.getBody(), "result-read:" + (j + 1).toString()) + ) + or + not funcHasDefer(fd) and + exists(fd.getResultVar(0)) and + n1.isAfter(getLastRankedChild(fd.getBody())) and + n2.isAdditional(fd.getBody(), "result-read:0") or - this instanceof DerefExpr and cmpl = Panic() + exists(int j | + exists(fd.getResultVar(j)) and + not exists(fd.getResultVar(j + 1)) and + n1.isAdditional(fd.getBody(), "result-read:" + j.toString()) and + n2.isAfter(fd.getBody()) + ) ) } - - pragma[nomagic] - override predicate succ0(ControlFlow::Node pred, ControlFlow::Node succ) { - ControlFlowTree.super.succ0(pred, succ) - or - not this = any(RecvStmt recv).getExpr() and - lastNode(this.getOperand(), pred, normalCompletion()) and - succ = MkExprNode(this) - } - } - - private ControlFlow::Node mkExprOrSkipNode(Expr e) { - result = MkExprNode(e) or - result = MkSkipNode(e) - } - - /** Holds if evaluation of `root` may start at `first`. */ - cached - predicate firstNode(ControlFlowTree root, ControlFlow::Node first) { root.firstNode(first) } - - /** Holds if evaluation of `root` may complete normally after `last`. */ - cached - predicate lastNode(ControlFlowTree root, ControlFlow::Node last) { - lastNode(root, last, normalCompletion()) } - private predicate lastNode(ControlFlowTree root, ControlFlow::Node last, Completion cmpl) { - root.lastNode(last, cmpl) - } + /** + * Builds the CFG used to determine which `defer` statements have been registered. + * Only functions containing `defer` statements need this auxiliary stage. + */ + private module EarlyInput2 implements Cfg1::InputSig2 { + predicate includeCallableEntry(Ast::Callable callable) { + callable = any(Go::DeferStmt stmt).getEnclosingFunction() + } - /** Gets a successor of `nd` that is not a `defer` node */ - private ControlFlow::Node notDeferSucc0(ControlFlow::Node nd) { - not result = MkDeferNode(_) and - result = succ0(nd) - } + predicate beginAbruptCompletion( + Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c, boolean always + ) { + Input1::beginAbruptCompletion(ast, n, c, always) + } - /** Gets `defer` statements that can be the first defer statement after `nd` in the CFG */ - private ControlFlow::Node nextDefer(ControlFlow::Node nd) { - nd = MkDeferNode(_) and - result = MkDeferNode(_) and - ( - result = succ0(nd) + predicate endAbruptCompletion(Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c) { + Input1::endAbruptCompletion(ast, n, c) or - result = succ0(notDeferSucc0+(nd)) - ) - } + exists(Go::FuncDef fd | + ast = fd.getBody() and + c.getSuccessorType() instanceof ReturnSuccessor and + exists(fd.getResultVar(0)) and + n.isAdditional(fd.getBody(), "result-read:0") + ) + } - /** - * Holds if the function `f` may return without panicking, exiting the process, or looping forever. - * - * This is defined conservatively, and so may also hold of a function that in fact - * cannot return normally, but never fails to hold of a function that can return normally. - */ - cached - predicate mayReturnNormally(ControlFlowTree root) { - exists(Completion cmpl | lastNode(root, _, cmpl) and cmpl != Panic()) + predicate step(PreControlFlowNode n1, PreControlFlowNode n2) { Input1::step(n1, n2) } } - /** - * Holds if `pred` is the node for the case `testExpr` in an expression - * switch statement which is switching on `switchExpr`, and `succ` is the - * node to be executed next if the case test succeeds. - */ - cached - predicate isSwitchCaseTestPassingEdge( - ControlFlow::Node pred, ControlFlow::Node succ, Expr switchExpr, Expr testExpr - ) { - exists(ExpressionSwitchStmt ess | ess.getExpr() = switchExpr | - ess.getACase().(CaseClauseTree).isPassingEdge(_, pred, succ, testExpr) - ) - } + /** Builds the final Go CFG, including deferred invocations. */ + private module FinalInput2 implements Cfg1::InputSig2 { + predicate beginAbruptCompletion( + Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c, boolean always + ) { + Input1::beginAbruptCompletion(ast, n, c, always) + } - /** - * Gets a successor of `nd`, that is, a node that is executed after `nd`, - * ignoring the execution of any deferred functions when a function ends. - */ - pragma[nomagic] - private ControlFlow::Node succ0(ControlFlow::Node nd) { - any(ControlFlowTree tree).succ0(nd, result) - } + predicate endAbruptCompletion(Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c) { + Input1::endAbruptCompletion(ast, n, c) + } - /** Gets a successor of `nd`, that is, a node that is executed after `nd`. */ - cached - ControlFlow::Node succ(ControlFlow::Node nd) { any(ControlFlowTree tree).succ(nd, result) } + predicate step(PreControlFlowNode n1, PreControlFlowNode n2) { + Input1::step(n1, n2) or Input1::finalDeferStep(n1, n2) + } + } } diff --git a/go/ql/lib/semmle/go/controlflow/IR.qll b/go/ql/lib/semmle/go/controlflow/IR.qll index a4c730041082..a87f1464de12 100644 --- a/go/ql/lib/semmle/go/controlflow/IR.qll +++ b/go/ql/lib/semmle/go/controlflow/IR.qll @@ -7,52 +7,95 @@ * structure or type information). * * Each instruction is also a control-flow node, but there are control-flow nodes that are not - * instructions (synthetic entry and exit nodes, as well as no-op skip nodes). + * instructions (synthetic entry and exit nodes, as well as before/after nodes). */ overlay[local] module; import go -private import semmle.go.controlflow.ControlFlowGraphImpl +private import ControlFlowGraphImpl +private import codeql.controlflow.SuccessorType /** Provides predicates and classes for working with IR constructs. */ module IR { + /** + * Holds if `n` is the control-flow node representing a successful match of + * the type-switch case clause `cc` that implicitly declares a variable. + * + * This node dominates the case body and is where the implicit per-case + * variable declaration/assignment is materialised (see + * `TypeSwitchImplicitVariableInstruction`). + */ + private predicate typeSwitchCaseMatch(ControlFlow::Node n, CaseClause cc) { + cc = any(TypeSwitchStmt ts).getACase() and + exists(cc.getImplicitlyDeclaredVariable()) and + n.isAfterValue(cc, any(MatchingSuccessor t | t.isMatch())) + } + + /** + * Holds if `n` records a boolean outcome, or the matching outcome of an + * expressionless switch case condition. + */ + private predicate isConditionGuardNode(ControlFlow::Node n) { + n.isAfterTrue(_) + or + n.isAfterFalse(_) + or + exists(Expr condition, MatchingSuccessor successor | + condition = + any(ExpressionSwitchStmt switch | not exists(switch.getExpr())).getACase().getAnExpr() and + n.isAfterValue(condition, successor) + ) + } + + /** Gets the CFG node representing a basic literal, function literal, or plain identifier reference. */ + cached + private ControlFlow::Node leafEvaluation(Expr leaf) { + ( + leaf instanceof BasicLit + or + leaf instanceof FuncLit + or + leaf instanceof Ident and leaf instanceof ReferenceExpr + ) and + result.injects(leaf) + } + /** * An IR instruction. */ class Instruction extends ControlFlow::Node { Instruction() { - this instanceof MkExprNode or - this instanceof MkLiteralElementInitNode or - this instanceof MkImplicitLiteralElementIndex or - this instanceof MkAssignNode or - this instanceof MkCompoundAssignRhsNode or - this instanceof MkExtractNode or - this instanceof MkZeroInitNode or - this instanceof MkFuncDeclNode or - this instanceof MkDeferNode or - this instanceof MkGoNode or - this instanceof MkConditionGuardNode or - this instanceof MkIncDecNode or - this instanceof MkIncDecRhs or - this instanceof MkImplicitOne or - this instanceof MkReturnNode or - this instanceof MkResultWriteNode or - this instanceof MkResultReadNode or - this instanceof MkSelectNode or - this instanceof MkSendNode or - this instanceof MkParameterInit or - this instanceof MkArgumentNode or - this instanceof MkResultInit or - this instanceof MkNextNode or - this instanceof MkImplicitTrue or - this instanceof MkCaseCheckNode or - this instanceof MkTypeSwitchImplicitVariable or - this instanceof MkImplicitLowerSliceBound or - this instanceof MkImplicitUpperSliceBound or - this instanceof MkImplicitMaxSliceBound or - this instanceof MkImplicitDeref or - this instanceof MkImplicitFieldSelection + this.isIn(_) + or + this = leafEvaluation(_) + or + this.isAdditional(_, _) + or + isConditionGuardNode(this) + or + // The successful-match node of a type-switch case that binds an implicit + // variable hosts that variable's declaration/assignment (see + // `TypeSwitchImplicitVariableInstruction`). + typeSwitchCaseMatch(this, _) + or + // `NotExpr` and `LogicalBinaryExpr` are not in `postOrInOrder`, so they + // have no `isIn` node. Use their combined after-node as the value-producing + // instruction, but not a value-specific after-node, which is already a + // `ConditionGuardInstruction`. + exists(Expr e | + (e instanceof NotExpr or e instanceof LogicalBinaryExpr) and + this.isAfter(e) and + not this.isAfterValue(e, _) + ) + or + // A named parameter is represented by a single CFG node (the merged + // "before"/"after" leaf node for its declaration), which hosts the + // initialization write (see `InitParameterInstruction`). + this.isBefore(any(FuncDef fd).getParameter(_).getDeclaration()) + or + // Function declarations are represented by their merged leaf node. + this.isBefore(any(FuncDecl fd)) } /** Holds if this instruction reads the value of variable or constant `v`. */ @@ -120,78 +163,82 @@ module IR { /** Gets a textual representation of the kind of this instruction. */ string getInsnKind() { - this instanceof MkExprNode and result = "expression" - or - this instanceof MkLiteralElementInitNode and result = "element init" - or - this instanceof MkImplicitLiteralElementIndex and result = "element index" - or - this instanceof MkAssignNode and result = "assignment" - or - this instanceof MkCompoundAssignRhsNode and result = "right-hand side of compound assignment" - or - this instanceof MkExtractNode and result = "tuple element extraction" + this instanceof EvalInstruction and result = "expression" or - this instanceof MkZeroInitNode and result = "zero value" + this instanceof InitLiteralComponentInstruction and result = "element init" or - this instanceof MkFuncDeclNode and result = "function declaration" + this instanceof AssignInstruction and result = "assignment" or - this instanceof MkDeferNode and result = "defer" + this instanceof EvalCompoundAssignRhsInstruction and + result = "right-hand side of compound assignment" or - this instanceof MkGoNode and result = "go" + this instanceof ExtractTupleElementInstruction and result = "tuple element extraction" or - this instanceof MkConditionGuardNode and result = "condition guard" + this instanceof EvalImplicitInitInstruction and result = "zero value" or - this instanceof MkIncDecNode and result = "increment/decrement" + this instanceof DeclareFunctionInstruction and result = "function declaration" or - this instanceof MkIncDecRhs and result = "right-hand side of increment/decrement" + this instanceof DeferInstruction and result = "defer" or - this instanceof MkImplicitOne and result = "implicit 1" + this instanceof GoInstruction and result = "go" or - this instanceof MkReturnNode and result = "return" + this instanceof ConditionGuardInstruction and result = "condition guard" or - this instanceof MkResultWriteNode and result = "result write" + this instanceof ReturnInstruction and result = "return" or - this instanceof MkResultReadNode and result = "result read" + this instanceof WriteResultInstruction and result = "result write" or - this instanceof MkSelectNode and result = "select" + this instanceof ReadResultInstruction and result = "result read" or - this instanceof MkSendNode and result = "send" + this instanceof InitParameterInstruction and result = "parameter initialization" or - this instanceof MkParameterInit and result = "parameter initialization" + this instanceof GetNextEntryInstruction and result = "next key-value pair" or - this instanceof MkArgumentNode and result = "argument" + this instanceof EvalImplicitTrueInstruction and result = "implicit true" or - this instanceof MkResultInit and result = "result initialization" + this instanceof CaseInstruction and result = "case" or - this instanceof MkNextNode and result = "next key-value pair" - or - this instanceof MkImplicitTrue and result = "implicit true" - or - this instanceof MkCaseCheckNode and result = "case" - or - this instanceof MkTypeSwitchImplicitVariable and + this instanceof TypeSwitchImplicitVariableInstruction and result = "type switch implicit variable declaration" or - this instanceof MkImplicitLowerSliceBound and result = "implicit lower bound" - or - this instanceof MkImplicitUpperSliceBound and result = "implicit upper bound" - or - this instanceof MkImplicitMaxSliceBound and result = "implicit maximum" - or - this instanceof MkImplicitDeref and result = "implicit dereference" + this instanceof EvalImplicitDerefInstruction and result = "implicit dereference" or - this instanceof MkImplicitFieldSelection and result = "implicit field selection" + this instanceof ImplicitFieldReadInstruction and result = "implicit field selection" } } + /** A condition guard instruction, representing a known boolean outcome for a condition. */ + private class ConditionGuardInstruction extends Instruction { + ConditionGuardInstruction() { isConditionGuardNode(this) } + } + /** * An IR instruction representing the evaluation of an expression. */ - class EvalInstruction extends Instruction, MkExprNode { + class EvalInstruction extends Instruction { Expr e; - EvalInstruction() { this = MkExprNode(e) } + EvalInstruction() { + this.isIn(e) + or + this = leafEvaluation(e) + or + // The call of a `defer` statement is pre-order (it has no in-order + // "invocation" node at the statement), so its value is produced by the + // `defer-invoke` node that models the call at function exit. + this.isAdditional(e, "defer-invoke") + or + // Non-constant `NotExpr` and `LogicalBinaryExpr` are not in + // `postOrInOrder`, so they don't have an `isIn` node; their value is + // produced by the after-node. (Constant ones are folded and get a leaf + // `isIn` node via `constRoot`, handled by the first disjunct above, so + // they are excluded here to avoid a duplicate value node.) Value-specific + // after-nodes are condition guards rather than expression evaluations. + (e instanceof NotExpr or e instanceof LogicalBinaryExpr) and + not e.isConst() and + this.isAfter(e) and + not this.isAfterValue(_, _) + } /** Gets the expression underlying this instruction. */ Expr getExpr() { result = e } @@ -200,8 +247,6 @@ module IR { override Type getResultType() { result = e.getType() } - override ControlFlow::Root getRoot() { result.isRootOf(e) } - override float getFloatValue() { result = e.getFloatValue() } override int getIntValue() { result = e.getIntValue() } @@ -217,10 +262,6 @@ module IR { override predicate isConst() { e.isConst() } override predicate isPlatformIndependentConstant() { e.isPlatformIndependentConstant() } - - override string toString() { result = e.toString() } - - override Location getLocation() { result = e.getLocation() } } /** @@ -236,17 +277,13 @@ module IR { or this instanceof ReadResultInstruction or - this instanceof MkImplicitFieldSelection + this instanceof ImplicitFieldReadInstruction } } /** * Gets the effective base of a selector, index or slice expression, taking implicit dereferences * and implicit field reads into account. - * - * For a selector expression `b.f`, this could be the implicit dereference `*b`, or the implicit - * field access `b.Embedded` if the field `f` is promoted from an embedded type `Embedded`, or a - * combination of both `*(b.Embedded)`, or simply `b` if neither case applies. */ private Instruction selectorBase(Expr e) { exists(ImplicitFieldReadInstruction fri | fri.getSelectorExpr() = e and fri.getIndex() = 1 | @@ -261,17 +298,15 @@ module IR { or base = e.(SliceExpr).getBase() | - result = MkImplicitDeref(base) + result = implicitDerefInstruction(base) or - not exists(MkImplicitDeref(base)) and + not exists(implicitDerefInstruction(base)) and result = evalExprInstruction(base) ) } /** * An IR instruction that reads a component from a composite object. - * - * This is either a field of a struct, or an element of an array, map, slice or string. */ class ComponentReadInstruction extends ReadInstruction { ComponentReadInstruction() { @@ -282,7 +317,7 @@ module IR { not e.(SelectorExpr).getSelector() = any(Method method).getAReference() ) or - this instanceof MkImplicitFieldSelection + this instanceof ImplicitFieldReadInstruction } /** Gets the instruction computing the base value on which the field or element is read. */ @@ -295,9 +330,6 @@ module IR { /** * An IR instruction that reads the value of a field. - * - * On databases with incomplete type information, method expressions may sometimes be - * misclassified as field reads. */ class FieldReadInstruction extends ComponentReadInstruction { SelectorExpr e; @@ -309,7 +341,9 @@ module IR { index = 0 and field.getAReference() = e.getSelector() or - this = MkImplicitFieldSelection(e, index, field) + this.(ImplicitFieldReadInstruction).getSelectorExpr() = e and + this.(ImplicitFieldReadInstruction).getIndex() = index and + this.(ImplicitFieldReadInstruction).getField() = field } /** Gets the `SelectorExpr` of this field read. */ @@ -332,9 +366,9 @@ module IR { fri.getSelectorExpr() = e and fri.getIndex() = pragma[only_bind_into](index + 1) ) and ( - result = MkImplicitDeref(e.getBase()) + result = implicitDerefInstruction(e.getBase()) or - not exists(MkImplicitDeref(e.getBase())) and + not exists(implicitDerefInstruction(e.getBase())) and result = evalExprInstruction(e.getBase()) ) } @@ -345,24 +379,49 @@ module IR { } /** - * An IR instruction for an implicit field read as part of reading a - * promoted field. - * - * If the field that is being implicitly read has a pointer type then this - * instruction represents an implicit dereference of it. + * An IR instruction for an implicit field read as part of reading a promoted field. */ - class ImplicitFieldReadInstruction extends FieldReadInstruction, MkImplicitFieldSelection { - ImplicitFieldReadInstruction() { this = MkImplicitFieldSelection(e, index, field) } + class ImplicitFieldReadInstruction extends Instruction { + SelectorExpr sel; + int idx; + Field fld; + + ImplicitFieldReadInstruction() { + this.isAdditional(sel, "implicit-field:" + idx.toString()) and + CfgImpl::implicitFieldSelection(sel, idx, fld) + } - override predicate reads(ValueEntity v) { v = field } + /** Gets the `SelectorExpr` for which this is an implicit field read. */ + SelectorExpr getSelectorExpr() { result = sel } - override Type getResultType() { result = lookThroughPointerType(field.getType()) } + /** Gets the index of this implicit field read. */ + int getIndex() { result = idx } - override ControlFlow::Root getRoot() { result.isRootOf(e) } + /** Gets the field being read. */ + Field getField() { result = fld } - override string toString() { result = "implicit read of field " + field.toString() } + /** Gets the instruction computing the base value on which the field is read. */ + Instruction getBaseInstruction() { + exists(ImplicitFieldReadInstruction fri | + fri.getSelectorExpr() = sel and fri.getIndex() = pragma[only_bind_into](idx + 1) + | + result = fri + ) + or + not exists(ImplicitFieldReadInstruction fri | + fri.getSelectorExpr() = sel and fri.getIndex() = pragma[only_bind_into](idx + 1) + ) and + ( + result = implicitDerefInstruction(sel.getBase()) + or + not exists(implicitDerefInstruction(sel.getBase())) and + result = evalExprInstruction(sel.getBase()) + ) + } - override Location getLocation() { result = e.getBase().getLocation() } + override predicate reads(ValueEntity v) { v = fld } + + override Type getResultType() { result = lookThroughPointerType(fld.getType()) } } /** @@ -408,23 +467,14 @@ module IR { /** Gets the instruction computing the base value from which the slice is constructed. */ Instruction getBase() { result = selectorBase(e) } - /** Gets the instruction computing the lower bound of the slice. */ - Instruction getLow() { - result = evalExprInstruction(e.getLow()) or - result = implicitLowerSliceBoundInstruction(e) - } + /** Gets the instruction computing the lower bound of the slice, if it is explicit. */ + Instruction getLow() { result = evalExprInstruction(e.getLow()) } - /** Gets the instruction computing the upper bound of the slice. */ - Instruction getHigh() { - result = evalExprInstruction(e.getHigh()) or - result = implicitUpperSliceBoundInstruction(e) - } + /** Gets the instruction computing the upper bound of the slice, if it is explicit. */ + Instruction getHigh() { result = evalExprInstruction(e.getHigh()) } - /** Gets the instruction computing the capacity of the slice. */ - Instruction getMax() { - result = evalExprInstruction(e.getMax()) or - result = implicitMaxSliceBoundInstruction(e) - } + /** Gets the instruction computing the capacity of the slice, if it is explicit. */ + Instruction getMax() { result = evalExprInstruction(e.getMax()) } } /** @@ -463,28 +513,24 @@ module IR { /** * An IR instruction that initializes a component of a composite literal. */ - class InitLiteralComponentInstruction extends WriteInstruction, MkLiteralElementInitNode { + class InitLiteralComponentInstruction extends WriteInstruction { CompositeLit lit; - int i; + int litIdx; Expr elt; InitLiteralComponentInstruction() { - this = MkLiteralElementInitNode(elt) and elt = lit.getElement(i) + this.isAdditional(elt, "lit-init") and + elt = lit.getElement(litIdx) } /** Gets the instruction allocating the composite literal. */ Instruction getBase() { result = evalExprInstruction(lit) } override Instruction getRhs() { - result = evalExprInstruction(elt) or + not elt instanceof KeyValueExpr and result = evalExprInstruction(elt) + or result = evalExprInstruction(elt.(KeyValueExpr).getValue()) } - - override ControlFlow::Root getRoot() { result.isRootOf(elt) } - - override string toString() { result = "init of " + elt } - - override Location getLocation() { result = elt.getLocation() } } /** @@ -498,7 +544,7 @@ module IR { string getFieldName() { if elt instanceof KeyValueExpr then result = elt.(KeyValueExpr).getKey().(Ident).getName() - else pragma[only_bind_out](lit.getStructType()).hasOwnField(i, result, _, _) + else pragma[only_bind_out](lit.getStructType()).hasOwnField(litIdx, result, _, _) } /** Gets the initialized field. */ @@ -527,34 +573,30 @@ module IR { Instruction getIndex() { result = evalExprInstruction(elt.(KeyValueExpr).getKey()) or - result = MkImplicitLiteralElementIndex(elt) + // A positional array/slice element has an implicit index. Array/slice + // content flow is index-insensitive, so rather than materialise a + // separate index node the element-init instruction acts as its own + // (opaque) index. + not elt instanceof KeyValueExpr and result = this } } - /** - * An IR instruction that initializes an element of an array literal. - */ + /** An IR instruction that initializes an element of an array literal. */ class InitLiteralArrayElementInstruction extends InitLiteralElementInstruction { override ArrayType literalType; } - /** - * An IR instruction that initializes an element of a slice literal. - */ + /** An IR instruction that initializes an element of a slice literal. */ class InitLiteralSliceElementInstruction extends InitLiteralElementInstruction { override SliceType literalType; } - /** - * An IR instruction that initializes an element of a map literal. - */ + /** An IR instruction that initializes an element of a map literal. */ class InitLiteralMapElementInstruction extends InitLiteralElementInstruction { override MapType literalType; } - /** - * An IR instruction that writes to a field. - */ + /** An IR instruction that writes to a field. */ class FieldWriteInstruction extends WriteInstruction { override FieldTarget lhs; @@ -565,93 +607,44 @@ module IR { Field getField() { result = lhs.getField() } override predicate writesField(Instruction base, Field f, Instruction rhs) { - this.getBase() = base and - this.getField() = f and - this.getRhs() = rhs + this.getBase() = base and this.getField() = f and this.getRhs() = rhs } } - /** - * An IR instruction that writes to an element of an array, slice, or map. - */ + /** An IR instruction that writes to an element of an array, slice, or map. */ class ElementWriteInstruction extends WriteInstruction { override ElementTarget lhs; - /** Gets the instruction computing the base value on which the field is written. */ + /** Gets the instruction computing the base value on which the element is written. */ Instruction getBase() { result = lhs.getBase() } /** Gets the instruction computing the element index being written. */ Instruction getIndex() { result = lhs.getIndex() } override predicate writesElement(Instruction base, Instruction index) { - this.getBase() = base and - this.getIndex() = index + this.getBase() = base and this.getIndex() = index } } - /** Holds if `lit` does not specify any explicit keys. */ - private predicate noExplicitKeys(CompositeLit lit) { - not lit.getAnElement() instanceof KeyValueExpr - } - - /** Gets the index of the `i`th element in (array or slice) literal `lit`. */ - private int getElementIndex(CompositeLit lit, int i) { - ( - lit.getType().getUnderlyingType() instanceof ArrayType or - lit.getType().getUnderlyingType() instanceof SliceType - ) and - exists(Expr elt | elt = lit.getElement(i) | - // short-circuit computation for literals without any explicit keys - noExplicitKeys(lit) and result = i - or - result = elt.(KeyValueExpr).getKey().getIntValue() - or - not elt instanceof KeyValueExpr and - ( - i = 0 and result = 0 - or - result = getElementIndex(lit, i - 1) + 1 - ) - ) - } - - /** - * An IR instruction computing the implicit index of an element in an array or slice literal. - */ - class ImplicitLiteralElementIndexInstruction extends Instruction, MkImplicitLiteralElementIndex { - Expr elt; - - ImplicitLiteralElementIndexInstruction() { this = MkImplicitLiteralElementIndex(elt) } - - override Type getResultType() { result instanceof IntType } - - override ControlFlow::Root getRoot() { result.isRootOf(elt) } - - override int getIntValue() { - exists(CompositeLit lit, int i | elt = lit.getElement(i) | result = getElementIndex(lit, i)) - } - - override string getStringValue() { none() } - - override string getExactValue() { result = this.getIntValue().toString() } - - override predicate isPlatformIndependentConstant() { any() } - - override predicate isConst() { any() } - - override string toString() { result = "element index" } - - override Location getLocation() { result = elt.getLocation() } - } - /** * An instruction assigning to a variable or field. */ - class AssignInstruction extends WriteInstruction, MkAssignNode { + class AssignInstruction extends WriteInstruction { AstNode assgn; int i; - AssignInstruction() { this = MkAssignNode(assgn, i) } + AssignInstruction() { + this.isAdditional(assgn, "assign:" + i.toString()) and + ( + exists(assgn.(Assignment).getLhs(i)) + or + // A `ValueSpec` without an initializer (`var x int`) is written by its + // `zero-init` node directly (see `EvalImplicitInitInstruction`), so only + // specs *with* an initializer produce an `assign` node. + exists(assgn.(ValueSpec).getNameExpr(i)) and + exists(assgn.(ValueSpec).getAnInit()) + ) + } override Instruction getRhs() { exists(SimpleAssignStmt a | a = assgn | @@ -662,52 +655,70 @@ module IR { exists(ValueSpec spec | spec = assgn | spec.getNumName() = spec.getNumInit() and result = evalExprInstruction(spec.getInit(i)) - or - result = MkZeroInitNode(any(ValueEntity v | spec.getNameExpr(i) = v.getDeclaration())) ) - or - result = MkCompoundAssignRhsNode(assgn) - or - result = MkExtractNode(assgn, i) } - - override ControlFlow::Root getRoot() { result.isRootOf(assgn) } - - override string toString() { result = "assignment to " + this.getLhs() } - - override Location getLocation() { result = this.getLhs().getLocation() } } - /** An instruction computing the value of the right-hand side of a compound assignment. */ - class EvalCompoundAssignRhsInstruction extends Instruction, MkCompoundAssignRhsNode { - CompoundAssignStmt assgn; - - EvalCompoundAssignRhsInstruction() { this = MkCompoundAssignRhsNode(assgn) } + /** + * An instruction that computes the (implicit) right-hand side of a compound + * assignment (the `x + y` in `x += y`) or an increment/decrement (the + * `x + 1` in `x++`), and writes the resulting value to the left-hand side. + */ + class EvalCompoundAssignRhsInstruction extends WriteInstruction { + AstNode s; - /** Gets the underlying assignment of this instruction. */ - CompoundAssignStmt getAssignment() { result = assgn } + EvalCompoundAssignRhsInstruction() { + this.isIn(s) and + (s instanceof CompoundAssignStmt or s instanceof IncDecStmt) + } - override Type getResultType() { result = assgn.getRhs().getType() } + /** Gets the corresponding compound assignment statement, if it is one. */ + CompoundAssignStmt getAssignment() { result = s } - override ControlFlow::Root getRoot() { result.isRootOf(assgn) } + /** + * Gets the corresponding compound assignment (`x += y`) or increment/decrement + * (`x++`, `x--`) statement. + */ + AstNode getStmt() { result = s } - override string toString() { result = assgn.toString() } + override Instruction getRhs() { result = this } - override Location getLocation() { result = assgn.getLocation() } + override Type getResultType() { + result = s.(CompoundAssignStmt).getRhs().getType() + or + result = s.(IncDecStmt).getOperand().getType() + } } - /** - * An instruction selecting one of multiple values returned by a function, or either the key - * or the value of the iterator in a range loop, or the result or success value from a type - * assertion. - */ - class ExtractTupleElementInstruction extends Instruction, MkExtractNode { + /** An instruction extracting a component of a tuple value. */ + class ExtractTupleElementInstruction extends Instruction { AstNode s; int i; - ExtractTupleElementInstruction() { this = MkExtractNode(s, i) } + ExtractTupleElementInstruction() { + this.isAdditional(s, "extract:" + i.toString()) and + ( + exists(s.(Assignment).getLhs(i)) + or + exists(s.(ValueSpec).getNameExpr(i)) + or + s instanceof RangeElementExpr and i in [0, 1] + or + exists(s.(ReturnStmt).getEnclosingFunction().getType().(SignatureType).getResultType(i)) + or + exists( + s.(CallExpr) + .getArgument(0) + .stripParens() + .(CallExpr) + .getType() + .(TupleType) + .getComponentType(i) + ) + ) + } - /** Gets the instruction computing the tuple value from which one value is extracted. */ + /** Gets the instruction computing the tuple value from which the element is extracted. */ Instruction getBase() { exists(Expr baseExpr | baseExpr = s.(Assignment).getRhs() or @@ -716,14 +727,14 @@ module IR { result = evalExprInstruction(baseExpr) ) or - result = MkNextNode(s) + result.(GetNextEntryInstruction).isAdditional(s, "next") or result = evalExprInstruction(s.(ReturnStmt).getExpr()) or result = evalExprInstruction(s.(CallExpr).getArgument(0).stripParens()) } - /** Holds if this extracts the `idx`th value of the result of `base`. */ + /** Holds if this instruction extracts element `idx` from the tuple `base`. */ predicate extractsElement(Instruction base, int idx) { base = this.getBase() and idx = i } override Type getResultType() { @@ -731,62 +742,81 @@ module IR { result = e.getType().(TupleType).getComponentType(pragma[only_bind_into](i)) ) or - exists(Type rangeType | rangeType = s.(RangeStmt).getDomain().getType().getUnderlyingType() | + exists(Type rangeType | + rangeType = s.(RangeElementExpr).getDomain().getType().getUnderlyingType() + | exists(Type baseType | baseType = rangeType.(ArrayType).getElementType() or baseType = rangeType.(PointerType).getBaseType().getUnderlyingType().(ArrayType).getElementType() or baseType = rangeType.(SliceType).getElementType() | - i = 0 and - result instanceof IntType + i = 0 and result instanceof IntType or - i = 1 and - result = baseType + i = 1 and result = baseType ) or rangeType instanceof StringType and ( - i = 0 and - result instanceof IntType + i = 0 and result instanceof IntType or result = Builtin::rune().getType() ) or exists(MapType map | map = rangeType | - i = 0 and - result = map.getKeyType() + i = 0 and result = map.getKeyType() or - i = 1 and - result = map.getValueType() + i = 1 and result = map.getValueType() ) or - i = 0 and - result = rangeType.(RecvChanType).getElementType() + i = 0 and result = rangeType.(RecvChanType).getElementType() or - i = 0 and - result = rangeType.(SendRecvChanType).getElementType() + i = 0 and result = rangeType.(SendRecvChanType).getElementType() ) } + } - override ControlFlow::Root getRoot() { result.isRootOf(s) } - - override string toString() { result = s + "[" + i + "]" } - - override Location getLocation() { result = s.getLocation() } + /** + * An `ExtractTupleElementInstruction` that also writes the extracted component + * to a left-hand side, as in a tuple-destructuring assignment (`x, y = f()`), + * a multi-variable declaration (`var x, y = f()`), or a `range` statement + * (`k, v := range m`). + * + * The extraction node performs the write directly, rather than feeding a + * separate `assign` node. + */ + class ExtractWriteInstruction extends WriteInstruction, ExtractTupleElementInstruction { + override Instruction getRhs() { result = this } } /** - * An instruction that computes the zero value for a variable or constant. + * An instruction initializing a variable declared without an initializer + * (a local `var x int`, or a named function result) to its zero value. + * + * The zero-value instruction performs the write of the variable directly, + * rather than feeding a separate write node. */ - class EvalImplicitInitInstruction extends Instruction, MkZeroInitNode { + class EvalImplicitInitInstruction extends WriteInstruction { ValueEntity v; - EvalImplicitInitInstruction() { this = MkZeroInitNode(v) } + EvalImplicitInitInstruction() { + exists(ValueSpec spec, int idx | + this.isAdditional(spec, "zero-init:" + idx.toString()) and + spec.getNameExpr(idx) = v.getDeclaration() + ) + or + exists(FuncDef fd, int idx | + this.isAdditional(fd.getBody(), "zero-init:" + idx.toString()) and + v = fd.getResultVar(idx) + ) + } + + override Instruction getRhs() { result = this } - override Type getResultType() { result = v.getType() } + /** Gets the variable (a local or a named result) being zero-initialized. */ + ValueEntity getVariable() { result = v } - override ControlFlow::Root getRoot() { result.isRootOf(v.getDeclaration()) } + override Type getResultType() { result = v.getType() } override int getIntValue() { v.getType().getUnderlyingType() instanceof IntegerType and result = 0 @@ -814,136 +844,46 @@ module IR { override predicate isConst() { any() } override predicate isPlatformIndependentConstant() { any() } - - override string toString() { result = "zero value for " + v } - - override Location getLocation() { result = v.getDeclaration().getLocation() } } - /** - * An instruction that corresponds to the declaration of a function. - */ - class DeclareFunctionInstruction extends Instruction, MkFuncDeclNode { + /** An instruction that declares a function. */ + class DeclareFunctionInstruction extends Instruction { FuncDecl fd; - DeclareFunctionInstruction() { this = MkFuncDeclNode(fd) } + DeclareFunctionInstruction() { this.isBefore(fd) } override Type getResultType() { result = fd.getType() } - - override string toString() { result = fd.toString() } - - override Location getLocation() { result = fd.getLocation() } } - /** - * An instruction that corresponds to a `defer` statement. - */ - class DeferInstruction extends Instruction, MkDeferNode { + /** An instruction that corresponds to a `defer` statement. */ + class DeferInstruction extends Instruction { DeferStmt defer; - DeferInstruction() { this = MkDeferNode(defer) } - - override ControlFlow::Root getRoot() { result.isRootOf(defer) } - - override string toString() { result = defer.toString() } - - override Location getLocation() { result = defer.getLocation() } + DeferInstruction() { this.isIn(defer) } } - /** - * An instruction that corresponds to a `go` statement. - */ - class GoInstruction extends Instruction, MkGoNode { + /** An instruction that corresponds to a `go` statement. */ + class GoInstruction extends Instruction { GoStmt go; - GoInstruction() { this = MkGoNode(go) } - - override ControlFlow::Root getRoot() { result.isRootOf(go) } - - override string toString() { result = go.toString() } - - override Location getLocation() { result = go.getLocation() } - } - - /** - * An instruction that corresponds to an increment or decrement statement. - */ - class IncDecInstruction extends WriteInstruction, MkIncDecNode { - IncDecStmt ids; - - IncDecInstruction() { this = MkIncDecNode(ids) } - - override Instruction getRhs() { result = MkIncDecRhs(ids) } - - override ControlFlow::Root getRoot() { result.isRootOf(ids) } - - override string toString() { result = ids.toString() } - - override Location getLocation() { result = ids.getLocation() } - } - - /** - * An instruction that computes the (implicit) right-hand side of an increment or - * decrement statement. - */ - class EvalIncDecRhsInstruction extends Instruction, MkIncDecRhs { - IncDecStmt ids; - - EvalIncDecRhsInstruction() { this = MkIncDecRhs(ids) } - - /** Gets the corresponding increment or decrement statement. */ - IncDecStmt getStmt() { result = ids } - - override Type getResultType() { result = ids.getOperand().getType() } - - override ControlFlow::Root getRoot() { result.isRootOf(ids) } - - override string toString() { result = "rhs of " + ids } - - override Location getLocation() { result = ids.getLocation() } - } - - /** - * An instruction computing the implicit operand `1` in an increment or decrement statement. - */ - class EvalImplicitOneInstruction extends Instruction, MkImplicitOne { - IncDecStmt ids; - - EvalImplicitOneInstruction() { this = MkImplicitOne(ids) } - - /** Gets the corresponding increment or decrement statement. */ - IncDecStmt getStmt() { result = ids } - - override Type getResultType() { result = ids.getOperand().getType() } - - override ControlFlow::Root getRoot() { result.isRootOf(ids) } - - override int getIntValue() { result = 1 } - - override string getExactValue() { result = "1" } - - override predicate isConst() { any() } - - override predicate isPlatformIndependentConstant() { any() } - - override string toString() { result = "1" } - - override Location getLocation() { result = ids.getLocation() } + GoInstruction() { this.isIn(go) } } - /** - * An instruction corresponding to a return from a function. - */ - class ReturnInstruction extends Instruction, MkReturnNode { + /** An instruction corresponding to a return from a function. */ + class ReturnInstruction extends Instruction { ReturnStmt ret; - ReturnInstruction() { this = MkReturnNode(ret) } + ReturnInstruction() { this.isIn(ret) } /** Gets the corresponding `ReturnStmt`. */ ReturnStmt getReturnStmt() { result = ret } /** Holds if this statement returns multiple results. */ - predicate returnsMultipleResults() { exists(MkExtractNode(ret, _)) or ret.getNumExpr() > 1 } + predicate returnsMultipleResults() { + exists(ExtractTupleElementInstruction ext | ext.isAdditional(ret, _)) + or + ret.getNumExpr() > 1 + } /** Gets the instruction whose result is the (unique) result returned by this statement. */ Instruction getResult() { @@ -953,182 +893,96 @@ module IR { /** Gets the instruction whose result is the `i`th result returned by this statement. */ Instruction getResult(int i) { - result = MkExtractNode(ret, i) + result.isAdditional(ret, _) and + result.(ExtractTupleElementInstruction).extractsElement(_, i) or - not exists(MkExtractNode(ret, _)) and + not exists(ExtractTupleElementInstruction ext | ext.isAdditional(ret, _)) and result = evalExprInstruction(ret.getExpr(i)) } - - override ControlFlow::Root getRoot() { result.isRootOf(ret) } - - override string toString() { result = ret.toString() } - - override Location getLocation() { result = ret.getLocation() } } /** * An instruction that represents the implicit assignment to a result variable * performed by a return statement. */ - class WriteResultInstruction extends WriteInstruction, MkResultWriteNode { + class WriteResultInstruction extends WriteInstruction { ResultVariable var; - int i; - ReturnInstruction ret; + int idx; + ReturnStmt retStmt; WriteResultInstruction() { - exists(ReturnStmt retstmt | - this = MkResultWriteNode(var, i, retstmt) and - ret = MkReturnNode(retstmt) - ) + this.isAdditional(retStmt, "result-write:" + idx.toString()) and + var = retStmt.getEnclosingFunction().getResultVar(idx) and + exists(retStmt.getAnExpr()) } - override Instruction getRhs() { result = ret.getResult(i) } + private ReturnInstruction getReturnInstruction() { result.getReturnStmt() = retStmt } + + override Instruction getRhs() { result = this.getReturnInstruction().getResult(idx) } /** Gets the result variable being assigned. */ ResultVariable getResultVariable() { result = var } override Type getResultType() { result = var.getType() } - - override ControlFlow::Root getRoot() { var = result.(FuncDef).getAResultVar() } - - override string toString() { result = "implicit write of " + var } - - override Location getLocation() { result = ret.getResult(i).getLocation() } } /** * An instruction that reads the final value of a result variable upon returning * from a function. */ - class ReadResultInstruction extends Instruction, MkResultReadNode { + class ReadResultInstruction extends Instruction { ResultVariable var; + int idx; + FuncDef fd; - ReadResultInstruction() { this = MkResultReadNode(var) } + ReadResultInstruction() { + this.isAdditional(fd.getBody(), "result-read:" + idx.toString()) and + var = fd.getResultVar(idx) + } override predicate reads(ValueEntity v) { v = var } override Type getResultType() { result = var.getType() } - - override ControlFlow::Root getRoot() { var = result.(FuncDef).getAResultVar() } - - override string toString() { result = "implicit read of " + var } - - override Location getLocation() { result = var.getDeclaration().getLocation() } - } - - /** - * An instruction corresponding to a `select` statement. - */ - class SelectInstruction extends Instruction, MkSelectNode { - SelectStmt sel; - - SelectInstruction() { this = MkSelectNode(sel) } - - override ControlFlow::Root getRoot() { result.isRootOf(sel) } - - override string toString() { result = sel.toString() } - - override Location getLocation() { result = sel.getLocation() } - } - - /** - * An instruction corresponding to a send statement. - */ - class SendInstruction extends Instruction, MkSendNode { - SendStmt send; - - SendInstruction() { this = MkSendNode(send) } - - override ControlFlow::Root getRoot() { result.isRootOf(send) } - - override string toString() { result = send.toString() } - - override Location getLocation() { result = send.getLocation() } } - /** - * An instruction initializing a parameter to the corresponding argument. - */ - class InitParameterInstruction extends WriteInstruction, MkParameterInit { + /** An instruction initializing a parameter to the corresponding argument. */ + class InitParameterInstruction extends WriteInstruction { Parameter parm; + int idx; + FuncDef fd; - InitParameterInstruction() { this = MkParameterInit(parm) } - - override Instruction getRhs() { result = MkArgumentNode(parm) } - - override ControlFlow::Root getRoot() { result = parm.getFunction() } - - override string toString() { result = "initialization of " + parm } - - override Location getLocation() { result = parm.getDeclaration().getLocation() } - } - - /** - * An instruction reading the value of a function argument. - */ - class ReadArgumentInstruction extends Instruction, MkArgumentNode { - Parameter parm; + InitParameterInstruction() { + this.isBefore(parm.getDeclaration()) and + parm = fd.getParameter(idx) + } - ReadArgumentInstruction() { this = MkArgumentNode(parm) } + override Instruction getRhs() { result = this } override Type getResultType() { result = parm.getType() } - - override ControlFlow::Root getRoot() { result = parm.getFunction() } - - override string toString() { result = "argument corresponding to " + parm } - - override Location getLocation() { result = parm.getDeclaration().getLocation() } - } - - /** - * An instruction initializing a result variable to its zero value. - */ - class InitResultInstruction extends WriteInstruction, MkResultInit { - ResultVariable res; - - InitResultInstruction() { this = MkResultInit(res) } - - override Instruction getRhs() { result = MkZeroInitNode(res) } - - override ControlFlow::Root getRoot() { result = res.getFunction() } - - override string toString() { result = "initialization of " + res } - - override Location getLocation() { result = res.getDeclaration().getLocation() } } - /** - * An instruction that gets the next key-value pair in a range loop. - */ - class GetNextEntryInstruction extends Instruction, MkNextNode { - RangeStmt rs; + /** An instruction that gets the next key-value pair in a range loop. */ + class GetNextEntryInstruction extends Instruction { + RangeElementExpr p; - GetNextEntryInstruction() { this = MkNextNode(rs) } + GetNextEntryInstruction() { this.isAdditional(p, "next") } /** * Gets the instruction computing the value whose key-value pairs this instruction reads. */ - Instruction getDomain() { result = evalExprInstruction(rs.getDomain()) } - - override ControlFlow::Root getRoot() { result.isRootOf(rs) } - - override string toString() { result = "next key-value pair in range" } - - override Location getLocation() { result = rs.getDomain().getLocation() } + Instruction getDomain() { result = evalExprInstruction(p.getDomain()) } } /** * An instruction computing the implicit `true` value in an expression-less `switch` statement. */ - class EvalImplicitTrueInstruction extends Instruction, MkImplicitTrue { - Stmt stmt; + class EvalImplicitTrueInstruction extends Instruction { + ExpressionSwitchStmt stmt; - EvalImplicitTrueInstruction() { this = MkImplicitTrue(stmt) } + EvalImplicitTrueInstruction() { this.isAdditional(stmt, "implicit-true") } override Type getResultType() { result instanceof BoolType } - override ControlFlow::Root getRoot() { result.isRootOf(stmt) } - override boolean getBoolValue() { result = true } override string getExactValue() { result = "true" } @@ -1136,153 +990,45 @@ module IR { override predicate isConst() { any() } override predicate isPlatformIndependentConstant() { any() } - - override string toString() { result = "true" } - - override Location getLocation() { result = stmt.getLocation() } } /** * An instruction corresponding to the implicit comparison or type check performed by an * expression in a `case` clause. - * - * For example, consider this `switch` statement: - * - * ```go - * switch x { - * case 2, y+1: - * ... - * } - * ``` - * - * The expressions `2` and `y+1` are implicitly compared to `x`. These comparisons are - * represented by case instructions. */ - class CaseInstruction extends Instruction, MkCaseCheckNode { + class CaseInstruction extends Instruction { CaseClause cc; int i; - CaseInstruction() { this = MkCaseCheckNode(cc, i) } - - override ControlFlow::Root getRoot() { result.isRootOf(cc) } - - override string toString() { result = "case " + cc.getExpr(i) } - - override Location getLocation() { result = cc.getExpr(i).getLocation() } + CaseInstruction() { + this.isAdditional(cc, "case-check:" + i.toString()) and + exists(cc.getExpr(i)) + } } /** - * An instruction corresponding to the implicit declaration of the variable - * `lv` in case clause `cc` and its assignment of the value `switchExpr` from - * the guard. This only occurs in case clauses in a type switch statement - * which declares a variable in its guard. - * - * For example, consider this type switch statement: - * - * ```go - * switch y := x.(type) { - * case Type1: - * f(y) - * ... - * } - * ``` - * - * The `y` inside the case clause is actually a local variable with type - * `Type1` that is implicitly declared at the top of the case clause. In - * default clauses and case clauses which list more than one type, the type - * of the implicitly declared variable is the type of `switchExpr`. + * An instruction corresponding to the implicit declaration and assignment of a variable + * in a type switch case clause. */ - class TypeSwitchImplicitVariableInstruction extends Instruction, MkTypeSwitchImplicitVariable { + class TypeSwitchImplicitVariableInstruction extends Instruction { CaseClause cc; - LocalVariable lv; - Expr switchExpr; - TypeSwitchImplicitVariableInstruction() { - this = MkTypeSwitchImplicitVariable(cc, lv, switchExpr) - } + TypeSwitchImplicitVariableInstruction() { typeSwitchCaseMatch(this, cc) } override predicate writes(ValueEntity v, Instruction rhs) { - v = lv and - rhs = evalExprInstruction(switchExpr) + v = cc.getImplicitlyDeclaredVariable() and + exists(TypeSwitchStmt ts | cc = ts.getACase() | rhs = evalExprInstruction(ts.getExpr())) } - - override ControlFlow::Root getRoot() { result.isRootOf(cc) } - - override string toString() { result = "implicit type switch variable declaration" } - - override Location getLocation() { result = cc.getLocation() } } /** - * An instruction computing the implicit lower slice bound of zero in a slice expression without - * an explicit lower bound. + * An instruction computing the implicit dereference of a pointer used as the base of a field + * or method access, element access, or slice expression. */ - class EvalImplicitLowerSliceBoundInstruction extends Instruction, MkImplicitLowerSliceBound { - SliceExpr slice; - - EvalImplicitLowerSliceBoundInstruction() { this = MkImplicitLowerSliceBound(slice) } - - override Type getResultType() { result instanceof IntType } - - override ControlFlow::Root getRoot() { result.isRootOf(slice) } - - override int getIntValue() { result = 0 } - - override string getExactValue() { result = "0" } - - override predicate isConst() { any() } - - override predicate isPlatformIndependentConstant() { any() } - - override string toString() { result = "0" } - - override Location getLocation() { result = slice.getLocation() } - } - - /** - * An instruction computing the implicit upper slice bound in a slice expression without an - * explicit upper bound. - */ - class EvalImplicitUpperSliceBoundInstruction extends Instruction, MkImplicitUpperSliceBound { - SliceExpr slice; - - EvalImplicitUpperSliceBoundInstruction() { this = MkImplicitUpperSliceBound(slice) } - - override ControlFlow::Root getRoot() { result.isRootOf(slice) } - - override Type getResultType() { result instanceof IntType } - - override string toString() { result = "len" } - - override Location getLocation() { result = slice.getLocation() } - } - - /** - * An instruction computing the implicit maximum slice bound in a slice expression without an - * explicit maximum bound. - */ - class EvalImplicitMaxSliceBoundInstruction extends Instruction, MkImplicitMaxSliceBound { - SliceExpr slice; - - EvalImplicitMaxSliceBoundInstruction() { this = MkImplicitMaxSliceBound(slice) } - - override ControlFlow::Root getRoot() { result.isRootOf(slice) } - - override Type getResultType() { result instanceof IntType } - - override string toString() { result = "cap" } - - override Location getLocation() { result = slice.getLocation() } - } - - /** - * An instruction implicitly dereferencing the base in a field or method reference through a - * pointer, or the base in an element or slice reference through a pointer. - */ - class EvalImplicitDerefInstruction extends Instruction, MkImplicitDeref { + class EvalImplicitDerefInstruction extends Instruction { Expr e; - EvalImplicitDerefInstruction() { this = MkImplicitDeref(e) } + EvalImplicitDerefInstruction() { this.isAdditional(e, "implicit-deref") } /** Gets the operand that is being dereferenced. */ Expr getOperand() { result = e } @@ -1290,14 +1036,78 @@ module IR { override Type getResultType() { result = e.getType().getUnderlyingType().(PointerType).getBaseType() } - - override ControlFlow::Root getRoot() { result.isRootOf(e) } - - override string toString() { result = "implicit dereference" } - - override Location getLocation() { result = e.getLocation() } } + /** A representation of the target of a write instruction. */ + cached + newtype TWriteTarget = + /** A left-hand side of an assignment. */ + MkLhs(ControlFlow::Node write, Expr lhs) { + exists(AstNode assgn, int i | write.isAdditional(assgn, "assign:" + i.toString()) | + lhs = assgn.(Assignment).getLhs(i).stripParens() + or + lhs = assgn.(ValueSpec).getNameExpr(i) + or + exists(RangeElementExpr p | p = assgn | + i = 0 and lhs = p.getKey().stripParens() + or + i = 1 and lhs = p.getValue().stripParens() + ) + ) + or + exists(CompoundAssignStmt ca | write.isIn(ca) | lhs = ca.getLhs().stripParens()) + or + exists(IncDecStmt ids | write.isIn(ids) | lhs = ids.getOperand().stripParens()) + or + exists(FuncDef fd, int idx | + write.isBefore(fd.getParameter(idx).getDeclaration()) and + lhs = fd.getParameter(idx).getDeclaration() + ) + or + // The `zero-init` node writes the variable it initializes: a named + // function result or a local declared without an initializer. + exists(int idx, AstNode an | write.isAdditional(an, "zero-init:" + idx.toString()) | + an = any(FuncDef fd | lhs = fd.getResultVar(idx).getDeclaration()).getBody() + or + an = any(ValueSpec spec | lhs = spec.getNameExpr(idx)) + ) + or + // A tuple-destructuring `extract` node writes its component directly (see + // `ExtractWriteInstruction`); blank-identifier targets are not written. + exists(AstNode assgn, int i | write.isAdditional(assgn, "extract:" + i.toString()) | + ( + lhs = assgn.(Assignment).getLhs(i).stripParens() + or + lhs = assgn.(ValueSpec).getNameExpr(i) + or + exists(RangeElementExpr p | p = assgn | + i = 0 and lhs = p.getKey().stripParens() + or + i = 1 and lhs = p.getValue().stripParens() + ) + ) and + not lhs instanceof BlankIdent + ) + } or + /** A composite literal element target. */ + MkLiteralElementTarget(ControlFlow::Node write) { + write.isAdditional(any(CompositeLit lit).getAnElement(), "lit-init") + } or + /** + * A result variable write target. Parameterized by `ControlFlow::Node` + * rather than `WriteResultInstruction` to avoid a circular dependency: + * `WriteResultInstruction extends WriteInstruction` needs + * `MkResultWriteTarget(this)` to hold, which would in turn require + * `this` to already be a `WriteResultInstruction`. + */ + MkResultWriteTarget(ControlFlow::Node w) { + exists(ReturnStmt ret, int idx | + w.isAdditional(ret, "result-write:" + idx.toString()) and + exists(ret.getEnclosingFunction().getResultVar(idx)) and + exists(ret.getAnExpr()) + ) + } + /** A representation of the target of a write instruction. */ class WriteTarget extends TWriteTarget { ControlFlow::Node w; @@ -1309,6 +1119,9 @@ module IR { /** Gets the write instruction of which this is the target. */ WriteInstruction getWrite() { result = w } + /** Gets the left-hand side expression being written to, if any. */ + Expr getExpr() { this = MkLhs(_, result) } + /** Gets the name of the variable or field being written to, if any. */ string getName() { none() } @@ -1330,10 +1143,6 @@ module IR { * DEPRECATED: Use `getLocation()` instead. * * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn @@ -1395,10 +1204,6 @@ module IR { /** Gets the constant this refers to, if any. */ Constant getConstant() { this.refersTo(result) } - - override string toString() { result = this.getName() } - - override Location getLocation() { result = loc.getLocation() } } /** A reference to a field, used as the target of a write. */ @@ -1416,7 +1221,7 @@ module IR { result = w.(InitLiteralStructFieldInstruction).getBase() } - /** Get the type of the base of this field access, that is, the type that contains the field. */ + /** Gets the type of the base of this field access, that is, the type that contains the field. */ Type getBaseType() { result = this.getBase().getResultType() } override predicate refersTo(ValueEntity e) { @@ -1429,24 +1234,10 @@ module IR { /** Gets the field this refers to, if it can be determined. */ Field getField() { this.refersTo(result) } - - override string toString() { - exists(SelectorExpr sel | this = MkLhs(_, sel) | - result = "field " + sel.getSelector().getName() - ) - or - result = "field " + w.(InitLiteralStructFieldInstruction).getFieldName() - } - - override Location getLocation() { - exists(SelectorExpr sel | this = MkLhs(_, sel) | result = sel.getLocation()) - or - result = w.(InitLiteralStructFieldInstruction).getLocation() - } } /** - * A reference to an element of an array, slice or map, used as the target of a write. + * A reference to an element of an array, slice, or map, used as the target of a write. */ class ElementTarget extends WriteTarget { ElementTarget() { @@ -1468,14 +1259,6 @@ module IR { or result = w.(InitLiteralElementInstruction).getIndex() } - - override string toString() { result = "element" } - - override Location getLocation() { - exists(IndexExpr idx | this = MkLhs(_, idx) | result = idx.getLocation()) - or - result = w.(InitLiteralElementInstruction).getLocation() - } } /** @@ -1495,66 +1278,70 @@ module IR { result = evalExprInstruction(base) ) } - - override string toString() { result = lhs.toString() } - - override Location getLocation() { result = lhs.getLocation() } } /** * Gets the (final) instruction computing the value of `e`. - * - * Note that some expressions (such as type expressions or labels) have no corresponding - * instruction, so this predicate is undefined for them. - * - * Short-circuiting expressions that are purely used for control flow (meaning that their - * value is not stored in a variable or used to compute the value of a non-shortcircuiting - * expression) do not have a final instruction either. */ - Instruction evalExprInstruction(Expr e) { - result = MkExprNode(e) or - result = evalExprInstruction(e.(ParenExpr).getExpr()) - } + Instruction evalExprInstruction(Expr e) { result.(EvalInstruction).getExpr() = e } /** * Gets the instruction corresponding to the initialization of `r`. */ - InitParameterInstruction initRecvInstruction(ReceiverVariable r) { result = MkParameterInit(r) } + InitParameterInstruction initRecvInstruction(ReceiverVariable r) { + exists(FuncDef fd, int i | + fd.getParameter(i) = r and result.isBefore(fd.getParameter(i).getDeclaration()) + ) + } /** * Gets the instruction corresponding to the initialization of `p`. */ - InitParameterInstruction initParamInstruction(Parameter p) { result = MkParameterInit(p) } + InitParameterInstruction initParamInstruction(Parameter p) { + exists(FuncDef fd, int i | + fd.getParameter(i) = p and result.isBefore(fd.getParameter(i).getDeclaration()) + ) + } /** * Gets the instruction corresponding to the `i`th assignment happening at * `assgn` (0-based). */ - AssignInstruction assignInstruction(Assignment assgn, int i) { result = MkAssignNode(assgn, i) } + AssignInstruction assignInstruction(Assignment assgn, int i) { + result.isAdditional(assgn, "assign:" + i.toString()) and + exists(assgn.getLhs(i)) + } /** * Gets the instruction corresponding to the `i`th initialization happening * at `spec` (0-based). */ - AssignInstruction initInstruction(ValueSpec spec, int i) { result = MkAssignNode(spec, i) } + AssignInstruction initInstruction(ValueSpec spec, int i) { + result.isAdditional(spec, "assign:" + i.toString()) and + exists(spec.getNameExpr(i)) + } /** * Gets the instruction corresponding to the assignment of the key variable * of range statement `rs`. */ - AssignInstruction assignKeyInstruction(RangeStmt rs) { result = MkAssignNode(rs, 0) } + ExtractWriteInstruction assignKeyInstruction(RangeStmt rs) { + result.isAdditional(rs.getPattern(), "extract:0") + } /** * Gets the instruction corresponding to the assignment of the value variable * of range statement `rs`. */ - AssignInstruction assignValueInstruction(RangeStmt rs) { result = MkAssignNode(rs, 1) } + ExtractWriteInstruction assignValueInstruction(RangeStmt rs) { + result.isAdditional(rs.getPattern(), "extract:1") + } /** * Gets the instruction corresponding to the implicit initialization of `v` * to its zero value. */ - EvalImplicitInitInstruction implicitInitInstruction(ValueEntity v) { result = MkZeroInitNode(v) } + EvalImplicitInitInstruction implicitInitInstruction(ValueEntity v) { result.getVariable() = v } /** * Gets the instruction corresponding to the extraction of the `idx`th element @@ -1564,32 +1351,13 @@ module IR { result.extractsElement(base, idx) } - /** - * Gets the instruction corresponding to the implicit lower bound of slice `e`, if any. - */ - EvalImplicitLowerSliceBoundInstruction implicitLowerSliceBoundInstruction(SliceExpr e) { - result = MkImplicitLowerSliceBound(e) - } - - /** - * Gets the instruction corresponding to the implicit upper bound of slice `e`, if any. - */ - EvalImplicitUpperSliceBoundInstruction implicitUpperSliceBoundInstruction(SliceExpr e) { - result = MkImplicitUpperSliceBound(e) - } - - /** - * Gets the instruction corresponding to the implicit maximum bound of slice `e`, if any. - */ - EvalImplicitMaxSliceBoundInstruction implicitMaxSliceBoundInstruction(SliceExpr e) { - result = MkImplicitMaxSliceBound(e) - } - /** * Gets the implicit dereference instruction for `e`, where `e` is a pointer used as the base * in a field/method access, element access, or slice expression. */ - EvalImplicitDerefInstruction implicitDerefInstruction(Expr e) { result = MkImplicitDeref(e) } + EvalImplicitDerefInstruction implicitDerefInstruction(Expr e) { + result.isAdditional(e, "implicit-deref") + } /** Gets the base of `insn`, if `insn` is an implicit field read. */ Instruction lookThroughImplicitFieldRead(Instruction insn) { diff --git a/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll b/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll index 3547e70b858a..38c5ff4de219 100644 --- a/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll +++ b/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll @@ -109,15 +109,41 @@ private ControlFlow::Node getControlFlowEntry(ControlFlow::Node node) { private predicate entryNode(ControlFlow::Node node) { node.isEntryNode() } +/** Retains queried instructions, effects, and junctions while allowing linear CFG nodes to be bypassed. */ +private predicate retainedSideEffectNode(ControlFlow::Node node) { + node instanceof IR::Instruction + or + node = nodeWithPossibleSideEffect() + or + node.isEntryNode() + or + node.isBranch() + or + node.isJoin() + or + not exists(node.getAPredecessor()) + or + not exists(node.getASuccessor()) +} + +/** Gets the first retained node at or after `node` along a linear CFG path. */ +private ControlFlow::Node nextSideEffectNode(ControlFlow::Node node) { + retainedSideEffectNode(node) and result = node + or + not retainedSideEffectNode(node) and + result = nextSideEffectNode(node.getASuccessor()) +} + /** - * Holds if there is a control flow edge from `src` to `dst` or + * Holds if there is a contracted control flow edge from `src` to `dst` or * if `dst` is an expression with a possible side-effect. The idea * is to treat side effects as entry points in the control flow * graph so that we can use the dominator tree to find the most recent * side-effect. */ private predicate sideEffectCfg(ControlFlow::Node src, ControlFlow::Node dst) { - src.getASuccessor() = dst + retainedSideEffectNode(src) and + dst = nextSideEffectNode(src.getASuccessor()) or // Add an edge from the entry point to any node that might have a side // effect. diff --git a/go/ql/lib/semmle/go/dataflow/Properties.qll b/go/ql/lib/semmle/go/dataflow/Properties.qll index 573b001a3c36..0ec2654f8610 100644 --- a/go/ql/lib/semmle/go/dataflow/Properties.qll +++ b/go/ql/lib/semmle/go/dataflow/Properties.qll @@ -32,10 +32,6 @@ class Property extends TProperty { // then !test = !outcome ==> nd matches this this.checkOnExpr(test.(NotExpr).getOperand(), outcome.booleanNot(), nd) or - // if test = outcome ==> nd matches this - // then (test) = outcome ==> nd matches this - this.checkOnExpr(test.(ParenExpr).getExpr(), outcome, nd) - or // if test = true ==> nd matches this // then (test && e) = true ==> nd matches this outcome = true and diff --git a/go/ql/lib/semmle/go/dataflow/SsaImpl.qll b/go/ql/lib/semmle/go/dataflow/SsaImpl.qll index f4f62ab9f1d9..c206dccbba38 100644 --- a/go/ql/lib/semmle/go/dataflow/SsaImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/SsaImpl.qll @@ -9,6 +9,7 @@ module; import go private import codeql.ssa.Ssa as SsaImplCommon private import semmle.go.controlflow.BasicBlocks as BasicBlocks +private import semmle.go.controlflow.ControlFlowGraphImpl private class BasicBlock = BasicBlocks::BasicBlock; @@ -38,7 +39,7 @@ private module Internal { /** Holds if the `i`th node of `bb` in function `f` is an entry node. */ private predicate entryNode(FuncDef f, BasicBlock bb, int i) { f = bb.getScope() and - bb.getNode(i).isEntryNode() + bb.getNode(i).(ControlFlow::Node).isEntryNode() } /** @@ -110,7 +111,7 @@ private module Internal { v.isCaptured() and exists(FuncDef f | f = bb.getScope() and - bb.getLastNode().isExitNode() and + bb.getLastNode().(ControlFlow::Node).isExitNode() and i = bb.length() - 1 and certain = false | @@ -126,7 +127,7 @@ private module Internal { } import Internal -import SsaImplCommon::Make as Impl +import SsaImplCommon::Make as Impl final class Definition = Impl::Definition; diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll index 247f535e6fad..1aa60c0eca46 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll @@ -13,7 +13,10 @@ private newtype TNode = MkInstructionNode(IR::Instruction insn) or MkSsaNode(SsaDefinition ssa) or MkGlobalFunctionNode(Function f) or - MkImplicitVarargsSlice(CallExpr c) { c.hasImplicitVarargs() } or + MkImplicitVarargsSlice(IR::EvalInstruction ins) { + // We only use CallExprs with an EvalInstruction to guarantee reachability. + ins.getExpr().(CallExpr).hasImplicitVarargs() + } or MkSliceElementNode(SliceExpr se) or MkFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or MkDefaultPostUpdateNode(IR::Instruction insn) { insnHasPostUpdateNode(insn) } @@ -430,7 +433,7 @@ module Public { class ImplicitVarargsSlice extends Node, MkImplicitVarargsSlice { CallNode call; - ImplicitVarargsSlice() { this = MkImplicitVarargsSlice(call.getCall()) } + ImplicitVarargsSlice() { this = MkImplicitVarargsSlice(call.asInstruction()) } override ControlFlow::Root getRoot() { result = call.getRoot() } @@ -769,6 +772,8 @@ module Public { private IR::Instruction getADirectlyWrittenInsn() { exists(Write w | w.writesComponentInstruction(result, _)) or + result = any(Write w).getLhs().(IR::PointerTarget).getBase() + or result = IR::evalExprInstruction(any(SendStmt s).getChannel()) } @@ -785,7 +790,23 @@ module Public { } private IR::Instruction getAWrittenInsn() { - result = getAccessPathPredecessorInsn*(getADirectlyWrittenInsn()) + result = getADirectlyWrittenInsn() + or + result = getAccessPathPredecessorInsn(getAWrittenInsn()) + } + + private IR::Instruction getAMethodReceiverInsn() { + exists(CallExpr call, IR::MethodReadInstruction methodRead | + call.getTarget() instanceof Method and + methodRead = IR::evalExprInstruction(call.getCalleeExpr()) and + result = methodRead.getReceiver() + ) + or + // If a.x is reading a promoted field, and it's equivalent to a.b.c.x, + // then methodRead.getReceiver() will give us the implicit field read a.b.c + // and we want to have post-update nodes for a, the implicit field + // read a.b and the implicit field read a.b.c. + result = IR::lookThroughImplicitFieldRead(getAMethodReceiverInsn()) } /** @@ -832,23 +853,17 @@ module Public { e = any(IR::EvalImplicitDerefInstruction eidi).getOperand() ) or - exists(CallExpr ce | - ce.getArgument(0).getType() instanceof TupleType and - insn = IR::extractTupleElement(IR::evalExprInstruction(ce.getArgument(0)), _) - or - not ce.getArgument(0).getType() instanceof TupleType and - insn = IR::evalExprInstruction(ce.getAnArgument()) + ( + exists(CallExpr ce | + ce.getArgument(0).getType() instanceof TupleType and + insn = IR::extractTupleElement(IR::evalExprInstruction(ce.getArgument(0)), _) + or + not ce.getArgument(0).getType() instanceof TupleType and + insn = IR::evalExprInstruction(ce.getAnArgument()) + ) or // Receiver of a method call - exists(IR::MethodReadInstruction mri | - ce.getTarget() instanceof Method and - mri = IR::evalExprInstruction(ce.getCalleeExpr()) and - // If a.x is reading a promoted field, and it's equivalent to a.b.c.x, - // then mri.getReceiver() will give us the implicit field read a.b.c - // and we want to have post-update nodes for a, the implicit field - // read a.b and the implicit field read a.b.c. - insn = IR::lookThroughImplicitFieldRead*(mri.getReceiver()) - ) + insn = getAMethodReceiverInsn() ) and mutableType(insn.getResultType()) or @@ -1124,15 +1139,6 @@ module Public { right = DataFlow::exprNode(assgn.getRhs()) and op = o.substring(0, o.length() - 1) ) - or - exists(IR::EvalIncDecRhsInstruction rhs, IncDecStmt ids | - rhs = this.asInstruction() and ids = rhs.getStmt() - | - left = DataFlow::exprNode(ids.getOperand()) and - right = - DataFlow::instructionNode(any(IR::EvalImplicitOneInstruction one | one.getStmt() = ids)) and - op = ids.getOperator().charAt(0) - ) } /** Holds if this operation may have observable side effects. */ diff --git a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll index 4b04c84fc856..e985383c8cf4 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll @@ -336,25 +336,40 @@ private predicate isPossibleInputNode(DataFlow::Node inputNode, FuncDef fd) { * an expression which data flows to from `inputNode`. */ private ControlFlow::Node getANonTestPassingPredecessor( - ControlFlow::Node succ, DataFlow::Node inputNode + ControlFlow::Node succ, DataFlow::Node inputNode, FuncDef fd ) { - isPossibleInputNode(inputNode, succ.getRoot()) and + succ.getRoot() = fd and + isPossibleInputNode(inputNode, fd) and result = succ.getAPredecessor() and - not exists(Expr testExpr, DataFlow::Node switchExprNode | + not exists(DataFlow::Node switchExprNode | flowsToSwitchExpression(inputNode, switchExprNode) and - ControlFlow::isSwitchCaseTestPassingEdge(result, succ, switchExprNode.asExpr(), testExpr) and - testExpr.isConst() + // The case body is reachable only by matching a constant: at least one of + // the case's test expressions is constant, and none of them is + // non-constant. (All test expressions of a case share the same matched + // edge `result -> succ`, so a case mixing constant and non-constant tests + // must not be treated as a constant-only match.) + exists(Expr testExpr | + ControlFlow::isSwitchCaseTestPassingEdge(result, succ, switchExprNode.asExpr(), testExpr) and + testExpr.isConst() + ) and + not exists(Expr nonConstTestExpr | + ControlFlow::isSwitchCaseTestPassingEdge(result, succ, switchExprNode.asExpr(), + nonConstTestExpr) and + not nonConstTestExpr.isConst() + ) ) } private ControlFlow::Node getANonTestPassingReachingNodeRecursive( - ControlFlow::Node n, DataFlow::Node inputNode + ControlFlow::Node n, DataFlow::Node inputNode, FuncDef fd ) { - isPossibleInputNode(inputNode, n.getRoot()) and + n.getRoot() = fd and + isPossibleInputNode(inputNode, fd) and ( result = n or result = - getANonTestPassingReachingNodeRecursive(getANonTestPassingPredecessor(n, inputNode), inputNode) + getANonTestPassingReachingNodeRecursive(getANonTestPassingPredecessor(n, inputNode, fd), + inputNode, fd) ) } @@ -366,7 +381,7 @@ private ControlFlow::Node getANonTestPassingReachingNodeRecursive( private ControlFlow::Node getANonTestPassingReachingNodeBase( IR::ReturnInstruction ret, DataFlow::Node inputNode ) { - result = getANonTestPassingReachingNodeRecursive(ret, inputNode) + result = getANonTestPassingReachingNodeRecursive(ret, inputNode, ret.getRoot()) } /** diff --git a/go/ql/lib/semmle/go/frameworks/Glog.qll b/go/ql/lib/semmle/go/frameworks/Glog.qll index 9715cc910733..eb7210fd36d8 100644 --- a/go/ql/lib/semmle/go/frameworks/Glog.qll +++ b/go/ql/lib/semmle/go/frameworks/Glog.qll @@ -59,7 +59,7 @@ module Glog { /** Holds if this function takes a format string. */ predicate formatter() { format = "f" } - override predicate mayReturnNormally() { level != "Fatal" and level != "Exit" } + override predicate mustNotReturnNormally() { level = "Fatal" or level = "Exit" } } private class StringFormatter extends StringOps::Formatting::Range instanceof GlogFunction { diff --git a/go/ql/lib/semmle/go/frameworks/Logrus.qll b/go/ql/lib/semmle/go/frameworks/Logrus.qll index 069764318d57..c3e3a1051acf 100644 --- a/go/ql/lib/semmle/go/frameworks/Logrus.qll +++ b/go/ql/lib/semmle/go/frameworks/Logrus.qll @@ -29,11 +29,9 @@ module Logrus { ) } - override predicate mayReturnNormally() { - not exists(string level, string suffix | level = ["Fatal", "Panic"] | - this.getName() = level + suffix - ) - } + override predicate mustNotReturnNormally() { this.getName() = "Fatal" + any(string suffix) } + + override predicate mustPanic() { this.getName() = "Panic" + any(string suffix) } } private class StringFormatters extends StringOps::Formatting::Range instanceof LogFunction { @@ -46,4 +44,11 @@ module Logrus { override int getFormatStringIndex() { result = argOffset } } + + /** The `Exit` function, which ends the process. */ + private class Exit extends Function { + Exit() { this.hasQualifiedName(packagePath(), "Exit") } + + override predicate mustNotReturnNormally() { any() } + } } diff --git a/go/ql/lib/semmle/go/frameworks/Revel.qll b/go/ql/lib/semmle/go/frameworks/Revel.qll index c6250c2f8a51..085db1d2b0a8 100644 --- a/go/ql/lib/semmle/go/frameworks/Revel.qll +++ b/go/ql/lib/semmle/go/frameworks/Revel.qll @@ -154,7 +154,7 @@ module Revel { private IR::EvalInstruction skipImplicitFieldReads(IR::Instruction insn) { result = insn or - result = skipImplicitFieldReads(insn.(IR::ImplicitFieldReadInstruction).getBase()) + result = skipImplicitFieldReads(insn.(IR::ImplicitFieldReadInstruction).getBaseInstruction()) } /** A call to `Controller.Render`. */ diff --git a/go/ql/lib/semmle/go/frameworks/WebSocket.qll b/go/ql/lib/semmle/go/frameworks/WebSocket.qll index 36c6db5c4536..e8657d296b3f 100644 --- a/go/ql/lib/semmle/go/frameworks/WebSocket.qll +++ b/go/ql/lib/semmle/go/frameworks/WebSocket.qll @@ -102,10 +102,10 @@ module WebSocketRequestCall { /** * A call to the `Dial` function of the `nhooyr.io/websocket` package. */ - private class NhooyrWebSocketDialFunc extends Range { - NhooyrWebSocketDialFunc() { + private class CoderWebSocketDialFunc extends Range { + CoderWebSocketDialFunc() { // func Dial(ctx context.Context, u string, opts *DialOptions) (*Conn, *http.Response, error) - this.getTarget().hasQualifiedName(NhooyrWebSocket::packagePath(), "Dial") + this.getTarget().hasQualifiedName(CoderWebSocket::packagePath(), "Dial") } override DataFlow::Node getRequestUrl() { result = this.getArgument(1) } @@ -188,10 +188,10 @@ module WebSocketReader { /** * The `Conn.Read` method of the `nhooyr.io/websocket` package. */ - private class NhooyrWebSocketRead extends Range, Method { - NhooyrWebSocketRead() { + private class CoderWebSocketRead extends Range, Method { + CoderWebSocketRead() { // func (c *Conn) Read(ctx context.Context) (MessageType, []byte, error) - this.hasQualifiedName(NhooyrWebSocket::packagePath(), "Conn", "Read") + this.hasQualifiedName(CoderWebSocket::packagePath(), "Conn", "Read") } override FunctionOutput getAnOutput() { result.isResult(1) } @@ -200,10 +200,10 @@ module WebSocketReader { /** * The `Conn.Reader` method of the `nhooyr.io/websocket` package. */ - private class NhooyrWebSocketReader extends Range, Method { - NhooyrWebSocketReader() { + private class CoderWebSocketReader extends Range, Method { + CoderWebSocketReader() { // func (c *Conn) Reader(ctx context.Context) (MessageType, io.Reader, error) - this.hasQualifiedName(NhooyrWebSocket::packagePath(), "Conn", "Reader") + this.hasQualifiedName(CoderWebSocket::packagePath(), "Conn", "Reader") } override FunctionOutput getAnOutput() { result.isResult(1) } @@ -313,12 +313,14 @@ module GolangOrgXNetWebsocket { } /** - * Provides classes for working with the [nhooyr.io/websocket](http://nhooyr.io/websocket) + * Provides classes for working with the [coder/websocket](http://github.com/coder/websocket) * package. */ -module NhooyrWebSocket { - /** Gets the package name `nhooyr.io/websocket/`. */ - string packagePath() { result = package("nhooyr.io/websocket", "") } +module CoderWebSocket { + /** Gets the package name `github.com/coder/websocket` or `nhooyr.io/websocket`. */ + string packagePath() { + result = package(["github.com/coder/websocket", "nhooyr.io/websocket"], "") + } } /** diff --git a/go/ql/lib/semmle/go/frameworks/Zap.qll b/go/ql/lib/semmle/go/frameworks/Zap.qll index cf0abcd9336e..95947d22116e 100644 --- a/go/ql/lib/semmle/go/frameworks/Zap.qll +++ b/go/ql/lib/semmle/go/frameworks/Zap.qll @@ -54,7 +54,7 @@ module Zap { this.hasQualifiedName(packagePath(), "SugaredLogger", "Fatal" + getSuffix()) } - override predicate mayReturnNormally() { none() } + override predicate mustNotReturnNormally() { any() } } /** A Zap logging function which always panics. */ diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/EncodingJson.qll b/go/ql/lib/semmle/go/frameworks/stdlib/EncodingJson.qll index bf6e25ff9f12..e04f9392def7 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/EncodingJson.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/EncodingJson.qll @@ -41,9 +41,15 @@ module EncodingJson { FunctionOutput outp; FunctionModels() { - // signature: func NewEncoder(w io.Writer) *Encoder - this.hasQualifiedName("encoding/json", "NewEncoder") and - (inp.isResult() and outp.isParameter(0)) + ( + // signature: func NewEncoder(w io.Writer) *Encoder + this.hasQualifiedName("encoding/json", "NewEncoder") + or + // signature: func NewEncoder(w io.Writer, opts ...Options) *Encoder + this.hasQualifiedName("encoding/json/jsontext", "NewEncoder") + ) and + inp.isResult() and + outp.isParameter(0) } override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/Log.qll b/go/ql/lib/semmle/go/frameworks/stdlib/Log.qll index 1ff1a4b320fa..fece3cbab9ae 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/Log.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/Log.qll @@ -44,7 +44,7 @@ module Log { ) } - override predicate mayReturnNormally() { none() } + override predicate mustNotReturnNormally() { any() } } /** A log function which must panic. */ diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/Os.qll b/go/ql/lib/semmle/go/frameworks/stdlib/Os.qll index 0a633de08c82..6a3550e1cbd4 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/Os.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/Os.qll @@ -12,7 +12,7 @@ module Os { private class Exit extends Function { Exit() { this.hasQualifiedName("os", "Exit") } - override predicate mayReturnNormally() { none() } + override predicate mustNotReturnNormally() { any() } } // These models are not implemented using Models-as-Data because they represent reverse flow. diff --git a/go/ql/lib/semmle/go/security/AllocationSizeOverflowCustomizations.qll b/go/ql/lib/semmle/go/security/AllocationSizeOverflowCustomizations.qll index 3eced801f209..789aaec04a16 100644 --- a/go/ql/lib/semmle/go/security/AllocationSizeOverflowCustomizations.qll +++ b/go/ql/lib/semmle/go/security/AllocationSizeOverflowCustomizations.qll @@ -73,7 +73,9 @@ module AllocationSizeOverflow { private predicate allocationSizeCheck(DataFlow::Node g, Expr e, boolean branch) { exists(DataFlow::Node lesser | - g.(DataFlow::RelationalComparisonNode).leq(branch, lesser, _, _) and + pragma[only_bind_into](g) + .(DataFlow::RelationalComparisonNode) + .leq(pragma[only_bind_into](branch), pragma[only_bind_into](lesser), _, _) and not lesser.isConst() and globalValueNumber(DataFlow::exprNode(e)) = globalValueNumber(lesser) ) diff --git a/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/go.dbscheme b/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/go.dbscheme new file mode 100644 index 000000000000..d0e7336b491e --- /dev/null +++ b/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/go.dbscheme @@ -0,0 +1,564 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx, is_from_recv] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, + int bound: @compositetype ref, int parent: @typeparamparentobject ref, int idx: int ref, boolean is_from_recv: boolean ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr +| 55 = @rangeelementexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/old.dbscheme b/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/old.dbscheme new file mode 100644 index 000000000000..5ff5325d274a --- /dev/null +++ b/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/old.dbscheme @@ -0,0 +1,563 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx, is_from_recv] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, + int bound: @compositetype ref, int parent: @typeparamparentobject ref, int idx: int ref, boolean is_from_recv: boolean ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/upgrade.properties b/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/upgrade.properties new file mode 100644 index 000000000000..1a8bbabd727f --- /dev/null +++ b/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/upgrade.properties @@ -0,0 +1,5 @@ +description: Add @rangeelementexpr, grouping the loop variables of a range statement +compatibility: full + +exprs.rel: run upgrade.qlo new_exprs +has_location.rel: run upgrade.qlo new_has_location diff --git a/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/upgrade.ql b/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/upgrade.ql new file mode 100644 index 000000000000..cbf128324d8a --- /dev/null +++ b/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/upgrade.ql @@ -0,0 +1,69 @@ +class Expr extends @expr { + string toString() { none() } +} + +class ExprParent extends @exprparent { + string toString() { none() } +} + +class RangeStmt extends @rangestmt { + string toString() { none() } +} + +class Location extends @location { + string toString() { none() } +} + +newtype TAddedExpr = TRangeElement(RangeStmt stmt) + +module Fresh = QlBuiltins::NewEntity; + +class TNewExpr = @expr or Fresh::EntityId; + +class NewExpr extends TNewExpr { + string toString() { none() } +} + +class TNewExprParent = @exprparent or Fresh::EntityId; + +class NewExprParent extends TNewExprParent { + string toString() { none() } +} + +class TNewLocatable = @locatable or Fresh::EntityId; + +class NewLocatable extends TNewLocatable { + string toString() { none() } +} + +predicate isRangeElementChild(ExprParent parent, int idx, RangeStmt range) { + parent = range and + idx in [0 .. 1] +} + +query predicate new_exprs(NewExpr id, int kind, NewExprParent parent, int idx) { + exists(RangeStmt range | + id = Fresh::map(TRangeElement(range)) and + kind = 55 and + parent = range and + idx = 0 + ) + or + exists(ExprParent oldParent | exprs(id, kind, oldParent, idx) | + exists(RangeStmt range | isRangeElementChild(oldParent, idx, range) | + parent = Fresh::map(TRangeElement(range)) + ) + or + not isRangeElementChild(oldParent, idx, _) and + parent = oldParent + ) +} + +query predicate new_has_location(NewLocatable locatable, Location location) { + has_location(locatable, location) + or + exists(RangeStmt range | + locatable = Fresh::map(TRangeElement(range)) and + has_location(range, location) + ) +} diff --git a/go/ql/lib/upgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/go.dbscheme b/go/ql/lib/upgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/go.dbscheme new file mode 100644 index 000000000000..b4012cfa6fa7 --- /dev/null +++ b/go/ql/lib/upgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/go.dbscheme @@ -0,0 +1,565 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +isParenthesized(unique int id: @expr ref, int parentheses: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx, is_from_recv] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, + int bound: @compositetype ref, int parent: @typeparamparentobject ref, int idx: int ref, boolean is_from_recv: boolean ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr +| 55 = @rangeelementexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; diff --git a/go/ql/lib/upgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/old.dbscheme b/go/ql/lib/upgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/old.dbscheme new file mode 100644 index 000000000000..d0e7336b491e --- /dev/null +++ b/go/ql/lib/upgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/old.dbscheme @@ -0,0 +1,564 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx, is_from_recv] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, + int bound: @compositetype ref, int parent: @typeparamparentobject ref, int idx: int ref, boolean is_from_recv: boolean ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr +| 55 = @rangeelementexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/ql/lib/upgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/upgrade.properties b/go/ql/lib/upgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/upgrade.properties new file mode 100644 index 000000000000..3874b6cb69b2 --- /dev/null +++ b/go/ql/lib/upgrades/d0e7336b491e35a4c890e0b9755a4030d32ee444/upgrade.properties @@ -0,0 +1,2 @@ +description: Add table recording the number of parentheses around expressions +compatibility: backwards diff --git a/go/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/go/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 1cf2f5ea1d9b..0d7462c57056 100644 --- a/go/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/go/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import go private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/go/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/go/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index 3bdc948842c7..3084c4846795 100644 --- a/go/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/go/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -20,4 +20,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = G::Location; + + string getRelativeUrl(Location location) { + exists(G::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 96239d742d4a..9714c3bcc62c 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.6.13 + +No user-facing changes. + +## 1.6.12 + +No user-facing changes. + +## 1.6.11 + +No user-facing changes. + ## 1.6.10 No user-facing changes. diff --git a/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql b/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql index 176e34bc9bbb..b36177fdc823 100644 --- a/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql +++ b/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql @@ -51,6 +51,13 @@ ControlFlow::ConditionGuardNode getLengthLEGuard(Index index, DataFlow::SsaNode ) } +predicate isDominatingLengthLEGuard( + ControlFlow::ConditionGuardNode guard, Index index, DataFlow::SsaNode array, BasicBlock bb +) { + guard = getLengthLEGuard(index, array) and + guard.dominates(bb) +} + /** * Gets a condition that checks that `index` is not equal to `array.length`. */ @@ -81,19 +88,22 @@ from ControlFlow::ConditionGuardNode cond, DataFlow::SsaNode array, Index index, DataFlow::ElementReadNode ea, BasicBlock bb where - // there is a comparison `index <= len(array)` - cond = getLengthLEGuard(index, array) and // there is a read from `array[index]` elementRead(ea, array, index, bb) and - // and the read is guarded by the comparison - cond.dominates(bb) and + // and it is guarded by a comparison `index <= len(array)` + isDominatingLengthLEGuard(cond, index, array, bb) and + // and report the innermost guard that establishes the comparison + not exists(ControlFlow::ConditionGuardNode innerCond | + isDominatingLengthLEGuard(innerCond, index, array, bb) and + innerCond.getCondition().getParent+() = cond.getCondition() + ) and // but the read is not guarded by another check that `index != len(array)` not getLengthNEGuard(index, array).dominates(bb) and // and it is not additionally guarded by a stronger index check not exists(Index index2, int i, int i2 | index = ConstantIndex(i) and index2 = ConstantIndex(i2) and i < i2 | - getLengthLEGuard(index2, array).dominates(bb) + isDominatingLengthLEGuard(_, index2, array, bb) ) and not isRegexpMethodCall(array.getInit()) select cond.getCondition(), diff --git a/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql b/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql index 7e2846cf6b2f..77706822f1fb 100644 --- a/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql +++ b/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql @@ -67,20 +67,31 @@ class HarmlessNestedExpr extends BinaryExpr { */ predicate interestingNesting(BinaryExpr inner, BinaryExpr outer) { inner = outer.getAChildExpr() and + not isParenthesized(inner, _) and not inner instanceof AssocNestedExpr and not inner instanceof HarmlessNestedExpr } +private int getNumberOfParentheses(Expr expr) { + isParenthesized(expr, result) + or + not isParenthesized(expr, _) and result = 0 +} + /** Gets the number of whitespace characters around the operator `op` of `be`. */ int getWhitespaceAroundOperator(BinaryExpr be, string op) { - exists(Location left, Location right | + exists(Location left, Location right, int leftParens, int rightParens | be.getLeftOperand().getLocation() = left and be.getRightOperand().getLocation() = right and left.getFile() = right.getFile() and - left.getStartLine() = right.getStartLine() + left.getStartLine() = right.getStartLine() and + leftParens = getNumberOfParentheses(be.getLeftOperand()) and + rightParens = getNumberOfParentheses(be.getRightOperand()) | op = be.getOperator() and - result = (right.getStartColumn() - left.getEndColumn() - op.length() - 1) / 2 + result = + (right.getStartColumn() - left.getEndColumn() - op.length() - leftParens - rightParens - 1) / + 2 ) } diff --git a/go/ql/src/RedundantCode/DeadStoreOfField.ql b/go/ql/src/RedundantCode/DeadStoreOfField.ql index 4a971343823b..fbe0fcf04c2e 100644 --- a/go/ql/src/RedundantCode/DeadStoreOfField.ql +++ b/go/ql/src/RedundantCode/DeadStoreOfField.ql @@ -86,7 +86,7 @@ Type getTypeEmbeddedViaPointer(Type t) { result = getEmbeddedType*(getEmbeddedType(getEmbeddedType*(t), true)) } -from Write w, LocalVariable v, Field f +from Write w, LocalVariable v, Field f, Expr lhs where // `w` writes `f` on `v` w.writesFieldPreUpdate(v.getARead(), f, _) and @@ -97,5 +97,9 @@ where // exclude escaping `v`; there may be reads in other functions not exists(Read r | r.reads(v) | escapes(r)) and // exclude fields promoted through an embedded pointer type - not f = getTypeEmbeddedViaPointer(v.getType()).getField(_) -select w, "This assignment to " + f + " is useless since its value is never read." + not f = getTypeEmbeddedViaPointer(v.getType()).getField(_) and + // Report the assigned field expression rather than the whole write instruction. A field write + // `v.f = ...` always has an explicit left-hand side expression (the `v.f` selector), so this + // does not drop any results. + lhs = w.getLhs().getExpr() +select lhs, "This assignment to " + f + " is useless since its value is never read." diff --git a/go/ql/src/RedundantCode/DeadStoreOfLocal.ql b/go/ql/src/RedundantCode/DeadStoreOfLocal.ql index 3e3642f92db1..2b6886222aa4 100644 --- a/go/ql/src/RedundantCode/DeadStoreOfLocal.ql +++ b/go/ql/src/RedundantCode/DeadStoreOfLocal.ql @@ -26,10 +26,10 @@ predicate isSimple(IR::Instruction nd) { nd = IR::implicitInitInstruction(_) or // don't flag parameters - nd instanceof IR::ReadArgumentInstruction + nd instanceof IR::InitParameterInstruction } -from IR::Instruction def, SsaSourceVariable target, IR::Instruction rhs +from IR::WriteInstruction def, SsaSourceVariable target, IR::Instruction rhs, Expr lhs where def.writes(target, rhs) and not exists(SsaExplicitDefinition ssa | ssa.getInstruction() = def) and @@ -37,8 +37,17 @@ where def.getBasicBlock() instanceof ReachableBasicBlock and // exclude assignments with default values or simple expressions not isSimple(rhs) and - // exclude variables that are not used at all - exists(target.getAReference()) and + // exclude variables that are not used in reachable code + exists(IR::Instruction ref | + ref != def and + (ref.reads(target) or ref.writes(target, _)) + ) and // exclude variables with indirect references - not target.mayHaveIndirectReferences() -select def, "This definition of " + target + " is never used." + not target.mayHaveIndirectReferences() and + // Report the assigned variable rather than the whole write instruction. A write to an + // `SsaSourceVariable` that survives the `SsaExplicitDefinition` exclusion above always has an + // explicit left-hand side expression (writes without one, such as result-variable writes at a + // `return`, are `SsaExplicitDefinition`s and so are already excluded), so this does not drop + // any results. + lhs = def.getLhs().getExpr() +select lhs, "This definition of " + target + " is never used." diff --git a/go/ql/src/RedundantCode/DuplicateBranches.ql b/go/ql/src/RedundantCode/DuplicateBranches.ql index 589aa55246cd..0640fc8fcbbc 100644 --- a/go/ql/src/RedundantCode/DuplicateBranches.ql +++ b/go/ql/src/RedundantCode/DuplicateBranches.ql @@ -23,4 +23,4 @@ where thenBranch = is.getThen() and elseBranch = is.getElse() and thenBranch.hash() = elseBranch.hash() -select is.getCond(), "The 'then' and 'else' branches of this if statement are identical." +select is.getCondition(), "The 'then' and 'else' branches of this if statement are identical." diff --git a/go/ql/src/RedundantCode/DuplicateCondition.ql b/go/ql/src/RedundantCode/DuplicateCondition.ql index e0ea97980438..9a256d0519f7 100644 --- a/go/ql/src/RedundantCode/DuplicateCondition.ql +++ b/go/ql/src/RedundantCode/DuplicateCondition.ql @@ -16,7 +16,7 @@ import go /** Gets the `i`th condition in the `if`-`else if` chain starting at `stmt`. */ Expr getCondition(IfStmt stmt, int i) { - i = 0 and result = stmt.getCond() + i = 0 and result = stmt.getCondition() or exists(IfStmt elsif | elsif = stmt.getElse() | not exists(elsif.getInit()) and diff --git a/go/ql/src/RedundantCode/UnreachableStatement.ql b/go/ql/src/RedundantCode/UnreachableStatement.ql index 12b035049e9e..edd2b17ab674 100644 --- a/go/ql/src/RedundantCode/UnreachableStatement.ql +++ b/go/ql/src/RedundantCode/UnreachableStatement.ql @@ -14,11 +14,45 @@ import go -ControlFlow::Node nonGuardPredecessor(ControlFlow::Node nd) { - exists(ControlFlow::Node pred | pred = nd.getAPredecessor() | - if pred instanceof ControlFlow::ConditionGuardNode - then result = nonGuardPredecessor(pred) - else result = pred +/** + * Holds if `s` is reachable, that is, the control-flow graph contains a node for it. + * + * The shared control-flow library does not create control-flow nodes for dead code, so an + * unreachable statement has no first control-flow node. + */ +predicate isReachable(Stmt s) { exists(s.getFirstControlFlowNode()) } + +/** Gets the statement immediately preceding `s` in a statement list, if any. */ +Stmt getPreviousStmt(Stmt s) { + exists(BlockStmt b, int i | s = b.getStmt(i) and result = b.getStmt(i - 1)) + or + exists(CaseClause c, int i | s = c.getStmt(i) and result = c.getStmt(i - 1)) + or + exists(CommClause c, int i | s = c.getStmt(i) and result = c.getStmt(i - 1)) +} + +/** + * Holds if `s` is unreachable but the code that would precede it in the control-flow graph is + * reachable, so that `s` is the first unreachable statement in a run of dead code. + */ +predicate firstUnreachableStmt(Stmt s) { + not isReachable(s) and + ( + // a statement whose preceding statement in the same list is reachable + isReachable(getPreviousStmt(s)) + or + // the post statement of a `for` loop whose body is entered + exists(ForStmt f | s = f.getPost() and isReachable(f.getBody().getAStmt())) + ) +} + +/** Holds if `s` is in a run of unreachable statements following a constant condition. */ +predicate isInUnreachableRunAfterConstantCondition(Stmt s) { + not isReachable(s) and + ( + exists(getPreviousStmt(s).(IfStmt).getCondition().getBoolValue()) + or + isInUnreachableRunAfterConstantCondition(getPreviousStmt(s)) ) } @@ -53,6 +87,8 @@ predicate isAllowedReturnValue(Expr retval) { * Matches if `s` is an allowed unreachable statement. */ predicate allowlist(Stmt s) { + s instanceof EmptyStmt + or // `panic("unreachable")` and similar exists(CallExpr ce | ce = s.(ExprStmt).getExpr() or ce = s.(ReturnStmt).getExpr() | ce.getTarget().mustPanic() or ce.getCalleeName().toLowerCase() = "error" @@ -62,19 +98,28 @@ predicate allowlist(Stmt s) { exists(ReturnStmt ret | ret = s | forall(Expr retval | retval = ret.getAnExpr() | isAllowedReturnValue(retval)) ) - or - // statements in an `if false { ... }` and similar - exists(IfStmt is, ControlFlow::ConditionGuardNode iffalse, Expr cond, boolean b | - iffalse.getCondition() = is.getCond() and - iffalse = s.getFirstControlFlowNode().getAPredecessor() and - cond.getBoolValue() = b and - iffalse.ensures(DataFlow::exprNode(cond), b.booleanNot()) +} + +Stmt firstNonAllowlisted(Stmt s) { + not isReachable(s) and + ( + not allowlist(s) and result = s + or + allowlist(s) and + exists(Stmt next | getPreviousStmt(next) = s | result = firstNonAllowlisted(next)) + ) +} + +/** Holds if `s` is the first non-allowlisted statement in a run of unreachable statements. */ +predicate firstNonAllowlistedUnreachableStmt(Stmt s) { + exists(Stmt unreachable | + firstUnreachableStmt(unreachable) and + s = firstNonAllowlisted(unreachable) ) } -from Stmt s, ControlFlow::Node fst +from Stmt s where - fst = s.getFirstControlFlowNode() and - not exists(nonGuardPredecessor(fst)) and - not allowlist(s) + firstNonAllowlistedUnreachableStmt(s) and + not isInUnreachableRunAfterConstantCondition(s) select s, "This statement is unreachable." diff --git a/go/ql/src/Security/CWE-312/CleartextLogging.qhelp b/go/ql/src/Security/CWE-312/CleartextLogging.qhelp index e8326e59999b..9e35d1713678 100644 --- a/go/ql/src/Security/CWE-312/CleartextLogging.qhelp +++ b/go/ql/src/Security/CWE-312/CleartextLogging.qhelp @@ -44,7 +44,7 @@ Instead, the credentials should be encrypted, obfuscated, or omitted entirely:
    • M. Dowd, J. McDonald and J. Schuhm, The Art of Software Security Assessment, 1st Edition, Chapter 2 - 'Common Vulnerabilities of Encryption', p. 43. Addison Wesley, 2006.
    • M. Howard and D. LeBlanc, Writing Secure Code, 2nd Edition, Chapter 9 - 'Protecting Secret Data', p. 299. Microsoft, 2002.
    • -
    • OWASP: Password Plaintext Storage.
    • +
    • OWASP: Logging Cheat Sheet.
    • diff --git a/go/ql/src/change-notes/released/1.6.11.md b/go/ql/src/change-notes/released/1.6.11.md new file mode 100644 index 000000000000..cd335cb7d261 --- /dev/null +++ b/go/ql/src/change-notes/released/1.6.11.md @@ -0,0 +1,3 @@ +## 1.6.11 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.6.12.md b/go/ql/src/change-notes/released/1.6.12.md new file mode 100644 index 000000000000..1e23a10579f9 --- /dev/null +++ b/go/ql/src/change-notes/released/1.6.12.md @@ -0,0 +1,3 @@ +## 1.6.12 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.6.13.md b/go/ql/src/change-notes/released/1.6.13.md new file mode 100644 index 000000000000..f15eb488f526 --- /dev/null +++ b/go/ql/src/change-notes/released/1.6.13.md @@ -0,0 +1,3 @@ +## 1.6.13 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 995e7a94a564..c34c18075123 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.10 +lastReleaseVersion: 1.6.13 diff --git a/go/ql/src/experimental/CWE-942/CorsMisconfiguration.ql b/go/ql/src/experimental/CWE-942/CorsMisconfiguration.ql index 342f1addfe06..d0ef8514d5f9 100644 --- a/go/ql/src/experimental/CWE-942/CorsMisconfiguration.ql +++ b/go/ql/src/experimental/CWE-942/CorsMisconfiguration.ql @@ -176,7 +176,7 @@ module FromUntrustedConfig implements DataFlow::ConfigSig { additional predicate isSinkCgn(DataFlow::Node sink, ControlFlow::ConditionGuardNode cgn) { exists(IfStmt ifs | exists(Expr operand | - operand = ifs.getCond().getAChildExpr*() and + operand = ifs.getCondition().getAChildExpr*() and ( exists(DataFlow::CallExpr call | call = operand | call.getTarget().hasQualifiedName("strings", "HasSuffix") and @@ -202,7 +202,7 @@ module FromUntrustedConfig implements DataFlow::ConfigSig { ) ) | - cgn.getCondition() = ifs.getCond() + cgn.getCondition() = ifs.getCondition() ) } } diff --git a/go/ql/src/experimental/IntegerOverflow/RangeAnalysis.qll b/go/ql/src/experimental/IntegerOverflow/RangeAnalysis.qll index f3f4c15f0085..2d7e249fbc03 100644 --- a/go/ql/src/experimental/IntegerOverflow/RangeAnalysis.qll +++ b/go/ql/src/experimental/IntegerOverflow/RangeAnalysis.qll @@ -31,12 +31,6 @@ float getAnUpperBound(Expr expr) { if expr.isConst() then result = expr.getNumericValue() else ( - //if an expression with parenthesis, strip the parenthesis first - exists(ParenExpr paren | - paren = expr and - result = getAnUpperBound(paren.stripParens()) - ) - or //if this expression is an identifier exists(SsaVariable v, Ident identifier | identifier = expr and @@ -188,11 +182,6 @@ float getALowerBound(Expr expr) { result = expr.getIntValue() or result = expr.getExactValue().toFloat() else ( - exists(ParenExpr paren | - paren = expr and - result = getALowerBound(paren.stripParens()) - ) - or //if this expression is an identifer exists(SsaVariable v, Ident identifier | identifier = expr and @@ -389,12 +378,13 @@ float getAnSsaUpperBound(SsaDefinition def) { ) else //SSA definition corresponding to an `IncDecStmt` - if explicitDef.getInstruction() instanceof IR::IncDecInstruction + if + explicitDef.getInstruction().(IR::EvalCompoundAssignRhsInstruction).getStmt() instanceof + IncDecStmt then - exists(IncDecStmt incOrDec, IR::IncDecInstruction instr, float exprLB | - instr = explicitDef.getInstruction() and + exists(IncDecStmt incOrDec, float exprLB | + explicitDef.getInstruction().(IR::EvalCompoundAssignRhsInstruction).getStmt() = incOrDec and exprLB = getAnUpperBound(incOrDec.getOperand()) and - instr.getRhs().(IR::EvalIncDecRhsInstruction).getStmt() = incOrDec and ( //IncStmt(x++) exists(IncStmt inc | @@ -475,12 +465,13 @@ float getAnSsaLowerBound(SsaDefinition def) { ) else //IncDecStmt - if explicitDef.getInstruction() instanceof IR::IncDecInstruction + if + explicitDef.getInstruction().(IR::EvalCompoundAssignRhsInstruction).getStmt() instanceof + IncDecStmt then - exists(IncDecStmt incOrDec, IR::IncDecInstruction instr, float exprLB | - instr = explicitDef.getInstruction() and + exists(IncDecStmt incOrDec, float exprLB | + explicitDef.getInstruction().(IR::EvalCompoundAssignRhsInstruction).getStmt() = incOrDec and exprLB = getALowerBound(incOrDec.getOperand()) and - instr.getRhs().(IR::EvalIncDecRhsInstruction).getStmt() = incOrDec and ( //IncStmt(x++) exists(IncStmt inc | @@ -550,9 +541,7 @@ predicate ssaDependsOnSsa(SsaDefinition nextDef, SsaDefinition prevDef) { nextDef .(SsaExplicitDefinition) .getInstruction() - .(IR::IncDecInstruction) - .getRhs() - .(IR::EvalIncDecRhsInstruction) + .(IR::EvalCompoundAssignRhsInstruction) .getStmt() = incDec and ssaDependsOnExpr(prevDef, incDec.getOperand()) ) @@ -571,12 +560,6 @@ predicate ssaDependsOnExpr(SsaDefinition def, Expr expr) { if expr.isConst() then none() else ( - //if an expression with parenthesis, strip the parenthesis - exists(ParenExpr paren | - paren = expr and - ssaDependsOnExpr(def, paren.stripParens()) - ) - or exists(Ident ident | ident = expr and getAUse(def) = ident diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index bc9f243309af..79275c87087c 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.6.10 +version: 1.6.13 groups: - go - queries diff --git a/go/ql/test/example-tests/snippets/fieldwrite.expected b/go/ql/test/example-tests/snippets/fieldwrite.expected index 26c7f7b90f81..2819dac1c658 100644 --- a/go/ql/test/example-tests/snippets/fieldwrite.expected +++ b/go/ql/test/example-tests/snippets/fieldwrite.expected @@ -1 +1 @@ -| main.go:23:3:23:13 | assignment to field Status | main.go:23:17:23:21 | "200" | +| main.go:23:3:23:21 | assign:0 ... = ... | main.go:23:17:23:21 | "200" | diff --git a/go/ql/test/example-tests/snippets/typeinfo.expected b/go/ql/test/example-tests/snippets/typeinfo.expected index c3a0ff5dacb2..692838d50e98 100644 --- a/go/ql/test/example-tests/snippets/typeinfo.expected +++ b/go/ql/test/example-tests/snippets/typeinfo.expected @@ -3,6 +3,6 @@ | file://:0:0:0:0 | [summary param] -1 in Write | | file://:0:0:0:0 | [summary param] -1 in WriteProxy | | main.go:18:12:18:14 | SSA def(req) | -| main.go:18:12:18:14 | argument corresponding to req | +| main.go:18:12:18:14 | req | | main.go:20:5:20:7 | req | | main.go:20:5:20:7 | req [postupdate] | diff --git a/go/ql/test/example-tests/snippets/varwrite.expected b/go/ql/test/example-tests/snippets/varwrite.expected index b2c06e76a27b..8b35595f4a82 100644 --- a/go/ql/test/example-tests/snippets/varwrite.expected +++ b/go/ql/test/example-tests/snippets/varwrite.expected @@ -1 +1 @@ -| main.go:29:2:29:4 | assignment to err | main.go:29:9:29:31 | call to test1 | +| main.go:29:2:29:31 | assign:0 ... := ... | main.go:29:9:29:31 | call to test1 | diff --git a/go/ql/test/experimental/CWE-203/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/CWE-203/CONSISTENCY/DataFlowConsistency.expected index 0bd77bfcaa2d..cabe6568e9c0 100644 --- a/go/ql/test/experimental/CWE-203/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/CWE-203/CONSISTENCY/DataFlowConsistency.expected @@ -1,5 +1,5 @@ reverseRead -| timing.go:15:18:15:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| timing.go:28:18:28:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| timing.go:41:18:41:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| timing.go:53:18:53:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| timing.go:15:18:15:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| timing.go:28:18:28:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| timing.go:41:18:41:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| timing.go:53:18:53:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/experimental/CWE-285/PamAuthBypass.expected b/go/ql/test/experimental/CWE-285/PamAuthBypass.expected index 23441b3361e5..f7bc883d2d5b 100644 --- a/go/ql/test/experimental/CWE-285/PamAuthBypass.expected +++ b/go/ql/test/experimental/CWE-285/PamAuthBypass.expected @@ -1 +1 @@ -| main.go:10:2:12:3 | ... := ...[0] | This Pam transaction may not be secure. | \ No newline at end of file +| main.go:10:2:12:3 | extract:0 ... := ... | This Pam transaction may not be secure. | diff --git a/go/ql/test/experimental/CWE-287/CONSISTENCY/CfgConsistency.expected b/go/ql/test/experimental/CWE-287/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/experimental/CWE-287/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/CWE-287/CONSISTENCY/DataFlowConsistency.expected index c77e608378d5..a45a61725b92 100644 --- a/go/ql/test/experimental/CWE-287/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/CWE-287/CONSISTENCY/DataFlowConsistency.expected @@ -1,4 +1,4 @@ reverseRead -| ImproperLdapAuth.go:18:18:18:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| ImproperLdapAuth.go:39:18:39:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| ImproperLdapAuth.go:64:18:64:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| ImproperLdapAuth.go:18:18:18:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| ImproperLdapAuth.go:39:18:39:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| ImproperLdapAuth.go:64:18:64:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/experimental/CWE-321-V2/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/CWE-321-V2/CONSISTENCY/DataFlowConsistency.expected index 3a9dc0286509..00934dd30c49 100644 --- a/go/ql/test/experimental/CWE-321-V2/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/CWE-321-V2/CONSISTENCY/DataFlowConsistency.expected @@ -1,3 +1,3 @@ reverseRead -| go-jose.v3.go:16:17:16:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| golang-jwt-v5.go:22:17:22:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| go-jose.v3.go:16:17:16:17 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| golang-jwt-v5.go:22:17:22:17 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/experimental/CWE-369/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/CWE-369/CONSISTENCY/DataFlowConsistency.expected index d2ae8651ea5e..2c48b7b383c9 100644 --- a/go/ql/test/experimental/CWE-369/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/CWE-369/CONSISTENCY/DataFlowConsistency.expected @@ -1,10 +1,10 @@ reverseRead -| DivideByZero.go:10:12:10:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| DivideByZero.go:17:12:17:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| DivideByZero.go:24:12:24:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| DivideByZero.go:31:12:31:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| DivideByZero.go:38:12:38:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| DivideByZero.go:45:12:45:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| DivideByZero.go:54:12:54:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| DivideByZero.go:63:12:63:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| DivideByZero.go:72:12:72:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| DivideByZero.go:10:12:10:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| DivideByZero.go:17:12:17:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| DivideByZero.go:24:12:24:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| DivideByZero.go:31:12:31:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| DivideByZero.go:38:12:38:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| DivideByZero.go:45:12:45:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| DivideByZero.go:54:12:54:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| DivideByZero.go:63:12:63:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| DivideByZero.go:72:12:72:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/experimental/CWE-369/DivideByZero.expected b/go/ql/test/experimental/CWE-369/DivideByZero.expected index 01211d9d107a..7f206a30c8a4 100644 --- a/go/ql/test/experimental/CWE-369/DivideByZero.expected +++ b/go/ql/test/experimental/CWE-369/DivideByZero.expected @@ -8,23 +8,23 @@ edges | DivideByZero.go:10:12:10:16 | selection of URL | DivideByZero.go:10:12:10:24 | call to Query | provenance | Src:MaD:1 MaD:2 | | DivideByZero.go:10:12:10:24 | call to Query | DivideByZero.go:11:27:11:32 | param1 | provenance | | -| DivideByZero.go:11:2:11:33 | ... := ...[0] | DivideByZero.go:12:16:12:20 | value | provenance | | -| DivideByZero.go:11:27:11:32 | param1 | DivideByZero.go:11:2:11:33 | ... := ...[0] | provenance | Config | +| DivideByZero.go:11:2:11:33 | extract:0 ... := ... | DivideByZero.go:12:16:12:20 | value | provenance | | +| DivideByZero.go:11:27:11:32 | param1 | DivideByZero.go:11:2:11:33 | extract:0 ... := ... | provenance | Config | | DivideByZero.go:17:12:17:16 | selection of URL | DivideByZero.go:17:12:17:24 | call to Query | provenance | Src:MaD:1 MaD:2 | | DivideByZero.go:17:12:17:24 | call to Query | DivideByZero.go:18:11:18:24 | type conversion | provenance | | | DivideByZero.go:18:11:18:24 | type conversion | DivideByZero.go:19:16:19:20 | value | provenance | | | DivideByZero.go:24:12:24:16 | selection of URL | DivideByZero.go:24:12:24:24 | call to Query | provenance | Src:MaD:1 MaD:2 | | DivideByZero.go:24:12:24:24 | call to Query | DivideByZero.go:25:31:25:36 | param1 | provenance | | -| DivideByZero.go:25:2:25:45 | ... := ...[0] | DivideByZero.go:26:16:26:20 | value | provenance | | -| DivideByZero.go:25:31:25:36 | param1 | DivideByZero.go:25:2:25:45 | ... := ...[0] | provenance | Config | +| DivideByZero.go:25:2:25:45 | extract:0 ... := ... | DivideByZero.go:26:16:26:20 | value | provenance | | +| DivideByZero.go:25:31:25:36 | param1 | DivideByZero.go:25:2:25:45 | extract:0 ... := ... | provenance | Config | | DivideByZero.go:31:12:31:16 | selection of URL | DivideByZero.go:31:12:31:24 | call to Query | provenance | Src:MaD:1 MaD:2 | | DivideByZero.go:31:12:31:24 | call to Query | DivideByZero.go:32:33:32:38 | param1 | provenance | | -| DivideByZero.go:32:2:32:43 | ... := ...[0] | DivideByZero.go:33:16:33:20 | value | provenance | | -| DivideByZero.go:32:33:32:38 | param1 | DivideByZero.go:32:2:32:43 | ... := ...[0] | provenance | Config | +| DivideByZero.go:32:2:32:43 | extract:0 ... := ... | DivideByZero.go:33:16:33:20 | value | provenance | | +| DivideByZero.go:32:33:32:38 | param1 | DivideByZero.go:32:2:32:43 | extract:0 ... := ... | provenance | Config | | DivideByZero.go:38:12:38:16 | selection of URL | DivideByZero.go:38:12:38:24 | call to Query | provenance | Src:MaD:1 MaD:2 | | DivideByZero.go:38:12:38:24 | call to Query | DivideByZero.go:39:32:39:37 | param1 | provenance | | -| DivideByZero.go:39:2:39:46 | ... := ...[0] | DivideByZero.go:40:16:40:20 | value | provenance | | -| DivideByZero.go:39:32:39:37 | param1 | DivideByZero.go:39:2:39:46 | ... := ...[0] | provenance | Config | +| DivideByZero.go:39:2:39:46 | extract:0 ... := ... | DivideByZero.go:40:16:40:20 | value | provenance | | +| DivideByZero.go:39:32:39:37 | param1 | DivideByZero.go:39:2:39:46 | extract:0 ... := ... | provenance | Config | | DivideByZero.go:54:12:54:16 | selection of URL | DivideByZero.go:54:12:54:24 | call to Query | provenance | Src:MaD:1 MaD:2 | | DivideByZero.go:54:12:54:24 | call to Query | DivideByZero.go:55:11:55:24 | type conversion | provenance | | | DivideByZero.go:55:11:55:24 | type conversion | DivideByZero.go:57:17:57:21 | value | provenance | | @@ -34,7 +34,7 @@ models nodes | DivideByZero.go:10:12:10:16 | selection of URL | semmle.label | selection of URL | | DivideByZero.go:10:12:10:24 | call to Query | semmle.label | call to Query | -| DivideByZero.go:11:2:11:33 | ... := ...[0] | semmle.label | ... := ...[0] | +| DivideByZero.go:11:2:11:33 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | DivideByZero.go:11:27:11:32 | param1 | semmle.label | param1 | | DivideByZero.go:12:16:12:20 | value | semmle.label | value | | DivideByZero.go:17:12:17:16 | selection of URL | semmle.label | selection of URL | @@ -43,17 +43,17 @@ nodes | DivideByZero.go:19:16:19:20 | value | semmle.label | value | | DivideByZero.go:24:12:24:16 | selection of URL | semmle.label | selection of URL | | DivideByZero.go:24:12:24:24 | call to Query | semmle.label | call to Query | -| DivideByZero.go:25:2:25:45 | ... := ...[0] | semmle.label | ... := ...[0] | +| DivideByZero.go:25:2:25:45 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | DivideByZero.go:25:31:25:36 | param1 | semmle.label | param1 | | DivideByZero.go:26:16:26:20 | value | semmle.label | value | | DivideByZero.go:31:12:31:16 | selection of URL | semmle.label | selection of URL | | DivideByZero.go:31:12:31:24 | call to Query | semmle.label | call to Query | -| DivideByZero.go:32:2:32:43 | ... := ...[0] | semmle.label | ... := ...[0] | +| DivideByZero.go:32:2:32:43 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | DivideByZero.go:32:33:32:38 | param1 | semmle.label | param1 | | DivideByZero.go:33:16:33:20 | value | semmle.label | value | | DivideByZero.go:38:12:38:16 | selection of URL | semmle.label | selection of URL | | DivideByZero.go:38:12:38:24 | call to Query | semmle.label | call to Query | -| DivideByZero.go:39:2:39:46 | ... := ...[0] | semmle.label | ... := ...[0] | +| DivideByZero.go:39:2:39:46 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | DivideByZero.go:39:32:39:37 | param1 | semmle.label | param1 | | DivideByZero.go:40:16:40:20 | value | semmle.label | value | | DivideByZero.go:54:12:54:16 | selection of URL | semmle.label | selection of URL | diff --git a/go/ql/test/experimental/CWE-522-DecompressionBombs/CONSISTENCY/CfgConsistency.expected b/go/ql/test/experimental/CWE-522-DecompressionBombs/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/experimental/CWE-522-DecompressionBombs/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/CWE-522-DecompressionBombs/CONSISTENCY/DataFlowConsistency.expected index 455781c6b15b..3cb5d9567bf5 100644 --- a/go/ql/test/experimental/CWE-522-DecompressionBombs/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/CWE-522-DecompressionBombs/CONSISTENCY/DataFlowConsistency.expected @@ -1,36 +1,36 @@ reverseRead -| test.go:60:15:60:21 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:61:24:61:30 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:62:13:62:19 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:63:17:63:23 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:64:8:64:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:65:12:65:18 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:66:8:66:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:67:12:67:18 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:68:17:68:23 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:69:21:69:27 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:70:13:70:19 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:71:17:71:23 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:72:16:72:22 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:73:20:73:26 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:74:7:74:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:75:11:75:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:76:9:76:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:77:13:77:19 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:78:18:78:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:79:22:79:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:80:5:80:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:81:9:81:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:82:7:82:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:83:11:83:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:84:15:84:21 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:85:16:85:22 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:86:20:86:26 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:87:16:87:22 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:88:20:88:26 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:89:17:89:23 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:90:21:90:27 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:91:15:91:21 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:92:19:92:25 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:93:5:93:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:94:9:94:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:60:15:60:21 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:61:24:61:30 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:62:13:62:19 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:63:17:63:23 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:64:8:64:14 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:65:12:65:18 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:66:8:66:14 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:67:12:67:18 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:68:17:68:23 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:69:21:69:27 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:70:13:70:19 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:71:17:71:23 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:72:16:72:22 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:73:20:73:26 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:74:7:74:13 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:75:11:75:17 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:76:9:76:15 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:77:13:77:19 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:78:18:78:24 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:79:22:79:28 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:80:5:80:11 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:81:9:81:15 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:82:7:82:13 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:83:11:83:17 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:84:15:84:21 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:85:16:85:22 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:86:20:86:26 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:87:16:87:22 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:88:20:88:26 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:89:17:89:23 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:90:21:90:27 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:91:15:91:21 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:92:19:92:25 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:93:5:93:11 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:94:9:94:15 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/experimental/CWE-522-DecompressionBombs/DecompressionBombs.expected b/go/ql/test/experimental/CWE-522-DecompressionBombs/DecompressionBombs.expected index c770dc825d71..2fea1cfd6d75 100644 --- a/go/ql/test/experimental/CWE-522-DecompressionBombs/DecompressionBombs.expected +++ b/go/ql/test/experimental/CWE-522-DecompressionBombs/DecompressionBombs.expected @@ -68,35 +68,35 @@ edges | test.go:91:15:91:26 | selection of Body | test.go:555:19:555:22 | SSA def(file) | provenance | Src:MaD:1 | | test.go:93:5:93:16 | selection of Body | test.go:580:9:580:12 | SSA def(file) | provenance | Src:MaD:1 | | test.go:128:20:128:27 | SSA def(filename) | test.go:130:33:130:40 | filename | provenance | | -| test.go:130:2:130:41 | ... := ...[0] | test.go:132:12:132:12 | f | provenance | | -| test.go:130:33:130:40 | filename | test.go:130:2:130:41 | ... := ...[0] | provenance | Config | +| test.go:130:2:130:41 | extract:0 ... := ... | test.go:132:12:132:12 | f | provenance | | +| test.go:130:33:130:40 | filename | test.go:130:2:130:41 | extract:0 ... := ... | provenance | Config | | test.go:130:33:130:40 | filename | test.go:143:51:143:58 | filename | provenance | | -| test.go:132:3:132:19 | ... := ...[0] | test.go:134:37:134:38 | rc | provenance | | -| test.go:132:12:132:12 | f | test.go:132:3:132:19 | ... := ...[0] | provenance | MaD:4 | -| test.go:143:2:143:59 | ... := ...[0] | test.go:145:12:145:12 | f | provenance | | -| test.go:143:51:143:58 | filename | test.go:143:2:143:59 | ... := ...[0] | provenance | Config | +| test.go:132:3:132:19 | extract:0 ... := ... | test.go:134:37:134:38 | rc | provenance | | +| test.go:132:12:132:12 | f | test.go:132:3:132:19 | extract:0 ... := ... | provenance | MaD:4 | +| test.go:143:2:143:59 | extract:0 ... := ... | test.go:145:12:145:12 | f | provenance | | +| test.go:143:51:143:58 | filename | test.go:143:2:143:59 | extract:0 ... := ... | provenance | Config | | test.go:145:12:145:12 | f | test.go:145:12:145:19 | call to Open | provenance | Config | | test.go:145:12:145:19 | call to Open | test.go:147:37:147:38 | rc | provenance | | | test.go:158:19:158:22 | SSA def(file) | test.go:159:25:159:28 | file | provenance | | -| test.go:159:2:159:29 | ... := ...[0] | test.go:160:48:160:52 | file1 | provenance | | -| test.go:159:25:159:28 | file | test.go:159:2:159:29 | ... := ...[0] | provenance | MaD:6 | -| test.go:160:2:160:69 | ... := ...[0] | test.go:163:26:163:29 | file | provenance | | -| test.go:160:32:160:53 | call to NewReader | test.go:160:2:160:69 | ... := ...[0] | provenance | Config | +| test.go:159:2:159:29 | extract:0 ... := ... | test.go:160:48:160:52 | file1 | provenance | | +| test.go:159:25:159:28 | file | test.go:159:2:159:29 | extract:0 ... := ... | provenance | MaD:6 | +| test.go:160:2:160:69 | extract:0 ... := ... | test.go:163:26:163:29 | file | provenance | | +| test.go:160:32:160:53 | call to NewReader | test.go:160:2:160:69 | extract:0 ... := ... | provenance | Config | | test.go:160:48:160:52 | file1 | test.go:160:32:160:53 | call to NewReader | provenance | MaD:5 | -| test.go:163:3:163:36 | ... := ...[0] | test.go:164:36:164:51 | fileReaderCloser | provenance | | -| test.go:163:26:163:29 | file | test.go:163:3:163:36 | ... := ...[0] | provenance | MaD:4 | +| test.go:163:3:163:36 | extract:0 ... := ... | test.go:164:36:164:51 | fileReaderCloser | provenance | | +| test.go:163:26:163:29 | file | test.go:163:3:163:36 | extract:0 ... := ... | provenance | MaD:4 | | test.go:169:28:169:31 | SSA def(file) | test.go:170:25:170:28 | file | provenance | | -| test.go:170:2:170:29 | ... := ...[0] | test.go:171:57:171:61 | file2 | provenance | | -| test.go:170:25:170:28 | file | test.go:170:2:170:29 | ... := ...[0] | provenance | MaD:6 | -| test.go:171:2:171:78 | ... := ...[0] | test.go:175:26:175:29 | file | provenance | | -| test.go:171:41:171:62 | call to NewReader | test.go:171:2:171:78 | ... := ...[0] | provenance | Config | +| test.go:170:2:170:29 | extract:0 ... := ... | test.go:171:57:171:61 | file2 | provenance | | +| test.go:170:25:170:28 | file | test.go:170:2:170:29 | extract:0 ... := ... | provenance | MaD:6 | +| test.go:171:2:171:78 | extract:0 ... := ... | test.go:175:26:175:29 | file | provenance | | +| test.go:171:41:171:62 | call to NewReader | test.go:171:2:171:78 | extract:0 ... := ... | provenance | Config | | test.go:171:57:171:61 | file2 | test.go:171:41:171:62 | call to NewReader | provenance | MaD:5 | | test.go:175:26:175:29 | file | test.go:175:26:175:36 | call to Open | provenance | Config | | test.go:175:26:175:36 | call to Open | test.go:176:36:176:51 | fileReaderCloser | provenance | | | test.go:181:17:181:20 | SSA def(file) | test.go:184:41:184:44 | file | provenance | | -| test.go:184:2:184:73 | ... := ...[0] | test.go:186:2:186:12 | bzip2Reader | provenance | | -| test.go:184:2:184:73 | ... := ...[0] | test.go:187:26:187:36 | bzip2Reader | provenance | | -| test.go:184:41:184:44 | file | test.go:184:2:184:73 | ... := ...[0] | provenance | Config | +| test.go:184:2:184:73 | extract:0 ... := ... | test.go:186:2:186:12 | bzip2Reader | provenance | | +| test.go:184:2:184:73 | extract:0 ... := ... | test.go:187:26:187:36 | bzip2Reader | provenance | | +| test.go:184:41:184:44 | file | test.go:184:2:184:73 | extract:0 ... := ... | provenance | Config | | test.go:187:12:187:37 | call to NewReader | test.go:189:18:189:24 | tarRead | provenance | | | test.go:187:26:187:36 | bzip2Reader | test.go:187:12:187:37 | call to NewReader | provenance | MaD:3 | | test.go:189:18:189:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | @@ -122,23 +122,23 @@ edges | test.go:264:26:264:36 | flateReader | test.go:264:12:264:37 | call to NewReader | provenance | MaD:3 | | test.go:266:18:266:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | | test.go:283:17:283:20 | SSA def(file) | test.go:286:41:286:44 | file | provenance | | -| test.go:286:2:286:73 | ... := ...[0] | test.go:288:2:288:12 | flateReader | provenance | | -| test.go:286:2:286:73 | ... := ...[0] | test.go:289:26:289:36 | flateReader | provenance | | -| test.go:286:41:286:44 | file | test.go:286:2:286:73 | ... := ...[0] | provenance | Config | +| test.go:286:2:286:73 | extract:0 ... := ... | test.go:288:2:288:12 | flateReader | provenance | | +| test.go:286:2:286:73 | extract:0 ... := ... | test.go:289:26:289:36 | flateReader | provenance | | +| test.go:286:41:286:44 | file | test.go:286:2:286:73 | extract:0 ... := ... | provenance | Config | | test.go:289:12:289:37 | call to NewReader | test.go:291:18:291:24 | tarRead | provenance | | | test.go:289:26:289:36 | flateReader | test.go:289:12:289:37 | call to NewReader | provenance | MaD:3 | | test.go:291:18:291:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | | test.go:308:20:308:23 | SSA def(file) | test.go:311:43:311:46 | file | provenance | | -| test.go:311:2:311:47 | ... := ...[0] | test.go:313:2:313:11 | zlibReader | provenance | | -| test.go:311:2:311:47 | ... := ...[0] | test.go:314:26:314:35 | zlibReader | provenance | | -| test.go:311:43:311:46 | file | test.go:311:2:311:47 | ... := ...[0] | provenance | Config | +| test.go:311:2:311:47 | extract:0 ... := ... | test.go:313:2:313:11 | zlibReader | provenance | | +| test.go:311:2:311:47 | extract:0 ... := ... | test.go:314:26:314:35 | zlibReader | provenance | | +| test.go:311:43:311:46 | file | test.go:311:2:311:47 | extract:0 ... := ... | provenance | Config | | test.go:314:12:314:36 | call to NewReader | test.go:316:18:316:24 | tarRead | provenance | | | test.go:314:26:314:35 | zlibReader | test.go:314:12:314:36 | call to NewReader | provenance | MaD:3 | | test.go:316:18:316:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | | test.go:333:11:333:14 | SSA def(file) | test.go:336:34:336:37 | file | provenance | | -| test.go:336:2:336:38 | ... := ...[0] | test.go:338:2:338:11 | zlibReader | provenance | | -| test.go:336:2:336:38 | ... := ...[0] | test.go:339:26:339:35 | zlibReader | provenance | | -| test.go:336:34:336:37 | file | test.go:336:2:336:38 | ... := ...[0] | provenance | Config | +| test.go:336:2:336:38 | extract:0 ... := ... | test.go:338:2:338:11 | zlibReader | provenance | | +| test.go:336:2:336:38 | extract:0 ... := ... | test.go:339:26:339:35 | zlibReader | provenance | | +| test.go:336:34:336:37 | file | test.go:336:2:336:38 | extract:0 ... := ... | provenance | Config | | test.go:339:12:339:36 | call to NewReader | test.go:341:18:341:24 | tarRead | provenance | | | test.go:339:26:339:35 | zlibReader | test.go:339:12:339:36 | call to NewReader | provenance | MaD:3 | | test.go:341:18:341:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | @@ -169,38 +169,38 @@ edges | test.go:421:26:421:33 | s2Reader | test.go:421:12:421:34 | call to NewReader | provenance | MaD:3 | | test.go:423:18:423:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | | test.go:440:19:440:21 | SSA def(src) | test.go:441:34:441:36 | src | provenance | | -| test.go:441:2:441:37 | ... := ...[0] | test.go:444:12:444:32 | type conversion | provenance | | -| test.go:441:34:441:36 | src | test.go:441:2:441:37 | ... := ...[0] | provenance | Config | +| test.go:441:2:441:37 | extract:0 ... := ... | test.go:444:12:444:32 | type conversion | provenance | | +| test.go:441:34:441:36 | src | test.go:441:2:441:37 | extract:0 ... := ... | provenance | Config | | test.go:444:12:444:32 | type conversion | test.go:445:23:445:28 | newSrc | provenance | | | test.go:447:11:447:14 | SSA def(file) | test.go:450:34:450:37 | file | provenance | | -| test.go:450:2:450:38 | ... := ...[0] | test.go:452:2:452:11 | gzipReader | provenance | | -| test.go:450:2:450:38 | ... := ...[0] | test.go:453:26:453:35 | gzipReader | provenance | | -| test.go:450:34:450:37 | file | test.go:450:2:450:38 | ... := ...[0] | provenance | Config | +| test.go:450:2:450:38 | extract:0 ... := ... | test.go:452:2:452:11 | gzipReader | provenance | | +| test.go:450:2:450:38 | extract:0 ... := ... | test.go:453:26:453:35 | gzipReader | provenance | | +| test.go:450:34:450:37 | file | test.go:450:2:450:38 | extract:0 ... := ... | provenance | Config | | test.go:453:12:453:36 | call to NewReader | test.go:455:18:455:24 | tarRead | provenance | | | test.go:453:26:453:35 | gzipReader | test.go:453:12:453:36 | call to NewReader | provenance | MaD:3 | | test.go:455:18:455:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | | test.go:472:20:472:23 | SSA def(file) | test.go:475:43:475:46 | file | provenance | | -| test.go:475:2:475:47 | ... := ...[0] | test.go:477:2:477:11 | gzipReader | provenance | | -| test.go:475:2:475:47 | ... := ...[0] | test.go:479:2:479:11 | gzipReader | provenance | | -| test.go:475:2:475:47 | ... := ...[0] | test.go:480:26:480:35 | gzipReader | provenance | | -| test.go:475:43:475:46 | file | test.go:475:2:475:47 | ... := ...[0] | provenance | Config | +| test.go:475:2:475:47 | extract:0 ... := ... | test.go:477:2:477:11 | gzipReader | provenance | | +| test.go:475:2:475:47 | extract:0 ... := ... | test.go:479:2:479:11 | gzipReader | provenance | | +| test.go:475:2:475:47 | extract:0 ... := ... | test.go:480:26:480:35 | gzipReader | provenance | | +| test.go:475:43:475:46 | file | test.go:475:2:475:47 | extract:0 ... := ... | provenance | Config | | test.go:480:12:480:36 | call to NewReader | test.go:482:18:482:24 | tarRead | provenance | | | test.go:480:26:480:35 | gzipReader | test.go:480:12:480:36 | call to NewReader | provenance | MaD:3 | | test.go:482:18:482:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | | test.go:499:20:499:23 | SSA def(file) | test.go:502:45:502:48 | file | provenance | | -| test.go:502:2:502:49 | ... := ...[0] | test.go:504:2:504:12 | pgzipReader | provenance | | -| test.go:502:2:502:49 | ... := ...[0] | test.go:506:2:506:12 | pgzipReader | provenance | | -| test.go:502:2:502:49 | ... := ...[0] | test.go:507:26:507:36 | pgzipReader | provenance | | -| test.go:502:45:502:48 | file | test.go:502:2:502:49 | ... := ...[0] | provenance | Config | +| test.go:502:2:502:49 | extract:0 ... := ... | test.go:504:2:504:12 | pgzipReader | provenance | | +| test.go:502:2:502:49 | extract:0 ... := ... | test.go:506:2:506:12 | pgzipReader | provenance | | +| test.go:502:2:502:49 | extract:0 ... := ... | test.go:507:26:507:36 | pgzipReader | provenance | | +| test.go:502:45:502:48 | file | test.go:502:2:502:49 | extract:0 ... := ... | provenance | Config | | test.go:507:12:507:37 | call to NewReader | test.go:509:18:509:24 | tarRead | provenance | | | test.go:507:26:507:36 | pgzipReader | test.go:507:12:507:37 | call to NewReader | provenance | MaD:3 | | test.go:509:18:509:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | | test.go:526:21:526:24 | SSA def(file) | test.go:529:43:529:46 | file | provenance | | -| test.go:529:2:529:47 | ... := ...[0] | test.go:531:2:531:11 | zstdReader | provenance | | -| test.go:529:2:529:47 | ... := ...[0] | test.go:533:2:533:11 | zstdReader | provenance | | -| test.go:529:2:529:47 | ... := ...[0] | test.go:535:2:535:11 | zstdReader | provenance | | -| test.go:529:2:529:47 | ... := ...[0] | test.go:536:26:536:35 | zstdReader | provenance | | -| test.go:529:43:529:46 | file | test.go:529:2:529:47 | ... := ...[0] | provenance | Config | +| test.go:529:2:529:47 | extract:0 ... := ... | test.go:531:2:531:11 | zstdReader | provenance | | +| test.go:529:2:529:47 | extract:0 ... := ... | test.go:533:2:533:11 | zstdReader | provenance | | +| test.go:529:2:529:47 | extract:0 ... := ... | test.go:535:2:535:11 | zstdReader | provenance | | +| test.go:529:2:529:47 | extract:0 ... := ... | test.go:536:26:536:35 | zstdReader | provenance | | +| test.go:529:43:529:46 | file | test.go:529:2:529:47 | extract:0 ... := ... | provenance | Config | | test.go:536:12:536:36 | call to NewReader | test.go:538:18:538:24 | tarRead | provenance | | | test.go:536:26:536:35 | zstdReader | test.go:536:12:536:36 | call to NewReader | provenance | MaD:3 | | test.go:538:18:538:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | @@ -212,9 +212,9 @@ edges | test.go:561:26:561:35 | zstdReader | test.go:561:12:561:36 | call to NewReader | provenance | MaD:3 | | test.go:563:18:563:24 | tarRead | test.go:611:22:611:28 | SSA def(tarRead) | provenance | | | test.go:580:9:580:12 | SSA def(file) | test.go:583:30:583:33 | file | provenance | | -| test.go:583:2:583:34 | ... := ...[0] | test.go:585:2:585:9 | xzReader | provenance | | -| test.go:583:2:583:34 | ... := ...[0] | test.go:586:26:586:33 | xzReader | provenance | | -| test.go:583:30:583:33 | file | test.go:583:2:583:34 | ... := ...[0] | provenance | Config | +| test.go:583:2:583:34 | extract:0 ... := ... | test.go:585:2:585:9 | xzReader | provenance | | +| test.go:583:2:583:34 | extract:0 ... := ... | test.go:586:26:586:33 | xzReader | provenance | | +| test.go:583:30:583:33 | file | test.go:583:2:583:34 | extract:0 ... := ... | provenance | Config | | test.go:586:12:586:34 | call to NewReader | test.go:589:18:589:24 | tarRead | provenance | | | test.go:586:12:586:34 | call to NewReader | test.go:590:19:590:25 | tarRead | provenance | | | test.go:586:26:586:33 | xzReader | test.go:586:12:586:34 | call to NewReader | provenance | MaD:3 | @@ -259,36 +259,36 @@ nodes | test.go:91:15:91:26 | selection of Body | semmle.label | selection of Body | | test.go:93:5:93:16 | selection of Body | semmle.label | selection of Body | | test.go:128:20:128:27 | SSA def(filename) | semmle.label | SSA def(filename) | -| test.go:130:2:130:41 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:130:2:130:41 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:130:33:130:40 | filename | semmle.label | filename | -| test.go:132:3:132:19 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:132:3:132:19 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:132:12:132:12 | f | semmle.label | f | | test.go:134:37:134:38 | rc | semmle.label | rc | -| test.go:143:2:143:59 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:143:2:143:59 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:143:51:143:58 | filename | semmle.label | filename | | test.go:145:12:145:12 | f | semmle.label | f | | test.go:145:12:145:19 | call to Open | semmle.label | call to Open | | test.go:147:37:147:38 | rc | semmle.label | rc | | test.go:158:19:158:22 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:159:2:159:29 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:159:2:159:29 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:159:25:159:28 | file | semmle.label | file | -| test.go:160:2:160:69 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:160:2:160:69 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:160:32:160:53 | call to NewReader | semmle.label | call to NewReader | | test.go:160:48:160:52 | file1 | semmle.label | file1 | -| test.go:163:3:163:36 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:163:3:163:36 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:163:26:163:29 | file | semmle.label | file | | test.go:164:36:164:51 | fileReaderCloser | semmle.label | fileReaderCloser | | test.go:169:28:169:31 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:170:2:170:29 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:170:2:170:29 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:170:25:170:28 | file | semmle.label | file | -| test.go:171:2:171:78 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:171:2:171:78 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:171:41:171:62 | call to NewReader | semmle.label | call to NewReader | | test.go:171:57:171:61 | file2 | semmle.label | file2 | | test.go:175:26:175:29 | file | semmle.label | file | | test.go:175:26:175:36 | call to Open | semmle.label | call to Open | | test.go:176:36:176:51 | fileReaderCloser | semmle.label | fileReaderCloser | | test.go:181:17:181:20 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:184:2:184:73 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:184:2:184:73 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:184:41:184:44 | file | semmle.label | file | | test.go:186:2:186:12 | bzip2Reader | semmle.label | bzip2Reader | | test.go:187:12:187:37 | call to NewReader | semmle.label | call to NewReader | @@ -316,21 +316,21 @@ nodes | test.go:264:26:264:36 | flateReader | semmle.label | flateReader | | test.go:266:18:266:24 | tarRead | semmle.label | tarRead | | test.go:283:17:283:20 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:286:2:286:73 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:286:2:286:73 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:286:41:286:44 | file | semmle.label | file | | test.go:288:2:288:12 | flateReader | semmle.label | flateReader | | test.go:289:12:289:37 | call to NewReader | semmle.label | call to NewReader | | test.go:289:26:289:36 | flateReader | semmle.label | flateReader | | test.go:291:18:291:24 | tarRead | semmle.label | tarRead | | test.go:308:20:308:23 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:311:2:311:47 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:311:2:311:47 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:311:43:311:46 | file | semmle.label | file | | test.go:313:2:313:11 | zlibReader | semmle.label | zlibReader | | test.go:314:12:314:36 | call to NewReader | semmle.label | call to NewReader | | test.go:314:26:314:35 | zlibReader | semmle.label | zlibReader | | test.go:316:18:316:24 | tarRead | semmle.label | tarRead | | test.go:333:11:333:14 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:336:2:336:38 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:336:2:336:38 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:336:34:336:37 | file | semmle.label | file | | test.go:338:2:338:11 | zlibReader | semmle.label | zlibReader | | test.go:339:12:339:36 | call to NewReader | semmle.label | call to NewReader | @@ -363,19 +363,19 @@ nodes | test.go:421:26:421:33 | s2Reader | semmle.label | s2Reader | | test.go:423:18:423:24 | tarRead | semmle.label | tarRead | | test.go:440:19:440:21 | SSA def(src) | semmle.label | SSA def(src) | -| test.go:441:2:441:37 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:441:2:441:37 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:441:34:441:36 | src | semmle.label | src | | test.go:444:12:444:32 | type conversion | semmle.label | type conversion | | test.go:445:23:445:28 | newSrc | semmle.label | newSrc | | test.go:447:11:447:14 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:450:2:450:38 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:450:2:450:38 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:450:34:450:37 | file | semmle.label | file | | test.go:452:2:452:11 | gzipReader | semmle.label | gzipReader | | test.go:453:12:453:36 | call to NewReader | semmle.label | call to NewReader | | test.go:453:26:453:35 | gzipReader | semmle.label | gzipReader | | test.go:455:18:455:24 | tarRead | semmle.label | tarRead | | test.go:472:20:472:23 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:475:2:475:47 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:475:2:475:47 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:475:43:475:46 | file | semmle.label | file | | test.go:477:2:477:11 | gzipReader | semmle.label | gzipReader | | test.go:479:2:479:11 | gzipReader | semmle.label | gzipReader | @@ -383,7 +383,7 @@ nodes | test.go:480:26:480:35 | gzipReader | semmle.label | gzipReader | | test.go:482:18:482:24 | tarRead | semmle.label | tarRead | | test.go:499:20:499:23 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:502:2:502:49 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:502:2:502:49 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:502:45:502:48 | file | semmle.label | file | | test.go:504:2:504:12 | pgzipReader | semmle.label | pgzipReader | | test.go:506:2:506:12 | pgzipReader | semmle.label | pgzipReader | @@ -391,7 +391,7 @@ nodes | test.go:507:26:507:36 | pgzipReader | semmle.label | pgzipReader | | test.go:509:18:509:24 | tarRead | semmle.label | tarRead | | test.go:526:21:526:24 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:529:2:529:47 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:529:2:529:47 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:529:43:529:46 | file | semmle.label | file | | test.go:531:2:531:11 | zstdReader | semmle.label | zstdReader | | test.go:533:2:533:11 | zstdReader | semmle.label | zstdReader | @@ -407,7 +407,7 @@ nodes | test.go:561:26:561:35 | zstdReader | semmle.label | zstdReader | | test.go:563:18:563:24 | tarRead | semmle.label | tarRead | | test.go:580:9:580:12 | SSA def(file) | semmle.label | SSA def(file) | -| test.go:583:2:583:34 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:583:2:583:34 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:583:30:583:33 | file | semmle.label | file | | test.go:585:2:585:9 | xzReader | semmle.label | xzReader | | test.go:586:12:586:34 | call to NewReader | semmle.label | call to NewReader | diff --git a/go/ql/test/experimental/CWE-525/CONSISTENCY/CfgConsistency.expected b/go/ql/test/experimental/CWE-525/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected b/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected index 4b26395c8e7c..1a938af237c2 100644 --- a/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected +++ b/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected @@ -8,14 +8,14 @@ edges | Dsn.go:28:102:28:109 | index expression | Dsn.go:28:11:28:110 | []type{args} [array] | provenance | | | Dsn.go:28:102:28:109 | index expression | Dsn.go:28:11:28:110 | call to Sprintf | provenance | FunctionModel | | Dsn.go:63:9:63:11 | cfg [postupdate] [pointer] | Dsn.go:67:102:67:104 | cfg [pointer] | provenance | | -| Dsn.go:63:9:63:11 | implicit dereference [postupdate] | Dsn.go:63:9:63:11 | cfg [postupdate] [pointer] | provenance | | -| Dsn.go:63:9:63:11 | implicit dereference [postupdate] | Dsn.go:67:102:67:108 | selection of dsn | provenance | | +| Dsn.go:63:9:63:11 | implicit-deref cfg [postupdate] | Dsn.go:63:9:63:11 | cfg [postupdate] [pointer] | provenance | | +| Dsn.go:63:9:63:11 | implicit-deref cfg [postupdate] | Dsn.go:67:102:67:108 | selection of dsn | provenance | | | Dsn.go:63:19:63:25 | selection of Args | Dsn.go:63:19:63:29 | slice expression | provenance | Src:MaD:1 | -| Dsn.go:63:19:63:29 | slice expression | Dsn.go:63:9:63:11 | implicit dereference [postupdate] | provenance | FunctionModel | +| Dsn.go:63:19:63:29 | slice expression | Dsn.go:63:9:63:11 | implicit-deref cfg [postupdate] | provenance | FunctionModel | | Dsn.go:67:11:67:109 | []type{args} [array] | Dsn.go:67:11:67:109 | call to Sprintf | provenance | MaD:2 | | Dsn.go:67:11:67:109 | call to Sprintf | Dsn.go:68:29:68:33 | dbDSN | provenance | | -| Dsn.go:67:102:67:104 | cfg [pointer] | Dsn.go:67:102:67:104 | implicit dereference | provenance | | -| Dsn.go:67:102:67:104 | implicit dereference | Dsn.go:67:102:67:108 | selection of dsn | provenance | | +| Dsn.go:67:102:67:104 | cfg [pointer] | Dsn.go:67:102:67:104 | implicit-deref cfg | provenance | | +| Dsn.go:67:102:67:104 | implicit-deref cfg | Dsn.go:67:102:67:108 | selection of dsn | provenance | | | Dsn.go:67:102:67:108 | selection of dsn | Dsn.go:67:11:67:109 | []type{args} [array] | provenance | | | Dsn.go:67:102:67:108 | selection of dsn | Dsn.go:67:11:67:109 | call to Sprintf | provenance | FunctionModel | models @@ -28,13 +28,13 @@ nodes | Dsn.go:28:102:28:109 | index expression | semmle.label | index expression | | Dsn.go:29:29:29:33 | dbDSN | semmle.label | dbDSN | | Dsn.go:63:9:63:11 | cfg [postupdate] [pointer] | semmle.label | cfg [postupdate] [pointer] | -| Dsn.go:63:9:63:11 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | +| Dsn.go:63:9:63:11 | implicit-deref cfg [postupdate] | semmle.label | implicit-deref cfg [postupdate] | | Dsn.go:63:19:63:25 | selection of Args | semmle.label | selection of Args | | Dsn.go:63:19:63:29 | slice expression | semmle.label | slice expression | | Dsn.go:67:11:67:109 | []type{args} [array] | semmle.label | []type{args} [array] | | Dsn.go:67:11:67:109 | call to Sprintf | semmle.label | call to Sprintf | | Dsn.go:67:102:67:104 | cfg [pointer] | semmle.label | cfg [pointer] | -| Dsn.go:67:102:67:104 | implicit dereference | semmle.label | implicit dereference | +| Dsn.go:67:102:67:104 | implicit-deref cfg | semmle.label | implicit-deref cfg | | Dsn.go:67:102:67:108 | selection of dsn | semmle.label | selection of dsn | | Dsn.go:68:29:68:33 | dbDSN | semmle.label | dbDSN | subpaths diff --git a/go/ql/test/experimental/CWE-807/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/CWE-807/CONSISTENCY/DataFlowConsistency.expected index 0b244f8f0333..f230dfa91685 100644 --- a/go/ql/test/experimental/CWE-807/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/CWE-807/CONSISTENCY/DataFlowConsistency.expected @@ -1,13 +1,13 @@ reverseRead -| SensitiveConditionBypassBad.go:7:5:7:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:16:5:16:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:25:5:25:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:34:5:34:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:41:5:41:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:41:35:41:35 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:49:5:49:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:56:5:56:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:63:5:63:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:70:5:70:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:77:5:77:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:84:5:84:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| SensitiveConditionBypassBad.go:7:5:7:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:16:5:16:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:25:5:25:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:34:5:34:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:41:5:41:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:41:35:41:35 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:49:5:49:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:56:5:56:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:63:5:63:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:70:5:70:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:77:5:77:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:84:5:84:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/experimental/CWE-840/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/CWE-840/CONSISTENCY/DataFlowConsistency.expected index b2cb9694e61c..fedb34fec073 100644 --- a/go/ql/test/experimental/CWE-840/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/CWE-840/CONSISTENCY/DataFlowConsistency.expected @@ -1,7 +1,7 @@ reverseRead -| ConditionalBypassBad.go:9:5:9:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| ConditionalBypassGood.go:9:5:9:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:9:5:9:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:16:5:16:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:16:41:16:41 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| condition.go:23:5:23:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| ConditionalBypassBad.go:9:5:9:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| ConditionalBypassGood.go:9:5:9:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:9:5:9:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:16:5:16:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:16:41:16:41 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| condition.go:23:5:23:5 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/experimental/CWE-918/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/CWE-918/CONSISTENCY/DataFlowConsistency.expected index 082a5e7bd31c..8b2cc46f5851 100644 --- a/go/ql/test/experimental/CWE-918/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/CWE-918/CONSISTENCY/DataFlowConsistency.expected @@ -1,8 +1,8 @@ reverseRead -| builtin.go:115:31:115:31 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| builtin.go:124:32:124:32 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| builtin.go:133:54:133:54 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| builtin.go:142:55:142:55 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| new-tests.go:62:31:62:33 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| new-tests.go:78:18:78:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| new-tests.go:81:37:81:39 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| builtin.go:115:31:115:31 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| builtin.go:124:32:124:32 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| builtin.go:133:54:133:54 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| builtin.go:142:55:142:55 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| new-tests.go:62:31:62:33 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| new-tests.go:78:18:78:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| new-tests.go:81:37:81:39 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/experimental/CWE-918/SSRF.expected b/go/ql/test/experimental/CWE-918/SSRF.expected index 5c8d1832ac19..28f5e2ca18bf 100644 --- a/go/ql/test/experimental/CWE-918/SSRF.expected +++ b/go/ql/test/experimental/CWE-918/SSRF.expected @@ -24,9 +24,9 @@ edges | builtin.go:112:21:112:31 | call to Referer | builtin.go:115:15:115:28 | untrustedInput | provenance | Src:MaD:8 | | builtin.go:130:21:130:31 | call to Referer | builtin.go:133:38:133:51 | untrustedInput | provenance | Src:MaD:8 | | builtin.go:151:16:151:36 | call to FormValue | builtin.go:154:13:154:22 | unsafehost | provenance | Src:MaD:7 | -| builtin.go:154:2:154:4 | implicit dereference [postupdate] | builtin.go:154:2:154:4 | url [postupdate] | provenance | | +| builtin.go:154:2:154:4 | implicit-deref url [postupdate] | builtin.go:154:2:154:4 | url [postupdate] | provenance | | | builtin.go:154:2:154:4 | url [postupdate] | builtin.go:156:21:156:23 | url | provenance | | -| builtin.go:154:13:154:22 | unsafehost | builtin.go:154:2:154:4 | implicit dereference [postupdate] | provenance | Config | +| builtin.go:154:13:154:22 | unsafehost | builtin.go:154:2:154:4 | implicit-deref url [postupdate] | provenance | Config | | builtin.go:154:13:154:22 | unsafehost | builtin.go:154:2:154:4 | url [postupdate] | provenance | Config | | builtin.go:156:21:156:23 | url | builtin.go:156:21:156:32 | call to String | provenance | MaD:12 | | new-tests.go:26:26:26:30 | &... [postupdate] | new-tests.go:31:48:31:56 | selection of word | provenance | Src:MaD:3 | @@ -43,8 +43,8 @@ edges | new-tests.go:35:49:35:57 | selection of word | new-tests.go:35:12:35:58 | call to Sprintf | provenance | FunctionModel | | new-tests.go:39:18:39:30 | call to Param | new-tests.go:47:11:47:46 | ...+... | provenance | Src:MaD:1 | | new-tests.go:49:18:49:30 | call to Query | new-tests.go:50:11:50:46 | ...+... | provenance | Src:MaD:2 | -| new-tests.go:62:2:62:39 | ... := ...[0] | new-tests.go:63:17:63:23 | reqBody | provenance | | -| new-tests.go:62:31:62:38 | selection of Body | new-tests.go:62:2:62:39 | ... := ...[0] | provenance | Src:MaD:6 MaD:13 | +| new-tests.go:62:2:62:39 | extract:0 ... := ... | new-tests.go:63:17:63:23 | reqBody | provenance | | +| new-tests.go:62:31:62:38 | selection of Body | new-tests.go:62:2:62:39 | extract:0 ... := ... | provenance | Src:MaD:6 MaD:13 | | new-tests.go:63:17:63:23 | reqBody | new-tests.go:63:26:63:30 | &... [postupdate] | provenance | MaD:10 | | new-tests.go:63:26:63:30 | &... [postupdate] | new-tests.go:68:48:68:56 | selection of word | provenance | | | new-tests.go:63:26:63:30 | &... [postupdate] | new-tests.go:69:48:69:56 | selection of safe | provenance | | @@ -95,7 +95,7 @@ nodes | builtin.go:130:21:130:31 | call to Referer | semmle.label | call to Referer | | builtin.go:133:38:133:51 | untrustedInput | semmle.label | untrustedInput | | builtin.go:151:16:151:36 | call to FormValue | semmle.label | call to FormValue | -| builtin.go:154:2:154:4 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | +| builtin.go:154:2:154:4 | implicit-deref url [postupdate] | semmle.label | implicit-deref url [postupdate] | | builtin.go:154:2:154:4 | url [postupdate] | semmle.label | url [postupdate] | | builtin.go:154:13:154:22 | unsafehost | semmle.label | unsafehost | | builtin.go:156:21:156:23 | url | semmle.label | url | @@ -114,7 +114,7 @@ nodes | new-tests.go:47:11:47:46 | ...+... | semmle.label | ...+... | | new-tests.go:49:18:49:30 | call to Query | semmle.label | call to Query | | new-tests.go:50:11:50:46 | ...+... | semmle.label | ...+... | -| new-tests.go:62:2:62:39 | ... := ...[0] | semmle.label | ... := ...[0] | +| new-tests.go:62:2:62:39 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | new-tests.go:62:31:62:38 | selection of Body | semmle.label | selection of Body | | new-tests.go:63:17:63:23 | reqBody | semmle.label | reqBody | | new-tests.go:63:26:63:30 | &... [postupdate] | semmle.label | &... [postupdate] | diff --git a/go/ql/test/experimental/CWE-942/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/CWE-942/CONSISTENCY/DataFlowConsistency.expected index 736ff52258ff..2bd9c1d6185a 100644 --- a/go/ql/test/experimental/CWE-942/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/CWE-942/CONSISTENCY/DataFlowConsistency.expected @@ -1,15 +1,15 @@ reverseRead -| CorsMisconfiguration.go:52:14:52:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:59:14:59:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:66:17:66:19 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:74:14:74:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:81:14:81:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:88:14:88:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:101:14:101:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:112:14:112:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:126:15:126:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:141:14:141:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:156:14:156:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:170:14:170:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:194:17:194:19 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CorsMisconfiguration.go:206:14:206:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:52:14:52:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:59:14:59:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:66:17:66:19 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:74:14:74:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:81:14:81:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:88:14:88:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:101:14:101:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:112:14:112:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:126:15:126:17 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:141:14:141:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:156:14:156:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:170:14:170:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:194:17:194:19 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CorsMisconfiguration.go:206:14:206:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/experimental/InconsistentCode/CONSISTENCY/CfgConsistency.expected b/go/ql/test/experimental/InconsistentCode/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..3c00017bbfca --- /dev/null +++ b/go/ql/test/experimental/InconsistentCode/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,14 @@ +consistencyOverview +| multipleSuccessors | 8 | +| selfLoop | 1 | +multipleSuccessors +| DeferInLoop.go:6:2:13:2 | After range statement | successor | DeferInLoop.go:5:36:14:1 | After block statement | +| DeferInLoop.go:6:2:13:2 | After range statement | successor | DeferInLoop.go:8:9:8:20 | defer-invoke call to Close | +| DeferInLoop.go:7:3:7:32 | catch-panic ... := ... | successor | DeferInLoop.go:5:1:14:1 | Exceptional Exit | +| DeferInLoop.go:7:3:7:32 | catch-panic ... := ... | successor | DeferInLoop.go:8:9:8:20 | defer-invoke call to Close | +| DeferInLoop.go:8:3:8:20 | catch-defer-panic defer statement | successor | DeferInLoop.go:5:1:14:1 | Exceptional Exit | +| DeferInLoop.go:8:3:8:20 | catch-defer-panic defer statement | successor | DeferInLoop.go:8:9:8:20 | defer-invoke call to Close | +| DeferInLoop.go:8:9:8:20 | defer-invoke call to Close | successor | DeferInLoop.go:5:36:14:1 | After block statement | +| DeferInLoop.go:8:9:8:20 | defer-invoke call to Close | successor | DeferInLoop.go:8:9:8:20 | defer-invoke call to Close | +selfLoop +| DeferInLoop.go:8:9:8:20 | defer-invoke call to Close | successor | diff --git a/go/ql/test/experimental/Unsafe/CONSISTENCY/CfgConsistency.expected b/go/ql/test/experimental/Unsafe/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/experimental/frameworks/CleverGo/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/experimental/frameworks/CleverGo/CONSISTENCY/DataFlowConsistency.expected index f2a42c6dbedd..d3f4571abef8 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/CONSISTENCY/DataFlowConsistency.expected @@ -1,2 +1,2 @@ reverseRead -| RemoteSources.go:98:9:98:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| RemoteSources.go:98:9:98:24 | implicit-deref structContext409 | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/extractor-tests/go1.17/CFG.expected b/go/ql/test/extractor-tests/go1.17/CFG.expected index 55c46adec789..d6f4ea0f06fc 100644 --- a/go/ql/test/extractor-tests/go1.17/CFG.expected +++ b/go/ql/test/extractor-tests/go1.17/CFG.expected @@ -1,64 +1,114 @@ nodes edges -| conversions.go:0:0:0:0 | entry | conversions.go:3:1:3:15 | skip | -| conversions.go:3:1:3:15 | skip | conversions.go:5:6:5:8 | skip | -| conversions.go:5:1:5:29 | entry | conversions.go:5:10:5:10 | argument corresponding to _ | -| conversions.go:5:1:5:29 | function declaration | conversions.go:7:6:7:9 | skip | -| conversions.go:5:6:5:8 | skip | conversions.go:5:1:5:29 | function declaration | -| conversions.go:5:10:5:10 | argument corresponding to _ | conversions.go:5:10:5:10 | initialization of _ | -| conversions.go:5:10:5:10 | initialization of _ | conversions.go:5:28:5:29 | skip | -| conversions.go:5:28:5:29 | skip | conversions.go:5:1:5:29 | exit | -| conversions.go:7:1:26:1 | entry | conversions.go:8:6:8:6 | skip | -| conversions.go:7:1:26:1 | function declaration | conversions.go:0:0:0:0 | exit | -| conversions.go:7:6:7:9 | skip | conversions.go:7:1:26:1 | function declaration | -| conversions.go:8:6:8:6 | assignment to a | conversions.go:10:2:10:2 | skip | -| conversions.go:8:6:8:6 | skip | conversions.go:8:6:8:6 | zero value for a | -| conversions.go:8:6:8:6 | zero value for a | conversions.go:8:6:8:6 | assignment to a | -| conversions.go:10:2:10:2 | assignment to b | conversions.go:11:2:11:4 | use | -| conversions.go:10:2:10:2 | skip | conversions.go:10:7:10:16 | selection of Add | -| conversions.go:10:7:10:16 | selection of Add | conversions.go:10:18:10:18 | a | -| conversions.go:10:7:10:23 | call to Add | conversions.go:10:2:10:2 | assignment to b | +| conversions.go:0:0:0:0 | After conversions.go | conversions.go:0:0:0:0 | Normal Exit | +| conversions.go:0:0:0:0 | Entry | conversions.go:0:0:0:0 | conversions.go | +| conversions.go:0:0:0:0 | Normal Exit | conversions.go:0:0:0:0 | Exit | +| conversions.go:0:0:0:0 | conversions.go | conversions.go:3:1:3:15 | import declaration | +| conversions.go:3:1:3:15 | import declaration | conversions.go:5:1:5:29 | function declaration | +| conversions.go:5:1:5:29 | Entry | conversions.go:5:10:5:10 | _ | +| conversions.go:5:1:5:29 | Normal Exit | conversions.go:5:1:5:29 | Exit | +| conversions.go:5:1:5:29 | function declaration | conversions.go:7:1:26:1 | function declaration | +| conversions.go:5:10:5:10 | _ | conversions.go:5:28:5:29 | block statement | +| conversions.go:5:28:5:29 | block statement | conversions.go:5:1:5:29 | Normal Exit | +| conversions.go:7:1:26:1 | Entry | conversions.go:7:13:26:1 | block statement | +| conversions.go:7:1:26:1 | Exceptional Exit | conversions.go:7:1:26:1 | Exit | +| conversions.go:7:1:26:1 | Normal Exit | conversions.go:7:1:26:1 | Exit | +| conversions.go:7:1:26:1 | function declaration | conversions.go:0:0:0:0 | After conversions.go | +| conversions.go:7:13:26:1 | After block statement | conversions.go:7:1:26:1 | Normal Exit | +| conversions.go:7:13:26:1 | block statement | conversions.go:8:2:8:21 | declaration statement | +| conversions.go:8:2:8:21 | After declaration statement | conversions.go:10:2:10:23 | ... := ... | +| conversions.go:8:2:8:21 | After variable declaration | conversions.go:8:2:8:21 | After declaration statement | +| conversions.go:8:2:8:21 | declaration statement | conversions.go:8:2:8:21 | variable declaration | +| conversions.go:8:2:8:21 | variable declaration | conversions.go:8:6:8:21 | value declaration specifier | +| conversions.go:8:6:8:21 | After value declaration specifier | conversions.go:8:2:8:21 | After variable declaration | +| conversions.go:8:6:8:21 | value declaration specifier | conversions.go:8:6:8:21 | zero-init:0 value declaration specifier | +| conversions.go:8:6:8:21 | zero-init:0 value declaration specifier | conversions.go:8:6:8:21 | After value declaration specifier | +| conversions.go:10:2:10:23 | ... := ... | conversions.go:10:7:10:23 | Before call to Add | +| conversions.go:10:2:10:23 | After ... := ... | conversions.go:11:2:11:7 | expression statement | +| conversions.go:10:2:10:23 | assign:0 ... := ... | conversions.go:10:2:10:23 | After ... := ... | +| conversions.go:10:7:10:16 | After selection of Add | conversions.go:10:18:10:18 | a | +| conversions.go:10:7:10:16 | Before selection of Add | conversions.go:10:7:10:16 | selection of Add | +| conversions.go:10:7:10:16 | selection of Add | conversions.go:10:7:10:16 | After selection of Add | +| conversions.go:10:7:10:23 | After call to Add | conversions.go:10:2:10:23 | assign:0 ... := ... | +| conversions.go:10:7:10:23 | Before call to Add | conversions.go:10:7:10:16 | Before selection of Add | +| conversions.go:10:7:10:23 | call to Add | conversions.go:10:7:10:23 | After call to Add | | conversions.go:10:18:10:18 | a | conversions.go:10:21:10:22 | 10 | | conversions.go:10:21:10:22 | 10 | conversions.go:10:7:10:23 | call to Add | | conversions.go:11:2:11:4 | use | conversions.go:11:6:11:6 | b | -| conversions.go:11:2:11:7 | call to use | conversions.go:7:1:26:1 | exit | -| conversions.go:11:2:11:7 | call to use | conversions.go:13:6:13:8 | skip | +| conversions.go:11:2:11:7 | After call to use | conversions.go:11:2:11:7 | After expression statement | +| conversions.go:11:2:11:7 | After expression statement | conversions.go:13:2:13:13 | declaration statement | +| conversions.go:11:2:11:7 | Before call to use | conversions.go:11:2:11:4 | use | +| conversions.go:11:2:11:7 | call to use | conversions.go:7:1:26:1 | Exceptional Exit | +| conversions.go:11:2:11:7 | call to use | conversions.go:11:2:11:7 | After call to use | +| conversions.go:11:2:11:7 | expression statement | conversions.go:11:2:11:7 | Before call to use | | conversions.go:11:6:11:6 | b | conversions.go:11:2:11:7 | call to use | -| conversions.go:13:6:13:8 | assignment to arr | conversions.go:14:2:14:6 | skip | -| conversions.go:13:6:13:8 | skip | conversions.go:13:6:13:8 | zero value for arr | -| conversions.go:13:6:13:8 | zero value for arr | conversions.go:13:6:13:8 | assignment to arr | -| conversions.go:14:2:14:6 | assignment to slice | conversions.go:17:2:17:4 | skip | -| conversions.go:14:2:14:6 | skip | conversions.go:14:11:14:22 | selection of Slice | -| conversions.go:14:11:14:22 | selection of Slice | conversions.go:14:24:14:26 | arr | -| conversions.go:14:11:14:31 | call to Slice | conversions.go:14:2:14:6 | assignment to slice | +| conversions.go:13:2:13:13 | After declaration statement | conversions.go:14:2:14:31 | ... := ... | +| conversions.go:13:2:13:13 | After variable declaration | conversions.go:13:2:13:13 | After declaration statement | +| conversions.go:13:2:13:13 | declaration statement | conversions.go:13:2:13:13 | variable declaration | +| conversions.go:13:2:13:13 | variable declaration | conversions.go:13:6:13:13 | value declaration specifier | +| conversions.go:13:6:13:13 | After value declaration specifier | conversions.go:13:2:13:13 | After variable declaration | +| conversions.go:13:6:13:13 | value declaration specifier | conversions.go:13:6:13:13 | zero-init:0 value declaration specifier | +| conversions.go:13:6:13:13 | zero-init:0 value declaration specifier | conversions.go:13:6:13:13 | After value declaration specifier | +| conversions.go:14:2:14:31 | ... := ... | conversions.go:14:11:14:31 | Before call to Slice | +| conversions.go:14:2:14:31 | After ... := ... | conversions.go:17:2:17:25 | ... := ... | +| conversions.go:14:2:14:31 | assign:0 ... := ... | conversions.go:14:2:14:31 | After ... := ... | +| conversions.go:14:11:14:22 | After selection of Slice | conversions.go:14:24:14:26 | arr | +| conversions.go:14:11:14:22 | Before selection of Slice | conversions.go:14:11:14:22 | selection of Slice | +| conversions.go:14:11:14:22 | selection of Slice | conversions.go:14:11:14:22 | After selection of Slice | +| conversions.go:14:11:14:31 | After call to Slice | conversions.go:14:2:14:31 | assign:0 ... := ... | +| conversions.go:14:11:14:31 | Before call to Slice | conversions.go:14:11:14:22 | Before selection of Slice | +| conversions.go:14:11:14:31 | call to Slice | conversions.go:14:11:14:31 | After call to Slice | | conversions.go:14:24:14:26 | arr | conversions.go:14:29:14:30 | 20 | | conversions.go:14:29:14:30 | 20 | conversions.go:14:11:14:31 | call to Slice | -| conversions.go:17:2:17:4 | assignment to ptr | conversions.go:18:2:18:4 | use | -| conversions.go:17:2:17:4 | skip | conversions.go:17:20:17:24 | slice | -| conversions.go:17:9:17:25 | type conversion | conversions.go:7:1:26:1 | exit | -| conversions.go:17:9:17:25 | type conversion | conversions.go:17:2:17:4 | assignment to ptr | +| conversions.go:17:2:17:25 | ... := ... | conversions.go:17:9:17:25 | Before type conversion | +| conversions.go:17:2:17:25 | After ... := ... | conversions.go:18:2:18:9 | expression statement | +| conversions.go:17:2:17:25 | assign:0 ... := ... | conversions.go:17:2:17:25 | After ... := ... | +| conversions.go:17:9:17:25 | After type conversion | conversions.go:17:2:17:25 | assign:0 ... := ... | +| conversions.go:17:9:17:25 | Before type conversion | conversions.go:17:20:17:24 | slice | +| conversions.go:17:9:17:25 | type conversion | conversions.go:7:1:26:1 | Exceptional Exit | +| conversions.go:17:9:17:25 | type conversion | conversions.go:17:9:17:25 | After type conversion | | conversions.go:17:20:17:24 | slice | conversions.go:17:9:17:25 | type conversion | | conversions.go:18:2:18:4 | use | conversions.go:18:6:18:8 | ptr | -| conversions.go:18:2:18:9 | call to use | conversions.go:7:1:26:1 | exit | -| conversions.go:18:2:18:9 | call to use | conversions.go:21:2:21:4 | skip | +| conversions.go:18:2:18:9 | After call to use | conversions.go:18:2:18:9 | After expression statement | +| conversions.go:18:2:18:9 | After expression statement | conversions.go:21:2:21:18 | ... := ... | +| conversions.go:18:2:18:9 | Before call to use | conversions.go:18:2:18:4 | use | +| conversions.go:18:2:18:9 | call to use | conversions.go:7:1:26:1 | Exceptional Exit | +| conversions.go:18:2:18:9 | call to use | conversions.go:18:2:18:9 | After call to use | +| conversions.go:18:2:18:9 | expression statement | conversions.go:18:2:18:9 | Before call to use | | conversions.go:18:6:18:8 | ptr | conversions.go:18:2:18:9 | call to use | -| conversions.go:21:2:21:4 | assignment to str | conversions.go:22:2:22:6 | skip | -| conversions.go:21:2:21:4 | skip | conversions.go:21:9:21:18 | "a string" | -| conversions.go:21:9:21:18 | "a string" | conversions.go:21:2:21:4 | assignment to str | -| conversions.go:22:2:22:6 | assignment to bytes | conversions.go:23:2:23:4 | use | -| conversions.go:22:2:22:6 | skip | conversions.go:22:18:22:20 | str | -| conversions.go:22:11:22:21 | type conversion | conversions.go:22:2:22:6 | assignment to bytes | +| conversions.go:21:2:21:18 | ... := ... | conversions.go:21:9:21:18 | "a string" | +| conversions.go:21:2:21:18 | After ... := ... | conversions.go:22:2:22:21 | ... := ... | +| conversions.go:21:2:21:18 | assign:0 ... := ... | conversions.go:21:2:21:18 | After ... := ... | +| conversions.go:21:9:21:18 | "a string" | conversions.go:21:2:21:18 | assign:0 ... := ... | +| conversions.go:22:2:22:21 | ... := ... | conversions.go:22:11:22:21 | Before type conversion | +| conversions.go:22:2:22:21 | After ... := ... | conversions.go:23:2:23:11 | expression statement | +| conversions.go:22:2:22:21 | assign:0 ... := ... | conversions.go:22:2:22:21 | After ... := ... | +| conversions.go:22:11:22:21 | After type conversion | conversions.go:22:2:22:21 | assign:0 ... := ... | +| conversions.go:22:11:22:21 | Before type conversion | conversions.go:22:18:22:20 | str | +| conversions.go:22:11:22:21 | type conversion | conversions.go:22:11:22:21 | After type conversion | | conversions.go:22:18:22:20 | str | conversions.go:22:11:22:21 | type conversion | | conversions.go:23:2:23:4 | use | conversions.go:23:6:23:10 | bytes | -| conversions.go:23:2:23:11 | call to use | conversions.go:7:1:26:1 | exit | -| conversions.go:23:2:23:11 | call to use | conversions.go:24:2:24:6 | skip | +| conversions.go:23:2:23:11 | After call to use | conversions.go:23:2:23:11 | After expression statement | +| conversions.go:23:2:23:11 | After expression statement | conversions.go:24:2:24:21 | ... := ... | +| conversions.go:23:2:23:11 | Before call to use | conversions.go:23:2:23:4 | use | +| conversions.go:23:2:23:11 | call to use | conversions.go:7:1:26:1 | Exceptional Exit | +| conversions.go:23:2:23:11 | call to use | conversions.go:23:2:23:11 | After call to use | +| conversions.go:23:2:23:11 | expression statement | conversions.go:23:2:23:11 | Before call to use | | conversions.go:23:6:23:10 | bytes | conversions.go:23:2:23:11 | call to use | -| conversions.go:24:2:24:6 | assignment to runes | conversions.go:25:2:25:4 | use | -| conversions.go:24:2:24:6 | skip | conversions.go:24:18:24:20 | str | -| conversions.go:24:11:24:21 | type conversion | conversions.go:24:2:24:6 | assignment to runes | +| conversions.go:24:2:24:21 | ... := ... | conversions.go:24:11:24:21 | Before type conversion | +| conversions.go:24:2:24:21 | After ... := ... | conversions.go:25:2:25:11 | expression statement | +| conversions.go:24:2:24:21 | assign:0 ... := ... | conversions.go:24:2:24:21 | After ... := ... | +| conversions.go:24:11:24:21 | After type conversion | conversions.go:24:2:24:21 | assign:0 ... := ... | +| conversions.go:24:11:24:21 | Before type conversion | conversions.go:24:18:24:20 | str | +| conversions.go:24:11:24:21 | type conversion | conversions.go:24:11:24:21 | After type conversion | | conversions.go:24:18:24:20 | str | conversions.go:24:11:24:21 | type conversion | | conversions.go:25:2:25:4 | use | conversions.go:25:6:25:10 | runes | -| conversions.go:25:2:25:11 | call to use | conversions.go:7:1:26:1 | exit | +| conversions.go:25:2:25:11 | After call to use | conversions.go:25:2:25:11 | After expression statement | +| conversions.go:25:2:25:11 | After expression statement | conversions.go:7:13:26:1 | After block statement | +| conversions.go:25:2:25:11 | Before call to use | conversions.go:25:2:25:4 | use | +| conversions.go:25:2:25:11 | call to use | conversions.go:7:1:26:1 | Exceptional Exit | +| conversions.go:25:2:25:11 | call to use | conversions.go:25:2:25:11 | After call to use | +| conversions.go:25:2:25:11 | expression statement | conversions.go:25:2:25:11 | Before call to use | | conversions.go:25:6:25:10 | runes | conversions.go:25:2:25:11 | call to use | #select | | diff --git a/go/ql/test/library-tests/semmle/go/IR/test.expected b/go/ql/test/library-tests/semmle/go/IR/test.expected index c42cdaa9932f..1895e51b6fa4 100644 --- a/go/ql/test/library-tests/semmle/go/IR/test.expected +++ b/go/ql/test/library-tests/semmle/go/IR/test.expected @@ -1,10 +1,10 @@ -| test.go:9:2:9:16 | ... := ...[0] | test.go:9:13:9:16 | <-... | 0 | file://:0:0:0:0 | bool | -| test.go:9:2:9:16 | ... := ...[1] | test.go:9:13:9:16 | <-... | 1 | file://:0:0:0:0 | bool | -| test.go:15:2:15:20 | ... := ...[0] | test.go:15:13:15:20 | index expression | 0 | file://:0:0:0:0 | string | -| test.go:15:2:15:20 | ... := ...[1] | test.go:15:13:15:20 | index expression | 1 | file://:0:0:0:0 | bool | -| test.go:21:2:21:22 | ... := ...[0] | test.go:21:13:21:22 | type assertion | 0 | file://:0:0:0:0 | string | -| test.go:21:2:21:22 | ... := ...[1] | test.go:21:13:21:22 | type assertion | 1 | file://:0:0:0:0 | bool | -| test.go:29:2:29:7 | call to f[0] | test.go:29:4:29:6 | call to g | 0 | file://:0:0:0:0 | int | -| test.go:29:2:29:7 | call to f[1] | test.go:29:4:29:6 | call to g | 1 | file://:0:0:0:0 | int | -| test.go:33:2:33:7 | call to f[0] | test.go:33:4:33:6 | call to v | 0 | file://:0:0:0:0 | int | -| test.go:33:2:33:7 | call to f[1] | test.go:33:4:33:6 | call to v | 1 | file://:0:0:0:0 | int | +| test.go:9:2:9:16 | extract:0 ... := ... | test.go:9:13:9:16 | <-... | 0 | file://:0:0:0:0 | bool | +| test.go:9:2:9:16 | extract:1 ... := ... | test.go:9:13:9:16 | <-... | 1 | file://:0:0:0:0 | bool | +| test.go:15:2:15:20 | extract:0 ... := ... | test.go:15:13:15:20 | index expression | 0 | file://:0:0:0:0 | string | +| test.go:15:2:15:20 | extract:1 ... := ... | test.go:15:13:15:20 | index expression | 1 | file://:0:0:0:0 | bool | +| test.go:21:2:21:22 | extract:0 ... := ... | test.go:21:13:21:22 | type assertion | 0 | file://:0:0:0:0 | string | +| test.go:21:2:21:22 | extract:1 ... := ... | test.go:21:13:21:22 | type assertion | 1 | file://:0:0:0:0 | bool | +| test.go:29:2:29:7 | extract:0 call to f | test.go:29:4:29:6 | call to g | 0 | file://:0:0:0:0 | int | +| test.go:29:2:29:7 | extract:1 call to f | test.go:29:4:29:6 | call to g | 1 | file://:0:0:0:0 | int | +| test.go:33:2:33:7 | extract:0 call to f | test.go:33:4:33:6 | call to v | 0 | file://:0:0:0:0 | int | +| test.go:33:2:33:7 | extract:1 call to f | test.go:33:4:33:6 | call to v | 1 | file://:0:0:0:0 | int | diff --git a/go/ql/test/library-tests/semmle/go/PrintAst/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/PrintAst/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..bedab226be6e --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/PrintAst/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,12 @@ +consistencyOverview +| deadEnd | 1 | +| multipleSuccessors | 6 | +deadEnd +| input.go:61:2:61:10 | select statement | +multipleSuccessors +| input.go:50:2:59:2 | select statement | successor | input.go:51:2:52:31 | comm clause | +| input.go:50:2:59:2 | select statement | successor | input.go:53:2:55:16 | comm clause | +| input.go:50:2:59:2 | select statement | successor | input.go:56:2:57:15 | comm clause | +| input.go:50:2:59:2 | select statement | successor | input.go:58:2:58:16 | comm clause | +| input.go:71:2:71:10 | catch-return return statement | successor | input.go:67:9:67:35 | defer-invoke function call | +| input.go:71:2:71:10 | catch-return return statement | successor | input.go:69:9:69:36 | defer-invoke function call | diff --git a/go/ql/test/library-tests/semmle/go/PrintAst/PrintAst.expected b/go/ql/test/library-tests/semmle/go/PrintAst/PrintAst.expected index 66aa26430633..ddd012611356 100644 --- a/go/ql/test/library-tests/semmle/go/PrintAst/PrintAst.expected +++ b/go/ql/test/library-tests/semmle/go/PrintAst/PrintAst.expected @@ -547,8 +547,9 @@ input.go: # 133| Type = []int # 133| 2: [BlockStmt] block statement # 134| 0: [RangeStmt] range statement -# 134| 0: [Ident, VariableName] x -# 134| Type = int +# 134| 0: [RangeElementExpr] range element +# 134| 0: [Ident, VariableName] x +# 134| Type = int # 134| 1: [Ident, VariableName] xs # 134| Type = []int # 134| 2: [BlockStmt] block statement @@ -573,13 +574,14 @@ input.go: # 138| 1: [Ident, VariableName] x # 138| Type = int # 141| 1: [RangeStmt] range statement -# 141| 0: [Ident, VariableName] i -# 141| Type = int -# 141| 1: [Ident, VariableName] v -# 141| Type = int -# 141| 2: [Ident, VariableName] xs +# 141| 0: [RangeElementExpr] range element +# 141| 0: [Ident, VariableName] i +# 141| Type = int +# 141| 1: [Ident, VariableName] v +# 141| Type = int +# 141| 1: [Ident, VariableName] xs # 141| Type = []int -# 141| 3: [BlockStmt] block statement +# 141| 2: [BlockStmt] block statement # 142| 0: [ExprStmt] expression statement # 142| 0: [CallExpr] call to Print # 142| Type = (int, error) @@ -593,9 +595,10 @@ input.go: # 142| 2: [Ident, VariableName] v # 142| Type = int # 145| 2: [RangeStmt] range statement -# 145| 0: [Ident, VariableName] xs +# 145| 0: [RangeElementExpr] range element +# 145| 1: [Ident, VariableName] xs # 145| Type = []int -# 145| 1: [BlockStmt] block statement +# 145| 2: [BlockStmt] block statement other.go: # 0| [GoFile] other.go # 1| package: [Ident] main diff --git a/go/ql/test/library-tests/semmle/go/PrintAst/PrintAstExcludeComments.expected b/go/ql/test/library-tests/semmle/go/PrintAst/PrintAstExcludeComments.expected index 099aa4e6144f..c25ff250f785 100644 --- a/go/ql/test/library-tests/semmle/go/PrintAst/PrintAstExcludeComments.expected +++ b/go/ql/test/library-tests/semmle/go/PrintAst/PrintAstExcludeComments.expected @@ -527,8 +527,9 @@ input.go: # 133| Type = []int # 133| 2: [BlockStmt] block statement # 134| 0: [RangeStmt] range statement -# 134| 0: [Ident, VariableName] x -# 134| Type = int +# 134| 0: [RangeElementExpr] range element +# 134| 0: [Ident, VariableName] x +# 134| Type = int # 134| 1: [Ident, VariableName] xs # 134| Type = []int # 134| 2: [BlockStmt] block statement @@ -553,13 +554,14 @@ input.go: # 138| 1: [Ident, VariableName] x # 138| Type = int # 141| 1: [RangeStmt] range statement -# 141| 0: [Ident, VariableName] i -# 141| Type = int -# 141| 1: [Ident, VariableName] v -# 141| Type = int -# 141| 2: [Ident, VariableName] xs +# 141| 0: [RangeElementExpr] range element +# 141| 0: [Ident, VariableName] i +# 141| Type = int +# 141| 1: [Ident, VariableName] v +# 141| Type = int +# 141| 1: [Ident, VariableName] xs # 141| Type = []int -# 141| 3: [BlockStmt] block statement +# 141| 2: [BlockStmt] block statement # 142| 0: [ExprStmt] expression statement # 142| 0: [CallExpr] call to Print # 142| Type = (int, error) @@ -573,9 +575,10 @@ input.go: # 142| 2: [Ident, VariableName] v # 142| Type = int # 145| 2: [RangeStmt] range statement -# 145| 0: [Ident, VariableName] xs +# 145| 0: [RangeElementExpr] range element +# 145| 1: [Ident, VariableName] xs # 145| Type = []int -# 145| 1: [BlockStmt] block statement +# 145| 2: [BlockStmt] block statement other.go: # 0| [GoFile] other.go # 1| package: [Ident] main diff --git a/go/ql/test/library-tests/semmle/go/Scopes/EntityWrite.expected b/go/ql/test/library-tests/semmle/go/Scopes/EntityWrite.expected index 843922048a07..ed3af2c6ddff 100644 --- a/go/ql/test/library-tests/semmle/go/Scopes/EntityWrite.expected +++ b/go/ql/test/library-tests/semmle/go/Scopes/EntityWrite.expected @@ -1,6 +1,6 @@ | main.go:6:2:6:2 | x | main.go:24:2:24:9 | increment statement | -| main.go:13:7:13:10 | recv | main.go:13:7:13:10 | initialization of recv | -| main.go:17:10:17:10 | x | main.go:17:10:17:10 | initialization of x | -| main.go:17:26:17:26 | y | main.go:17:26:17:26 | initialization of y | -| main.go:23:7:23:10 | recv | main.go:23:7:23:10 | initialization of recv | -| types.go:33:22:33:22 | a | types.go:33:22:33:22 | initialization of a | +| main.go:13:7:13:10 | recv | main.go:13:7:13:10 | recv | +| main.go:17:10:17:10 | x | main.go:17:10:17:10 | x | +| main.go:17:26:17:26 | y | main.go:17:26:17:26 | y | +| main.go:23:7:23:10 | recv | main.go:23:7:23:10 | recv | +| types.go:33:22:33:22 | a | types.go:33:22:33:22 | a | diff --git a/go/ql/test/library-tests/semmle/go/Types/notype.ql b/go/ql/test/library-tests/semmle/go/Types/notype.ql index 9c781d2bff23..9845f6129303 100644 --- a/go/ql/test/library-tests/semmle/go/Types/notype.ql +++ b/go/ql/test/library-tests/semmle/go/Types/notype.ql @@ -4,5 +4,7 @@ from Expr e where // filter out expressions that don't have any semantics exists(DataFlow::exprNode(e)) and - not type_of(e, _) + // no type was extracted for the expression, and it has no synthesized type either + not type_of(e, _) and + e.getType() instanceof InvalidType select e, e.getType() diff --git a/go/ql/test/library-tests/semmle/go/concepts/HTTP/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/concepts/HTTP/CONSISTENCY/DataFlowConsistency.expected index ded5f21e3e6a..56f4c17d2240 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/HTTP/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/concepts/HTTP/CONSISTENCY/DataFlowConsistency.expected @@ -1,9 +1,9 @@ reverseRead -| main.go:49:2:49:4 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:50:2:50:4 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:58:2:58:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:63:49:63:49 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| server.go:8:6:8:6 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| server.go:9:6:9:6 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| server.go:10:6:10:6 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| server.go:13:6:13:6 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| main.go:49:2:49:4 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| main.go:50:2:50:4 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| main.go:58:2:58:5 | implicit-deref resp | Origin of readStep is missing a PostUpdateNode. | +| main.go:63:49:63:49 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| server.go:8:6:8:6 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| server.go:9:6:9:6 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| server.go:10:6:10:6 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| server.go:13:6:13:6 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpPattern.expected b/go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpPattern.expected index 63adab35d7b6..7019de4934ed 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpPattern.expected +++ b/go/ql/test/library-tests/semmle/go/concepts/Regexp/RegexpPattern.expected @@ -1,10 +1,10 @@ | stdlib.go:10:15:10:17 | "a" | a | stdlib.go:10:15:10:17 | "a" | | stdlib.go:12:21:12:39 | `(^\|\\n)repository=` | (^\|\\n)repository= | stdlib.go:12:21:12:39 | `(^\|\\n)repository=` | | stdlib.go:13:21:13:24 | "ab" | ab | stdlib.go:13:21:13:24 | "ab" | -| stdlib.go:15:26:15:39 | "[so]me\|regex" | [so]me\|regex | stdlib.go:15:2:15:40 | ... := ...[0] | +| stdlib.go:15:26:15:39 | "[so]me\|regex" | [so]me\|regex | stdlib.go:15:2:15:40 | extract:0 ... := ... | | stdlib.go:15:26:15:39 | "[so]me\|regex" | [so]me\|regex | stdlib.go:15:26:15:39 | "[so]me\|regex" | -| stdlib.go:16:30:16:37 | "posix?" | posix? | stdlib.go:16:2:16:3 | SSA def(re) | -| stdlib.go:16:30:16:37 | "posix?" | posix? | stdlib.go:16:2:16:38 | ... = ...[0] | +| stdlib.go:16:30:16:37 | "posix?" | posix? | stdlib.go:16:2:16:38 | SSA def(re) | +| stdlib.go:16:30:16:37 | "posix?" | posix? | stdlib.go:16:2:16:38 | extract:0 ... = ... | | stdlib.go:16:30:16:37 | "posix?" | posix? | stdlib.go:16:30:16:37 | "posix?" | | stdlib.go:16:30:16:37 | "posix?" | posix? | stdlib.go:17:2:17:3 | re | | stdlib.go:16:30:16:37 | "posix?" | posix? | stdlib.go:21:2:21:3 | re | diff --git a/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..d856f64ab253 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,33 @@ +consistencyOverview +| deadEnd | 1 | +| multipleSuccessors | 24 | +| selfLoop | 1 | +deadEnd +| stmts.go:61:2:61:10 | select statement | +multipleSuccessors +| stmts2.go:16:2:26:2 | select statement | successor | stmts2.go:17:2:17:15 | comm clause | +| stmts2.go:16:2:26:2 | select statement | successor | stmts2.go:18:2:19:10 | comm clause | +| stmts2.go:16:2:26:2 | select statement | successor | stmts2.go:20:2:24:10 | comm clause | +| stmts2.go:16:2:26:2 | select statement | successor | stmts2.go:25:2:25:18 | comm clause | +| stmts7.go:61:2:61:20 | After expression statement | successor | stmts7.go:57:38:62:1 | After block statement | +| stmts7.go:61:2:61:20 | After expression statement | successor | stmts7.go:59:9:59:22 | defer-invoke call to recoverPanic | +| stmts7.go:61:2:61:20 | catch-panic expression statement | successor | stmts7.go:57:1:62:1 | Exceptional Exit | +| stmts7.go:61:2:61:20 | catch-panic expression statement | successor | stmts7.go:59:9:59:22 | defer-invoke call to recoverPanic | +| stmts7.go:65:2:67:2 | After for statement | successor | stmts7.go:64:31:68:1 | After block statement | +| stmts7.go:65:2:67:2 | After for statement | successor | stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | +| stmts7.go:66:3:66:22 | catch-defer-panic defer statement | successor | stmts7.go:64:1:68:1 | Exceptional Exit | +| stmts7.go:66:3:66:22 | catch-defer-panic defer statement | successor | stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | +| stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | successor | stmts7.go:64:31:68:1 | After block statement | +| stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | successor | stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | +| stmts7.go:75:1:76:20 | After labeled statement | successor | stmts7.go:70:31:77:1 | After block statement | +| stmts7.go:75:1:76:20 | After labeled statement | successor | stmts7.go:74:8:74:21 | defer-invoke call to recoverPanic | +| stmts7.go:75:1:76:20 | catch-panic labeled statement | successor | stmts7.go:70:1:77:1 | Exceptional Exit | +| stmts7.go:75:1:76:20 | catch-panic labeled statement | successor | stmts7.go:74:8:74:21 | defer-invoke call to recoverPanic | +| stmts.go:50:2:59:2 | select statement | successor | stmts.go:51:2:52:31 | comm clause | +| stmts.go:50:2:59:2 | select statement | successor | stmts.go:53:2:55:16 | comm clause | +| stmts.go:50:2:59:2 | select statement | successor | stmts.go:56:2:57:15 | comm clause | +| stmts.go:50:2:59:2 | select statement | successor | stmts.go:58:2:58:16 | comm clause | +| stmts.go:71:2:71:10 | catch-return return statement | successor | stmts.go:67:9:67:35 | defer-invoke function call | +| stmts.go:71:2:71:10 | catch-return return statement | successor | stmts.go:69:9:69:36 | defer-invoke function call | +selfLoop +| stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | successor | diff --git a/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.expected b/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.expected index 3768d015167e..ae8d5d7e77c4 100644 --- a/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.expected +++ b/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/ControlFlowNode_getASuccessor.expected @@ -1,1821 +1,3311 @@ -| DuplicateSwitchCase.go:0:0:0:0 | entry | DuplicateSwitchCase.go:3:6:3:15 | skip | -| DuplicateSwitchCase.go:3:1:12:1 | entry | DuplicateSwitchCase.go:3:17:3:19 | argument corresponding to msg | -| DuplicateSwitchCase.go:3:1:12:1 | function declaration | DuplicateSwitchCase.go:14:6:14:10 | skip | -| DuplicateSwitchCase.go:3:6:3:15 | skip | DuplicateSwitchCase.go:3:1:12:1 | function declaration | -| DuplicateSwitchCase.go:3:17:3:19 | argument corresponding to msg | DuplicateSwitchCase.go:3:17:3:19 | initialization of msg | -| DuplicateSwitchCase.go:3:17:3:19 | initialization of msg | DuplicateSwitchCase.go:4:2:11:2 | true | -| DuplicateSwitchCase.go:4:2:11:2 | true | DuplicateSwitchCase.go:5:7:5:9 | msg | +| DuplicateSwitchCase.go:0:0:0:0 | After DuplicateSwitchCase.go | DuplicateSwitchCase.go:0:0:0:0 | Normal Exit | +| DuplicateSwitchCase.go:0:0:0:0 | DuplicateSwitchCase.go | DuplicateSwitchCase.go:3:1:12:1 | function declaration | +| DuplicateSwitchCase.go:0:0:0:0 | Entry | DuplicateSwitchCase.go:0:0:0:0 | DuplicateSwitchCase.go | +| DuplicateSwitchCase.go:0:0:0:0 | Normal Exit | DuplicateSwitchCase.go:0:0:0:0 | Exit | +| DuplicateSwitchCase.go:3:1:12:1 | Entry | DuplicateSwitchCase.go:3:17:3:19 | msg | +| DuplicateSwitchCase.go:3:1:12:1 | Exceptional Exit | DuplicateSwitchCase.go:3:1:12:1 | Exit | +| DuplicateSwitchCase.go:3:1:12:1 | Normal Exit | DuplicateSwitchCase.go:3:1:12:1 | Exit | +| DuplicateSwitchCase.go:3:1:12:1 | function declaration | DuplicateSwitchCase.go:14:1:14:15 | function declaration | +| DuplicateSwitchCase.go:3:17:3:19 | msg | DuplicateSwitchCase.go:3:29:12:1 | block statement | +| DuplicateSwitchCase.go:3:29:12:1 | After block statement | DuplicateSwitchCase.go:3:1:12:1 | Normal Exit | +| DuplicateSwitchCase.go:3:29:12:1 | block statement | DuplicateSwitchCase.go:4:2:11:2 | expression-switch statement | +| DuplicateSwitchCase.go:4:2:11:2 | After expression-switch statement | DuplicateSwitchCase.go:3:29:12:1 | After block statement | +| DuplicateSwitchCase.go:4:2:11:2 | expression-switch statement | DuplicateSwitchCase.go:5:2:6:9 | case clause | +| DuplicateSwitchCase.go:5:2:6:9 | After case clause [match] | DuplicateSwitchCase.go:6:3:6:9 | expression statement | +| DuplicateSwitchCase.go:5:2:6:9 | After case clause [no-match] | DuplicateSwitchCase.go:7:2:8:8 | case clause | +| DuplicateSwitchCase.go:5:2:6:9 | case clause | DuplicateSwitchCase.go:5:7:5:20 | Before ...==... | | DuplicateSwitchCase.go:5:7:5:9 | msg | DuplicateSwitchCase.go:5:14:5:20 | "start" | -| DuplicateSwitchCase.go:5:7:5:20 | ...==... | DuplicateSwitchCase.go:5:7:5:20 | case ...==... | -| DuplicateSwitchCase.go:5:7:5:20 | ...==... is false | DuplicateSwitchCase.go:7:7:7:9 | msg | -| DuplicateSwitchCase.go:5:7:5:20 | ...==... is true | DuplicateSwitchCase.go:6:3:6:7 | start | -| DuplicateSwitchCase.go:5:7:5:20 | case ...==... | DuplicateSwitchCase.go:5:7:5:20 | ...==... is false | -| DuplicateSwitchCase.go:5:7:5:20 | case ...==... | DuplicateSwitchCase.go:5:7:5:20 | ...==... is true | +| DuplicateSwitchCase.go:5:7:5:20 | ...==... | DuplicateSwitchCase.go:5:7:5:20 | After ...==... [match] | +| DuplicateSwitchCase.go:5:7:5:20 | ...==... | DuplicateSwitchCase.go:5:7:5:20 | After ...==... [no-match] | +| DuplicateSwitchCase.go:5:7:5:20 | After ...==... [match] | DuplicateSwitchCase.go:5:2:6:9 | After case clause [match] | +| DuplicateSwitchCase.go:5:7:5:20 | After ...==... [no-match] | DuplicateSwitchCase.go:5:2:6:9 | After case clause [no-match] | +| DuplicateSwitchCase.go:5:7:5:20 | Before ...==... | DuplicateSwitchCase.go:5:7:5:9 | msg | | DuplicateSwitchCase.go:5:14:5:20 | "start" | DuplicateSwitchCase.go:5:7:5:20 | ...==... | | DuplicateSwitchCase.go:6:3:6:7 | start | DuplicateSwitchCase.go:6:3:6:9 | call to start | -| DuplicateSwitchCase.go:6:3:6:9 | call to start | DuplicateSwitchCase.go:3:1:12:1 | exit | +| DuplicateSwitchCase.go:6:3:6:9 | After call to start | DuplicateSwitchCase.go:6:3:6:9 | After expression statement | +| DuplicateSwitchCase.go:6:3:6:9 | After expression statement | DuplicateSwitchCase.go:4:2:11:2 | After expression-switch statement | +| DuplicateSwitchCase.go:6:3:6:9 | Before call to start | DuplicateSwitchCase.go:6:3:6:7 | start | +| DuplicateSwitchCase.go:6:3:6:9 | call to start | DuplicateSwitchCase.go:3:1:12:1 | Exceptional Exit | +| DuplicateSwitchCase.go:6:3:6:9 | call to start | DuplicateSwitchCase.go:6:3:6:9 | After call to start | +| DuplicateSwitchCase.go:6:3:6:9 | expression statement | DuplicateSwitchCase.go:6:3:6:9 | Before call to start | +| DuplicateSwitchCase.go:7:2:8:8 | After case clause [match] | DuplicateSwitchCase.go:8:3:8:8 | expression statement | +| DuplicateSwitchCase.go:7:2:8:8 | After case clause [no-match] | DuplicateSwitchCase.go:9:2:10:34 | case clause | +| DuplicateSwitchCase.go:7:2:8:8 | case clause | DuplicateSwitchCase.go:7:7:7:20 | Before ...==... | | DuplicateSwitchCase.go:7:7:7:9 | msg | DuplicateSwitchCase.go:7:14:7:20 | "start" | -| DuplicateSwitchCase.go:7:7:7:20 | ...==... | DuplicateSwitchCase.go:7:7:7:20 | case ...==... | -| DuplicateSwitchCase.go:7:7:7:20 | ...==... is false | DuplicateSwitchCase.go:10:3:10:7 | panic | -| DuplicateSwitchCase.go:7:7:7:20 | ...==... is true | DuplicateSwitchCase.go:8:3:8:6 | stop | -| DuplicateSwitchCase.go:7:7:7:20 | case ...==... | DuplicateSwitchCase.go:7:7:7:20 | ...==... is false | -| DuplicateSwitchCase.go:7:7:7:20 | case ...==... | DuplicateSwitchCase.go:7:7:7:20 | ...==... is true | +| DuplicateSwitchCase.go:7:7:7:20 | ...==... | DuplicateSwitchCase.go:7:7:7:20 | After ...==... [match] | +| DuplicateSwitchCase.go:7:7:7:20 | ...==... | DuplicateSwitchCase.go:7:7:7:20 | After ...==... [no-match] | +| DuplicateSwitchCase.go:7:7:7:20 | After ...==... [match] | DuplicateSwitchCase.go:7:2:8:8 | After case clause [match] | +| DuplicateSwitchCase.go:7:7:7:20 | After ...==... [no-match] | DuplicateSwitchCase.go:7:2:8:8 | After case clause [no-match] | +| DuplicateSwitchCase.go:7:7:7:20 | Before ...==... | DuplicateSwitchCase.go:7:7:7:9 | msg | | DuplicateSwitchCase.go:7:14:7:20 | "start" | DuplicateSwitchCase.go:7:7:7:20 | ...==... | | DuplicateSwitchCase.go:8:3:8:6 | stop | DuplicateSwitchCase.go:8:3:8:8 | call to stop | -| DuplicateSwitchCase.go:8:3:8:8 | call to stop | DuplicateSwitchCase.go:3:1:12:1 | exit | +| DuplicateSwitchCase.go:8:3:8:8 | After call to stop | DuplicateSwitchCase.go:8:3:8:8 | After expression statement | +| DuplicateSwitchCase.go:8:3:8:8 | After expression statement | DuplicateSwitchCase.go:4:2:11:2 | After expression-switch statement | +| DuplicateSwitchCase.go:8:3:8:8 | Before call to stop | DuplicateSwitchCase.go:8:3:8:6 | stop | +| DuplicateSwitchCase.go:8:3:8:8 | call to stop | DuplicateSwitchCase.go:3:1:12:1 | Exceptional Exit | +| DuplicateSwitchCase.go:8:3:8:8 | call to stop | DuplicateSwitchCase.go:8:3:8:8 | After call to stop | +| DuplicateSwitchCase.go:8:3:8:8 | expression statement | DuplicateSwitchCase.go:8:3:8:8 | Before call to stop | +| DuplicateSwitchCase.go:9:2:10:34 | After case clause [match] | DuplicateSwitchCase.go:10:3:10:34 | expression statement | +| DuplicateSwitchCase.go:9:2:10:34 | case clause | DuplicateSwitchCase.go:9:2:10:34 | After case clause [match] | | DuplicateSwitchCase.go:10:3:10:7 | panic | DuplicateSwitchCase.go:10:9:10:33 | "Message not understood." | -| DuplicateSwitchCase.go:10:3:10:34 | call to panic | DuplicateSwitchCase.go:3:1:12:1 | exit | +| DuplicateSwitchCase.go:10:3:10:34 | Before call to panic | DuplicateSwitchCase.go:10:3:10:7 | panic | +| DuplicateSwitchCase.go:10:3:10:34 | call to panic | DuplicateSwitchCase.go:3:1:12:1 | Exceptional Exit | +| DuplicateSwitchCase.go:10:3:10:34 | expression statement | DuplicateSwitchCase.go:10:3:10:34 | Before call to panic | | DuplicateSwitchCase.go:10:9:10:33 | "Message not understood." | DuplicateSwitchCase.go:10:3:10:34 | call to panic | -| DuplicateSwitchCase.go:14:1:14:15 | entry | DuplicateSwitchCase.go:14:14:14:15 | skip | -| DuplicateSwitchCase.go:14:1:14:15 | function declaration | DuplicateSwitchCase.go:16:6:16:9 | skip | -| DuplicateSwitchCase.go:14:6:14:10 | skip | DuplicateSwitchCase.go:14:1:14:15 | function declaration | -| DuplicateSwitchCase.go:14:14:14:15 | skip | DuplicateSwitchCase.go:14:1:14:15 | exit | -| DuplicateSwitchCase.go:16:1:16:14 | entry | DuplicateSwitchCase.go:16:13:16:14 | skip | -| DuplicateSwitchCase.go:16:1:16:14 | function declaration | DuplicateSwitchCase.go:0:0:0:0 | exit | -| DuplicateSwitchCase.go:16:6:16:9 | skip | DuplicateSwitchCase.go:16:1:16:14 | function declaration | -| DuplicateSwitchCase.go:16:13:16:14 | skip | DuplicateSwitchCase.go:16:1:16:14 | exit | -| epilogues.go:0:0:0:0 | entry | epilogues.go:3:1:3:12 | skip | -| epilogues.go:3:1:3:12 | skip | epilogues.go:8:1:10:1 | skip | -| epilogues.go:8:1:10:1 | skip | epilogues.go:12:21:12:23 | skip | -| epilogues.go:12:1:14:1 | entry | epilogues.go:12:7:12:7 | argument corresponding to l | -| epilogues.go:12:1:14:1 | function declaration | epilogues.go:16:20:16:27 | skip | -| epilogues.go:12:7:12:7 | argument corresponding to l | epilogues.go:12:7:12:7 | initialization of l | -| epilogues.go:12:7:12:7 | initialization of l | epilogues.go:12:25:12:27 | argument corresponding to msg | -| epilogues.go:12:21:12:23 | skip | epilogues.go:12:1:14:1 | function declaration | -| epilogues.go:12:25:12:27 | argument corresponding to msg | epilogues.go:12:25:12:27 | initialization of msg | -| epilogues.go:12:25:12:27 | initialization of msg | epilogues.go:12:37:12:40 | argument corresponding to code | -| epilogues.go:12:37:12:40 | argument corresponding to code | epilogues.go:12:37:12:40 | initialization of code | -| epilogues.go:12:37:12:40 | initialization of code | epilogues.go:13:2:13:12 | selection of Println | -| epilogues.go:13:2:13:12 | selection of Println | epilogues.go:13:14:13:14 | l | -| epilogues.go:13:2:13:33 | call to Println | epilogues.go:12:1:14:1 | exit | -| epilogues.go:13:14:13:14 | implicit dereference | epilogues.go:12:1:14:1 | exit | -| epilogues.go:13:14:13:14 | implicit dereference | epilogues.go:13:14:13:21 | selection of prefix | -| epilogues.go:13:14:13:14 | l | epilogues.go:13:14:13:14 | implicit dereference | -| epilogues.go:13:14:13:21 | selection of prefix | epilogues.go:13:24:13:26 | msg | +| DuplicateSwitchCase.go:14:1:14:15 | Entry | DuplicateSwitchCase.go:14:14:14:15 | block statement | +| DuplicateSwitchCase.go:14:1:14:15 | Normal Exit | DuplicateSwitchCase.go:14:1:14:15 | Exit | +| DuplicateSwitchCase.go:14:1:14:15 | function declaration | DuplicateSwitchCase.go:16:1:16:14 | function declaration | +| DuplicateSwitchCase.go:14:14:14:15 | block statement | DuplicateSwitchCase.go:14:1:14:15 | Normal Exit | +| DuplicateSwitchCase.go:16:1:16:14 | Entry | DuplicateSwitchCase.go:16:13:16:14 | block statement | +| DuplicateSwitchCase.go:16:1:16:14 | Normal Exit | DuplicateSwitchCase.go:16:1:16:14 | Exit | +| DuplicateSwitchCase.go:16:1:16:14 | function declaration | DuplicateSwitchCase.go:0:0:0:0 | After DuplicateSwitchCase.go | +| DuplicateSwitchCase.go:16:13:16:14 | block statement | DuplicateSwitchCase.go:16:1:16:14 | Normal Exit | +| epilogues.go:0:0:0:0 | After epilogues.go | epilogues.go:0:0:0:0 | Normal Exit | +| epilogues.go:0:0:0:0 | Entry | epilogues.go:0:0:0:0 | epilogues.go | +| epilogues.go:0:0:0:0 | Normal Exit | epilogues.go:0:0:0:0 | Exit | +| epilogues.go:0:0:0:0 | epilogues.go | epilogues.go:3:1:3:12 | import declaration | +| epilogues.go:3:1:3:12 | import declaration | epilogues.go:8:1:10:1 | type declaration | +| epilogues.go:8:1:10:1 | type declaration | epilogues.go:12:1:14:1 | function declaration | +| epilogues.go:12:1:14:1 | Entry | epilogues.go:12:7:12:7 | l | +| epilogues.go:12:1:14:1 | Exceptional Exit | epilogues.go:12:1:14:1 | Exit | +| epilogues.go:12:1:14:1 | Normal Exit | epilogues.go:12:1:14:1 | Exit | +| epilogues.go:12:1:14:1 | function declaration | epilogues.go:16:1:18:1 | function declaration | +| epilogues.go:12:7:12:7 | l | epilogues.go:12:25:12:27 | msg | +| epilogues.go:12:25:12:27 | msg | epilogues.go:12:37:12:40 | code | +| epilogues.go:12:37:12:40 | code | epilogues.go:12:47:14:1 | block statement | +| epilogues.go:12:47:14:1 | After block statement | epilogues.go:12:1:14:1 | Normal Exit | +| epilogues.go:12:47:14:1 | block statement | epilogues.go:13:2:13:33 | expression statement | +| epilogues.go:13:2:13:12 | After selection of Println | epilogues.go:13:14:13:21 | Before selection of prefix | +| epilogues.go:13:2:13:12 | Before selection of Println | epilogues.go:13:2:13:12 | selection of Println | +| epilogues.go:13:2:13:12 | selection of Println | epilogues.go:13:2:13:12 | After selection of Println | +| epilogues.go:13:2:13:33 | After call to Println | epilogues.go:13:2:13:33 | After expression statement | +| epilogues.go:13:2:13:33 | After expression statement | epilogues.go:12:47:14:1 | After block statement | +| epilogues.go:13:2:13:33 | Before call to Println | epilogues.go:13:2:13:12 | Before selection of Println | +| epilogues.go:13:2:13:33 | call to Println | epilogues.go:12:1:14:1 | Exceptional Exit | +| epilogues.go:13:2:13:33 | call to Println | epilogues.go:13:2:13:33 | After call to Println | +| epilogues.go:13:2:13:33 | expression statement | epilogues.go:13:2:13:33 | Before call to Println | +| epilogues.go:13:14:13:14 | After l | epilogues.go:13:14:13:14 | implicit-deref l | +| epilogues.go:13:14:13:14 | implicit-deref l | epilogues.go:13:14:13:21 | selection of prefix | +| epilogues.go:13:14:13:14 | l | epilogues.go:13:14:13:14 | After l | +| epilogues.go:13:14:13:21 | After selection of prefix | epilogues.go:13:24:13:26 | msg | +| epilogues.go:13:14:13:21 | Before selection of prefix | epilogues.go:13:14:13:14 | l | +| epilogues.go:13:14:13:21 | selection of prefix | epilogues.go:13:14:13:21 | After selection of prefix | | epilogues.go:13:24:13:26 | msg | epilogues.go:13:29:13:32 | code | | epilogues.go:13:29:13:32 | code | epilogues.go:13:2:13:33 | call to Println | -| epilogues.go:16:1:18:1 | entry | epilogues.go:16:7:16:7 | argument corresponding to l | -| epilogues.go:16:1:18:1 | function declaration | epilogues.go:23:6:23:15 | skip | -| epilogues.go:16:7:16:7 | argument corresponding to l | epilogues.go:16:7:16:7 | initialization of l | -| epilogues.go:16:7:16:7 | initialization of l | epilogues.go:16:29:16:31 | argument corresponding to msg | -| epilogues.go:16:20:16:27 | skip | epilogues.go:16:1:18:1 | function declaration | -| epilogues.go:16:29:16:31 | argument corresponding to msg | epilogues.go:16:29:16:31 | initialization of msg | -| epilogues.go:16:29:16:31 | initialization of msg | epilogues.go:17:2:17:12 | selection of Println | -| epilogues.go:17:2:17:12 | selection of Println | epilogues.go:17:14:17:14 | l | -| epilogues.go:17:2:17:27 | call to Println | epilogues.go:16:1:18:1 | exit | +| epilogues.go:16:1:18:1 | Entry | epilogues.go:16:7:16:7 | l | +| epilogues.go:16:1:18:1 | Exceptional Exit | epilogues.go:16:1:18:1 | Exit | +| epilogues.go:16:1:18:1 | Normal Exit | epilogues.go:16:1:18:1 | Exit | +| epilogues.go:16:1:18:1 | function declaration | epilogues.go:23:1:27:1 | function declaration | +| epilogues.go:16:7:16:7 | l | epilogues.go:16:29:16:31 | msg | +| epilogues.go:16:29:16:31 | msg | epilogues.go:16:41:18:1 | block statement | +| epilogues.go:16:41:18:1 | After block statement | epilogues.go:16:1:18:1 | Normal Exit | +| epilogues.go:16:41:18:1 | block statement | epilogues.go:17:2:17:27 | expression statement | +| epilogues.go:17:2:17:12 | After selection of Println | epilogues.go:17:14:17:21 | Before selection of prefix | +| epilogues.go:17:2:17:12 | Before selection of Println | epilogues.go:17:2:17:12 | selection of Println | +| epilogues.go:17:2:17:12 | selection of Println | epilogues.go:17:2:17:12 | After selection of Println | +| epilogues.go:17:2:17:27 | After call to Println | epilogues.go:17:2:17:27 | After expression statement | +| epilogues.go:17:2:17:27 | After expression statement | epilogues.go:16:41:18:1 | After block statement | +| epilogues.go:17:2:17:27 | Before call to Println | epilogues.go:17:2:17:12 | Before selection of Println | +| epilogues.go:17:2:17:27 | call to Println | epilogues.go:16:1:18:1 | Exceptional Exit | +| epilogues.go:17:2:17:27 | call to Println | epilogues.go:17:2:17:27 | After call to Println | +| epilogues.go:17:2:17:27 | expression statement | epilogues.go:17:2:17:27 | Before call to Println | | epilogues.go:17:14:17:14 | l | epilogues.go:17:14:17:21 | selection of prefix | -| epilogues.go:17:14:17:21 | selection of prefix | epilogues.go:17:24:17:26 | msg | +| epilogues.go:17:14:17:21 | After selection of prefix | epilogues.go:17:24:17:26 | msg | +| epilogues.go:17:14:17:21 | Before selection of prefix | epilogues.go:17:14:17:14 | l | +| epilogues.go:17:14:17:21 | selection of prefix | epilogues.go:17:14:17:21 | After selection of prefix | | epilogues.go:17:24:17:26 | msg | epilogues.go:17:2:17:27 | call to Println | -| epilogues.go:23:1:27:1 | entry | epilogues.go:24:5:24:5 | skip | -| epilogues.go:23:1:27:1 | function declaration | epilogues.go:31:6:31:13 | skip | -| epilogues.go:23:6:23:15 | skip | epilogues.go:23:1:27:1 | function declaration | -| epilogues.go:24:5:24:5 | assignment to r | epilogues.go:24:21:24:21 | r | -| epilogues.go:24:5:24:5 | skip | epilogues.go:24:10:24:16 | recover | +| epilogues.go:23:1:27:1 | Entry | epilogues.go:23:19:27:1 | block statement | +| epilogues.go:23:1:27:1 | Exceptional Exit | epilogues.go:23:1:27:1 | Exit | +| epilogues.go:23:1:27:1 | Normal Exit | epilogues.go:23:1:27:1 | Exit | +| epilogues.go:23:1:27:1 | function declaration | epilogues.go:31:1:33:1 | function declaration | +| epilogues.go:23:19:27:1 | After block statement | epilogues.go:23:1:27:1 | Normal Exit | +| epilogues.go:23:19:27:1 | block statement | epilogues.go:24:2:26:2 | if statement | +| epilogues.go:24:2:26:2 | After if statement | epilogues.go:23:19:27:1 | After block statement | +| epilogues.go:24:2:26:2 | if statement | epilogues.go:24:5:24:18 | ... := ... | +| epilogues.go:24:5:24:18 | ... := ... | epilogues.go:24:10:24:18 | Before call to recover | +| epilogues.go:24:5:24:18 | After ... := ... | epilogues.go:24:21:24:28 | Before ...!=... | +| epilogues.go:24:5:24:18 | assign:0 ... := ... | epilogues.go:24:5:24:18 | After ... := ... | | epilogues.go:24:10:24:16 | recover | epilogues.go:24:10:24:18 | call to recover | -| epilogues.go:24:10:24:18 | call to recover | epilogues.go:24:5:24:5 | assignment to r | +| epilogues.go:24:10:24:18 | After call to recover | epilogues.go:24:5:24:18 | assign:0 ... := ... | +| epilogues.go:24:10:24:18 | Before call to recover | epilogues.go:24:10:24:16 | recover | +| epilogues.go:24:10:24:18 | call to recover | epilogues.go:24:10:24:18 | After call to recover | | epilogues.go:24:21:24:21 | r | epilogues.go:24:26:24:28 | nil | -| epilogues.go:24:21:24:28 | ...!=... | epilogues.go:23:1:27:1 | exit | -| epilogues.go:24:21:24:28 | ...!=... | epilogues.go:24:21:24:28 | ...!=... is false | -| epilogues.go:24:21:24:28 | ...!=... | epilogues.go:24:21:24:28 | ...!=... is true | -| epilogues.go:24:21:24:28 | ...!=... is false | epilogues.go:23:1:27:1 | exit | -| epilogues.go:24:21:24:28 | ...!=... is true | epilogues.go:25:3:25:13 | selection of Println | +| epilogues.go:24:21:24:28 | ...!=... | epilogues.go:24:21:24:28 | After ...!=... [false] | +| epilogues.go:24:21:24:28 | ...!=... | epilogues.go:24:21:24:28 | After ...!=... [true] | +| epilogues.go:24:21:24:28 | After ...!=... [false] | epilogues.go:24:2:26:2 | After if statement | +| epilogues.go:24:21:24:28 | After ...!=... [true] | epilogues.go:24:30:26:2 | block statement | +| epilogues.go:24:21:24:28 | Before ...!=... | epilogues.go:24:21:24:21 | r | | epilogues.go:24:26:24:28 | nil | epilogues.go:24:21:24:28 | ...!=... | -| epilogues.go:25:3:25:13 | selection of Println | epilogues.go:25:15:25:26 | "recovered:" | -| epilogues.go:25:3:25:30 | call to Println | epilogues.go:23:1:27:1 | exit | +| epilogues.go:24:30:26:2 | After block statement | epilogues.go:24:2:26:2 | After if statement | +| epilogues.go:24:30:26:2 | block statement | epilogues.go:25:3:25:30 | expression statement | +| epilogues.go:25:3:25:13 | After selection of Println | epilogues.go:25:15:25:26 | "recovered:" | +| epilogues.go:25:3:25:13 | Before selection of Println | epilogues.go:25:3:25:13 | selection of Println | +| epilogues.go:25:3:25:13 | selection of Println | epilogues.go:25:3:25:13 | After selection of Println | +| epilogues.go:25:3:25:30 | After call to Println | epilogues.go:25:3:25:30 | After expression statement | +| epilogues.go:25:3:25:30 | After expression statement | epilogues.go:24:30:26:2 | After block statement | +| epilogues.go:25:3:25:30 | Before call to Println | epilogues.go:25:3:25:13 | Before selection of Println | +| epilogues.go:25:3:25:30 | call to Println | epilogues.go:23:1:27:1 | Exceptional Exit | +| epilogues.go:25:3:25:30 | call to Println | epilogues.go:25:3:25:30 | After call to Println | +| epilogues.go:25:3:25:30 | expression statement | epilogues.go:25:3:25:30 | Before call to Println | | epilogues.go:25:15:25:26 | "recovered:" | epilogues.go:25:29:25:29 | r | | epilogues.go:25:29:25:29 | r | epilogues.go:25:3:25:30 | call to Println | -| epilogues.go:31:1:33:1 | entry | epilogues.go:31:15:31:15 | argument corresponding to x | -| epilogues.go:31:1:33:1 | function declaration | epilogues.go:36:6:36:12 | skip | -| epilogues.go:31:6:31:13 | skip | epilogues.go:31:1:33:1 | function declaration | -| epilogues.go:31:15:31:15 | argument corresponding to x | epilogues.go:31:15:31:15 | initialization of x | -| epilogues.go:31:15:31:15 | initialization of x | epilogues.go:32:9:32:9 | x | -| epilogues.go:32:2:32:13 | return statement | epilogues.go:31:1:33:1 | exit | +| epilogues.go:31:1:33:1 | Entry | epilogues.go:31:15:31:15 | x | +| epilogues.go:31:1:33:1 | Normal Exit | epilogues.go:31:1:33:1 | Exit | +| epilogues.go:31:1:33:1 | function declaration | epilogues.go:36:1:38:1 | function declaration | +| epilogues.go:31:15:31:15 | x | epilogues.go:31:26:33:1 | block statement | +| epilogues.go:31:26:33:1 | block statement | epilogues.go:32:2:32:13 | Before return statement | +| epilogues.go:32:2:32:13 | Before return statement | epilogues.go:32:9:32:13 | Before ...*... | +| epilogues.go:32:2:32:13 | return statement | epilogues.go:31:1:33:1 | Normal Exit | | epilogues.go:32:9:32:9 | x | epilogues.go:32:13:32:13 | 2 | -| epilogues.go:32:9:32:13 | ...*... | epilogues.go:32:2:32:13 | return statement | +| epilogues.go:32:9:32:13 | ...*... | epilogues.go:32:9:32:13 | After ...*... | +| epilogues.go:32:9:32:13 | After ...*... | epilogues.go:32:2:32:13 | return statement | +| epilogues.go:32:9:32:13 | Before ...*... | epilogues.go:32:9:32:9 | x | | epilogues.go:32:13:32:13 | 2 | epilogues.go:32:9:32:13 | ...*... | -| epilogues.go:36:1:38:1 | entry | epilogues.go:37:2:37:12 | selection of Println | -| epilogues.go:36:1:38:1 | function declaration | epilogues.go:42:6:42:18 | skip | -| epilogues.go:36:6:36:12 | skip | epilogues.go:36:1:38:1 | function declaration | -| epilogues.go:37:2:37:12 | selection of Println | epilogues.go:37:14:37:19 | "void" | -| epilogues.go:37:2:37:20 | call to Println | epilogues.go:36:1:38:1 | exit | +| epilogues.go:36:1:38:1 | Entry | epilogues.go:36:16:38:1 | block statement | +| epilogues.go:36:1:38:1 | Exceptional Exit | epilogues.go:36:1:38:1 | Exit | +| epilogues.go:36:1:38:1 | Normal Exit | epilogues.go:36:1:38:1 | Exit | +| epilogues.go:36:1:38:1 | function declaration | epilogues.go:42:1:48:1 | function declaration | +| epilogues.go:36:16:38:1 | After block statement | epilogues.go:36:1:38:1 | Normal Exit | +| epilogues.go:36:16:38:1 | block statement | epilogues.go:37:2:37:20 | expression statement | +| epilogues.go:37:2:37:12 | After selection of Println | epilogues.go:37:14:37:19 | "void" | +| epilogues.go:37:2:37:12 | Before selection of Println | epilogues.go:37:2:37:12 | selection of Println | +| epilogues.go:37:2:37:12 | selection of Println | epilogues.go:37:2:37:12 | After selection of Println | +| epilogues.go:37:2:37:20 | After call to Println | epilogues.go:37:2:37:20 | After expression statement | +| epilogues.go:37:2:37:20 | After expression statement | epilogues.go:36:16:38:1 | After block statement | +| epilogues.go:37:2:37:20 | Before call to Println | epilogues.go:37:2:37:12 | Before selection of Println | +| epilogues.go:37:2:37:20 | call to Println | epilogues.go:36:1:38:1 | Exceptional Exit | +| epilogues.go:37:2:37:20 | call to Println | epilogues.go:37:2:37:20 | After call to Println | +| epilogues.go:37:2:37:20 | expression statement | epilogues.go:37:2:37:20 | Before call to Println | | epilogues.go:37:14:37:19 | "void" | epilogues.go:37:2:37:20 | call to Println | -| epilogues.go:42:1:48:1 | entry | epilogues.go:42:20:42:20 | argument corresponding to x | -| epilogues.go:42:1:48:1 | function declaration | epilogues.go:51:6:51:21 | skip | -| epilogues.go:42:6:42:18 | skip | epilogues.go:42:1:48:1 | function declaration | -| epilogues.go:42:20:42:20 | argument corresponding to x | epilogues.go:42:20:42:20 | initialization of x | -| epilogues.go:42:20:42:20 | initialization of x | epilogues.go:42:28:42:33 | zero value for result | -| epilogues.go:42:28:42:33 | implicit read of result | epilogues.go:42:40:42:42 | implicit read of err | -| epilogues.go:42:28:42:33 | initialization of result | epilogues.go:42:40:42:42 | zero value for err | -| epilogues.go:42:28:42:33 | zero value for result | epilogues.go:42:28:42:33 | initialization of result | -| epilogues.go:42:40:42:42 | implicit read of err | epilogues.go:42:1:48:1 | exit | -| epilogues.go:42:40:42:42 | initialization of err | epilogues.go:43:5:43:5 | x | -| epilogues.go:42:40:42:42 | zero value for err | epilogues.go:42:40:42:42 | initialization of err | +| epilogues.go:42:1:48:1 | Entry | epilogues.go:42:20:42:20 | x | +| epilogues.go:42:1:48:1 | Normal Exit | epilogues.go:42:1:48:1 | Exit | +| epilogues.go:42:1:48:1 | function declaration | epilogues.go:51:1:54:1 | function declaration | +| epilogues.go:42:20:42:20 | x | epilogues.go:42:51:48:1 | block statement | +| epilogues.go:42:51:48:1 | After block statement | epilogues.go:42:1:48:1 | Normal Exit | +| epilogues.go:42:51:48:1 | block statement | epilogues.go:42:51:48:1 | zero-init:0 block statement | +| epilogues.go:42:51:48:1 | result-read:0 block statement | epilogues.go:42:51:48:1 | result-read:1 block statement | +| epilogues.go:42:51:48:1 | result-read:1 block statement | epilogues.go:42:51:48:1 | After block statement | +| epilogues.go:42:51:48:1 | zero-init:0 block statement | epilogues.go:42:51:48:1 | zero-init:1 block statement | +| epilogues.go:42:51:48:1 | zero-init:1 block statement | epilogues.go:43:2:46:2 | if statement | +| epilogues.go:43:2:46:2 | After if statement | epilogues.go:47:2:47:14 | Before return statement | +| epilogues.go:43:2:46:2 | if statement | epilogues.go:43:5:43:9 | Before ...<... | | epilogues.go:43:5:43:5 | x | epilogues.go:43:9:43:9 | 0 | -| epilogues.go:43:5:43:9 | ...<... | epilogues.go:43:5:43:9 | ...<... is false | -| epilogues.go:43:5:43:9 | ...<... | epilogues.go:43:5:43:9 | ...<... is true | -| epilogues.go:43:5:43:9 | ...<... is false | epilogues.go:47:9:47:9 | x | -| epilogues.go:43:5:43:9 | ...<... is true | epilogues.go:44:3:44:8 | skip | +| epilogues.go:43:5:43:9 | ...<... | epilogues.go:43:5:43:9 | After ...<... [false] | +| epilogues.go:43:5:43:9 | ...<... | epilogues.go:43:5:43:9 | After ...<... [true] | +| epilogues.go:43:5:43:9 | After ...<... [false] | epilogues.go:43:2:46:2 | After if statement | +| epilogues.go:43:5:43:9 | After ...<... [true] | epilogues.go:43:11:46:2 | block statement | +| epilogues.go:43:5:43:9 | Before ...<... | epilogues.go:43:5:43:5 | x | | epilogues.go:43:9:43:9 | 0 | epilogues.go:43:5:43:9 | ...<... | -| epilogues.go:44:3:44:8 | assignment to result | epilogues.go:45:3:45:8 | return statement | -| epilogues.go:44:3:44:8 | skip | epilogues.go:44:13:44:13 | x | -| epilogues.go:44:12:44:13 | -... | epilogues.go:44:3:44:8 | assignment to result | +| epilogues.go:43:11:46:2 | block statement | epilogues.go:44:3:44:13 | ... = ... | +| epilogues.go:44:3:44:13 | ... = ... | epilogues.go:44:12:44:13 | Before -... | +| epilogues.go:44:3:44:13 | After ... = ... | epilogues.go:45:3:45:8 | Before return statement | +| epilogues.go:44:3:44:13 | assign:0 ... = ... | epilogues.go:44:3:44:13 | After ... = ... | +| epilogues.go:44:12:44:13 | -... | epilogues.go:44:12:44:13 | After -... | +| epilogues.go:44:12:44:13 | After -... | epilogues.go:44:3:44:13 | assign:0 ... = ... | +| epilogues.go:44:12:44:13 | Before -... | epilogues.go:44:13:44:13 | x | | epilogues.go:44:13:44:13 | x | epilogues.go:44:12:44:13 | -... | -| epilogues.go:45:3:45:8 | return statement | epilogues.go:42:28:42:33 | implicit read of result | -| epilogues.go:47:2:47:14 | return statement | epilogues.go:42:28:42:33 | implicit read of result | -| epilogues.go:47:9:47:9 | implicit write of result | epilogues.go:47:12:47:14 | nil | -| epilogues.go:47:9:47:9 | x | epilogues.go:47:9:47:9 | implicit write of result | -| epilogues.go:47:12:47:14 | implicit write of err | epilogues.go:47:2:47:14 | return statement | -| epilogues.go:47:12:47:14 | nil | epilogues.go:47:12:47:14 | implicit write of err | -| epilogues.go:51:1:54:1 | entry | epilogues.go:51:23:51:23 | argument corresponding to x | -| epilogues.go:51:1:54:1 | function declaration | epilogues.go:59:6:59:25 | skip | -| epilogues.go:51:6:51:21 | skip | epilogues.go:51:1:54:1 | function declaration | -| epilogues.go:51:23:51:23 | argument corresponding to x | epilogues.go:51:23:51:23 | initialization of x | -| epilogues.go:51:23:51:23 | initialization of x | epilogues.go:51:31:51:31 | zero value for n | -| epilogues.go:51:31:51:31 | implicit read of n | epilogues.go:51:1:54:1 | exit | -| epilogues.go:51:31:51:31 | initialization of n | epilogues.go:52:2:52:2 | skip | -| epilogues.go:51:31:51:31 | zero value for n | epilogues.go:51:31:51:31 | initialization of n | -| epilogues.go:52:2:52:2 | assignment to n | epilogues.go:53:2:53:7 | return statement | -| epilogues.go:52:2:52:2 | skip | epilogues.go:52:6:52:6 | x | +| epilogues.go:45:3:45:8 | Before return statement | epilogues.go:45:3:45:8 | return statement | +| epilogues.go:45:3:45:8 | return statement | epilogues.go:42:51:48:1 | result-read:0 block statement | +| epilogues.go:47:2:47:14 | Before return statement | epilogues.go:47:9:47:9 | x | +| epilogues.go:47:2:47:14 | result-write:0 return statement | epilogues.go:47:2:47:14 | result-write:1 return statement | +| epilogues.go:47:2:47:14 | result-write:1 return statement | epilogues.go:47:2:47:14 | return statement | +| epilogues.go:47:2:47:14 | return statement | epilogues.go:42:51:48:1 | result-read:0 block statement | +| epilogues.go:47:9:47:9 | x | epilogues.go:47:12:47:14 | nil | +| epilogues.go:47:12:47:14 | nil | epilogues.go:47:2:47:14 | result-write:0 return statement | +| epilogues.go:51:1:54:1 | Entry | epilogues.go:51:23:51:23 | x | +| epilogues.go:51:1:54:1 | Normal Exit | epilogues.go:51:1:54:1 | Exit | +| epilogues.go:51:1:54:1 | function declaration | epilogues.go:59:1:62:1 | function declaration | +| epilogues.go:51:23:51:23 | x | epilogues.go:51:38:54:1 | block statement | +| epilogues.go:51:38:54:1 | After block statement | epilogues.go:51:1:54:1 | Normal Exit | +| epilogues.go:51:38:54:1 | block statement | epilogues.go:51:38:54:1 | zero-init:0 block statement | +| epilogues.go:51:38:54:1 | result-read:0 block statement | epilogues.go:51:38:54:1 | After block statement | +| epilogues.go:51:38:54:1 | zero-init:0 block statement | epilogues.go:52:2:52:10 | ... = ... | +| epilogues.go:52:2:52:10 | ... = ... | epilogues.go:52:6:52:10 | Before ...+... | +| epilogues.go:52:2:52:10 | After ... = ... | epilogues.go:53:2:53:7 | Before return statement | +| epilogues.go:52:2:52:10 | assign:0 ... = ... | epilogues.go:52:2:52:10 | After ... = ... | | epilogues.go:52:6:52:6 | x | epilogues.go:52:10:52:10 | 1 | -| epilogues.go:52:6:52:10 | ...+... | epilogues.go:52:2:52:2 | assignment to n | +| epilogues.go:52:6:52:10 | ...+... | epilogues.go:52:6:52:10 | After ...+... | +| epilogues.go:52:6:52:10 | After ...+... | epilogues.go:52:2:52:10 | assign:0 ... = ... | +| epilogues.go:52:6:52:10 | Before ...+... | epilogues.go:52:6:52:6 | x | | epilogues.go:52:10:52:10 | 1 | epilogues.go:52:6:52:10 | ...+... | -| epilogues.go:53:2:53:7 | return statement | epilogues.go:51:31:51:31 | implicit read of n | -| epilogues.go:59:1:62:1 | entry | epilogues.go:59:27:59:27 | argument corresponding to l | -| epilogues.go:59:1:62:1 | function declaration | epilogues.go:66:6:66:26 | skip | -| epilogues.go:59:6:59:25 | skip | epilogues.go:59:1:62:1 | function declaration | -| epilogues.go:59:27:59:27 | argument corresponding to l | epilogues.go:59:27:59:27 | initialization of l | -| epilogues.go:59:27:59:27 | initialization of l | epilogues.go:59:41:59:45 | argument corresponding to items | -| epilogues.go:59:41:59:45 | argument corresponding to items | epilogues.go:59:41:59:45 | initialization of items | -| epilogues.go:59:41:59:45 | initialization of items | epilogues.go:60:8:60:8 | l | -| epilogues.go:60:2:60:33 | defer statement | epilogues.go:61:2:61:12 | selection of Println | +| epilogues.go:53:2:53:7 | Before return statement | epilogues.go:53:2:53:7 | return statement | +| epilogues.go:53:2:53:7 | return statement | epilogues.go:51:38:54:1 | result-read:0 block statement | +| epilogues.go:59:1:62:1 | Entry | epilogues.go:59:27:59:27 | l | +| epilogues.go:59:1:62:1 | Exceptional Exit | epilogues.go:59:1:62:1 | Exit | +| epilogues.go:59:1:62:1 | Normal Exit | epilogues.go:59:1:62:1 | Exit | +| epilogues.go:59:1:62:1 | function declaration | epilogues.go:66:1:71:1 | function declaration | +| epilogues.go:59:27:59:27 | l | epilogues.go:59:41:59:45 | items | +| epilogues.go:59:41:59:45 | items | epilogues.go:59:54:62:1 | block statement | +| epilogues.go:59:54:62:1 | After block statement | epilogues.go:59:1:62:1 | Normal Exit | +| epilogues.go:59:54:62:1 | block statement | epilogues.go:60:2:60:33 | Before defer statement | +| epilogues.go:60:2:60:33 | After defer statement | epilogues.go:61:2:61:38 | expression statement | +| epilogues.go:60:2:60:33 | Before defer statement | epilogues.go:60:8:60:33 | call to log | +| epilogues.go:60:2:60:33 | catch-defer-panic defer statement | epilogues.go:59:1:62:1 | Exceptional Exit | +| epilogues.go:60:2:60:33 | defer statement | epilogues.go:60:2:60:33 | After defer statement | | epilogues.go:60:8:60:8 | l | epilogues.go:60:8:60:12 | selection of log | -| epilogues.go:60:8:60:12 | selection of log | epilogues.go:60:14:60:20 | "count" | -| epilogues.go:60:8:60:33 | call to log | epilogues.go:59:1:62:1 | exit | -| epilogues.go:60:14:60:20 | "count" | epilogues.go:60:23:60:25 | len | +| epilogues.go:60:8:60:12 | After selection of log | epilogues.go:60:14:60:20 | "count" | +| epilogues.go:60:8:60:12 | Before selection of log | epilogues.go:60:8:60:8 | l | +| epilogues.go:60:8:60:12 | selection of log | epilogues.go:60:8:60:12 | After selection of log | +| epilogues.go:60:8:60:33 | After call to log | epilogues.go:60:2:60:33 | defer statement | +| epilogues.go:60:8:60:33 | call to log | epilogues.go:60:8:60:12 | Before selection of log | +| epilogues.go:60:8:60:33 | defer-invoke call to log | epilogues.go:59:54:62:1 | After block statement | +| epilogues.go:60:8:60:33 | defer-invoke call to log | epilogues.go:60:2:60:33 | catch-defer-panic defer statement | +| epilogues.go:60:14:60:20 | "count" | epilogues.go:60:23:60:32 | Before call to len | | epilogues.go:60:23:60:25 | len | epilogues.go:60:27:60:31 | items | -| epilogues.go:60:23:60:32 | call to len | epilogues.go:60:2:60:33 | defer statement | +| epilogues.go:60:23:60:32 | After call to len | epilogues.go:60:8:60:33 | After call to log | +| epilogues.go:60:23:60:32 | Before call to len | epilogues.go:60:23:60:25 | len | +| epilogues.go:60:23:60:32 | call to len | epilogues.go:60:23:60:32 | After call to len | | epilogues.go:60:27:60:31 | items | epilogues.go:60:23:60:32 | call to len | -| epilogues.go:61:2:61:12 | selection of Println | epilogues.go:61:14:61:25 | "processing" | -| epilogues.go:61:2:61:38 | call to Println | epilogues.go:60:8:60:33 | call to log | -| epilogues.go:61:14:61:25 | "processing" | epilogues.go:61:28:61:30 | len | +| epilogues.go:61:2:61:12 | After selection of Println | epilogues.go:61:14:61:25 | "processing" | +| epilogues.go:61:2:61:12 | Before selection of Println | epilogues.go:61:2:61:12 | selection of Println | +| epilogues.go:61:2:61:12 | selection of Println | epilogues.go:61:2:61:12 | After selection of Println | +| epilogues.go:61:2:61:38 | After call to Println | epilogues.go:61:2:61:38 | After expression statement | +| epilogues.go:61:2:61:38 | After expression statement | epilogues.go:60:8:60:33 | defer-invoke call to log | +| epilogues.go:61:2:61:38 | Before call to Println | epilogues.go:61:2:61:12 | Before selection of Println | +| epilogues.go:61:2:61:38 | call to Println | epilogues.go:61:2:61:38 | After call to Println | +| epilogues.go:61:2:61:38 | call to Println | epilogues.go:61:2:61:38 | catch-panic expression statement | +| epilogues.go:61:2:61:38 | catch-panic expression statement | epilogues.go:60:8:60:33 | defer-invoke call to log | +| epilogues.go:61:2:61:38 | expression statement | epilogues.go:61:2:61:38 | Before call to Println | +| epilogues.go:61:14:61:25 | "processing" | epilogues.go:61:28:61:37 | Before call to len | | epilogues.go:61:28:61:30 | len | epilogues.go:61:32:61:36 | items | -| epilogues.go:61:28:61:37 | call to len | epilogues.go:61:2:61:38 | call to Println | +| epilogues.go:61:28:61:37 | After call to len | epilogues.go:61:2:61:38 | call to Println | +| epilogues.go:61:28:61:37 | Before call to len | epilogues.go:61:28:61:30 | len | +| epilogues.go:61:28:61:37 | call to len | epilogues.go:61:28:61:37 | After call to len | | epilogues.go:61:32:61:36 | items | epilogues.go:61:28:61:37 | call to len | -| epilogues.go:66:1:71:1 | entry | epilogues.go:66:28:66:33 | argument corresponding to prefix | -| epilogues.go:66:1:71:1 | function declaration | epilogues.go:77:6:77:20 | skip | -| epilogues.go:66:6:66:26 | skip | epilogues.go:66:1:71:1 | function declaration | -| epilogues.go:66:28:66:33 | argument corresponding to prefix | epilogues.go:66:28:66:33 | initialization of prefix | -| epilogues.go:66:28:66:33 | initialization of prefix | epilogues.go:67:2:67:2 | skip | -| epilogues.go:67:2:67:2 | assignment to l | epilogues.go:68:8:68:8 | l | -| epilogues.go:67:2:67:2 | skip | epilogues.go:67:7:67:31 | struct literal | -| epilogues.go:67:7:67:31 | struct literal | epilogues.go:67:25:67:30 | prefix | -| epilogues.go:67:17:67:30 | init of key-value pair | epilogues.go:67:2:67:2 | assignment to l | -| epilogues.go:67:25:67:30 | prefix | epilogues.go:67:17:67:30 | init of key-value pair | -| epilogues.go:68:2:68:24 | defer statement | epilogues.go:69:10:69:10 | l | +| epilogues.go:66:1:71:1 | Entry | epilogues.go:66:28:66:33 | prefix | +| epilogues.go:66:1:71:1 | Exceptional Exit | epilogues.go:66:1:71:1 | Exit | +| epilogues.go:66:1:71:1 | Normal Exit | epilogues.go:66:1:71:1 | Exit | +| epilogues.go:66:1:71:1 | function declaration | epilogues.go:77:1:82:1 | function declaration | +| epilogues.go:66:28:66:33 | prefix | epilogues.go:66:43:71:1 | block statement | +| epilogues.go:66:43:71:1 | After block statement | epilogues.go:66:1:71:1 | Normal Exit | +| epilogues.go:66:43:71:1 | block statement | epilogues.go:67:2:67:31 | ... := ... | +| epilogues.go:67:2:67:31 | ... := ... | epilogues.go:67:7:67:31 | Before struct literal | +| epilogues.go:67:2:67:31 | After ... := ... | epilogues.go:68:2:68:24 | Before defer statement | +| epilogues.go:67:2:67:31 | assign:0 ... := ... | epilogues.go:67:2:67:31 | After ... := ... | +| epilogues.go:67:7:67:31 | After struct literal | epilogues.go:67:2:67:31 | assign:0 ... := ... | +| epilogues.go:67:7:67:31 | Before struct literal | epilogues.go:67:7:67:31 | struct literal | +| epilogues.go:67:7:67:31 | struct literal | epilogues.go:67:17:67:30 | Before key-value pair | +| epilogues.go:67:17:67:30 | After key-value pair | epilogues.go:67:17:67:30 | lit-init key-value pair | +| epilogues.go:67:17:67:30 | Before key-value pair | epilogues.go:67:25:67:30 | prefix | +| epilogues.go:67:17:67:30 | key-value pair | epilogues.go:67:17:67:30 | After key-value pair | +| epilogues.go:67:17:67:30 | lit-init key-value pair | epilogues.go:67:7:67:31 | After struct literal | +| epilogues.go:67:25:67:30 | prefix | epilogues.go:67:17:67:30 | key-value pair | +| epilogues.go:68:2:68:24 | After defer statement | epilogues.go:69:2:69:25 | Before defer statement | +| epilogues.go:68:2:68:24 | Before defer statement | epilogues.go:68:8:68:24 | call to logValue | +| epilogues.go:68:2:68:24 | catch-defer-panic defer statement | epilogues.go:66:1:71:1 | Exceptional Exit | +| epilogues.go:68:2:68:24 | defer statement | epilogues.go:68:2:68:24 | After defer statement | | epilogues.go:68:8:68:8 | l | epilogues.go:68:8:68:17 | selection of logValue | -| epilogues.go:68:8:68:17 | selection of logValue | epilogues.go:68:19:68:23 | "bye" | -| epilogues.go:68:8:68:24 | call to logValue | epilogues.go:66:1:71:1 | exit | -| epilogues.go:68:19:68:23 | "bye" | epilogues.go:68:2:68:24 | defer statement | -| epilogues.go:69:2:69:25 | defer statement | epilogues.go:70:2:70:12 | selection of Println | -| epilogues.go:69:8:69:15 | selection of log | epilogues.go:69:17:69:21 | "ptr" | -| epilogues.go:69:8:69:25 | call to log | epilogues.go:68:8:68:24 | call to logValue | -| epilogues.go:69:9:69:10 | &... | epilogues.go:69:8:69:15 | selection of log | +| epilogues.go:68:8:68:17 | After selection of logValue | epilogues.go:68:19:68:23 | "bye" | +| epilogues.go:68:8:68:17 | Before selection of logValue | epilogues.go:68:8:68:8 | l | +| epilogues.go:68:8:68:17 | selection of logValue | epilogues.go:68:8:68:17 | After selection of logValue | +| epilogues.go:68:8:68:24 | After call to logValue | epilogues.go:68:2:68:24 | defer statement | +| epilogues.go:68:8:68:24 | call to logValue | epilogues.go:68:8:68:17 | Before selection of logValue | +| epilogues.go:68:8:68:24 | defer-invoke call to logValue | epilogues.go:66:43:71:1 | After block statement | +| epilogues.go:68:8:68:24 | defer-invoke call to logValue | epilogues.go:68:2:68:24 | catch-defer-panic defer statement | +| epilogues.go:68:19:68:23 | "bye" | epilogues.go:68:8:68:24 | After call to logValue | +| epilogues.go:69:2:69:25 | After defer statement | epilogues.go:70:2:70:20 | expression statement | +| epilogues.go:69:2:69:25 | Before defer statement | epilogues.go:69:8:69:25 | call to log | +| epilogues.go:69:2:69:25 | catch-defer-panic defer statement | epilogues.go:68:8:68:24 | defer-invoke call to logValue | +| epilogues.go:69:2:69:25 | defer statement | epilogues.go:69:2:69:25 | After defer statement | +| epilogues.go:69:8:69:15 | After selection of log | epilogues.go:69:17:69:21 | "ptr" | +| epilogues.go:69:8:69:15 | Before selection of log | epilogues.go:69:9:69:10 | Before &... | +| epilogues.go:69:8:69:15 | selection of log | epilogues.go:69:8:69:15 | After selection of log | +| epilogues.go:69:8:69:25 | After call to log | epilogues.go:69:2:69:25 | defer statement | +| epilogues.go:69:8:69:25 | call to log | epilogues.go:69:8:69:15 | Before selection of log | +| epilogues.go:69:8:69:25 | defer-invoke call to log | epilogues.go:68:8:68:24 | defer-invoke call to logValue | +| epilogues.go:69:8:69:25 | defer-invoke call to log | epilogues.go:69:2:69:25 | catch-defer-panic defer statement | +| epilogues.go:69:9:69:10 | &... | epilogues.go:69:9:69:10 | After &... | +| epilogues.go:69:9:69:10 | After &... | epilogues.go:69:8:69:15 | selection of log | +| epilogues.go:69:9:69:10 | Before &... | epilogues.go:69:10:69:10 | l | | epilogues.go:69:10:69:10 | l | epilogues.go:69:9:69:10 | &... | | epilogues.go:69:17:69:21 | "ptr" | epilogues.go:69:24:69:24 | 7 | -| epilogues.go:69:24:69:24 | 7 | epilogues.go:69:2:69:25 | defer statement | -| epilogues.go:70:2:70:12 | selection of Println | epilogues.go:70:14:70:19 | "body" | -| epilogues.go:70:2:70:20 | call to Println | epilogues.go:69:8:69:25 | call to log | +| epilogues.go:69:24:69:24 | 7 | epilogues.go:69:8:69:25 | After call to log | +| epilogues.go:70:2:70:12 | After selection of Println | epilogues.go:70:14:70:19 | "body" | +| epilogues.go:70:2:70:12 | Before selection of Println | epilogues.go:70:2:70:12 | selection of Println | +| epilogues.go:70:2:70:12 | selection of Println | epilogues.go:70:2:70:12 | After selection of Println | +| epilogues.go:70:2:70:20 | After call to Println | epilogues.go:70:2:70:20 | After expression statement | +| epilogues.go:70:2:70:20 | After expression statement | epilogues.go:69:8:69:25 | defer-invoke call to log | +| epilogues.go:70:2:70:20 | Before call to Println | epilogues.go:70:2:70:12 | Before selection of Println | +| epilogues.go:70:2:70:20 | call to Println | epilogues.go:70:2:70:20 | After call to Println | +| epilogues.go:70:2:70:20 | call to Println | epilogues.go:70:2:70:20 | catch-panic expression statement | +| epilogues.go:70:2:70:20 | catch-panic expression statement | epilogues.go:69:8:69:25 | defer-invoke call to log | +| epilogues.go:70:2:70:20 | expression statement | epilogues.go:70:2:70:20 | Before call to Println | | epilogues.go:70:14:70:19 | "body" | epilogues.go:70:2:70:20 | call to Println | -| epilogues.go:77:1:82:1 | entry | epilogues.go:77:22:77:22 | argument corresponding to x | -| epilogues.go:77:1:82:1 | function declaration | epilogues.go:87:6:87:20 | skip | -| epilogues.go:77:6:77:20 | skip | epilogues.go:77:1:82:1 | function declaration | -| epilogues.go:77:22:77:22 | argument corresponding to x | epilogues.go:77:22:77:22 | initialization of x | -| epilogues.go:77:22:77:22 | initialization of x | epilogues.go:78:8:80:2 | function literal | -| epilogues.go:78:2:80:15 | defer statement | epilogues.go:81:2:81:12 | selection of Println | -| epilogues.go:78:8:80:2 | entry | epilogues.go:78:13:78:17 | argument corresponding to label | +| epilogues.go:77:1:82:1 | Entry | epilogues.go:77:22:77:22 | x | +| epilogues.go:77:1:82:1 | Exceptional Exit | epilogues.go:77:1:82:1 | Exit | +| epilogues.go:77:1:82:1 | Normal Exit | epilogues.go:77:1:82:1 | Exit | +| epilogues.go:77:1:82:1 | function declaration | epilogues.go:87:1:98:1 | function declaration | +| epilogues.go:77:22:77:22 | x | epilogues.go:77:29:82:1 | block statement | +| epilogues.go:77:29:82:1 | After block statement | epilogues.go:77:1:82:1 | Normal Exit | +| epilogues.go:77:29:82:1 | block statement | epilogues.go:78:2:80:15 | Before defer statement | +| epilogues.go:78:2:80:15 | After defer statement | epilogues.go:81:2:81:23 | expression statement | +| epilogues.go:78:2:80:15 | Before defer statement | epilogues.go:78:8:80:15 | function call | +| epilogues.go:78:2:80:15 | catch-defer-panic defer statement | epilogues.go:77:1:82:1 | Exceptional Exit | +| epilogues.go:78:2:80:15 | defer statement | epilogues.go:78:2:80:15 | After defer statement | +| epilogues.go:78:8:80:2 | Entry | epilogues.go:78:13:78:17 | label | +| epilogues.go:78:8:80:2 | Exceptional Exit | epilogues.go:78:8:80:2 | Exit | +| epilogues.go:78:8:80:2 | Normal Exit | epilogues.go:78:8:80:2 | Exit | | epilogues.go:78:8:80:2 | function literal | epilogues.go:80:4:80:9 | "done" | -| epilogues.go:78:8:80:15 | function call | epilogues.go:77:1:82:1 | exit | -| epilogues.go:78:13:78:17 | argument corresponding to label | epilogues.go:78:13:78:17 | initialization of label | -| epilogues.go:78:13:78:17 | initialization of label | epilogues.go:78:27:78:27 | argument corresponding to n | -| epilogues.go:78:27:78:27 | argument corresponding to n | epilogues.go:78:27:78:27 | initialization of n | -| epilogues.go:78:27:78:27 | initialization of n | epilogues.go:79:3:79:13 | selection of Println | -| epilogues.go:79:3:79:13 | selection of Println | epilogues.go:79:15:79:19 | label | -| epilogues.go:79:3:79:23 | call to Println | epilogues.go:78:8:80:2 | exit | +| epilogues.go:78:8:80:15 | After function call | epilogues.go:78:2:80:15 | defer statement | +| epilogues.go:78:8:80:15 | defer-invoke function call | epilogues.go:77:29:82:1 | After block statement | +| epilogues.go:78:8:80:15 | defer-invoke function call | epilogues.go:78:2:80:15 | catch-defer-panic defer statement | +| epilogues.go:78:8:80:15 | function call | epilogues.go:78:8:80:2 | function literal | +| epilogues.go:78:13:78:17 | label | epilogues.go:78:27:78:27 | n | +| epilogues.go:78:27:78:27 | n | epilogues.go:78:34:80:2 | block statement | +| epilogues.go:78:34:80:2 | After block statement | epilogues.go:78:8:80:2 | Normal Exit | +| epilogues.go:78:34:80:2 | block statement | epilogues.go:79:3:79:23 | expression statement | +| epilogues.go:79:3:79:13 | After selection of Println | epilogues.go:79:15:79:19 | label | +| epilogues.go:79:3:79:13 | Before selection of Println | epilogues.go:79:3:79:13 | selection of Println | +| epilogues.go:79:3:79:13 | selection of Println | epilogues.go:79:3:79:13 | After selection of Println | +| epilogues.go:79:3:79:23 | After call to Println | epilogues.go:79:3:79:23 | After expression statement | +| epilogues.go:79:3:79:23 | After expression statement | epilogues.go:78:34:80:2 | After block statement | +| epilogues.go:79:3:79:23 | Before call to Println | epilogues.go:79:3:79:13 | Before selection of Println | +| epilogues.go:79:3:79:23 | call to Println | epilogues.go:78:8:80:2 | Exceptional Exit | +| epilogues.go:79:3:79:23 | call to Println | epilogues.go:79:3:79:23 | After call to Println | +| epilogues.go:79:3:79:23 | expression statement | epilogues.go:79:3:79:23 | Before call to Println | | epilogues.go:79:15:79:19 | label | epilogues.go:79:22:79:22 | n | | epilogues.go:79:22:79:22 | n | epilogues.go:79:3:79:23 | call to Println | -| epilogues.go:80:4:80:9 | "done" | epilogues.go:80:12:80:12 | x | +| epilogues.go:80:4:80:9 | "done" | epilogues.go:80:12:80:14 | Before ...+... | | epilogues.go:80:12:80:12 | x | epilogues.go:80:14:80:14 | 1 | -| epilogues.go:80:12:80:14 | ...+... | epilogues.go:78:2:80:15 | defer statement | +| epilogues.go:80:12:80:14 | ...+... | epilogues.go:80:12:80:14 | After ...+... | +| epilogues.go:80:12:80:14 | After ...+... | epilogues.go:78:8:80:15 | After function call | +| epilogues.go:80:12:80:14 | Before ...+... | epilogues.go:80:12:80:12 | x | | epilogues.go:80:14:80:14 | 1 | epilogues.go:80:12:80:14 | ...+... | -| epilogues.go:81:2:81:12 | selection of Println | epilogues.go:81:14:81:19 | "body" | -| epilogues.go:81:2:81:23 | call to Println | epilogues.go:78:8:80:15 | function call | +| epilogues.go:81:2:81:12 | After selection of Println | epilogues.go:81:14:81:19 | "body" | +| epilogues.go:81:2:81:12 | Before selection of Println | epilogues.go:81:2:81:12 | selection of Println | +| epilogues.go:81:2:81:12 | selection of Println | epilogues.go:81:2:81:12 | After selection of Println | +| epilogues.go:81:2:81:23 | After call to Println | epilogues.go:81:2:81:23 | After expression statement | +| epilogues.go:81:2:81:23 | After expression statement | epilogues.go:78:8:80:15 | defer-invoke function call | +| epilogues.go:81:2:81:23 | Before call to Println | epilogues.go:81:2:81:12 | Before selection of Println | +| epilogues.go:81:2:81:23 | call to Println | epilogues.go:81:2:81:23 | After call to Println | +| epilogues.go:81:2:81:23 | call to Println | epilogues.go:81:2:81:23 | catch-panic expression statement | +| epilogues.go:81:2:81:23 | catch-panic expression statement | epilogues.go:78:8:80:15 | defer-invoke function call | +| epilogues.go:81:2:81:23 | expression statement | epilogues.go:81:2:81:23 | Before call to Println | | epilogues.go:81:14:81:19 | "body" | epilogues.go:81:22:81:22 | x | | epilogues.go:81:22:81:22 | x | epilogues.go:81:2:81:23 | call to Println | -| epilogues.go:87:1:98:1 | entry | epilogues.go:87:22:87:22 | argument corresponding to x | -| epilogues.go:87:1:98:1 | function declaration | epilogues.go:102:6:102:24 | skip | -| epilogues.go:87:6:87:20 | skip | epilogues.go:87:1:98:1 | function declaration | -| epilogues.go:87:22:87:22 | argument corresponding to x | epilogues.go:87:22:87:22 | initialization of x | -| epilogues.go:87:22:87:22 | initialization of x | epilogues.go:87:30:87:35 | zero value for result | -| epilogues.go:87:30:87:35 | implicit read of result | epilogues.go:87:1:98:1 | exit | -| epilogues.go:87:30:87:35 | initialization of result | epilogues.go:88:8:92:2 | function literal | -| epilogues.go:87:30:87:35 | zero value for result | epilogues.go:87:30:87:35 | initialization of result | -| epilogues.go:88:2:92:4 | defer statement | epilogues.go:93:5:93:5 | x | -| epilogues.go:88:8:92:2 | entry | epilogues.go:89:6:89:6 | skip | -| epilogues.go:88:8:92:2 | function literal | epilogues.go:88:2:92:4 | defer statement | -| epilogues.go:88:8:92:4 | function call | epilogues.go:87:1:98:1 | exit | -| epilogues.go:88:8:92:4 | function call | epilogues.go:87:30:87:35 | implicit read of result | -| epilogues.go:89:6:89:6 | assignment to r | epilogues.go:89:22:89:22 | r | -| epilogues.go:89:6:89:6 | skip | epilogues.go:89:11:89:17 | recover | +| epilogues.go:87:1:98:1 | Entry | epilogues.go:87:22:87:22 | x | +| epilogues.go:87:1:98:1 | Exceptional Exit | epilogues.go:87:1:98:1 | Exit | +| epilogues.go:87:1:98:1 | Normal Exit | epilogues.go:87:1:98:1 | Exit | +| epilogues.go:87:1:98:1 | function declaration | epilogues.go:102:1:110:1 | function declaration | +| epilogues.go:87:22:87:22 | x | epilogues.go:87:42:98:1 | block statement | +| epilogues.go:87:42:98:1 | After block statement | epilogues.go:87:1:98:1 | Normal Exit | +| epilogues.go:87:42:98:1 | block statement | epilogues.go:87:42:98:1 | zero-init:0 block statement | +| epilogues.go:87:42:98:1 | result-read:0 block statement | epilogues.go:87:42:98:1 | After block statement | +| epilogues.go:87:42:98:1 | zero-init:0 block statement | epilogues.go:88:2:92:4 | Before defer statement | +| epilogues.go:88:2:92:4 | After defer statement | epilogues.go:93:2:95:2 | if statement | +| epilogues.go:88:2:92:4 | Before defer statement | epilogues.go:88:8:92:4 | function call | +| epilogues.go:88:2:92:4 | catch-defer-panic defer statement | epilogues.go:87:1:98:1 | Exceptional Exit | +| epilogues.go:88:2:92:4 | defer statement | epilogues.go:88:2:92:4 | After defer statement | +| epilogues.go:88:8:92:2 | Entry | epilogues.go:88:15:92:2 | block statement | +| epilogues.go:88:8:92:2 | Normal Exit | epilogues.go:88:8:92:2 | Exit | +| epilogues.go:88:8:92:2 | function literal | epilogues.go:88:8:92:4 | After function call | +| epilogues.go:88:8:92:4 | After function call | epilogues.go:88:2:92:4 | defer statement | +| epilogues.go:88:8:92:4 | defer-invoke function call | epilogues.go:87:42:98:1 | result-read:0 block statement | +| epilogues.go:88:8:92:4 | defer-invoke function call | epilogues.go:88:2:92:4 | catch-defer-panic defer statement | +| epilogues.go:88:8:92:4 | function call | epilogues.go:88:8:92:2 | function literal | +| epilogues.go:88:15:92:2 | After block statement | epilogues.go:88:8:92:2 | Normal Exit | +| epilogues.go:88:15:92:2 | block statement | epilogues.go:89:3:91:3 | if statement | +| epilogues.go:89:3:91:3 | After if statement | epilogues.go:88:15:92:2 | After block statement | +| epilogues.go:89:3:91:3 | if statement | epilogues.go:89:6:89:19 | ... := ... | +| epilogues.go:89:6:89:19 | ... := ... | epilogues.go:89:11:89:19 | Before call to recover | +| epilogues.go:89:6:89:19 | After ... := ... | epilogues.go:89:22:89:29 | Before ...!=... | +| epilogues.go:89:6:89:19 | assign:0 ... := ... | epilogues.go:89:6:89:19 | After ... := ... | | epilogues.go:89:11:89:17 | recover | epilogues.go:89:11:89:19 | call to recover | -| epilogues.go:89:11:89:19 | call to recover | epilogues.go:89:6:89:6 | assignment to r | +| epilogues.go:89:11:89:19 | After call to recover | epilogues.go:89:6:89:19 | assign:0 ... := ... | +| epilogues.go:89:11:89:19 | Before call to recover | epilogues.go:89:11:89:17 | recover | +| epilogues.go:89:11:89:19 | call to recover | epilogues.go:89:11:89:19 | After call to recover | | epilogues.go:89:22:89:22 | r | epilogues.go:89:27:89:29 | nil | -| epilogues.go:89:22:89:29 | ...!=... | epilogues.go:88:8:92:2 | exit | -| epilogues.go:89:22:89:29 | ...!=... | epilogues.go:89:22:89:29 | ...!=... is false | -| epilogues.go:89:22:89:29 | ...!=... | epilogues.go:89:22:89:29 | ...!=... is true | -| epilogues.go:89:22:89:29 | ...!=... is false | epilogues.go:88:8:92:2 | exit | -| epilogues.go:89:22:89:29 | ...!=... is true | epilogues.go:90:4:90:9 | skip | +| epilogues.go:89:22:89:29 | ...!=... | epilogues.go:89:22:89:29 | After ...!=... [false] | +| epilogues.go:89:22:89:29 | ...!=... | epilogues.go:89:22:89:29 | After ...!=... [true] | +| epilogues.go:89:22:89:29 | After ...!=... [false] | epilogues.go:89:3:91:3 | After if statement | +| epilogues.go:89:22:89:29 | After ...!=... [true] | epilogues.go:89:31:91:3 | block statement | +| epilogues.go:89:22:89:29 | Before ...!=... | epilogues.go:89:22:89:22 | r | | epilogues.go:89:27:89:29 | nil | epilogues.go:89:22:89:29 | ...!=... | -| epilogues.go:90:4:90:9 | assignment to result | epilogues.go:88:8:92:2 | exit | -| epilogues.go:90:4:90:9 | skip | epilogues.go:90:13:90:14 | -... | -| epilogues.go:90:13:90:14 | -... | epilogues.go:90:4:90:9 | assignment to result | +| epilogues.go:89:31:91:3 | After block statement | epilogues.go:89:3:91:3 | After if statement | +| epilogues.go:89:31:91:3 | block statement | epilogues.go:90:4:90:14 | ... = ... | +| epilogues.go:90:4:90:14 | ... = ... | epilogues.go:90:13:90:14 | Before -... | +| epilogues.go:90:4:90:14 | After ... = ... | epilogues.go:89:31:91:3 | After block statement | +| epilogues.go:90:4:90:14 | assign:0 ... = ... | epilogues.go:90:4:90:14 | After ... = ... | +| epilogues.go:90:13:90:14 | -... | epilogues.go:90:13:90:14 | After -... | +| epilogues.go:90:13:90:14 | After -... | epilogues.go:90:4:90:14 | assign:0 ... = ... | +| epilogues.go:90:13:90:14 | Before -... | epilogues.go:90:13:90:14 | -... | +| epilogues.go:93:2:95:2 | After if statement | epilogues.go:96:2:96:15 | ... = ... | +| epilogues.go:93:2:95:2 | catch-panic if statement | epilogues.go:88:8:92:4 | defer-invoke function call | +| epilogues.go:93:2:95:2 | if statement | epilogues.go:93:5:93:9 | Before ...<... | | epilogues.go:93:5:93:5 | x | epilogues.go:93:9:93:9 | 0 | -| epilogues.go:93:5:93:9 | ...<... | epilogues.go:93:5:93:9 | ...<... is false | -| epilogues.go:93:5:93:9 | ...<... | epilogues.go:93:5:93:9 | ...<... is true | -| epilogues.go:93:5:93:9 | ...<... is false | epilogues.go:96:2:96:7 | skip | -| epilogues.go:93:5:93:9 | ...<... is true | epilogues.go:94:3:94:7 | panic | +| epilogues.go:93:5:93:9 | ...<... | epilogues.go:93:5:93:9 | After ...<... [false] | +| epilogues.go:93:5:93:9 | ...<... | epilogues.go:93:5:93:9 | After ...<... [true] | +| epilogues.go:93:5:93:9 | After ...<... [false] | epilogues.go:93:2:95:2 | After if statement | +| epilogues.go:93:5:93:9 | After ...<... [true] | epilogues.go:93:11:95:2 | block statement | +| epilogues.go:93:5:93:9 | Before ...<... | epilogues.go:93:5:93:5 | x | | epilogues.go:93:9:93:9 | 0 | epilogues.go:93:5:93:9 | ...<... | +| epilogues.go:93:11:95:2 | block statement | epilogues.go:94:3:94:14 | expression statement | | epilogues.go:94:3:94:7 | panic | epilogues.go:94:9:94:13 | "neg" | -| epilogues.go:94:3:94:14 | call to panic | epilogues.go:88:8:92:4 | function call | +| epilogues.go:94:3:94:14 | Before call to panic | epilogues.go:94:3:94:7 | panic | +| epilogues.go:94:3:94:14 | call to panic | epilogues.go:93:2:95:2 | catch-panic if statement | +| epilogues.go:94:3:94:14 | expression statement | epilogues.go:94:3:94:14 | Before call to panic | | epilogues.go:94:9:94:13 | "neg" | epilogues.go:94:3:94:14 | call to panic | -| epilogues.go:96:2:96:7 | assignment to result | epilogues.go:97:9:97:14 | result | -| epilogues.go:96:2:96:7 | skip | epilogues.go:96:11:96:11 | x | +| epilogues.go:96:2:96:15 | ... = ... | epilogues.go:96:11:96:15 | Before ...*... | +| epilogues.go:96:2:96:15 | After ... = ... | epilogues.go:97:2:97:14 | Before return statement | +| epilogues.go:96:2:96:15 | assign:0 ... = ... | epilogues.go:96:2:96:15 | After ... = ... | | epilogues.go:96:11:96:11 | x | epilogues.go:96:15:96:15 | x | -| epilogues.go:96:11:96:15 | ...*... | epilogues.go:96:2:96:7 | assignment to result | +| epilogues.go:96:11:96:15 | ...*... | epilogues.go:96:11:96:15 | After ...*... | +| epilogues.go:96:11:96:15 | After ...*... | epilogues.go:96:2:96:15 | assign:0 ... = ... | +| epilogues.go:96:11:96:15 | Before ...*... | epilogues.go:96:11:96:11 | x | | epilogues.go:96:15:96:15 | x | epilogues.go:96:11:96:15 | ...*... | -| epilogues.go:97:2:97:14 | return statement | epilogues.go:88:8:92:4 | function call | -| epilogues.go:97:9:97:14 | implicit write of result | epilogues.go:97:2:97:14 | return statement | -| epilogues.go:97:9:97:14 | result | epilogues.go:97:9:97:14 | implicit write of result | -| epilogues.go:102:1:110:1 | entry | epilogues.go:102:26:102:26 | argument corresponding to x | -| epilogues.go:102:1:110:1 | function declaration | epilogues.go:115:6:115:22 | skip | -| epilogues.go:102:6:102:24 | skip | epilogues.go:102:1:110:1 | function declaration | -| epilogues.go:102:26:102:26 | argument corresponding to x | epilogues.go:102:26:102:26 | initialization of x | -| epilogues.go:102:26:102:26 | initialization of x | epilogues.go:102:34:102:35 | zero value for ok | -| epilogues.go:102:34:102:35 | implicit read of ok | epilogues.go:102:43:102:43 | implicit read of n | -| epilogues.go:102:34:102:35 | initialization of ok | epilogues.go:102:43:102:43 | zero value for n | -| epilogues.go:102:34:102:35 | zero value for ok | epilogues.go:102:34:102:35 | initialization of ok | -| epilogues.go:102:43:102:43 | implicit read of n | epilogues.go:102:1:110:1 | exit | -| epilogues.go:102:43:102:43 | initialization of n | epilogues.go:103:8:103:17 | epiRecover | -| epilogues.go:102:43:102:43 | zero value for n | epilogues.go:102:43:102:43 | initialization of n | -| epilogues.go:103:2:103:19 | defer statement | epilogues.go:104:5:104:5 | x | -| epilogues.go:103:8:103:17 | epiRecover | epilogues.go:103:2:103:19 | defer statement | -| epilogues.go:103:8:103:19 | call to epiRecover | epilogues.go:102:1:110:1 | exit | -| epilogues.go:103:8:103:19 | call to epiRecover | epilogues.go:102:34:102:35 | implicit read of ok | +| epilogues.go:97:2:97:14 | Before return statement | epilogues.go:97:9:97:14 | result | +| epilogues.go:97:2:97:14 | catch-return return statement | epilogues.go:88:8:92:4 | defer-invoke function call | +| epilogues.go:97:2:97:14 | result-write:0 return statement | epilogues.go:97:2:97:14 | return statement | +| epilogues.go:97:2:97:14 | return statement | epilogues.go:97:2:97:14 | catch-return return statement | +| epilogues.go:97:9:97:14 | result | epilogues.go:97:2:97:14 | result-write:0 return statement | +| epilogues.go:102:1:110:1 | Entry | epilogues.go:102:26:102:26 | x | +| epilogues.go:102:1:110:1 | Exceptional Exit | epilogues.go:102:1:110:1 | Exit | +| epilogues.go:102:1:110:1 | Normal Exit | epilogues.go:102:1:110:1 | Exit | +| epilogues.go:102:1:110:1 | function declaration | epilogues.go:115:1:118:1 | function declaration | +| epilogues.go:102:26:102:26 | x | epilogues.go:102:50:110:1 | block statement | +| epilogues.go:102:50:110:1 | After block statement | epilogues.go:102:1:110:1 | Normal Exit | +| epilogues.go:102:50:110:1 | block statement | epilogues.go:102:50:110:1 | zero-init:0 block statement | +| epilogues.go:102:50:110:1 | result-read:0 block statement | epilogues.go:102:50:110:1 | result-read:1 block statement | +| epilogues.go:102:50:110:1 | result-read:1 block statement | epilogues.go:102:50:110:1 | After block statement | +| epilogues.go:102:50:110:1 | zero-init:0 block statement | epilogues.go:102:50:110:1 | zero-init:1 block statement | +| epilogues.go:102:50:110:1 | zero-init:1 block statement | epilogues.go:103:2:103:19 | Before defer statement | +| epilogues.go:103:2:103:19 | After defer statement | epilogues.go:104:2:106:2 | if statement | +| epilogues.go:103:2:103:19 | Before defer statement | epilogues.go:103:8:103:19 | call to epiRecover | +| epilogues.go:103:2:103:19 | catch-defer-panic defer statement | epilogues.go:102:1:110:1 | Exceptional Exit | +| epilogues.go:103:2:103:19 | defer statement | epilogues.go:103:2:103:19 | After defer statement | +| epilogues.go:103:8:103:17 | epiRecover | epilogues.go:103:8:103:19 | After call to epiRecover | +| epilogues.go:103:8:103:19 | After call to epiRecover | epilogues.go:103:2:103:19 | defer statement | +| epilogues.go:103:8:103:19 | call to epiRecover | epilogues.go:103:8:103:17 | epiRecover | +| epilogues.go:103:8:103:19 | defer-invoke call to epiRecover | epilogues.go:102:50:110:1 | result-read:0 block statement | +| epilogues.go:103:8:103:19 | defer-invoke call to epiRecover | epilogues.go:103:2:103:19 | catch-defer-panic defer statement | +| epilogues.go:104:2:106:2 | After if statement | epilogues.go:107:2:107:6 | ... = ... | +| epilogues.go:104:2:106:2 | catch-return if statement | epilogues.go:103:8:103:19 | defer-invoke call to epiRecover | +| epilogues.go:104:2:106:2 | if statement | epilogues.go:104:5:104:10 | Before ...==... | | epilogues.go:104:5:104:5 | x | epilogues.go:104:10:104:10 | 0 | -| epilogues.go:104:5:104:10 | ...==... | epilogues.go:104:5:104:10 | ...==... is false | -| epilogues.go:104:5:104:10 | ...==... | epilogues.go:104:5:104:10 | ...==... is true | -| epilogues.go:104:5:104:10 | ...==... is false | epilogues.go:107:2:107:2 | skip | -| epilogues.go:104:5:104:10 | ...==... is true | epilogues.go:105:3:105:8 | return statement | +| epilogues.go:104:5:104:10 | ...==... | epilogues.go:104:5:104:10 | After ...==... [false] | +| epilogues.go:104:5:104:10 | ...==... | epilogues.go:104:5:104:10 | After ...==... [true] | +| epilogues.go:104:5:104:10 | After ...==... [false] | epilogues.go:104:2:106:2 | After if statement | +| epilogues.go:104:5:104:10 | After ...==... [true] | epilogues.go:104:12:106:2 | block statement | +| epilogues.go:104:5:104:10 | Before ...==... | epilogues.go:104:5:104:5 | x | | epilogues.go:104:10:104:10 | 0 | epilogues.go:104:5:104:10 | ...==... | -| epilogues.go:105:3:105:8 | return statement | epilogues.go:103:8:103:19 | call to epiRecover | -| epilogues.go:107:2:107:2 | assignment to n | epilogues.go:108:2:108:3 | skip | -| epilogues.go:107:2:107:2 | skip | epilogues.go:107:6:107:6 | x | -| epilogues.go:107:6:107:6 | x | epilogues.go:107:2:107:2 | assignment to n | -| epilogues.go:108:2:108:3 | assignment to ok | epilogues.go:109:2:109:7 | return statement | -| epilogues.go:108:2:108:3 | skip | epilogues.go:108:7:108:10 | true | -| epilogues.go:108:7:108:10 | true | epilogues.go:108:2:108:3 | assignment to ok | -| epilogues.go:109:2:109:7 | return statement | epilogues.go:103:8:103:19 | call to epiRecover | -| epilogues.go:115:1:118:1 | entry | epilogues.go:116:8:116:17 | epiRecover | -| epilogues.go:115:1:118:1 | function declaration | epilogues.go:0:0:0:0 | exit | -| epilogues.go:115:6:115:22 | skip | epilogues.go:115:1:118:1 | function declaration | -| epilogues.go:116:2:116:19 | defer statement | epilogues.go:117:2:117:6 | panic | -| epilogues.go:116:8:116:17 | epiRecover | epilogues.go:116:2:116:19 | defer statement | -| epilogues.go:116:8:116:19 | call to epiRecover | epilogues.go:115:1:118:1 | exit | +| epilogues.go:104:12:106:2 | block statement | epilogues.go:105:3:105:8 | Before return statement | +| epilogues.go:105:3:105:8 | Before return statement | epilogues.go:105:3:105:8 | return statement | +| epilogues.go:105:3:105:8 | return statement | epilogues.go:104:2:106:2 | catch-return if statement | +| epilogues.go:107:2:107:6 | ... = ... | epilogues.go:107:6:107:6 | x | +| epilogues.go:107:2:107:6 | After ... = ... | epilogues.go:108:2:108:10 | ... = ... | +| epilogues.go:107:2:107:6 | assign:0 ... = ... | epilogues.go:107:2:107:6 | After ... = ... | +| epilogues.go:107:6:107:6 | x | epilogues.go:107:2:107:6 | assign:0 ... = ... | +| epilogues.go:108:2:108:10 | ... = ... | epilogues.go:108:7:108:10 | true | +| epilogues.go:108:2:108:10 | After ... = ... | epilogues.go:109:2:109:7 | Before return statement | +| epilogues.go:108:2:108:10 | assign:0 ... = ... | epilogues.go:108:2:108:10 | After ... = ... | +| epilogues.go:108:7:108:10 | true | epilogues.go:108:2:108:10 | assign:0 ... = ... | +| epilogues.go:109:2:109:7 | Before return statement | epilogues.go:109:2:109:7 | return statement | +| epilogues.go:109:2:109:7 | catch-return return statement | epilogues.go:103:8:103:19 | defer-invoke call to epiRecover | +| epilogues.go:109:2:109:7 | return statement | epilogues.go:109:2:109:7 | catch-return return statement | +| epilogues.go:115:1:118:1 | Entry | epilogues.go:115:26:118:1 | block statement | +| epilogues.go:115:1:118:1 | Exceptional Exit | epilogues.go:115:1:118:1 | Exit | +| epilogues.go:115:1:118:1 | Normal Exit | epilogues.go:115:1:118:1 | Exit | +| epilogues.go:115:1:118:1 | function declaration | epilogues.go:0:0:0:0 | After epilogues.go | +| epilogues.go:115:26:118:1 | After block statement | epilogues.go:115:1:118:1 | Normal Exit | +| epilogues.go:115:26:118:1 | block statement | epilogues.go:116:2:116:19 | Before defer statement | +| epilogues.go:116:2:116:19 | After defer statement | epilogues.go:117:2:117:14 | expression statement | +| epilogues.go:116:2:116:19 | Before defer statement | epilogues.go:116:8:116:19 | call to epiRecover | +| epilogues.go:116:2:116:19 | catch-defer-panic defer statement | epilogues.go:115:1:118:1 | Exceptional Exit | +| epilogues.go:116:2:116:19 | defer statement | epilogues.go:116:2:116:19 | After defer statement | +| epilogues.go:116:8:116:17 | epiRecover | epilogues.go:116:8:116:19 | After call to epiRecover | +| epilogues.go:116:8:116:19 | After call to epiRecover | epilogues.go:116:2:116:19 | defer statement | +| epilogues.go:116:8:116:19 | call to epiRecover | epilogues.go:116:8:116:17 | epiRecover | +| epilogues.go:116:8:116:19 | defer-invoke call to epiRecover | epilogues.go:115:26:118:1 | After block statement | +| epilogues.go:116:8:116:19 | defer-invoke call to epiRecover | epilogues.go:116:2:116:19 | catch-defer-panic defer statement | | epilogues.go:117:2:117:6 | panic | epilogues.go:117:8:117:13 | "boom" | -| epilogues.go:117:2:117:14 | call to panic | epilogues.go:116:8:116:19 | call to epiRecover | +| epilogues.go:117:2:117:14 | Before call to panic | epilogues.go:117:2:117:6 | panic | +| epilogues.go:117:2:117:14 | call to panic | epilogues.go:117:2:117:14 | catch-panic expression statement | +| epilogues.go:117:2:117:14 | catch-panic expression statement | epilogues.go:116:8:116:19 | defer-invoke call to epiRecover | +| epilogues.go:117:2:117:14 | expression statement | epilogues.go:117:2:117:14 | Before call to panic | | epilogues.go:117:8:117:13 | "boom" | epilogues.go:117:2:117:14 | call to panic | -| equalitytests.go:0:0:0:0 | entry | equalitytests.go:3:1:5:1 | skip | -| equalitytests.go:3:1:5:1 | skip | equalitytests.go:7:1:9:1 | skip | -| equalitytests.go:7:1:9:1 | skip | equalitytests.go:11:6:11:18 | skip | -| equalitytests.go:11:1:13:1 | entry | equalitytests.go:11:20:11:21 | argument corresponding to i1 | -| equalitytests.go:11:1:13:1 | function declaration | equalitytests.go:0:0:0:0 | exit | -| equalitytests.go:11:6:11:18 | skip | equalitytests.go:11:1:13:1 | function declaration | -| equalitytests.go:11:20:11:21 | argument corresponding to i1 | equalitytests.go:11:20:11:21 | initialization of i1 | -| equalitytests.go:11:20:11:21 | initialization of i1 | equalitytests.go:11:28:11:29 | argument corresponding to i2 | -| equalitytests.go:11:28:11:29 | argument corresponding to i2 | equalitytests.go:11:28:11:29 | initialization of i2 | -| equalitytests.go:11:28:11:29 | initialization of i2 | equalitytests.go:11:36:11:37 | argument corresponding to e1 | -| equalitytests.go:11:36:11:37 | argument corresponding to e1 | equalitytests.go:11:36:11:37 | initialization of e1 | -| equalitytests.go:11:36:11:37 | initialization of e1 | equalitytests.go:11:46:11:47 | argument corresponding to e2 | -| equalitytests.go:11:46:11:47 | argument corresponding to e2 | equalitytests.go:11:46:11:47 | initialization of e2 | -| equalitytests.go:11:46:11:47 | initialization of e2 | equalitytests.go:11:56:11:57 | argument corresponding to s1 | -| equalitytests.go:11:56:11:57 | argument corresponding to s1 | equalitytests.go:11:56:11:57 | initialization of s1 | -| equalitytests.go:11:56:11:57 | initialization of s1 | equalitytests.go:11:83:11:84 | argument corresponding to s2 | -| equalitytests.go:11:83:11:84 | argument corresponding to s2 | equalitytests.go:11:83:11:84 | initialization of s2 | -| equalitytests.go:11:83:11:84 | initialization of s2 | equalitytests.go:11:110:11:111 | argument corresponding to s3 | -| equalitytests.go:11:110:11:111 | argument corresponding to s3 | equalitytests.go:11:110:11:111 | initialization of s3 | -| equalitytests.go:11:110:11:111 | initialization of s3 | equalitytests.go:11:134:11:135 | argument corresponding to s4 | -| equalitytests.go:11:134:11:135 | argument corresponding to s4 | equalitytests.go:11:134:11:135 | initialization of s4 | -| equalitytests.go:11:134:11:135 | initialization of s4 | equalitytests.go:11:158:11:159 | argument corresponding to a1 | -| equalitytests.go:11:158:11:159 | argument corresponding to a1 | equalitytests.go:11:158:11:159 | initialization of a1 | -| equalitytests.go:11:158:11:159 | initialization of a1 | equalitytests.go:11:171:11:172 | argument corresponding to a2 | -| equalitytests.go:11:171:11:172 | argument corresponding to a2 | equalitytests.go:11:171:11:172 | initialization of a2 | -| equalitytests.go:11:171:11:172 | initialization of a2 | equalitytests.go:11:184:11:185 | argument corresponding to a3 | -| equalitytests.go:11:184:11:185 | argument corresponding to a3 | equalitytests.go:11:184:11:185 | initialization of a3 | -| equalitytests.go:11:184:11:185 | initialization of a3 | equalitytests.go:11:195:11:196 | argument corresponding to a4 | -| equalitytests.go:11:195:11:196 | argument corresponding to a4 | equalitytests.go:11:195:11:196 | initialization of a4 | -| equalitytests.go:11:195:11:196 | initialization of a4 | equalitytests.go:12:9:12:10 | i1 | -| equalitytests.go:12:2:12:76 | return statement | equalitytests.go:11:1:13:1 | exit | +| equalitytests.go:0:0:0:0 | After equalitytests.go | equalitytests.go:0:0:0:0 | Normal Exit | +| equalitytests.go:0:0:0:0 | Entry | equalitytests.go:0:0:0:0 | equalitytests.go | +| equalitytests.go:0:0:0:0 | Normal Exit | equalitytests.go:0:0:0:0 | Exit | +| equalitytests.go:0:0:0:0 | equalitytests.go | equalitytests.go:3:1:5:1 | type declaration | +| equalitytests.go:3:1:5:1 | type declaration | equalitytests.go:7:1:9:1 | type declaration | +| equalitytests.go:7:1:9:1 | type declaration | equalitytests.go:11:1:13:1 | function declaration | +| equalitytests.go:11:1:13:1 | Entry | equalitytests.go:11:20:11:21 | i1 | +| equalitytests.go:11:1:13:1 | Normal Exit | equalitytests.go:11:1:13:1 | Exit | +| equalitytests.go:11:1:13:1 | function declaration | equalitytests.go:0:0:0:0 | After equalitytests.go | +| equalitytests.go:11:20:11:21 | i1 | equalitytests.go:11:28:11:29 | i2 | +| equalitytests.go:11:28:11:29 | i2 | equalitytests.go:11:36:11:37 | e1 | +| equalitytests.go:11:36:11:37 | e1 | equalitytests.go:11:46:11:47 | e2 | +| equalitytests.go:11:46:11:47 | e2 | equalitytests.go:11:56:11:57 | s1 | +| equalitytests.go:11:56:11:57 | s1 | equalitytests.go:11:83:11:84 | s2 | +| equalitytests.go:11:83:11:84 | s2 | equalitytests.go:11:110:11:111 | s3 | +| equalitytests.go:11:110:11:111 | s3 | equalitytests.go:11:134:11:135 | s4 | +| equalitytests.go:11:134:11:135 | s4 | equalitytests.go:11:158:11:159 | a1 | +| equalitytests.go:11:158:11:159 | a1 | equalitytests.go:11:171:11:172 | a2 | +| equalitytests.go:11:171:11:172 | a2 | equalitytests.go:11:184:11:185 | a3 | +| equalitytests.go:11:184:11:185 | a3 | equalitytests.go:11:195:11:196 | a4 | +| equalitytests.go:11:195:11:196 | a4 | equalitytests.go:11:211:13:1 | block statement | +| equalitytests.go:11:211:13:1 | block statement | equalitytests.go:12:2:12:76 | Before return statement | +| equalitytests.go:12:2:12:76 | Before return statement | equalitytests.go:12:9:12:76 | ...&&... | +| equalitytests.go:12:2:12:76 | return statement | equalitytests.go:11:1:13:1 | Normal Exit | | equalitytests.go:12:9:12:10 | i1 | equalitytests.go:12:15:12:16 | i2 | -| equalitytests.go:12:9:12:16 | ...==... | equalitytests.go:12:9:12:16 | ...==... is false | -| equalitytests.go:12:9:12:16 | ...==... | equalitytests.go:12:9:12:16 | ...==... is true | -| equalitytests.go:12:9:12:16 | ...==... is false | equalitytests.go:12:9:12:28 | ...&&... is false | -| equalitytests.go:12:9:12:16 | ...==... is true | equalitytests.go:12:21:12:22 | e1 | -| equalitytests.go:12:9:12:28 | ...&&... is false | equalitytests.go:12:9:12:40 | ...&&... is false | -| equalitytests.go:12:9:12:28 | ...&&... is true | equalitytests.go:12:33:12:34 | s1 | -| equalitytests.go:12:9:12:40 | ...&&... is false | equalitytests.go:12:9:12:52 | ...&&... is false | -| equalitytests.go:12:9:12:40 | ...&&... is true | equalitytests.go:12:45:12:46 | s3 | -| equalitytests.go:12:9:12:52 | ...&&... is false | equalitytests.go:12:9:12:64 | ...&&... is false | -| equalitytests.go:12:9:12:52 | ...&&... is true | equalitytests.go:12:57:12:58 | a1 | -| equalitytests.go:12:9:12:64 | ...&&... is false | equalitytests.go:12:9:12:76 | ...&&... | -| equalitytests.go:12:9:12:64 | ...&&... is true | equalitytests.go:12:69:12:70 | a3 | -| equalitytests.go:12:9:12:76 | ...&&... | equalitytests.go:12:2:12:76 | return statement | +| equalitytests.go:12:9:12:16 | ...==... | equalitytests.go:12:9:12:16 | After ...==... [false] | +| equalitytests.go:12:9:12:16 | ...==... | equalitytests.go:12:9:12:16 | After ...==... [true] | +| equalitytests.go:12:9:12:16 | After ...==... [false] | equalitytests.go:12:9:12:28 | After ...&&... [false] | +| equalitytests.go:12:9:12:16 | After ...==... [true] | equalitytests.go:12:21:12:28 | Before ...==... | +| equalitytests.go:12:9:12:16 | Before ...==... | equalitytests.go:12:9:12:10 | i1 | +| equalitytests.go:12:9:12:28 | ...&&... | equalitytests.go:12:9:12:16 | Before ...==... | +| equalitytests.go:12:9:12:28 | After ...&&... [false] | equalitytests.go:12:9:12:40 | After ...&&... [false] | +| equalitytests.go:12:9:12:28 | After ...&&... [true] | equalitytests.go:12:33:12:40 | Before ...==... | +| equalitytests.go:12:9:12:40 | ...&&... | equalitytests.go:12:9:12:28 | ...&&... | +| equalitytests.go:12:9:12:40 | After ...&&... [false] | equalitytests.go:12:9:12:52 | After ...&&... [false] | +| equalitytests.go:12:9:12:40 | After ...&&... [true] | equalitytests.go:12:45:12:52 | Before ...==... | +| equalitytests.go:12:9:12:52 | ...&&... | equalitytests.go:12:9:12:40 | ...&&... | +| equalitytests.go:12:9:12:52 | After ...&&... [false] | equalitytests.go:12:9:12:64 | After ...&&... [false] | +| equalitytests.go:12:9:12:52 | After ...&&... [true] | equalitytests.go:12:57:12:64 | Before ...==... | +| equalitytests.go:12:9:12:64 | ...&&... | equalitytests.go:12:9:12:52 | ...&&... | +| equalitytests.go:12:9:12:64 | After ...&&... [false] | equalitytests.go:12:9:12:76 | After ...&&... | +| equalitytests.go:12:9:12:64 | After ...&&... [true] | equalitytests.go:12:69:12:76 | Before ...==... | +| equalitytests.go:12:9:12:76 | ...&&... | equalitytests.go:12:9:12:64 | ...&&... | +| equalitytests.go:12:9:12:76 | After ...&&... | equalitytests.go:12:2:12:76 | return statement | | equalitytests.go:12:15:12:16 | i2 | equalitytests.go:12:9:12:16 | ...==... | | equalitytests.go:12:21:12:22 | e1 | equalitytests.go:12:27:12:28 | e2 | -| equalitytests.go:12:21:12:28 | ...==... | equalitytests.go:11:1:13:1 | exit | -| equalitytests.go:12:21:12:28 | ...==... | equalitytests.go:12:9:12:28 | ...&&... is false | -| equalitytests.go:12:21:12:28 | ...==... | equalitytests.go:12:9:12:28 | ...&&... is true | +| equalitytests.go:12:21:12:28 | ...==... | equalitytests.go:12:21:12:28 | After ...==... [false] | +| equalitytests.go:12:21:12:28 | ...==... | equalitytests.go:12:21:12:28 | After ...==... [true] | +| equalitytests.go:12:21:12:28 | After ...==... [false] | equalitytests.go:12:9:12:28 | After ...&&... [false] | +| equalitytests.go:12:21:12:28 | After ...==... [true] | equalitytests.go:12:9:12:28 | After ...&&... [true] | +| equalitytests.go:12:21:12:28 | Before ...==... | equalitytests.go:12:21:12:22 | e1 | | equalitytests.go:12:27:12:28 | e2 | equalitytests.go:12:21:12:28 | ...==... | | equalitytests.go:12:33:12:34 | s1 | equalitytests.go:12:39:12:40 | s2 | -| equalitytests.go:12:33:12:40 | ...==... | equalitytests.go:11:1:13:1 | exit | -| equalitytests.go:12:33:12:40 | ...==... | equalitytests.go:12:9:12:40 | ...&&... is false | -| equalitytests.go:12:33:12:40 | ...==... | equalitytests.go:12:9:12:40 | ...&&... is true | +| equalitytests.go:12:33:12:40 | ...==... | equalitytests.go:12:33:12:40 | After ...==... [false] | +| equalitytests.go:12:33:12:40 | ...==... | equalitytests.go:12:33:12:40 | After ...==... [true] | +| equalitytests.go:12:33:12:40 | After ...==... [false] | equalitytests.go:12:9:12:40 | After ...&&... [false] | +| equalitytests.go:12:33:12:40 | After ...==... [true] | equalitytests.go:12:9:12:40 | After ...&&... [true] | +| equalitytests.go:12:33:12:40 | Before ...==... | equalitytests.go:12:33:12:34 | s1 | | equalitytests.go:12:39:12:40 | s2 | equalitytests.go:12:33:12:40 | ...==... | | equalitytests.go:12:45:12:46 | s3 | equalitytests.go:12:51:12:52 | s4 | -| equalitytests.go:12:45:12:52 | ...==... | equalitytests.go:11:1:13:1 | exit | -| equalitytests.go:12:45:12:52 | ...==... | equalitytests.go:12:9:12:52 | ...&&... is false | -| equalitytests.go:12:45:12:52 | ...==... | equalitytests.go:12:9:12:52 | ...&&... is true | +| equalitytests.go:12:45:12:52 | ...==... | equalitytests.go:12:45:12:52 | After ...==... [false] | +| equalitytests.go:12:45:12:52 | ...==... | equalitytests.go:12:45:12:52 | After ...==... [true] | +| equalitytests.go:12:45:12:52 | After ...==... [false] | equalitytests.go:12:9:12:52 | After ...&&... [false] | +| equalitytests.go:12:45:12:52 | After ...==... [true] | equalitytests.go:12:9:12:52 | After ...&&... [true] | +| equalitytests.go:12:45:12:52 | Before ...==... | equalitytests.go:12:45:12:46 | s3 | | equalitytests.go:12:51:12:52 | s4 | equalitytests.go:12:45:12:52 | ...==... | | equalitytests.go:12:57:12:58 | a1 | equalitytests.go:12:63:12:64 | a2 | -| equalitytests.go:12:57:12:64 | ...==... | equalitytests.go:11:1:13:1 | exit | -| equalitytests.go:12:57:12:64 | ...==... | equalitytests.go:12:9:12:64 | ...&&... is false | -| equalitytests.go:12:57:12:64 | ...==... | equalitytests.go:12:9:12:64 | ...&&... is true | +| equalitytests.go:12:57:12:64 | ...==... | equalitytests.go:12:57:12:64 | After ...==... [false] | +| equalitytests.go:12:57:12:64 | ...==... | equalitytests.go:12:57:12:64 | After ...==... [true] | +| equalitytests.go:12:57:12:64 | After ...==... [false] | equalitytests.go:12:9:12:64 | After ...&&... [false] | +| equalitytests.go:12:57:12:64 | After ...==... [true] | equalitytests.go:12:9:12:64 | After ...&&... [true] | +| equalitytests.go:12:57:12:64 | Before ...==... | equalitytests.go:12:57:12:58 | a1 | | equalitytests.go:12:63:12:64 | a2 | equalitytests.go:12:57:12:64 | ...==... | | equalitytests.go:12:69:12:70 | a3 | equalitytests.go:12:75:12:76 | a4 | -| equalitytests.go:12:69:12:76 | ...==... | equalitytests.go:11:1:13:1 | exit | -| equalitytests.go:12:69:12:76 | ...==... | equalitytests.go:12:9:12:76 | ...&&... | +| equalitytests.go:12:69:12:76 | ...==... | equalitytests.go:12:69:12:76 | After ...==... | +| equalitytests.go:12:69:12:76 | After ...==... | equalitytests.go:12:9:12:76 | After ...&&... | +| equalitytests.go:12:69:12:76 | Before ...==... | equalitytests.go:12:69:12:70 | a3 | | equalitytests.go:12:75:12:76 | a4 | equalitytests.go:12:69:12:76 | ...==... | -| exprs.go:0:0:0:0 | entry | exprs.go:3:1:3:29 | skip | -| exprs.go:3:1:3:29 | skip | exprs.go:5:6:5:9 | skip | -| exprs.go:5:1:26:1 | entry | exprs.go:6:6:6:6 | skip | -| exprs.go:5:1:26:1 | function declaration | exprs.go:28:6:28:10 | skip | -| exprs.go:5:6:5:9 | skip | exprs.go:5:1:26:1 | function declaration | -| exprs.go:6:6:6:6 | assignment to i | exprs.go:6:9:6:9 | assignment to j | -| exprs.go:6:6:6:6 | skip | exprs.go:6:9:6:9 | skip | -| exprs.go:6:9:6:9 | assignment to j | exprs.go:7:6:7:6 | skip | -| exprs.go:6:9:6:9 | skip | exprs.go:6:13:6:13 | 0 | -| exprs.go:6:13:6:13 | 0 | exprs.go:6:16:6:26 | ...+... | -| exprs.go:6:16:6:26 | ...+... | exprs.go:6:6:6:6 | assignment to i | -| exprs.go:7:6:7:6 | assignment to k | exprs.go:8:2:8:2 | skip | -| exprs.go:7:6:7:6 | skip | exprs.go:7:10:7:10 | i | -| exprs.go:7:10:7:10 | i | exprs.go:7:14:7:14 | 2 | -| exprs.go:7:10:7:16 | ...+... | exprs.go:7:6:7:6 | assignment to k | +| exprs.go:0:0:0:0 | After exprs.go | exprs.go:0:0:0:0 | Normal Exit | +| exprs.go:0:0:0:0 | Entry | exprs.go:0:0:0:0 | exprs.go | +| exprs.go:0:0:0:0 | Exceptional Exit | exprs.go:0:0:0:0 | Exit | +| exprs.go:0:0:0:0 | Normal Exit | exprs.go:0:0:0:0 | Exit | +| exprs.go:0:0:0:0 | exprs.go | exprs.go:3:1:3:29 | type declaration | +| exprs.go:3:1:3:29 | type declaration | exprs.go:5:1:26:1 | function declaration | +| exprs.go:5:1:26:1 | Entry | exprs.go:5:19:26:1 | block statement | +| exprs.go:5:1:26:1 | Exceptional Exit | exprs.go:5:1:26:1 | Exit | +| exprs.go:5:1:26:1 | Normal Exit | exprs.go:5:1:26:1 | Exit | +| exprs.go:5:1:26:1 | function declaration | exprs.go:28:1:30:1 | function declaration | +| exprs.go:5:19:26:1 | block statement | exprs.go:6:2:6:26 | declaration statement | +| exprs.go:6:2:6:26 | After declaration statement | exprs.go:7:2:7:16 | declaration statement | +| exprs.go:6:2:6:26 | After variable declaration | exprs.go:6:2:6:26 | After declaration statement | +| exprs.go:6:2:6:26 | declaration statement | exprs.go:6:2:6:26 | variable declaration | +| exprs.go:6:2:6:26 | variable declaration | exprs.go:6:6:6:26 | value declaration specifier | +| exprs.go:6:6:6:26 | After value declaration specifier | exprs.go:6:2:6:26 | After variable declaration | +| exprs.go:6:6:6:26 | assign:0 value declaration specifier | exprs.go:6:6:6:26 | assign:1 value declaration specifier | +| exprs.go:6:6:6:26 | assign:1 value declaration specifier | exprs.go:6:6:6:26 | After value declaration specifier | +| exprs.go:6:6:6:26 | value declaration specifier | exprs.go:6:13:6:13 | 0 | +| exprs.go:6:13:6:13 | 0 | exprs.go:6:16:6:26 | Before ...+... | +| exprs.go:6:16:6:26 | ...+... | exprs.go:6:16:6:26 | After ...+... | +| exprs.go:6:16:6:26 | After ...+... | exprs.go:6:6:6:26 | assign:0 value declaration specifier | +| exprs.go:6:16:6:26 | Before ...+... | exprs.go:6:16:6:26 | ...+... | +| exprs.go:7:2:7:16 | After declaration statement | exprs.go:8:2:8:24 | ... := ... | +| exprs.go:7:2:7:16 | After variable declaration | exprs.go:7:2:7:16 | After declaration statement | +| exprs.go:7:2:7:16 | declaration statement | exprs.go:7:2:7:16 | variable declaration | +| exprs.go:7:2:7:16 | variable declaration | exprs.go:7:6:7:16 | value declaration specifier | +| exprs.go:7:6:7:16 | After value declaration specifier | exprs.go:7:2:7:16 | After variable declaration | +| exprs.go:7:6:7:16 | assign:0 value declaration specifier | exprs.go:7:6:7:16 | After value declaration specifier | +| exprs.go:7:6:7:16 | value declaration specifier | exprs.go:7:10:7:16 | Before ...+... | +| exprs.go:7:10:7:10 | i | exprs.go:7:14:7:16 | Before ...*... | +| exprs.go:7:10:7:16 | ...+... | exprs.go:7:10:7:16 | After ...+... | +| exprs.go:7:10:7:16 | After ...+... | exprs.go:7:6:7:16 | assign:0 value declaration specifier | +| exprs.go:7:10:7:16 | Before ...+... | exprs.go:7:10:7:10 | i | | exprs.go:7:14:7:14 | 2 | exprs.go:7:16:7:16 | j | -| exprs.go:7:14:7:16 | ...*... | exprs.go:7:10:7:16 | ...+... | +| exprs.go:7:14:7:16 | ...*... | exprs.go:7:14:7:16 | After ...*... | +| exprs.go:7:14:7:16 | After ...*... | exprs.go:7:10:7:16 | ...+... | +| exprs.go:7:14:7:16 | Before ...*... | exprs.go:7:14:7:14 | 2 | | exprs.go:7:16:7:16 | j | exprs.go:7:14:7:16 | ...*... | -| exprs.go:8:2:8:2 | assignment to s | exprs.go:9:2:9:3 | skip | -| exprs.go:8:2:8:2 | skip | exprs.go:8:7:8:12 | "k = " | -| exprs.go:8:7:8:12 | "k = " | exprs.go:8:23:8:23 | k | -| exprs.go:8:7:8:24 | ...+... | exprs.go:8:2:8:2 | assignment to s | -| exprs.go:8:16:8:24 | type conversion | exprs.go:8:7:8:24 | ...+... | +| exprs.go:8:2:8:24 | ... := ... | exprs.go:8:7:8:24 | Before ...+... | +| exprs.go:8:2:8:24 | After ... := ... | exprs.go:9:2:9:61 | ... := ... | +| exprs.go:8:2:8:24 | assign:0 ... := ... | exprs.go:8:2:8:24 | After ... := ... | +| exprs.go:8:7:8:12 | "k = " | exprs.go:8:16:8:24 | Before type conversion | +| exprs.go:8:7:8:24 | ...+... | exprs.go:8:7:8:24 | After ...+... | +| exprs.go:8:7:8:24 | After ...+... | exprs.go:8:2:8:24 | assign:0 ... := ... | +| exprs.go:8:7:8:24 | Before ...+... | exprs.go:8:7:8:12 | "k = " | +| exprs.go:8:16:8:24 | After type conversion | exprs.go:8:7:8:24 | ...+... | +| exprs.go:8:16:8:24 | Before type conversion | exprs.go:8:23:8:23 | k | +| exprs.go:8:16:8:24 | type conversion | exprs.go:8:16:8:24 | After type conversion | | exprs.go:8:23:8:23 | k | exprs.go:8:16:8:24 | type conversion | -| exprs.go:9:2:9:3 | assignment to fn | exprs.go:10:2:10:8 | skip | -| exprs.go:9:2:9:3 | skip | exprs.go:9:8:9:61 | function literal | -| exprs.go:9:8:9:61 | entry | exprs.go:9:13:9:13 | argument corresponding to a | -| exprs.go:9:8:9:61 | function literal | exprs.go:9:2:9:3 | assignment to fn | -| exprs.go:9:13:9:13 | argument corresponding to a | exprs.go:9:13:9:13 | initialization of a | -| exprs.go:9:13:9:13 | initialization of a | exprs.go:9:16:9:16 | argument corresponding to b | -| exprs.go:9:16:9:16 | argument corresponding to b | exprs.go:9:16:9:16 | initialization of b | -| exprs.go:9:16:9:16 | initialization of b | exprs.go:9:23:9:23 | argument corresponding to z | -| exprs.go:9:23:9:23 | argument corresponding to z | exprs.go:9:23:9:23 | initialization of z | -| exprs.go:9:23:9:23 | initialization of z | exprs.go:9:48:9:48 | a | -| exprs.go:9:41:9:59 | return statement | exprs.go:9:8:9:61 | exit | +| exprs.go:9:2:9:61 | ... := ... | exprs.go:9:8:9:61 | function literal | +| exprs.go:9:2:9:61 | After ... := ... | exprs.go:10:2:10:32 | ... := ... | +| exprs.go:9:2:9:61 | assign:0 ... := ... | exprs.go:9:2:9:61 | After ... := ... | +| exprs.go:9:8:9:61 | Entry | exprs.go:9:13:9:13 | a | +| exprs.go:9:8:9:61 | Normal Exit | exprs.go:9:8:9:61 | Exit | +| exprs.go:9:8:9:61 | function literal | exprs.go:9:2:9:61 | assign:0 ... := ... | +| exprs.go:9:13:9:13 | a | exprs.go:9:16:9:16 | b | +| exprs.go:9:16:9:16 | b | exprs.go:9:23:9:23 | z | +| exprs.go:9:23:9:23 | z | exprs.go:9:39:9:61 | block statement | +| exprs.go:9:39:9:61 | block statement | exprs.go:9:41:9:59 | Before return statement | +| exprs.go:9:41:9:59 | Before return statement | exprs.go:9:48:9:59 | Before ...<... | +| exprs.go:9:41:9:59 | return statement | exprs.go:9:8:9:61 | Normal Exit | | exprs.go:9:48:9:48 | a | exprs.go:9:50:9:50 | b | -| exprs.go:9:48:9:50 | ...*... | exprs.go:9:58:9:58 | z | -| exprs.go:9:48:9:59 | ...<... | exprs.go:9:41:9:59 | return statement | +| exprs.go:9:48:9:50 | ...*... | exprs.go:9:48:9:50 | After ...*... | +| exprs.go:9:48:9:50 | After ...*... | exprs.go:9:54:9:59 | Before type conversion | +| exprs.go:9:48:9:50 | Before ...*... | exprs.go:9:48:9:48 | a | +| exprs.go:9:48:9:59 | ...<... | exprs.go:9:48:9:59 | After ...<... | +| exprs.go:9:48:9:59 | After ...<... | exprs.go:9:41:9:59 | return statement | +| exprs.go:9:48:9:59 | Before ...<... | exprs.go:9:48:9:50 | Before ...*... | | exprs.go:9:50:9:50 | b | exprs.go:9:48:9:50 | ...*... | -| exprs.go:9:54:9:59 | type conversion | exprs.go:9:48:9:59 | ...<... | +| exprs.go:9:54:9:59 | After type conversion | exprs.go:9:48:9:59 | ...<... | +| exprs.go:9:54:9:59 | Before type conversion | exprs.go:9:58:9:58 | z | +| exprs.go:9:54:9:59 | type conversion | exprs.go:9:54:9:59 | After type conversion | | exprs.go:9:58:9:58 | z | exprs.go:9:54:9:59 | type conversion | -| exprs.go:10:2:10:8 | assignment to struct1 | exprs.go:11:2:11:8 | skip | -| exprs.go:10:2:10:8 | skip | exprs.go:10:13:10:32 | struct literal | -| exprs.go:10:13:10:32 | struct literal | exprs.go:10:2:10:8 | assignment to struct1 | -| exprs.go:11:2:11:8 | assignment to struct2 | exprs.go:15:2:15:8 | skip | -| exprs.go:11:2:11:8 | skip | exprs.go:11:13:14:21 | struct literal | +| exprs.go:10:2:10:32 | ... := ... | exprs.go:10:13:10:32 | Before struct literal | +| exprs.go:10:2:10:32 | After ... := ... | exprs.go:11:2:14:21 | ... := ... | +| exprs.go:10:2:10:32 | assign:0 ... := ... | exprs.go:10:2:10:32 | After ... := ... | +| exprs.go:10:13:10:32 | After struct literal | exprs.go:10:2:10:32 | assign:0 ... := ... | +| exprs.go:10:13:10:32 | Before struct literal | exprs.go:10:13:10:32 | struct literal | +| exprs.go:10:13:10:32 | struct literal | exprs.go:10:13:10:32 | After struct literal | +| exprs.go:11:2:14:21 | ... := ... | exprs.go:11:13:14:21 | Before struct literal | +| exprs.go:11:2:14:21 | After ... := ... | exprs.go:15:2:15:58 | ... := ... | +| exprs.go:11:2:14:21 | assign:0 ... := ... | exprs.go:11:2:14:21 | After ... := ... | +| exprs.go:11:13:14:21 | After struct literal | exprs.go:11:2:14:21 | assign:0 ... := ... | +| exprs.go:11:13:14:21 | Before struct literal | exprs.go:11:13:14:21 | struct literal | | exprs.go:11:13:14:21 | struct literal | exprs.go:14:4:14:4 | k | -| exprs.go:14:4:14:4 | init of k | exprs.go:14:7:14:8 | fn | -| exprs.go:14:4:14:4 | k | exprs.go:14:4:14:4 | init of k | +| exprs.go:14:4:14:4 | After k | exprs.go:14:4:14:4 | lit-init k | +| exprs.go:14:4:14:4 | k | exprs.go:14:4:14:4 | After k | +| exprs.go:14:4:14:4 | lit-init k | exprs.go:14:7:14:20 | Before call to fn | | exprs.go:14:7:14:8 | fn | exprs.go:14:10:14:10 | i | -| exprs.go:14:7:14:20 | call to fn | exprs.go:5:1:26:1 | exit | -| exprs.go:14:7:14:20 | call to fn | exprs.go:14:7:14:20 | init of call to fn | -| exprs.go:14:7:14:20 | init of call to fn | exprs.go:11:2:11:8 | assignment to struct2 | +| exprs.go:14:7:14:20 | After call to fn | exprs.go:14:7:14:20 | lit-init call to fn | +| exprs.go:14:7:14:20 | Before call to fn | exprs.go:14:7:14:8 | fn | +| exprs.go:14:7:14:20 | call to fn | exprs.go:5:1:26:1 | Exceptional Exit | +| exprs.go:14:7:14:20 | call to fn | exprs.go:14:7:14:20 | After call to fn | +| exprs.go:14:7:14:20 | lit-init call to fn | exprs.go:11:13:14:21 | After struct literal | | exprs.go:14:10:14:10 | i | exprs.go:14:13:14:13 | j | -| exprs.go:14:13:14:13 | j | exprs.go:14:16:14:19 | .../... | -| exprs.go:14:16:14:19 | .../... | exprs.go:14:7:14:20 | call to fn | -| exprs.go:15:2:15:8 | assignment to struct3 | exprs.go:16:2:16:5 | skip | -| exprs.go:15:2:15:8 | skip | exprs.go:15:13:15:58 | struct literal | -| exprs.go:15:13:15:58 | struct literal | exprs.go:15:35:15:41 | struct1 | -| exprs.go:15:32:15:43 | init of key-value pair | exprs.go:15:49:15:55 | struct2 | +| exprs.go:14:13:14:13 | j | exprs.go:14:16:14:19 | Before .../... | +| exprs.go:14:16:14:19 | .../... | exprs.go:14:16:14:19 | After .../... | +| exprs.go:14:16:14:19 | After .../... | exprs.go:14:7:14:20 | call to fn | +| exprs.go:14:16:14:19 | Before .../... | exprs.go:14:16:14:19 | .../... | +| exprs.go:15:2:15:58 | ... := ... | exprs.go:15:13:15:58 | Before struct literal | +| exprs.go:15:2:15:58 | After ... := ... | exprs.go:16:2:16:26 | ... := ... | +| exprs.go:15:2:15:58 | assign:0 ... := ... | exprs.go:15:2:15:58 | After ... := ... | +| exprs.go:15:13:15:58 | After struct literal | exprs.go:15:2:15:58 | assign:0 ... := ... | +| exprs.go:15:13:15:58 | Before struct literal | exprs.go:15:13:15:58 | struct literal | +| exprs.go:15:13:15:58 | struct literal | exprs.go:15:32:15:43 | Before key-value pair | +| exprs.go:15:32:15:43 | After key-value pair | exprs.go:15:32:15:43 | lit-init key-value pair | +| exprs.go:15:32:15:43 | Before key-value pair | exprs.go:15:35:15:43 | Before selection of x | +| exprs.go:15:32:15:43 | key-value pair | exprs.go:15:32:15:43 | After key-value pair | +| exprs.go:15:32:15:43 | lit-init key-value pair | exprs.go:15:46:15:57 | Before key-value pair | | exprs.go:15:35:15:41 | struct1 | exprs.go:15:35:15:43 | selection of x | -| exprs.go:15:35:15:43 | selection of x | exprs.go:15:32:15:43 | init of key-value pair | -| exprs.go:15:46:15:57 | init of key-value pair | exprs.go:15:2:15:8 | assignment to struct3 | +| exprs.go:15:35:15:43 | After selection of x | exprs.go:15:32:15:43 | key-value pair | +| exprs.go:15:35:15:43 | Before selection of x | exprs.go:15:35:15:41 | struct1 | +| exprs.go:15:35:15:43 | selection of x | exprs.go:15:35:15:43 | After selection of x | +| exprs.go:15:46:15:57 | After key-value pair | exprs.go:15:46:15:57 | lit-init key-value pair | +| exprs.go:15:46:15:57 | Before key-value pair | exprs.go:15:49:15:57 | Before selection of x | +| exprs.go:15:46:15:57 | key-value pair | exprs.go:15:46:15:57 | After key-value pair | +| exprs.go:15:46:15:57 | lit-init key-value pair | exprs.go:15:13:15:58 | After struct literal | | exprs.go:15:49:15:55 | struct2 | exprs.go:15:49:15:57 | selection of x | -| exprs.go:15:49:15:57 | selection of x | exprs.go:15:46:15:57 | init of key-value pair | -| exprs.go:16:2:16:5 | assignment to arr1 | exprs.go:17:2:17:5 | skip | -| exprs.go:16:2:16:5 | skip | exprs.go:16:10:16:26 | array literal | -| exprs.go:16:10:16:26 | array literal | exprs.go:16:17:16:25 | element index | +| exprs.go:15:49:15:57 | After selection of x | exprs.go:15:46:15:57 | key-value pair | +| exprs.go:15:49:15:57 | Before selection of x | exprs.go:15:49:15:55 | struct2 | +| exprs.go:15:49:15:57 | selection of x | exprs.go:15:49:15:57 | After selection of x | +| exprs.go:16:2:16:26 | ... := ... | exprs.go:16:10:16:26 | Before array literal | +| exprs.go:16:2:16:26 | After ... := ... | exprs.go:17:2:17:40 | ... := ... | +| exprs.go:16:2:16:26 | assign:0 ... := ... | exprs.go:16:2:16:26 | After ... := ... | +| exprs.go:16:10:16:26 | After array literal | exprs.go:16:2:16:26 | assign:0 ... := ... | +| exprs.go:16:10:16:26 | Before array literal | exprs.go:16:10:16:26 | array literal | +| exprs.go:16:10:16:26 | array literal | exprs.go:16:17:16:25 | Before selection of x | | exprs.go:16:17:16:23 | struct3 | exprs.go:16:17:16:25 | selection of x | -| exprs.go:16:17:16:25 | element index | exprs.go:16:17:16:23 | struct3 | -| exprs.go:16:17:16:25 | init of selection of x | exprs.go:16:2:16:5 | assignment to arr1 | -| exprs.go:16:17:16:25 | selection of x | exprs.go:16:17:16:25 | init of selection of x | -| exprs.go:17:2:17:5 | assignment to arr2 | exprs.go:18:2:18:4 | skip | -| exprs.go:17:2:17:5 | skip | exprs.go:17:10:17:40 | array literal | -| exprs.go:17:10:17:40 | array literal | exprs.go:17:19:17:27 | element index | +| exprs.go:16:17:16:25 | After selection of x | exprs.go:16:17:16:25 | lit-init selection of x | +| exprs.go:16:17:16:25 | Before selection of x | exprs.go:16:17:16:23 | struct3 | +| exprs.go:16:17:16:25 | lit-init selection of x | exprs.go:16:10:16:26 | After array literal | +| exprs.go:16:17:16:25 | selection of x | exprs.go:16:17:16:25 | After selection of x | +| exprs.go:17:2:17:40 | ... := ... | exprs.go:17:10:17:40 | Before array literal | +| exprs.go:17:2:17:40 | After ... := ... | exprs.go:18:2:18:22 | ... := ... | +| exprs.go:17:2:17:40 | assign:0 ... := ... | exprs.go:17:2:17:40 | After ... := ... | +| exprs.go:17:10:17:40 | After array literal | exprs.go:17:2:17:40 | assign:0 ... := ... | +| exprs.go:17:10:17:40 | Before array literal | exprs.go:17:10:17:40 | array literal | +| exprs.go:17:10:17:40 | array literal | exprs.go:17:19:17:27 | Before selection of x | | exprs.go:17:19:17:25 | struct3 | exprs.go:17:19:17:27 | selection of x | -| exprs.go:17:19:17:27 | element index | exprs.go:17:19:17:25 | struct3 | -| exprs.go:17:19:17:27 | init of selection of x | exprs.go:17:30:17:30 | 2 | -| exprs.go:17:19:17:27 | selection of x | exprs.go:17:19:17:27 | init of selection of x | -| exprs.go:17:30:17:30 | 2 | exprs.go:17:33:17:36 | arr1 | -| exprs.go:17:30:17:39 | init of key-value pair | exprs.go:17:2:17:5 | assignment to arr2 | +| exprs.go:17:19:17:27 | After selection of x | exprs.go:17:19:17:27 | lit-init selection of x | +| exprs.go:17:19:17:27 | Before selection of x | exprs.go:17:19:17:25 | struct3 | +| exprs.go:17:19:17:27 | lit-init selection of x | exprs.go:17:30:17:39 | Before key-value pair | +| exprs.go:17:19:17:27 | selection of x | exprs.go:17:19:17:27 | After selection of x | +| exprs.go:17:30:17:30 | 2 | exprs.go:17:33:17:39 | Before index expression | +| exprs.go:17:30:17:39 | After key-value pair | exprs.go:17:30:17:39 | lit-init key-value pair | +| exprs.go:17:30:17:39 | Before key-value pair | exprs.go:17:30:17:30 | 2 | +| exprs.go:17:30:17:39 | key-value pair | exprs.go:17:30:17:39 | After key-value pair | +| exprs.go:17:30:17:39 | lit-init key-value pair | exprs.go:17:10:17:40 | After array literal | | exprs.go:17:33:17:36 | arr1 | exprs.go:17:38:17:38 | 0 | -| exprs.go:17:33:17:39 | index expression | exprs.go:5:1:26:1 | exit | -| exprs.go:17:33:17:39 | index expression | exprs.go:17:30:17:39 | init of key-value pair | +| exprs.go:17:33:17:39 | After index expression | exprs.go:17:30:17:39 | key-value pair | +| exprs.go:17:33:17:39 | Before index expression | exprs.go:17:33:17:36 | arr1 | +| exprs.go:17:33:17:39 | index expression | exprs.go:5:1:26:1 | Exceptional Exit | +| exprs.go:17:33:17:39 | index expression | exprs.go:17:33:17:39 | After index expression | | exprs.go:17:38:17:38 | 0 | exprs.go:17:33:17:39 | index expression | -| exprs.go:18:2:18:4 | assignment to slc | exprs.go:19:2:19:3 | skip | -| exprs.go:18:2:18:4 | skip | exprs.go:18:9:18:22 | slice literal | -| exprs.go:18:9:18:22 | slice literal | exprs.go:18:18:18:18 | element index | -| exprs.go:18:18:18:18 | element index | exprs.go:18:18:18:18 | s | -| exprs.go:18:18:18:18 | init of s | exprs.go:18:21:18:21 | element index | -| exprs.go:18:18:18:18 | s | exprs.go:18:18:18:18 | init of s | -| exprs.go:18:21:18:21 | element index | exprs.go:18:21:18:21 | s | -| exprs.go:18:21:18:21 | init of s | exprs.go:18:2:18:4 | assignment to slc | -| exprs.go:18:21:18:21 | s | exprs.go:18:21:18:21 | init of s | -| exprs.go:19:2:19:3 | assignment to mp | exprs.go:20:2:20:5 | skip | -| exprs.go:19:2:19:3 | skip | exprs.go:19:8:19:38 | map literal | -| exprs.go:19:8:19:38 | map literal | exprs.go:19:23:19:25 | slc | +| exprs.go:18:2:18:22 | ... := ... | exprs.go:18:9:18:22 | Before slice literal | +| exprs.go:18:2:18:22 | After ... := ... | exprs.go:19:2:19:38 | ... := ... | +| exprs.go:18:2:18:22 | assign:0 ... := ... | exprs.go:18:2:18:22 | After ... := ... | +| exprs.go:18:9:18:22 | After slice literal | exprs.go:18:2:18:22 | assign:0 ... := ... | +| exprs.go:18:9:18:22 | Before slice literal | exprs.go:18:9:18:22 | slice literal | +| exprs.go:18:9:18:22 | slice literal | exprs.go:18:18:18:18 | s | +| exprs.go:18:18:18:18 | After s | exprs.go:18:18:18:18 | lit-init s | +| exprs.go:18:18:18:18 | lit-init s | exprs.go:18:21:18:21 | s | +| exprs.go:18:18:18:18 | s | exprs.go:18:18:18:18 | After s | +| exprs.go:18:21:18:21 | After s | exprs.go:18:21:18:21 | lit-init s | +| exprs.go:18:21:18:21 | lit-init s | exprs.go:18:9:18:22 | After slice literal | +| exprs.go:18:21:18:21 | s | exprs.go:18:21:18:21 | After s | +| exprs.go:19:2:19:38 | ... := ... | exprs.go:19:8:19:38 | Before map literal | +| exprs.go:19:2:19:38 | After ... := ... | exprs.go:20:2:20:19 | ... := ... | +| exprs.go:19:2:19:38 | assign:0 ... := ... | exprs.go:19:2:19:38 | After ... := ... | +| exprs.go:19:8:19:38 | After map literal | exprs.go:19:2:19:38 | assign:0 ... := ... | +| exprs.go:19:8:19:38 | Before map literal | exprs.go:19:8:19:38 | map literal | +| exprs.go:19:8:19:38 | map literal | exprs.go:19:23:19:37 | Before key-value pair | | exprs.go:19:23:19:25 | slc | exprs.go:19:27:19:27 | 0 | -| exprs.go:19:23:19:28 | index expression | exprs.go:5:1:26:1 | exit | -| exprs.go:19:23:19:28 | index expression | exprs.go:19:31:19:34 | arr2 | -| exprs.go:19:23:19:37 | init of key-value pair | exprs.go:19:2:19:3 | assignment to mp | +| exprs.go:19:23:19:28 | After index expression | exprs.go:19:31:19:37 | Before index expression | +| exprs.go:19:23:19:28 | Before index expression | exprs.go:19:23:19:25 | slc | +| exprs.go:19:23:19:28 | index expression | exprs.go:5:1:26:1 | Exceptional Exit | +| exprs.go:19:23:19:28 | index expression | exprs.go:19:23:19:28 | After index expression | +| exprs.go:19:23:19:37 | After key-value pair | exprs.go:19:23:19:37 | lit-init key-value pair | +| exprs.go:19:23:19:37 | Before key-value pair | exprs.go:19:23:19:28 | Before index expression | +| exprs.go:19:23:19:37 | key-value pair | exprs.go:19:23:19:37 | After key-value pair | +| exprs.go:19:23:19:37 | lit-init key-value pair | exprs.go:19:8:19:38 | After map literal | | exprs.go:19:27:19:27 | 0 | exprs.go:19:23:19:28 | index expression | | exprs.go:19:31:19:34 | arr2 | exprs.go:19:36:19:36 | 1 | -| exprs.go:19:31:19:37 | index expression | exprs.go:5:1:26:1 | exit | -| exprs.go:19:31:19:37 | index expression | exprs.go:19:23:19:37 | init of key-value pair | +| exprs.go:19:31:19:37 | After index expression | exprs.go:19:23:19:37 | key-value pair | +| exprs.go:19:31:19:37 | Before index expression | exprs.go:19:31:19:34 | arr2 | +| exprs.go:19:31:19:37 | index expression | exprs.go:5:1:26:1 | Exceptional Exit | +| exprs.go:19:31:19:37 | index expression | exprs.go:19:31:19:37 | After index expression | | exprs.go:19:36:19:36 | 1 | exprs.go:19:31:19:37 | index expression | -| exprs.go:20:2:20:5 | assignment to slc2 | exprs.go:21:2:21:5 | skip | -| exprs.go:20:2:20:5 | skip | exprs.go:20:10:20:12 | slc | +| exprs.go:20:2:20:19 | ... := ... | exprs.go:20:10:20:19 | Before slice expression | +| exprs.go:20:2:20:19 | After ... := ... | exprs.go:21:2:21:19 | ... := ... | +| exprs.go:20:2:20:19 | assign:0 ... := ... | exprs.go:20:2:20:19 | After ... := ... | | exprs.go:20:10:20:12 | slc | exprs.go:20:14:20:14 | 1 | -| exprs.go:20:10:20:19 | slice expression | exprs.go:5:1:26:1 | exit | -| exprs.go:20:10:20:19 | slice expression | exprs.go:20:2:20:5 | assignment to slc2 | +| exprs.go:20:10:20:19 | After slice expression | exprs.go:20:2:20:19 | assign:0 ... := ... | +| exprs.go:20:10:20:19 | Before slice expression | exprs.go:20:10:20:12 | slc | +| exprs.go:20:10:20:19 | slice expression | exprs.go:20:10:20:19 | After slice expression | | exprs.go:20:14:20:14 | 1 | exprs.go:20:16:20:16 | 2 | | exprs.go:20:16:20:16 | 2 | exprs.go:20:18:20:18 | 3 | | exprs.go:20:18:20:18 | 3 | exprs.go:20:10:20:19 | slice expression | -| exprs.go:21:2:21:5 | assignment to slc3 | exprs.go:22:2:22:5 | skip | -| exprs.go:21:2:21:5 | skip | exprs.go:21:10:21:13 | slc2 | -| exprs.go:21:10:21:13 | slc2 | exprs.go:21:10:21:19 | 0 | -| exprs.go:21:10:21:19 | 0 | exprs.go:21:16:21:16 | 2 | -| exprs.go:21:10:21:19 | slice expression | exprs.go:5:1:26:1 | exit | -| exprs.go:21:10:21:19 | slice expression | exprs.go:21:2:21:5 | assignment to slc3 | +| exprs.go:21:2:21:19 | ... := ... | exprs.go:21:10:21:19 | Before slice expression | +| exprs.go:21:2:21:19 | After ... := ... | exprs.go:22:2:22:18 | ... := ... | +| exprs.go:21:2:21:19 | assign:0 ... := ... | exprs.go:21:2:21:19 | After ... := ... | +| exprs.go:21:10:21:13 | slc2 | exprs.go:21:16:21:16 | 2 | +| exprs.go:21:10:21:19 | After slice expression | exprs.go:21:2:21:19 | assign:0 ... := ... | +| exprs.go:21:10:21:19 | Before slice expression | exprs.go:21:10:21:13 | slc2 | +| exprs.go:21:10:21:19 | slice expression | exprs.go:21:10:21:19 | After slice expression | | exprs.go:21:16:21:16 | 2 | exprs.go:21:18:21:18 | 3 | | exprs.go:21:18:21:18 | 3 | exprs.go:21:10:21:19 | slice expression | -| exprs.go:22:2:22:5 | assignment to slc4 | exprs.go:23:2:23:5 | skip | -| exprs.go:22:2:22:5 | skip | exprs.go:22:10:22:13 | slc3 | +| exprs.go:22:2:22:18 | ... := ... | exprs.go:22:10:22:18 | Before slice expression | +| exprs.go:22:2:22:18 | After ... := ... | exprs.go:23:2:23:17 | ... := ... | +| exprs.go:22:2:22:18 | assign:0 ... := ... | exprs.go:22:2:22:18 | After ... := ... | | exprs.go:22:10:22:13 | slc3 | exprs.go:22:15:22:15 | 0 | -| exprs.go:22:10:22:18 | cap | exprs.go:22:10:22:18 | slice expression | -| exprs.go:22:10:22:18 | slice expression | exprs.go:5:1:26:1 | exit | -| exprs.go:22:10:22:18 | slice expression | exprs.go:22:2:22:5 | assignment to slc4 | +| exprs.go:22:10:22:18 | After slice expression | exprs.go:22:2:22:18 | assign:0 ... := ... | +| exprs.go:22:10:22:18 | Before slice expression | exprs.go:22:10:22:13 | slc3 | +| exprs.go:22:10:22:18 | slice expression | exprs.go:22:10:22:18 | After slice expression | | exprs.go:22:15:22:15 | 0 | exprs.go:22:17:22:17 | 2 | -| exprs.go:22:17:22:17 | 2 | exprs.go:22:10:22:18 | cap | -| exprs.go:23:2:23:5 | assignment to slc5 | exprs.go:24:2:24:5 | skip | -| exprs.go:23:2:23:5 | skip | exprs.go:23:10:23:13 | slc4 | +| exprs.go:22:17:22:17 | 2 | exprs.go:22:10:22:18 | slice expression | +| exprs.go:23:2:23:17 | ... := ... | exprs.go:23:10:23:17 | Before slice expression | +| exprs.go:23:2:23:17 | After ... := ... | exprs.go:24:2:24:17 | ... := ... | +| exprs.go:23:2:23:17 | assign:0 ... := ... | exprs.go:23:2:23:17 | After ... := ... | | exprs.go:23:10:23:13 | slc4 | exprs.go:23:15:23:15 | 0 | -| exprs.go:23:10:23:17 | cap | exprs.go:23:10:23:17 | slice expression | -| exprs.go:23:10:23:17 | len | exprs.go:23:10:23:17 | cap | -| exprs.go:23:10:23:17 | slice expression | exprs.go:5:1:26:1 | exit | -| exprs.go:23:10:23:17 | slice expression | exprs.go:23:2:23:5 | assignment to slc5 | -| exprs.go:23:15:23:15 | 0 | exprs.go:23:10:23:17 | len | -| exprs.go:24:2:24:5 | assignment to slc6 | exprs.go:25:9:25:34 | struct literal | -| exprs.go:24:2:24:5 | skip | exprs.go:24:10:24:13 | slc5 | -| exprs.go:24:10:24:13 | slc5 | exprs.go:24:10:24:17 | 0 | -| exprs.go:24:10:24:17 | 0 | exprs.go:24:16:24:16 | 2 | -| exprs.go:24:10:24:17 | cap | exprs.go:24:10:24:17 | slice expression | -| exprs.go:24:10:24:17 | slice expression | exprs.go:5:1:26:1 | exit | -| exprs.go:24:10:24:17 | slice expression | exprs.go:24:2:24:5 | assignment to slc6 | -| exprs.go:24:16:24:16 | 2 | exprs.go:24:10:24:17 | cap | -| exprs.go:25:2:25:34 | return statement | exprs.go:5:1:26:1 | exit | -| exprs.go:25:9:25:34 | struct literal | exprs.go:25:15:25:16 | mp | +| exprs.go:23:10:23:17 | After slice expression | exprs.go:23:2:23:17 | assign:0 ... := ... | +| exprs.go:23:10:23:17 | Before slice expression | exprs.go:23:10:23:13 | slc4 | +| exprs.go:23:10:23:17 | slice expression | exprs.go:23:10:23:17 | After slice expression | +| exprs.go:23:15:23:15 | 0 | exprs.go:23:10:23:17 | slice expression | +| exprs.go:24:2:24:17 | ... := ... | exprs.go:24:10:24:17 | Before slice expression | +| exprs.go:24:2:24:17 | After ... := ... | exprs.go:25:2:25:34 | Before return statement | +| exprs.go:24:2:24:17 | assign:0 ... := ... | exprs.go:24:2:24:17 | After ... := ... | +| exprs.go:24:10:24:13 | slc5 | exprs.go:24:16:24:16 | 2 | +| exprs.go:24:10:24:17 | After slice expression | exprs.go:24:2:24:17 | assign:0 ... := ... | +| exprs.go:24:10:24:17 | Before slice expression | exprs.go:24:10:24:13 | slc5 | +| exprs.go:24:10:24:17 | slice expression | exprs.go:24:10:24:17 | After slice expression | +| exprs.go:24:16:24:16 | 2 | exprs.go:24:10:24:17 | slice expression | +| exprs.go:25:2:25:34 | Before return statement | exprs.go:25:9:25:34 | Before struct literal | +| exprs.go:25:2:25:34 | return statement | exprs.go:5:1:26:1 | Normal Exit | +| exprs.go:25:9:25:34 | After struct literal | exprs.go:25:2:25:34 | return statement | +| exprs.go:25:9:25:34 | Before struct literal | exprs.go:25:9:25:34 | struct literal | +| exprs.go:25:9:25:34 | struct literal | exprs.go:25:15:25:19 | Before index expression | | exprs.go:25:15:25:16 | mp | exprs.go:25:18:25:18 | s | -| exprs.go:25:15:25:19 | index expression | exprs.go:5:1:26:1 | exit | -| exprs.go:25:15:25:19 | index expression | exprs.go:25:15:25:19 | init of index expression | -| exprs.go:25:15:25:19 | init of index expression | exprs.go:25:22:25:24 | len | +| exprs.go:25:15:25:19 | After index expression | exprs.go:25:15:25:19 | lit-init index expression | +| exprs.go:25:15:25:19 | Before index expression | exprs.go:25:15:25:16 | mp | +| exprs.go:25:15:25:19 | index expression | exprs.go:5:1:26:1 | Exceptional Exit | +| exprs.go:25:15:25:19 | index expression | exprs.go:25:15:25:19 | After index expression | +| exprs.go:25:15:25:19 | lit-init index expression | exprs.go:25:22:25:33 | Before call to len | | exprs.go:25:18:25:18 | s | exprs.go:25:15:25:19 | index expression | -| exprs.go:25:22:25:24 | len | exprs.go:25:26:25:29 | slc6 | -| exprs.go:25:22:25:33 | call to len | exprs.go:25:22:25:33 | init of call to len | -| exprs.go:25:22:25:33 | init of call to len | exprs.go:25:2:25:34 | return statement | +| exprs.go:25:22:25:24 | len | exprs.go:25:26:25:32 | Before index expression | +| exprs.go:25:22:25:33 | After call to len | exprs.go:25:22:25:33 | lit-init call to len | +| exprs.go:25:22:25:33 | Before call to len | exprs.go:25:22:25:24 | len | +| exprs.go:25:22:25:33 | call to len | exprs.go:25:22:25:33 | After call to len | +| exprs.go:25:22:25:33 | lit-init call to len | exprs.go:25:9:25:34 | After struct literal | | exprs.go:25:26:25:29 | slc6 | exprs.go:25:31:25:31 | 0 | -| exprs.go:25:26:25:32 | index expression | exprs.go:5:1:26:1 | exit | -| exprs.go:25:26:25:32 | index expression | exprs.go:25:22:25:33 | call to len | +| exprs.go:25:26:25:32 | After index expression | exprs.go:25:22:25:33 | call to len | +| exprs.go:25:26:25:32 | Before index expression | exprs.go:25:26:25:29 | slc6 | +| exprs.go:25:26:25:32 | index expression | exprs.go:5:1:26:1 | Exceptional Exit | +| exprs.go:25:26:25:32 | index expression | exprs.go:25:26:25:32 | After index expression | | exprs.go:25:31:25:31 | 0 | exprs.go:25:26:25:32 | index expression | -| exprs.go:28:1:30:1 | entry | exprs.go:28:12:28:14 | argument corresponding to arg | -| exprs.go:28:1:30:1 | function declaration | exprs.go:32:6:32:10 | skip | -| exprs.go:28:6:28:10 | skip | exprs.go:28:1:30:1 | function declaration | -| exprs.go:28:12:28:14 | argument corresponding to arg | exprs.go:28:12:28:14 | initialization of arg | -| exprs.go:28:12:28:14 | initialization of arg | exprs.go:29:9:29:11 | arg | -| exprs.go:29:2:29:21 | return statement | exprs.go:28:1:30:1 | exit | +| exprs.go:28:1:30:1 | Entry | exprs.go:28:12:28:14 | arg | +| exprs.go:28:1:30:1 | Exceptional Exit | exprs.go:28:1:30:1 | Exit | +| exprs.go:28:1:30:1 | Normal Exit | exprs.go:28:1:30:1 | Exit | +| exprs.go:28:1:30:1 | function declaration | exprs.go:32:1:37:1 | function declaration | +| exprs.go:28:12:28:14 | arg | exprs.go:28:33:30:1 | block statement | +| exprs.go:28:33:30:1 | block statement | exprs.go:29:2:29:21 | Before return statement | +| exprs.go:29:2:29:21 | Before return statement | exprs.go:29:9:29:21 | Before selection of x | +| exprs.go:29:2:29:21 | return statement | exprs.go:28:1:30:1 | Normal Exit | | exprs.go:29:9:29:11 | arg | exprs.go:29:9:29:19 | type assertion | -| exprs.go:29:9:29:19 | type assertion | exprs.go:28:1:30:1 | exit | -| exprs.go:29:9:29:19 | type assertion | exprs.go:29:9:29:21 | selection of x | -| exprs.go:29:9:29:21 | selection of x | exprs.go:29:2:29:21 | return statement | -| exprs.go:32:1:37:1 | entry | exprs.go:32:12:32:14 | argument corresponding to arg | -| exprs.go:32:1:37:1 | function declaration | exprs.go:39:6:39:10 | skip | -| exprs.go:32:6:32:10 | skip | exprs.go:32:1:37:1 | function declaration | -| exprs.go:32:12:32:14 | argument corresponding to arg | exprs.go:32:12:32:14 | initialization of arg | -| exprs.go:32:12:32:14 | initialization of arg | exprs.go:33:5:33:5 | skip | -| exprs.go:33:5:33:5 | assignment to p | exprs.go:33:5:33:24 | ... := ...[1] | -| exprs.go:33:5:33:5 | skip | exprs.go:33:8:33:9 | skip | -| exprs.go:33:5:33:24 | ... := ...[0] | exprs.go:33:5:33:5 | assignment to p | -| exprs.go:33:5:33:24 | ... := ...[1] | exprs.go:33:8:33:9 | assignment to ok | -| exprs.go:33:8:33:9 | assignment to ok | exprs.go:33:27:33:28 | ok | -| exprs.go:33:8:33:9 | skip | exprs.go:33:14:33:16 | arg | +| exprs.go:29:9:29:19 | After type assertion | exprs.go:29:9:29:21 | selection of x | +| exprs.go:29:9:29:19 | Before type assertion | exprs.go:29:9:29:11 | arg | +| exprs.go:29:9:29:19 | type assertion | exprs.go:28:1:30:1 | Exceptional Exit | +| exprs.go:29:9:29:19 | type assertion | exprs.go:29:9:29:19 | After type assertion | +| exprs.go:29:9:29:21 | After selection of x | exprs.go:29:2:29:21 | return statement | +| exprs.go:29:9:29:21 | Before selection of x | exprs.go:29:9:29:19 | Before type assertion | +| exprs.go:29:9:29:21 | selection of x | exprs.go:29:9:29:21 | After selection of x | +| exprs.go:32:1:37:1 | Entry | exprs.go:32:12:32:14 | arg | +| exprs.go:32:1:37:1 | Normal Exit | exprs.go:32:1:37:1 | Exit | +| exprs.go:32:1:37:1 | function declaration | exprs.go:39:1:47:1 | function declaration | +| exprs.go:32:12:32:14 | arg | exprs.go:32:33:37:1 | block statement | +| exprs.go:32:33:37:1 | block statement | exprs.go:33:2:35:2 | if statement | +| exprs.go:33:2:35:2 | After if statement | exprs.go:36:2:36:10 | Before return statement | +| exprs.go:33:2:35:2 | if statement | exprs.go:33:5:33:24 | ... := ... | +| exprs.go:33:5:33:24 | ... := ... | exprs.go:33:14:33:24 | Before type assertion | +| exprs.go:33:5:33:24 | After ... := ... | exprs.go:33:27:33:28 | ok | +| exprs.go:33:5:33:24 | extract:0 ... := ... | exprs.go:33:5:33:24 | extract:1 ... := ... | +| exprs.go:33:5:33:24 | extract:1 ... := ... | exprs.go:33:5:33:24 | After ... := ... | | exprs.go:33:14:33:16 | arg | exprs.go:33:14:33:24 | type assertion | -| exprs.go:33:14:33:24 | type assertion | exprs.go:33:5:33:24 | ... := ...[0] | -| exprs.go:33:27:33:28 | ok | exprs.go:33:27:33:28 | ok is false | -| exprs.go:33:27:33:28 | ok | exprs.go:33:27:33:28 | ok is true | -| exprs.go:33:27:33:28 | ok is false | exprs.go:36:9:36:10 | -... | -| exprs.go:33:27:33:28 | ok is true | exprs.go:34:10:34:10 | p | -| exprs.go:34:3:34:12 | return statement | exprs.go:32:1:37:1 | exit | +| exprs.go:33:14:33:24 | After type assertion | exprs.go:33:5:33:24 | extract:0 ... := ... | +| exprs.go:33:14:33:24 | Before type assertion | exprs.go:33:14:33:16 | arg | +| exprs.go:33:14:33:24 | type assertion | exprs.go:33:14:33:24 | After type assertion | +| exprs.go:33:27:33:28 | After ok [false] | exprs.go:33:2:35:2 | After if statement | +| exprs.go:33:27:33:28 | After ok [true] | exprs.go:33:30:35:2 | block statement | +| exprs.go:33:27:33:28 | ok | exprs.go:33:27:33:28 | After ok [false] | +| exprs.go:33:27:33:28 | ok | exprs.go:33:27:33:28 | After ok [true] | +| exprs.go:33:30:35:2 | block statement | exprs.go:34:3:34:12 | Before return statement | +| exprs.go:34:3:34:12 | Before return statement | exprs.go:34:10:34:12 | Before selection of x | +| exprs.go:34:3:34:12 | return statement | exprs.go:32:1:37:1 | Normal Exit | | exprs.go:34:10:34:10 | p | exprs.go:34:10:34:12 | selection of x | -| exprs.go:34:10:34:12 | selection of x | exprs.go:34:3:34:12 | return statement | -| exprs.go:36:2:36:10 | return statement | exprs.go:32:1:37:1 | exit | -| exprs.go:36:9:36:10 | -... | exprs.go:36:2:36:10 | return statement | -| exprs.go:39:1:47:1 | entry | exprs.go:39:12:39:14 | argument corresponding to arg | -| exprs.go:39:1:47:1 | function declaration | exprs.go:49:6:49:8 | skip | -| exprs.go:39:6:39:10 | skip | exprs.go:39:1:47:1 | function declaration | -| exprs.go:39:12:39:14 | argument corresponding to arg | exprs.go:39:12:39:14 | initialization of arg | -| exprs.go:39:12:39:14 | initialization of arg | exprs.go:40:6:40:6 | skip | -| exprs.go:40:6:40:6 | assignment to p | exprs.go:41:6:41:7 | skip | -| exprs.go:40:6:40:6 | skip | exprs.go:40:6:40:6 | zero value for p | -| exprs.go:40:6:40:6 | zero value for p | exprs.go:40:6:40:6 | assignment to p | -| exprs.go:41:6:41:7 | assignment to ok | exprs.go:42:2:42:2 | skip | -| exprs.go:41:6:41:7 | skip | exprs.go:41:6:41:7 | zero value for ok | -| exprs.go:41:6:41:7 | zero value for ok | exprs.go:41:6:41:7 | assignment to ok | -| exprs.go:42:2:42:2 | assignment to p | exprs.go:42:2:42:20 | ... = ...[1] | -| exprs.go:42:2:42:2 | skip | exprs.go:42:5:42:6 | skip | -| exprs.go:42:2:42:20 | ... = ...[0] | exprs.go:42:2:42:2 | assignment to p | -| exprs.go:42:2:42:20 | ... = ...[1] | exprs.go:42:5:42:6 | assignment to ok | -| exprs.go:42:5:42:6 | assignment to ok | exprs.go:43:5:43:6 | ok | -| exprs.go:42:5:42:6 | skip | exprs.go:42:10:42:12 | arg | +| exprs.go:34:10:34:12 | After selection of x | exprs.go:34:3:34:12 | return statement | +| exprs.go:34:10:34:12 | Before selection of x | exprs.go:34:10:34:10 | p | +| exprs.go:34:10:34:12 | selection of x | exprs.go:34:10:34:12 | After selection of x | +| exprs.go:36:2:36:10 | Before return statement | exprs.go:36:9:36:10 | Before -... | +| exprs.go:36:2:36:10 | return statement | exprs.go:32:1:37:1 | Normal Exit | +| exprs.go:36:9:36:10 | -... | exprs.go:36:9:36:10 | After -... | +| exprs.go:36:9:36:10 | After -... | exprs.go:36:2:36:10 | return statement | +| exprs.go:36:9:36:10 | Before -... | exprs.go:36:9:36:10 | -... | +| exprs.go:39:1:47:1 | Entry | exprs.go:39:12:39:14 | arg | +| exprs.go:39:1:47:1 | Normal Exit | exprs.go:39:1:47:1 | Exit | +| exprs.go:39:1:47:1 | function declaration | exprs.go:49:1:54:1 | function declaration | +| exprs.go:39:12:39:14 | arg | exprs.go:39:33:47:1 | block statement | +| exprs.go:39:33:47:1 | block statement | exprs.go:40:2:40:12 | declaration statement | +| exprs.go:40:2:40:12 | After declaration statement | exprs.go:41:2:41:12 | declaration statement | +| exprs.go:40:2:40:12 | After variable declaration | exprs.go:40:2:40:12 | After declaration statement | +| exprs.go:40:2:40:12 | declaration statement | exprs.go:40:2:40:12 | variable declaration | +| exprs.go:40:2:40:12 | variable declaration | exprs.go:40:6:40:12 | value declaration specifier | +| exprs.go:40:6:40:12 | After value declaration specifier | exprs.go:40:2:40:12 | After variable declaration | +| exprs.go:40:6:40:12 | value declaration specifier | exprs.go:40:6:40:12 | zero-init:0 value declaration specifier | +| exprs.go:40:6:40:12 | zero-init:0 value declaration specifier | exprs.go:40:6:40:12 | After value declaration specifier | +| exprs.go:41:2:41:12 | After declaration statement | exprs.go:42:2:42:20 | ... = ... | +| exprs.go:41:2:41:12 | After variable declaration | exprs.go:41:2:41:12 | After declaration statement | +| exprs.go:41:2:41:12 | declaration statement | exprs.go:41:2:41:12 | variable declaration | +| exprs.go:41:2:41:12 | variable declaration | exprs.go:41:6:41:12 | value declaration specifier | +| exprs.go:41:6:41:12 | After value declaration specifier | exprs.go:41:2:41:12 | After variable declaration | +| exprs.go:41:6:41:12 | value declaration specifier | exprs.go:41:6:41:12 | zero-init:0 value declaration specifier | +| exprs.go:41:6:41:12 | zero-init:0 value declaration specifier | exprs.go:41:6:41:12 | After value declaration specifier | +| exprs.go:42:2:42:20 | ... = ... | exprs.go:42:10:42:20 | Before type assertion | +| exprs.go:42:2:42:20 | After ... = ... | exprs.go:43:2:45:2 | if statement | +| exprs.go:42:2:42:20 | extract:0 ... = ... | exprs.go:42:2:42:20 | extract:1 ... = ... | +| exprs.go:42:2:42:20 | extract:1 ... = ... | exprs.go:42:2:42:20 | After ... = ... | | exprs.go:42:10:42:12 | arg | exprs.go:42:10:42:20 | type assertion | -| exprs.go:42:10:42:20 | type assertion | exprs.go:42:2:42:20 | ... = ...[0] | -| exprs.go:43:5:43:6 | ok | exprs.go:43:5:43:6 | ok is false | -| exprs.go:43:5:43:6 | ok | exprs.go:43:5:43:6 | ok is true | -| exprs.go:43:5:43:6 | ok is false | exprs.go:46:9:46:10 | -... | -| exprs.go:43:5:43:6 | ok is true | exprs.go:44:10:44:10 | p | -| exprs.go:44:3:44:12 | return statement | exprs.go:39:1:47:1 | exit | +| exprs.go:42:10:42:20 | After type assertion | exprs.go:42:2:42:20 | extract:0 ... = ... | +| exprs.go:42:10:42:20 | Before type assertion | exprs.go:42:10:42:12 | arg | +| exprs.go:42:10:42:20 | type assertion | exprs.go:42:10:42:20 | After type assertion | +| exprs.go:43:2:45:2 | After if statement | exprs.go:46:2:46:10 | Before return statement | +| exprs.go:43:2:45:2 | if statement | exprs.go:43:5:43:6 | ok | +| exprs.go:43:5:43:6 | After ok [false] | exprs.go:43:2:45:2 | After if statement | +| exprs.go:43:5:43:6 | After ok [true] | exprs.go:43:8:45:2 | block statement | +| exprs.go:43:5:43:6 | ok | exprs.go:43:5:43:6 | After ok [false] | +| exprs.go:43:5:43:6 | ok | exprs.go:43:5:43:6 | After ok [true] | +| exprs.go:43:8:45:2 | block statement | exprs.go:44:3:44:12 | Before return statement | +| exprs.go:44:3:44:12 | Before return statement | exprs.go:44:10:44:12 | Before selection of x | +| exprs.go:44:3:44:12 | return statement | exprs.go:39:1:47:1 | Normal Exit | | exprs.go:44:10:44:10 | p | exprs.go:44:10:44:12 | selection of x | -| exprs.go:44:10:44:12 | selection of x | exprs.go:44:3:44:12 | return statement | -| exprs.go:46:2:46:10 | return statement | exprs.go:39:1:47:1 | exit | -| exprs.go:46:9:46:10 | -... | exprs.go:46:2:46:10 | return statement | -| exprs.go:49:1:54:1 | entry | exprs.go:49:10:49:11 | argument corresponding to xs | -| exprs.go:49:1:54:1 | function declaration | exprs.go:56:6:56:9 | skip | -| exprs.go:49:6:49:8 | skip | exprs.go:49:1:54:1 | function declaration | -| exprs.go:49:10:49:11 | argument corresponding to xs | exprs.go:49:10:49:11 | initialization of xs | -| exprs.go:49:10:49:11 | initialization of xs | exprs.go:49:21:49:23 | zero value for res | -| exprs.go:49:21:49:23 | implicit read of res | exprs.go:49:1:54:1 | exit | -| exprs.go:49:21:49:23 | initialization of res | exprs.go:50:6:50:6 | skip | -| exprs.go:49:21:49:23 | zero value for res | exprs.go:49:21:49:23 | initialization of res | -| exprs.go:50:6:50:6 | assignment to i | exprs.go:50:14:50:14 | i | -| exprs.go:50:6:50:6 | skip | exprs.go:50:11:50:11 | 0 | -| exprs.go:50:11:50:11 | 0 | exprs.go:50:6:50:6 | assignment to i | -| exprs.go:50:14:50:14 | i | exprs.go:50:18:50:20 | len | -| exprs.go:50:14:50:24 | ...<... | exprs.go:50:14:50:24 | ...<... is false | -| exprs.go:50:14:50:24 | ...<... | exprs.go:50:14:50:24 | ...<... is true | -| exprs.go:50:14:50:24 | ...<... is false | exprs.go:53:2:53:7 | return statement | -| exprs.go:50:14:50:24 | ...<... is true | exprs.go:51:3:51:5 | res | +| exprs.go:44:10:44:12 | After selection of x | exprs.go:44:3:44:12 | return statement | +| exprs.go:44:10:44:12 | Before selection of x | exprs.go:44:10:44:10 | p | +| exprs.go:44:10:44:12 | selection of x | exprs.go:44:10:44:12 | After selection of x | +| exprs.go:46:2:46:10 | Before return statement | exprs.go:46:9:46:10 | Before -... | +| exprs.go:46:2:46:10 | return statement | exprs.go:39:1:47:1 | Normal Exit | +| exprs.go:46:9:46:10 | -... | exprs.go:46:9:46:10 | After -... | +| exprs.go:46:9:46:10 | After -... | exprs.go:46:2:46:10 | return statement | +| exprs.go:46:9:46:10 | Before -... | exprs.go:46:9:46:10 | -... | +| exprs.go:49:1:54:1 | Entry | exprs.go:49:10:49:11 | xs | +| exprs.go:49:1:54:1 | Exceptional Exit | exprs.go:49:1:54:1 | Exit | +| exprs.go:49:1:54:1 | Normal Exit | exprs.go:49:1:54:1 | Exit | +| exprs.go:49:1:54:1 | function declaration | exprs.go:56:1:58:1 | function declaration | +| exprs.go:49:10:49:11 | xs | exprs.go:49:30:54:1 | block statement | +| exprs.go:49:30:54:1 | After block statement | exprs.go:49:1:54:1 | Normal Exit | +| exprs.go:49:30:54:1 | block statement | exprs.go:49:30:54:1 | zero-init:0 block statement | +| exprs.go:49:30:54:1 | result-read:0 block statement | exprs.go:49:30:54:1 | After block statement | +| exprs.go:49:30:54:1 | zero-init:0 block statement | exprs.go:50:2:52:2 | for statement | +| exprs.go:50:2:52:2 | After for statement | exprs.go:53:2:53:7 | Before return statement | +| exprs.go:50:2:52:2 | [LoopHeader] for statement | exprs.go:50:27:50:29 | Before increment statement | +| exprs.go:50:2:52:2 | for statement | exprs.go:50:6:50:11 | ... := ... | +| exprs.go:50:6:50:11 | ... := ... | exprs.go:50:11:50:11 | 0 | +| exprs.go:50:6:50:11 | After ... := ... | exprs.go:50:14:50:24 | Before ...<... | +| exprs.go:50:6:50:11 | assign:0 ... := ... | exprs.go:50:6:50:11 | After ... := ... | +| exprs.go:50:11:50:11 | 0 | exprs.go:50:6:50:11 | assign:0 ... := ... | +| exprs.go:50:14:50:14 | i | exprs.go:50:18:50:24 | Before call to len | +| exprs.go:50:14:50:24 | ...<... | exprs.go:50:14:50:24 | After ...<... [false] | +| exprs.go:50:14:50:24 | ...<... | exprs.go:50:14:50:24 | After ...<... [true] | +| exprs.go:50:14:50:24 | After ...<... [false] | exprs.go:50:2:52:2 | After for statement | +| exprs.go:50:14:50:24 | After ...<... [true] | exprs.go:50:31:52:2 | block statement | +| exprs.go:50:14:50:24 | Before ...<... | exprs.go:50:14:50:14 | i | | exprs.go:50:18:50:20 | len | exprs.go:50:22:50:23 | xs | -| exprs.go:50:18:50:24 | call to len | exprs.go:50:14:50:24 | ...<... | +| exprs.go:50:18:50:24 | After call to len | exprs.go:50:14:50:24 | ...<... | +| exprs.go:50:18:50:24 | Before call to len | exprs.go:50:18:50:20 | len | +| exprs.go:50:18:50:24 | call to len | exprs.go:50:18:50:24 | After call to len | | exprs.go:50:22:50:23 | xs | exprs.go:50:18:50:24 | call to len | -| exprs.go:50:27:50:27 | i | exprs.go:50:27:50:29 | 1 | -| exprs.go:50:27:50:29 | 1 | exprs.go:50:27:50:29 | rhs of increment statement | -| exprs.go:50:27:50:29 | increment statement | exprs.go:50:14:50:14 | i | -| exprs.go:50:27:50:29 | rhs of increment statement | exprs.go:50:27:50:29 | increment statement | -| exprs.go:51:3:51:5 | assignment to res | exprs.go:50:27:50:27 | i | -| exprs.go:51:3:51:5 | res | exprs.go:51:10:51:11 | xs | -| exprs.go:51:3:51:14 | ... += ... | exprs.go:51:3:51:5 | assignment to res | +| exprs.go:50:27:50:27 | i | exprs.go:50:27:50:29 | increment statement | +| exprs.go:50:27:50:29 | After increment statement | exprs.go:50:14:50:24 | Before ...<... | +| exprs.go:50:27:50:29 | Before increment statement | exprs.go:50:27:50:27 | i | +| exprs.go:50:27:50:29 | increment statement | exprs.go:50:27:50:29 | After increment statement | +| exprs.go:50:31:52:2 | After block statement | exprs.go:50:2:52:2 | [LoopHeader] for statement | +| exprs.go:50:31:52:2 | block statement | exprs.go:51:3:51:14 | Before ... += ... | +| exprs.go:51:3:51:5 | res | exprs.go:51:10:51:14 | Before index expression | +| exprs.go:51:3:51:14 | ... += ... | exprs.go:51:3:51:14 | After ... += ... | +| exprs.go:51:3:51:14 | After ... += ... | exprs.go:50:31:52:2 | After block statement | +| exprs.go:51:3:51:14 | Before ... += ... | exprs.go:51:3:51:5 | res | | exprs.go:51:10:51:11 | xs | exprs.go:51:13:51:13 | i | -| exprs.go:51:10:51:14 | index expression | exprs.go:49:1:54:1 | exit | -| exprs.go:51:10:51:14 | index expression | exprs.go:51:3:51:14 | ... += ... | +| exprs.go:51:10:51:14 | After index expression | exprs.go:51:3:51:14 | ... += ... | +| exprs.go:51:10:51:14 | Before index expression | exprs.go:51:10:51:11 | xs | +| exprs.go:51:10:51:14 | index expression | exprs.go:49:1:54:1 | Exceptional Exit | +| exprs.go:51:10:51:14 | index expression | exprs.go:51:10:51:14 | After index expression | | exprs.go:51:13:51:13 | i | exprs.go:51:10:51:14 | index expression | -| exprs.go:53:2:53:7 | return statement | exprs.go:49:21:49:23 | implicit read of res | -| exprs.go:56:1:58:1 | entry | exprs.go:56:11:56:12 | argument corresponding to xs | -| exprs.go:56:1:58:1 | function declaration | exprs.go:60:6:60:9 | skip | -| exprs.go:56:6:56:9 | skip | exprs.go:56:1:58:1 | function declaration | -| exprs.go:56:11:56:12 | argument corresponding to xs | exprs.go:56:11:56:12 | initialization of xs | -| exprs.go:56:11:56:12 | initialization of xs | exprs.go:57:9:57:11 | sum | -| exprs.go:57:2:57:15 | return statement | exprs.go:56:1:58:1 | exit | +| exprs.go:53:2:53:7 | Before return statement | exprs.go:53:2:53:7 | return statement | +| exprs.go:53:2:53:7 | return statement | exprs.go:49:30:54:1 | result-read:0 block statement | +| exprs.go:56:1:58:1 | Entry | exprs.go:56:11:56:12 | xs | +| exprs.go:56:1:58:1 | Exceptional Exit | exprs.go:56:1:58:1 | Exit | +| exprs.go:56:1:58:1 | Normal Exit | exprs.go:56:1:58:1 | Exit | +| exprs.go:56:1:58:1 | function declaration | exprs.go:60:1:62:1 | function declaration | +| exprs.go:56:11:56:12 | xs | exprs.go:56:26:58:1 | block statement | +| exprs.go:56:26:58:1 | block statement | exprs.go:57:2:57:15 | Before return statement | +| exprs.go:57:2:57:15 | Before return statement | exprs.go:57:9:57:15 | Before call to sum | +| exprs.go:57:2:57:15 | return statement | exprs.go:56:1:58:1 | Normal Exit | | exprs.go:57:9:57:11 | sum | exprs.go:57:13:57:14 | xs | -| exprs.go:57:9:57:15 | call to sum | exprs.go:56:1:58:1 | exit | -| exprs.go:57:9:57:15 | call to sum | exprs.go:57:2:57:15 | return statement | +| exprs.go:57:9:57:15 | After call to sum | exprs.go:57:2:57:15 | return statement | +| exprs.go:57:9:57:15 | Before call to sum | exprs.go:57:9:57:11 | sum | +| exprs.go:57:9:57:15 | call to sum | exprs.go:56:1:58:1 | Exceptional Exit | +| exprs.go:57:9:57:15 | call to sum | exprs.go:57:9:57:15 | After call to sum | | exprs.go:57:13:57:14 | xs | exprs.go:57:9:57:15 | call to sum | -| exprs.go:60:1:62:1 | entry | exprs.go:61:9:61:22 | slice literal | -| exprs.go:60:1:62:1 | function declaration | exprs.go:64:5:64:5 | skip | -| exprs.go:60:6:60:9 | skip | exprs.go:60:1:62:1 | function declaration | -| exprs.go:61:2:61:22 | return statement | exprs.go:60:1:62:1 | exit | -| exprs.go:61:9:61:22 | slice literal | exprs.go:61:15:61:15 | element index | -| exprs.go:61:15:61:15 | 1 | exprs.go:61:15:61:15 | init of 1 | -| exprs.go:61:15:61:15 | element index | exprs.go:61:15:61:15 | 1 | -| exprs.go:61:15:61:15 | init of 1 | exprs.go:61:18:61:18 | element index | -| exprs.go:61:18:61:18 | 2 | exprs.go:61:18:61:18 | init of 2 | -| exprs.go:61:18:61:18 | element index | exprs.go:61:18:61:18 | 2 | -| exprs.go:61:18:61:18 | init of 2 | exprs.go:61:21:61:21 | element index | -| exprs.go:61:21:61:21 | 3 | exprs.go:61:21:61:21 | init of 3 | -| exprs.go:61:21:61:21 | element index | exprs.go:61:21:61:21 | 3 | -| exprs.go:61:21:61:21 | init of 3 | exprs.go:61:2:61:22 | return statement | -| exprs.go:64:5:64:5 | assignment to s | exprs.go:65:5:65:6 | skip | -| exprs.go:64:5:64:5 | skip | exprs.go:64:9:64:11 | sum | -| exprs.go:64:9:64:11 | sum | exprs.go:64:13:64:16 | ints | -| exprs.go:64:9:64:19 | call to sum | exprs.go:0:0:0:0 | exit | -| exprs.go:64:9:64:19 | call to sum | exprs.go:64:5:64:5 | assignment to s | +| exprs.go:60:1:62:1 | Entry | exprs.go:60:19:62:1 | block statement | +| exprs.go:60:1:62:1 | Normal Exit | exprs.go:60:1:62:1 | Exit | +| exprs.go:60:1:62:1 | function declaration | exprs.go:64:1:64:19 | variable declaration | +| exprs.go:60:19:62:1 | block statement | exprs.go:61:2:61:22 | Before return statement | +| exprs.go:61:2:61:22 | Before return statement | exprs.go:61:9:61:22 | Before slice literal | +| exprs.go:61:2:61:22 | return statement | exprs.go:60:1:62:1 | Normal Exit | +| exprs.go:61:9:61:22 | After slice literal | exprs.go:61:2:61:22 | return statement | +| exprs.go:61:9:61:22 | Before slice literal | exprs.go:61:9:61:22 | slice literal | +| exprs.go:61:9:61:22 | slice literal | exprs.go:61:15:61:15 | 1 | +| exprs.go:61:15:61:15 | 1 | exprs.go:61:15:61:15 | After 1 | +| exprs.go:61:15:61:15 | After 1 | exprs.go:61:15:61:15 | lit-init 1 | +| exprs.go:61:15:61:15 | lit-init 1 | exprs.go:61:18:61:18 | 2 | +| exprs.go:61:18:61:18 | 2 | exprs.go:61:18:61:18 | After 2 | +| exprs.go:61:18:61:18 | After 2 | exprs.go:61:18:61:18 | lit-init 2 | +| exprs.go:61:18:61:18 | lit-init 2 | exprs.go:61:21:61:21 | 3 | +| exprs.go:61:21:61:21 | 3 | exprs.go:61:21:61:21 | After 3 | +| exprs.go:61:21:61:21 | After 3 | exprs.go:61:21:61:21 | lit-init 3 | +| exprs.go:61:21:61:21 | lit-init 3 | exprs.go:61:9:61:22 | After slice literal | +| exprs.go:64:1:64:19 | After variable declaration | exprs.go:65:1:65:24 | variable declaration | +| exprs.go:64:1:64:19 | variable declaration | exprs.go:64:5:64:19 | value declaration specifier | +| exprs.go:64:5:64:19 | After value declaration specifier | exprs.go:64:1:64:19 | After variable declaration | +| exprs.go:64:5:64:19 | assign:0 value declaration specifier | exprs.go:64:5:64:19 | After value declaration specifier | +| exprs.go:64:5:64:19 | value declaration specifier | exprs.go:64:9:64:19 | Before call to sum | +| exprs.go:64:9:64:11 | sum | exprs.go:64:13:64:18 | Before call to ints | +| exprs.go:64:9:64:19 | After call to sum | exprs.go:64:5:64:19 | assign:0 value declaration specifier | +| exprs.go:64:9:64:19 | Before call to sum | exprs.go:64:9:64:11 | sum | +| exprs.go:64:9:64:19 | call to sum | exprs.go:0:0:0:0 | Exceptional Exit | +| exprs.go:64:9:64:19 | call to sum | exprs.go:64:9:64:19 | After call to sum | | exprs.go:64:13:64:16 | ints | exprs.go:64:13:64:18 | call to ints | -| exprs.go:64:13:64:18 | call to ints | exprs.go:0:0:0:0 | exit | -| exprs.go:64:13:64:18 | call to ints | exprs.go:64:9:64:19 | call to sum | -| exprs.go:65:5:65:6 | assignment to s2 | exprs.go:67:6:67:8 | skip | -| exprs.go:65:5:65:6 | skip | exprs.go:65:10:65:13 | sum2 | -| exprs.go:65:10:65:13 | sum2 | exprs.go:65:15:65:18 | ints | -| exprs.go:65:10:65:24 | call to sum2 | exprs.go:0:0:0:0 | exit | -| exprs.go:65:10:65:24 | call to sum2 | exprs.go:65:5:65:6 | assignment to s2 | +| exprs.go:64:13:64:18 | After call to ints | exprs.go:64:9:64:19 | call to sum | +| exprs.go:64:13:64:18 | Before call to ints | exprs.go:64:13:64:16 | ints | +| exprs.go:64:13:64:18 | call to ints | exprs.go:0:0:0:0 | Exceptional Exit | +| exprs.go:64:13:64:18 | call to ints | exprs.go:64:13:64:18 | After call to ints | +| exprs.go:65:1:65:24 | After variable declaration | exprs.go:67:1:69:1 | function declaration | +| exprs.go:65:1:65:24 | variable declaration | exprs.go:65:5:65:24 | value declaration specifier | +| exprs.go:65:5:65:24 | After value declaration specifier | exprs.go:65:1:65:24 | After variable declaration | +| exprs.go:65:5:65:24 | assign:0 value declaration specifier | exprs.go:65:5:65:24 | After value declaration specifier | +| exprs.go:65:5:65:24 | value declaration specifier | exprs.go:65:10:65:24 | Before call to sum2 | +| exprs.go:65:10:65:13 | sum2 | exprs.go:65:15:65:20 | Before call to ints | +| exprs.go:65:10:65:24 | After call to sum2 | exprs.go:65:5:65:24 | assign:0 value declaration specifier | +| exprs.go:65:10:65:24 | Before call to sum2 | exprs.go:65:10:65:13 | sum2 | +| exprs.go:65:10:65:24 | call to sum2 | exprs.go:0:0:0:0 | Exceptional Exit | +| exprs.go:65:10:65:24 | call to sum2 | exprs.go:65:10:65:24 | After call to sum2 | | exprs.go:65:15:65:18 | ints | exprs.go:65:15:65:20 | call to ints | -| exprs.go:65:15:65:20 | call to ints | exprs.go:0:0:0:0 | exit | -| exprs.go:65:15:65:20 | call to ints | exprs.go:65:10:65:24 | call to sum2 | -| exprs.go:67:1:69:1 | entry | exprs.go:67:10:67:10 | argument corresponding to x | -| exprs.go:67:1:69:1 | function declaration | exprs.go:71:6:71:8 | skip | -| exprs.go:67:6:67:8 | skip | exprs.go:67:1:69:1 | function declaration | -| exprs.go:67:10:67:10 | argument corresponding to x | exprs.go:67:10:67:10 | initialization of x | -| exprs.go:67:10:67:10 | initialization of x | exprs.go:67:13:67:13 | argument corresponding to y | -| exprs.go:67:13:67:13 | argument corresponding to y | exprs.go:67:13:67:13 | initialization of y | -| exprs.go:67:13:67:13 | initialization of y | exprs.go:68:9:68:9 | x | -| exprs.go:68:2:68:13 | return statement | exprs.go:67:1:69:1 | exit | +| exprs.go:65:15:65:20 | After call to ints | exprs.go:65:10:65:24 | call to sum2 | +| exprs.go:65:15:65:20 | Before call to ints | exprs.go:65:15:65:18 | ints | +| exprs.go:65:15:65:20 | call to ints | exprs.go:0:0:0:0 | Exceptional Exit | +| exprs.go:65:15:65:20 | call to ints | exprs.go:65:15:65:20 | After call to ints | +| exprs.go:67:1:69:1 | Entry | exprs.go:67:10:67:10 | x | +| exprs.go:67:1:69:1 | Normal Exit | exprs.go:67:1:69:1 | Exit | +| exprs.go:67:1:69:1 | function declaration | exprs.go:71:1:73:1 | function declaration | +| exprs.go:67:10:67:10 | x | exprs.go:67:13:67:13 | y | +| exprs.go:67:13:67:13 | y | exprs.go:67:24:69:1 | block statement | +| exprs.go:67:24:69:1 | block statement | exprs.go:68:2:68:13 | Before return statement | +| exprs.go:68:2:68:13 | Before return statement | exprs.go:68:9:68:13 | Before ...+... | +| exprs.go:68:2:68:13 | return statement | exprs.go:67:1:69:1 | Normal Exit | | exprs.go:68:9:68:9 | x | exprs.go:68:13:68:13 | y | -| exprs.go:68:9:68:13 | ...+... | exprs.go:68:2:68:13 | return statement | +| exprs.go:68:9:68:13 | ...+... | exprs.go:68:9:68:13 | After ...+... | +| exprs.go:68:9:68:13 | After ...+... | exprs.go:68:2:68:13 | return statement | +| exprs.go:68:9:68:13 | Before ...+... | exprs.go:68:9:68:9 | x | | exprs.go:68:13:68:13 | y | exprs.go:68:9:68:13 | ...+... | -| exprs.go:71:1:73:1 | entry | exprs.go:72:9:72:9 | 1 | -| exprs.go:71:1:73:1 | function declaration | exprs.go:75:5:75:6 | skip | -| exprs.go:71:6:71:8 | skip | exprs.go:71:1:73:1 | function declaration | -| exprs.go:72:2:72:12 | return statement | exprs.go:71:1:73:1 | exit | +| exprs.go:71:1:73:1 | Entry | exprs.go:71:23:73:1 | block statement | +| exprs.go:71:1:73:1 | Normal Exit | exprs.go:71:1:73:1 | Exit | +| exprs.go:71:1:73:1 | function declaration | exprs.go:75:1:75:19 | variable declaration | +| exprs.go:71:23:73:1 | block statement | exprs.go:72:2:72:12 | Before return statement | +| exprs.go:72:2:72:12 | Before return statement | exprs.go:72:9:72:9 | 1 | +| exprs.go:72:2:72:12 | return statement | exprs.go:71:1:73:1 | Normal Exit | | exprs.go:72:9:72:9 | 1 | exprs.go:72:12:72:12 | 2 | | exprs.go:72:12:72:12 | 2 | exprs.go:72:2:72:12 | return statement | -| exprs.go:75:5:75:6 | assignment to s3 | exprs.go:77:6:77:10 | skip | -| exprs.go:75:5:75:6 | skip | exprs.go:75:10:75:12 | add | -| exprs.go:75:10:75:12 | add | exprs.go:75:14:75:16 | gen | -| exprs.go:75:10:75:19 | call to add | exprs.go:0:0:0:0 | exit | -| exprs.go:75:10:75:19 | call to add | exprs.go:75:5:75:6 | assignment to s3 | -| exprs.go:75:10:75:19 | call to add[0] | exprs.go:75:10:75:19 | call to add[1] | -| exprs.go:75:10:75:19 | call to add[1] | exprs.go:75:10:75:19 | call to add | +| exprs.go:75:1:75:19 | After variable declaration | exprs.go:77:1:79:1 | function declaration | +| exprs.go:75:1:75:19 | variable declaration | exprs.go:75:5:75:19 | value declaration specifier | +| exprs.go:75:5:75:19 | After value declaration specifier | exprs.go:75:1:75:19 | After variable declaration | +| exprs.go:75:5:75:19 | assign:0 value declaration specifier | exprs.go:75:5:75:19 | After value declaration specifier | +| exprs.go:75:5:75:19 | value declaration specifier | exprs.go:75:10:75:19 | Before call to add | +| exprs.go:75:10:75:12 | add | exprs.go:75:14:75:18 | Before call to gen | +| exprs.go:75:10:75:19 | After call to add | exprs.go:75:5:75:19 | assign:0 value declaration specifier | +| exprs.go:75:10:75:19 | Before call to add | exprs.go:75:10:75:12 | add | +| exprs.go:75:10:75:19 | call to add | exprs.go:0:0:0:0 | Exceptional Exit | +| exprs.go:75:10:75:19 | call to add | exprs.go:75:10:75:19 | After call to add | +| exprs.go:75:10:75:19 | extract:0 call to add | exprs.go:75:10:75:19 | extract:1 call to add | +| exprs.go:75:10:75:19 | extract:1 call to add | exprs.go:75:10:75:19 | call to add | | exprs.go:75:14:75:16 | gen | exprs.go:75:14:75:18 | call to gen | -| exprs.go:75:14:75:18 | call to gen | exprs.go:0:0:0:0 | exit | -| exprs.go:75:14:75:18 | call to gen | exprs.go:75:10:75:19 | call to add[0] | -| exprs.go:77:1:79:1 | entry | exprs.go:77:12:77:12 | argument corresponding to x | -| exprs.go:77:1:79:1 | function declaration | exprs.go:81:6:81:16 | skip | -| exprs.go:77:6:77:10 | skip | exprs.go:77:1:79:1 | function declaration | -| exprs.go:77:12:77:12 | argument corresponding to x | exprs.go:77:12:77:12 | initialization of x | -| exprs.go:77:12:77:12 | initialization of x | exprs.go:77:15:77:15 | argument corresponding to y | -| exprs.go:77:15:77:15 | argument corresponding to y | exprs.go:77:15:77:15 | initialization of y | -| exprs.go:77:15:77:15 | initialization of y | exprs.go:77:18:77:18 | argument corresponding to z | -| exprs.go:77:18:77:18 | argument corresponding to z | exprs.go:77:18:77:18 | initialization of z | -| exprs.go:77:18:77:18 | initialization of z | exprs.go:78:11:78:11 | x | -| exprs.go:78:2:78:22 | return statement | exprs.go:77:1:79:1 | exit | -| exprs.go:78:9:78:17 | !... | exprs.go:78:9:78:17 | !... is false | -| exprs.go:78:9:78:17 | !... | exprs.go:78:9:78:17 | !... is true | -| exprs.go:78:9:78:17 | !... is false | exprs.go:78:22:78:22 | z | -| exprs.go:78:9:78:17 | !... is true | exprs.go:78:9:78:22 | ...\|\|... | -| exprs.go:78:9:78:22 | ...\|\|... | exprs.go:78:2:78:22 | return statement | -| exprs.go:78:11:78:11 | x | exprs.go:78:11:78:11 | x is false | -| exprs.go:78:11:78:11 | x | exprs.go:78:11:78:11 | x is true | -| exprs.go:78:11:78:11 | x is false | exprs.go:78:11:78:16 | ...&&... | -| exprs.go:78:11:78:11 | x is true | exprs.go:78:16:78:16 | y | -| exprs.go:78:11:78:16 | ...&&... | exprs.go:78:9:78:17 | !... | -| exprs.go:78:16:78:16 | y | exprs.go:78:11:78:16 | ...&&... | -| exprs.go:78:22:78:22 | z | exprs.go:78:9:78:22 | ...\|\|... | -| exprs.go:81:1:87:1 | entry | exprs.go:81:18:81:19 | argument corresponding to ch | -| exprs.go:81:1:87:1 | function declaration | exprs.go:89:7:89:9 | skip | -| exprs.go:81:6:81:16 | skip | exprs.go:81:1:87:1 | function declaration | -| exprs.go:81:18:81:19 | argument corresponding to ch | exprs.go:81:18:81:19 | initialization of ch | -| exprs.go:81:18:81:19 | initialization of ch | exprs.go:82:2:82:4 | skip | -| exprs.go:82:2:82:4 | assignment to val | exprs.go:82:2:82:16 | ... := ...[1] | -| exprs.go:82:2:82:4 | skip | exprs.go:82:7:82:8 | skip | -| exprs.go:82:2:82:16 | ... := ...[0] | exprs.go:82:2:82:4 | assignment to val | -| exprs.go:82:2:82:16 | ... := ...[1] | exprs.go:82:7:82:8 | assignment to ok | -| exprs.go:82:7:82:8 | assignment to ok | exprs.go:83:5:83:6 | ok | -| exprs.go:82:7:82:8 | skip | exprs.go:82:15:82:16 | ch | -| exprs.go:82:13:82:16 | <-... | exprs.go:82:2:82:16 | ... := ...[0] | +| exprs.go:75:14:75:18 | After call to gen | exprs.go:75:10:75:19 | extract:0 call to add | +| exprs.go:75:14:75:18 | Before call to gen | exprs.go:75:14:75:16 | gen | +| exprs.go:75:14:75:18 | call to gen | exprs.go:0:0:0:0 | Exceptional Exit | +| exprs.go:75:14:75:18 | call to gen | exprs.go:75:14:75:18 | After call to gen | +| exprs.go:77:1:79:1 | Entry | exprs.go:77:12:77:12 | x | +| exprs.go:77:1:79:1 | Normal Exit | exprs.go:77:1:79:1 | Exit | +| exprs.go:77:1:79:1 | function declaration | exprs.go:81:1:87:1 | function declaration | +| exprs.go:77:12:77:12 | x | exprs.go:77:15:77:15 | y | +| exprs.go:77:15:77:15 | y | exprs.go:77:18:77:18 | z | +| exprs.go:77:18:77:18 | z | exprs.go:77:31:79:1 | block statement | +| exprs.go:77:31:79:1 | block statement | exprs.go:78:2:78:22 | Before return statement | +| exprs.go:78:2:78:22 | Before return statement | exprs.go:78:9:78:22 | ...\|\|... | +| exprs.go:78:2:78:22 | return statement | exprs.go:77:1:79:1 | Normal Exit | +| exprs.go:78:9:78:17 | !... | exprs.go:78:11:78:16 | ...&&... | +| exprs.go:78:9:78:17 | After !... [false] | exprs.go:78:22:78:22 | z | +| exprs.go:78:9:78:17 | After !... [true] | exprs.go:78:9:78:22 | After ...\|\|... | +| exprs.go:78:9:78:22 | ...\|\|... | exprs.go:78:9:78:17 | !... | +| exprs.go:78:9:78:22 | After ...\|\|... | exprs.go:78:2:78:22 | return statement | +| exprs.go:78:11:78:11 | After x [false] | exprs.go:78:11:78:16 | After ...&&... [false] | +| exprs.go:78:11:78:11 | After x [true] | exprs.go:78:16:78:16 | y | +| exprs.go:78:11:78:11 | x | exprs.go:78:11:78:11 | After x [false] | +| exprs.go:78:11:78:11 | x | exprs.go:78:11:78:11 | After x [true] | +| exprs.go:78:11:78:16 | ...&&... | exprs.go:78:11:78:11 | x | +| exprs.go:78:11:78:16 | After ...&&... [false] | exprs.go:78:9:78:17 | After !... [true] | +| exprs.go:78:11:78:16 | After ...&&... [true] | exprs.go:78:9:78:17 | After !... [false] | +| exprs.go:78:16:78:16 | After y [false] | exprs.go:78:11:78:16 | After ...&&... [false] | +| exprs.go:78:16:78:16 | After y [true] | exprs.go:78:11:78:16 | After ...&&... [true] | +| exprs.go:78:16:78:16 | y | exprs.go:78:16:78:16 | After y [false] | +| exprs.go:78:16:78:16 | y | exprs.go:78:16:78:16 | After y [true] | +| exprs.go:78:22:78:22 | z | exprs.go:78:9:78:22 | After ...\|\|... | +| exprs.go:81:1:87:1 | Entry | exprs.go:81:18:81:19 | ch | +| exprs.go:81:1:87:1 | Exceptional Exit | exprs.go:81:1:87:1 | Exit | +| exprs.go:81:1:87:1 | Normal Exit | exprs.go:81:1:87:1 | Exit | +| exprs.go:81:1:87:1 | function declaration | exprs.go:89:1:89:13 | constant declaration | +| exprs.go:81:18:81:19 | ch | exprs.go:81:35:87:1 | block statement | +| exprs.go:81:35:87:1 | block statement | exprs.go:82:2:82:16 | ... := ... | +| exprs.go:82:2:82:16 | ... := ... | exprs.go:82:13:82:16 | Before <-... | +| exprs.go:82:2:82:16 | After ... := ... | exprs.go:83:2:85:2 | if statement | +| exprs.go:82:2:82:16 | extract:0 ... := ... | exprs.go:82:2:82:16 | extract:1 ... := ... | +| exprs.go:82:2:82:16 | extract:1 ... := ... | exprs.go:82:2:82:16 | After ... := ... | +| exprs.go:82:13:82:16 | <-... | exprs.go:82:13:82:16 | After <-... | +| exprs.go:82:13:82:16 | After <-... | exprs.go:82:2:82:16 | extract:0 ... := ... | +| exprs.go:82:13:82:16 | Before <-... | exprs.go:82:15:82:16 | ch | | exprs.go:82:15:82:16 | ch | exprs.go:82:13:82:16 | <-... | -| exprs.go:83:5:83:6 | ok | exprs.go:83:5:83:6 | ok is false | -| exprs.go:83:5:83:6 | ok | exprs.go:83:5:83:6 | ok is true | -| exprs.go:83:5:83:6 | ok is false | exprs.go:86:2:86:6 | panic | -| exprs.go:83:5:83:6 | ok is true | exprs.go:84:10:84:12 | val | -| exprs.go:84:3:84:12 | return statement | exprs.go:81:1:87:1 | exit | +| exprs.go:83:2:85:2 | After if statement | exprs.go:86:2:86:18 | expression statement | +| exprs.go:83:2:85:2 | if statement | exprs.go:83:5:83:6 | ok | +| exprs.go:83:5:83:6 | After ok [false] | exprs.go:83:2:85:2 | After if statement | +| exprs.go:83:5:83:6 | After ok [true] | exprs.go:83:8:85:2 | block statement | +| exprs.go:83:5:83:6 | ok | exprs.go:83:5:83:6 | After ok [false] | +| exprs.go:83:5:83:6 | ok | exprs.go:83:5:83:6 | After ok [true] | +| exprs.go:83:8:85:2 | block statement | exprs.go:84:3:84:12 | Before return statement | +| exprs.go:84:3:84:12 | Before return statement | exprs.go:84:10:84:12 | val | +| exprs.go:84:3:84:12 | return statement | exprs.go:81:1:87:1 | Normal Exit | | exprs.go:84:10:84:12 | val | exprs.go:84:3:84:12 | return statement | | exprs.go:86:2:86:6 | panic | exprs.go:86:8:86:17 | "No value" | -| exprs.go:86:2:86:18 | call to panic | exprs.go:81:1:87:1 | exit | +| exprs.go:86:2:86:18 | Before call to panic | exprs.go:86:2:86:6 | panic | +| exprs.go:86:2:86:18 | call to panic | exprs.go:81:1:87:1 | Exceptional Exit | +| exprs.go:86:2:86:18 | expression statement | exprs.go:86:2:86:18 | Before call to panic | | exprs.go:86:8:86:17 | "No value" | exprs.go:86:2:86:18 | call to panic | -| exprs.go:89:7:89:9 | assignment to one | exprs.go:91:5:91:5 | skip | -| exprs.go:89:7:89:9 | skip | exprs.go:89:13:89:13 | 1 | -| exprs.go:89:13:89:13 | 1 | exprs.go:89:7:89:9 | assignment to one | -| exprs.go:91:5:91:5 | assignment to a | exprs.go:93:6:93:11 | skip | -| exprs.go:91:5:91:5 | skip | exprs.go:91:9:91:25 | slice literal | -| exprs.go:91:9:91:25 | slice literal | exprs.go:91:15:91:21 | ...+... | -| exprs.go:91:15:91:21 | ...+... | exprs.go:91:24:91:24 | 2 | -| exprs.go:91:15:91:24 | init of key-value pair | exprs.go:91:5:91:5 | assignment to a | -| exprs.go:91:24:91:24 | 2 | exprs.go:91:15:91:24 | init of key-value pair | -| exprs.go:93:1:95:1 | entry | exprs.go:93:13:93:13 | argument corresponding to x | -| exprs.go:93:1:95:1 | function declaration | exprs.go:0:0:0:0 | exit | -| exprs.go:93:6:93:11 | skip | exprs.go:93:1:95:1 | function declaration | -| exprs.go:93:13:93:13 | argument corresponding to x | exprs.go:93:13:93:13 | initialization of x | -| exprs.go:93:13:93:13 | initialization of x | exprs.go:93:16:93:16 | argument corresponding to y | -| exprs.go:93:16:93:16 | argument corresponding to y | exprs.go:93:16:93:16 | initialization of y | -| exprs.go:93:16:93:16 | initialization of y | exprs.go:93:19:93:19 | argument corresponding to z | -| exprs.go:93:19:93:19 | argument corresponding to z | exprs.go:93:19:93:19 | initialization of z | -| exprs.go:93:19:93:19 | initialization of z | exprs.go:94:10:94:10 | x | -| exprs.go:94:2:94:21 | return statement | exprs.go:93:1:95:1 | exit | -| exprs.go:94:9:94:16 | (...) is false | exprs.go:94:21:94:21 | z | -| exprs.go:94:9:94:16 | (...) is true | exprs.go:94:9:94:21 | ...\|\|... | -| exprs.go:94:9:94:21 | ...\|\|... | exprs.go:94:2:94:21 | return statement | -| exprs.go:94:10:94:10 | x | exprs.go:94:10:94:10 | x is false | -| exprs.go:94:10:94:10 | x | exprs.go:94:10:94:10 | x is true | -| exprs.go:94:10:94:10 | x is false | exprs.go:94:9:94:16 | (...) is false | -| exprs.go:94:10:94:10 | x is true | exprs.go:94:15:94:15 | y | -| exprs.go:94:15:94:15 | y | exprs.go:94:9:94:16 | (...) is false | -| exprs.go:94:15:94:15 | y | exprs.go:94:9:94:16 | (...) is true | -| exprs.go:94:21:94:21 | z | exprs.go:94:9:94:21 | ...\|\|... | -| generic.go:0:0:0:0 | entry | generic.go:3:1:5:1 | skip | -| generic.go:3:1:5:1 | skip | generic.go:7:28:7:35 | skip | -| generic.go:7:1:7:55 | entry | generic.go:7:7:7:7 | argument corresponding to g | -| generic.go:7:1:7:55 | function declaration | generic.go:9:1:12:1 | skip | -| generic.go:7:7:7:7 | argument corresponding to g | generic.go:7:7:7:7 | initialization of g | -| generic.go:7:7:7:7 | initialization of g | generic.go:7:37:7:37 | argument corresponding to u | -| generic.go:7:28:7:35 | skip | generic.go:7:1:7:55 | function declaration | -| generic.go:7:37:7:37 | argument corresponding to u | generic.go:7:37:7:37 | initialization of u | -| generic.go:7:37:7:37 | initialization of u | generic.go:7:53:7:53 | u | -| generic.go:7:46:7:53 | return statement | generic.go:7:1:7:55 | exit | +| exprs.go:89:1:89:13 | After constant declaration | exprs.go:91:1:91:25 | variable declaration | +| exprs.go:89:1:89:13 | constant declaration | exprs.go:89:7:89:13 | value declaration specifier | +| exprs.go:89:7:89:13 | After value declaration specifier | exprs.go:89:1:89:13 | After constant declaration | +| exprs.go:89:7:89:13 | assign:0 value declaration specifier | exprs.go:89:7:89:13 | After value declaration specifier | +| exprs.go:89:7:89:13 | value declaration specifier | exprs.go:89:13:89:13 | 1 | +| exprs.go:89:13:89:13 | 1 | exprs.go:89:7:89:13 | assign:0 value declaration specifier | +| exprs.go:91:1:91:25 | After variable declaration | exprs.go:93:1:95:1 | function declaration | +| exprs.go:91:1:91:25 | variable declaration | exprs.go:91:5:91:25 | value declaration specifier | +| exprs.go:91:5:91:25 | After value declaration specifier | exprs.go:91:1:91:25 | After variable declaration | +| exprs.go:91:5:91:25 | assign:0 value declaration specifier | exprs.go:91:5:91:25 | After value declaration specifier | +| exprs.go:91:5:91:25 | value declaration specifier | exprs.go:91:9:91:25 | Before slice literal | +| exprs.go:91:9:91:25 | After slice literal | exprs.go:91:5:91:25 | assign:0 value declaration specifier | +| exprs.go:91:9:91:25 | Before slice literal | exprs.go:91:9:91:25 | slice literal | +| exprs.go:91:9:91:25 | slice literal | exprs.go:91:15:91:24 | Before key-value pair | +| exprs.go:91:15:91:21 | ...+... | exprs.go:91:15:91:21 | After ...+... | +| exprs.go:91:15:91:21 | After ...+... | exprs.go:91:24:91:24 | 2 | +| exprs.go:91:15:91:21 | Before ...+... | exprs.go:91:15:91:21 | ...+... | +| exprs.go:91:15:91:24 | After key-value pair | exprs.go:91:15:91:24 | lit-init key-value pair | +| exprs.go:91:15:91:24 | Before key-value pair | exprs.go:91:15:91:21 | Before ...+... | +| exprs.go:91:15:91:24 | key-value pair | exprs.go:91:15:91:24 | After key-value pair | +| exprs.go:91:15:91:24 | lit-init key-value pair | exprs.go:91:9:91:25 | After slice literal | +| exprs.go:91:24:91:24 | 2 | exprs.go:91:15:91:24 | key-value pair | +| exprs.go:93:1:95:1 | Entry | exprs.go:93:13:93:13 | x | +| exprs.go:93:1:95:1 | Normal Exit | exprs.go:93:1:95:1 | Exit | +| exprs.go:93:1:95:1 | function declaration | exprs.go:0:0:0:0 | After exprs.go | +| exprs.go:93:13:93:13 | x | exprs.go:93:16:93:16 | y | +| exprs.go:93:16:93:16 | y | exprs.go:93:19:93:19 | z | +| exprs.go:93:19:93:19 | z | exprs.go:93:32:95:1 | block statement | +| exprs.go:93:32:95:1 | block statement | exprs.go:94:2:94:21 | Before return statement | +| exprs.go:94:2:94:21 | Before return statement | exprs.go:94:9:94:21 | ...\|\|... | +| exprs.go:94:2:94:21 | return statement | exprs.go:93:1:95:1 | Normal Exit | +| exprs.go:94:9:94:21 | ...\|\|... | exprs.go:94:10:94:15 | ...&&... | +| exprs.go:94:9:94:21 | After ...\|\|... | exprs.go:94:2:94:21 | return statement | +| exprs.go:94:10:94:10 | After x [false] | exprs.go:94:10:94:15 | After ...&&... [false] | +| exprs.go:94:10:94:10 | After x [true] | exprs.go:94:15:94:15 | y | +| exprs.go:94:10:94:10 | x | exprs.go:94:10:94:10 | After x [false] | +| exprs.go:94:10:94:10 | x | exprs.go:94:10:94:10 | After x [true] | +| exprs.go:94:10:94:15 | ...&&... | exprs.go:94:10:94:10 | x | +| exprs.go:94:10:94:15 | After ...&&... [false] | exprs.go:94:21:94:21 | z | +| exprs.go:94:10:94:15 | After ...&&... [true] | exprs.go:94:9:94:21 | After ...\|\|... | +| exprs.go:94:15:94:15 | After y [false] | exprs.go:94:10:94:15 | After ...&&... [false] | +| exprs.go:94:15:94:15 | After y [true] | exprs.go:94:10:94:15 | After ...&&... [true] | +| exprs.go:94:15:94:15 | y | exprs.go:94:15:94:15 | After y [false] | +| exprs.go:94:15:94:15 | y | exprs.go:94:15:94:15 | After y [true] | +| exprs.go:94:21:94:21 | z | exprs.go:94:9:94:21 | After ...\|\|... | +| generic.go:0:0:0:0 | After generic.go | generic.go:0:0:0:0 | Normal Exit | +| generic.go:0:0:0:0 | Entry | generic.go:0:0:0:0 | generic.go | +| generic.go:0:0:0:0 | Normal Exit | generic.go:0:0:0:0 | Exit | +| generic.go:0:0:0:0 | generic.go | generic.go:3:1:5:1 | type declaration | +| generic.go:3:1:5:1 | type declaration | generic.go:7:1:7:55 | function declaration | +| generic.go:7:1:7:55 | Entry | generic.go:7:7:7:7 | g | +| generic.go:7:1:7:55 | Normal Exit | generic.go:7:1:7:55 | Exit | +| generic.go:7:1:7:55 | function declaration | generic.go:9:1:12:1 | type declaration | +| generic.go:7:7:7:7 | g | generic.go:7:37:7:37 | u | +| generic.go:7:37:7:37 | u | generic.go:7:44:7:55 | block statement | +| generic.go:7:44:7:55 | block statement | generic.go:7:46:7:53 | Before return statement | +| generic.go:7:46:7:53 | Before return statement | generic.go:7:53:7:53 | u | +| generic.go:7:46:7:53 | return statement | generic.go:7:1:7:55 | Normal Exit | | generic.go:7:53:7:53 | u | generic.go:7:46:7:53 | return statement | -| generic.go:9:1:12:1 | skip | generic.go:14:31:14:39 | skip | -| generic.go:14:1:14:59 | entry | generic.go:14:7:14:7 | argument corresponding to g | -| generic.go:14:1:14:59 | function declaration | generic.go:16:6:16:21 | skip | -| generic.go:14:7:14:7 | argument corresponding to g | generic.go:14:7:14:7 | initialization of g | -| generic.go:14:7:14:7 | initialization of g | generic.go:14:41:14:41 | argument corresponding to u | -| generic.go:14:31:14:39 | skip | generic.go:14:1:14:59 | function declaration | -| generic.go:14:41:14:41 | argument corresponding to u | generic.go:14:41:14:41 | initialization of u | -| generic.go:14:41:14:41 | initialization of u | generic.go:14:57:14:57 | u | -| generic.go:14:50:14:57 | return statement | generic.go:14:1:14:59 | exit | +| generic.go:9:1:12:1 | type declaration | generic.go:14:1:14:59 | function declaration | +| generic.go:14:1:14:59 | Entry | generic.go:14:7:14:7 | g | +| generic.go:14:1:14:59 | Normal Exit | generic.go:14:1:14:59 | Exit | +| generic.go:14:1:14:59 | function declaration | generic.go:16:1:18:1 | function declaration | +| generic.go:14:7:14:7 | g | generic.go:14:41:14:41 | u | +| generic.go:14:41:14:41 | u | generic.go:14:48:14:59 | block statement | +| generic.go:14:48:14:59 | block statement | generic.go:14:50:14:57 | Before return statement | +| generic.go:14:50:14:57 | Before return statement | generic.go:14:57:14:57 | u | +| generic.go:14:50:14:57 | return statement | generic.go:14:1:14:59 | Normal Exit | | generic.go:14:57:14:57 | u | generic.go:14:50:14:57 | return statement | -| generic.go:16:1:18:1 | entry | generic.go:16:30:16:30 | argument corresponding to t | -| generic.go:16:1:18:1 | function declaration | generic.go:20:6:20:21 | skip | -| generic.go:16:6:16:21 | skip | generic.go:16:1:18:1 | function declaration | -| generic.go:16:30:16:30 | argument corresponding to t | generic.go:16:30:16:30 | initialization of t | -| generic.go:16:30:16:30 | initialization of t | generic.go:17:9:17:9 | t | -| generic.go:17:2:17:9 | return statement | generic.go:16:1:18:1 | exit | +| generic.go:16:1:18:1 | Entry | generic.go:16:30:16:30 | t | +| generic.go:16:1:18:1 | Normal Exit | generic.go:16:1:18:1 | Exit | +| generic.go:16:1:18:1 | function declaration | generic.go:20:1:22:1 | function declaration | +| generic.go:16:30:16:30 | t | generic.go:16:37:18:1 | block statement | +| generic.go:16:37:18:1 | block statement | generic.go:17:2:17:9 | Before return statement | +| generic.go:17:2:17:9 | Before return statement | generic.go:17:9:17:9 | t | +| generic.go:17:2:17:9 | return statement | generic.go:16:1:18:1 | Normal Exit | | generic.go:17:9:17:9 | t | generic.go:17:2:17:9 | return statement | -| generic.go:20:1:22:1 | entry | generic.go:20:33:20:33 | argument corresponding to s | -| generic.go:20:1:22:1 | function declaration | generic.go:24:6:24:12 | skip | -| generic.go:20:6:20:21 | skip | generic.go:20:1:22:1 | function declaration | -| generic.go:20:33:20:33 | argument corresponding to s | generic.go:20:33:20:33 | initialization of s | -| generic.go:20:33:20:33 | initialization of s | generic.go:20:38:20:38 | argument corresponding to t | -| generic.go:20:38:20:38 | argument corresponding to t | generic.go:20:38:20:38 | initialization of t | -| generic.go:20:38:20:38 | initialization of t | generic.go:21:9:21:9 | s | -| generic.go:21:2:21:12 | return statement | generic.go:20:1:22:1 | exit | +| generic.go:20:1:22:1 | Entry | generic.go:20:33:20:33 | s | +| generic.go:20:1:22:1 | Normal Exit | generic.go:20:1:22:1 | Exit | +| generic.go:20:1:22:1 | function declaration | generic.go:24:1:35:1 | function declaration | +| generic.go:20:33:20:33 | s | generic.go:20:38:20:38 | t | +| generic.go:20:38:20:38 | t | generic.go:20:50:22:1 | block statement | +| generic.go:20:50:22:1 | block statement | generic.go:21:2:21:12 | Before return statement | +| generic.go:21:2:21:12 | Before return statement | generic.go:21:9:21:9 | s | +| generic.go:21:2:21:12 | return statement | generic.go:20:1:22:1 | Normal Exit | | generic.go:21:9:21:9 | s | generic.go:21:12:21:12 | t | | generic.go:21:12:21:12 | t | generic.go:21:2:21:12 | return statement | -| generic.go:24:1:35:1 | entry | generic.go:25:2:25:4 | skip | -| generic.go:24:1:35:1 | function declaration | generic.go:0:0:0:0 | exit | -| generic.go:24:6:24:12 | skip | generic.go:24:1:35:1 | function declaration | -| generic.go:25:2:25:4 | assignment to gs1 | generic.go:26:2:26:2 | skip | -| generic.go:25:2:25:4 | skip | generic.go:25:9:25:35 | struct literal | +| generic.go:24:1:35:1 | Entry | generic.go:24:16:35:1 | block statement | +| generic.go:24:1:35:1 | Exceptional Exit | generic.go:24:1:35:1 | Exit | +| generic.go:24:1:35:1 | Normal Exit | generic.go:24:1:35:1 | Exit | +| generic.go:24:1:35:1 | function declaration | generic.go:0:0:0:0 | After generic.go | +| generic.go:24:16:35:1 | After block statement | generic.go:24:1:35:1 | Normal Exit | +| generic.go:24:16:35:1 | block statement | generic.go:25:2:25:35 | ... := ... | +| generic.go:25:2:25:35 | ... := ... | generic.go:25:9:25:35 | Before struct literal | +| generic.go:25:2:25:35 | After ... := ... | generic.go:26:2:26:27 | ... := ... | +| generic.go:25:2:25:35 | assign:0 ... := ... | generic.go:25:2:25:35 | After ... := ... | +| generic.go:25:9:25:35 | After struct literal | generic.go:25:2:25:35 | assign:0 ... := ... | +| generic.go:25:9:25:35 | Before struct literal | generic.go:25:9:25:35 | struct literal | | generic.go:25:9:25:35 | struct literal | generic.go:25:32:25:34 | "x" | -| generic.go:25:32:25:34 | "x" | generic.go:25:32:25:34 | init of "x" | -| generic.go:25:32:25:34 | init of "x" | generic.go:25:2:25:4 | assignment to gs1 | -| generic.go:26:2:26:2 | assignment to a | generic.go:27:2:27:4 | skip | -| generic.go:26:2:26:2 | skip | generic.go:26:7:26:9 | gs1 | +| generic.go:25:32:25:34 | "x" | generic.go:25:32:25:34 | After "x" | +| generic.go:25:32:25:34 | After "x" | generic.go:25:32:25:34 | lit-init "x" | +| generic.go:25:32:25:34 | lit-init "x" | generic.go:25:9:25:35 | After struct literal | +| generic.go:26:2:26:27 | ... := ... | generic.go:26:7:26:27 | Before call to Identity | +| generic.go:26:2:26:27 | After ... := ... | generic.go:27:2:27:48 | ... := ... | +| generic.go:26:2:26:27 | assign:0 ... := ... | generic.go:26:2:26:27 | After ... := ... | | generic.go:26:7:26:9 | gs1 | generic.go:26:7:26:18 | selection of Identity | -| generic.go:26:7:26:18 | selection of Identity | generic.go:26:20:26:26 | "hello" | -| generic.go:26:7:26:27 | call to Identity | generic.go:24:1:35:1 | exit | -| generic.go:26:7:26:27 | call to Identity | generic.go:26:2:26:2 | assignment to a | +| generic.go:26:7:26:18 | After selection of Identity | generic.go:26:20:26:26 | "hello" | +| generic.go:26:7:26:18 | Before selection of Identity | generic.go:26:7:26:9 | gs1 | +| generic.go:26:7:26:18 | selection of Identity | generic.go:26:7:26:18 | After selection of Identity | +| generic.go:26:7:26:27 | After call to Identity | generic.go:26:2:26:27 | assign:0 ... := ... | +| generic.go:26:7:26:27 | Before call to Identity | generic.go:26:7:26:18 | Before selection of Identity | +| generic.go:26:7:26:27 | call to Identity | generic.go:24:1:35:1 | Exceptional Exit | +| generic.go:26:7:26:27 | call to Identity | generic.go:26:7:26:27 | After call to Identity | | generic.go:26:20:26:26 | "hello" | generic.go:26:7:26:27 | call to Identity | -| generic.go:27:2:27:4 | assignment to gs2 | generic.go:28:2:28:2 | skip | -| generic.go:27:2:27:4 | skip | generic.go:27:9:27:48 | struct literal | +| generic.go:27:2:27:48 | ... := ... | generic.go:27:9:27:48 | Before struct literal | +| generic.go:27:2:27:48 | After ... := ... | generic.go:28:2:28:22 | ... := ... | +| generic.go:27:2:27:48 | assign:0 ... := ... | generic.go:27:2:27:48 | After ... := ... | +| generic.go:27:9:27:48 | After struct literal | generic.go:27:2:27:48 | assign:0 ... := ... | +| generic.go:27:9:27:48 | Before struct literal | generic.go:27:9:27:48 | struct literal | | generic.go:27:9:27:48 | struct literal | generic.go:27:40:27:42 | "y" | -| generic.go:27:40:27:42 | "y" | generic.go:27:40:27:42 | init of "y" | -| generic.go:27:40:27:42 | init of "y" | generic.go:27:45:27:47 | "z" | -| generic.go:27:45:27:47 | "z" | generic.go:27:45:27:47 | init of "z" | -| generic.go:27:45:27:47 | init of "z" | generic.go:27:2:27:4 | assignment to gs2 | -| generic.go:28:2:28:2 | assignment to b | generic.go:29:2:29:2 | skip | -| generic.go:28:2:28:2 | skip | generic.go:28:7:28:9 | gs2 | +| generic.go:27:40:27:42 | "y" | generic.go:27:40:27:42 | After "y" | +| generic.go:27:40:27:42 | After "y" | generic.go:27:40:27:42 | lit-init "y" | +| generic.go:27:40:27:42 | lit-init "y" | generic.go:27:45:27:47 | "z" | +| generic.go:27:45:27:47 | "z" | generic.go:27:45:27:47 | After "z" | +| generic.go:27:45:27:47 | After "z" | generic.go:27:45:27:47 | lit-init "z" | +| generic.go:27:45:27:47 | lit-init "z" | generic.go:27:9:27:48 | After struct literal | +| generic.go:28:2:28:22 | ... := ... | generic.go:28:7:28:22 | Before call to Identity1 | +| generic.go:28:2:28:22 | After ... := ... | generic.go:29:2:29:33 | ... := ... | +| generic.go:28:2:28:22 | assign:0 ... := ... | generic.go:28:2:28:22 | After ... := ... | | generic.go:28:7:28:9 | gs2 | generic.go:28:7:28:19 | selection of Identity1 | -| generic.go:28:7:28:19 | selection of Identity1 | generic.go:28:21:28:21 | a | -| generic.go:28:7:28:22 | call to Identity1 | generic.go:24:1:35:1 | exit | -| generic.go:28:7:28:22 | call to Identity1 | generic.go:28:2:28:2 | assignment to b | +| generic.go:28:7:28:19 | After selection of Identity1 | generic.go:28:21:28:21 | a | +| generic.go:28:7:28:19 | Before selection of Identity1 | generic.go:28:7:28:9 | gs2 | +| generic.go:28:7:28:19 | selection of Identity1 | generic.go:28:7:28:19 | After selection of Identity1 | +| generic.go:28:7:28:22 | After call to Identity1 | generic.go:28:2:28:22 | assign:0 ... := ... | +| generic.go:28:7:28:22 | Before call to Identity1 | generic.go:28:7:28:19 | Before selection of Identity1 | +| generic.go:28:7:28:22 | call to Identity1 | generic.go:24:1:35:1 | Exceptional Exit | +| generic.go:28:7:28:22 | call to Identity1 | generic.go:28:7:28:22 | After call to Identity1 | | generic.go:28:21:28:21 | a | generic.go:28:7:28:22 | call to Identity1 | -| generic.go:29:2:29:2 | assignment to c | generic.go:30:2:30:2 | skip | -| generic.go:29:2:29:2 | skip | generic.go:29:7:29:22 | genericIdentity1 | -| generic.go:29:7:29:22 | genericIdentity1 | generic.go:29:32:29:32 | b | -| generic.go:29:7:29:33 | call to genericIdentity1 | generic.go:24:1:35:1 | exit | -| generic.go:29:7:29:33 | call to genericIdentity1 | generic.go:29:2:29:2 | assignment to c | +| generic.go:29:2:29:33 | ... := ... | generic.go:29:7:29:33 | Before call to genericIdentity1 | +| generic.go:29:2:29:33 | After ... := ... | generic.go:30:2:30:25 | ... := ... | +| generic.go:29:2:29:33 | assign:0 ... := ... | generic.go:29:2:29:33 | After ... := ... | +| generic.go:29:7:29:22 | genericIdentity1 | generic.go:29:7:29:30 | generic function instantiation expression | +| generic.go:29:7:29:30 | After generic function instantiation expression | generic.go:29:32:29:32 | b | +| generic.go:29:7:29:30 | Before generic function instantiation expression | generic.go:29:7:29:22 | genericIdentity1 | +| generic.go:29:7:29:30 | generic function instantiation expression | generic.go:29:7:29:30 | After generic function instantiation expression | +| generic.go:29:7:29:33 | After call to genericIdentity1 | generic.go:29:2:29:33 | assign:0 ... := ... | +| generic.go:29:7:29:33 | Before call to genericIdentity1 | generic.go:29:7:29:30 | Before generic function instantiation expression | +| generic.go:29:7:29:33 | call to genericIdentity1 | generic.go:24:1:35:1 | Exceptional Exit | +| generic.go:29:7:29:33 | call to genericIdentity1 | generic.go:29:7:29:33 | After call to genericIdentity1 | | generic.go:29:32:29:32 | b | generic.go:29:7:29:33 | call to genericIdentity1 | -| generic.go:30:2:30:2 | assignment to d | generic.go:31:2:31:2 | skip | -| generic.go:30:2:30:2 | skip | generic.go:30:7:30:22 | genericIdentity1 | +| generic.go:30:2:30:25 | ... := ... | generic.go:30:7:30:25 | Before call to genericIdentity1 | +| generic.go:30:2:30:25 | After ... := ... | generic.go:31:2:31:53 | ... := ... | +| generic.go:30:2:30:25 | assign:0 ... := ... | generic.go:30:2:30:25 | After ... := ... | | generic.go:30:7:30:22 | genericIdentity1 | generic.go:30:24:30:24 | c | -| generic.go:30:7:30:25 | call to genericIdentity1 | generic.go:24:1:35:1 | exit | -| generic.go:30:7:30:25 | call to genericIdentity1 | generic.go:30:2:30:2 | assignment to d | +| generic.go:30:7:30:25 | After call to genericIdentity1 | generic.go:30:2:30:25 | assign:0 ... := ... | +| generic.go:30:7:30:25 | Before call to genericIdentity1 | generic.go:30:7:30:22 | genericIdentity1 | +| generic.go:30:7:30:25 | call to genericIdentity1 | generic.go:24:1:35:1 | Exceptional Exit | +| generic.go:30:7:30:25 | call to genericIdentity1 | generic.go:30:7:30:25 | After call to genericIdentity1 | | generic.go:30:24:30:24 | c | generic.go:30:7:30:25 | call to genericIdentity1 | -| generic.go:31:2:31:2 | assignment to e | generic.go:31:2:31:53 | ... := ...[1] | -| generic.go:31:2:31:2 | skip | generic.go:31:5:31:5 | skip | -| generic.go:31:2:31:53 | ... := ...[0] | generic.go:31:2:31:2 | assignment to e | -| generic.go:31:2:31:53 | ... := ...[1] | generic.go:31:5:31:5 | assignment to f | -| generic.go:31:5:31:5 | assignment to f | generic.go:32:2:32:2 | skip | -| generic.go:31:5:31:5 | skip | generic.go:31:10:31:25 | genericIdentity2 | -| generic.go:31:10:31:25 | genericIdentity2 | generic.go:31:43:31:43 | d | -| generic.go:31:10:31:53 | call to genericIdentity2 | generic.go:24:1:35:1 | exit | -| generic.go:31:10:31:53 | call to genericIdentity2 | generic.go:31:2:31:53 | ... := ...[0] | +| generic.go:31:2:31:53 | ... := ... | generic.go:31:10:31:53 | Before call to genericIdentity2 | +| generic.go:31:2:31:53 | After ... := ... | generic.go:32:2:32:31 | ... := ... | +| generic.go:31:2:31:53 | extract:0 ... := ... | generic.go:31:2:31:53 | extract:1 ... := ... | +| generic.go:31:2:31:53 | extract:1 ... := ... | generic.go:31:2:31:53 | After ... := ... | +| generic.go:31:10:31:25 | genericIdentity2 | generic.go:31:10:31:41 | generic function instantiation expression | +| generic.go:31:10:31:41 | After generic function instantiation expression | generic.go:31:43:31:43 | d | +| generic.go:31:10:31:41 | Before generic function instantiation expression | generic.go:31:10:31:25 | genericIdentity2 | +| generic.go:31:10:31:41 | generic function instantiation expression | generic.go:31:10:31:41 | After generic function instantiation expression | +| generic.go:31:10:31:53 | After call to genericIdentity2 | generic.go:31:2:31:53 | extract:0 ... := ... | +| generic.go:31:10:31:53 | Before call to genericIdentity2 | generic.go:31:10:31:41 | Before generic function instantiation expression | +| generic.go:31:10:31:53 | call to genericIdentity2 | generic.go:24:1:35:1 | Exceptional Exit | +| generic.go:31:10:31:53 | call to genericIdentity2 | generic.go:31:10:31:53 | After call to genericIdentity2 | | generic.go:31:43:31:43 | d | generic.go:31:46:31:52 | "hello" | | generic.go:31:46:31:52 | "hello" | generic.go:31:10:31:53 | call to genericIdentity2 | -| generic.go:32:2:32:2 | assignment to g | generic.go:32:2:32:31 | ... := ...[1] | -| generic.go:32:2:32:2 | skip | generic.go:32:5:32:5 | skip | -| generic.go:32:2:32:31 | ... := ...[0] | generic.go:32:2:32:2 | assignment to g | -| generic.go:32:2:32:31 | ... := ...[1] | generic.go:32:5:32:5 | assignment to h | -| generic.go:32:5:32:5 | assignment to h | generic.go:33:2:33:2 | skip | -| generic.go:32:5:32:5 | skip | generic.go:32:10:32:25 | genericIdentity2 | +| generic.go:32:2:32:31 | ... := ... | generic.go:32:10:32:31 | Before call to genericIdentity2 | +| generic.go:32:2:32:31 | After ... := ... | generic.go:33:2:33:6 | ... = ... | +| generic.go:32:2:32:31 | extract:0 ... := ... | generic.go:32:2:32:31 | extract:1 ... := ... | +| generic.go:32:2:32:31 | extract:1 ... := ... | generic.go:32:2:32:31 | After ... := ... | | generic.go:32:10:32:25 | genericIdentity2 | generic.go:32:27:32:27 | e | -| generic.go:32:10:32:31 | call to genericIdentity2 | generic.go:24:1:35:1 | exit | -| generic.go:32:10:32:31 | call to genericIdentity2 | generic.go:32:2:32:31 | ... := ...[0] | +| generic.go:32:10:32:31 | After call to genericIdentity2 | generic.go:32:2:32:31 | extract:0 ... := ... | +| generic.go:32:10:32:31 | Before call to genericIdentity2 | generic.go:32:10:32:25 | genericIdentity2 | +| generic.go:32:10:32:31 | call to genericIdentity2 | generic.go:24:1:35:1 | Exceptional Exit | +| generic.go:32:10:32:31 | call to genericIdentity2 | generic.go:32:10:32:31 | After call to genericIdentity2 | | generic.go:32:27:32:27 | e | generic.go:32:30:32:30 | f | | generic.go:32:30:32:30 | f | generic.go:32:10:32:31 | call to genericIdentity2 | -| generic.go:33:2:33:2 | skip | generic.go:33:6:33:6 | g | -| generic.go:33:6:33:6 | g | generic.go:34:2:34:2 | skip | -| generic.go:34:2:34:2 | skip | generic.go:34:6:34:6 | h | -| generic.go:34:6:34:6 | h | generic.go:24:1:35:1 | exit | -| hello.go:0:0:0:0 | entry | hello.go:3:1:3:12 | skip | -| hello.go:3:1:3:12 | skip | hello.go:5:7:5:13 | skip | -| hello.go:5:7:5:13 | assignment to message | hello.go:7:6:7:13 | skip | -| hello.go:5:7:5:13 | skip | hello.go:5:17:5:31 | "Hello, world!" | -| hello.go:5:17:5:31 | "Hello, world!" | hello.go:5:7:5:13 | assignment to message | -| hello.go:7:1:9:1 | entry | hello.go:8:2:8:12 | selection of Println | -| hello.go:7:1:9:1 | function declaration | hello.go:0:0:0:0 | exit | -| hello.go:7:6:7:13 | skip | hello.go:7:1:9:1 | function declaration | -| hello.go:8:2:8:12 | selection of Println | hello.go:8:14:8:20 | message | -| hello.go:8:2:8:21 | call to Println | hello.go:7:1:9:1 | exit | +| generic.go:33:2:33:6 | ... = ... | generic.go:33:6:33:6 | g | +| generic.go:33:2:33:6 | After ... = ... | generic.go:34:2:34:6 | ... = ... | +| generic.go:33:6:33:6 | g | generic.go:33:2:33:6 | After ... = ... | +| generic.go:34:2:34:6 | ... = ... | generic.go:34:6:34:6 | h | +| generic.go:34:2:34:6 | After ... = ... | generic.go:24:16:35:1 | After block statement | +| generic.go:34:6:34:6 | h | generic.go:34:2:34:6 | After ... = ... | +| hello.go:0:0:0:0 | After hello.go | hello.go:0:0:0:0 | Normal Exit | +| hello.go:0:0:0:0 | Entry | hello.go:0:0:0:0 | hello.go | +| hello.go:0:0:0:0 | Normal Exit | hello.go:0:0:0:0 | Exit | +| hello.go:0:0:0:0 | hello.go | hello.go:3:1:3:12 | import declaration | +| hello.go:3:1:3:12 | import declaration | hello.go:5:1:5:31 | constant declaration | +| hello.go:5:1:5:31 | After constant declaration | hello.go:7:1:9:1 | function declaration | +| hello.go:5:1:5:31 | constant declaration | hello.go:5:7:5:31 | value declaration specifier | +| hello.go:5:7:5:31 | After value declaration specifier | hello.go:5:1:5:31 | After constant declaration | +| hello.go:5:7:5:31 | assign:0 value declaration specifier | hello.go:5:7:5:31 | After value declaration specifier | +| hello.go:5:7:5:31 | value declaration specifier | hello.go:5:17:5:31 | "Hello, world!" | +| hello.go:5:17:5:31 | "Hello, world!" | hello.go:5:7:5:31 | assign:0 value declaration specifier | +| hello.go:7:1:9:1 | Entry | hello.go:7:17:9:1 | block statement | +| hello.go:7:1:9:1 | Exceptional Exit | hello.go:7:1:9:1 | Exit | +| hello.go:7:1:9:1 | Normal Exit | hello.go:7:1:9:1 | Exit | +| hello.go:7:1:9:1 | function declaration | hello.go:0:0:0:0 | After hello.go | +| hello.go:7:17:9:1 | After block statement | hello.go:7:1:9:1 | Normal Exit | +| hello.go:7:17:9:1 | block statement | hello.go:8:2:8:21 | expression statement | +| hello.go:8:2:8:12 | After selection of Println | hello.go:8:14:8:20 | message | +| hello.go:8:2:8:12 | Before selection of Println | hello.go:8:2:8:12 | selection of Println | +| hello.go:8:2:8:12 | selection of Println | hello.go:8:2:8:12 | After selection of Println | +| hello.go:8:2:8:21 | After call to Println | hello.go:8:2:8:21 | After expression statement | +| hello.go:8:2:8:21 | After expression statement | hello.go:7:17:9:1 | After block statement | +| hello.go:8:2:8:21 | Before call to Println | hello.go:8:2:8:12 | Before selection of Println | +| hello.go:8:2:8:21 | call to Println | hello.go:7:1:9:1 | Exceptional Exit | +| hello.go:8:2:8:21 | call to Println | hello.go:8:2:8:21 | After call to Println | +| hello.go:8:2:8:21 | expression statement | hello.go:8:2:8:21 | Before call to Println | | hello.go:8:14:8:20 | message | hello.go:8:2:8:21 | call to Println | -| main.go:0:0:0:0 | entry | main.go:3:1:6:1 | skip | -| main.go:3:1:6:1 | skip | main.go:8:6:8:9 | skip | -| main.go:8:1:10:1 | entry | main.go:9:9:9:20 | selection of Float64 | -| main.go:8:1:10:1 | function declaration | main.go:12:6:12:9 | skip | -| main.go:8:6:8:9 | skip | main.go:8:1:10:1 | function declaration | -| main.go:9:2:9:29 | return statement | main.go:8:1:10:1 | exit | -| main.go:9:9:9:20 | selection of Float64 | main.go:9:9:9:22 | call to Float64 | -| main.go:9:9:9:22 | call to Float64 | main.go:8:1:10:1 | exit | -| main.go:9:9:9:22 | call to Float64 | main.go:9:27:9:29 | 0.5 | -| main.go:9:9:9:29 | ...>=... | main.go:9:2:9:29 | return statement | +| main.go:0:0:0:0 | After main.go | main.go:0:0:0:0 | Normal Exit | +| main.go:0:0:0:0 | Entry | main.go:0:0:0:0 | main.go | +| main.go:0:0:0:0 | Normal Exit | main.go:0:0:0:0 | Exit | +| main.go:0:0:0:0 | main.go | main.go:3:1:6:1 | import declaration | +| main.go:3:1:6:1 | import declaration | main.go:8:1:10:1 | function declaration | +| main.go:8:1:10:1 | Entry | main.go:8:18:10:1 | block statement | +| main.go:8:1:10:1 | Exceptional Exit | main.go:8:1:10:1 | Exit | +| main.go:8:1:10:1 | Normal Exit | main.go:8:1:10:1 | Exit | +| main.go:8:1:10:1 | function declaration | main.go:12:1:24:1 | function declaration | +| main.go:8:18:10:1 | block statement | main.go:9:2:9:29 | Before return statement | +| main.go:9:2:9:29 | Before return statement | main.go:9:9:9:29 | Before ...>=... | +| main.go:9:2:9:29 | return statement | main.go:8:1:10:1 | Normal Exit | +| main.go:9:9:9:20 | After selection of Float64 | main.go:9:9:9:22 | call to Float64 | +| main.go:9:9:9:20 | Before selection of Float64 | main.go:9:9:9:20 | selection of Float64 | +| main.go:9:9:9:20 | selection of Float64 | main.go:9:9:9:20 | After selection of Float64 | +| main.go:9:9:9:22 | After call to Float64 | main.go:9:27:9:29 | 0.5 | +| main.go:9:9:9:22 | Before call to Float64 | main.go:9:9:9:20 | Before selection of Float64 | +| main.go:9:9:9:22 | call to Float64 | main.go:8:1:10:1 | Exceptional Exit | +| main.go:9:9:9:22 | call to Float64 | main.go:9:9:9:22 | After call to Float64 | +| main.go:9:9:9:29 | ...>=... | main.go:9:9:9:29 | After ...>=... | +| main.go:9:9:9:29 | After ...>=... | main.go:9:2:9:29 | return statement | +| main.go:9:9:9:29 | Before ...>=... | main.go:9:9:9:22 | Before call to Float64 | | main.go:9:27:9:29 | 0.5 | main.go:9:9:9:29 | ...>=... | -| main.go:12:1:24:1 | entry | main.go:13:6:13:6 | skip | -| main.go:12:1:24:1 | function declaration | main.go:26:6:26:8 | skip | -| main.go:12:6:12:9 | skip | main.go:12:1:24:1 | function declaration | -| main.go:13:6:13:6 | assignment to x | main.go:14:2:14:2 | skip | -| main.go:13:6:13:6 | skip | main.go:13:6:13:6 | zero value for x | -| main.go:13:6:13:6 | zero value for x | main.go:13:6:13:6 | assignment to x | -| main.go:14:2:14:2 | assignment to y | main.go:15:2:15:10 | selection of Print | -| main.go:14:2:14:2 | skip | main.go:14:7:14:8 | 23 | -| main.go:14:7:14:8 | 23 | main.go:14:2:14:2 | assignment to y | -| main.go:15:2:15:10 | selection of Print | main.go:15:12:15:12 | x | -| main.go:15:2:15:16 | call to Print | main.go:12:1:24:1 | exit | -| main.go:15:2:15:16 | call to Print | main.go:16:5:16:8 | cond | +| main.go:12:1:24:1 | Entry | main.go:12:13:24:1 | block statement | +| main.go:12:1:24:1 | Exceptional Exit | main.go:12:1:24:1 | Exit | +| main.go:12:1:24:1 | Normal Exit | main.go:12:1:24:1 | Exit | +| main.go:12:1:24:1 | function declaration | main.go:26:1:32:1 | function declaration | +| main.go:12:13:24:1 | After block statement | main.go:12:1:24:1 | Normal Exit | +| main.go:12:13:24:1 | block statement | main.go:13:2:13:10 | declaration statement | +| main.go:13:2:13:10 | After declaration statement | main.go:14:2:14:8 | ... := ... | +| main.go:13:2:13:10 | After variable declaration | main.go:13:2:13:10 | After declaration statement | +| main.go:13:2:13:10 | declaration statement | main.go:13:2:13:10 | variable declaration | +| main.go:13:2:13:10 | variable declaration | main.go:13:6:13:10 | value declaration specifier | +| main.go:13:6:13:10 | After value declaration specifier | main.go:13:2:13:10 | After variable declaration | +| main.go:13:6:13:10 | value declaration specifier | main.go:13:6:13:10 | zero-init:0 value declaration specifier | +| main.go:13:6:13:10 | zero-init:0 value declaration specifier | main.go:13:6:13:10 | After value declaration specifier | +| main.go:14:2:14:8 | ... := ... | main.go:14:7:14:8 | 23 | +| main.go:14:2:14:8 | After ... := ... | main.go:15:2:15:16 | expression statement | +| main.go:14:2:14:8 | assign:0 ... := ... | main.go:14:2:14:8 | After ... := ... | +| main.go:14:7:14:8 | 23 | main.go:14:2:14:8 | assign:0 ... := ... | +| main.go:15:2:15:10 | After selection of Print | main.go:15:12:15:12 | x | +| main.go:15:2:15:10 | Before selection of Print | main.go:15:2:15:10 | selection of Print | +| main.go:15:2:15:10 | selection of Print | main.go:15:2:15:10 | After selection of Print | +| main.go:15:2:15:16 | After call to Print | main.go:15:2:15:16 | After expression statement | +| main.go:15:2:15:16 | After expression statement | main.go:16:2:18:2 | if statement | +| main.go:15:2:15:16 | Before call to Print | main.go:15:2:15:10 | Before selection of Print | +| main.go:15:2:15:16 | call to Print | main.go:12:1:24:1 | Exceptional Exit | +| main.go:15:2:15:16 | call to Print | main.go:15:2:15:16 | After call to Print | +| main.go:15:2:15:16 | expression statement | main.go:15:2:15:16 | Before call to Print | | main.go:15:12:15:12 | x | main.go:15:15:15:15 | y | | main.go:15:15:15:15 | y | main.go:15:2:15:16 | call to Print | +| main.go:16:2:18:2 | After if statement | main.go:19:2:19:16 | expression statement | +| main.go:16:2:18:2 | if statement | main.go:16:5:16:10 | Before call to cond | | main.go:16:5:16:8 | cond | main.go:16:5:16:10 | call to cond | -| main.go:16:5:16:10 | call to cond | main.go:12:1:24:1 | exit | -| main.go:16:5:16:10 | call to cond | main.go:16:5:16:10 | call to cond is false | -| main.go:16:5:16:10 | call to cond | main.go:16:5:16:10 | call to cond is true | -| main.go:16:5:16:10 | call to cond is false | main.go:19:2:19:10 | selection of Print | -| main.go:16:5:16:10 | call to cond is true | main.go:17:3:17:3 | y | -| main.go:17:3:17:3 | assignment to y | main.go:19:2:19:10 | selection of Print | +| main.go:16:5:16:10 | After call to cond [false] | main.go:16:2:18:2 | After if statement | +| main.go:16:5:16:10 | After call to cond [true] | main.go:16:12:18:2 | block statement | +| main.go:16:5:16:10 | Before call to cond | main.go:16:5:16:8 | cond | +| main.go:16:5:16:10 | call to cond | main.go:12:1:24:1 | Exceptional Exit | +| main.go:16:5:16:10 | call to cond | main.go:16:5:16:10 | After call to cond [false] | +| main.go:16:5:16:10 | call to cond | main.go:16:5:16:10 | After call to cond [true] | +| main.go:16:12:18:2 | After block statement | main.go:16:2:18:2 | After if statement | +| main.go:16:12:18:2 | block statement | main.go:17:3:17:9 | Before ... += ... | | main.go:17:3:17:3 | y | main.go:17:8:17:9 | 19 | -| main.go:17:3:17:9 | ... += ... | main.go:17:3:17:3 | assignment to y | +| main.go:17:3:17:9 | ... += ... | main.go:17:3:17:9 | After ... += ... | +| main.go:17:3:17:9 | After ... += ... | main.go:16:12:18:2 | After block statement | +| main.go:17:3:17:9 | Before ... += ... | main.go:17:3:17:3 | y | | main.go:17:8:17:9 | 19 | main.go:17:3:17:9 | ... += ... | -| main.go:19:2:19:10 | selection of Print | main.go:19:12:19:12 | x | -| main.go:19:2:19:16 | call to Print | main.go:12:1:24:1 | exit | -| main.go:19:2:19:16 | call to Print | main.go:20:5:20:8 | cond | +| main.go:19:2:19:10 | After selection of Print | main.go:19:12:19:12 | x | +| main.go:19:2:19:10 | Before selection of Print | main.go:19:2:19:10 | selection of Print | +| main.go:19:2:19:10 | selection of Print | main.go:19:2:19:10 | After selection of Print | +| main.go:19:2:19:16 | After call to Print | main.go:19:2:19:16 | After expression statement | +| main.go:19:2:19:16 | After expression statement | main.go:20:2:22:2 | if statement | +| main.go:19:2:19:16 | Before call to Print | main.go:19:2:19:10 | Before selection of Print | +| main.go:19:2:19:16 | call to Print | main.go:12:1:24:1 | Exceptional Exit | +| main.go:19:2:19:16 | call to Print | main.go:19:2:19:16 | After call to Print | +| main.go:19:2:19:16 | expression statement | main.go:19:2:19:16 | Before call to Print | | main.go:19:12:19:12 | x | main.go:19:15:19:15 | y | | main.go:19:15:19:15 | y | main.go:19:2:19:16 | call to Print | +| main.go:20:2:22:2 | After if statement | main.go:23:2:23:16 | expression statement | +| main.go:20:2:22:2 | if statement | main.go:20:5:20:10 | Before call to cond | | main.go:20:5:20:8 | cond | main.go:20:5:20:10 | call to cond | -| main.go:20:5:20:10 | call to cond | main.go:12:1:24:1 | exit | -| main.go:20:5:20:10 | call to cond | main.go:20:5:20:10 | call to cond is false | -| main.go:20:5:20:10 | call to cond | main.go:20:5:20:10 | call to cond is true | -| main.go:20:5:20:10 | call to cond is false | main.go:23:2:23:10 | selection of Print | -| main.go:20:5:20:10 | call to cond is true | main.go:21:3:21:3 | skip | -| main.go:21:3:21:3 | assignment to x | main.go:23:2:23:10 | selection of Print | -| main.go:21:3:21:3 | skip | main.go:21:7:21:7 | y | -| main.go:21:7:21:7 | y | main.go:21:3:21:3 | assignment to x | -| main.go:23:2:23:10 | selection of Print | main.go:23:12:23:12 | x | -| main.go:23:2:23:16 | call to Print | main.go:12:1:24:1 | exit | +| main.go:20:5:20:10 | After call to cond [false] | main.go:20:2:22:2 | After if statement | +| main.go:20:5:20:10 | After call to cond [true] | main.go:20:12:22:2 | block statement | +| main.go:20:5:20:10 | Before call to cond | main.go:20:5:20:8 | cond | +| main.go:20:5:20:10 | call to cond | main.go:12:1:24:1 | Exceptional Exit | +| main.go:20:5:20:10 | call to cond | main.go:20:5:20:10 | After call to cond [false] | +| main.go:20:5:20:10 | call to cond | main.go:20:5:20:10 | After call to cond [true] | +| main.go:20:12:22:2 | After block statement | main.go:20:2:22:2 | After if statement | +| main.go:20:12:22:2 | block statement | main.go:21:3:21:7 | ... = ... | +| main.go:21:3:21:7 | ... = ... | main.go:21:7:21:7 | y | +| main.go:21:3:21:7 | After ... = ... | main.go:20:12:22:2 | After block statement | +| main.go:21:3:21:7 | assign:0 ... = ... | main.go:21:3:21:7 | After ... = ... | +| main.go:21:7:21:7 | y | main.go:21:3:21:7 | assign:0 ... = ... | +| main.go:23:2:23:10 | After selection of Print | main.go:23:12:23:12 | x | +| main.go:23:2:23:10 | Before selection of Print | main.go:23:2:23:10 | selection of Print | +| main.go:23:2:23:10 | selection of Print | main.go:23:2:23:10 | After selection of Print | +| main.go:23:2:23:16 | After call to Print | main.go:23:2:23:16 | After expression statement | +| main.go:23:2:23:16 | After expression statement | main.go:12:13:24:1 | After block statement | +| main.go:23:2:23:16 | Before call to Print | main.go:23:2:23:10 | Before selection of Print | +| main.go:23:2:23:16 | call to Print | main.go:12:1:24:1 | Exceptional Exit | +| main.go:23:2:23:16 | call to Print | main.go:23:2:23:16 | After call to Print | +| main.go:23:2:23:16 | expression statement | main.go:23:2:23:16 | Before call to Print | | main.go:23:12:23:12 | x | main.go:23:15:23:15 | y | | main.go:23:15:23:15 | y | main.go:23:2:23:16 | call to Print | -| main.go:26:1:32:1 | entry | main.go:26:10:26:10 | argument corresponding to x | -| main.go:26:1:32:1 | function declaration | main.go:34:6:34:9 | skip | -| main.go:26:6:26:8 | skip | main.go:26:1:32:1 | function declaration | -| main.go:26:10:26:10 | argument corresponding to x | main.go:26:10:26:10 | initialization of x | -| main.go:26:10:26:10 | initialization of x | main.go:27:2:27:2 | skip | -| main.go:27:2:27:2 | assignment to a | main.go:27:5:27:5 | assignment to b | -| main.go:27:2:27:2 | skip | main.go:27:5:27:5 | skip | -| main.go:27:5:27:5 | assignment to b | main.go:28:5:28:8 | cond | -| main.go:27:5:27:5 | skip | main.go:27:10:27:10 | x | +| main.go:26:1:32:1 | Entry | main.go:26:10:26:10 | x | +| main.go:26:1:32:1 | Exceptional Exit | main.go:26:1:32:1 | Exit | +| main.go:26:1:32:1 | Normal Exit | main.go:26:1:32:1 | Exit | +| main.go:26:1:32:1 | function declaration | main.go:34:1:36:1 | function declaration | +| main.go:26:10:26:10 | x | main.go:26:28:32:1 | block statement | +| main.go:26:28:32:1 | block statement | main.go:27:2:27:13 | ... := ... | +| main.go:27:2:27:13 | ... := ... | main.go:27:10:27:10 | x | +| main.go:27:2:27:13 | After ... := ... | main.go:28:2:30:2 | if statement | +| main.go:27:2:27:13 | assign:0 ... := ... | main.go:27:2:27:13 | assign:1 ... := ... | +| main.go:27:2:27:13 | assign:1 ... := ... | main.go:27:2:27:13 | After ... := ... | | main.go:27:10:27:10 | x | main.go:27:13:27:13 | 0 | -| main.go:27:13:27:13 | 0 | main.go:27:2:27:2 | assignment to a | +| main.go:27:13:27:13 | 0 | main.go:27:2:27:13 | assign:0 ... := ... | +| main.go:28:2:30:2 | After if statement | main.go:31:2:31:12 | Before return statement | +| main.go:28:2:30:2 | if statement | main.go:28:5:28:10 | Before call to cond | | main.go:28:5:28:8 | cond | main.go:28:5:28:10 | call to cond | -| main.go:28:5:28:10 | call to cond | main.go:26:1:32:1 | exit | -| main.go:28:5:28:10 | call to cond | main.go:28:5:28:10 | call to cond is false | -| main.go:28:5:28:10 | call to cond | main.go:28:5:28:10 | call to cond is true | -| main.go:28:5:28:10 | call to cond is false | main.go:31:9:31:9 | a | -| main.go:28:5:28:10 | call to cond is true | main.go:29:3:29:3 | skip | -| main.go:29:3:29:3 | assignment to a | main.go:29:6:29:6 | assignment to b | -| main.go:29:3:29:3 | skip | main.go:29:6:29:6 | skip | -| main.go:29:6:29:6 | assignment to b | main.go:31:9:31:9 | a | -| main.go:29:6:29:6 | skip | main.go:29:10:29:10 | b | +| main.go:28:5:28:10 | After call to cond [false] | main.go:28:2:30:2 | After if statement | +| main.go:28:5:28:10 | After call to cond [true] | main.go:28:12:30:2 | block statement | +| main.go:28:5:28:10 | Before call to cond | main.go:28:5:28:8 | cond | +| main.go:28:5:28:10 | call to cond | main.go:26:1:32:1 | Exceptional Exit | +| main.go:28:5:28:10 | call to cond | main.go:28:5:28:10 | After call to cond [false] | +| main.go:28:5:28:10 | call to cond | main.go:28:5:28:10 | After call to cond [true] | +| main.go:28:12:30:2 | After block statement | main.go:28:2:30:2 | After if statement | +| main.go:28:12:30:2 | block statement | main.go:29:3:29:13 | ... = ... | +| main.go:29:3:29:13 | ... = ... | main.go:29:10:29:10 | b | +| main.go:29:3:29:13 | After ... = ... | main.go:28:12:30:2 | After block statement | +| main.go:29:3:29:13 | assign:0 ... = ... | main.go:29:3:29:13 | assign:1 ... = ... | +| main.go:29:3:29:13 | assign:1 ... = ... | main.go:29:3:29:13 | After ... = ... | | main.go:29:10:29:10 | b | main.go:29:13:29:13 | a | -| main.go:29:13:29:13 | a | main.go:29:3:29:3 | assignment to a | -| main.go:31:2:31:12 | return statement | main.go:26:1:32:1 | exit | +| main.go:29:13:29:13 | a | main.go:29:3:29:13 | assign:0 ... = ... | +| main.go:31:2:31:12 | Before return statement | main.go:31:9:31:9 | a | +| main.go:31:2:31:12 | return statement | main.go:26:1:32:1 | Normal Exit | | main.go:31:9:31:9 | a | main.go:31:12:31:12 | b | | main.go:31:12:31:12 | b | main.go:31:2:31:12 | return statement | -| main.go:34:1:36:1 | entry | main.go:34:11:34:11 | argument corresponding to x | -| main.go:34:1:36:1 | function declaration | main.go:38:6:38:8 | skip | -| main.go:34:6:34:9 | skip | main.go:34:1:36:1 | function declaration | -| main.go:34:11:34:11 | argument corresponding to x | main.go:34:11:34:11 | initialization of x | -| main.go:34:11:34:11 | initialization of x | main.go:35:3:35:3 | x | -| main.go:35:2:35:3 | assignment to star expression | main.go:34:1:36:1 | exit | -| main.go:35:2:35:3 | star expression | main.go:34:1:36:1 | exit | -| main.go:35:2:35:3 | star expression | main.go:35:8:35:9 | 19 | -| main.go:35:2:35:9 | ... += ... | main.go:35:2:35:3 | assignment to star expression | +| main.go:34:1:36:1 | Entry | main.go:34:11:34:11 | x | +| main.go:34:1:36:1 | Normal Exit | main.go:34:1:36:1 | Exit | +| main.go:34:1:36:1 | function declaration | main.go:38:1:45:1 | function declaration | +| main.go:34:11:34:11 | x | main.go:34:19:36:1 | block statement | +| main.go:34:19:36:1 | After block statement | main.go:34:1:36:1 | Normal Exit | +| main.go:34:19:36:1 | block statement | main.go:35:2:35:9 | Before ... += ... | +| main.go:35:2:35:3 | After star expression | main.go:35:8:35:9 | 19 | +| main.go:35:2:35:3 | Before star expression | main.go:35:3:35:3 | x | +| main.go:35:2:35:3 | star expression | main.go:35:2:35:3 | After star expression | +| main.go:35:2:35:9 | ... += ... | main.go:35:2:35:9 | After ... += ... | +| main.go:35:2:35:9 | After ... += ... | main.go:34:19:36:1 | After block statement | +| main.go:35:2:35:9 | Before ... += ... | main.go:35:2:35:3 | Before star expression | | main.go:35:3:35:3 | x | main.go:35:2:35:3 | star expression | | main.go:35:8:35:9 | 19 | main.go:35:2:35:9 | ... += ... | -| main.go:38:1:45:1 | entry | main.go:39:2:39:2 | skip | -| main.go:38:1:45:1 | function declaration | main.go:47:6:47:8 | skip | -| main.go:38:6:38:8 | skip | main.go:38:1:45:1 | function declaration | -| main.go:39:2:39:2 | assignment to x | main.go:40:2:40:4 | skip | -| main.go:39:2:39:2 | skip | main.go:39:7:39:8 | 23 | -| main.go:39:7:39:8 | 23 | main.go:39:2:39:2 | assignment to x | -| main.go:40:2:40:4 | assignment to ptr | main.go:41:5:41:8 | cond | -| main.go:40:2:40:4 | skip | main.go:40:10:40:10 | x | -| main.go:40:9:40:10 | &... | main.go:40:2:40:4 | assignment to ptr | +| main.go:38:1:45:1 | Entry | main.go:38:12:45:1 | block statement | +| main.go:38:1:45:1 | Exceptional Exit | main.go:38:1:45:1 | Exit | +| main.go:38:1:45:1 | Normal Exit | main.go:38:1:45:1 | Exit | +| main.go:38:1:45:1 | function declaration | main.go:47:1:50:1 | function declaration | +| main.go:38:12:45:1 | After block statement | main.go:38:1:45:1 | Normal Exit | +| main.go:38:12:45:1 | block statement | main.go:39:2:39:8 | ... := ... | +| main.go:39:2:39:8 | ... := ... | main.go:39:7:39:8 | 23 | +| main.go:39:2:39:8 | After ... := ... | main.go:40:2:40:10 | ... := ... | +| main.go:39:2:39:8 | assign:0 ... := ... | main.go:39:2:39:8 | After ... := ... | +| main.go:39:7:39:8 | 23 | main.go:39:2:39:8 | assign:0 ... := ... | +| main.go:40:2:40:10 | ... := ... | main.go:40:9:40:10 | Before &... | +| main.go:40:2:40:10 | After ... := ... | main.go:41:2:43:2 | if statement | +| main.go:40:2:40:10 | assign:0 ... := ... | main.go:40:2:40:10 | After ... := ... | +| main.go:40:9:40:10 | &... | main.go:40:9:40:10 | After &... | +| main.go:40:9:40:10 | After &... | main.go:40:2:40:10 | assign:0 ... := ... | +| main.go:40:9:40:10 | Before &... | main.go:40:10:40:10 | x | | main.go:40:10:40:10 | x | main.go:40:9:40:10 | &... | +| main.go:41:2:43:2 | After if statement | main.go:44:2:44:13 | expression statement | +| main.go:41:2:43:2 | if statement | main.go:41:5:41:10 | Before call to cond | | main.go:41:5:41:8 | cond | main.go:41:5:41:10 | call to cond | -| main.go:41:5:41:10 | call to cond | main.go:38:1:45:1 | exit | -| main.go:41:5:41:10 | call to cond | main.go:41:5:41:10 | call to cond is false | -| main.go:41:5:41:10 | call to cond | main.go:41:5:41:10 | call to cond is true | -| main.go:41:5:41:10 | call to cond is false | main.go:44:2:44:10 | selection of Print | -| main.go:41:5:41:10 | call to cond is true | main.go:42:3:42:6 | bump | +| main.go:41:5:41:10 | After call to cond [false] | main.go:41:2:43:2 | After if statement | +| main.go:41:5:41:10 | After call to cond [true] | main.go:41:12:43:2 | block statement | +| main.go:41:5:41:10 | Before call to cond | main.go:41:5:41:8 | cond | +| main.go:41:5:41:10 | call to cond | main.go:38:1:45:1 | Exceptional Exit | +| main.go:41:5:41:10 | call to cond | main.go:41:5:41:10 | After call to cond [false] | +| main.go:41:5:41:10 | call to cond | main.go:41:5:41:10 | After call to cond [true] | +| main.go:41:12:43:2 | After block statement | main.go:41:2:43:2 | After if statement | +| main.go:41:12:43:2 | block statement | main.go:42:3:42:11 | expression statement | | main.go:42:3:42:6 | bump | main.go:42:8:42:10 | ptr | -| main.go:42:3:42:11 | call to bump | main.go:38:1:45:1 | exit | -| main.go:42:3:42:11 | call to bump | main.go:44:2:44:10 | selection of Print | +| main.go:42:3:42:11 | After call to bump | main.go:42:3:42:11 | After expression statement | +| main.go:42:3:42:11 | After expression statement | main.go:41:12:43:2 | After block statement | +| main.go:42:3:42:11 | Before call to bump | main.go:42:3:42:6 | bump | +| main.go:42:3:42:11 | call to bump | main.go:38:1:45:1 | Exceptional Exit | +| main.go:42:3:42:11 | call to bump | main.go:42:3:42:11 | After call to bump | +| main.go:42:3:42:11 | expression statement | main.go:42:3:42:11 | Before call to bump | | main.go:42:8:42:10 | ptr | main.go:42:3:42:11 | call to bump | -| main.go:44:2:44:10 | selection of Print | main.go:44:12:44:12 | x | -| main.go:44:2:44:13 | call to Print | main.go:38:1:45:1 | exit | +| main.go:44:2:44:10 | After selection of Print | main.go:44:12:44:12 | x | +| main.go:44:2:44:10 | Before selection of Print | main.go:44:2:44:10 | selection of Print | +| main.go:44:2:44:10 | selection of Print | main.go:44:2:44:10 | After selection of Print | +| main.go:44:2:44:13 | After call to Print | main.go:44:2:44:13 | After expression statement | +| main.go:44:2:44:13 | After expression statement | main.go:38:12:45:1 | After block statement | +| main.go:44:2:44:13 | Before call to Print | main.go:44:2:44:10 | Before selection of Print | +| main.go:44:2:44:13 | call to Print | main.go:38:1:45:1 | Exceptional Exit | +| main.go:44:2:44:13 | call to Print | main.go:44:2:44:13 | After call to Print | +| main.go:44:2:44:13 | expression statement | main.go:44:2:44:13 | Before call to Print | | main.go:44:12:44:12 | x | main.go:44:2:44:13 | call to Print | -| main.go:47:1:50:1 | entry | main.go:47:13:47:18 | zero value for result | -| main.go:47:1:50:1 | function declaration | main.go:52:6:52:9 | skip | -| main.go:47:6:47:8 | skip | main.go:47:1:50:1 | function declaration | -| main.go:47:13:47:18 | implicit read of result | main.go:47:1:50:1 | exit | -| main.go:47:13:47:18 | initialization of result | main.go:48:2:48:7 | skip | -| main.go:47:13:47:18 | zero value for result | main.go:47:13:47:18 | initialization of result | -| main.go:48:2:48:7 | assignment to result | main.go:49:2:49:7 | return statement | -| main.go:48:2:48:7 | skip | main.go:48:11:48:12 | 42 | -| main.go:48:11:48:12 | 42 | main.go:48:2:48:7 | assignment to result | -| main.go:49:2:49:7 | return statement | main.go:47:13:47:18 | implicit read of result | -| main.go:52:1:54:1 | entry | main.go:52:14:52:19 | zero value for result | -| main.go:52:1:54:1 | function declaration | main.go:56:6:56:9 | skip | -| main.go:52:6:52:9 | skip | main.go:52:1:54:1 | function declaration | -| main.go:52:14:52:19 | implicit read of result | main.go:52:1:54:1 | exit | -| main.go:52:14:52:19 | initialization of result | main.go:53:2:53:7 | return statement | -| main.go:52:14:52:19 | zero value for result | main.go:52:14:52:19 | initialization of result | -| main.go:53:2:53:7 | return statement | main.go:52:14:52:19 | implicit read of result | -| main.go:56:1:64:1 | entry | main.go:56:11:56:18 | argument corresponding to selector | -| main.go:56:1:64:1 | function declaration | main.go:66:6:66:10 | skip | -| main.go:56:6:56:9 | skip | main.go:56:1:64:1 | function declaration | -| main.go:56:11:56:18 | argument corresponding to selector | main.go:56:11:56:18 | initialization of selector | -| main.go:56:11:56:18 | initialization of selector | main.go:56:26:56:31 | zero value for result | -| main.go:56:26:56:31 | implicit read of result | main.go:56:1:64:1 | exit | -| main.go:56:26:56:31 | initialization of result | main.go:57:2:57:7 | skip | -| main.go:56:26:56:31 | zero value for result | main.go:56:26:56:31 | initialization of result | -| main.go:57:2:57:7 | assignment to result | main.go:58:5:58:12 | selector | -| main.go:57:2:57:7 | skip | main.go:57:11:57:11 | 0 | -| main.go:57:11:57:11 | 0 | main.go:57:2:57:7 | assignment to result | +| main.go:47:1:50:1 | Entry | main.go:47:25:50:1 | block statement | +| main.go:47:1:50:1 | Normal Exit | main.go:47:1:50:1 | Exit | +| main.go:47:1:50:1 | function declaration | main.go:52:1:54:1 | function declaration | +| main.go:47:25:50:1 | After block statement | main.go:47:1:50:1 | Normal Exit | +| main.go:47:25:50:1 | block statement | main.go:47:25:50:1 | zero-init:0 block statement | +| main.go:47:25:50:1 | result-read:0 block statement | main.go:47:25:50:1 | After block statement | +| main.go:47:25:50:1 | zero-init:0 block statement | main.go:48:2:48:12 | ... = ... | +| main.go:48:2:48:12 | ... = ... | main.go:48:11:48:12 | 42 | +| main.go:48:2:48:12 | After ... = ... | main.go:49:2:49:7 | Before return statement | +| main.go:48:2:48:12 | assign:0 ... = ... | main.go:48:2:48:12 | After ... = ... | +| main.go:48:11:48:12 | 42 | main.go:48:2:48:12 | assign:0 ... = ... | +| main.go:49:2:49:7 | Before return statement | main.go:49:2:49:7 | return statement | +| main.go:49:2:49:7 | return statement | main.go:47:25:50:1 | result-read:0 block statement | +| main.go:52:1:54:1 | Entry | main.go:52:26:54:1 | block statement | +| main.go:52:1:54:1 | Normal Exit | main.go:52:1:54:1 | Exit | +| main.go:52:1:54:1 | function declaration | main.go:56:1:64:1 | function declaration | +| main.go:52:26:54:1 | After block statement | main.go:52:1:54:1 | Normal Exit | +| main.go:52:26:54:1 | block statement | main.go:52:26:54:1 | zero-init:0 block statement | +| main.go:52:26:54:1 | result-read:0 block statement | main.go:52:26:54:1 | After block statement | +| main.go:52:26:54:1 | zero-init:0 block statement | main.go:53:2:53:7 | Before return statement | +| main.go:53:2:53:7 | Before return statement | main.go:53:2:53:7 | return statement | +| main.go:53:2:53:7 | return statement | main.go:52:26:54:1 | result-read:0 block statement | +| main.go:56:1:64:1 | Entry | main.go:56:11:56:18 | selector | +| main.go:56:1:64:1 | Normal Exit | main.go:56:1:64:1 | Exit | +| main.go:56:1:64:1 | function declaration | main.go:66:1:90:1 | function declaration | +| main.go:56:11:56:18 | selector | main.go:56:38:64:1 | block statement | +| main.go:56:38:64:1 | After block statement | main.go:56:1:64:1 | Normal Exit | +| main.go:56:38:64:1 | block statement | main.go:56:38:64:1 | zero-init:0 block statement | +| main.go:56:38:64:1 | result-read:0 block statement | main.go:56:38:64:1 | After block statement | +| main.go:56:38:64:1 | zero-init:0 block statement | main.go:57:2:57:11 | ... = ... | +| main.go:57:2:57:11 | ... = ... | main.go:57:11:57:11 | 0 | +| main.go:57:2:57:11 | After ... = ... | main.go:58:2:62:2 | if statement | +| main.go:57:2:57:11 | assign:0 ... = ... | main.go:57:2:57:11 | After ... = ... | +| main.go:57:11:57:11 | 0 | main.go:57:2:57:11 | assign:0 ... = ... | +| main.go:58:2:62:2 | After if statement | main.go:63:2:63:7 | Before return statement | +| main.go:58:2:62:2 | if statement | main.go:58:5:58:17 | Before ...==... | | main.go:58:5:58:12 | selector | main.go:58:17:58:17 | 1 | -| main.go:58:5:58:17 | ...==... | main.go:58:5:58:17 | ...==... is false | -| main.go:58:5:58:17 | ...==... | main.go:58:5:58:17 | ...==... is true | -| main.go:58:5:58:17 | ...==... is false | main.go:61:3:61:8 | skip | -| main.go:58:5:58:17 | ...==... is true | main.go:59:10:59:10 | 1 | +| main.go:58:5:58:17 | ...==... | main.go:58:5:58:17 | After ...==... [false] | +| main.go:58:5:58:17 | ...==... | main.go:58:5:58:17 | After ...==... [true] | +| main.go:58:5:58:17 | After ...==... [false] | main.go:60:9:62:2 | block statement | +| main.go:58:5:58:17 | After ...==... [true] | main.go:58:19:60:2 | block statement | +| main.go:58:5:58:17 | Before ...==... | main.go:58:5:58:12 | selector | | main.go:58:17:58:17 | 1 | main.go:58:5:58:17 | ...==... | -| main.go:59:3:59:10 | return statement | main.go:56:26:56:31 | implicit read of result | -| main.go:59:10:59:10 | 1 | main.go:59:10:59:10 | implicit write of result | -| main.go:59:10:59:10 | implicit write of result | main.go:59:3:59:10 | return statement | -| main.go:61:3:61:8 | assignment to result | main.go:63:2:63:7 | return statement | -| main.go:61:3:61:8 | skip | main.go:61:12:61:12 | 2 | -| main.go:61:12:61:12 | 2 | main.go:61:3:61:8 | assignment to result | -| main.go:63:2:63:7 | return statement | main.go:56:26:56:31 | implicit read of result | -| main.go:66:1:90:1 | entry | main.go:67:6:67:6 | skip | -| main.go:66:1:90:1 | function declaration | main.go:92:6:92:13 | skip | -| main.go:66:6:66:10 | skip | main.go:66:1:90:1 | function declaration | -| main.go:67:6:67:6 | assignment to x | main.go:68:6:68:9 | cond | -| main.go:67:6:67:6 | skip | main.go:67:6:67:6 | zero value for x | -| main.go:67:6:67:6 | zero value for x | main.go:67:6:67:6 | assignment to x | +| main.go:58:19:60:2 | block statement | main.go:59:3:59:10 | Before return statement | +| main.go:59:3:59:10 | Before return statement | main.go:59:10:59:10 | 1 | +| main.go:59:3:59:10 | result-write:0 return statement | main.go:59:3:59:10 | return statement | +| main.go:59:3:59:10 | return statement | main.go:56:38:64:1 | result-read:0 block statement | +| main.go:59:10:59:10 | 1 | main.go:59:3:59:10 | result-write:0 return statement | +| main.go:60:9:62:2 | After block statement | main.go:58:2:62:2 | After if statement | +| main.go:60:9:62:2 | block statement | main.go:61:3:61:12 | ... = ... | +| main.go:61:3:61:12 | ... = ... | main.go:61:12:61:12 | 2 | +| main.go:61:3:61:12 | After ... = ... | main.go:60:9:62:2 | After block statement | +| main.go:61:3:61:12 | assign:0 ... = ... | main.go:61:3:61:12 | After ... = ... | +| main.go:61:12:61:12 | 2 | main.go:61:3:61:12 | assign:0 ... = ... | +| main.go:63:2:63:7 | Before return statement | main.go:63:2:63:7 | return statement | +| main.go:63:2:63:7 | return statement | main.go:56:38:64:1 | result-read:0 block statement | +| main.go:66:1:90:1 | Entry | main.go:66:14:90:1 | block statement | +| main.go:66:1:90:1 | Exceptional Exit | main.go:66:1:90:1 | Exit | +| main.go:66:1:90:1 | Normal Exit | main.go:66:1:90:1 | Exit | +| main.go:66:1:90:1 | function declaration | main.go:92:1:96:1 | function declaration | +| main.go:66:14:90:1 | After block statement | main.go:66:1:90:1 | Normal Exit | +| main.go:66:14:90:1 | block statement | main.go:67:2:67:10 | declaration statement | +| main.go:67:2:67:10 | After declaration statement | main.go:68:2:70:2 | for statement | +| main.go:67:2:67:10 | After variable declaration | main.go:67:2:67:10 | After declaration statement | +| main.go:67:2:67:10 | declaration statement | main.go:67:2:67:10 | variable declaration | +| main.go:67:2:67:10 | variable declaration | main.go:67:6:67:10 | value declaration specifier | +| main.go:67:6:67:10 | After value declaration specifier | main.go:67:2:67:10 | After variable declaration | +| main.go:67:6:67:10 | value declaration specifier | main.go:67:6:67:10 | zero-init:0 value declaration specifier | +| main.go:67:6:67:10 | zero-init:0 value declaration specifier | main.go:67:6:67:10 | After value declaration specifier | +| main.go:68:2:70:2 | After for statement | main.go:71:2:71:13 | expression statement | +| main.go:68:2:70:2 | [LoopHeader] for statement | main.go:68:6:68:11 | Before call to cond | +| main.go:68:2:70:2 | for statement | main.go:68:6:68:11 | Before call to cond | | main.go:68:6:68:9 | cond | main.go:68:6:68:11 | call to cond | -| main.go:68:6:68:11 | call to cond | main.go:66:1:90:1 | exit | -| main.go:68:6:68:11 | call to cond | main.go:68:6:68:11 | call to cond is false | -| main.go:68:6:68:11 | call to cond | main.go:68:6:68:11 | call to cond is true | -| main.go:68:6:68:11 | call to cond is false | main.go:71:2:71:10 | selection of Print | -| main.go:68:6:68:11 | call to cond is true | main.go:69:3:69:3 | skip | -| main.go:69:3:69:3 | assignment to x | main.go:68:6:68:9 | cond | -| main.go:69:3:69:3 | skip | main.go:69:7:69:7 | 2 | -| main.go:69:7:69:7 | 2 | main.go:69:3:69:3 | assignment to x | -| main.go:71:2:71:10 | selection of Print | main.go:71:12:71:12 | x | -| main.go:71:2:71:13 | call to Print | main.go:66:1:90:1 | exit | -| main.go:71:2:71:13 | call to Print | main.go:73:2:73:2 | skip | +| main.go:68:6:68:11 | After call to cond [false] | main.go:68:2:70:2 | After for statement | +| main.go:68:6:68:11 | After call to cond [true] | main.go:68:13:70:2 | block statement | +| main.go:68:6:68:11 | Before call to cond | main.go:68:6:68:9 | cond | +| main.go:68:6:68:11 | call to cond | main.go:66:1:90:1 | Exceptional Exit | +| main.go:68:6:68:11 | call to cond | main.go:68:6:68:11 | After call to cond [false] | +| main.go:68:6:68:11 | call to cond | main.go:68:6:68:11 | After call to cond [true] | +| main.go:68:13:70:2 | After block statement | main.go:68:2:70:2 | [LoopHeader] for statement | +| main.go:68:13:70:2 | block statement | main.go:69:3:69:7 | ... = ... | +| main.go:69:3:69:7 | ... = ... | main.go:69:7:69:7 | 2 | +| main.go:69:3:69:7 | After ... = ... | main.go:68:13:70:2 | After block statement | +| main.go:69:3:69:7 | assign:0 ... = ... | main.go:69:3:69:7 | After ... = ... | +| main.go:69:7:69:7 | 2 | main.go:69:3:69:7 | assign:0 ... = ... | +| main.go:71:2:71:10 | After selection of Print | main.go:71:12:71:12 | x | +| main.go:71:2:71:10 | Before selection of Print | main.go:71:2:71:10 | selection of Print | +| main.go:71:2:71:10 | selection of Print | main.go:71:2:71:10 | After selection of Print | +| main.go:71:2:71:13 | After call to Print | main.go:71:2:71:13 | After expression statement | +| main.go:71:2:71:13 | After expression statement | main.go:73:2:73:7 | ... := ... | +| main.go:71:2:71:13 | Before call to Print | main.go:71:2:71:10 | Before selection of Print | +| main.go:71:2:71:13 | call to Print | main.go:66:1:90:1 | Exceptional Exit | +| main.go:71:2:71:13 | call to Print | main.go:71:2:71:13 | After call to Print | +| main.go:71:2:71:13 | expression statement | main.go:71:2:71:13 | Before call to Print | | main.go:71:12:71:12 | x | main.go:71:2:71:13 | call to Print | -| main.go:73:2:73:2 | assignment to y | main.go:74:6:74:6 | skip | -| main.go:73:2:73:2 | skip | main.go:73:7:73:7 | 1 | -| main.go:73:7:73:7 | 1 | main.go:73:2:73:2 | assignment to y | -| main.go:74:6:74:6 | assignment to i | main.go:75:6:75:9 | cond | -| main.go:74:6:74:6 | skip | main.go:74:11:74:11 | 0 | -| main.go:74:11:74:11 | 0 | main.go:74:6:74:6 | assignment to i | -| main.go:74:16:74:16 | i | main.go:74:16:74:18 | 1 | -| main.go:74:16:74:18 | 1 | main.go:74:16:74:18 | rhs of increment statement | -| main.go:74:16:74:18 | increment statement | main.go:75:6:75:9 | cond | -| main.go:74:16:74:18 | rhs of increment statement | main.go:74:16:74:18 | increment statement | +| main.go:73:2:73:7 | ... := ... | main.go:73:7:73:7 | 1 | +| main.go:73:2:73:7 | After ... := ... | main.go:74:2:79:2 | for statement | +| main.go:73:2:73:7 | assign:0 ... := ... | main.go:73:2:73:7 | After ... := ... | +| main.go:73:7:73:7 | 1 | main.go:73:2:73:7 | assign:0 ... := ... | +| main.go:74:2:79:2 | After for statement | main.go:80:2:80:13 | expression statement | +| main.go:74:2:79:2 | [LoopHeader] for statement | main.go:74:16:74:18 | Before increment statement | +| main.go:74:2:79:2 | for statement | main.go:74:6:74:11 | ... := ... | +| main.go:74:6:74:11 | ... := ... | main.go:74:11:74:11 | 0 | +| main.go:74:6:74:11 | After ... := ... | main.go:74:20:79:2 | block statement | +| main.go:74:6:74:11 | assign:0 ... := ... | main.go:74:6:74:11 | After ... := ... | +| main.go:74:11:74:11 | 0 | main.go:74:6:74:11 | assign:0 ... := ... | +| main.go:74:16:74:16 | i | main.go:74:16:74:18 | increment statement | +| main.go:74:16:74:18 | After increment statement | main.go:74:20:79:2 | block statement | +| main.go:74:16:74:18 | Before increment statement | main.go:74:16:74:16 | i | +| main.go:74:16:74:18 | increment statement | main.go:74:16:74:18 | After increment statement | +| main.go:74:20:79:2 | After block statement | main.go:74:2:79:2 | [LoopHeader] for statement | +| main.go:74:20:79:2 | block statement | main.go:75:3:77:3 | if statement | +| main.go:75:3:77:3 | After if statement | main.go:78:3:78:7 | ... = ... | +| main.go:75:3:77:3 | if statement | main.go:75:6:75:11 | Before call to cond | | main.go:75:6:75:9 | cond | main.go:75:6:75:11 | call to cond | -| main.go:75:6:75:11 | call to cond | main.go:66:1:90:1 | exit | -| main.go:75:6:75:11 | call to cond | main.go:75:6:75:11 | call to cond is false | -| main.go:75:6:75:11 | call to cond | main.go:75:6:75:11 | call to cond is true | -| main.go:75:6:75:11 | call to cond is false | main.go:78:3:78:3 | skip | -| main.go:75:6:75:11 | call to cond is true | main.go:76:4:76:8 | skip | -| main.go:76:4:76:8 | skip | main.go:80:2:80:10 | selection of Print | -| main.go:78:3:78:3 | assignment to y | main.go:74:16:74:16 | i | -| main.go:78:3:78:3 | skip | main.go:78:7:78:7 | 2 | -| main.go:78:7:78:7 | 2 | main.go:78:3:78:3 | assignment to y | -| main.go:80:2:80:10 | selection of Print | main.go:80:12:80:12 | y | -| main.go:80:2:80:13 | call to Print | main.go:66:1:90:1 | exit | -| main.go:80:2:80:13 | call to Print | main.go:82:2:82:2 | skip | +| main.go:75:6:75:11 | After call to cond [false] | main.go:75:3:77:3 | After if statement | +| main.go:75:6:75:11 | After call to cond [true] | main.go:75:13:77:3 | block statement | +| main.go:75:6:75:11 | Before call to cond | main.go:75:6:75:9 | cond | +| main.go:75:6:75:11 | call to cond | main.go:66:1:90:1 | Exceptional Exit | +| main.go:75:6:75:11 | call to cond | main.go:75:6:75:11 | After call to cond [false] | +| main.go:75:6:75:11 | call to cond | main.go:75:6:75:11 | After call to cond [true] | +| main.go:75:13:77:3 | block statement | main.go:76:4:76:8 | Before break statement | +| main.go:76:4:76:8 | Before break statement | main.go:76:4:76:8 | break statement | +| main.go:76:4:76:8 | break statement | main.go:74:2:79:2 | After for statement | +| main.go:78:3:78:7 | ... = ... | main.go:78:7:78:7 | 2 | +| main.go:78:3:78:7 | After ... = ... | main.go:74:20:79:2 | After block statement | +| main.go:78:3:78:7 | assign:0 ... = ... | main.go:78:3:78:7 | After ... = ... | +| main.go:78:7:78:7 | 2 | main.go:78:3:78:7 | assign:0 ... = ... | +| main.go:80:2:80:10 | After selection of Print | main.go:80:12:80:12 | y | +| main.go:80:2:80:10 | Before selection of Print | main.go:80:2:80:10 | selection of Print | +| main.go:80:2:80:10 | selection of Print | main.go:80:2:80:10 | After selection of Print | +| main.go:80:2:80:13 | After call to Print | main.go:80:2:80:13 | After expression statement | +| main.go:80:2:80:13 | After expression statement | main.go:82:2:82:7 | ... := ... | +| main.go:80:2:80:13 | Before call to Print | main.go:80:2:80:10 | Before selection of Print | +| main.go:80:2:80:13 | call to Print | main.go:66:1:90:1 | Exceptional Exit | +| main.go:80:2:80:13 | call to Print | main.go:80:2:80:13 | After call to Print | +| main.go:80:2:80:13 | expression statement | main.go:80:2:80:13 | Before call to Print | | main.go:80:12:80:12 | y | main.go:80:2:80:13 | call to Print | -| main.go:82:2:82:2 | assignment to z | main.go:83:6:83:6 | skip | -| main.go:82:2:82:2 | skip | main.go:82:7:82:7 | 1 | -| main.go:82:7:82:7 | 1 | main.go:82:2:82:2 | assignment to z | -| main.go:83:6:83:6 | assignment to i | main.go:84:3:84:3 | skip | -| main.go:83:6:83:6 | skip | main.go:83:11:83:11 | 0 | -| main.go:83:11:83:11 | 0 | main.go:83:6:83:6 | assignment to i | -| main.go:83:16:83:16 | i | main.go:83:16:83:18 | 1 | -| main.go:83:16:83:18 | 1 | main.go:83:16:83:18 | rhs of increment statement | -| main.go:83:16:83:18 | increment statement | main.go:84:3:84:3 | skip | -| main.go:83:16:83:18 | rhs of increment statement | main.go:83:16:83:18 | increment statement | -| main.go:84:3:84:3 | assignment to z | main.go:85:6:85:9 | cond | -| main.go:84:3:84:3 | skip | main.go:84:7:84:7 | 2 | -| main.go:84:7:84:7 | 2 | main.go:84:3:84:3 | assignment to z | +| main.go:82:2:82:7 | ... := ... | main.go:82:7:82:7 | 1 | +| main.go:82:2:82:7 | After ... := ... | main.go:83:2:88:2 | for statement | +| main.go:82:2:82:7 | assign:0 ... := ... | main.go:82:2:82:7 | After ... := ... | +| main.go:82:7:82:7 | 1 | main.go:82:2:82:7 | assign:0 ... := ... | +| main.go:83:2:88:2 | After for statement | main.go:89:2:89:13 | expression statement | +| main.go:83:2:88:2 | [LoopHeader] for statement | main.go:83:16:83:18 | Before increment statement | +| main.go:83:2:88:2 | for statement | main.go:83:6:83:11 | ... := ... | +| main.go:83:6:83:11 | ... := ... | main.go:83:11:83:11 | 0 | +| main.go:83:6:83:11 | After ... := ... | main.go:83:20:88:2 | block statement | +| main.go:83:6:83:11 | assign:0 ... := ... | main.go:83:6:83:11 | After ... := ... | +| main.go:83:11:83:11 | 0 | main.go:83:6:83:11 | assign:0 ... := ... | +| main.go:83:16:83:16 | i | main.go:83:16:83:18 | increment statement | +| main.go:83:16:83:18 | After increment statement | main.go:83:20:88:2 | block statement | +| main.go:83:16:83:18 | Before increment statement | main.go:83:16:83:16 | i | +| main.go:83:16:83:18 | increment statement | main.go:83:16:83:18 | After increment statement | +| main.go:83:20:88:2 | After block statement | main.go:83:2:88:2 | [LoopHeader] for statement | +| main.go:83:20:88:2 | block statement | main.go:84:3:84:7 | ... = ... | +| main.go:84:3:84:7 | ... = ... | main.go:84:7:84:7 | 2 | +| main.go:84:3:84:7 | After ... = ... | main.go:85:3:87:3 | if statement | +| main.go:84:3:84:7 | assign:0 ... = ... | main.go:84:3:84:7 | After ... = ... | +| main.go:84:7:84:7 | 2 | main.go:84:3:84:7 | assign:0 ... = ... | +| main.go:85:3:87:3 | After if statement | main.go:83:20:88:2 | After block statement | +| main.go:85:3:87:3 | if statement | main.go:85:6:85:11 | Before call to cond | | main.go:85:6:85:9 | cond | main.go:85:6:85:11 | call to cond | -| main.go:85:6:85:11 | call to cond | main.go:66:1:90:1 | exit | -| main.go:85:6:85:11 | call to cond | main.go:85:6:85:11 | call to cond is false | -| main.go:85:6:85:11 | call to cond | main.go:85:6:85:11 | call to cond is true | -| main.go:85:6:85:11 | call to cond is false | main.go:83:16:83:16 | i | -| main.go:85:6:85:11 | call to cond is true | main.go:86:4:86:8 | skip | -| main.go:86:4:86:8 | skip | main.go:89:2:89:10 | selection of Print | -| main.go:89:2:89:10 | selection of Print | main.go:89:12:89:12 | z | -| main.go:89:2:89:13 | call to Print | main.go:66:1:90:1 | exit | +| main.go:85:6:85:11 | After call to cond [false] | main.go:85:3:87:3 | After if statement | +| main.go:85:6:85:11 | After call to cond [true] | main.go:85:13:87:3 | block statement | +| main.go:85:6:85:11 | Before call to cond | main.go:85:6:85:9 | cond | +| main.go:85:6:85:11 | call to cond | main.go:66:1:90:1 | Exceptional Exit | +| main.go:85:6:85:11 | call to cond | main.go:85:6:85:11 | After call to cond [false] | +| main.go:85:6:85:11 | call to cond | main.go:85:6:85:11 | After call to cond [true] | +| main.go:85:13:87:3 | block statement | main.go:86:4:86:8 | Before break statement | +| main.go:86:4:86:8 | Before break statement | main.go:86:4:86:8 | break statement | +| main.go:86:4:86:8 | break statement | main.go:83:2:88:2 | After for statement | +| main.go:89:2:89:10 | After selection of Print | main.go:89:12:89:12 | z | +| main.go:89:2:89:10 | Before selection of Print | main.go:89:2:89:10 | selection of Print | +| main.go:89:2:89:10 | selection of Print | main.go:89:2:89:10 | After selection of Print | +| main.go:89:2:89:13 | After call to Print | main.go:89:2:89:13 | After expression statement | +| main.go:89:2:89:13 | After expression statement | main.go:66:14:90:1 | After block statement | +| main.go:89:2:89:13 | Before call to Print | main.go:89:2:89:10 | Before selection of Print | +| main.go:89:2:89:13 | call to Print | main.go:66:1:90:1 | Exceptional Exit | +| main.go:89:2:89:13 | call to Print | main.go:89:2:89:13 | After call to Print | +| main.go:89:2:89:13 | expression statement | main.go:89:2:89:13 | Before call to Print | | main.go:89:12:89:12 | z | main.go:89:2:89:13 | call to Print | -| main.go:92:1:96:1 | entry | main.go:92:18:92:18 | zero value for a | -| main.go:92:1:96:1 | function declaration | main.go:98:6:98:23 | skip | -| main.go:92:6:92:13 | skip | main.go:92:1:96:1 | function declaration | -| main.go:92:18:92:18 | implicit read of a | main.go:92:25:92:25 | implicit read of b | -| main.go:92:18:92:18 | initialization of a | main.go:92:25:92:25 | zero value for b | -| main.go:92:18:92:18 | zero value for a | main.go:92:18:92:18 | initialization of a | -| main.go:92:25:92:25 | implicit read of b | main.go:92:1:96:1 | exit | -| main.go:92:25:92:25 | initialization of b | main.go:93:2:93:2 | skip | -| main.go:92:25:92:25 | zero value for b | main.go:92:25:92:25 | initialization of b | -| main.go:93:2:93:2 | assignment to x | main.go:94:2:94:2 | skip | -| main.go:93:2:93:2 | skip | main.go:93:7:93:8 | 23 | -| main.go:93:7:93:8 | 23 | main.go:93:2:93:2 | assignment to x | -| main.go:94:2:94:2 | assignment to x | main.go:94:5:94:5 | assignment to a | -| main.go:94:2:94:2 | skip | main.go:94:5:94:5 | skip | -| main.go:94:5:94:5 | assignment to a | main.go:95:2:95:7 | return statement | -| main.go:94:5:94:5 | skip | main.go:94:9:94:9 | x | +| main.go:92:1:96:1 | Entry | main.go:92:36:96:1 | block statement | +| main.go:92:1:96:1 | Normal Exit | main.go:92:1:96:1 | Exit | +| main.go:92:1:96:1 | function declaration | main.go:98:1:106:1 | function declaration | +| main.go:92:36:96:1 | After block statement | main.go:92:1:96:1 | Normal Exit | +| main.go:92:36:96:1 | block statement | main.go:92:36:96:1 | zero-init:0 block statement | +| main.go:92:36:96:1 | result-read:0 block statement | main.go:92:36:96:1 | result-read:1 block statement | +| main.go:92:36:96:1 | result-read:1 block statement | main.go:92:36:96:1 | After block statement | +| main.go:92:36:96:1 | zero-init:0 block statement | main.go:92:36:96:1 | zero-init:1 block statement | +| main.go:92:36:96:1 | zero-init:1 block statement | main.go:93:2:93:8 | ... := ... | +| main.go:93:2:93:8 | ... := ... | main.go:93:7:93:8 | 23 | +| main.go:93:2:93:8 | After ... := ... | main.go:94:2:94:15 | ... = ... | +| main.go:93:2:93:8 | assign:0 ... := ... | main.go:93:2:93:8 | After ... := ... | +| main.go:93:7:93:8 | 23 | main.go:93:2:93:8 | assign:0 ... := ... | +| main.go:94:2:94:15 | ... = ... | main.go:94:9:94:12 | Before ...+... | +| main.go:94:2:94:15 | After ... = ... | main.go:95:2:95:7 | Before return statement | +| main.go:94:2:94:15 | assign:0 ... = ... | main.go:94:2:94:15 | assign:1 ... = ... | +| main.go:94:2:94:15 | assign:1 ... = ... | main.go:94:2:94:15 | After ... = ... | | main.go:94:9:94:9 | x | main.go:94:11:94:12 | 19 | -| main.go:94:9:94:12 | ...+... | main.go:94:15:94:15 | x | +| main.go:94:9:94:12 | ...+... | main.go:94:9:94:12 | After ...+... | +| main.go:94:9:94:12 | After ...+... | main.go:94:15:94:15 | x | +| main.go:94:9:94:12 | Before ...+... | main.go:94:9:94:9 | x | | main.go:94:11:94:12 | 19 | main.go:94:9:94:12 | ...+... | -| main.go:94:15:94:15 | x | main.go:94:2:94:2 | assignment to x | -| main.go:95:2:95:7 | return statement | main.go:92:18:92:18 | implicit read of a | -| main.go:98:1:106:1 | entry | main.go:98:25:98:25 | argument corresponding to x | -| main.go:98:1:106:1 | function declaration | main.go:0:0:0:0 | exit | -| main.go:98:6:98:23 | skip | main.go:98:1:106:1 | function declaration | -| main.go:98:25:98:25 | argument corresponding to x | main.go:98:25:98:25 | initialization of x | -| main.go:98:25:98:25 | initialization of x | main.go:99:2:99:2 | skip | -| main.go:99:2:99:2 | assignment to a | main.go:99:5:99:5 | assignment to b | -| main.go:99:2:99:2 | skip | main.go:99:5:99:5 | skip | -| main.go:99:5:99:5 | assignment to b | main.go:100:5:100:8 | cond | -| main.go:99:5:99:5 | skip | main.go:99:10:99:10 | x | +| main.go:94:15:94:15 | x | main.go:94:2:94:15 | assign:0 ... = ... | +| main.go:95:2:95:7 | Before return statement | main.go:95:2:95:7 | return statement | +| main.go:95:2:95:7 | return statement | main.go:92:36:96:1 | result-read:0 block statement | +| main.go:98:1:106:1 | Entry | main.go:98:25:98:25 | x | +| main.go:98:1:106:1 | Exceptional Exit | main.go:98:1:106:1 | Exit | +| main.go:98:1:106:1 | Normal Exit | main.go:98:1:106:1 | Exit | +| main.go:98:1:106:1 | function declaration | main.go:0:0:0:0 | After main.go | +| main.go:98:25:98:25 | x | main.go:98:43:106:1 | block statement | +| main.go:98:43:106:1 | block statement | main.go:99:2:99:13 | ... := ... | +| main.go:99:2:99:13 | ... := ... | main.go:99:10:99:10 | x | +| main.go:99:2:99:13 | After ... := ... | main.go:100:2:104:2 | if statement | +| main.go:99:2:99:13 | assign:0 ... := ... | main.go:99:2:99:13 | assign:1 ... := ... | +| main.go:99:2:99:13 | assign:1 ... := ... | main.go:99:2:99:13 | After ... := ... | | main.go:99:10:99:10 | x | main.go:99:13:99:13 | 0 | -| main.go:99:13:99:13 | 0 | main.go:99:2:99:2 | assignment to a | +| main.go:99:13:99:13 | 0 | main.go:99:2:99:13 | assign:0 ... := ... | +| main.go:100:2:104:2 | After if statement | main.go:105:2:105:12 | Before return statement | +| main.go:100:2:104:2 | if statement | main.go:100:5:100:10 | Before call to cond | | main.go:100:5:100:8 | cond | main.go:100:5:100:10 | call to cond | -| main.go:100:5:100:10 | call to cond | main.go:98:1:106:1 | exit | -| main.go:100:5:100:10 | call to cond | main.go:100:5:100:10 | call to cond is false | -| main.go:100:5:100:10 | call to cond | main.go:100:5:100:10 | call to cond is true | -| main.go:100:5:100:10 | call to cond is false | main.go:103:3:103:3 | skip | -| main.go:100:5:100:10 | call to cond is true | main.go:101:3:101:3 | skip | -| main.go:101:3:101:3 | assignment to a | main.go:105:9:105:9 | a | -| main.go:101:3:101:3 | skip | main.go:101:6:101:6 | skip | -| main.go:101:6:101:6 | skip | main.go:101:10:101:10 | b | +| main.go:100:5:100:10 | After call to cond [false] | main.go:102:9:104:2 | block statement | +| main.go:100:5:100:10 | After call to cond [true] | main.go:100:12:102:2 | block statement | +| main.go:100:5:100:10 | Before call to cond | main.go:100:5:100:8 | cond | +| main.go:100:5:100:10 | call to cond | main.go:98:1:106:1 | Exceptional Exit | +| main.go:100:5:100:10 | call to cond | main.go:100:5:100:10 | After call to cond [false] | +| main.go:100:5:100:10 | call to cond | main.go:100:5:100:10 | After call to cond [true] | +| main.go:100:12:102:2 | After block statement | main.go:100:2:104:2 | After if statement | +| main.go:100:12:102:2 | block statement | main.go:101:3:101:13 | ... = ... | +| main.go:101:3:101:13 | ... = ... | main.go:101:10:101:10 | b | +| main.go:101:3:101:13 | After ... = ... | main.go:100:12:102:2 | After block statement | +| main.go:101:3:101:13 | assign:0 ... = ... | main.go:101:3:101:13 | After ... = ... | | main.go:101:10:101:10 | b | main.go:101:13:101:13 | a | -| main.go:101:13:101:13 | a | main.go:101:3:101:3 | assignment to a | -| main.go:103:3:103:3 | skip | main.go:103:6:103:6 | skip | -| main.go:103:6:103:6 | assignment to b | main.go:105:9:105:9 | a | -| main.go:103:6:103:6 | skip | main.go:103:10:103:10 | b | +| main.go:101:13:101:13 | a | main.go:101:3:101:13 | assign:0 ... = ... | +| main.go:102:9:104:2 | After block statement | main.go:100:2:104:2 | After if statement | +| main.go:102:9:104:2 | block statement | main.go:103:3:103:13 | ... = ... | +| main.go:103:3:103:13 | ... = ... | main.go:103:10:103:10 | b | +| main.go:103:3:103:13 | After ... = ... | main.go:102:9:104:2 | After block statement | +| main.go:103:3:103:13 | assign:1 ... = ... | main.go:103:3:103:13 | After ... = ... | | main.go:103:10:103:10 | b | main.go:103:13:103:13 | a | -| main.go:103:13:103:13 | a | main.go:103:6:103:6 | assignment to b | -| main.go:105:2:105:12 | return statement | main.go:98:1:106:1 | exit | +| main.go:103:13:103:13 | a | main.go:103:3:103:13 | assign:1 ... = ... | +| main.go:105:2:105:12 | Before return statement | main.go:105:9:105:9 | a | +| main.go:105:2:105:12 | return statement | main.go:98:1:106:1 | Normal Exit | | main.go:105:9:105:9 | a | main.go:105:12:105:12 | b | | main.go:105:12:105:12 | b | main.go:105:2:105:12 | return statement | -| noretfunctions.go:0:0:0:0 | entry | noretfunctions.go:3:1:6:1 | skip | -| noretfunctions.go:3:1:6:1 | skip | noretfunctions.go:8:6:8:12 | skip | -| noretfunctions.go:8:1:10:1 | entry | noretfunctions.go:9:2:9:8 | selection of Exit | -| noretfunctions.go:8:1:10:1 | function declaration | noretfunctions.go:12:6:12:11 | skip | -| noretfunctions.go:8:6:8:12 | skip | noretfunctions.go:8:1:10:1 | function declaration | -| noretfunctions.go:9:2:9:8 | selection of Exit | noretfunctions.go:9:10:9:10 | 1 | -| noretfunctions.go:9:2:9:11 | call to Exit | noretfunctions.go:8:1:10:1 | exit | +| noretfunctions.go:0:0:0:0 | After noretfunctions.go | noretfunctions.go:0:0:0:0 | Normal Exit | +| noretfunctions.go:0:0:0:0 | Entry | noretfunctions.go:0:0:0:0 | noretfunctions.go | +| noretfunctions.go:0:0:0:0 | Normal Exit | noretfunctions.go:0:0:0:0 | Exit | +| noretfunctions.go:0:0:0:0 | noretfunctions.go | noretfunctions.go:3:1:6:1 | import declaration | +| noretfunctions.go:3:1:6:1 | import declaration | noretfunctions.go:8:1:10:1 | function declaration | +| noretfunctions.go:8:1:10:1 | Entry | noretfunctions.go:8:16:10:1 | block statement | +| noretfunctions.go:8:1:10:1 | Exceptional Exit | noretfunctions.go:8:1:10:1 | Exit | +| noretfunctions.go:8:1:10:1 | function declaration | noretfunctions.go:12:1:16:1 | function declaration | +| noretfunctions.go:8:16:10:1 | block statement | noretfunctions.go:9:2:9:11 | expression statement | +| noretfunctions.go:9:2:9:8 | After selection of Exit | noretfunctions.go:9:10:9:10 | 1 | +| noretfunctions.go:9:2:9:8 | Before selection of Exit | noretfunctions.go:9:2:9:8 | selection of Exit | +| noretfunctions.go:9:2:9:8 | selection of Exit | noretfunctions.go:9:2:9:8 | After selection of Exit | +| noretfunctions.go:9:2:9:11 | Before call to Exit | noretfunctions.go:9:2:9:8 | Before selection of Exit | +| noretfunctions.go:9:2:9:11 | call to Exit | noretfunctions.go:8:1:10:1 | Exceptional Exit | +| noretfunctions.go:9:2:9:11 | expression statement | noretfunctions.go:9:2:9:11 | Before call to Exit | | noretfunctions.go:9:10:9:10 | 1 | noretfunctions.go:9:2:9:11 | call to Exit | -| noretfunctions.go:12:1:16:1 | entry | noretfunctions.go:12:13:12:13 | argument corresponding to x | -| noretfunctions.go:12:1:16:1 | function declaration | noretfunctions.go:18:6:18:12 | skip | -| noretfunctions.go:12:6:12:11 | skip | noretfunctions.go:12:1:16:1 | function declaration | -| noretfunctions.go:12:13:12:13 | argument corresponding to x | noretfunctions.go:12:13:12:13 | initialization of x | -| noretfunctions.go:12:13:12:13 | initialization of x | noretfunctions.go:13:5:13:5 | x | +| noretfunctions.go:12:1:16:1 | Entry | noretfunctions.go:12:13:12:13 | x | +| noretfunctions.go:12:1:16:1 | Exceptional Exit | noretfunctions.go:12:1:16:1 | Exit | +| noretfunctions.go:12:1:16:1 | Normal Exit | noretfunctions.go:12:1:16:1 | Exit | +| noretfunctions.go:12:1:16:1 | function declaration | noretfunctions.go:18:1:18:17 | function declaration | +| noretfunctions.go:12:13:12:13 | x | noretfunctions.go:12:20:16:1 | block statement | +| noretfunctions.go:12:20:16:1 | After block statement | noretfunctions.go:12:1:16:1 | Normal Exit | +| noretfunctions.go:12:20:16:1 | block statement | noretfunctions.go:13:2:15:2 | if statement | +| noretfunctions.go:13:2:15:2 | After if statement | noretfunctions.go:12:20:16:1 | After block statement | +| noretfunctions.go:13:2:15:2 | if statement | noretfunctions.go:13:5:13:10 | Before ...!=... | | noretfunctions.go:13:5:13:5 | x | noretfunctions.go:13:10:13:10 | 0 | -| noretfunctions.go:13:5:13:10 | ...!=... | noretfunctions.go:13:5:13:10 | ...!=... is false | -| noretfunctions.go:13:5:13:10 | ...!=... | noretfunctions.go:13:5:13:10 | ...!=... is true | -| noretfunctions.go:13:5:13:10 | ...!=... is false | noretfunctions.go:12:1:16:1 | exit | -| noretfunctions.go:13:5:13:10 | ...!=... is true | noretfunctions.go:14:3:14:9 | selection of Exit | +| noretfunctions.go:13:5:13:10 | ...!=... | noretfunctions.go:13:5:13:10 | After ...!=... [false] | +| noretfunctions.go:13:5:13:10 | ...!=... | noretfunctions.go:13:5:13:10 | After ...!=... [true] | +| noretfunctions.go:13:5:13:10 | After ...!=... [false] | noretfunctions.go:13:2:15:2 | After if statement | +| noretfunctions.go:13:5:13:10 | After ...!=... [true] | noretfunctions.go:13:12:15:2 | block statement | +| noretfunctions.go:13:5:13:10 | Before ...!=... | noretfunctions.go:13:5:13:5 | x | | noretfunctions.go:13:10:13:10 | 0 | noretfunctions.go:13:5:13:10 | ...!=... | -| noretfunctions.go:14:3:14:9 | selection of Exit | noretfunctions.go:14:11:14:11 | x | -| noretfunctions.go:14:3:14:12 | call to Exit | noretfunctions.go:12:1:16:1 | exit | +| noretfunctions.go:13:12:15:2 | block statement | noretfunctions.go:14:3:14:12 | expression statement | +| noretfunctions.go:14:3:14:9 | After selection of Exit | noretfunctions.go:14:11:14:11 | x | +| noretfunctions.go:14:3:14:9 | Before selection of Exit | noretfunctions.go:14:3:14:9 | selection of Exit | +| noretfunctions.go:14:3:14:9 | selection of Exit | noretfunctions.go:14:3:14:9 | After selection of Exit | +| noretfunctions.go:14:3:14:12 | Before call to Exit | noretfunctions.go:14:3:14:9 | Before selection of Exit | +| noretfunctions.go:14:3:14:12 | call to Exit | noretfunctions.go:12:1:16:1 | Exceptional Exit | +| noretfunctions.go:14:3:14:12 | expression statement | noretfunctions.go:14:3:14:12 | Before call to Exit | | noretfunctions.go:14:11:14:11 | x | noretfunctions.go:14:3:14:12 | call to Exit | -| noretfunctions.go:18:1:18:17 | entry | noretfunctions.go:18:16:18:17 | skip | -| noretfunctions.go:18:1:18:17 | function declaration | noretfunctions.go:20:6:20:22 | skip | -| noretfunctions.go:18:6:18:12 | skip | noretfunctions.go:18:1:18:17 | function declaration | -| noretfunctions.go:18:16:18:17 | skip | noretfunctions.go:18:1:18:17 | exit | -| noretfunctions.go:20:1:22:1 | entry | noretfunctions.go:21:2:21:10 | selection of Fatal | -| noretfunctions.go:20:1:22:1 | function declaration | noretfunctions.go:24:6:24:23 | skip | -| noretfunctions.go:20:6:20:22 | skip | noretfunctions.go:20:1:22:1 | function declaration | -| noretfunctions.go:21:2:21:10 | selection of Fatal | noretfunctions.go:21:12:21:18 | "Oh no" | -| noretfunctions.go:21:2:21:19 | call to Fatal | noretfunctions.go:20:1:22:1 | exit | +| noretfunctions.go:18:1:18:17 | Entry | noretfunctions.go:18:16:18:17 | block statement | +| noretfunctions.go:18:1:18:17 | Normal Exit | noretfunctions.go:18:1:18:17 | Exit | +| noretfunctions.go:18:1:18:17 | function declaration | noretfunctions.go:20:1:22:1 | function declaration | +| noretfunctions.go:18:16:18:17 | block statement | noretfunctions.go:18:1:18:17 | Normal Exit | +| noretfunctions.go:20:1:22:1 | Entry | noretfunctions.go:20:26:22:1 | block statement | +| noretfunctions.go:20:1:22:1 | Exceptional Exit | noretfunctions.go:20:1:22:1 | Exit | +| noretfunctions.go:20:1:22:1 | function declaration | noretfunctions.go:24:1:26:1 | function declaration | +| noretfunctions.go:20:26:22:1 | block statement | noretfunctions.go:21:2:21:19 | expression statement | +| noretfunctions.go:21:2:21:10 | After selection of Fatal | noretfunctions.go:21:12:21:18 | "Oh no" | +| noretfunctions.go:21:2:21:10 | Before selection of Fatal | noretfunctions.go:21:2:21:10 | selection of Fatal | +| noretfunctions.go:21:2:21:10 | selection of Fatal | noretfunctions.go:21:2:21:10 | After selection of Fatal | +| noretfunctions.go:21:2:21:19 | Before call to Fatal | noretfunctions.go:21:2:21:10 | Before selection of Fatal | +| noretfunctions.go:21:2:21:19 | call to Fatal | noretfunctions.go:20:1:22:1 | Exceptional Exit | +| noretfunctions.go:21:2:21:19 | expression statement | noretfunctions.go:21:2:21:19 | Before call to Fatal | | noretfunctions.go:21:12:21:18 | "Oh no" | noretfunctions.go:21:2:21:19 | call to Fatal | -| noretfunctions.go:24:1:26:1 | entry | noretfunctions.go:25:2:25:11 | selection of Fatalf | -| noretfunctions.go:24:1:26:1 | function declaration | noretfunctions.go:0:0:0:0 | exit | -| noretfunctions.go:24:6:24:23 | skip | noretfunctions.go:24:1:26:1 | function declaration | -| noretfunctions.go:25:2:25:11 | selection of Fatalf | noretfunctions.go:25:13:25:30 | "It's as I feared" | -| noretfunctions.go:25:2:25:31 | call to Fatalf | noretfunctions.go:24:1:26:1 | exit | +| noretfunctions.go:24:1:26:1 | Entry | noretfunctions.go:24:27:26:1 | block statement | +| noretfunctions.go:24:1:26:1 | Exceptional Exit | noretfunctions.go:24:1:26:1 | Exit | +| noretfunctions.go:24:1:26:1 | function declaration | noretfunctions.go:0:0:0:0 | After noretfunctions.go | +| noretfunctions.go:24:27:26:1 | block statement | noretfunctions.go:25:2:25:31 | expression statement | +| noretfunctions.go:25:2:25:11 | After selection of Fatalf | noretfunctions.go:25:13:25:30 | "It's as I feared" | +| noretfunctions.go:25:2:25:11 | Before selection of Fatalf | noretfunctions.go:25:2:25:11 | selection of Fatalf | +| noretfunctions.go:25:2:25:11 | selection of Fatalf | noretfunctions.go:25:2:25:11 | After selection of Fatalf | +| noretfunctions.go:25:2:25:31 | Before call to Fatalf | noretfunctions.go:25:2:25:11 | Before selection of Fatalf | +| noretfunctions.go:25:2:25:31 | call to Fatalf | noretfunctions.go:24:1:26:1 | Exceptional Exit | +| noretfunctions.go:25:2:25:31 | expression statement | noretfunctions.go:25:2:25:31 | Before call to Fatalf | | noretfunctions.go:25:13:25:30 | "It's as I feared" | noretfunctions.go:25:2:25:31 | call to Fatalf | -| stmts2.go:0:0:0:0 | entry | stmts2.go:3:6:3:11 | skip | -| stmts2.go:3:1:7:1 | entry | stmts2.go:4:2:4:2 | skip | -| stmts2.go:3:1:7:1 | function declaration | stmts2.go:9:6:9:11 | skip | -| stmts2.go:3:6:3:11 | skip | stmts2.go:3:1:7:1 | function declaration | -| stmts2.go:4:2:4:2 | skip | stmts2.go:4:6:4:10 | test7 | +| stmts2.go:0:0:0:0 | After stmts2.go | stmts2.go:0:0:0:0 | Normal Exit | +| stmts2.go:0:0:0:0 | Entry | stmts2.go:0:0:0:0 | stmts2.go | +| stmts2.go:0:0:0:0 | Normal Exit | stmts2.go:0:0:0:0 | Exit | +| stmts2.go:0:0:0:0 | stmts2.go | stmts2.go:3:1:7:1 | function declaration | +| stmts2.go:3:1:7:1 | Entry | stmts2.go:3:19:7:1 | block statement | +| stmts2.go:3:1:7:1 | Exceptional Exit | stmts2.go:3:1:7:1 | Exit | +| stmts2.go:3:1:7:1 | Normal Exit | stmts2.go:3:1:7:1 | Exit | +| stmts2.go:3:1:7:1 | function declaration | stmts2.go:9:1:13:1 | function declaration | +| stmts2.go:3:19:7:1 | block statement | stmts2.go:4:2:4:13 | ... = ... | +| stmts2.go:4:2:4:13 | ... = ... | stmts2.go:4:6:4:13 | Before call to test7 | +| stmts2.go:4:2:4:13 | After ... = ... | stmts2.go:5:2:5:17 | declaration statement | | stmts2.go:4:6:4:10 | test7 | stmts2.go:4:12:4:12 | 0 | -| stmts2.go:4:6:4:13 | call to test7 | stmts2.go:3:1:7:1 | exit | -| stmts2.go:4:6:4:13 | call to test7 | stmts2.go:5:6:5:6 | skip | +| stmts2.go:4:6:4:13 | After call to test7 | stmts2.go:4:2:4:13 | After ... = ... | +| stmts2.go:4:6:4:13 | Before call to test7 | stmts2.go:4:6:4:10 | test7 | +| stmts2.go:4:6:4:13 | call to test7 | stmts2.go:3:1:7:1 | Exceptional Exit | +| stmts2.go:4:6:4:13 | call to test7 | stmts2.go:4:6:4:13 | After call to test7 | | stmts2.go:4:12:4:12 | 0 | stmts2.go:4:6:4:13 | call to test7 | -| stmts2.go:5:6:5:6 | skip | stmts2.go:5:10:5:14 | test7 | +| stmts2.go:5:2:5:17 | After declaration statement | stmts2.go:6:2:6:9 | Before return statement | +| stmts2.go:5:2:5:17 | After variable declaration | stmts2.go:5:2:5:17 | After declaration statement | +| stmts2.go:5:2:5:17 | declaration statement | stmts2.go:5:2:5:17 | variable declaration | +| stmts2.go:5:2:5:17 | variable declaration | stmts2.go:5:6:5:17 | value declaration specifier | +| stmts2.go:5:6:5:17 | After value declaration specifier | stmts2.go:5:2:5:17 | After variable declaration | +| stmts2.go:5:6:5:17 | value declaration specifier | stmts2.go:5:10:5:17 | Before call to test7 | | stmts2.go:5:10:5:14 | test7 | stmts2.go:5:16:5:16 | 1 | -| stmts2.go:5:10:5:17 | call to test7 | stmts2.go:3:1:7:1 | exit | -| stmts2.go:5:10:5:17 | call to test7 | stmts2.go:6:9:6:9 | 2 | +| stmts2.go:5:10:5:17 | After call to test7 | stmts2.go:5:6:5:17 | After value declaration specifier | +| stmts2.go:5:10:5:17 | Before call to test7 | stmts2.go:5:10:5:14 | test7 | +| stmts2.go:5:10:5:17 | call to test7 | stmts2.go:3:1:7:1 | Exceptional Exit | +| stmts2.go:5:10:5:17 | call to test7 | stmts2.go:5:10:5:17 | After call to test7 | | stmts2.go:5:16:5:16 | 1 | stmts2.go:5:10:5:17 | call to test7 | -| stmts2.go:6:2:6:9 | return statement | stmts2.go:3:1:7:1 | exit | +| stmts2.go:6:2:6:9 | Before return statement | stmts2.go:6:9:6:9 | 2 | +| stmts2.go:6:2:6:9 | return statement | stmts2.go:3:1:7:1 | Normal Exit | | stmts2.go:6:9:6:9 | 2 | stmts2.go:6:2:6:9 | return statement | -| stmts2.go:9:1:13:1 | entry | stmts2.go:10:2:10:2 | skip | -| stmts2.go:9:1:13:1 | function declaration | stmts2.go:15:6:15:11 | skip | -| stmts2.go:9:6:9:11 | skip | stmts2.go:9:1:13:1 | function declaration | -| stmts2.go:10:2:10:2 | skip | stmts2.go:10:5:10:5 | skip | -| stmts2.go:10:2:10:14 | ... := ...[0] | stmts2.go:10:2:10:14 | ... := ...[1] | -| stmts2.go:10:2:10:14 | ... := ...[1] | stmts2.go:10:5:10:5 | assignment to x | -| stmts2.go:10:5:10:5 | assignment to x | stmts2.go:11:6:11:6 | skip | -| stmts2.go:10:5:10:5 | skip | stmts2.go:10:10:10:12 | gen | +| stmts2.go:9:1:13:1 | Entry | stmts2.go:9:19:13:1 | block statement | +| stmts2.go:9:1:13:1 | Exceptional Exit | stmts2.go:9:1:13:1 | Exit | +| stmts2.go:9:1:13:1 | Normal Exit | stmts2.go:9:1:13:1 | Exit | +| stmts2.go:9:1:13:1 | function declaration | stmts2.go:15:1:28:1 | function declaration | +| stmts2.go:9:19:13:1 | block statement | stmts2.go:10:2:10:14 | ... := ... | +| stmts2.go:10:2:10:14 | ... := ... | stmts2.go:10:10:10:14 | Before call to gen | +| stmts2.go:10:2:10:14 | After ... := ... | stmts2.go:11:2:11:17 | declaration statement | +| stmts2.go:10:2:10:14 | extract:0 ... := ... | stmts2.go:10:2:10:14 | extract:1 ... := ... | +| stmts2.go:10:2:10:14 | extract:1 ... := ... | stmts2.go:10:2:10:14 | After ... := ... | | stmts2.go:10:10:10:12 | gen | stmts2.go:10:10:10:14 | call to gen | -| stmts2.go:10:10:10:14 | call to gen | stmts2.go:9:1:13:1 | exit | -| stmts2.go:10:10:10:14 | call to gen | stmts2.go:10:2:10:14 | ... := ...[0] | -| stmts2.go:11:6:11:6 | skip | stmts2.go:11:9:11:9 | skip | -| stmts2.go:11:6:11:17 | value declaration specifier[0] | stmts2.go:11:6:11:17 | value declaration specifier[1] | -| stmts2.go:11:6:11:17 | value declaration specifier[1] | stmts2.go:11:9:11:9 | assignment to y | -| stmts2.go:11:9:11:9 | assignment to y | stmts2.go:12:9:12:9 | x | -| stmts2.go:11:9:11:9 | skip | stmts2.go:11:13:11:15 | gen | +| stmts2.go:10:10:10:14 | After call to gen | stmts2.go:10:2:10:14 | extract:0 ... := ... | +| stmts2.go:10:10:10:14 | Before call to gen | stmts2.go:10:10:10:12 | gen | +| stmts2.go:10:10:10:14 | call to gen | stmts2.go:9:1:13:1 | Exceptional Exit | +| stmts2.go:10:10:10:14 | call to gen | stmts2.go:10:10:10:14 | After call to gen | +| stmts2.go:11:2:11:17 | After declaration statement | stmts2.go:12:2:12:13 | Before return statement | +| stmts2.go:11:2:11:17 | After variable declaration | stmts2.go:11:2:11:17 | After declaration statement | +| stmts2.go:11:2:11:17 | declaration statement | stmts2.go:11:2:11:17 | variable declaration | +| stmts2.go:11:2:11:17 | variable declaration | stmts2.go:11:6:11:17 | value declaration specifier | +| stmts2.go:11:6:11:17 | After value declaration specifier | stmts2.go:11:2:11:17 | After variable declaration | +| stmts2.go:11:6:11:17 | extract:0 value declaration specifier | stmts2.go:11:6:11:17 | extract:1 value declaration specifier | +| stmts2.go:11:6:11:17 | extract:1 value declaration specifier | stmts2.go:11:6:11:17 | After value declaration specifier | +| stmts2.go:11:6:11:17 | value declaration specifier | stmts2.go:11:13:11:17 | Before call to gen | | stmts2.go:11:13:11:15 | gen | stmts2.go:11:13:11:17 | call to gen | -| stmts2.go:11:13:11:17 | call to gen | stmts2.go:9:1:13:1 | exit | -| stmts2.go:11:13:11:17 | call to gen | stmts2.go:11:6:11:17 | value declaration specifier[0] | -| stmts2.go:12:2:12:13 | return statement | stmts2.go:9:1:13:1 | exit | +| stmts2.go:11:13:11:17 | After call to gen | stmts2.go:11:6:11:17 | extract:0 value declaration specifier | +| stmts2.go:11:13:11:17 | Before call to gen | stmts2.go:11:13:11:15 | gen | +| stmts2.go:11:13:11:17 | call to gen | stmts2.go:9:1:13:1 | Exceptional Exit | +| stmts2.go:11:13:11:17 | call to gen | stmts2.go:11:13:11:17 | After call to gen | +| stmts2.go:12:2:12:13 | Before return statement | stmts2.go:12:9:12:13 | Before ...+... | +| stmts2.go:12:2:12:13 | return statement | stmts2.go:9:1:13:1 | Normal Exit | | stmts2.go:12:9:12:9 | x | stmts2.go:12:13:12:13 | y | -| stmts2.go:12:9:12:13 | ...+... | stmts2.go:12:2:12:13 | return statement | +| stmts2.go:12:9:12:13 | ...+... | stmts2.go:12:9:12:13 | After ...+... | +| stmts2.go:12:9:12:13 | After ...+... | stmts2.go:12:2:12:13 | return statement | +| stmts2.go:12:9:12:13 | Before ...+... | stmts2.go:12:9:12:9 | x | | stmts2.go:12:13:12:13 | y | stmts2.go:12:9:12:13 | ...+... | -| stmts2.go:15:1:28:1 | entry | stmts2.go:15:13:15:14 | argument corresponding to ch | -| stmts2.go:15:1:28:1 | function declaration | stmts2.go:30:6:30:12 | skip | -| stmts2.go:15:6:15:11 | skip | stmts2.go:15:1:28:1 | function declaration | -| stmts2.go:15:13:15:14 | argument corresponding to ch | stmts2.go:15:13:15:14 | initialization of ch | -| stmts2.go:15:13:15:14 | initialization of ch | stmts2.go:17:13:17:14 | ch | -| stmts2.go:16:2:26:2 | select statement | stmts2.go:17:11:17:14 | <-... | -| stmts2.go:16:2:26:2 | select statement | stmts2.go:18:15:18:18 | <-... | -| stmts2.go:16:2:26:2 | select statement | stmts2.go:20:15:20:18 | <-... | -| stmts2.go:16:2:26:2 | select statement | stmts2.go:25:14:25:17 | <-... | -| stmts2.go:17:2:17:15 | skip | stmts2.go:27:9:27:9 | 1 | -| stmts2.go:17:7:17:7 | skip | stmts2.go:17:2:17:15 | skip | -| stmts2.go:17:11:17:14 | <-... | stmts2.go:17:7:17:7 | skip | +| stmts2.go:15:1:28:1 | Entry | stmts2.go:15:13:15:14 | ch | +| stmts2.go:15:1:28:1 | Normal Exit | stmts2.go:15:1:28:1 | Exit | +| stmts2.go:15:1:28:1 | function declaration | stmts2.go:30:1:34:1 | function declaration | +| stmts2.go:15:13:15:14 | ch | stmts2.go:15:30:28:1 | block statement | +| stmts2.go:15:30:28:1 | block statement | stmts2.go:16:2:26:2 | Before select statement | +| stmts2.go:16:2:26:2 | After select statement | stmts2.go:27:2:27:9 | Before return statement | +| stmts2.go:16:2:26:2 | Before select statement | stmts2.go:17:13:17:14 | ch | +| stmts2.go:16:2:26:2 | select statement | stmts2.go:17:2:17:15 | comm clause | +| stmts2.go:16:2:26:2 | select statement | stmts2.go:18:2:19:10 | comm clause | +| stmts2.go:16:2:26:2 | select statement | stmts2.go:20:2:24:10 | comm clause | +| stmts2.go:16:2:26:2 | select statement | stmts2.go:25:2:25:18 | comm clause | +| stmts2.go:17:2:17:15 | comm clause | stmts2.go:17:7:17:14 | ... = ... | +| stmts2.go:17:7:17:7 | _ | stmts2.go:16:2:26:2 | After select statement | +| stmts2.go:17:7:17:14 | ... = ... | stmts2.go:17:11:17:14 | Before <-... | +| stmts2.go:17:11:17:14 | <-... | stmts2.go:17:7:17:7 | _ | +| stmts2.go:17:11:17:14 | Before <-... | stmts2.go:17:11:17:14 | <-... | | stmts2.go:17:13:17:14 | ch | stmts2.go:18:17:18:18 | ch | -| stmts2.go:18:7:18:7 | assignment to x | stmts2.go:18:7:18:18 | ... := ...[1] | -| stmts2.go:18:7:18:7 | skip | stmts2.go:18:10:18:10 | skip | -| stmts2.go:18:7:18:18 | ... := ...[0] | stmts2.go:18:7:18:7 | assignment to x | -| stmts2.go:18:7:18:18 | ... := ...[1] | stmts2.go:19:10:19:10 | x | -| stmts2.go:18:10:18:10 | skip | stmts2.go:18:7:18:18 | ... := ...[0] | -| stmts2.go:18:15:18:18 | <-... | stmts2.go:18:7:18:7 | skip | +| stmts2.go:18:2:19:10 | comm clause | stmts2.go:18:7:18:18 | ... := ... | +| stmts2.go:18:7:18:7 | x | stmts2.go:18:10:18:10 | _ | +| stmts2.go:18:7:18:18 | ... := ... | stmts2.go:18:15:18:18 | Before <-... | +| stmts2.go:18:7:18:18 | extract:0 ... := ... | stmts2.go:18:7:18:18 | extract:1 ... := ... | +| stmts2.go:18:7:18:18 | extract:1 ... := ... | stmts2.go:19:3:19:10 | Before return statement | +| stmts2.go:18:10:18:10 | _ | stmts2.go:18:7:18:18 | extract:0 ... := ... | +| stmts2.go:18:15:18:18 | <-... | stmts2.go:18:7:18:7 | x | +| stmts2.go:18:15:18:18 | Before <-... | stmts2.go:18:15:18:18 | <-... | | stmts2.go:18:17:18:18 | ch | stmts2.go:20:17:20:18 | ch | -| stmts2.go:19:3:19:10 | return statement | stmts2.go:15:1:28:1 | exit | +| stmts2.go:19:3:19:10 | Before return statement | stmts2.go:19:10:19:10 | x | +| stmts2.go:19:3:19:10 | return statement | stmts2.go:15:1:28:1 | Normal Exit | | stmts2.go:19:10:19:10 | x | stmts2.go:19:3:19:10 | return statement | -| stmts2.go:20:7:20:7 | skip | stmts2.go:20:10:20:10 | skip | -| stmts2.go:20:7:20:18 | ... := ...[0] | stmts2.go:20:7:20:18 | ... := ...[1] | -| stmts2.go:20:7:20:18 | ... := ...[1] | stmts2.go:20:10:20:10 | assignment to y | -| stmts2.go:20:10:20:10 | assignment to y | stmts2.go:21:6:21:6 | y | -| stmts2.go:20:10:20:10 | skip | stmts2.go:20:7:20:18 | ... := ...[0] | -| stmts2.go:20:15:20:18 | <-... | stmts2.go:20:7:20:7 | skip | +| stmts2.go:20:2:24:10 | comm clause | stmts2.go:20:7:20:18 | ... := ... | +| stmts2.go:20:7:20:7 | _ | stmts2.go:20:10:20:10 | y | +| stmts2.go:20:7:20:18 | ... := ... | stmts2.go:20:15:20:18 | Before <-... | +| stmts2.go:20:7:20:18 | extract:0 ... := ... | stmts2.go:20:7:20:18 | extract:1 ... := ... | +| stmts2.go:20:7:20:18 | extract:1 ... := ... | stmts2.go:21:3:23:3 | if statement | +| stmts2.go:20:10:20:10 | y | stmts2.go:20:7:20:18 | extract:0 ... := ... | +| stmts2.go:20:15:20:18 | <-... | stmts2.go:20:7:20:7 | _ | +| stmts2.go:20:15:20:18 | Before <-... | stmts2.go:20:15:20:18 | <-... | | stmts2.go:20:17:20:18 | ch | stmts2.go:25:16:25:17 | ch | -| stmts2.go:21:6:21:6 | y | stmts2.go:21:6:21:6 | y is false | -| stmts2.go:21:6:21:6 | y | stmts2.go:21:6:21:6 | y is true | -| stmts2.go:21:6:21:6 | y is false | stmts2.go:24:10:24:10 | 0 | -| stmts2.go:21:6:21:6 | y is true | stmts2.go:22:4:22:8 | skip | -| stmts2.go:22:4:22:8 | skip | stmts2.go:27:9:27:9 | 1 | -| stmts2.go:24:3:24:10 | return statement | stmts2.go:15:1:28:1 | exit | +| stmts2.go:21:3:23:3 | After if statement | stmts2.go:24:3:24:10 | Before return statement | +| stmts2.go:21:3:23:3 | if statement | stmts2.go:21:6:21:6 | y | +| stmts2.go:21:6:21:6 | After y [false] | stmts2.go:21:3:23:3 | After if statement | +| stmts2.go:21:6:21:6 | After y [true] | stmts2.go:21:8:23:3 | block statement | +| stmts2.go:21:6:21:6 | y | stmts2.go:21:6:21:6 | After y [false] | +| stmts2.go:21:6:21:6 | y | stmts2.go:21:6:21:6 | After y [true] | +| stmts2.go:21:8:23:3 | block statement | stmts2.go:22:4:22:8 | Before break statement | +| stmts2.go:22:4:22:8 | Before break statement | stmts2.go:22:4:22:8 | break statement | +| stmts2.go:22:4:22:8 | break statement | stmts2.go:16:2:26:2 | After select statement | +| stmts2.go:24:3:24:10 | Before return statement | stmts2.go:24:10:24:10 | 0 | +| stmts2.go:24:3:24:10 | return statement | stmts2.go:15:1:28:1 | Normal Exit | | stmts2.go:24:10:24:10 | 0 | stmts2.go:24:3:24:10 | return statement | -| stmts2.go:25:2:25:18 | skip | stmts2.go:27:9:27:9 | 1 | -| stmts2.go:25:7:25:7 | skip | stmts2.go:25:10:25:10 | skip | -| stmts2.go:25:7:25:17 | ... = ...[0] | stmts2.go:25:7:25:17 | ... = ...[1] | -| stmts2.go:25:7:25:17 | ... = ...[1] | stmts2.go:25:2:25:18 | skip | -| stmts2.go:25:10:25:10 | skip | stmts2.go:25:7:25:17 | ... = ...[0] | -| stmts2.go:25:14:25:17 | <-... | stmts2.go:25:7:25:7 | skip | +| stmts2.go:25:2:25:18 | comm clause | stmts2.go:25:7:25:17 | ... = ... | +| stmts2.go:25:7:25:7 | _ | stmts2.go:25:10:25:10 | _ | +| stmts2.go:25:7:25:17 | ... = ... | stmts2.go:25:14:25:17 | Before <-... | +| stmts2.go:25:7:25:17 | extract:0 ... = ... | stmts2.go:25:7:25:17 | extract:1 ... = ... | +| stmts2.go:25:7:25:17 | extract:1 ... = ... | stmts2.go:16:2:26:2 | After select statement | +| stmts2.go:25:10:25:10 | _ | stmts2.go:25:7:25:17 | extract:0 ... = ... | +| stmts2.go:25:14:25:17 | <-... | stmts2.go:25:7:25:7 | _ | +| stmts2.go:25:14:25:17 | Before <-... | stmts2.go:25:14:25:17 | <-... | | stmts2.go:25:16:25:17 | ch | stmts2.go:16:2:26:2 | select statement | -| stmts2.go:27:2:27:9 | return statement | stmts2.go:15:1:28:1 | exit | +| stmts2.go:27:2:27:9 | Before return statement | stmts2.go:27:9:27:9 | 1 | +| stmts2.go:27:2:27:9 | return statement | stmts2.go:15:1:28:1 | Normal Exit | | stmts2.go:27:9:27:9 | 1 | stmts2.go:27:2:27:9 | return statement | -| stmts2.go:30:1:34:1 | entry | stmts2.go:31:2:31:2 | skip | -| stmts2.go:30:1:34:1 | function declaration | stmts2.go:0:0:0:0 | exit | -| stmts2.go:30:6:30:12 | skip | stmts2.go:30:1:34:1 | function declaration | -| stmts2.go:31:2:31:2 | assignment to x | stmts2.go:31:2:31:14 | ... := ...[1] | -| stmts2.go:31:2:31:2 | skip | stmts2.go:31:5:31:5 | skip | -| stmts2.go:31:2:31:14 | ... := ...[0] | stmts2.go:31:2:31:2 | assignment to x | -| stmts2.go:31:2:31:14 | ... := ...[1] | stmts2.go:32:6:32:6 | skip | -| stmts2.go:31:5:31:5 | skip | stmts2.go:31:10:31:12 | gen | +| stmts2.go:30:1:34:1 | Entry | stmts2.go:30:20:34:1 | block statement | +| stmts2.go:30:1:34:1 | Exceptional Exit | stmts2.go:30:1:34:1 | Exit | +| stmts2.go:30:1:34:1 | Normal Exit | stmts2.go:30:1:34:1 | Exit | +| stmts2.go:30:1:34:1 | function declaration | stmts2.go:0:0:0:0 | After stmts2.go | +| stmts2.go:30:20:34:1 | block statement | stmts2.go:31:2:31:14 | ... := ... | +| stmts2.go:31:2:31:14 | ... := ... | stmts2.go:31:10:31:14 | Before call to gen | +| stmts2.go:31:2:31:14 | After ... := ... | stmts2.go:32:2:32:17 | declaration statement | +| stmts2.go:31:2:31:14 | extract:0 ... := ... | stmts2.go:31:2:31:14 | extract:1 ... := ... | +| stmts2.go:31:2:31:14 | extract:1 ... := ... | stmts2.go:31:2:31:14 | After ... := ... | | stmts2.go:31:10:31:12 | gen | stmts2.go:31:10:31:14 | call to gen | -| stmts2.go:31:10:31:14 | call to gen | stmts2.go:30:1:34:1 | exit | -| stmts2.go:31:10:31:14 | call to gen | stmts2.go:31:2:31:14 | ... := ...[0] | -| stmts2.go:32:6:32:6 | assignment to y | stmts2.go:32:6:32:17 | value declaration specifier[1] | -| stmts2.go:32:6:32:6 | skip | stmts2.go:32:9:32:9 | skip | -| stmts2.go:32:6:32:17 | value declaration specifier[0] | stmts2.go:32:6:32:6 | assignment to y | -| stmts2.go:32:6:32:17 | value declaration specifier[1] | stmts2.go:33:9:33:9 | x | -| stmts2.go:32:9:32:9 | skip | stmts2.go:32:13:32:15 | gen | +| stmts2.go:31:10:31:14 | After call to gen | stmts2.go:31:2:31:14 | extract:0 ... := ... | +| stmts2.go:31:10:31:14 | Before call to gen | stmts2.go:31:10:31:12 | gen | +| stmts2.go:31:10:31:14 | call to gen | stmts2.go:30:1:34:1 | Exceptional Exit | +| stmts2.go:31:10:31:14 | call to gen | stmts2.go:31:10:31:14 | After call to gen | +| stmts2.go:32:2:32:17 | After declaration statement | stmts2.go:33:2:33:13 | Before return statement | +| stmts2.go:32:2:32:17 | After variable declaration | stmts2.go:32:2:32:17 | After declaration statement | +| stmts2.go:32:2:32:17 | declaration statement | stmts2.go:32:2:32:17 | variable declaration | +| stmts2.go:32:2:32:17 | variable declaration | stmts2.go:32:6:32:17 | value declaration specifier | +| stmts2.go:32:6:32:17 | After value declaration specifier | stmts2.go:32:2:32:17 | After variable declaration | +| stmts2.go:32:6:32:17 | extract:0 value declaration specifier | stmts2.go:32:6:32:17 | extract:1 value declaration specifier | +| stmts2.go:32:6:32:17 | extract:1 value declaration specifier | stmts2.go:32:6:32:17 | After value declaration specifier | +| stmts2.go:32:6:32:17 | value declaration specifier | stmts2.go:32:13:32:17 | Before call to gen | | stmts2.go:32:13:32:15 | gen | stmts2.go:32:13:32:17 | call to gen | -| stmts2.go:32:13:32:17 | call to gen | stmts2.go:30:1:34:1 | exit | -| stmts2.go:32:13:32:17 | call to gen | stmts2.go:32:6:32:17 | value declaration specifier[0] | -| stmts2.go:33:2:33:13 | return statement | stmts2.go:30:1:34:1 | exit | +| stmts2.go:32:13:32:17 | After call to gen | stmts2.go:32:6:32:17 | extract:0 value declaration specifier | +| stmts2.go:32:13:32:17 | Before call to gen | stmts2.go:32:13:32:15 | gen | +| stmts2.go:32:13:32:17 | call to gen | stmts2.go:30:1:34:1 | Exceptional Exit | +| stmts2.go:32:13:32:17 | call to gen | stmts2.go:32:13:32:17 | After call to gen | +| stmts2.go:33:2:33:13 | Before return statement | stmts2.go:33:9:33:13 | Before ...+... | +| stmts2.go:33:2:33:13 | return statement | stmts2.go:30:1:34:1 | Normal Exit | | stmts2.go:33:9:33:9 | x | stmts2.go:33:13:33:13 | y | -| stmts2.go:33:9:33:13 | ...+... | stmts2.go:33:2:33:13 | return statement | +| stmts2.go:33:9:33:13 | ...+... | stmts2.go:33:9:33:13 | After ...+... | +| stmts2.go:33:9:33:13 | After ...+... | stmts2.go:33:2:33:13 | return statement | +| stmts2.go:33:9:33:13 | Before ...+... | stmts2.go:33:9:33:9 | x | | stmts2.go:33:13:33:13 | y | stmts2.go:33:9:33:13 | ...+... | -| stmts3.go:0:0:0:0 | entry | stmts3.go:3:1:3:13 | skip | -| stmts3.go:3:1:3:13 | skip | stmts3.go:5:6:5:11 | skip | -| stmts3.go:5:1:12:1 | entry | stmts3.go:7:3:7:5 | skip | -| stmts3.go:5:1:12:1 | function declaration | stmts3.go:14:6:14:11 | skip | -| stmts3.go:5:6:5:11 | skip | stmts3.go:5:1:12:1 | function declaration | -| stmts3.go:7:3:7:5 | assignment to red | stmts3.go:8:3:8:7 | skip | -| stmts3.go:7:3:7:5 | skip | stmts3.go:7:9:7:12 | iota | -| stmts3.go:7:9:7:12 | iota | stmts3.go:7:3:7:5 | assignment to red | -| stmts3.go:8:3:8:7 | assignment to green | stmts3.go:9:3:9:6 | skip | -| stmts3.go:8:3:8:7 | skip | stmts3.go:8:3:8:7 | zero value for green | -| stmts3.go:8:3:8:7 | zero value for green | stmts3.go:8:3:8:7 | assignment to green | -| stmts3.go:9:3:9:6 | assignment to blue | stmts3.go:11:9:11:26 | ...-... | -| stmts3.go:9:3:9:6 | skip | stmts3.go:9:3:9:6 | zero value for blue | -| stmts3.go:9:3:9:6 | zero value for blue | stmts3.go:9:3:9:6 | assignment to blue | -| stmts3.go:11:2:11:26 | return statement | stmts3.go:5:1:12:1 | exit | -| stmts3.go:11:9:11:26 | ...-... | stmts3.go:11:2:11:26 | return statement | -| stmts3.go:14:1:16:1 | entry | stmts3.go:14:13:14:13 | argument corresponding to x | -| stmts3.go:14:1:16:1 | function declaration | stmts3.go:18:6:18:11 | skip | -| stmts3.go:14:6:14:11 | skip | stmts3.go:14:1:16:1 | function declaration | -| stmts3.go:14:13:14:13 | argument corresponding to x | stmts3.go:14:13:14:13 | initialization of x | -| stmts3.go:14:13:14:13 | initialization of x | stmts3.go:15:3:15:3 | x | -| stmts3.go:15:2:15:3 | assignment to star expression | stmts3.go:14:1:16:1 | exit | -| stmts3.go:15:2:15:3 | skip | stmts3.go:14:1:16:1 | exit | -| stmts3.go:15:2:15:3 | skip | stmts3.go:15:7:15:8 | 42 | -| stmts3.go:15:3:15:3 | x | stmts3.go:15:2:15:3 | skip | -| stmts3.go:15:7:15:8 | 42 | stmts3.go:15:2:15:3 | assignment to star expression | -| stmts3.go:18:1:20:1 | entry | stmts3.go:19:2:19:11 | skip | -| stmts3.go:18:1:20:1 | function declaration | stmts3.go:0:0:0:0 | exit | -| stmts3.go:18:6:18:11 | skip | stmts3.go:18:1:20:1 | function declaration | -| stmts3.go:19:2:19:11 | assignment to Usage | stmts3.go:18:1:20:1 | exit | -| stmts3.go:19:2:19:11 | skip | stmts3.go:19:15:19:23 | function literal | -| stmts3.go:19:15:19:23 | entry | stmts3.go:19:22:19:23 | skip | -| stmts3.go:19:15:19:23 | function literal | stmts3.go:19:2:19:11 | assignment to Usage | -| stmts3.go:19:22:19:23 | skip | stmts3.go:19:15:19:23 | exit | -| stmts4.go:0:0:0:0 | entry | stmts4.go:3:5:3:5 | skip | -| stmts4.go:3:5:3:5 | skip | stmts4.go:3:5:3:5 | zero value for _ | -| stmts4.go:3:5:3:5 | zero value for _ | stmts4.go:5:6:5:11 | skip | -| stmts4.go:5:1:5:26 | function declaration | stmts4.go:0:0:0:0 | exit | -| stmts4.go:5:6:5:11 | skip | stmts4.go:5:1:5:26 | function declaration | -| stmts5.go:0:0:0:0 | entry | stmts5.go:3:1:5:1 | skip | -| stmts5.go:3:1:5:1 | skip | stmts5.go:7:17:7:20 | skip | -| stmts5.go:7:1:9:1 | entry | stmts5.go:7:7:7:8 | argument corresponding to me | -| stmts5.go:7:1:9:1 | function declaration | stmts5.go:11:14:11:16 | skip | -| stmts5.go:7:7:7:8 | argument corresponding to me | stmts5.go:7:7:7:8 | initialization of me | -| stmts5.go:7:7:7:8 | initialization of me | stmts5.go:7:22:7:26 | argument corresponding to other | -| stmts5.go:7:17:7:20 | skip | stmts5.go:7:1:9:1 | function declaration | -| stmts5.go:7:22:7:26 | argument corresponding to other | stmts5.go:7:22:7:26 | initialization of other | -| stmts5.go:7:22:7:26 | initialization of other | stmts5.go:8:2:8:3 | me | +| stmts3.go:0:0:0:0 | After stmts3.go | stmts3.go:0:0:0:0 | Normal Exit | +| stmts3.go:0:0:0:0 | Entry | stmts3.go:0:0:0:0 | stmts3.go | +| stmts3.go:0:0:0:0 | Normal Exit | stmts3.go:0:0:0:0 | Exit | +| stmts3.go:0:0:0:0 | stmts3.go | stmts3.go:3:1:3:13 | import declaration | +| stmts3.go:3:1:3:13 | import declaration | stmts3.go:5:1:12:1 | function declaration | +| stmts3.go:5:1:12:1 | Entry | stmts3.go:5:19:12:1 | block statement | +| stmts3.go:5:1:12:1 | Normal Exit | stmts3.go:5:1:12:1 | Exit | +| stmts3.go:5:1:12:1 | function declaration | stmts3.go:14:1:16:1 | function declaration | +| stmts3.go:5:19:12:1 | block statement | stmts3.go:6:2:10:2 | declaration statement | +| stmts3.go:6:2:10:2 | After constant declaration | stmts3.go:6:2:10:2 | After declaration statement | +| stmts3.go:6:2:10:2 | After declaration statement | stmts3.go:11:2:11:26 | Before return statement | +| stmts3.go:6:2:10:2 | constant declaration | stmts3.go:7:3:7:12 | value declaration specifier | +| stmts3.go:6:2:10:2 | declaration statement | stmts3.go:6:2:10:2 | constant declaration | +| stmts3.go:7:3:7:12 | After value declaration specifier | stmts3.go:8:3:8:7 | value declaration specifier | +| stmts3.go:7:3:7:12 | assign:0 value declaration specifier | stmts3.go:7:3:7:12 | After value declaration specifier | +| stmts3.go:7:3:7:12 | value declaration specifier | stmts3.go:7:9:7:12 | iota | +| stmts3.go:7:9:7:12 | iota | stmts3.go:7:3:7:12 | assign:0 value declaration specifier | +| stmts3.go:8:3:8:7 | After value declaration specifier | stmts3.go:9:3:9:6 | value declaration specifier | +| stmts3.go:8:3:8:7 | value declaration specifier | stmts3.go:8:3:8:7 | zero-init:0 value declaration specifier | +| stmts3.go:8:3:8:7 | zero-init:0 value declaration specifier | stmts3.go:8:3:8:7 | After value declaration specifier | +| stmts3.go:9:3:9:6 | After value declaration specifier | stmts3.go:6:2:10:2 | After constant declaration | +| stmts3.go:9:3:9:6 | value declaration specifier | stmts3.go:9:3:9:6 | zero-init:0 value declaration specifier | +| stmts3.go:9:3:9:6 | zero-init:0 value declaration specifier | stmts3.go:9:3:9:6 | After value declaration specifier | +| stmts3.go:11:2:11:26 | Before return statement | stmts3.go:11:9:11:26 | Before ...-... | +| stmts3.go:11:2:11:26 | return statement | stmts3.go:5:1:12:1 | Normal Exit | +| stmts3.go:11:9:11:26 | ...-... | stmts3.go:11:9:11:26 | After ...-... | +| stmts3.go:11:9:11:26 | After ...-... | stmts3.go:11:2:11:26 | return statement | +| stmts3.go:11:9:11:26 | Before ...-... | stmts3.go:11:9:11:26 | ...-... | +| stmts3.go:14:1:16:1 | Entry | stmts3.go:14:13:14:13 | x | +| stmts3.go:14:1:16:1 | Normal Exit | stmts3.go:14:1:16:1 | Exit | +| stmts3.go:14:1:16:1 | function declaration | stmts3.go:18:1:20:1 | function declaration | +| stmts3.go:14:13:14:13 | x | stmts3.go:14:21:16:1 | block statement | +| stmts3.go:14:21:16:1 | After block statement | stmts3.go:14:1:16:1 | Normal Exit | +| stmts3.go:14:21:16:1 | block statement | stmts3.go:15:2:15:8 | ... = ... | +| stmts3.go:15:2:15:8 | ... = ... | stmts3.go:15:3:15:3 | x | +| stmts3.go:15:2:15:8 | After ... = ... | stmts3.go:14:21:16:1 | After block statement | +| stmts3.go:15:2:15:8 | assign:0 ... = ... | stmts3.go:15:2:15:8 | After ... = ... | +| stmts3.go:15:3:15:3 | x | stmts3.go:15:7:15:8 | 42 | +| stmts3.go:15:7:15:8 | 42 | stmts3.go:15:2:15:8 | assign:0 ... = ... | +| stmts3.go:18:1:20:1 | Entry | stmts3.go:18:15:20:1 | block statement | +| stmts3.go:18:1:20:1 | Normal Exit | stmts3.go:18:1:20:1 | Exit | +| stmts3.go:18:1:20:1 | function declaration | stmts3.go:0:0:0:0 | After stmts3.go | +| stmts3.go:18:15:20:1 | After block statement | stmts3.go:18:1:20:1 | Normal Exit | +| stmts3.go:18:15:20:1 | block statement | stmts3.go:19:2:19:23 | ... = ... | +| stmts3.go:19:2:19:11 | After selection of Usage | stmts3.go:19:15:19:23 | function literal | +| stmts3.go:19:2:19:11 | Before selection of Usage | stmts3.go:19:2:19:11 | selection of Usage | +| stmts3.go:19:2:19:11 | selection of Usage | stmts3.go:19:2:19:11 | After selection of Usage | +| stmts3.go:19:2:19:23 | ... = ... | stmts3.go:19:2:19:11 | Before selection of Usage | +| stmts3.go:19:2:19:23 | After ... = ... | stmts3.go:18:15:20:1 | After block statement | +| stmts3.go:19:2:19:23 | assign:0 ... = ... | stmts3.go:19:2:19:23 | After ... = ... | +| stmts3.go:19:15:19:23 | Entry | stmts3.go:19:22:19:23 | block statement | +| stmts3.go:19:15:19:23 | Normal Exit | stmts3.go:19:15:19:23 | Exit | +| stmts3.go:19:15:19:23 | function literal | stmts3.go:19:2:19:23 | assign:0 ... = ... | +| stmts3.go:19:22:19:23 | block statement | stmts3.go:19:15:19:23 | Normal Exit | +| stmts4.go:0:0:0:0 | After stmts4.go | stmts4.go:0:0:0:0 | Normal Exit | +| stmts4.go:0:0:0:0 | Entry | stmts4.go:0:0:0:0 | stmts4.go | +| stmts4.go:0:0:0:0 | Normal Exit | stmts4.go:0:0:0:0 | Exit | +| stmts4.go:0:0:0:0 | stmts4.go | stmts4.go:3:1:3:9 | variable declaration | +| stmts4.go:3:1:3:9 | After variable declaration | stmts4.go:5:1:5:26 | function declaration | +| stmts4.go:3:1:3:9 | variable declaration | stmts4.go:3:5:3:9 | value declaration specifier | +| stmts4.go:3:5:3:9 | After value declaration specifier | stmts4.go:3:1:3:9 | After variable declaration | +| stmts4.go:3:5:3:9 | value declaration specifier | stmts4.go:3:5:3:9 | zero-init:0 value declaration specifier | +| stmts4.go:3:5:3:9 | zero-init:0 value declaration specifier | stmts4.go:3:5:3:9 | After value declaration specifier | +| stmts4.go:5:1:5:26 | function declaration | stmts4.go:0:0:0:0 | After stmts4.go | +| stmts5.go:0:0:0:0 | After stmts5.go | stmts5.go:0:0:0:0 | Normal Exit | +| stmts5.go:0:0:0:0 | Entry | stmts5.go:0:0:0:0 | stmts5.go | +| stmts5.go:0:0:0:0 | Normal Exit | stmts5.go:0:0:0:0 | Exit | +| stmts5.go:0:0:0:0 | stmts5.go | stmts5.go:3:1:5:1 | type declaration | +| stmts5.go:3:1:5:1 | type declaration | stmts5.go:7:1:9:1 | function declaration | +| stmts5.go:7:1:9:1 | Entry | stmts5.go:7:7:7:8 | me | +| stmts5.go:7:1:9:1 | Normal Exit | stmts5.go:7:1:9:1 | Exit | +| stmts5.go:7:1:9:1 | function declaration | stmts5.go:11:1:12:1 | function declaration | +| stmts5.go:7:7:7:8 | me | stmts5.go:7:22:7:26 | other | +| stmts5.go:7:22:7:26 | other | stmts5.go:7:33:9:1 | block statement | +| stmts5.go:7:33:9:1 | After block statement | stmts5.go:7:1:9:1 | Normal Exit | +| stmts5.go:7:33:9:1 | block statement | stmts5.go:8:2:8:16 | Before ... += ... | | stmts5.go:8:2:8:3 | me | stmts5.go:8:2:8:7 | selection of val | -| stmts5.go:8:2:8:7 | assignment to field val | stmts5.go:7:1:9:1 | exit | -| stmts5.go:8:2:8:7 | selection of val | stmts5.go:8:12:8:16 | other | -| stmts5.go:8:2:8:16 | ... += ... | stmts5.go:8:2:8:7 | assignment to field val | +| stmts5.go:8:2:8:7 | After selection of val | stmts5.go:8:12:8:16 | other | +| stmts5.go:8:2:8:7 | Before selection of val | stmts5.go:8:2:8:3 | me | +| stmts5.go:8:2:8:7 | selection of val | stmts5.go:8:2:8:7 | After selection of val | +| stmts5.go:8:2:8:16 | ... += ... | stmts5.go:8:2:8:16 | After ... += ... | +| stmts5.go:8:2:8:16 | After ... += ... | stmts5.go:7:33:9:1 | After block statement | +| stmts5.go:8:2:8:16 | Before ... += ... | stmts5.go:8:2:8:7 | Before selection of val | | stmts5.go:8:12:8:16 | other | stmts5.go:8:2:8:16 | ... += ... | -| stmts5.go:11:1:12:1 | entry | stmts5.go:11:20:12:1 | skip | -| stmts5.go:11:1:12:1 | function declaration | stmts5.go:0:0:0:0 | exit | -| stmts5.go:11:14:11:16 | skip | stmts5.go:11:1:12:1 | function declaration | -| stmts5.go:11:20:12:1 | skip | stmts5.go:11:1:12:1 | exit | -| stmts6.go:0:0:0:0 | entry | stmts6.go:3:6:3:11 | skip | -| stmts6.go:3:1:8:1 | entry | stmts6.go:4:5:4:8 | true | -| stmts6.go:3:1:8:1 | function declaration | stmts6.go:0:0:0:0 | exit | -| stmts6.go:3:6:3:11 | skip | stmts6.go:3:1:8:1 | function declaration | -| stmts6.go:4:5:4:8 | true | stmts6.go:4:5:4:8 | true is true | -| stmts6.go:4:5:4:8 | true is false | stmts6.go:7:9:7:10 | 23 | -| stmts6.go:4:5:4:8 | true is true | stmts6.go:5:10:5:11 | 42 | -| stmts6.go:5:3:5:11 | return statement | stmts6.go:3:1:8:1 | exit | +| stmts5.go:11:1:12:1 | Entry | stmts5.go:11:20:12:1 | block statement | +| stmts5.go:11:1:12:1 | Normal Exit | stmts5.go:11:1:12:1 | Exit | +| stmts5.go:11:1:12:1 | function declaration | stmts5.go:0:0:0:0 | After stmts5.go | +| stmts5.go:11:20:12:1 | block statement | stmts5.go:11:1:12:1 | Normal Exit | +| stmts6.go:0:0:0:0 | After stmts6.go | stmts6.go:0:0:0:0 | Normal Exit | +| stmts6.go:0:0:0:0 | Entry | stmts6.go:0:0:0:0 | stmts6.go | +| stmts6.go:0:0:0:0 | Normal Exit | stmts6.go:0:0:0:0 | Exit | +| stmts6.go:0:0:0:0 | stmts6.go | stmts6.go:3:1:8:1 | function declaration | +| stmts6.go:3:1:8:1 | Entry | stmts6.go:3:19:8:1 | block statement | +| stmts6.go:3:1:8:1 | Normal Exit | stmts6.go:3:1:8:1 | Exit | +| stmts6.go:3:1:8:1 | function declaration | stmts6.go:0:0:0:0 | After stmts6.go | +| stmts6.go:3:19:8:1 | block statement | stmts6.go:4:2:6:2 | if statement | +| stmts6.go:4:2:6:2 | if statement | stmts6.go:4:5:4:8 | true | +| stmts6.go:4:5:4:8 | After true [true] | stmts6.go:4:10:6:2 | block statement | +| stmts6.go:4:5:4:8 | true | stmts6.go:4:5:4:8 | After true [true] | +| stmts6.go:4:10:6:2 | block statement | stmts6.go:5:3:5:11 | Before return statement | +| stmts6.go:5:3:5:11 | Before return statement | stmts6.go:5:10:5:11 | 42 | +| stmts6.go:5:3:5:11 | return statement | stmts6.go:3:1:8:1 | Normal Exit | | stmts6.go:5:10:5:11 | 42 | stmts6.go:5:3:5:11 | return statement | -| stmts6.go:7:9:7:10 | 23 | stmts6.go:7:2:7:10 | return statement | -| stmts7.go:0:0:0:0 | entry | stmts7.go:3:1:3:12 | skip | -| stmts7.go:3:1:3:12 | skip | stmts7.go:5:6:5:17 | skip | -| stmts7.go:5:1:8:1 | entry | stmts7.go:6:2:6:5 | skip | -| stmts7.go:5:1:8:1 | function declaration | stmts7.go:10:6:10:15 | skip | -| stmts7.go:5:6:5:17 | skip | stmts7.go:5:1:8:1 | function declaration | -| stmts7.go:6:2:6:5 | assignment to blah | stmts7.go:7:2:7:12 | selection of Println | -| stmts7.go:6:2:6:5 | skip | stmts7.go:6:10:6:16 | recover | -| stmts7.go:6:10:6:16 | recover | stmts7.go:6:10:6:18 | call to recover | -| stmts7.go:6:10:6:18 | call to recover | stmts7.go:6:2:6:5 | assignment to blah | -| stmts7.go:7:2:7:12 | selection of Println | stmts7.go:7:14:7:26 | "recovered: " | -| stmts7.go:7:2:7:33 | call to Println | stmts7.go:5:1:8:1 | exit | -| stmts7.go:7:14:7:26 | "recovered: " | stmts7.go:7:29:7:32 | blah | -| stmts7.go:7:29:7:32 | blah | stmts7.go:7:2:7:33 | call to Println | -| stmts7.go:10:1:13:1 | entry | stmts7.go:11:8:11:19 | recoverPanic | -| stmts7.go:10:1:13:1 | function declaration | stmts7.go:15:1:17:1 | skip | -| stmts7.go:10:6:10:15 | skip | stmts7.go:10:1:13:1 | function declaration | -| stmts7.go:11:2:11:21 | defer statement | stmts7.go:12:2:12:6 | panic | -| stmts7.go:11:8:11:19 | recoverPanic | stmts7.go:11:2:11:21 | defer statement | -| stmts7.go:11:8:11:21 | call to recoverPanic | stmts7.go:10:1:13:1 | exit | -| stmts7.go:12:2:12:6 | panic | stmts7.go:12:8:12:9 | "" | -| stmts7.go:12:2:12:10 | call to panic | stmts7.go:11:8:11:21 | call to recoverPanic | -| stmts7.go:12:8:12:9 | "" | stmts7.go:12:2:12:10 | call to panic | -| stmts7.go:15:1:17:1 | skip | stmts7.go:19:26:19:28 | skip | -| stmts7.go:19:1:21:1 | entry | stmts7.go:19:7:19:13 | argument corresponding to methods | -| stmts7.go:19:1:21:1 | function declaration | stmts7.go:23:6:23:14 | skip | -| stmts7.go:19:7:19:13 | argument corresponding to methods | stmts7.go:19:7:19:13 | initialization of methods | -| stmts7.go:19:7:19:13 | initialization of methods | stmts7.go:20:2:20:8 | methods | -| stmts7.go:19:26:19:28 | skip | stmts7.go:19:1:21:1 | function declaration | -| stmts7.go:20:2:20:8 | implicit dereference | stmts7.go:19:1:21:1 | exit | -| stmts7.go:20:2:20:8 | implicit dereference | stmts7.go:20:2:20:11 | selection of fn | -| stmts7.go:20:2:20:8 | methods | stmts7.go:20:2:20:8 | implicit dereference | -| stmts7.go:20:2:20:11 | selection of fn | stmts7.go:20:2:20:13 | call to fn | -| stmts7.go:20:2:20:13 | call to fn | stmts7.go:19:1:21:1 | exit | -| stmts7.go:23:1:28:1 | entry | stmts7.go:23:16:23:23 | argument corresponding to callback | -| stmts7.go:23:1:28:1 | function declaration | stmts7.go:0:0:0:0 | exit | -| stmts7.go:23:6:23:14 | skip | stmts7.go:23:1:28:1 | function declaration | -| stmts7.go:23:16:23:23 | argument corresponding to callback | stmts7.go:23:16:23:23 | initialization of callback | -| stmts7.go:23:16:23:23 | initialization of callback | stmts7.go:24:8:24:15 | callback | -| stmts7.go:24:2:24:20 | defer statement | stmts7.go:25:10:25:17 | callback | -| stmts7.go:24:8:24:15 | callback | stmts7.go:24:8:24:18 | selection of fn | -| stmts7.go:24:8:24:18 | selection of fn | stmts7.go:24:2:24:20 | defer statement | -| stmts7.go:24:8:24:20 | call to fn | stmts7.go:23:1:28:1 | exit | -| stmts7.go:25:2:25:23 | defer statement | stmts7.go:26:2:26:12 | selection of Println | -| stmts7.go:25:8:25:18 | implicit dereference | stmts7.go:24:8:24:20 | call to fn | -| stmts7.go:25:8:25:18 | implicit dereference | stmts7.go:25:8:25:21 | selection of fn | -| stmts7.go:25:8:25:21 | selection of fn | stmts7.go:25:2:25:23 | defer statement | -| stmts7.go:25:8:25:23 | call to fn | stmts7.go:24:8:24:20 | call to fn | -| stmts7.go:25:9:25:17 | &... | stmts7.go:25:8:25:18 | implicit dereference | -| stmts7.go:25:10:25:17 | callback | stmts7.go:25:9:25:17 | &... | -| stmts7.go:26:2:26:12 | selection of Println | stmts7.go:26:14:26:30 | "print something" | -| stmts7.go:26:2:26:31 | call to Println | stmts7.go:25:8:25:23 | call to fn | -| stmts7.go:26:2:26:31 | call to Println | stmts7.go:27:9:27:13 | false | -| stmts7.go:26:14:26:30 | "print something" | stmts7.go:26:2:26:31 | call to Println | -| stmts7.go:27:2:27:13 | return statement | stmts7.go:25:8:25:23 | call to fn | -| stmts7.go:27:9:27:13 | false | stmts7.go:27:2:27:13 | return statement | -| stmts8.go:0:0:0:0 | entry | stmts8.go:3:6:3:11 | skip | -| stmts8.go:3:1:7:1 | entry | stmts8.go:3:13:3:13 | argument corresponding to x | -| stmts8.go:3:1:7:1 | function declaration | stmts8.go:9:6:9:12 | skip | -| stmts8.go:3:6:3:11 | skip | stmts8.go:3:1:7:1 | function declaration | -| stmts8.go:3:13:3:13 | argument corresponding to x | stmts8.go:3:13:3:13 | initialization of x | -| stmts8.go:3:13:3:13 | initialization of x | stmts8.go:4:2:4:2 | skip | -| stmts8.go:4:2:4:2 | assignment to y | stmts8.go:5:2:5:2 | skip | -| stmts8.go:4:2:4:2 | skip | stmts8.go:4:7:4:7 | x | +| stmts7.go:0:0:0:0 | After stmts7.go | stmts7.go:0:0:0:0 | Normal Exit | +| stmts7.go:0:0:0:0 | Entry | stmts7.go:0:0:0:0 | stmts7.go | +| stmts7.go:0:0:0:0 | Normal Exit | stmts7.go:0:0:0:0 | Exit | +| stmts7.go:0:0:0:0 | stmts7.go | stmts7.go:3:1:6:1 | import declaration | +| stmts7.go:3:1:6:1 | import declaration | stmts7.go:8:1:11:1 | function declaration | +| stmts7.go:8:1:11:1 | Entry | stmts7.go:8:21:11:1 | block statement | +| stmts7.go:8:1:11:1 | Exceptional Exit | stmts7.go:8:1:11:1 | Exit | +| stmts7.go:8:1:11:1 | Normal Exit | stmts7.go:8:1:11:1 | Exit | +| stmts7.go:8:1:11:1 | function declaration | stmts7.go:13:1:16:1 | function declaration | +| stmts7.go:8:21:11:1 | After block statement | stmts7.go:8:1:11:1 | Normal Exit | +| stmts7.go:8:21:11:1 | block statement | stmts7.go:9:2:9:18 | ... := ... | +| stmts7.go:9:2:9:18 | ... := ... | stmts7.go:9:10:9:18 | Before call to recover | +| stmts7.go:9:2:9:18 | After ... := ... | stmts7.go:10:2:10:33 | expression statement | +| stmts7.go:9:2:9:18 | assign:0 ... := ... | stmts7.go:9:2:9:18 | After ... := ... | +| stmts7.go:9:10:9:16 | recover | stmts7.go:9:10:9:18 | call to recover | +| stmts7.go:9:10:9:18 | After call to recover | stmts7.go:9:2:9:18 | assign:0 ... := ... | +| stmts7.go:9:10:9:18 | Before call to recover | stmts7.go:9:10:9:16 | recover | +| stmts7.go:9:10:9:18 | call to recover | stmts7.go:9:10:9:18 | After call to recover | +| stmts7.go:10:2:10:12 | After selection of Println | stmts7.go:10:14:10:26 | "recovered: " | +| stmts7.go:10:2:10:12 | Before selection of Println | stmts7.go:10:2:10:12 | selection of Println | +| stmts7.go:10:2:10:12 | selection of Println | stmts7.go:10:2:10:12 | After selection of Println | +| stmts7.go:10:2:10:33 | After call to Println | stmts7.go:10:2:10:33 | After expression statement | +| stmts7.go:10:2:10:33 | After expression statement | stmts7.go:8:21:11:1 | After block statement | +| stmts7.go:10:2:10:33 | Before call to Println | stmts7.go:10:2:10:12 | Before selection of Println | +| stmts7.go:10:2:10:33 | call to Println | stmts7.go:8:1:11:1 | Exceptional Exit | +| stmts7.go:10:2:10:33 | call to Println | stmts7.go:10:2:10:33 | After call to Println | +| stmts7.go:10:2:10:33 | expression statement | stmts7.go:10:2:10:33 | Before call to Println | +| stmts7.go:10:14:10:26 | "recovered: " | stmts7.go:10:29:10:32 | blah | +| stmts7.go:10:29:10:32 | blah | stmts7.go:10:2:10:33 | call to Println | +| stmts7.go:13:1:16:1 | Entry | stmts7.go:13:19:16:1 | block statement | +| stmts7.go:13:1:16:1 | Exceptional Exit | stmts7.go:13:1:16:1 | Exit | +| stmts7.go:13:1:16:1 | Normal Exit | stmts7.go:13:1:16:1 | Exit | +| stmts7.go:13:1:16:1 | function declaration | stmts7.go:18:1:20:1 | type declaration | +| stmts7.go:13:19:16:1 | After block statement | stmts7.go:13:1:16:1 | Normal Exit | +| stmts7.go:13:19:16:1 | block statement | stmts7.go:14:2:14:21 | Before defer statement | +| stmts7.go:14:2:14:21 | After defer statement | stmts7.go:15:2:15:10 | expression statement | +| stmts7.go:14:2:14:21 | Before defer statement | stmts7.go:14:8:14:21 | call to recoverPanic | +| stmts7.go:14:2:14:21 | catch-defer-panic defer statement | stmts7.go:13:1:16:1 | Exceptional Exit | +| stmts7.go:14:2:14:21 | defer statement | stmts7.go:14:2:14:21 | After defer statement | +| stmts7.go:14:8:14:19 | recoverPanic | stmts7.go:14:8:14:21 | After call to recoverPanic | +| stmts7.go:14:8:14:21 | After call to recoverPanic | stmts7.go:14:2:14:21 | defer statement | +| stmts7.go:14:8:14:21 | call to recoverPanic | stmts7.go:14:8:14:19 | recoverPanic | +| stmts7.go:14:8:14:21 | defer-invoke call to recoverPanic | stmts7.go:13:19:16:1 | After block statement | +| stmts7.go:14:8:14:21 | defer-invoke call to recoverPanic | stmts7.go:14:2:14:21 | catch-defer-panic defer statement | +| stmts7.go:15:2:15:6 | panic | stmts7.go:15:8:15:9 | "" | +| stmts7.go:15:2:15:10 | Before call to panic | stmts7.go:15:2:15:6 | panic | +| stmts7.go:15:2:15:10 | call to panic | stmts7.go:15:2:15:10 | catch-panic expression statement | +| stmts7.go:15:2:15:10 | catch-panic expression statement | stmts7.go:14:8:14:21 | defer-invoke call to recoverPanic | +| stmts7.go:15:2:15:10 | expression statement | stmts7.go:15:2:15:10 | Before call to panic | +| stmts7.go:15:8:15:9 | "" | stmts7.go:15:2:15:10 | call to panic | +| stmts7.go:18:1:20:1 | type declaration | stmts7.go:22:1:24:1 | function declaration | +| stmts7.go:22:1:24:1 | Entry | stmts7.go:22:7:22:13 | methods | +| stmts7.go:22:1:24:1 | Exceptional Exit | stmts7.go:22:1:24:1 | Exit | +| stmts7.go:22:1:24:1 | Normal Exit | stmts7.go:22:1:24:1 | Exit | +| stmts7.go:22:1:24:1 | function declaration | stmts7.go:26:1:31:1 | function declaration | +| stmts7.go:22:7:22:13 | methods | stmts7.go:22:32:24:1 | block statement | +| stmts7.go:22:32:24:1 | After block statement | stmts7.go:22:1:24:1 | Normal Exit | +| stmts7.go:22:32:24:1 | block statement | stmts7.go:23:2:23:13 | expression statement | +| stmts7.go:23:2:23:8 | After methods | stmts7.go:23:2:23:8 | implicit-deref methods | +| stmts7.go:23:2:23:8 | implicit-deref methods | stmts7.go:23:2:23:11 | selection of fn | +| stmts7.go:23:2:23:8 | methods | stmts7.go:23:2:23:8 | After methods | +| stmts7.go:23:2:23:11 | After selection of fn | stmts7.go:23:2:23:13 | call to fn | +| stmts7.go:23:2:23:11 | Before selection of fn | stmts7.go:23:2:23:8 | methods | +| stmts7.go:23:2:23:11 | selection of fn | stmts7.go:23:2:23:11 | After selection of fn | +| stmts7.go:23:2:23:13 | After call to fn | stmts7.go:23:2:23:13 | After expression statement | +| stmts7.go:23:2:23:13 | After expression statement | stmts7.go:22:32:24:1 | After block statement | +| stmts7.go:23:2:23:13 | Before call to fn | stmts7.go:23:2:23:11 | Before selection of fn | +| stmts7.go:23:2:23:13 | call to fn | stmts7.go:22:1:24:1 | Exceptional Exit | +| stmts7.go:23:2:23:13 | call to fn | stmts7.go:23:2:23:13 | After call to fn | +| stmts7.go:23:2:23:13 | expression statement | stmts7.go:23:2:23:13 | Before call to fn | +| stmts7.go:26:1:31:1 | Entry | stmts7.go:26:16:26:23 | callback | +| stmts7.go:26:1:31:1 | Exceptional Exit | stmts7.go:26:1:31:1 | Exit | +| stmts7.go:26:1:31:1 | Normal Exit | stmts7.go:26:1:31:1 | Exit | +| stmts7.go:26:1:31:1 | function declaration | stmts7.go:33:1:36:1 | function declaration | +| stmts7.go:26:16:26:23 | callback | stmts7.go:26:40:31:1 | block statement | +| stmts7.go:26:40:31:1 | After block statement | stmts7.go:26:1:31:1 | Normal Exit | +| stmts7.go:26:40:31:1 | block statement | stmts7.go:27:2:27:20 | Before defer statement | +| stmts7.go:27:2:27:20 | After defer statement | stmts7.go:28:2:28:23 | Before defer statement | +| stmts7.go:27:2:27:20 | Before defer statement | stmts7.go:27:8:27:20 | call to fn | +| stmts7.go:27:2:27:20 | catch-defer-panic defer statement | stmts7.go:26:1:31:1 | Exceptional Exit | +| stmts7.go:27:2:27:20 | defer statement | stmts7.go:27:2:27:20 | After defer statement | +| stmts7.go:27:8:27:15 | callback | stmts7.go:27:8:27:18 | selection of fn | +| stmts7.go:27:8:27:18 | After selection of fn | stmts7.go:27:8:27:20 | After call to fn | +| stmts7.go:27:8:27:18 | Before selection of fn | stmts7.go:27:8:27:15 | callback | +| stmts7.go:27:8:27:18 | selection of fn | stmts7.go:27:8:27:18 | After selection of fn | +| stmts7.go:27:8:27:20 | After call to fn | stmts7.go:27:2:27:20 | defer statement | +| stmts7.go:27:8:27:20 | call to fn | stmts7.go:27:8:27:18 | Before selection of fn | +| stmts7.go:27:8:27:20 | defer-invoke call to fn | stmts7.go:26:40:31:1 | After block statement | +| stmts7.go:27:8:27:20 | defer-invoke call to fn | stmts7.go:27:2:27:20 | catch-defer-panic defer statement | +| stmts7.go:28:2:28:23 | After defer statement | stmts7.go:29:2:29:31 | expression statement | +| stmts7.go:28:2:28:23 | Before defer statement | stmts7.go:28:8:28:23 | call to fn | +| stmts7.go:28:2:28:23 | catch-defer-panic defer statement | stmts7.go:27:8:27:20 | defer-invoke call to fn | +| stmts7.go:28:2:28:23 | defer statement | stmts7.go:28:2:28:23 | After defer statement | +| stmts7.go:28:8:28:21 | After selection of fn | stmts7.go:28:8:28:23 | After call to fn | +| stmts7.go:28:8:28:21 | Before selection of fn | stmts7.go:28:9:28:17 | Before &... | +| stmts7.go:28:8:28:21 | selection of fn | stmts7.go:28:8:28:21 | After selection of fn | +| stmts7.go:28:8:28:23 | After call to fn | stmts7.go:28:2:28:23 | defer statement | +| stmts7.go:28:8:28:23 | call to fn | stmts7.go:28:8:28:21 | Before selection of fn | +| stmts7.go:28:8:28:23 | defer-invoke call to fn | stmts7.go:27:8:27:20 | defer-invoke call to fn | +| stmts7.go:28:8:28:23 | defer-invoke call to fn | stmts7.go:28:2:28:23 | catch-defer-panic defer statement | +| stmts7.go:28:9:28:17 | &... | stmts7.go:28:9:28:17 | After &... | +| stmts7.go:28:9:28:17 | After &... | stmts7.go:28:9:28:17 | implicit-deref &... | +| stmts7.go:28:9:28:17 | Before &... | stmts7.go:28:10:28:17 | callback | +| stmts7.go:28:9:28:17 | implicit-deref &... | stmts7.go:28:8:28:21 | selection of fn | +| stmts7.go:28:10:28:17 | callback | stmts7.go:28:9:28:17 | &... | +| stmts7.go:29:2:29:12 | After selection of Println | stmts7.go:29:14:29:30 | "print something" | +| stmts7.go:29:2:29:12 | Before selection of Println | stmts7.go:29:2:29:12 | selection of Println | +| stmts7.go:29:2:29:12 | selection of Println | stmts7.go:29:2:29:12 | After selection of Println | +| stmts7.go:29:2:29:31 | After call to Println | stmts7.go:29:2:29:31 | After expression statement | +| stmts7.go:29:2:29:31 | After expression statement | stmts7.go:30:2:30:13 | Before return statement | +| stmts7.go:29:2:29:31 | Before call to Println | stmts7.go:29:2:29:12 | Before selection of Println | +| stmts7.go:29:2:29:31 | call to Println | stmts7.go:29:2:29:31 | After call to Println | +| stmts7.go:29:2:29:31 | call to Println | stmts7.go:29:2:29:31 | catch-panic expression statement | +| stmts7.go:29:2:29:31 | catch-panic expression statement | stmts7.go:28:8:28:23 | defer-invoke call to fn | +| stmts7.go:29:2:29:31 | expression statement | stmts7.go:29:2:29:31 | Before call to Println | +| stmts7.go:29:14:29:30 | "print something" | stmts7.go:29:2:29:31 | call to Println | +| stmts7.go:30:2:30:13 | Before return statement | stmts7.go:30:9:30:13 | false | +| stmts7.go:30:2:30:13 | catch-return return statement | stmts7.go:28:8:28:23 | defer-invoke call to fn | +| stmts7.go:30:2:30:13 | return statement | stmts7.go:30:2:30:13 | catch-return return statement | +| stmts7.go:30:9:30:13 | false | stmts7.go:30:2:30:13 | return statement | +| stmts7.go:33:1:36:1 | Entry | stmts7.go:33:24:36:1 | block statement | +| stmts7.go:33:1:36:1 | Exceptional Exit | stmts7.go:33:1:36:1 | Exit | +| stmts7.go:33:1:36:1 | function declaration | stmts7.go:38:1:41:1 | function declaration | +| stmts7.go:33:24:36:1 | block statement | stmts7.go:34:2:34:21 | Before defer statement | +| stmts7.go:34:2:34:21 | After defer statement | stmts7.go:35:2:35:11 | expression statement | +| stmts7.go:34:2:34:21 | Before defer statement | stmts7.go:34:8:34:21 | call to recoverPanic | +| stmts7.go:34:2:34:21 | defer statement | stmts7.go:34:2:34:21 | After defer statement | +| stmts7.go:34:8:34:19 | recoverPanic | stmts7.go:34:8:34:21 | After call to recoverPanic | +| stmts7.go:34:8:34:21 | After call to recoverPanic | stmts7.go:34:2:34:21 | defer statement | +| stmts7.go:34:8:34:21 | call to recoverPanic | stmts7.go:34:8:34:19 | recoverPanic | +| stmts7.go:35:2:35:8 | After selection of Exit | stmts7.go:35:10:35:10 | 1 | +| stmts7.go:35:2:35:8 | Before selection of Exit | stmts7.go:35:2:35:8 | selection of Exit | +| stmts7.go:35:2:35:8 | selection of Exit | stmts7.go:35:2:35:8 | After selection of Exit | +| stmts7.go:35:2:35:11 | Before call to Exit | stmts7.go:35:2:35:8 | Before selection of Exit | +| stmts7.go:35:2:35:11 | call to Exit | stmts7.go:33:1:36:1 | Exceptional Exit | +| stmts7.go:35:2:35:11 | expression statement | stmts7.go:35:2:35:11 | Before call to Exit | +| stmts7.go:35:10:35:10 | 1 | stmts7.go:35:2:35:11 | call to Exit | +| stmts7.go:38:1:41:1 | Entry | stmts7.go:38:22:41:1 | block statement | +| stmts7.go:38:1:41:1 | Exceptional Exit | stmts7.go:38:1:41:1 | Exit | +| stmts7.go:38:1:41:1 | Normal Exit | stmts7.go:38:1:41:1 | Exit | +| stmts7.go:38:1:41:1 | function declaration | stmts7.go:43:1:45:1 | function declaration | +| stmts7.go:38:22:41:1 | After block statement | stmts7.go:38:1:41:1 | Normal Exit | +| stmts7.go:38:22:41:1 | block statement | stmts7.go:39:2:39:21 | Before defer statement | +| stmts7.go:39:2:39:21 | After defer statement | stmts7.go:40:2:40:30 | Before defer statement | +| stmts7.go:39:2:39:21 | Before defer statement | stmts7.go:39:8:39:21 | call to recoverPanic | +| stmts7.go:39:2:39:21 | catch-defer-panic defer statement | stmts7.go:38:1:41:1 | Exceptional Exit | +| stmts7.go:39:2:39:21 | defer statement | stmts7.go:39:2:39:21 | After defer statement | +| stmts7.go:39:8:39:19 | recoverPanic | stmts7.go:39:8:39:21 | After call to recoverPanic | +| stmts7.go:39:8:39:21 | After call to recoverPanic | stmts7.go:39:2:39:21 | defer statement | +| stmts7.go:39:8:39:21 | call to recoverPanic | stmts7.go:39:8:39:19 | recoverPanic | +| stmts7.go:39:8:39:21 | defer-invoke call to recoverPanic | stmts7.go:38:22:41:1 | After block statement | +| stmts7.go:39:8:39:21 | defer-invoke call to recoverPanic | stmts7.go:39:2:39:21 | catch-defer-panic defer statement | +| stmts7.go:40:2:40:30 | After defer statement | stmts7.go:40:8:40:30 | defer-invoke call to panic | +| stmts7.go:40:2:40:30 | Before defer statement | stmts7.go:40:8:40:30 | call to panic | +| stmts7.go:40:2:40:30 | catch-defer-panic defer statement | stmts7.go:39:8:39:21 | defer-invoke call to recoverPanic | +| stmts7.go:40:2:40:30 | defer statement | stmts7.go:40:2:40:30 | After defer statement | +| stmts7.go:40:8:40:12 | panic | stmts7.go:40:14:40:29 | "deferred panic" | +| stmts7.go:40:8:40:30 | After call to panic | stmts7.go:40:2:40:30 | defer statement | +| stmts7.go:40:8:40:30 | call to panic | stmts7.go:40:8:40:12 | panic | +| stmts7.go:40:8:40:30 | defer-invoke call to panic | stmts7.go:39:8:39:21 | defer-invoke call to recoverPanic | +| stmts7.go:40:8:40:30 | defer-invoke call to panic | stmts7.go:40:2:40:30 | catch-defer-panic defer statement | +| stmts7.go:40:14:40:29 | "deferred panic" | stmts7.go:40:8:40:30 | After call to panic | +| stmts7.go:43:1:45:1 | Entry | stmts7.go:43:27:45:1 | block statement | +| stmts7.go:43:1:45:1 | Exceptional Exit | stmts7.go:43:1:45:1 | Exit | +| stmts7.go:43:1:45:1 | function declaration | stmts7.go:47:1:50:1 | function declaration | +| stmts7.go:43:27:45:1 | block statement | stmts7.go:44:2:44:36 | Before defer statement | +| stmts7.go:44:2:44:36 | After defer statement | stmts7.go:44:8:44:36 | defer-invoke call to panic | +| stmts7.go:44:2:44:36 | Before defer statement | stmts7.go:44:8:44:36 | call to panic | +| stmts7.go:44:2:44:36 | catch-defer-panic defer statement | stmts7.go:43:1:45:1 | Exceptional Exit | +| stmts7.go:44:2:44:36 | defer statement | stmts7.go:44:2:44:36 | After defer statement | +| stmts7.go:44:8:44:12 | panic | stmts7.go:44:14:44:35 | "final deferred panic" | +| stmts7.go:44:8:44:36 | After call to panic | stmts7.go:44:2:44:36 | defer statement | +| stmts7.go:44:8:44:36 | call to panic | stmts7.go:44:8:44:12 | panic | +| stmts7.go:44:8:44:36 | defer-invoke call to panic | stmts7.go:44:2:44:36 | catch-defer-panic defer statement | +| stmts7.go:44:14:44:35 | "final deferred panic" | stmts7.go:44:8:44:36 | After call to panic | +| stmts7.go:47:1:50:1 | Entry | stmts7.go:47:35:50:1 | block statement | +| stmts7.go:47:1:50:1 | Exceptional Exit | stmts7.go:47:1:50:1 | Exit | +| stmts7.go:47:1:50:1 | function declaration | stmts7.go:52:1:55:1 | function declaration | +| stmts7.go:47:35:50:1 | block statement | stmts7.go:48:2:48:21 | Before defer statement | +| stmts7.go:48:2:48:21 | After defer statement | stmts7.go:49:2:49:17 | Before defer statement | +| stmts7.go:48:2:48:21 | Before defer statement | stmts7.go:48:8:48:21 | call to recoverPanic | +| stmts7.go:48:2:48:21 | defer statement | stmts7.go:48:2:48:21 | After defer statement | +| stmts7.go:48:8:48:19 | recoverPanic | stmts7.go:48:8:48:21 | After call to recoverPanic | +| stmts7.go:48:8:48:21 | After call to recoverPanic | stmts7.go:48:2:48:21 | defer statement | +| stmts7.go:48:8:48:21 | call to recoverPanic | stmts7.go:48:8:48:19 | recoverPanic | +| stmts7.go:49:2:49:17 | After defer statement | stmts7.go:49:8:49:17 | defer-invoke call to Exit | +| stmts7.go:49:2:49:17 | Before defer statement | stmts7.go:49:8:49:17 | call to Exit | +| stmts7.go:49:2:49:17 | catch-defer-panic defer statement | stmts7.go:47:1:50:1 | Exceptional Exit | +| stmts7.go:49:2:49:17 | defer statement | stmts7.go:49:2:49:17 | After defer statement | +| stmts7.go:49:8:49:14 | After selection of Exit | stmts7.go:49:16:49:16 | 1 | +| stmts7.go:49:8:49:14 | Before selection of Exit | stmts7.go:49:8:49:14 | selection of Exit | +| stmts7.go:49:8:49:14 | selection of Exit | stmts7.go:49:8:49:14 | After selection of Exit | +| stmts7.go:49:8:49:17 | After call to Exit | stmts7.go:49:2:49:17 | defer statement | +| stmts7.go:49:8:49:17 | call to Exit | stmts7.go:49:8:49:14 | Before selection of Exit | +| stmts7.go:49:8:49:17 | defer-invoke call to Exit | stmts7.go:49:2:49:17 | catch-defer-panic defer statement | +| stmts7.go:49:16:49:16 | 1 | stmts7.go:49:8:49:17 | After call to Exit | +| stmts7.go:52:1:55:1 | Entry | stmts7.go:52:31:52:36 | values | +| stmts7.go:52:1:55:1 | Exceptional Exit | stmts7.go:52:1:55:1 | Exit | +| stmts7.go:52:1:55:1 | Normal Exit | stmts7.go:52:1:55:1 | Exit | +| stmts7.go:52:1:55:1 | function declaration | stmts7.go:57:1:62:1 | function declaration | +| stmts7.go:52:31:52:36 | values | stmts7.go:52:45:52:49 | index | +| stmts7.go:52:45:52:49 | index | stmts7.go:52:56:55:1 | block statement | +| stmts7.go:52:56:55:1 | After block statement | stmts7.go:52:1:55:1 | Normal Exit | +| stmts7.go:52:56:55:1 | block statement | stmts7.go:53:2:53:21 | Before defer statement | +| stmts7.go:53:2:53:21 | After defer statement | stmts7.go:54:2:54:18 | ... = ... | +| stmts7.go:53:2:53:21 | Before defer statement | stmts7.go:53:8:53:21 | call to recoverPanic | +| stmts7.go:53:2:53:21 | catch-defer-panic defer statement | stmts7.go:52:1:55:1 | Exceptional Exit | +| stmts7.go:53:2:53:21 | defer statement | stmts7.go:53:2:53:21 | After defer statement | +| stmts7.go:53:8:53:19 | recoverPanic | stmts7.go:53:8:53:21 | After call to recoverPanic | +| stmts7.go:53:8:53:21 | After call to recoverPanic | stmts7.go:53:2:53:21 | defer statement | +| stmts7.go:53:8:53:21 | call to recoverPanic | stmts7.go:53:8:53:19 | recoverPanic | +| stmts7.go:53:8:53:21 | defer-invoke call to recoverPanic | stmts7.go:52:56:55:1 | After block statement | +| stmts7.go:53:8:53:21 | defer-invoke call to recoverPanic | stmts7.go:53:2:53:21 | catch-defer-panic defer statement | +| stmts7.go:54:2:54:18 | ... = ... | stmts7.go:54:6:54:18 | Before index expression | +| stmts7.go:54:2:54:18 | After ... = ... | stmts7.go:53:8:53:21 | defer-invoke call to recoverPanic | +| stmts7.go:54:2:54:18 | catch-panic ... = ... | stmts7.go:53:8:53:21 | defer-invoke call to recoverPanic | +| stmts7.go:54:6:54:11 | values | stmts7.go:54:13:54:17 | index | +| stmts7.go:54:6:54:18 | After index expression | stmts7.go:54:2:54:18 | After ... = ... | +| stmts7.go:54:6:54:18 | Before index expression | stmts7.go:54:6:54:11 | values | +| stmts7.go:54:6:54:18 | index expression | stmts7.go:54:2:54:18 | catch-panic ... = ... | +| stmts7.go:54:6:54:18 | index expression | stmts7.go:54:6:54:18 | After index expression | +| stmts7.go:54:13:54:17 | index | stmts7.go:54:6:54:18 | index expression | +| stmts7.go:57:1:62:1 | Entry | stmts7.go:57:23:57:30 | register | +| stmts7.go:57:1:62:1 | Exceptional Exit | stmts7.go:57:1:62:1 | Exit | +| stmts7.go:57:1:62:1 | Normal Exit | stmts7.go:57:1:62:1 | Exit | +| stmts7.go:57:1:62:1 | function declaration | stmts7.go:64:1:68:1 | function declaration | +| stmts7.go:57:23:57:30 | register | stmts7.go:57:38:62:1 | block statement | +| stmts7.go:57:38:62:1 | After block statement | stmts7.go:57:1:62:1 | Normal Exit | +| stmts7.go:57:38:62:1 | block statement | stmts7.go:58:2:60:2 | if statement | +| stmts7.go:58:2:60:2 | After if statement | stmts7.go:61:2:61:20 | expression statement | +| stmts7.go:58:2:60:2 | if statement | stmts7.go:58:5:58:12 | register | +| stmts7.go:58:5:58:12 | After register [false] | stmts7.go:58:2:60:2 | After if statement | +| stmts7.go:58:5:58:12 | After register [true] | stmts7.go:58:14:60:2 | block statement | +| stmts7.go:58:5:58:12 | register | stmts7.go:58:5:58:12 | After register [false] | +| stmts7.go:58:5:58:12 | register | stmts7.go:58:5:58:12 | After register [true] | +| stmts7.go:58:14:60:2 | After block statement | stmts7.go:58:2:60:2 | After if statement | +| stmts7.go:58:14:60:2 | block statement | stmts7.go:59:3:59:22 | Before defer statement | +| stmts7.go:59:3:59:22 | After defer statement | stmts7.go:58:14:60:2 | After block statement | +| stmts7.go:59:3:59:22 | Before defer statement | stmts7.go:59:9:59:22 | call to recoverPanic | +| stmts7.go:59:3:59:22 | catch-defer-panic defer statement | stmts7.go:57:1:62:1 | Exceptional Exit | +| stmts7.go:59:3:59:22 | defer statement | stmts7.go:59:3:59:22 | After defer statement | +| stmts7.go:59:9:59:20 | recoverPanic | stmts7.go:59:9:59:22 | After call to recoverPanic | +| stmts7.go:59:9:59:22 | After call to recoverPanic | stmts7.go:59:3:59:22 | defer statement | +| stmts7.go:59:9:59:22 | call to recoverPanic | stmts7.go:59:9:59:20 | recoverPanic | +| stmts7.go:59:9:59:22 | defer-invoke call to recoverPanic | stmts7.go:57:38:62:1 | After block statement | +| stmts7.go:59:9:59:22 | defer-invoke call to recoverPanic | stmts7.go:59:3:59:22 | catch-defer-panic defer statement | +| stmts7.go:61:2:61:12 | After selection of Println | stmts7.go:61:14:61:19 | "done" | +| stmts7.go:61:2:61:12 | Before selection of Println | stmts7.go:61:2:61:12 | selection of Println | +| stmts7.go:61:2:61:12 | selection of Println | stmts7.go:61:2:61:12 | After selection of Println | +| stmts7.go:61:2:61:20 | After call to Println | stmts7.go:61:2:61:20 | After expression statement | +| stmts7.go:61:2:61:20 | After expression statement | stmts7.go:57:38:62:1 | After block statement | +| stmts7.go:61:2:61:20 | After expression statement | stmts7.go:59:9:59:22 | defer-invoke call to recoverPanic | +| stmts7.go:61:2:61:20 | Before call to Println | stmts7.go:61:2:61:12 | Before selection of Println | +| stmts7.go:61:2:61:20 | call to Println | stmts7.go:61:2:61:20 | After call to Println | +| stmts7.go:61:2:61:20 | call to Println | stmts7.go:61:2:61:20 | catch-panic expression statement | +| stmts7.go:61:2:61:20 | catch-panic expression statement | stmts7.go:57:1:62:1 | Exceptional Exit | +| stmts7.go:61:2:61:20 | catch-panic expression statement | stmts7.go:59:9:59:22 | defer-invoke call to recoverPanic | +| stmts7.go:61:2:61:20 | expression statement | stmts7.go:61:2:61:20 | Before call to Println | +| stmts7.go:61:14:61:19 | "done" | stmts7.go:61:2:61:20 | call to Println | +| stmts7.go:64:1:68:1 | Entry | stmts7.go:64:20:64:24 | count | +| stmts7.go:64:1:68:1 | Exceptional Exit | stmts7.go:64:1:68:1 | Exit | +| stmts7.go:64:1:68:1 | Normal Exit | stmts7.go:64:1:68:1 | Exit | +| stmts7.go:64:1:68:1 | function declaration | stmts7.go:70:1:77:1 | function declaration | +| stmts7.go:64:20:64:24 | count | stmts7.go:64:31:68:1 | block statement | +| stmts7.go:64:31:68:1 | After block statement | stmts7.go:64:1:68:1 | Normal Exit | +| stmts7.go:64:31:68:1 | block statement | stmts7.go:65:2:67:2 | for statement | +| stmts7.go:65:2:67:2 | After for statement | stmts7.go:64:31:68:1 | After block statement | +| stmts7.go:65:2:67:2 | After for statement | stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | +| stmts7.go:65:2:67:2 | [LoopHeader] for statement | stmts7.go:65:25:65:27 | Before increment statement | +| stmts7.go:65:2:67:2 | for statement | stmts7.go:65:6:65:11 | ... := ... | +| stmts7.go:65:6:65:11 | ... := ... | stmts7.go:65:11:65:11 | 0 | +| stmts7.go:65:6:65:11 | After ... := ... | stmts7.go:65:14:65:22 | Before ...<... | +| stmts7.go:65:6:65:11 | assign:0 ... := ... | stmts7.go:65:6:65:11 | After ... := ... | +| stmts7.go:65:11:65:11 | 0 | stmts7.go:65:6:65:11 | assign:0 ... := ... | +| stmts7.go:65:14:65:14 | i | stmts7.go:65:18:65:22 | count | +| stmts7.go:65:14:65:22 | ...<... | stmts7.go:65:14:65:22 | After ...<... [false] | +| stmts7.go:65:14:65:22 | ...<... | stmts7.go:65:14:65:22 | After ...<... [true] | +| stmts7.go:65:14:65:22 | After ...<... [false] | stmts7.go:65:2:67:2 | After for statement | +| stmts7.go:65:14:65:22 | After ...<... [true] | stmts7.go:65:29:67:2 | block statement | +| stmts7.go:65:14:65:22 | Before ...<... | stmts7.go:65:14:65:14 | i | +| stmts7.go:65:18:65:22 | count | stmts7.go:65:14:65:22 | ...<... | +| stmts7.go:65:25:65:25 | i | stmts7.go:65:25:65:27 | increment statement | +| stmts7.go:65:25:65:27 | After increment statement | stmts7.go:65:14:65:22 | Before ...<... | +| stmts7.go:65:25:65:27 | Before increment statement | stmts7.go:65:25:65:25 | i | +| stmts7.go:65:25:65:27 | increment statement | stmts7.go:65:25:65:27 | After increment statement | +| stmts7.go:65:29:67:2 | After block statement | stmts7.go:65:2:67:2 | [LoopHeader] for statement | +| stmts7.go:65:29:67:2 | block statement | stmts7.go:66:3:66:22 | Before defer statement | +| stmts7.go:66:3:66:22 | After defer statement | stmts7.go:65:29:67:2 | After block statement | +| stmts7.go:66:3:66:22 | Before defer statement | stmts7.go:66:9:66:22 | call to recoverPanic | +| stmts7.go:66:3:66:22 | catch-defer-panic defer statement | stmts7.go:64:1:68:1 | Exceptional Exit | +| stmts7.go:66:3:66:22 | catch-defer-panic defer statement | stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | +| stmts7.go:66:3:66:22 | defer statement | stmts7.go:66:3:66:22 | After defer statement | +| stmts7.go:66:9:66:20 | recoverPanic | stmts7.go:66:9:66:22 | After call to recoverPanic | +| stmts7.go:66:9:66:22 | After call to recoverPanic | stmts7.go:66:3:66:22 | defer statement | +| stmts7.go:66:9:66:22 | call to recoverPanic | stmts7.go:66:9:66:20 | recoverPanic | +| stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | stmts7.go:64:31:68:1 | After block statement | +| stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | stmts7.go:66:3:66:22 | catch-defer-panic defer statement | +| stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | stmts7.go:66:9:66:22 | defer-invoke call to recoverPanic | +| stmts7.go:70:1:77:1 | Entry | stmts7.go:70:20:70:23 | skip | +| stmts7.go:70:1:77:1 | Exceptional Exit | stmts7.go:70:1:77:1 | Exit | +| stmts7.go:70:1:77:1 | Normal Exit | stmts7.go:70:1:77:1 | Exit | +| stmts7.go:70:1:77:1 | function declaration | stmts7.go:79:1:85:1 | function declaration | +| stmts7.go:70:20:70:23 | skip | stmts7.go:70:31:77:1 | block statement | +| stmts7.go:70:31:77:1 | After block statement | stmts7.go:70:1:77:1 | Normal Exit | +| stmts7.go:70:31:77:1 | block statement | stmts7.go:71:2:73:2 | if statement | +| stmts7.go:71:2:73:2 | After if statement | stmts7.go:74:2:74:21 | Before defer statement | +| stmts7.go:71:2:73:2 | if statement | stmts7.go:71:5:71:8 | skip | +| stmts7.go:71:5:71:8 | After skip [false] | stmts7.go:71:2:73:2 | After if statement | +| stmts7.go:71:5:71:8 | After skip [true] | stmts7.go:71:10:73:2 | block statement | +| stmts7.go:71:5:71:8 | skip | stmts7.go:71:5:71:8 | After skip [false] | +| stmts7.go:71:5:71:8 | skip | stmts7.go:71:5:71:8 | After skip [true] | +| stmts7.go:71:10:73:2 | block statement | stmts7.go:72:3:72:11 | Before goto statement | +| stmts7.go:72:3:72:11 | Before goto statement | stmts7.go:72:3:72:11 | goto statement | +| stmts7.go:72:3:72:11 | goto statement | stmts7.go:75:1:76:20 | labeled statement | +| stmts7.go:74:2:74:21 | After defer statement | stmts7.go:75:1:76:20 | labeled statement | +| stmts7.go:74:2:74:21 | Before defer statement | stmts7.go:74:8:74:21 | call to recoverPanic | +| stmts7.go:74:2:74:21 | catch-defer-panic defer statement | stmts7.go:70:1:77:1 | Exceptional Exit | +| stmts7.go:74:2:74:21 | defer statement | stmts7.go:74:2:74:21 | After defer statement | +| stmts7.go:74:8:74:19 | recoverPanic | stmts7.go:74:8:74:21 | After call to recoverPanic | +| stmts7.go:74:8:74:21 | After call to recoverPanic | stmts7.go:74:2:74:21 | defer statement | +| stmts7.go:74:8:74:21 | call to recoverPanic | stmts7.go:74:8:74:19 | recoverPanic | +| stmts7.go:74:8:74:21 | defer-invoke call to recoverPanic | stmts7.go:70:31:77:1 | After block statement | +| stmts7.go:74:8:74:21 | defer-invoke call to recoverPanic | stmts7.go:74:2:74:21 | catch-defer-panic defer statement | +| stmts7.go:75:1:76:20 | After labeled statement | stmts7.go:70:31:77:1 | After block statement | +| stmts7.go:75:1:76:20 | After labeled statement | stmts7.go:74:8:74:21 | defer-invoke call to recoverPanic | +| stmts7.go:75:1:76:20 | catch-panic labeled statement | stmts7.go:70:1:77:1 | Exceptional Exit | +| stmts7.go:75:1:76:20 | catch-panic labeled statement | stmts7.go:74:8:74:21 | defer-invoke call to recoverPanic | +| stmts7.go:75:1:76:20 | labeled statement | stmts7.go:76:2:76:20 | expression statement | +| stmts7.go:76:2:76:12 | After selection of Println | stmts7.go:76:14:76:19 | "done" | +| stmts7.go:76:2:76:12 | Before selection of Println | stmts7.go:76:2:76:12 | selection of Println | +| stmts7.go:76:2:76:12 | selection of Println | stmts7.go:76:2:76:12 | After selection of Println | +| stmts7.go:76:2:76:20 | After call to Println | stmts7.go:76:2:76:20 | After expression statement | +| stmts7.go:76:2:76:20 | After expression statement | stmts7.go:75:1:76:20 | After labeled statement | +| stmts7.go:76:2:76:20 | Before call to Println | stmts7.go:76:2:76:12 | Before selection of Println | +| stmts7.go:76:2:76:20 | call to Println | stmts7.go:75:1:76:20 | catch-panic labeled statement | +| stmts7.go:76:2:76:20 | call to Println | stmts7.go:76:2:76:20 | After call to Println | +| stmts7.go:76:2:76:20 | expression statement | stmts7.go:76:2:76:20 | Before call to Println | +| stmts7.go:76:14:76:19 | "done" | stmts7.go:76:2:76:20 | call to Println | +| stmts7.go:79:1:85:1 | Entry | stmts7.go:79:23:79:32 | panicEarly | +| stmts7.go:79:1:85:1 | Exceptional Exit | stmts7.go:79:1:85:1 | Exit | +| stmts7.go:79:1:85:1 | Normal Exit | stmts7.go:79:1:85:1 | Exit | +| stmts7.go:79:1:85:1 | function declaration | stmts7.go:0:0:0:0 | After stmts7.go | +| stmts7.go:79:23:79:32 | panicEarly | stmts7.go:79:40:85:1 | block statement | +| stmts7.go:79:40:85:1 | After block statement | stmts7.go:79:1:85:1 | Normal Exit | +| stmts7.go:79:40:85:1 | block statement | stmts7.go:80:2:82:2 | if statement | +| stmts7.go:80:2:82:2 | After if statement | stmts7.go:83:2:83:21 | Before defer statement | +| stmts7.go:80:2:82:2 | catch-panic if statement | stmts7.go:79:1:85:1 | Exceptional Exit | +| stmts7.go:80:2:82:2 | if statement | stmts7.go:80:5:80:14 | panicEarly | +| stmts7.go:80:5:80:14 | After panicEarly [false] | stmts7.go:80:2:82:2 | After if statement | +| stmts7.go:80:5:80:14 | After panicEarly [true] | stmts7.go:80:16:82:2 | block statement | +| stmts7.go:80:5:80:14 | panicEarly | stmts7.go:80:5:80:14 | After panicEarly [false] | +| stmts7.go:80:5:80:14 | panicEarly | stmts7.go:80:5:80:14 | After panicEarly [true] | +| stmts7.go:80:16:82:2 | block statement | stmts7.go:81:3:81:16 | expression statement | +| stmts7.go:81:3:81:7 | panic | stmts7.go:81:9:81:15 | "early" | +| stmts7.go:81:3:81:16 | Before call to panic | stmts7.go:81:3:81:7 | panic | +| stmts7.go:81:3:81:16 | call to panic | stmts7.go:80:2:82:2 | catch-panic if statement | +| stmts7.go:81:3:81:16 | expression statement | stmts7.go:81:3:81:16 | Before call to panic | +| stmts7.go:81:9:81:15 | "early" | stmts7.go:81:3:81:16 | call to panic | +| stmts7.go:83:2:83:21 | After defer statement | stmts7.go:84:2:84:14 | expression statement | +| stmts7.go:83:2:83:21 | Before defer statement | stmts7.go:83:8:83:21 | call to recoverPanic | +| stmts7.go:83:2:83:21 | catch-defer-panic defer statement | stmts7.go:79:1:85:1 | Exceptional Exit | +| stmts7.go:83:2:83:21 | defer statement | stmts7.go:83:2:83:21 | After defer statement | +| stmts7.go:83:8:83:19 | recoverPanic | stmts7.go:83:8:83:21 | After call to recoverPanic | +| stmts7.go:83:8:83:21 | After call to recoverPanic | stmts7.go:83:2:83:21 | defer statement | +| stmts7.go:83:8:83:21 | call to recoverPanic | stmts7.go:83:8:83:19 | recoverPanic | +| stmts7.go:83:8:83:21 | defer-invoke call to recoverPanic | stmts7.go:79:40:85:1 | After block statement | +| stmts7.go:83:8:83:21 | defer-invoke call to recoverPanic | stmts7.go:83:2:83:21 | catch-defer-panic defer statement | +| stmts7.go:84:2:84:6 | panic | stmts7.go:84:8:84:13 | "late" | +| stmts7.go:84:2:84:14 | Before call to panic | stmts7.go:84:2:84:6 | panic | +| stmts7.go:84:2:84:14 | call to panic | stmts7.go:84:2:84:14 | catch-panic expression statement | +| stmts7.go:84:2:84:14 | catch-panic expression statement | stmts7.go:83:8:83:21 | defer-invoke call to recoverPanic | +| stmts7.go:84:2:84:14 | expression statement | stmts7.go:84:2:84:14 | Before call to panic | +| stmts7.go:84:8:84:13 | "late" | stmts7.go:84:2:84:14 | call to panic | +| stmts8.go:0:0:0:0 | After stmts8.go | stmts8.go:0:0:0:0 | Normal Exit | +| stmts8.go:0:0:0:0 | Entry | stmts8.go:0:0:0:0 | stmts8.go | +| stmts8.go:0:0:0:0 | Normal Exit | stmts8.go:0:0:0:0 | Exit | +| stmts8.go:0:0:0:0 | stmts8.go | stmts8.go:3:1:7:1 | function declaration | +| stmts8.go:3:1:7:1 | Entry | stmts8.go:3:13:3:13 | x | +| stmts8.go:3:1:7:1 | Normal Exit | stmts8.go:3:1:7:1 | Exit | +| stmts8.go:3:1:7:1 | function declaration | stmts8.go:9:1:14:1 | function declaration | +| stmts8.go:3:13:3:13 | x | stmts8.go:3:31:7:1 | block statement | +| stmts8.go:3:31:7:1 | block statement | stmts8.go:4:2:4:12 | ... := ... | +| stmts8.go:4:2:4:12 | ... := ... | stmts8.go:4:7:4:12 | Before ...>>... | +| stmts8.go:4:2:4:12 | After ... := ... | stmts8.go:5:2:5:13 | ... := ... | +| stmts8.go:4:2:4:12 | assign:0 ... := ... | stmts8.go:4:2:4:12 | After ... := ... | | stmts8.go:4:7:4:7 | x | stmts8.go:4:12:4:12 | 5 | -| stmts8.go:4:7:4:12 | ...>>... | stmts8.go:4:2:4:2 | assignment to y | +| stmts8.go:4:7:4:12 | ...>>... | stmts8.go:4:7:4:12 | After ...>>... | +| stmts8.go:4:7:4:12 | After ...>>... | stmts8.go:4:2:4:12 | assign:0 ... := ... | +| stmts8.go:4:7:4:12 | Before ...>>... | stmts8.go:4:7:4:7 | x | | stmts8.go:4:12:4:12 | 5 | stmts8.go:4:7:4:12 | ...>>... | -| stmts8.go:5:2:5:2 | assignment to z | stmts8.go:6:9:6:9 | z | -| stmts8.go:5:2:5:2 | skip | stmts8.go:5:7:5:7 | x | +| stmts8.go:5:2:5:13 | ... := ... | stmts8.go:5:7:5:13 | Before ...%... | +| stmts8.go:5:2:5:13 | After ... := ... | stmts8.go:6:2:6:17 | Before return statement | +| stmts8.go:5:2:5:13 | assign:0 ... := ... | stmts8.go:5:2:5:13 | After ... := ... | | stmts8.go:5:7:5:7 | x | stmts8.go:5:12:5:12 | 1 | -| stmts8.go:5:7:5:13 | ...%... | stmts8.go:5:2:5:2 | assignment to z | +| stmts8.go:5:7:5:13 | ...%... | stmts8.go:5:7:5:13 | After ...%... | +| stmts8.go:5:7:5:13 | After ...%... | stmts8.go:5:2:5:13 | assign:0 ... := ... | +| stmts8.go:5:7:5:13 | Before ...%... | stmts8.go:5:7:5:7 | x | | stmts8.go:5:12:5:12 | 1 | stmts8.go:5:7:5:13 | ...%... | -| stmts8.go:6:2:6:17 | return statement | stmts8.go:3:1:7:1 | exit | -| stmts8.go:6:9:6:9 | z | stmts8.go:6:12:6:12 | y | +| stmts8.go:6:2:6:17 | Before return statement | stmts8.go:6:9:6:9 | z | +| stmts8.go:6:2:6:17 | return statement | stmts8.go:3:1:7:1 | Normal Exit | +| stmts8.go:6:9:6:9 | z | stmts8.go:6:12:6:17 | Before ...%... | | stmts8.go:6:12:6:12 | y | stmts8.go:6:16:6:17 | 13 | -| stmts8.go:6:12:6:17 | ...%... | stmts8.go:6:2:6:17 | return statement | +| stmts8.go:6:12:6:17 | ...%... | stmts8.go:6:12:6:17 | After ...%... | +| stmts8.go:6:12:6:17 | After ...%... | stmts8.go:6:2:6:17 | return statement | +| stmts8.go:6:12:6:17 | Before ...%... | stmts8.go:6:12:6:12 | y | | stmts8.go:6:16:6:17 | 13 | stmts8.go:6:12:6:17 | ...%... | -| stmts8.go:9:1:14:1 | entry | stmts8.go:10:5:10:9 | linux | -| stmts8.go:9:1:14:1 | function declaration | stmts8.go:0:0:0:0 | exit | -| stmts8.go:9:6:9:12 | skip | stmts8.go:9:1:14:1 | function declaration | -| stmts8.go:10:5:10:9 | linux | stmts8.go:10:5:10:9 | linux is false | -| stmts8.go:10:5:10:9 | linux | stmts8.go:10:5:10:9 | linux is true | -| stmts8.go:10:5:10:9 | linux is false | stmts8.go:13:9:13:13 | false | -| stmts8.go:10:5:10:9 | linux is true | stmts8.go:11:10:11:13 | true | -| stmts8.go:11:3:11:13 | return statement | stmts8.go:9:1:14:1 | exit | +| stmts8.go:9:1:14:1 | Entry | stmts8.go:9:21:14:1 | block statement | +| stmts8.go:9:1:14:1 | Normal Exit | stmts8.go:9:1:14:1 | Exit | +| stmts8.go:9:1:14:1 | function declaration | stmts8.go:0:0:0:0 | After stmts8.go | +| stmts8.go:9:21:14:1 | block statement | stmts8.go:10:2:12:2 | if statement | +| stmts8.go:10:2:12:2 | After if statement | stmts8.go:13:2:13:13 | Before return statement | +| stmts8.go:10:2:12:2 | if statement | stmts8.go:10:5:10:9 | linux | +| stmts8.go:10:5:10:9 | After linux [false] | stmts8.go:10:2:12:2 | After if statement | +| stmts8.go:10:5:10:9 | After linux [true] | stmts8.go:10:11:12:2 | block statement | +| stmts8.go:10:5:10:9 | linux | stmts8.go:10:5:10:9 | After linux [false] | +| stmts8.go:10:5:10:9 | linux | stmts8.go:10:5:10:9 | After linux [true] | +| stmts8.go:10:11:12:2 | block statement | stmts8.go:11:3:11:13 | Before return statement | +| stmts8.go:11:3:11:13 | Before return statement | stmts8.go:11:10:11:13 | true | +| stmts8.go:11:3:11:13 | return statement | stmts8.go:9:1:14:1 | Normal Exit | | stmts8.go:11:10:11:13 | true | stmts8.go:11:3:11:13 | return statement | -| stmts8.go:13:2:13:13 | return statement | stmts8.go:9:1:14:1 | exit | +| stmts8.go:13:2:13:13 | Before return statement | stmts8.go:13:9:13:13 | false | +| stmts8.go:13:2:13:13 | return statement | stmts8.go:9:1:14:1 | Normal Exit | | stmts8.go:13:9:13:13 | false | stmts8.go:13:2:13:13 | return statement | -| stmts.go:0:0:0:0 | entry | stmts.go:3:1:3:12 | skip | -| stmts.go:3:1:3:12 | skip | stmts.go:10:6:10:10 | skip | -| stmts.go:10:1:43:1 | entry | stmts.go:10:12:10:12 | argument corresponding to b | -| stmts.go:10:1:43:1 | function declaration | stmts.go:46:6:46:10 | skip | -| stmts.go:10:6:10:10 | skip | stmts.go:10:1:43:1 | function declaration | -| stmts.go:10:12:10:12 | argument corresponding to b | stmts.go:10:12:10:12 | initialization of b | -| stmts.go:10:12:10:12 | initialization of b | stmts.go:12:7:12:7 | b | -| stmts.go:12:6:12:7 | !... | stmts.go:12:6:12:7 | !... is false | -| stmts.go:12:6:12:7 | !... | stmts.go:12:6:12:7 | !... is true | -| stmts.go:12:6:12:7 | !... is false | stmts.go:15:3:16:3 | skip | -| stmts.go:12:6:12:7 | !... is true | stmts.go:13:4:13:13 | skip | -| stmts.go:12:7:12:7 | b | stmts.go:12:6:12:7 | !... | -| stmts.go:13:4:13:13 | skip | stmts.go:23:6:23:9 | true | -| stmts.go:15:3:16:3 | skip | stmts.go:17:3:17:3 | skip | -| stmts.go:17:3:17:3 | skip | stmts.go:20:2:20:12 | selection of Println | -| stmts.go:20:2:20:12 | selection of Println | stmts.go:20:14:20:17 | "Hi" | -| stmts.go:20:2:20:18 | call to Println | stmts.go:10:1:43:1 | exit | -| stmts.go:20:2:20:18 | call to Println | stmts.go:23:6:23:9 | true | +| stmts.go:0:0:0:0 | After stmts.go | stmts.go:0:0:0:0 | Normal Exit | +| stmts.go:0:0:0:0 | Entry | stmts.go:0:0:0:0 | stmts.go | +| stmts.go:0:0:0:0 | Normal Exit | stmts.go:0:0:0:0 | Exit | +| stmts.go:0:0:0:0 | stmts.go | stmts.go:3:1:3:12 | import declaration | +| stmts.go:3:1:3:12 | import declaration | stmts.go:10:1:43:1 | function declaration | +| stmts.go:10:1:43:1 | Entry | stmts.go:10:12:10:12 | b | +| stmts.go:10:1:43:1 | Exceptional Exit | stmts.go:10:1:43:1 | Exit | +| stmts.go:10:1:43:1 | function declaration | stmts.go:46:1:62:1 | function declaration | +| stmts.go:10:12:10:12 | b | stmts.go:10:20:43:1 | block statement | +| stmts.go:10:20:43:1 | block statement | stmts.go:11:2:18:2 | block statement | +| stmts.go:11:2:18:2 | After block statement | stmts.go:20:2:20:18 | expression statement | +| stmts.go:11:2:18:2 | block statement | stmts.go:12:3:14:3 | if statement | +| stmts.go:12:3:14:3 | After if statement | stmts.go:15:3:16:3 | block statement | +| stmts.go:12:3:14:3 | if statement | stmts.go:12:6:12:7 | !... | +| stmts.go:12:6:12:7 | !... | stmts.go:12:7:12:7 | b | +| stmts.go:12:6:12:7 | After !... [false] | stmts.go:12:3:14:3 | After if statement | +| stmts.go:12:6:12:7 | After !... [true] | stmts.go:12:9:14:3 | block statement | +| stmts.go:12:7:12:7 | After b [false] | stmts.go:12:6:12:7 | After !... [true] | +| stmts.go:12:7:12:7 | After b [true] | stmts.go:12:6:12:7 | After !... [false] | +| stmts.go:12:7:12:7 | b | stmts.go:12:7:12:7 | After b [false] | +| stmts.go:12:7:12:7 | b | stmts.go:12:7:12:7 | After b [true] | +| stmts.go:12:9:14:3 | block statement | stmts.go:13:4:13:13 | Before goto statement | +| stmts.go:13:4:13:13 | Before goto statement | stmts.go:13:4:13:13 | goto statement | +| stmts.go:13:4:13:13 | goto statement | stmts.go:22:1:37:2 | labeled statement | +| stmts.go:15:3:16:3 | block statement | stmts.go:17:3:17:3 | empty statement | +| stmts.go:17:3:17:3 | empty statement | stmts.go:11:2:18:2 | After block statement | +| stmts.go:20:2:20:12 | After selection of Println | stmts.go:20:14:20:17 | "Hi" | +| stmts.go:20:2:20:12 | Before selection of Println | stmts.go:20:2:20:12 | selection of Println | +| stmts.go:20:2:20:12 | selection of Println | stmts.go:20:2:20:12 | After selection of Println | +| stmts.go:20:2:20:18 | After call to Println | stmts.go:20:2:20:18 | After expression statement | +| stmts.go:20:2:20:18 | After expression statement | stmts.go:22:1:37:2 | labeled statement | +| stmts.go:20:2:20:18 | Before call to Println | stmts.go:20:2:20:12 | Before selection of Println | +| stmts.go:20:2:20:18 | call to Println | stmts.go:10:1:43:1 | Exceptional Exit | +| stmts.go:20:2:20:18 | call to Println | stmts.go:20:2:20:18 | After call to Println | +| stmts.go:20:2:20:18 | expression statement | stmts.go:20:2:20:18 | Before call to Println | | stmts.go:20:14:20:17 | "Hi" | stmts.go:20:2:20:18 | call to Println | -| stmts.go:23:6:23:9 | true | stmts.go:23:6:23:9 | true is true | -| stmts.go:23:6:23:9 | true is false | stmts.go:39:2:39:2 | skip | -| stmts.go:23:6:23:9 | true is true | stmts.go:24:7:24:7 | skip | -| stmts.go:24:7:24:7 | assignment to i | stmts.go:24:15:24:15 | i | -| stmts.go:24:7:24:7 | skip | stmts.go:24:12:24:12 | 0 | -| stmts.go:24:12:24:12 | 0 | stmts.go:24:7:24:7 | assignment to i | +| stmts.go:22:1:37:2 | After labeled statement | stmts.go:39:2:39:7 | ... := ... | +| stmts.go:22:1:37:2 | labeled statement | stmts.go:23:2:37:2 | for statement | +| stmts.go:23:2:37:2 | After for statement | stmts.go:22:1:37:2 | After labeled statement | +| stmts.go:23:2:37:2 | [LoopHeader] for statement | stmts.go:23:6:23:9 | true | +| stmts.go:23:2:37:2 | for statement | stmts.go:23:6:23:9 | true | +| stmts.go:23:6:23:9 | After true [true] | stmts.go:23:11:37:2 | block statement | +| stmts.go:23:6:23:9 | true | stmts.go:23:6:23:9 | After true [true] | +| stmts.go:23:11:37:2 | After block statement | stmts.go:23:2:37:2 | [LoopHeader] for statement | +| stmts.go:23:11:37:2 | block statement | stmts.go:24:3:36:3 | for statement | +| stmts.go:24:3:36:3 | After for statement | stmts.go:23:11:37:2 | After block statement | +| stmts.go:24:3:36:3 | [LoopHeader] for statement | stmts.go:24:23:24:25 | Before increment statement | +| stmts.go:24:3:36:3 | for statement | stmts.go:24:7:24:12 | ... := ... | +| stmts.go:24:7:24:12 | ... := ... | stmts.go:24:12:24:12 | 0 | +| stmts.go:24:7:24:12 | After ... := ... | stmts.go:24:15:24:20 | Before ...<... | +| stmts.go:24:7:24:12 | assign:0 ... := ... | stmts.go:24:7:24:12 | After ... := ... | +| stmts.go:24:12:24:12 | 0 | stmts.go:24:7:24:12 | assign:0 ... := ... | | stmts.go:24:15:24:15 | i | stmts.go:24:19:24:20 | 10 | -| stmts.go:24:15:24:20 | ...<... | stmts.go:24:15:24:20 | ...<... is false | -| stmts.go:24:15:24:20 | ...<... | stmts.go:24:15:24:20 | ...<... is true | -| stmts.go:24:15:24:20 | ...<... is false | stmts.go:23:6:23:9 | true | -| stmts.go:24:15:24:20 | ...<... is true | stmts.go:25:7:25:7 | skip | +| stmts.go:24:15:24:20 | ...<... | stmts.go:24:15:24:20 | After ...<... [false] | +| stmts.go:24:15:24:20 | ...<... | stmts.go:24:15:24:20 | After ...<... [true] | +| stmts.go:24:15:24:20 | After ...<... [false] | stmts.go:24:3:36:3 | After for statement | +| stmts.go:24:15:24:20 | After ...<... [true] | stmts.go:24:27:36:3 | block statement | +| stmts.go:24:15:24:20 | Before ...<... | stmts.go:24:15:24:15 | i | | stmts.go:24:19:24:20 | 10 | stmts.go:24:15:24:20 | ...<... | -| stmts.go:24:23:24:23 | i | stmts.go:24:23:24:25 | 1 | -| stmts.go:24:23:24:25 | 1 | stmts.go:24:23:24:25 | rhs of increment statement | -| stmts.go:24:23:24:25 | increment statement | stmts.go:24:15:24:15 | i | -| stmts.go:24:23:24:25 | rhs of increment statement | stmts.go:24:23:24:25 | increment statement | -| stmts.go:25:7:25:7 | assignment to j | stmts.go:25:19:25:19 | j | -| stmts.go:25:7:25:7 | skip | stmts.go:25:12:25:12 | i | +| stmts.go:24:23:24:23 | i | stmts.go:24:23:24:25 | increment statement | +| stmts.go:24:23:24:25 | After increment statement | stmts.go:24:15:24:20 | Before ...<... | +| stmts.go:24:23:24:25 | Before increment statement | stmts.go:24:23:24:23 | i | +| stmts.go:24:23:24:25 | increment statement | stmts.go:24:23:24:25 | After increment statement | +| stmts.go:24:27:36:3 | block statement | stmts.go:25:4:35:4 | if statement | +| stmts.go:25:4:35:4 | if statement | stmts.go:25:7:25:16 | ... := ... | +| stmts.go:25:7:25:16 | ... := ... | stmts.go:25:12:25:16 | Before ...-... | +| stmts.go:25:7:25:16 | After ... := ... | stmts.go:25:19:25:23 | Before ...>... | +| stmts.go:25:7:25:16 | assign:0 ... := ... | stmts.go:25:7:25:16 | After ... := ... | | stmts.go:25:12:25:12 | i | stmts.go:25:16:25:16 | 1 | -| stmts.go:25:12:25:16 | ...-... | stmts.go:25:7:25:7 | assignment to j | +| stmts.go:25:12:25:16 | ...-... | stmts.go:25:12:25:16 | After ...-... | +| stmts.go:25:12:25:16 | After ...-... | stmts.go:25:7:25:16 | assign:0 ... := ... | +| stmts.go:25:12:25:16 | Before ...-... | stmts.go:25:12:25:12 | i | | stmts.go:25:16:25:16 | 1 | stmts.go:25:12:25:16 | ...-... | | stmts.go:25:19:25:19 | j | stmts.go:25:23:25:23 | 5 | -| stmts.go:25:19:25:23 | ...>... | stmts.go:25:19:25:23 | ...>... is false | -| stmts.go:25:19:25:23 | ...>... | stmts.go:25:19:25:23 | ...>... is true | -| stmts.go:25:19:25:23 | ...>... is false | stmts.go:27:14:27:14 | i | -| stmts.go:25:19:25:23 | ...>... is true | stmts.go:26:5:26:15 | skip | +| stmts.go:25:19:25:23 | ...>... | stmts.go:25:19:25:23 | After ...>... [false] | +| stmts.go:25:19:25:23 | ...>... | stmts.go:25:19:25:23 | After ...>... [true] | +| stmts.go:25:19:25:23 | After ...>... [false] | stmts.go:27:11:35:4 | if statement | +| stmts.go:25:19:25:23 | After ...>... [true] | stmts.go:25:25:27:4 | block statement | +| stmts.go:25:19:25:23 | Before ...>... | stmts.go:25:19:25:19 | j | | stmts.go:25:23:25:23 | 5 | stmts.go:25:19:25:23 | ...>... | -| stmts.go:26:5:26:15 | skip | stmts.go:39:2:39:2 | skip | +| stmts.go:25:25:27:4 | block statement | stmts.go:26:5:26:15 | Before break statement | +| stmts.go:26:5:26:15 | Before break statement | stmts.go:26:5:26:15 | break statement | +| stmts.go:26:5:26:15 | break statement | stmts.go:23:2:37:2 | After for statement | +| stmts.go:27:11:35:4 | if statement | stmts.go:27:14:27:18 | Before ...<... | | stmts.go:27:14:27:14 | i | stmts.go:27:18:27:18 | 3 | -| stmts.go:27:14:27:18 | ...<... | stmts.go:27:14:27:18 | ...<... is false | -| stmts.go:27:14:27:18 | ...<... | stmts.go:27:14:27:18 | ...<... is true | -| stmts.go:27:14:27:18 | ...<... is false | stmts.go:29:14:29:14 | i | -| stmts.go:27:14:27:18 | ...<... is true | stmts.go:28:5:28:9 | skip | +| stmts.go:27:14:27:18 | ...<... | stmts.go:27:14:27:18 | After ...<... [false] | +| stmts.go:27:14:27:18 | ...<... | stmts.go:27:14:27:18 | After ...<... [true] | +| stmts.go:27:14:27:18 | After ...<... [false] | stmts.go:29:11:35:4 | if statement | +| stmts.go:27:14:27:18 | After ...<... [true] | stmts.go:27:20:29:4 | block statement | +| stmts.go:27:14:27:18 | Before ...<... | stmts.go:27:14:27:14 | i | | stmts.go:27:18:27:18 | 3 | stmts.go:27:14:27:18 | ...<... | -| stmts.go:28:5:28:9 | skip | stmts.go:23:6:23:9 | true | +| stmts.go:27:20:29:4 | block statement | stmts.go:28:5:28:9 | Before break statement | +| stmts.go:28:5:28:9 | Before break statement | stmts.go:28:5:28:9 | break statement | +| stmts.go:28:5:28:9 | break statement | stmts.go:24:3:36:3 | After for statement | +| stmts.go:29:11:35:4 | if statement | stmts.go:29:14:29:19 | Before ...!=... | | stmts.go:29:14:29:14 | i | stmts.go:29:19:29:19 | 9 | -| stmts.go:29:14:29:19 | ...!=... | stmts.go:29:14:29:19 | ...!=... is false | -| stmts.go:29:14:29:19 | ...!=... | stmts.go:29:14:29:19 | ...!=... is true | -| stmts.go:29:14:29:19 | ...!=... is false | stmts.go:31:14:31:14 | i | -| stmts.go:29:14:29:19 | ...!=... is true | stmts.go:30:5:30:18 | skip | +| stmts.go:29:14:29:19 | ...!=... | stmts.go:29:14:29:19 | After ...!=... [false] | +| stmts.go:29:14:29:19 | ...!=... | stmts.go:29:14:29:19 | After ...!=... [true] | +| stmts.go:29:14:29:19 | After ...!=... [false] | stmts.go:31:11:35:4 | if statement | +| stmts.go:29:14:29:19 | After ...!=... [true] | stmts.go:29:21:31:4 | block statement | +| stmts.go:29:14:29:19 | Before ...!=... | stmts.go:29:14:29:14 | i | | stmts.go:29:19:29:19 | 9 | stmts.go:29:14:29:19 | ...!=... | -| stmts.go:30:5:30:18 | skip | stmts.go:23:6:23:9 | true | +| stmts.go:29:21:31:4 | block statement | stmts.go:30:5:30:18 | Before continue statement | +| stmts.go:30:5:30:18 | Before continue statement | stmts.go:30:5:30:18 | continue statement | +| stmts.go:30:5:30:18 | continue statement | stmts.go:23:2:37:2 | [LoopHeader] for statement | +| stmts.go:31:11:35:4 | if statement | stmts.go:31:14:31:19 | Before ...>=... | | stmts.go:31:14:31:14 | i | stmts.go:31:19:31:19 | 4 | -| stmts.go:31:14:31:19 | ...>=... | stmts.go:31:14:31:19 | ...>=... is false | -| stmts.go:31:14:31:19 | ...>=... | stmts.go:31:14:31:19 | ...>=... is true | -| stmts.go:31:14:31:19 | ...>=... is false | stmts.go:34:5:34:12 | skip | -| stmts.go:31:14:31:19 | ...>=... is true | stmts.go:32:5:32:14 | skip | +| stmts.go:31:14:31:19 | ...>=... | stmts.go:31:14:31:19 | After ...>=... [false] | +| stmts.go:31:14:31:19 | ...>=... | stmts.go:31:14:31:19 | After ...>=... [true] | +| stmts.go:31:14:31:19 | After ...>=... [false] | stmts.go:33:11:35:4 | block statement | +| stmts.go:31:14:31:19 | After ...>=... [true] | stmts.go:31:21:33:4 | block statement | +| stmts.go:31:14:31:19 | Before ...>=... | stmts.go:31:14:31:14 | i | | stmts.go:31:19:31:19 | 4 | stmts.go:31:14:31:19 | ...>=... | -| stmts.go:32:5:32:14 | skip | stmts.go:23:6:23:9 | true | -| stmts.go:34:5:34:12 | skip | stmts.go:24:23:24:23 | i | -| stmts.go:39:2:39:2 | assignment to k | stmts.go:41:3:41:12 | skip | -| stmts.go:39:2:39:2 | skip | stmts.go:39:7:39:7 | 9 | -| stmts.go:39:7:39:7 | 9 | stmts.go:39:2:39:2 | assignment to k | -| stmts.go:40:10:40:10 | k | stmts.go:40:10:40:12 | 1 | -| stmts.go:40:10:40:12 | 1 | stmts.go:40:10:40:12 | rhs of increment statement | -| stmts.go:40:10:40:12 | increment statement | stmts.go:41:3:41:12 | skip | -| stmts.go:40:10:40:12 | rhs of increment statement | stmts.go:40:10:40:12 | increment statement | -| stmts.go:41:3:41:12 | skip | stmts.go:23:6:23:9 | true | -| stmts.go:46:1:62:1 | entry | stmts.go:46:12:46:14 | argument corresponding to ch1 | -| stmts.go:46:1:62:1 | function declaration | stmts.go:65:6:65:10 | skip | -| stmts.go:46:6:46:10 | skip | stmts.go:46:1:62:1 | function declaration | -| stmts.go:46:12:46:14 | argument corresponding to ch1 | stmts.go:46:12:46:14 | initialization of ch1 | -| stmts.go:46:12:46:14 | initialization of ch1 | stmts.go:46:26:46:28 | argument corresponding to ch2 | -| stmts.go:46:26:46:28 | argument corresponding to ch2 | stmts.go:46:26:46:28 | initialization of ch2 | -| stmts.go:46:26:46:28 | initialization of ch2 | stmts.go:47:6:47:6 | skip | -| stmts.go:47:6:47:6 | assignment to a | stmts.go:48:6:48:6 | skip | -| stmts.go:47:6:47:6 | skip | stmts.go:47:6:47:6 | zero value for a | -| stmts.go:47:6:47:6 | zero value for a | stmts.go:47:6:47:6 | assignment to a | -| stmts.go:48:6:48:6 | assignment to w | stmts.go:51:9:51:11 | ch1 | -| stmts.go:48:6:48:6 | skip | stmts.go:48:6:48:6 | zero value for w | -| stmts.go:48:6:48:6 | zero value for w | stmts.go:48:6:48:6 | assignment to w | -| stmts.go:50:2:59:2 | select statement | stmts.go:51:7:51:11 | <-... | -| stmts.go:50:2:59:2 | select statement | stmts.go:53:17:53:21 | <-... | -| stmts.go:50:2:59:2 | select statement | stmts.go:57:3:57:13 | selection of Println | -| stmts.go:50:2:59:2 | select statement | stmts.go:58:7:58:15 | send statement | -| stmts.go:51:7:51:11 | <-... | stmts.go:52:3:52:13 | selection of Println | +| stmts.go:31:21:33:4 | block statement | stmts.go:32:5:32:14 | Before goto statement | +| stmts.go:32:5:32:14 | Before goto statement | stmts.go:32:5:32:14 | goto statement | +| stmts.go:32:5:32:14 | goto statement | stmts.go:22:1:37:2 | labeled statement | +| stmts.go:33:11:35:4 | block statement | stmts.go:34:5:34:12 | Before continue statement | +| stmts.go:34:5:34:12 | Before continue statement | stmts.go:34:5:34:12 | continue statement | +| stmts.go:34:5:34:12 | continue statement | stmts.go:24:3:36:3 | [LoopHeader] for statement | +| stmts.go:39:2:39:7 | ... := ... | stmts.go:39:7:39:7 | 9 | +| stmts.go:39:2:39:7 | After ... := ... | stmts.go:40:2:42:2 | for statement | +| stmts.go:39:2:39:7 | assign:0 ... := ... | stmts.go:39:2:39:7 | After ... := ... | +| stmts.go:39:7:39:7 | 9 | stmts.go:39:2:39:7 | assign:0 ... := ... | +| stmts.go:40:2:42:2 | for statement | stmts.go:40:14:42:2 | block statement | +| stmts.go:40:14:42:2 | block statement | stmts.go:41:3:41:12 | Before goto statement | +| stmts.go:41:3:41:12 | Before goto statement | stmts.go:41:3:41:12 | goto statement | +| stmts.go:41:3:41:12 | goto statement | stmts.go:22:1:37:2 | labeled statement | +| stmts.go:46:1:62:1 | Entry | stmts.go:46:12:46:14 | ch1 | +| stmts.go:46:1:62:1 | Exceptional Exit | stmts.go:46:1:62:1 | Exit | +| stmts.go:46:1:62:1 | function declaration | stmts.go:65:1:72:1 | function declaration | +| stmts.go:46:12:46:14 | ch1 | stmts.go:46:26:46:28 | ch2 | +| stmts.go:46:26:46:28 | ch2 | stmts.go:46:44:62:1 | block statement | +| stmts.go:46:44:62:1 | block statement | stmts.go:47:2:47:17 | declaration statement | +| stmts.go:47:2:47:17 | After declaration statement | stmts.go:48:2:48:11 | declaration statement | +| stmts.go:47:2:47:17 | After variable declaration | stmts.go:47:2:47:17 | After declaration statement | +| stmts.go:47:2:47:17 | declaration statement | stmts.go:47:2:47:17 | variable declaration | +| stmts.go:47:2:47:17 | variable declaration | stmts.go:47:6:47:17 | value declaration specifier | +| stmts.go:47:6:47:17 | After value declaration specifier | stmts.go:47:2:47:17 | After variable declaration | +| stmts.go:47:6:47:17 | value declaration specifier | stmts.go:47:6:47:17 | zero-init:0 value declaration specifier | +| stmts.go:47:6:47:17 | zero-init:0 value declaration specifier | stmts.go:47:6:47:17 | After value declaration specifier | +| stmts.go:48:2:48:11 | After declaration statement | stmts.go:50:2:59:2 | Before select statement | +| stmts.go:48:2:48:11 | After variable declaration | stmts.go:48:2:48:11 | After declaration statement | +| stmts.go:48:2:48:11 | declaration statement | stmts.go:48:2:48:11 | variable declaration | +| stmts.go:48:2:48:11 | variable declaration | stmts.go:48:6:48:11 | value declaration specifier | +| stmts.go:48:6:48:11 | After value declaration specifier | stmts.go:48:2:48:11 | After variable declaration | +| stmts.go:48:6:48:11 | value declaration specifier | stmts.go:48:6:48:11 | zero-init:0 value declaration specifier | +| stmts.go:48:6:48:11 | zero-init:0 value declaration specifier | stmts.go:48:6:48:11 | After value declaration specifier | +| stmts.go:50:2:59:2 | After select statement | stmts.go:61:2:61:10 | Before select statement | +| stmts.go:50:2:59:2 | Before select statement | stmts.go:51:9:51:11 | ch1 | +| stmts.go:50:2:59:2 | select statement | stmts.go:51:2:52:31 | comm clause | +| stmts.go:50:2:59:2 | select statement | stmts.go:53:2:55:16 | comm clause | +| stmts.go:50:2:59:2 | select statement | stmts.go:56:2:57:15 | comm clause | +| stmts.go:50:2:59:2 | select statement | stmts.go:58:2:58:16 | comm clause | +| stmts.go:51:2:52:31 | comm clause | stmts.go:51:7:51:11 | expression statement | +| stmts.go:51:7:51:11 | <-... | stmts.go:52:3:52:31 | expression statement | +| stmts.go:51:7:51:11 | Before <-... | stmts.go:51:7:51:11 | <-... | +| stmts.go:51:7:51:11 | expression statement | stmts.go:51:7:51:11 | Before <-... | | stmts.go:51:9:51:11 | ch1 | stmts.go:53:19:53:21 | ch2 | -| stmts.go:52:3:52:13 | selection of Println | stmts.go:52:15:52:30 | "Heard from ch1" | -| stmts.go:52:3:52:31 | call to Println | stmts.go:46:1:62:1 | exit | -| stmts.go:52:3:52:31 | call to Println | stmts.go:61:2:61:10 | select statement | +| stmts.go:52:3:52:13 | After selection of Println | stmts.go:52:15:52:30 | "Heard from ch1" | +| stmts.go:52:3:52:13 | Before selection of Println | stmts.go:52:3:52:13 | selection of Println | +| stmts.go:52:3:52:13 | selection of Println | stmts.go:52:3:52:13 | After selection of Println | +| stmts.go:52:3:52:31 | After call to Println | stmts.go:52:3:52:31 | After expression statement | +| stmts.go:52:3:52:31 | After expression statement | stmts.go:50:2:59:2 | After select statement | +| stmts.go:52:3:52:31 | Before call to Println | stmts.go:52:3:52:13 | Before selection of Println | +| stmts.go:52:3:52:31 | call to Println | stmts.go:46:1:62:1 | Exceptional Exit | +| stmts.go:52:3:52:31 | call to Println | stmts.go:52:3:52:31 | After call to Println | +| stmts.go:52:3:52:31 | expression statement | stmts.go:52:3:52:31 | Before call to Println | | stmts.go:52:15:52:30 | "Heard from ch1" | stmts.go:52:3:52:31 | call to Println | +| stmts.go:53:2:55:16 | comm clause | stmts.go:53:7:53:21 | ... = ... | | stmts.go:53:7:53:7 | a | stmts.go:53:9:53:9 | 0 | -| stmts.go:53:7:53:10 | assignment to element | stmts.go:53:7:53:21 | ... = ...[1] | -| stmts.go:53:7:53:10 | skip | stmts.go:46:1:62:1 | exit | -| stmts.go:53:7:53:10 | skip | stmts.go:53:13:53:13 | skip | -| stmts.go:53:7:53:21 | ... = ...[0] | stmts.go:53:7:53:10 | assignment to element | -| stmts.go:53:7:53:21 | ... = ...[1] | stmts.go:53:13:53:13 | assignment to w | -| stmts.go:53:9:53:9 | 0 | stmts.go:53:7:53:10 | skip | -| stmts.go:53:13:53:13 | assignment to w | stmts.go:54:3:54:13 | selection of Println | -| stmts.go:53:13:53:13 | skip | stmts.go:53:7:53:21 | ... = ...[0] | -| stmts.go:53:17:53:21 | <-... | stmts.go:53:7:53:7 | a | +| stmts.go:53:7:53:10 | After index expression | stmts.go:53:13:53:13 | w | +| stmts.go:53:7:53:10 | Before index expression | stmts.go:53:7:53:7 | a | +| stmts.go:53:7:53:10 | index expression | stmts.go:46:1:62:1 | Exceptional Exit | +| stmts.go:53:7:53:10 | index expression | stmts.go:53:7:53:10 | After index expression | +| stmts.go:53:7:53:21 | ... = ... | stmts.go:53:17:53:21 | Before <-... | +| stmts.go:53:7:53:21 | extract:0 ... = ... | stmts.go:53:7:53:21 | extract:1 ... = ... | +| stmts.go:53:7:53:21 | extract:1 ... = ... | stmts.go:54:3:54:16 | expression statement | +| stmts.go:53:9:53:9 | 0 | stmts.go:53:7:53:10 | index expression | +| stmts.go:53:13:53:13 | w | stmts.go:53:7:53:21 | extract:0 ... = ... | +| stmts.go:53:17:53:21 | <-... | stmts.go:53:7:53:10 | Before index expression | +| stmts.go:53:17:53:21 | Before <-... | stmts.go:53:17:53:21 | <-... | | stmts.go:53:19:53:21 | ch2 | stmts.go:58:7:58:9 | ch1 | -| stmts.go:54:3:54:13 | selection of Println | stmts.go:54:15:54:15 | a | -| stmts.go:54:3:54:16 | call to Println | stmts.go:46:1:62:1 | exit | -| stmts.go:54:3:54:16 | call to Println | stmts.go:55:3:55:13 | selection of Println | +| stmts.go:54:3:54:13 | After selection of Println | stmts.go:54:15:54:15 | a | +| stmts.go:54:3:54:13 | Before selection of Println | stmts.go:54:3:54:13 | selection of Println | +| stmts.go:54:3:54:13 | selection of Println | stmts.go:54:3:54:13 | After selection of Println | +| stmts.go:54:3:54:16 | After call to Println | stmts.go:54:3:54:16 | After expression statement | +| stmts.go:54:3:54:16 | After expression statement | stmts.go:55:3:55:16 | expression statement | +| stmts.go:54:3:54:16 | Before call to Println | stmts.go:54:3:54:13 | Before selection of Println | +| stmts.go:54:3:54:16 | call to Println | stmts.go:46:1:62:1 | Exceptional Exit | +| stmts.go:54:3:54:16 | call to Println | stmts.go:54:3:54:16 | After call to Println | +| stmts.go:54:3:54:16 | expression statement | stmts.go:54:3:54:16 | Before call to Println | | stmts.go:54:15:54:15 | a | stmts.go:54:3:54:16 | call to Println | -| stmts.go:55:3:55:13 | selection of Println | stmts.go:55:15:55:15 | w | -| stmts.go:55:3:55:16 | call to Println | stmts.go:46:1:62:1 | exit | -| stmts.go:55:3:55:16 | call to Println | stmts.go:61:2:61:10 | select statement | +| stmts.go:55:3:55:13 | After selection of Println | stmts.go:55:15:55:15 | w | +| stmts.go:55:3:55:13 | Before selection of Println | stmts.go:55:3:55:13 | selection of Println | +| stmts.go:55:3:55:13 | selection of Println | stmts.go:55:3:55:13 | After selection of Println | +| stmts.go:55:3:55:16 | After call to Println | stmts.go:55:3:55:16 | After expression statement | +| stmts.go:55:3:55:16 | After expression statement | stmts.go:50:2:59:2 | After select statement | +| stmts.go:55:3:55:16 | Before call to Println | stmts.go:55:3:55:13 | Before selection of Println | +| stmts.go:55:3:55:16 | call to Println | stmts.go:46:1:62:1 | Exceptional Exit | +| stmts.go:55:3:55:16 | call to Println | stmts.go:55:3:55:16 | After call to Println | +| stmts.go:55:3:55:16 | expression statement | stmts.go:55:3:55:16 | Before call to Println | | stmts.go:55:15:55:15 | w | stmts.go:55:3:55:16 | call to Println | -| stmts.go:57:3:57:13 | selection of Println | stmts.go:57:3:57:15 | call to Println | -| stmts.go:57:3:57:15 | call to Println | stmts.go:46:1:62:1 | exit | -| stmts.go:57:3:57:15 | call to Println | stmts.go:61:2:61:10 | select statement | -| stmts.go:58:2:58:16 | skip | stmts.go:61:2:61:10 | select statement | +| stmts.go:56:2:57:15 | comm clause | stmts.go:57:3:57:15 | expression statement | +| stmts.go:57:3:57:13 | After selection of Println | stmts.go:57:3:57:15 | call to Println | +| stmts.go:57:3:57:13 | Before selection of Println | stmts.go:57:3:57:13 | selection of Println | +| stmts.go:57:3:57:13 | selection of Println | stmts.go:57:3:57:13 | After selection of Println | +| stmts.go:57:3:57:15 | After call to Println | stmts.go:57:3:57:15 | After expression statement | +| stmts.go:57:3:57:15 | After expression statement | stmts.go:50:2:59:2 | After select statement | +| stmts.go:57:3:57:15 | Before call to Println | stmts.go:57:3:57:13 | Before selection of Println | +| stmts.go:57:3:57:15 | call to Println | stmts.go:46:1:62:1 | Exceptional Exit | +| stmts.go:57:3:57:15 | call to Println | stmts.go:57:3:57:15 | After call to Println | +| stmts.go:57:3:57:15 | expression statement | stmts.go:57:3:57:15 | Before call to Println | +| stmts.go:58:2:58:16 | comm clause | stmts.go:58:7:58:15 | Before send statement | | stmts.go:58:7:58:9 | ch1 | stmts.go:58:14:58:15 | 42 | -| stmts.go:58:7:58:15 | send statement | stmts.go:46:1:62:1 | exit | -| stmts.go:58:7:58:15 | send statement | stmts.go:58:2:58:16 | skip | +| stmts.go:58:7:58:15 | After send statement | stmts.go:50:2:59:2 | After select statement | +| stmts.go:58:7:58:15 | Before send statement | stmts.go:58:7:58:15 | send statement | +| stmts.go:58:7:58:15 | send statement | stmts.go:58:7:58:15 | After send statement | | stmts.go:58:14:58:15 | 42 | stmts.go:50:2:59:2 | select statement | -| stmts.go:65:1:72:1 | entry | stmts.go:65:12:65:12 | argument corresponding to x | -| stmts.go:65:1:72:1 | function declaration | stmts.go:75:6:75:10 | skip | -| stmts.go:65:6:65:10 | skip | stmts.go:65:1:72:1 | function declaration | -| stmts.go:65:12:65:12 | argument corresponding to x | stmts.go:65:12:65:12 | initialization of x | -| stmts.go:65:12:65:12 | initialization of x | stmts.go:66:5:66:5 | x | +| stmts.go:61:2:61:10 | Before select statement | stmts.go:61:2:61:10 | select statement | +| stmts.go:65:1:72:1 | Entry | stmts.go:65:12:65:12 | x | +| stmts.go:65:1:72:1 | Exceptional Exit | stmts.go:65:1:72:1 | Exit | +| stmts.go:65:1:72:1 | Normal Exit | stmts.go:65:1:72:1 | Exit | +| stmts.go:65:1:72:1 | function declaration | stmts.go:75:1:109:1 | function declaration | +| stmts.go:65:12:65:12 | x | stmts.go:65:23:72:1 | block statement | +| stmts.go:65:23:72:1 | After block statement | stmts.go:65:1:72:1 | Normal Exit | +| stmts.go:65:23:72:1 | block statement | stmts.go:66:2:70:2 | if statement | +| stmts.go:66:2:70:2 | After if statement | stmts.go:71:2:71:10 | Before return statement | +| stmts.go:66:2:70:2 | if statement | stmts.go:66:5:66:9 | Before ...>... | | stmts.go:66:5:66:5 | x | stmts.go:66:9:66:9 | 0 | -| stmts.go:66:5:66:9 | ...>... | stmts.go:66:5:66:9 | ...>... is false | -| stmts.go:66:5:66:9 | ...>... | stmts.go:66:5:66:9 | ...>... is true | -| stmts.go:66:5:66:9 | ...>... is false | stmts.go:69:9:69:34 | function literal | -| stmts.go:66:5:66:9 | ...>... is true | stmts.go:67:9:67:33 | function literal | +| stmts.go:66:5:66:9 | ...>... | stmts.go:66:5:66:9 | After ...>... [false] | +| stmts.go:66:5:66:9 | ...>... | stmts.go:66:5:66:9 | After ...>... [true] | +| stmts.go:66:5:66:9 | After ...>... [false] | stmts.go:68:9:70:2 | block statement | +| stmts.go:66:5:66:9 | After ...>... [true] | stmts.go:66:11:68:2 | block statement | +| stmts.go:66:5:66:9 | Before ...>... | stmts.go:66:5:66:5 | x | | stmts.go:66:9:66:9 | 0 | stmts.go:66:5:66:9 | ...>... | -| stmts.go:67:3:67:35 | defer statement | stmts.go:71:9:71:10 | 42 | -| stmts.go:67:9:67:33 | entry | stmts.go:67:18:67:28 | selection of Println | -| stmts.go:67:9:67:33 | function literal | stmts.go:67:3:67:35 | defer statement | -| stmts.go:67:9:67:35 | function call | stmts.go:65:1:72:1 | exit | -| stmts.go:67:18:67:28 | selection of Println | stmts.go:67:30:67:30 | x | -| stmts.go:67:18:67:31 | call to Println | stmts.go:67:9:67:33 | exit | +| stmts.go:66:11:68:2 | After block statement | stmts.go:66:2:70:2 | After if statement | +| stmts.go:66:11:68:2 | block statement | stmts.go:67:3:67:35 | Before defer statement | +| stmts.go:67:3:67:35 | After defer statement | stmts.go:66:11:68:2 | After block statement | +| stmts.go:67:3:67:35 | Before defer statement | stmts.go:67:9:67:35 | function call | +| stmts.go:67:3:67:35 | catch-defer-panic defer statement | stmts.go:65:1:72:1 | Exceptional Exit | +| stmts.go:67:3:67:35 | defer statement | stmts.go:67:3:67:35 | After defer statement | +| stmts.go:67:9:67:33 | Entry | stmts.go:67:16:67:33 | block statement | +| stmts.go:67:9:67:33 | Exceptional Exit | stmts.go:67:9:67:33 | Exit | +| stmts.go:67:9:67:33 | Normal Exit | stmts.go:67:9:67:33 | Exit | +| stmts.go:67:9:67:33 | function literal | stmts.go:67:9:67:35 | After function call | +| stmts.go:67:9:67:35 | After function call | stmts.go:67:3:67:35 | defer statement | +| stmts.go:67:9:67:35 | defer-invoke function call | stmts.go:65:23:72:1 | After block statement | +| stmts.go:67:9:67:35 | defer-invoke function call | stmts.go:67:3:67:35 | catch-defer-panic defer statement | +| stmts.go:67:9:67:35 | function call | stmts.go:67:9:67:33 | function literal | +| stmts.go:67:16:67:33 | After block statement | stmts.go:67:9:67:33 | Normal Exit | +| stmts.go:67:16:67:33 | block statement | stmts.go:67:18:67:31 | expression statement | +| stmts.go:67:18:67:28 | After selection of Println | stmts.go:67:30:67:30 | x | +| stmts.go:67:18:67:28 | Before selection of Println | stmts.go:67:18:67:28 | selection of Println | +| stmts.go:67:18:67:28 | selection of Println | stmts.go:67:18:67:28 | After selection of Println | +| stmts.go:67:18:67:31 | After call to Println | stmts.go:67:18:67:31 | After expression statement | +| stmts.go:67:18:67:31 | After expression statement | stmts.go:67:16:67:33 | After block statement | +| stmts.go:67:18:67:31 | Before call to Println | stmts.go:67:18:67:28 | Before selection of Println | +| stmts.go:67:18:67:31 | call to Println | stmts.go:67:9:67:33 | Exceptional Exit | +| stmts.go:67:18:67:31 | call to Println | stmts.go:67:18:67:31 | After call to Println | +| stmts.go:67:18:67:31 | expression statement | stmts.go:67:18:67:31 | Before call to Println | | stmts.go:67:30:67:30 | x | stmts.go:67:18:67:31 | call to Println | -| stmts.go:69:3:69:36 | defer statement | stmts.go:71:9:71:10 | 42 | -| stmts.go:69:9:69:34 | entry | stmts.go:69:18:69:28 | selection of Println | -| stmts.go:69:9:69:34 | function literal | stmts.go:69:3:69:36 | defer statement | -| stmts.go:69:9:69:36 | function call | stmts.go:65:1:72:1 | exit | -| stmts.go:69:18:69:28 | selection of Println | stmts.go:69:31:69:31 | x | -| stmts.go:69:18:69:32 | call to Println | stmts.go:69:9:69:34 | exit | -| stmts.go:69:30:69:31 | -... | stmts.go:69:18:69:32 | call to Println | +| stmts.go:68:9:70:2 | After block statement | stmts.go:66:2:70:2 | After if statement | +| stmts.go:68:9:70:2 | block statement | stmts.go:69:3:69:36 | Before defer statement | +| stmts.go:69:3:69:36 | After defer statement | stmts.go:68:9:70:2 | After block statement | +| stmts.go:69:3:69:36 | Before defer statement | stmts.go:69:9:69:36 | function call | +| stmts.go:69:3:69:36 | catch-defer-panic defer statement | stmts.go:65:1:72:1 | Exceptional Exit | +| stmts.go:69:3:69:36 | defer statement | stmts.go:69:3:69:36 | After defer statement | +| stmts.go:69:9:69:34 | Entry | stmts.go:69:16:69:34 | block statement | +| stmts.go:69:9:69:34 | Exceptional Exit | stmts.go:69:9:69:34 | Exit | +| stmts.go:69:9:69:34 | Normal Exit | stmts.go:69:9:69:34 | Exit | +| stmts.go:69:9:69:34 | function literal | stmts.go:69:9:69:36 | After function call | +| stmts.go:69:9:69:36 | After function call | stmts.go:69:3:69:36 | defer statement | +| stmts.go:69:9:69:36 | defer-invoke function call | stmts.go:65:23:72:1 | After block statement | +| stmts.go:69:9:69:36 | defer-invoke function call | stmts.go:69:3:69:36 | catch-defer-panic defer statement | +| stmts.go:69:9:69:36 | function call | stmts.go:69:9:69:34 | function literal | +| stmts.go:69:16:69:34 | After block statement | stmts.go:69:9:69:34 | Normal Exit | +| stmts.go:69:16:69:34 | block statement | stmts.go:69:18:69:32 | expression statement | +| stmts.go:69:18:69:28 | After selection of Println | stmts.go:69:30:69:31 | Before -... | +| stmts.go:69:18:69:28 | Before selection of Println | stmts.go:69:18:69:28 | selection of Println | +| stmts.go:69:18:69:28 | selection of Println | stmts.go:69:18:69:28 | After selection of Println | +| stmts.go:69:18:69:32 | After call to Println | stmts.go:69:18:69:32 | After expression statement | +| stmts.go:69:18:69:32 | After expression statement | stmts.go:69:16:69:34 | After block statement | +| stmts.go:69:18:69:32 | Before call to Println | stmts.go:69:18:69:28 | Before selection of Println | +| stmts.go:69:18:69:32 | call to Println | stmts.go:69:9:69:34 | Exceptional Exit | +| stmts.go:69:18:69:32 | call to Println | stmts.go:69:18:69:32 | After call to Println | +| stmts.go:69:18:69:32 | expression statement | stmts.go:69:18:69:32 | Before call to Println | +| stmts.go:69:30:69:31 | -... | stmts.go:69:30:69:31 | After -... | +| stmts.go:69:30:69:31 | After -... | stmts.go:69:18:69:32 | call to Println | +| stmts.go:69:30:69:31 | Before -... | stmts.go:69:31:69:31 | x | | stmts.go:69:31:69:31 | x | stmts.go:69:30:69:31 | -... | -| stmts.go:71:2:71:10 | return statement | stmts.go:67:9:67:35 | function call | -| stmts.go:71:2:71:10 | return statement | stmts.go:69:9:69:36 | function call | +| stmts.go:71:2:71:10 | Before return statement | stmts.go:71:9:71:10 | 42 | +| stmts.go:71:2:71:10 | catch-return return statement | stmts.go:67:9:67:35 | defer-invoke function call | +| stmts.go:71:2:71:10 | catch-return return statement | stmts.go:69:9:69:36 | defer-invoke function call | +| stmts.go:71:2:71:10 | return statement | stmts.go:71:2:71:10 | catch-return return statement | | stmts.go:71:9:71:10 | 42 | stmts.go:71:2:71:10 | return statement | -| stmts.go:75:1:109:1 | entry | stmts.go:75:12:75:12 | argument corresponding to x | -| stmts.go:75:1:109:1 | function declaration | stmts.go:112:6:112:10 | skip | -| stmts.go:75:6:75:10 | skip | stmts.go:75:1:109:1 | function declaration | -| stmts.go:75:12:75:12 | argument corresponding to x | stmts.go:75:12:75:12 | initialization of x | -| stmts.go:75:12:75:12 | initialization of x | stmts.go:76:9:76:9 | x | -| stmts.go:76:9:76:9 | x | stmts.go:79:9:79:9 | skip | -| stmts.go:79:9:79:9 | assignment to y | stmts.go:79:17:79:17 | y | -| stmts.go:79:9:79:9 | skip | stmts.go:79:14:79:14 | x | -| stmts.go:79:14:79:14 | x | stmts.go:79:9:79:9 | assignment to y | +| stmts.go:75:1:109:1 | Entry | stmts.go:75:12:75:12 | x | +| stmts.go:75:1:109:1 | Exceptional Exit | stmts.go:75:1:109:1 | Exit | +| stmts.go:75:1:109:1 | Normal Exit | stmts.go:75:1:109:1 | Exit | +| stmts.go:75:1:109:1 | function declaration | stmts.go:112:1:137:1 | function declaration | +| stmts.go:75:12:75:12 | x | stmts.go:75:19:109:1 | block statement | +| stmts.go:75:19:109:1 | After block statement | stmts.go:75:1:109:1 | Normal Exit | +| stmts.go:75:19:109:1 | block statement | stmts.go:76:2:77:2 | expression-switch statement | +| stmts.go:76:2:77:2 | After expression-switch statement | stmts.go:79:2:82:2 | expression-switch statement | +| stmts.go:76:2:77:2 | expression-switch statement | stmts.go:76:9:76:9 | x | +| stmts.go:76:9:76:9 | x | stmts.go:76:2:77:2 | After expression-switch statement | +| stmts.go:79:2:82:2 | After expression-switch statement | stmts.go:84:2:88:2 | expression-switch statement | +| stmts.go:79:2:82:2 | expression-switch statement | stmts.go:79:9:79:14 | ... := ... | +| stmts.go:79:9:79:14 | ... := ... | stmts.go:79:14:79:14 | x | +| stmts.go:79:9:79:14 | After ... := ... | stmts.go:79:17:79:22 | Before ...-... | +| stmts.go:79:9:79:14 | assign:0 ... := ... | stmts.go:79:9:79:14 | After ... := ... | +| stmts.go:79:14:79:14 | x | stmts.go:79:9:79:14 | assign:0 ... := ... | | stmts.go:79:17:79:17 | y | stmts.go:79:21:79:22 | 19 | -| stmts.go:79:17:79:22 | ...-... | stmts.go:81:3:81:7 | test5 | +| stmts.go:79:17:79:22 | ...-... | stmts.go:79:17:79:22 | After ...-... | +| stmts.go:79:17:79:22 | After ...-... | stmts.go:80:2:81:14 | case clause | +| stmts.go:79:17:79:22 | Before ...-... | stmts.go:79:17:79:17 | y | | stmts.go:79:21:79:22 | 19 | stmts.go:79:17:79:22 | ...-... | +| stmts.go:80:2:81:14 | After case clause [match] | stmts.go:81:3:81:14 | expression statement | +| stmts.go:80:2:81:14 | case clause | stmts.go:80:2:81:14 | After case clause [match] | | stmts.go:81:3:81:7 | test5 | stmts.go:81:9:81:13 | false | -| stmts.go:81:3:81:14 | call to test5 | stmts.go:75:1:109:1 | exit | +| stmts.go:81:3:81:14 | After call to test5 | stmts.go:81:3:81:14 | After expression statement | +| stmts.go:81:3:81:14 | After expression statement | stmts.go:79:2:82:2 | After expression-switch statement | +| stmts.go:81:3:81:14 | Before call to test5 | stmts.go:81:3:81:7 | test5 | +| stmts.go:81:3:81:14 | call to test5 | stmts.go:75:1:109:1 | Exceptional Exit | +| stmts.go:81:3:81:14 | call to test5 | stmts.go:81:3:81:14 | After call to test5 | +| stmts.go:81:3:81:14 | expression statement | stmts.go:81:3:81:14 | Before call to test5 | | stmts.go:81:9:81:13 | false | stmts.go:81:3:81:14 | call to test5 | -| stmts.go:84:9:84:9 | x | stmts.go:85:7:85:7 | 1 | -| stmts.go:84:9:84:9 | x | stmts.go:90:9:90:9 | x | -| stmts.go:85:2:85:8 | skip | stmts.go:90:9:90:9 | x | -| stmts.go:85:7:85:7 | 1 | stmts.go:85:7:85:7 | case 1 | -| stmts.go:85:7:85:7 | case 1 | stmts.go:85:2:85:8 | skip | -| stmts.go:85:7:85:7 | case 1 | stmts.go:86:7:86:7 | 2 | -| stmts.go:86:7:86:7 | 2 | stmts.go:86:7:86:7 | case 2 | -| stmts.go:86:7:86:7 | case 2 | stmts.go:86:10:86:10 | 3 | -| stmts.go:86:7:86:7 | case 2 | stmts.go:87:3:87:7 | test5 | -| stmts.go:86:10:86:10 | 3 | stmts.go:86:10:86:10 | case 3 | -| stmts.go:86:10:86:10 | case 3 | stmts.go:87:3:87:7 | test5 | -| stmts.go:86:10:86:10 | case 3 | stmts.go:90:9:90:9 | x | +| stmts.go:84:2:88:2 | After expression-switch statement | stmts.go:90:2:96:2 | expression-switch statement | +| stmts.go:84:2:88:2 | expression-switch statement | stmts.go:84:9:84:9 | x | +| stmts.go:84:9:84:9 | x | stmts.go:85:2:85:8 | case clause | +| stmts.go:85:2:85:8 | After case clause [match] | stmts.go:84:2:88:2 | After expression-switch statement | +| stmts.go:85:2:85:8 | After case clause [no-match] | stmts.go:86:2:87:13 | case clause | +| stmts.go:85:2:85:8 | case clause | stmts.go:85:7:85:7 | 1 | +| stmts.go:85:7:85:7 | 1 | stmts.go:85:7:85:7 | After 1 [match] | +| stmts.go:85:7:85:7 | 1 | stmts.go:85:7:85:7 | After 1 [no-match] | +| stmts.go:85:7:85:7 | After 1 [match] | stmts.go:85:2:85:8 | After case clause [match] | +| stmts.go:85:7:85:7 | After 1 [no-match] | stmts.go:85:2:85:8 | After case clause [no-match] | +| stmts.go:86:2:87:13 | After case clause [match] | stmts.go:87:3:87:13 | expression statement | +| stmts.go:86:2:87:13 | After case clause [no-match] | stmts.go:84:2:88:2 | After expression-switch statement | +| stmts.go:86:2:87:13 | case clause | stmts.go:86:7:86:7 | 2 | +| stmts.go:86:7:86:7 | 2 | stmts.go:86:7:86:7 | After 2 [match] | +| stmts.go:86:7:86:7 | 2 | stmts.go:86:7:86:7 | After 2 [no-match] | +| stmts.go:86:7:86:7 | After 2 [match] | stmts.go:86:2:87:13 | After case clause [match] | +| stmts.go:86:7:86:7 | After 2 [no-match] | stmts.go:86:10:86:10 | 3 | +| stmts.go:86:10:86:10 | 3 | stmts.go:86:10:86:10 | After 3 [match] | +| stmts.go:86:10:86:10 | 3 | stmts.go:86:10:86:10 | After 3 [no-match] | +| stmts.go:86:10:86:10 | After 3 [match] | stmts.go:86:2:87:13 | After case clause [match] | +| stmts.go:86:10:86:10 | After 3 [no-match] | stmts.go:86:2:87:13 | After case clause [no-match] | | stmts.go:87:3:87:7 | test5 | stmts.go:87:9:87:12 | true | +| stmts.go:87:3:87:13 | After call to test5 | stmts.go:87:3:87:13 | After expression statement | +| stmts.go:87:3:87:13 | After expression statement | stmts.go:84:2:88:2 | After expression-switch statement | +| stmts.go:87:3:87:13 | Before call to test5 | stmts.go:87:3:87:7 | test5 | +| stmts.go:87:3:87:13 | call to test5 | stmts.go:75:1:109:1 | Exceptional Exit | +| stmts.go:87:3:87:13 | call to test5 | stmts.go:87:3:87:13 | After call to test5 | +| stmts.go:87:3:87:13 | expression statement | stmts.go:87:3:87:13 | Before call to test5 | | stmts.go:87:9:87:12 | true | stmts.go:87:3:87:13 | call to test5 | -| stmts.go:90:9:90:9 | x | stmts.go:91:7:91:7 | 1 | -| stmts.go:90:9:90:9 | x | stmts.go:98:9:98:9 | x | -| stmts.go:91:7:91:7 | 1 | stmts.go:91:7:91:7 | case 1 | -| stmts.go:91:7:91:7 | case 1 | stmts.go:92:3:92:7 | test5 | -| stmts.go:91:7:91:7 | case 1 | stmts.go:94:7:94:11 | ...-... | +| stmts.go:90:2:96:2 | After expression-switch statement | stmts.go:98:2:102:2 | expression-switch statement | +| stmts.go:90:2:96:2 | expression-switch statement | stmts.go:90:9:90:9 | x | +| stmts.go:90:9:90:9 | x | stmts.go:91:2:93:13 | case clause | +| stmts.go:91:2:93:13 | After case clause [match] | stmts.go:92:3:92:14 | expression statement | +| stmts.go:91:2:93:13 | After case clause [no-match] | stmts.go:94:2:95:13 | case clause | +| stmts.go:91:2:93:13 | case clause | stmts.go:91:7:91:7 | 1 | +| stmts.go:91:7:91:7 | 1 | stmts.go:91:7:91:7 | After 1 [match] | +| stmts.go:91:7:91:7 | 1 | stmts.go:91:7:91:7 | After 1 [no-match] | +| stmts.go:91:7:91:7 | After 1 [match] | stmts.go:91:2:93:13 | After case clause [match] | +| stmts.go:91:7:91:7 | After 1 [no-match] | stmts.go:91:2:93:13 | After case clause [no-match] | | stmts.go:92:3:92:7 | test5 | stmts.go:92:9:92:13 | false | +| stmts.go:92:3:92:14 | After call to test5 | stmts.go:92:3:92:14 | After expression statement | +| stmts.go:92:3:92:14 | After expression statement | stmts.go:93:3:93:13 | fallthrough statement | +| stmts.go:92:3:92:14 | Before call to test5 | stmts.go:92:3:92:7 | test5 | +| stmts.go:92:3:92:14 | call to test5 | stmts.go:75:1:109:1 | Exceptional Exit | +| stmts.go:92:3:92:14 | call to test5 | stmts.go:92:3:92:14 | After call to test5 | +| stmts.go:92:3:92:14 | expression statement | stmts.go:92:3:92:14 | Before call to test5 | | stmts.go:92:9:92:13 | false | stmts.go:92:3:92:14 | call to test5 | -| stmts.go:93:3:93:13 | skip | stmts.go:95:3:95:7 | test5 | -| stmts.go:94:7:94:11 | ...-... | stmts.go:94:7:94:11 | case ...-... | -| stmts.go:94:7:94:11 | case ...-... | stmts.go:95:3:95:7 | test5 | -| stmts.go:94:7:94:11 | case ...-... | stmts.go:98:9:98:9 | x | +| stmts.go:93:3:93:13 | fallthrough statement | stmts.go:95:3:95:13 | expression statement | +| stmts.go:94:2:95:13 | After case clause [match] | stmts.go:95:3:95:13 | expression statement | +| stmts.go:94:2:95:13 | After case clause [no-match] | stmts.go:90:2:96:2 | After expression-switch statement | +| stmts.go:94:2:95:13 | case clause | stmts.go:94:7:94:11 | Before ...-... | +| stmts.go:94:7:94:11 | ...-... | stmts.go:94:7:94:11 | After ...-... [match] | +| stmts.go:94:7:94:11 | ...-... | stmts.go:94:7:94:11 | After ...-... [no-match] | +| stmts.go:94:7:94:11 | After ...-... [match] | stmts.go:94:2:95:13 | After case clause [match] | +| stmts.go:94:7:94:11 | After ...-... [no-match] | stmts.go:94:2:95:13 | After case clause [no-match] | +| stmts.go:94:7:94:11 | Before ...-... | stmts.go:94:7:94:11 | ...-... | | stmts.go:95:3:95:7 | test5 | stmts.go:95:9:95:12 | true | +| stmts.go:95:3:95:13 | After call to test5 | stmts.go:95:3:95:13 | After expression statement | +| stmts.go:95:3:95:13 | After expression statement | stmts.go:90:2:96:2 | After expression-switch statement | +| stmts.go:95:3:95:13 | Before call to test5 | stmts.go:95:3:95:7 | test5 | +| stmts.go:95:3:95:13 | call to test5 | stmts.go:75:1:109:1 | Exceptional Exit | +| stmts.go:95:3:95:13 | call to test5 | stmts.go:95:3:95:13 | After call to test5 | +| stmts.go:95:3:95:13 | expression statement | stmts.go:95:3:95:13 | Before call to test5 | | stmts.go:95:9:95:12 | true | stmts.go:95:3:95:13 | call to test5 | -| stmts.go:98:9:98:9 | x | stmts.go:100:7:100:7 | 2 | -| stmts.go:99:2:99:9 | skip | stmts.go:104:2:108:2 | true | -| stmts.go:100:7:100:7 | 2 | stmts.go:100:7:100:7 | case 2 | -| stmts.go:100:7:100:7 | case 2 | stmts.go:99:2:99:9 | skip | -| stmts.go:100:7:100:7 | case 2 | stmts.go:101:3:101:7 | test5 | +| stmts.go:98:2:102:2 | After expression-switch statement | stmts.go:104:2:108:2 | expression-switch statement | +| stmts.go:98:2:102:2 | expression-switch statement | stmts.go:98:9:98:9 | x | +| stmts.go:98:9:98:9 | x | stmts.go:100:2:101:13 | case clause | +| stmts.go:99:2:99:9 | After case clause [match] | stmts.go:98:2:102:2 | After expression-switch statement | +| stmts.go:99:2:99:9 | case clause | stmts.go:99:2:99:9 | After case clause [match] | +| stmts.go:100:2:101:13 | After case clause [match] | stmts.go:101:3:101:13 | expression statement | +| stmts.go:100:2:101:13 | After case clause [no-match] | stmts.go:99:2:99:9 | case clause | +| stmts.go:100:2:101:13 | case clause | stmts.go:100:7:100:7 | 2 | +| stmts.go:100:7:100:7 | 2 | stmts.go:100:7:100:7 | After 2 [match] | +| stmts.go:100:7:100:7 | 2 | stmts.go:100:7:100:7 | After 2 [no-match] | +| stmts.go:100:7:100:7 | After 2 [match] | stmts.go:100:2:101:13 | After case clause [match] | +| stmts.go:100:7:100:7 | After 2 [no-match] | stmts.go:100:2:101:13 | After case clause [no-match] | | stmts.go:101:3:101:7 | test5 | stmts.go:101:9:101:12 | true | +| stmts.go:101:3:101:13 | After call to test5 | stmts.go:101:3:101:13 | After expression statement | +| stmts.go:101:3:101:13 | After expression statement | stmts.go:98:2:102:2 | After expression-switch statement | +| stmts.go:101:3:101:13 | Before call to test5 | stmts.go:101:3:101:7 | test5 | +| stmts.go:101:3:101:13 | call to test5 | stmts.go:75:1:109:1 | Exceptional Exit | +| stmts.go:101:3:101:13 | call to test5 | stmts.go:101:3:101:13 | After call to test5 | +| stmts.go:101:3:101:13 | expression statement | stmts.go:101:3:101:13 | Before call to test5 | | stmts.go:101:9:101:12 | true | stmts.go:101:3:101:13 | call to test5 | -| stmts.go:104:2:108:2 | true | stmts.go:107:7:107:10 | true | -| stmts.go:107:7:107:10 | case true | stmts.go:107:7:107:10 | true is false | -| stmts.go:107:7:107:10 | case true | stmts.go:107:7:107:10 | true is true | -| stmts.go:107:7:107:10 | true | stmts.go:107:7:107:10 | case true | -| stmts.go:107:7:107:10 | true is false | stmts.go:106:3:106:7 | skip | -| stmts.go:107:7:107:10 | true is true | stmts.go:107:2:107:11 | skip | -| stmts.go:112:1:137:1 | entry | stmts.go:112:12:112:12 | argument corresponding to x | -| stmts.go:112:1:137:1 | function declaration | stmts.go:140:6:140:11 | skip | -| stmts.go:112:6:112:10 | skip | stmts.go:112:1:137:1 | function declaration | -| stmts.go:112:12:112:12 | argument corresponding to x | stmts.go:112:12:112:12 | initialization of x | -| stmts.go:112:12:112:12 | initialization of x | stmts.go:113:9:113:9 | skip | -| stmts.go:113:9:113:9 | assignment to y | stmts.go:114:7:114:11 | case error | -| stmts.go:113:9:113:9 | skip | stmts.go:113:14:113:14 | x | +| stmts.go:104:2:108:2 | After expression-switch statement | stmts.go:75:19:109:1 | After block statement | +| stmts.go:104:2:108:2 | expression-switch statement | stmts.go:107:2:107:11 | case clause | +| stmts.go:105:2:106:7 | After case clause [match] | stmts.go:106:3:106:7 | Before break statement | +| stmts.go:105:2:106:7 | case clause | stmts.go:105:2:106:7 | After case clause [match] | +| stmts.go:106:3:106:7 | Before break statement | stmts.go:106:3:106:7 | break statement | +| stmts.go:106:3:106:7 | break statement | stmts.go:104:2:108:2 | After expression-switch statement | +| stmts.go:107:2:107:11 | After case clause [match] | stmts.go:104:2:108:2 | After expression-switch statement | +| stmts.go:107:2:107:11 | After case clause [no-match] | stmts.go:105:2:106:7 | case clause | +| stmts.go:107:2:107:11 | case clause | stmts.go:107:7:107:10 | true | +| stmts.go:107:7:107:10 | After true [match] | stmts.go:107:2:107:11 | After case clause [match] | +| stmts.go:107:7:107:10 | After true [no-match] | stmts.go:107:2:107:11 | After case clause [no-match] | +| stmts.go:107:7:107:10 | true | stmts.go:107:7:107:10 | After true [match] | +| stmts.go:107:7:107:10 | true | stmts.go:107:7:107:10 | After true [no-match] | +| stmts.go:112:1:137:1 | Entry | stmts.go:112:12:112:12 | x | +| stmts.go:112:1:137:1 | Exceptional Exit | stmts.go:112:1:137:1 | Exit | +| stmts.go:112:1:137:1 | Normal Exit | stmts.go:112:1:137:1 | Exit | +| stmts.go:112:1:137:1 | function declaration | stmts.go:140:1:142:1 | function declaration | +| stmts.go:112:12:112:12 | x | stmts.go:112:27:137:1 | block statement | +| stmts.go:112:27:137:1 | After block statement | stmts.go:112:1:137:1 | Normal Exit | +| stmts.go:112:27:137:1 | block statement | stmts.go:113:2:121:2 | type-switch statement | +| stmts.go:113:2:121:2 | After type-switch statement | stmts.go:123:2:131:2 | type-switch statement | +| stmts.go:113:2:121:2 | type-switch statement | stmts.go:113:14:113:21 | Before type assertion | | stmts.go:113:14:113:14 | x | stmts.go:113:14:113:21 | type assertion | -| stmts.go:113:14:113:21 | type assertion | stmts.go:113:9:113:9 | assignment to y | -| stmts.go:114:2:115:16 | implicit type switch variable declaration | stmts.go:115:3:115:13 | selection of Println | -| stmts.go:114:7:114:11 | case error | stmts.go:114:2:115:16 | implicit type switch variable declaration | -| stmts.go:114:7:114:11 | case error | stmts.go:114:14:114:19 | case string | -| stmts.go:114:14:114:19 | case string | stmts.go:114:2:115:16 | implicit type switch variable declaration | -| stmts.go:114:14:114:19 | case string | stmts.go:116:7:116:13 | case float32 | -| stmts.go:115:3:115:13 | selection of Println | stmts.go:115:15:115:15 | y | -| stmts.go:115:3:115:16 | call to Println | stmts.go:112:1:137:1 | exit | -| stmts.go:115:3:115:16 | call to Println | stmts.go:123:9:123:9 | skip | +| stmts.go:113:14:113:21 | After type assertion | stmts.go:114:2:115:16 | case clause | +| stmts.go:113:14:113:21 | Before type assertion | stmts.go:113:14:113:14 | x | +| stmts.go:113:14:113:21 | type assertion | stmts.go:113:14:113:21 | After type assertion | +| stmts.go:114:2:115:16 | After case clause [match] | stmts.go:115:3:115:16 | expression statement | +| stmts.go:114:2:115:16 | After case clause [no-match] | stmts.go:116:2:118:14 | case clause | +| stmts.go:114:2:115:16 | case clause | stmts.go:114:7:114:11 | error | +| stmts.go:114:7:114:11 | After error [match] | stmts.go:114:2:115:16 | After case clause [match] | +| stmts.go:114:7:114:11 | After error [no-match] | stmts.go:114:14:114:19 | string | +| stmts.go:114:7:114:11 | error | stmts.go:114:7:114:11 | After error [match] | +| stmts.go:114:7:114:11 | error | stmts.go:114:7:114:11 | After error [no-match] | +| stmts.go:114:14:114:19 | After string [match] | stmts.go:114:2:115:16 | After case clause [match] | +| stmts.go:114:14:114:19 | After string [no-match] | stmts.go:114:2:115:16 | After case clause [no-match] | +| stmts.go:114:14:114:19 | string | stmts.go:114:14:114:19 | After string [match] | +| stmts.go:114:14:114:19 | string | stmts.go:114:14:114:19 | After string [no-match] | +| stmts.go:115:3:115:13 | After selection of Println | stmts.go:115:15:115:15 | y | +| stmts.go:115:3:115:13 | Before selection of Println | stmts.go:115:3:115:13 | selection of Println | +| stmts.go:115:3:115:13 | selection of Println | stmts.go:115:3:115:13 | After selection of Println | +| stmts.go:115:3:115:16 | After call to Println | stmts.go:115:3:115:16 | After expression statement | +| stmts.go:115:3:115:16 | After expression statement | stmts.go:113:2:121:2 | After type-switch statement | +| stmts.go:115:3:115:16 | Before call to Println | stmts.go:115:3:115:13 | Before selection of Println | +| stmts.go:115:3:115:16 | call to Println | stmts.go:112:1:137:1 | Exceptional Exit | +| stmts.go:115:3:115:16 | call to Println | stmts.go:115:3:115:16 | After call to Println | +| stmts.go:115:3:115:16 | expression statement | stmts.go:115:3:115:16 | Before call to Println | | stmts.go:115:15:115:15 | y | stmts.go:115:3:115:16 | call to Println | -| stmts.go:116:2:118:14 | implicit type switch variable declaration | stmts.go:117:3:117:7 | test5 | -| stmts.go:116:7:116:13 | case float32 | stmts.go:116:2:118:14 | implicit type switch variable declaration | -| stmts.go:116:7:116:13 | case float32 | stmts.go:119:2:120:7 | implicit type switch variable declaration | +| stmts.go:116:2:118:14 | After case clause [match] | stmts.go:117:3:117:13 | expression statement | +| stmts.go:116:2:118:14 | After case clause [no-match] | stmts.go:119:2:120:7 | case clause | +| stmts.go:116:2:118:14 | case clause | stmts.go:116:7:116:13 | float32 | +| stmts.go:116:7:116:13 | After float32 [match] | stmts.go:116:2:118:14 | After case clause [match] | +| stmts.go:116:7:116:13 | After float32 [no-match] | stmts.go:116:2:118:14 | After case clause [no-match] | +| stmts.go:116:7:116:13 | float32 | stmts.go:116:7:116:13 | After float32 [match] | +| stmts.go:116:7:116:13 | float32 | stmts.go:116:7:116:13 | After float32 [no-match] | | stmts.go:117:3:117:7 | test5 | stmts.go:117:9:117:12 | true | -| stmts.go:117:3:117:13 | call to test5 | stmts.go:112:1:137:1 | exit | +| stmts.go:117:3:117:13 | After call to test5 | stmts.go:117:3:117:13 | After expression statement | +| stmts.go:117:3:117:13 | After expression statement | stmts.go:118:3:118:14 | expression statement | +| stmts.go:117:3:117:13 | Before call to test5 | stmts.go:117:3:117:7 | test5 | +| stmts.go:117:3:117:13 | call to test5 | stmts.go:112:1:137:1 | Exceptional Exit | +| stmts.go:117:3:117:13 | call to test5 | stmts.go:117:3:117:13 | After call to test5 | +| stmts.go:117:3:117:13 | expression statement | stmts.go:117:3:117:13 | Before call to test5 | | stmts.go:117:9:117:12 | true | stmts.go:117:3:117:13 | call to test5 | | stmts.go:118:3:118:7 | test5 | stmts.go:118:9:118:13 | false | +| stmts.go:118:3:118:14 | After call to test5 | stmts.go:118:3:118:14 | After expression statement | +| stmts.go:118:3:118:14 | After expression statement | stmts.go:113:2:121:2 | After type-switch statement | +| stmts.go:118:3:118:14 | Before call to test5 | stmts.go:118:3:118:7 | test5 | +| stmts.go:118:3:118:14 | call to test5 | stmts.go:112:1:137:1 | Exceptional Exit | +| stmts.go:118:3:118:14 | call to test5 | stmts.go:118:3:118:14 | After call to test5 | +| stmts.go:118:3:118:14 | expression statement | stmts.go:118:3:118:14 | Before call to test5 | | stmts.go:118:9:118:13 | false | stmts.go:118:3:118:14 | call to test5 | -| stmts.go:119:2:120:7 | implicit type switch variable declaration | stmts.go:120:3:120:3 | skip | -| stmts.go:120:3:120:3 | skip | stmts.go:120:7:120:7 | y | -| stmts.go:120:7:120:7 | y | stmts.go:123:9:123:9 | skip | -| stmts.go:123:9:123:9 | assignment to y | stmts.go:123:17:123:17 | y | -| stmts.go:123:9:123:9 | skip | stmts.go:123:14:123:14 | x | -| stmts.go:123:14:123:14 | x | stmts.go:123:9:123:9 | assignment to y | +| stmts.go:119:2:120:7 | After case clause [match] | stmts.go:120:3:120:7 | ... = ... | +| stmts.go:119:2:120:7 | case clause | stmts.go:119:2:120:7 | After case clause [match] | +| stmts.go:120:3:120:7 | ... = ... | stmts.go:120:7:120:7 | y | +| stmts.go:120:3:120:7 | After ... = ... | stmts.go:113:2:121:2 | After type-switch statement | +| stmts.go:120:7:120:7 | y | stmts.go:120:3:120:7 | After ... = ... | +| stmts.go:123:2:131:2 | After type-switch statement | stmts.go:133:2:136:2 | type-switch statement | +| stmts.go:123:2:131:2 | type-switch statement | stmts.go:123:9:123:14 | ... := ... | +| stmts.go:123:9:123:14 | ... := ... | stmts.go:123:14:123:14 | x | +| stmts.go:123:9:123:14 | After ... := ... | stmts.go:123:17:123:24 | Before type assertion | +| stmts.go:123:9:123:14 | assign:0 ... := ... | stmts.go:123:9:123:14 | After ... := ... | +| stmts.go:123:14:123:14 | x | stmts.go:123:9:123:14 | assign:0 ... := ... | | stmts.go:123:17:123:17 | y | stmts.go:123:17:123:24 | type assertion | -| stmts.go:123:17:123:24 | type assertion | stmts.go:124:7:124:11 | case error | -| stmts.go:124:7:124:11 | case error | stmts.go:124:14:124:19 | case string | -| stmts.go:124:7:124:11 | case error | stmts.go:125:3:125:13 | selection of Println | -| stmts.go:124:14:124:19 | case string | stmts.go:125:3:125:13 | selection of Println | -| stmts.go:124:14:124:19 | case string | stmts.go:126:7:126:13 | case float32 | -| stmts.go:125:3:125:13 | selection of Println | stmts.go:125:15:125:15 | y | -| stmts.go:125:3:125:16 | call to Println | stmts.go:112:1:137:1 | exit | -| stmts.go:125:3:125:16 | call to Println | stmts.go:133:9:133:9 | skip | +| stmts.go:123:17:123:24 | After type assertion | stmts.go:124:2:125:16 | case clause | +| stmts.go:123:17:123:24 | Before type assertion | stmts.go:123:17:123:17 | y | +| stmts.go:123:17:123:24 | type assertion | stmts.go:123:17:123:24 | After type assertion | +| stmts.go:124:2:125:16 | After case clause [match] | stmts.go:125:3:125:16 | expression statement | +| stmts.go:124:2:125:16 | After case clause [no-match] | stmts.go:126:2:128:14 | case clause | +| stmts.go:124:2:125:16 | case clause | stmts.go:124:7:124:11 | error | +| stmts.go:124:7:124:11 | After error [match] | stmts.go:124:2:125:16 | After case clause [match] | +| stmts.go:124:7:124:11 | After error [no-match] | stmts.go:124:14:124:19 | string | +| stmts.go:124:7:124:11 | error | stmts.go:124:7:124:11 | After error [match] | +| stmts.go:124:7:124:11 | error | stmts.go:124:7:124:11 | After error [no-match] | +| stmts.go:124:14:124:19 | After string [match] | stmts.go:124:2:125:16 | After case clause [match] | +| stmts.go:124:14:124:19 | After string [no-match] | stmts.go:124:2:125:16 | After case clause [no-match] | +| stmts.go:124:14:124:19 | string | stmts.go:124:14:124:19 | After string [match] | +| stmts.go:124:14:124:19 | string | stmts.go:124:14:124:19 | After string [no-match] | +| stmts.go:125:3:125:13 | After selection of Println | stmts.go:125:15:125:15 | y | +| stmts.go:125:3:125:13 | Before selection of Println | stmts.go:125:3:125:13 | selection of Println | +| stmts.go:125:3:125:13 | selection of Println | stmts.go:125:3:125:13 | After selection of Println | +| stmts.go:125:3:125:16 | After call to Println | stmts.go:125:3:125:16 | After expression statement | +| stmts.go:125:3:125:16 | After expression statement | stmts.go:123:2:131:2 | After type-switch statement | +| stmts.go:125:3:125:16 | Before call to Println | stmts.go:125:3:125:13 | Before selection of Println | +| stmts.go:125:3:125:16 | call to Println | stmts.go:112:1:137:1 | Exceptional Exit | +| stmts.go:125:3:125:16 | call to Println | stmts.go:125:3:125:16 | After call to Println | +| stmts.go:125:3:125:16 | expression statement | stmts.go:125:3:125:16 | Before call to Println | | stmts.go:125:15:125:15 | y | stmts.go:125:3:125:16 | call to Println | -| stmts.go:126:7:126:13 | case float32 | stmts.go:127:3:127:7 | test5 | -| stmts.go:126:7:126:13 | case float32 | stmts.go:130:3:130:3 | skip | +| stmts.go:126:2:128:14 | After case clause [match] | stmts.go:127:3:127:13 | expression statement | +| stmts.go:126:2:128:14 | After case clause [no-match] | stmts.go:129:2:130:7 | case clause | +| stmts.go:126:2:128:14 | case clause | stmts.go:126:7:126:13 | float32 | +| stmts.go:126:7:126:13 | After float32 [match] | stmts.go:126:2:128:14 | After case clause [match] | +| stmts.go:126:7:126:13 | After float32 [no-match] | stmts.go:126:2:128:14 | After case clause [no-match] | +| stmts.go:126:7:126:13 | float32 | stmts.go:126:7:126:13 | After float32 [match] | +| stmts.go:126:7:126:13 | float32 | stmts.go:126:7:126:13 | After float32 [no-match] | | stmts.go:127:3:127:7 | test5 | stmts.go:127:9:127:12 | true | -| stmts.go:127:3:127:13 | call to test5 | stmts.go:112:1:137:1 | exit | +| stmts.go:127:3:127:13 | After call to test5 | stmts.go:127:3:127:13 | After expression statement | +| stmts.go:127:3:127:13 | After expression statement | stmts.go:128:3:128:14 | expression statement | +| stmts.go:127:3:127:13 | Before call to test5 | stmts.go:127:3:127:7 | test5 | +| stmts.go:127:3:127:13 | call to test5 | stmts.go:112:1:137:1 | Exceptional Exit | +| stmts.go:127:3:127:13 | call to test5 | stmts.go:127:3:127:13 | After call to test5 | +| stmts.go:127:3:127:13 | expression statement | stmts.go:127:3:127:13 | Before call to test5 | | stmts.go:127:9:127:12 | true | stmts.go:127:3:127:13 | call to test5 | | stmts.go:128:3:128:7 | test5 | stmts.go:128:9:128:13 | false | +| stmts.go:128:3:128:14 | After call to test5 | stmts.go:128:3:128:14 | After expression statement | +| stmts.go:128:3:128:14 | After expression statement | stmts.go:123:2:131:2 | After type-switch statement | +| stmts.go:128:3:128:14 | Before call to test5 | stmts.go:128:3:128:7 | test5 | +| stmts.go:128:3:128:14 | call to test5 | stmts.go:112:1:137:1 | Exceptional Exit | +| stmts.go:128:3:128:14 | call to test5 | stmts.go:128:3:128:14 | After call to test5 | +| stmts.go:128:3:128:14 | expression statement | stmts.go:128:3:128:14 | Before call to test5 | | stmts.go:128:9:128:13 | false | stmts.go:128:3:128:14 | call to test5 | -| stmts.go:130:3:130:3 | skip | stmts.go:130:7:130:7 | y | -| stmts.go:130:7:130:7 | y | stmts.go:133:9:133:9 | skip | -| stmts.go:133:9:133:9 | assignment to y | stmts.go:133:17:133:17 | y | -| stmts.go:133:9:133:9 | skip | stmts.go:133:14:133:14 | x | -| stmts.go:133:14:133:14 | x | stmts.go:133:9:133:9 | assignment to y | +| stmts.go:129:2:130:7 | After case clause [match] | stmts.go:130:3:130:7 | ... = ... | +| stmts.go:129:2:130:7 | case clause | stmts.go:129:2:130:7 | After case clause [match] | +| stmts.go:130:3:130:7 | ... = ... | stmts.go:130:7:130:7 | y | +| stmts.go:130:3:130:7 | After ... = ... | stmts.go:123:2:131:2 | After type-switch statement | +| stmts.go:130:7:130:7 | y | stmts.go:130:3:130:7 | After ... = ... | +| stmts.go:133:2:136:2 | After type-switch statement | stmts.go:112:27:137:1 | After block statement | +| stmts.go:133:2:136:2 | type-switch statement | stmts.go:133:9:133:14 | ... := ... | +| stmts.go:133:9:133:14 | ... := ... | stmts.go:133:14:133:14 | x | +| stmts.go:133:9:133:14 | After ... := ... | stmts.go:133:17:133:24 | Before type assertion | +| stmts.go:133:9:133:14 | assign:0 ... := ... | stmts.go:133:9:133:14 | After ... := ... | +| stmts.go:133:14:133:14 | x | stmts.go:133:9:133:14 | assign:0 ... := ... | | stmts.go:133:17:133:17 | y | stmts.go:133:17:133:24 | type assertion | -| stmts.go:133:17:133:24 | type assertion | stmts.go:135:3:135:7 | test5 | +| stmts.go:133:17:133:24 | After type assertion | stmts.go:134:2:135:14 | case clause | +| stmts.go:133:17:133:24 | Before type assertion | stmts.go:133:17:133:17 | y | +| stmts.go:133:17:133:24 | type assertion | stmts.go:133:17:133:24 | After type assertion | +| stmts.go:134:2:135:14 | After case clause [match] | stmts.go:135:3:135:14 | expression statement | +| stmts.go:134:2:135:14 | case clause | stmts.go:134:2:135:14 | After case clause [match] | | stmts.go:135:3:135:7 | test5 | stmts.go:135:9:135:13 | false | -| stmts.go:135:3:135:14 | call to test5 | stmts.go:112:1:137:1 | exit | +| stmts.go:135:3:135:14 | After call to test5 | stmts.go:135:3:135:14 | After expression statement | +| stmts.go:135:3:135:14 | After expression statement | stmts.go:133:2:136:2 | After type-switch statement | +| stmts.go:135:3:135:14 | Before call to test5 | stmts.go:135:3:135:7 | test5 | +| stmts.go:135:3:135:14 | call to test5 | stmts.go:112:1:137:1 | Exceptional Exit | +| stmts.go:135:3:135:14 | call to test5 | stmts.go:135:3:135:14 | After call to test5 | +| stmts.go:135:3:135:14 | expression statement | stmts.go:135:3:135:14 | Before call to test5 | | stmts.go:135:9:135:13 | false | stmts.go:135:3:135:14 | call to test5 | -| stmts.go:140:1:142:1 | entry | stmts.go:140:13:140:13 | argument corresponding to f | -| stmts.go:140:1:142:1 | function declaration | stmts.go:145:6:145:11 | skip | -| stmts.go:140:6:140:11 | skip | stmts.go:140:1:142:1 | function declaration | -| stmts.go:140:13:140:13 | argument corresponding to f | stmts.go:140:13:140:13 | initialization of f | -| stmts.go:140:13:140:13 | initialization of f | stmts.go:141:5:141:5 | f | -| stmts.go:141:2:141:7 | go statement | stmts.go:140:1:142:1 | exit | -| stmts.go:141:5:141:5 | f | stmts.go:141:2:141:7 | go statement | -| stmts.go:145:1:159:1 | entry | stmts.go:145:13:145:14 | argument corresponding to xs | -| stmts.go:145:1:159:1 | function declaration | stmts.go:0:0:0:0 | exit | -| stmts.go:145:6:145:11 | skip | stmts.go:145:1:159:1 | function declaration | -| stmts.go:145:13:145:14 | argument corresponding to xs | stmts.go:145:13:145:14 | initialization of xs | -| stmts.go:145:13:145:14 | initialization of xs | stmts.go:146:17:146:18 | xs | -| stmts.go:146:2:151:2 | range statement[0] | stmts.go:146:6:146:6 | assignment to x | -| stmts.go:146:6:146:6 | assignment to x | stmts.go:147:6:147:6 | x | -| stmts.go:146:6:146:6 | skip | stmts.go:146:2:151:2 | range statement[0] | -| stmts.go:146:17:146:18 | next key-value pair in range | stmts.go:146:6:146:6 | skip | -| stmts.go:146:17:146:18 | next key-value pair in range | stmts.go:153:20:153:21 | xs | -| stmts.go:146:17:146:18 | xs | stmts.go:146:17:146:18 | next key-value pair in range | +| stmts.go:140:1:142:1 | Entry | stmts.go:140:13:140:13 | f | +| stmts.go:140:1:142:1 | Normal Exit | stmts.go:140:1:142:1 | Exit | +| stmts.go:140:1:142:1 | function declaration | stmts.go:145:1:159:1 | function declaration | +| stmts.go:140:13:140:13 | f | stmts.go:140:23:142:1 | block statement | +| stmts.go:140:23:142:1 | After block statement | stmts.go:140:1:142:1 | Normal Exit | +| stmts.go:140:23:142:1 | block statement | stmts.go:141:2:141:7 | Before go statement | +| stmts.go:141:2:141:7 | After go statement | stmts.go:140:23:142:1 | After block statement | +| stmts.go:141:2:141:7 | Before go statement | stmts.go:141:5:141:7 | Before call to f | +| stmts.go:141:2:141:7 | go statement | stmts.go:141:2:141:7 | After go statement | +| stmts.go:141:5:141:5 | f | stmts.go:141:5:141:7 | call to f | +| stmts.go:141:5:141:7 | After call to f | stmts.go:141:2:141:7 | go statement | +| stmts.go:141:5:141:7 | Before call to f | stmts.go:141:5:141:5 | f | +| stmts.go:141:5:141:7 | call to f | stmts.go:141:5:141:7 | After call to f | +| stmts.go:145:1:159:1 | Entry | stmts.go:145:13:145:14 | xs | +| stmts.go:145:1:159:1 | Exceptional Exit | stmts.go:145:1:159:1 | Exit | +| stmts.go:145:1:159:1 | Normal Exit | stmts.go:145:1:159:1 | Exit | +| stmts.go:145:1:159:1 | function declaration | stmts.go:0:0:0:0 | After stmts.go | +| stmts.go:145:13:145:14 | xs | stmts.go:145:23:159:1 | block statement | +| stmts.go:145:23:159:1 | After block statement | stmts.go:145:1:159:1 | Normal Exit | +| stmts.go:145:23:159:1 | block statement | stmts.go:146:2:151:2 | range statement | +| stmts.go:146:2:151:2 | After range element | stmts.go:146:20:151:2 | block statement | +| stmts.go:146:2:151:2 | After range statement | stmts.go:153:2:155:2 | range statement | +| stmts.go:146:2:151:2 | [LoopHeader] range statement | stmts.go:146:2:151:2 | After range statement | +| stmts.go:146:2:151:2 | [LoopHeader] range statement | stmts.go:146:2:151:2 | range element | +| stmts.go:146:2:151:2 | extract:0 range element | stmts.go:146:2:151:2 | After range element | +| stmts.go:146:2:151:2 | next range element | stmts.go:146:2:151:2 | extract:0 range element | +| stmts.go:146:2:151:2 | range element | stmts.go:146:2:151:2 | next range element | +| stmts.go:146:2:151:2 | range statement | stmts.go:146:17:146:18 | xs | +| stmts.go:146:17:146:18 | After xs [empty] | stmts.go:146:2:151:2 | After range statement | +| stmts.go:146:17:146:18 | After xs [non-empty] | stmts.go:146:2:151:2 | range element | +| stmts.go:146:17:146:18 | xs | stmts.go:146:17:146:18 | After xs [empty] | +| stmts.go:146:17:146:18 | xs | stmts.go:146:17:146:18 | After xs [non-empty] | +| stmts.go:146:20:151:2 | After block statement | stmts.go:146:2:151:2 | [LoopHeader] range statement | +| stmts.go:146:20:151:2 | block statement | stmts.go:147:3:149:3 | if statement | +| stmts.go:147:3:149:3 | After if statement | stmts.go:150:3:150:14 | expression statement | +| stmts.go:147:3:149:3 | if statement | stmts.go:147:6:147:10 | Before ...>... | | stmts.go:147:6:147:6 | x | stmts.go:147:10:147:10 | 5 | -| stmts.go:147:6:147:10 | ...>... | stmts.go:147:6:147:10 | ...>... is false | -| stmts.go:147:6:147:10 | ...>... | stmts.go:147:6:147:10 | ...>... is true | -| stmts.go:147:6:147:10 | ...>... is false | stmts.go:150:3:150:11 | selection of Print | -| stmts.go:147:6:147:10 | ...>... is true | stmts.go:148:4:148:11 | skip | +| stmts.go:147:6:147:10 | ...>... | stmts.go:147:6:147:10 | After ...>... [false] | +| stmts.go:147:6:147:10 | ...>... | stmts.go:147:6:147:10 | After ...>... [true] | +| stmts.go:147:6:147:10 | After ...>... [false] | stmts.go:147:3:149:3 | After if statement | +| stmts.go:147:6:147:10 | After ...>... [true] | stmts.go:147:12:149:3 | block statement | +| stmts.go:147:6:147:10 | Before ...>... | stmts.go:147:6:147:6 | x | | stmts.go:147:10:147:10 | 5 | stmts.go:147:6:147:10 | ...>... | -| stmts.go:148:4:148:11 | skip | stmts.go:146:17:146:18 | next key-value pair in range | -| stmts.go:150:3:150:11 | selection of Print | stmts.go:150:13:150:13 | x | -| stmts.go:150:3:150:14 | call to Print | stmts.go:145:1:159:1 | exit | -| stmts.go:150:3:150:14 | call to Print | stmts.go:146:17:146:18 | next key-value pair in range | +| stmts.go:147:12:149:3 | block statement | stmts.go:148:4:148:11 | Before continue statement | +| stmts.go:148:4:148:11 | Before continue statement | stmts.go:148:4:148:11 | continue statement | +| stmts.go:148:4:148:11 | continue statement | stmts.go:146:2:151:2 | [LoopHeader] range statement | +| stmts.go:150:3:150:11 | After selection of Print | stmts.go:150:13:150:13 | x | +| stmts.go:150:3:150:11 | Before selection of Print | stmts.go:150:3:150:11 | selection of Print | +| stmts.go:150:3:150:11 | selection of Print | stmts.go:150:3:150:11 | After selection of Print | +| stmts.go:150:3:150:14 | After call to Print | stmts.go:150:3:150:14 | After expression statement | +| stmts.go:150:3:150:14 | After expression statement | stmts.go:146:20:151:2 | After block statement | +| stmts.go:150:3:150:14 | Before call to Print | stmts.go:150:3:150:11 | Before selection of Print | +| stmts.go:150:3:150:14 | call to Print | stmts.go:145:1:159:1 | Exceptional Exit | +| stmts.go:150:3:150:14 | call to Print | stmts.go:150:3:150:14 | After call to Print | +| stmts.go:150:3:150:14 | expression statement | stmts.go:150:3:150:14 | Before call to Print | | stmts.go:150:13:150:13 | x | stmts.go:150:3:150:14 | call to Print | -| stmts.go:153:2:155:2 | range statement[0] | stmts.go:153:2:155:2 | range statement[1] | -| stmts.go:153:2:155:2 | range statement[1] | stmts.go:153:6:153:6 | assignment to i | -| stmts.go:153:6:153:6 | assignment to i | stmts.go:153:9:153:9 | assignment to v | -| stmts.go:153:6:153:6 | skip | stmts.go:153:9:153:9 | skip | -| stmts.go:153:9:153:9 | assignment to v | stmts.go:154:3:154:11 | selection of Print | -| stmts.go:153:9:153:9 | skip | stmts.go:153:2:155:2 | range statement[0] | -| stmts.go:153:20:153:21 | next key-value pair in range | stmts.go:153:6:153:6 | skip | -| stmts.go:153:20:153:21 | next key-value pair in range | stmts.go:157:12:157:13 | xs | -| stmts.go:153:20:153:21 | xs | stmts.go:153:20:153:21 | next key-value pair in range | -| stmts.go:154:3:154:11 | selection of Print | stmts.go:154:13:154:13 | i | -| stmts.go:154:3:154:17 | call to Print | stmts.go:145:1:159:1 | exit | -| stmts.go:154:3:154:17 | call to Print | stmts.go:153:20:153:21 | next key-value pair in range | +| stmts.go:153:2:155:2 | After range element | stmts.go:153:23:155:2 | block statement | +| stmts.go:153:2:155:2 | After range statement | stmts.go:157:2:158:2 | range statement | +| stmts.go:153:2:155:2 | [LoopHeader] range statement | stmts.go:153:2:155:2 | After range statement | +| stmts.go:153:2:155:2 | [LoopHeader] range statement | stmts.go:153:2:155:2 | range element | +| stmts.go:153:2:155:2 | extract:0 range element | stmts.go:153:2:155:2 | extract:1 range element | +| stmts.go:153:2:155:2 | extract:1 range element | stmts.go:153:2:155:2 | After range element | +| stmts.go:153:2:155:2 | next range element | stmts.go:153:2:155:2 | extract:0 range element | +| stmts.go:153:2:155:2 | range element | stmts.go:153:2:155:2 | next range element | +| stmts.go:153:2:155:2 | range statement | stmts.go:153:20:153:21 | xs | +| stmts.go:153:20:153:21 | After xs [empty] | stmts.go:153:2:155:2 | After range statement | +| stmts.go:153:20:153:21 | After xs [non-empty] | stmts.go:153:2:155:2 | range element | +| stmts.go:153:20:153:21 | xs | stmts.go:153:20:153:21 | After xs [empty] | +| stmts.go:153:20:153:21 | xs | stmts.go:153:20:153:21 | After xs [non-empty] | +| stmts.go:153:23:155:2 | After block statement | stmts.go:153:2:155:2 | [LoopHeader] range statement | +| stmts.go:153:23:155:2 | block statement | stmts.go:154:3:154:17 | expression statement | +| stmts.go:154:3:154:11 | After selection of Print | stmts.go:154:13:154:13 | i | +| stmts.go:154:3:154:11 | Before selection of Print | stmts.go:154:3:154:11 | selection of Print | +| stmts.go:154:3:154:11 | selection of Print | stmts.go:154:3:154:11 | After selection of Print | +| stmts.go:154:3:154:17 | After call to Print | stmts.go:154:3:154:17 | After expression statement | +| stmts.go:154:3:154:17 | After expression statement | stmts.go:153:23:155:2 | After block statement | +| stmts.go:154:3:154:17 | Before call to Print | stmts.go:154:3:154:11 | Before selection of Print | +| stmts.go:154:3:154:17 | call to Print | stmts.go:145:1:159:1 | Exceptional Exit | +| stmts.go:154:3:154:17 | call to Print | stmts.go:154:3:154:17 | After call to Print | +| stmts.go:154:3:154:17 | expression statement | stmts.go:154:3:154:17 | Before call to Print | | stmts.go:154:13:154:13 | i | stmts.go:154:16:154:16 | v | | stmts.go:154:16:154:16 | v | stmts.go:154:3:154:17 | call to Print | -| stmts.go:157:12:157:13 | next key-value pair in range | stmts.go:145:1:159:1 | exit | -| stmts.go:157:12:157:13 | next key-value pair in range | stmts.go:157:15:158:2 | skip | -| stmts.go:157:12:157:13 | xs | stmts.go:157:12:157:13 | next key-value pair in range | -| stmts.go:157:15:158:2 | skip | stmts.go:157:12:157:13 | next key-value pair in range | -| tst.go:0:0:0:0 | entry | tst.go:3:6:3:10 | skip | -| tst.go:3:1:12:1 | entry | tst.go:3:12:3:12 | argument corresponding to x | -| tst.go:3:1:12:1 | function declaration | tst.go:14:6:14:11 | skip | -| tst.go:3:6:3:10 | skip | tst.go:3:1:12:1 | function declaration | -| tst.go:3:12:3:12 | argument corresponding to x | tst.go:3:12:3:12 | initialization of x | -| tst.go:3:12:3:12 | initialization of x | tst.go:4:2:11:2 | true | -| tst.go:4:2:11:2 | true | tst.go:5:7:5:7 | x | -| tst.go:5:2:5:13 | skip | tst.go:3:1:12:1 | exit | +| stmts.go:157:2:158:2 | After range element | stmts.go:157:15:158:2 | block statement | +| stmts.go:157:2:158:2 | After range statement | stmts.go:145:23:159:1 | After block statement | +| stmts.go:157:2:158:2 | [LoopHeader] range statement | stmts.go:157:2:158:2 | After range statement | +| stmts.go:157:2:158:2 | [LoopHeader] range statement | stmts.go:157:2:158:2 | range element | +| stmts.go:157:2:158:2 | next range element | stmts.go:157:2:158:2 | After range element | +| stmts.go:157:2:158:2 | range element | stmts.go:157:2:158:2 | next range element | +| stmts.go:157:2:158:2 | range statement | stmts.go:157:12:157:13 | xs | +| stmts.go:157:12:157:13 | After xs [empty] | stmts.go:157:2:158:2 | After range statement | +| stmts.go:157:12:157:13 | After xs [non-empty] | stmts.go:157:2:158:2 | range element | +| stmts.go:157:12:157:13 | xs | stmts.go:157:12:157:13 | After xs [empty] | +| stmts.go:157:12:157:13 | xs | stmts.go:157:12:157:13 | After xs [non-empty] | +| stmts.go:157:15:158:2 | block statement | stmts.go:157:2:158:2 | [LoopHeader] range statement | +| tst.go:0:0:0:0 | After tst.go | tst.go:0:0:0:0 | Normal Exit | +| tst.go:0:0:0:0 | Entry | tst.go:0:0:0:0 | tst.go | +| tst.go:0:0:0:0 | Normal Exit | tst.go:0:0:0:0 | Exit | +| tst.go:0:0:0:0 | tst.go | tst.go:3:1:12:1 | function declaration | +| tst.go:3:1:12:1 | Entry | tst.go:3:12:3:12 | x | +| tst.go:3:1:12:1 | Normal Exit | tst.go:3:1:12:1 | Exit | +| tst.go:3:1:12:1 | function declaration | tst.go:14:1:21:1 | function declaration | +| tst.go:3:12:3:12 | x | tst.go:3:19:12:1 | block statement | +| tst.go:3:19:12:1 | After block statement | tst.go:3:1:12:1 | Normal Exit | +| tst.go:3:19:12:1 | block statement | tst.go:4:2:11:2 | expression-switch statement | +| tst.go:4:2:11:2 | After expression-switch statement | tst.go:3:19:12:1 | After block statement | +| tst.go:4:2:11:2 | expression-switch statement | tst.go:5:2:5:13 | case clause | +| tst.go:5:2:5:13 | After case clause [match] | tst.go:4:2:11:2 | After expression-switch statement | +| tst.go:5:2:5:13 | After case clause [no-match] | tst.go:7:2:7:13 | case clause | +| tst.go:5:2:5:13 | case clause | tst.go:5:7:5:12 | Before ...<... | | tst.go:5:7:5:7 | x | tst.go:5:11:5:12 | 23 | -| tst.go:5:7:5:12 | ...<... | tst.go:5:7:5:12 | case ...<... | -| tst.go:5:7:5:12 | ...<... is false | tst.go:7:7:7:7 | x | -| tst.go:5:7:5:12 | ...<... is true | tst.go:5:2:5:13 | skip | -| tst.go:5:7:5:12 | case ...<... | tst.go:5:7:5:12 | ...<... is false | -| tst.go:5:7:5:12 | case ...<... | tst.go:5:7:5:12 | ...<... is true | +| tst.go:5:7:5:12 | ...<... | tst.go:5:7:5:12 | After ...<... [match] | +| tst.go:5:7:5:12 | ...<... | tst.go:5:7:5:12 | After ...<... [no-match] | +| tst.go:5:7:5:12 | After ...<... [match] | tst.go:5:2:5:13 | After case clause [match] | +| tst.go:5:7:5:12 | After ...<... [no-match] | tst.go:5:2:5:13 | After case clause [no-match] | +| tst.go:5:7:5:12 | Before ...<... | tst.go:5:7:5:7 | x | | tst.go:5:11:5:12 | 23 | tst.go:5:7:5:12 | ...<... | -| tst.go:7:2:7:13 | skip | tst.go:3:1:12:1 | exit | +| tst.go:7:2:7:13 | After case clause [match] | tst.go:4:2:11:2 | After expression-switch statement | +| tst.go:7:2:7:13 | After case clause [no-match] | tst.go:9:2:9:13 | case clause | +| tst.go:7:2:7:13 | case clause | tst.go:7:7:7:12 | Before ...<... | | tst.go:7:7:7:7 | x | tst.go:7:11:7:12 | 42 | -| tst.go:7:7:7:12 | ...<... | tst.go:7:7:7:12 | case ...<... | -| tst.go:7:7:7:12 | ...<... is false | tst.go:9:7:9:7 | x | -| tst.go:7:7:7:12 | ...<... is true | tst.go:7:2:7:13 | skip | -| tst.go:7:7:7:12 | case ...<... | tst.go:7:7:7:12 | ...<... is false | -| tst.go:7:7:7:12 | case ...<... | tst.go:7:7:7:12 | ...<... is true | +| tst.go:7:7:7:12 | ...<... | tst.go:7:7:7:12 | After ...<... [match] | +| tst.go:7:7:7:12 | ...<... | tst.go:7:7:7:12 | After ...<... [no-match] | +| tst.go:7:7:7:12 | After ...<... [match] | tst.go:7:2:7:13 | After case clause [match] | +| tst.go:7:7:7:12 | After ...<... [no-match] | tst.go:7:2:7:13 | After case clause [no-match] | +| tst.go:7:7:7:12 | Before ...<... | tst.go:7:7:7:7 | x | | tst.go:7:11:7:12 | 42 | tst.go:7:7:7:12 | ...<... | -| tst.go:9:2:9:13 | skip | tst.go:3:1:12:1 | exit | +| tst.go:9:2:9:13 | After case clause [match] | tst.go:4:2:11:2 | After expression-switch statement | +| tst.go:9:2:9:13 | After case clause [no-match] | tst.go:4:2:11:2 | After expression-switch statement | +| tst.go:9:2:9:13 | case clause | tst.go:9:7:9:12 | Before ...<... | | tst.go:9:7:9:7 | x | tst.go:9:11:9:12 | 23 | -| tst.go:9:7:9:12 | ...<... | tst.go:9:7:9:12 | case ...<... | -| tst.go:9:7:9:12 | ...<... is false | tst.go:3:1:12:1 | exit | -| tst.go:9:7:9:12 | ...<... is true | tst.go:9:2:9:13 | skip | -| tst.go:9:7:9:12 | case ...<... | tst.go:9:7:9:12 | ...<... is false | -| tst.go:9:7:9:12 | case ...<... | tst.go:9:7:9:12 | ...<... is true | +| tst.go:9:7:9:12 | ...<... | tst.go:9:7:9:12 | After ...<... [match] | +| tst.go:9:7:9:12 | ...<... | tst.go:9:7:9:12 | After ...<... [no-match] | +| tst.go:9:7:9:12 | After ...<... [match] | tst.go:9:2:9:13 | After case clause [match] | +| tst.go:9:7:9:12 | After ...<... [no-match] | tst.go:9:2:9:13 | After case clause [no-match] | +| tst.go:9:7:9:12 | Before ...<... | tst.go:9:7:9:7 | x | | tst.go:9:11:9:12 | 23 | tst.go:9:7:9:12 | ...<... | -| tst.go:14:1:21:1 | entry | tst.go:14:13:14:17 | argument corresponding to value | -| tst.go:14:1:21:1 | function declaration | tst.go:23:6:23:11 | skip | -| tst.go:14:6:14:11 | skip | tst.go:14:1:21:1 | function declaration | -| tst.go:14:13:14:17 | argument corresponding to value | tst.go:14:13:14:17 | initialization of value | -| tst.go:14:13:14:17 | initialization of value | tst.go:15:2:20:2 | true | -| tst.go:15:2:20:2 | true | tst.go:16:7:16:11 | value | -| tst.go:16:2:16:34 | skip | tst.go:14:1:21:1 | exit | -| tst.go:16:7:16:11 | value | tst.go:16:15:16:33 | ...*... | -| tst.go:16:7:16:33 | ...<... | tst.go:16:7:16:33 | case ...<... | -| tst.go:16:7:16:33 | ...<... is false | tst.go:18:7:18:11 | value | -| tst.go:16:7:16:33 | ...<... is true | tst.go:16:2:16:34 | skip | -| tst.go:16:7:16:33 | case ...<... | tst.go:16:7:16:33 | ...<... is false | -| tst.go:16:7:16:33 | case ...<... | tst.go:16:7:16:33 | ...<... is true | -| tst.go:16:15:16:33 | ...*... | tst.go:16:7:16:33 | ...<... | -| tst.go:18:2:18:39 | skip | tst.go:14:1:21:1 | exit | -| tst.go:18:7:18:11 | value | tst.go:18:15:18:38 | ...*... | -| tst.go:18:7:18:38 | ...<... | tst.go:18:7:18:38 | case ...<... | -| tst.go:18:7:18:38 | ...<... is false | tst.go:14:1:21:1 | exit | -| tst.go:18:7:18:38 | ...<... is true | tst.go:18:2:18:39 | skip | -| tst.go:18:7:18:38 | case ...<... | tst.go:18:7:18:38 | ...<... is false | -| tst.go:18:7:18:38 | case ...<... | tst.go:18:7:18:38 | ...<... is true | -| tst.go:18:15:18:38 | ...*... | tst.go:18:7:18:38 | ...<... | -| tst.go:23:1:26:1 | entry | tst.go:24:2:25:2 | true | -| tst.go:23:1:26:1 | function declaration | tst.go:28:6:28:11 | skip | -| tst.go:23:6:23:11 | skip | tst.go:23:1:26:1 | function declaration | -| tst.go:24:2:25:2 | true | tst.go:23:1:26:1 | exit | -| tst.go:28:1:32:1 | entry | tst.go:29:2:31:2 | true | -| tst.go:28:1:32:1 | function declaration | tst.go:0:0:0:0 | exit | -| tst.go:28:6:28:11 | skip | tst.go:28:1:32:1 | function declaration | -| tst.go:29:2:31:2 | true | tst.go:30:2:30:9 | skip | -| tst.go:30:2:30:9 | skip | tst.go:28:1:32:1 | exit | +| tst.go:14:1:21:1 | Entry | tst.go:14:13:14:17 | value | +| tst.go:14:1:21:1 | Normal Exit | tst.go:14:1:21:1 | Exit | +| tst.go:14:1:21:1 | function declaration | tst.go:23:1:26:1 | function declaration | +| tst.go:14:13:14:17 | value | tst.go:14:26:21:1 | block statement | +| tst.go:14:26:21:1 | After block statement | tst.go:14:1:21:1 | Normal Exit | +| tst.go:14:26:21:1 | block statement | tst.go:15:2:20:2 | expression-switch statement | +| tst.go:15:2:20:2 | After expression-switch statement | tst.go:14:26:21:1 | After block statement | +| tst.go:15:2:20:2 | expression-switch statement | tst.go:16:2:16:34 | case clause | +| tst.go:16:2:16:34 | After case clause [match] | tst.go:15:2:20:2 | After expression-switch statement | +| tst.go:16:2:16:34 | After case clause [no-match] | tst.go:18:2:18:39 | case clause | +| tst.go:16:2:16:34 | case clause | tst.go:16:7:16:33 | Before ...<... | +| tst.go:16:7:16:11 | value | tst.go:16:15:16:33 | Before ...*... | +| tst.go:16:7:16:33 | ...<... | tst.go:16:7:16:33 | After ...<... [match] | +| tst.go:16:7:16:33 | ...<... | tst.go:16:7:16:33 | After ...<... [no-match] | +| tst.go:16:7:16:33 | After ...<... [match] | tst.go:16:2:16:34 | After case clause [match] | +| tst.go:16:7:16:33 | After ...<... [no-match] | tst.go:16:2:16:34 | After case clause [no-match] | +| tst.go:16:7:16:33 | Before ...<... | tst.go:16:7:16:11 | value | +| tst.go:16:15:16:33 | ...*... | tst.go:16:15:16:33 | After ...*... | +| tst.go:16:15:16:33 | After ...*... | tst.go:16:7:16:33 | ...<... | +| tst.go:16:15:16:33 | Before ...*... | tst.go:16:15:16:33 | ...*... | +| tst.go:18:2:18:39 | After case clause [match] | tst.go:15:2:20:2 | After expression-switch statement | +| tst.go:18:2:18:39 | After case clause [no-match] | tst.go:15:2:20:2 | After expression-switch statement | +| tst.go:18:2:18:39 | case clause | tst.go:18:7:18:38 | Before ...<... | +| tst.go:18:7:18:11 | value | tst.go:18:15:18:38 | Before ...*... | +| tst.go:18:7:18:38 | ...<... | tst.go:18:7:18:38 | After ...<... [match] | +| tst.go:18:7:18:38 | ...<... | tst.go:18:7:18:38 | After ...<... [no-match] | +| tst.go:18:7:18:38 | After ...<... [match] | tst.go:18:2:18:39 | After case clause [match] | +| tst.go:18:7:18:38 | After ...<... [no-match] | tst.go:18:2:18:39 | After case clause [no-match] | +| tst.go:18:7:18:38 | Before ...<... | tst.go:18:7:18:11 | value | +| tst.go:18:15:18:38 | ...*... | tst.go:18:15:18:38 | After ...*... | +| tst.go:18:15:18:38 | After ...*... | tst.go:18:7:18:38 | ...<... | +| tst.go:18:15:18:38 | Before ...*... | tst.go:18:15:18:38 | ...*... | +| tst.go:23:1:26:1 | Entry | tst.go:23:15:26:1 | block statement | +| tst.go:23:1:26:1 | Normal Exit | tst.go:23:1:26:1 | Exit | +| tst.go:23:1:26:1 | function declaration | tst.go:28:1:32:1 | function declaration | +| tst.go:23:15:26:1 | After block statement | tst.go:23:1:26:1 | Normal Exit | +| tst.go:23:15:26:1 | block statement | tst.go:24:2:25:2 | expression-switch statement | +| tst.go:24:2:25:2 | expression-switch statement | tst.go:23:15:26:1 | After block statement | +| tst.go:28:1:32:1 | Entry | tst.go:28:15:32:1 | block statement | +| tst.go:28:1:32:1 | Normal Exit | tst.go:28:1:32:1 | Exit | +| tst.go:28:1:32:1 | function declaration | tst.go:0:0:0:0 | After tst.go | +| tst.go:28:15:32:1 | After block statement | tst.go:28:1:32:1 | Normal Exit | +| tst.go:28:15:32:1 | block statement | tst.go:29:2:31:2 | expression-switch statement | +| tst.go:29:2:31:2 | After expression-switch statement | tst.go:28:15:32:1 | After block statement | +| tst.go:29:2:31:2 | expression-switch statement | tst.go:30:2:30:9 | case clause | +| tst.go:30:2:30:9 | After case clause [match] | tst.go:29:2:31:2 | After expression-switch statement | +| tst.go:30:2:30:9 | case clause | tst.go:30:2:30:9 | After case clause [match] | diff --git a/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/NoretFunctions.expected b/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/NoretFunctions.expected index 2715352ef253..52306e9a9878 100644 --- a/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/NoretFunctions.expected +++ b/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/NoretFunctions.expected @@ -1,4 +1,3 @@ -| epilogues.go:115:6:115:22 | epiRecoverUnnamed | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.epiRecoverUnnamed | | file://:0:0:0:0 | Exit | os.Exit | | file://:0:0:0:0 | Fatal | log.Fatal | | file://:0:0:0:0 | Fatal | log.Logger.Fatal | @@ -16,7 +15,8 @@ | noretfunctions.go:8:6:8:12 | isNoRet | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.isNoRet | | noretfunctions.go:20:6:20:22 | noRetUsesLogFatal | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.noRetUsesLogFatal | | noretfunctions.go:24:6:24:23 | noRetUsesLogFatalf | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.noRetUsesLogFatalf | -| stmts7.go:10:6:10:15 | canRecover | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.canRecover | +| stmts7.go:33:6:33:20 | deferBeforeExit | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.deferBeforeExit | +| stmts7.go:43:6:43:23 | finalDeferredPanic | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.finalDeferredPanic | +| stmts7.go:47:6:47:31 | deferredExitStopsRemaining | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.deferredExitStopsRemaining | | stmts.go:10:6:10:10 | test5 | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.test5 | | stmts.go:46:6:46:10 | test6 | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.test6 | -| stmts.go:112:6:112:10 | test9 | github.com/github/codeql-go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph.test9 | diff --git a/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts7.go b/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts7.go index f44b8d53a0d5..64d5db51563d 100644 --- a/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts7.go +++ b/go/ql/test/library-tests/semmle/go/controlflow/ControlFlowGraph/stmts7.go @@ -1,6 +1,9 @@ package main -import "fmt" +import ( + "fmt" + "os" +) func recoverPanic() { blah := recover() @@ -26,3 +29,57 @@ func defertest(callback Callback) bool { fmt.Println("print something") return false } + +func deferBeforeExit() { + defer recoverPanic() + os.Exit(1) +} + +func deferredPanic() { + defer recoverPanic() + defer panic("deferred panic") +} + +func finalDeferredPanic() { + defer panic("final deferred panic") +} + +func deferredExitStopsRemaining() { + defer recoverPanic() + defer os.Exit(1) +} + +func deferBeforePossiblePanic(values []int, index int) { + defer recoverPanic() + _ = values[index] +} + +func conditionalDefer(register bool) { + if register { + defer recoverPanic() + } + fmt.Println("done") +} + +func repeatedDefer(count int) { + for i := 0; i < count; i++ { + defer recoverPanic() + } +} + +func bypassedDefer(skip bool) { + if skip { + goto done + } + defer recoverPanic() +done: + fmt.Println("done") +} + +func panicAroundDefer(panicEarly bool) { + if panicEarly { + panic("early") + } + defer recoverPanic() + panic("late") +} diff --git a/go/ql/test/library-tests/semmle/go/controlflow/GotoTarget/GotoTarget.expected b/go/ql/test/library-tests/semmle/go/controlflow/GotoTarget/GotoTarget.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/library-tests/semmle/go/controlflow/GotoTarget/GotoTarget.ql b/go/ql/test/library-tests/semmle/go/controlflow/GotoTarget/GotoTarget.ql new file mode 100644 index 000000000000..4b0a288bcf98 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/controlflow/GotoTarget/GotoTarget.ql @@ -0,0 +1,19 @@ +import go +import utils.test.InlineExpectationsTest + +module GotoTargetTest implements TestSig { + string getARelevantTag() { result = "gotoTarget" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(GotoStmt jump, LabeledStmt target, ControlFlow::Node source | + jump.getLocation() = location and + source.getAstNode() = jump and + source.getASuccessor().getAstNode() = target and + element = jump.toString() and + tag = "gotoTarget" and + value = target.getLabel() + ) + } +} + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/controlflow/GotoTarget/gotos.go b/go/ql/test/library-tests/semmle/go/controlflow/GotoTarget/gotos.go new file mode 100644 index 000000000000..48f2b170e58c --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/controlflow/GotoTarget/gotos.go @@ -0,0 +1,53 @@ +package main + +func gotoStackedSiblingTarget(flag bool) { + if flag { + goto inner // $ gotoTarget=inner + } +outer: +inner: + flag = false + goto outer // $ gotoTarget=outer +} + +func gotoNestedSiblingTarget(flag bool) { + if flag { + goto inner // $ gotoTarget=inner + } else { + goto outer // $ gotoTarget=outer + } +outer: +inner: + { + flag = false + } +} + +func gotoSelfLoop(flag bool) { +self: + if flag { + goto self // $ gotoTarget=self + } +} + +func gotoDirectSelfLoop() { +self: + goto self // $ gotoTarget=self +} + +func gotoDirectTarget() { +step1: + goto step2 // $ gotoTarget=step2 +step2: + goto step1 // $ gotoTarget=step1 +} + +func gotoEnclosingStackedLabel(flag bool) { +outer: +inner: + if flag { + goto inner // $ gotoTarget=inner + } else { + goto outer // $ gotoTarget=outer + } +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/CONSISTENCY/DataFlowConsistency.expected index cf59277a48b3..c1715caa6ec3 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/CONSISTENCY/DataFlowConsistency.expected @@ -1,6 +1,6 @@ reverseRead -| Builtin.go:7:2:7:10 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Builtin.go:13:2:13:10 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Builtin.go:22:2:22:10 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Builtin.go:32:2:32:10 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Builtin.go:39:2:39:10 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| Builtin.go:7:2:7:10 | implicit-deref sourceReq | Origin of readStep is missing a PostUpdateNode. | +| Builtin.go:13:2:13:10 | implicit-deref sourceReq | Origin of readStep is missing a PostUpdateNode. | +| Builtin.go:22:2:22:10 | implicit-deref sourceReq | Origin of readStep is missing a PostUpdateNode. | +| Builtin.go:32:2:32:10 | implicit-deref sourceReq | Origin of readStep is missing a PostUpdateNode. | +| Builtin.go:39:2:39:10 | implicit-deref sourceReq | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalTaintFlow/srcs.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalTaintFlow/srcs.expected index dac989575507..f446be1e266b 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalTaintFlow/srcs.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalTaintFlow/srcs.expected @@ -4,9 +4,9 @@ invalidModelRow | test.go:40:8:40:15 | call to Src2 | qltest | | test.go:40:8:40:15 | call to Src2 | qltest-w-subtypes | | test.go:41:8:41:16 | call to Src2 | qltest-w-subtypes | -| test.go:42:2:42:21 | ... = ...[0] | qltest | -| test.go:42:2:42:21 | ... = ...[1] | qltest-w-subtypes | -| test.go:43:2:43:22 | ... = ...[1] | qltest-w-subtypes | +| test.go:42:2:42:21 | extract:0 ... = ... | qltest | +| test.go:42:2:42:21 | extract:1 ... = ... | qltest-w-subtypes | +| test.go:43:2:43:22 | extract:1 ... = ... | qltest-w-subtypes | | test.go:44:11:44:13 | arg [postupdate] | qltest-arg | | test.go:59:9:59:16 | call to Src1 | qltest | | test.go:102:46:102:53 | call to Src1 | qltest | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalTaintFlow/steps.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalTaintFlow/steps.expected index 97a1cc49261a..b27341d3b8fb 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalTaintFlow/steps.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalTaintFlow/steps.expected @@ -1,14 +1,14 @@ invalidModelRow #select | test.go:17:23:17:25 | arg | test.go:17:10:17:26 | call to StepArgRes | -| test.go:18:27:18:29 | arg | test.go:18:2:18:30 | ... = ...[1] | +| test.go:18:27:18:29 | arg | test.go:18:2:18:30 | extract:1 ... = ... | | test.go:19:15:19:17 | arg | test.go:19:20:19:23 | arg1 [postupdate] | | test.go:21:16:21:18 | arg | test.go:21:2:21:2 | t [postupdate] | | test.go:22:10:22:10 | t | test.go:22:10:22:24 | call to StepQualRes | | test.go:23:2:23:2 | t | test.go:23:16:23:18 | arg [postupdate] | | test.go:24:32:24:34 | arg | test.go:24:10:24:35 | call to StepArgResNoQual | | test.go:61:25:61:27 | src | test.go:61:12:61:28 | call to StepArgRes | -| test.go:64:29:64:31 | src | test.go:64:2:64:32 | ... := ...[1] | +| test.go:64:29:64:31 | src | test.go:64:2:64:32 | extract:1 ... := ... | | test.go:68:15:68:17 | src | test.go:68:20:68:25 | taint3 [postupdate] | | test.go:76:21:76:23 | src | test.go:76:2:76:7 | taint4 [postupdate] | | test.go:79:13:79:25 | type assertion | test.go:79:12:79:40 | call to StepQualRes | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/srcs.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/srcs.expected index 87ca46d4c131..6e8870b33803 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/srcs.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/srcs.expected @@ -4,9 +4,9 @@ invalidModelRow | test.go:40:8:40:15 | call to Src2 | qltest | | test.go:40:8:40:15 | call to Src2 | qltest-w-subtypes | | test.go:41:8:41:16 | call to Src2 | qltest-w-subtypes | -| test.go:42:2:42:21 | ... = ...[0] | qltest | -| test.go:42:2:42:21 | ... = ...[1] | qltest-w-subtypes | -| test.go:43:2:43:22 | ... = ...[1] | qltest-w-subtypes | +| test.go:42:2:42:21 | extract:0 ... = ... | qltest | +| test.go:42:2:42:21 | extract:1 ... = ... | qltest-w-subtypes | +| test.go:43:2:43:22 | extract:1 ... = ... | qltest-w-subtypes | | test.go:44:11:44:13 | arg [postupdate] | qltest-arg | | test.go:59:9:59:16 | call to Src1 | qltest | | test.go:102:46:102:53 | call to Src1 | qltest | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/steps.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/steps.expected index eb52daa42537..83861e4d9f8d 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/steps.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/steps.expected @@ -1,14 +1,14 @@ invalidModelRow #select | test.go:17:23:17:25 | arg | test.go:17:10:17:26 | call to StepArgRes | -| test.go:18:27:18:29 | arg | test.go:18:2:18:30 | ... = ...[1] | +| test.go:18:27:18:29 | arg | test.go:18:2:18:30 | extract:1 ... = ... | | test.go:19:15:19:17 | arg | test.go:19:20:19:23 | arg1 [postupdate] | | test.go:21:16:21:18 | arg | test.go:21:2:21:2 | t [postupdate] | | test.go:22:10:22:10 | t | test.go:22:10:22:24 | call to StepQualRes | | test.go:23:2:23:2 | t | test.go:23:16:23:18 | arg [postupdate] | | test.go:24:32:24:34 | arg | test.go:24:10:24:35 | call to StepArgResNoQual | | test.go:61:25:61:27 | src | test.go:61:12:61:28 | call to StepArgRes | -| test.go:64:29:64:31 | src | test.go:64:2:64:32 | ... := ...[1] | +| test.go:64:29:64:31 | src | test.go:64:2:64:32 | extract:1 ... := ... | | test.go:68:15:68:17 | src | test.go:68:20:68:25 | taint3 [postupdate] | | test.go:76:21:76:23 | src | test.go:76:2:76:7 | taint4 [postupdate] | | test.go:79:13:79:25 | type assertion | test.go:79:12:79:40 | call to StepQualRes | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected index 0f34d6589170..5c4bd6cfcb2f 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected @@ -1,169 +1,169 @@ | main.go:3:12:3:12 | SSA def(x) | main.go:5:5:5:5 | x | -| main.go:3:12:3:12 | argument corresponding to x | main.go:3:12:3:12 | SSA def(x) | +| main.go:3:12:3:12 | x | main.go:3:12:3:12 | SSA def(x) | | main.go:3:19:3:20 | SSA def(fn) | main.go:10:24:10:25 | fn | -| main.go:3:19:3:20 | argument corresponding to fn | main.go:3:19:3:20 | SSA def(fn) | +| main.go:3:19:3:20 | fn | main.go:3:19:3:20 | SSA def(fn) | | main.go:5:5:5:5 | x | main.go:6:7:6:7 | x | | main.go:5:5:5:5 | x | main.go:8:8:8:8 | x | -| main.go:6:3:6:3 | SSA def(y) | main.go:10:12:10:12 | y | -| main.go:6:7:6:7 | x | main.go:6:3:6:3 | SSA def(y) | +| main.go:6:3:6:7 | SSA def(y) | main.go:10:12:10:12 | y | +| main.go:6:7:6:7 | x | main.go:6:3:6:7 | SSA def(y) | | main.go:6:7:6:7 | x | main.go:10:7:10:7 | x | -| main.go:8:3:8:3 | SSA def(y) | main.go:10:12:10:12 | y | -| main.go:8:7:8:8 | -... | main.go:8:3:8:3 | SSA def(y) | +| main.go:8:3:8:8 | SSA def(y) | main.go:10:12:10:12 | y | +| main.go:8:7:8:8 | -... | main.go:8:3:8:8 | SSA def(y) | | main.go:8:8:8:8 | x | main.go:10:7:10:7 | x | -| main.go:10:2:10:2 | SSA def(z) | main.go:11:14:11:14 | z | +| main.go:10:2:10:27 | SSA def(z) | main.go:11:14:11:14 | z | | main.go:10:7:10:7 | x | main.go:10:22:10:22 | x | -| main.go:10:7:10:12 | ...<=... | main.go:10:7:10:27 | ...&&... | -| main.go:10:7:10:27 | ...&&... | main.go:10:2:10:2 | SSA def(z) | +| main.go:10:7:10:12 | ...<=... | main.go:10:7:10:27 | After ...&&... | +| main.go:10:7:10:27 | After ...&&... | main.go:10:2:10:27 | SSA def(z) | | main.go:10:12:10:12 | y | main.go:10:17:10:17 | y | -| main.go:10:17:10:27 | ...>=... | main.go:10:7:10:27 | ...&&... | +| main.go:10:17:10:27 | ...>=... | main.go:10:7:10:27 | After ...&&... | | main.go:11:14:11:14 | z | main.go:11:9:11:15 | type conversion | -| main.go:15:9:15:9 | 0 | main.go:15:2:15:4 | SSA def(acc) | +| main.go:15:9:15:9 | 0 | main.go:15:2:15:9 | SSA def(acc) | | main.go:16:9:19:2 | SSA def(acc) | main.go:17:3:17:5 | acc | | main.go:17:3:17:7 | SSA def(acc) | main.go:18:10:18:12 | acc | -| main.go:17:3:17:7 | rhs of increment statement | main.go:17:3:17:7 | SSA def(acc) | +| main.go:17:3:17:7 | increment statement | main.go:17:3:17:7 | SSA def(acc) | | main.go:22:12:22:12 | SSA def(b) | main.go:23:5:23:5 | b | -| main.go:22:12:22:12 | argument corresponding to b | main.go:22:12:22:12 | SSA def(b) | +| main.go:22:12:22:12 | b | main.go:22:12:22:12 | SSA def(b) | | main.go:22:20:22:20 | SSA def(x) | main.go:24:10:24:10 | x | | main.go:22:20:22:20 | SSA def(x) | main.go:26:11:26:11 | x | -| main.go:22:20:22:20 | argument corresponding to x | main.go:22:20:22:20 | SSA def(x) | +| main.go:22:20:22:20 | x | main.go:22:20:22:20 | SSA def(x) | | main.go:24:10:24:10 | x | main.go:24:10:24:19 | type assertion | -| main.go:26:2:26:2 | SSA def(n) | main.go:27:11:27:11 | n | -| main.go:26:2:26:17 | ... := ...[0] | main.go:26:2:26:2 | SSA def(n) | -| main.go:26:2:26:17 | ... := ...[1] | main.go:26:5:26:6 | SSA def(ok) | -| main.go:26:5:26:6 | SSA def(ok) | main.go:27:5:27:6 | ok | -| main.go:26:11:26:11 | x | main.go:26:2:26:17 | ... := ...[0] | -| main.go:38:2:38:2 | SSA def(s) | main.go:39:15:39:15 | s | -| main.go:38:7:38:20 | slice literal | main.go:38:2:38:2 | SSA def(s) | -| main.go:38:7:38:20 | slice literal [postupdate] | main.go:38:2:38:2 | SSA def(s) | -| main.go:39:2:39:3 | SSA def(s1) | main.go:40:18:40:19 | s1 | -| main.go:39:8:39:25 | call to append | main.go:39:2:39:3 | SSA def(s1) | +| main.go:26:2:26:17 | SSA def(n) | main.go:27:11:27:11 | n | +| main.go:26:2:26:17 | SSA def(ok) | main.go:27:5:27:6 | ok | +| main.go:26:2:26:17 | extract:0 ... := ... | main.go:26:2:26:17 | SSA def(n) | +| main.go:26:2:26:17 | extract:1 ... := ... | main.go:26:2:26:17 | SSA def(ok) | +| main.go:26:11:26:11 | x | main.go:26:2:26:17 | extract:0 ... := ... | +| main.go:38:2:38:20 | SSA def(s) | main.go:39:15:39:15 | s | +| main.go:38:7:38:20 | slice literal | main.go:38:2:38:20 | SSA def(s) | +| main.go:38:7:38:20 | slice literal [postupdate] | main.go:38:2:38:20 | SSA def(s) | +| main.go:39:2:39:25 | SSA def(s1) | main.go:40:18:40:19 | s1 | +| main.go:39:8:39:25 | call to append | main.go:39:2:39:25 | SSA def(s1) | | main.go:39:15:39:15 | s | main.go:40:15:40:15 | s | | main.go:39:15:39:15 | s [postupdate] | main.go:40:15:40:15 | s | -| main.go:40:2:40:3 | SSA def(s2) | main.go:43:9:43:10 | s2 | -| main.go:40:8:40:23 | call to append | main.go:40:2:40:3 | SSA def(s2) | +| main.go:40:2:40:23 | SSA def(s2) | main.go:43:9:43:10 | s2 | +| main.go:40:8:40:23 | call to append | main.go:40:2:40:23 | SSA def(s2) | | main.go:40:15:40:15 | s | main.go:42:7:42:7 | s | | main.go:40:15:40:15 | s [postupdate] | main.go:42:7:42:7 | s | -| main.go:41:2:41:3 | SSA def(s4) | main.go:42:10:42:11 | s4 | -| main.go:41:8:41:21 | call to make | main.go:41:2:41:3 | SSA def(s4) | +| main.go:41:2:41:21 | SSA def(s4) | main.go:42:10:42:11 | s4 | +| main.go:41:8:41:21 | call to make | main.go:41:2:41:21 | SSA def(s4) | | main.go:46:13:46:14 | SSA def(xs) | main.go:47:20:47:21 | xs | -| main.go:46:13:46:14 | argument corresponding to xs | main.go:46:13:46:14 | SSA def(xs) | -| main.go:46:24:46:27 | SSA def(keys) | main.go:46:24:46:27 | implicit read of keys | -| main.go:46:24:46:27 | SSA def(keys) | main.go:49:3:49:6 | keys | -| main.go:46:24:46:27 | zero value for keys | main.go:46:24:46:27 | SSA def(keys) | -| main.go:46:34:46:37 | SSA def(vals) | main.go:46:34:46:37 | implicit read of vals | -| main.go:46:34:46:37 | SSA def(vals) | main.go:48:3:48:6 | vals | -| main.go:46:34:46:37 | zero value for vals | main.go:46:34:46:37 | SSA def(vals) | -| main.go:47:2:50:2 | range statement[0] | main.go:47:6:47:6 | SSA def(k) | -| main.go:47:2:50:2 | range statement[1] | main.go:47:9:47:9 | SSA def(v) | -| main.go:47:6:47:6 | SSA def(k) | main.go:49:11:49:11 | k | -| main.go:47:9:47:9 | SSA def(v) | main.go:48:11:48:11 | v | -| main.go:48:3:48:6 | SSA def(vals) | main.go:46:34:46:37 | implicit read of vals | -| main.go:48:3:48:6 | SSA def(vals) | main.go:48:3:48:6 | vals | -| main.go:48:3:48:11 | ... += ... | main.go:48:3:48:6 | SSA def(vals) | -| main.go:49:3:49:6 | SSA def(keys) | main.go:46:24:46:27 | implicit read of keys | -| main.go:49:3:49:6 | SSA def(keys) | main.go:49:3:49:6 | keys | -| main.go:49:3:49:11 | ... += ... | main.go:49:3:49:6 | SSA def(keys) | -| main.go:55:6:55:7 | SSA def(ch) | main.go:56:2:56:3 | ch | -| main.go:55:6:55:7 | zero value for ch | main.go:55:6:55:7 | SSA def(ch) | +| main.go:46:13:46:14 | xs | main.go:46:13:46:14 | SSA def(xs) | +| main.go:46:44:52:1 | SSA def(keys) | main.go:46:44:52:1 | result-read:0 block statement | +| main.go:46:44:52:1 | SSA def(keys) | main.go:49:3:49:6 | keys | +| main.go:46:44:52:1 | SSA def(vals) | main.go:46:44:52:1 | result-read:1 block statement | +| main.go:46:44:52:1 | SSA def(vals) | main.go:48:3:48:6 | vals | +| main.go:46:44:52:1 | zero-init:0 block statement | main.go:46:44:52:1 | SSA def(keys) | +| main.go:46:44:52:1 | zero-init:1 block statement | main.go:46:44:52:1 | SSA def(vals) | +| main.go:47:2:50:2 | SSA def(k) | main.go:49:11:49:11 | k | +| main.go:47:2:50:2 | SSA def(v) | main.go:48:11:48:11 | v | +| main.go:47:2:50:2 | extract:0 range element | main.go:47:2:50:2 | SSA def(k) | +| main.go:47:2:50:2 | extract:1 range element | main.go:47:2:50:2 | SSA def(v) | +| main.go:48:3:48:11 | ... += ... | main.go:48:3:48:11 | SSA def(vals) | +| main.go:48:3:48:11 | SSA def(vals) | main.go:46:44:52:1 | result-read:1 block statement | +| main.go:48:3:48:11 | SSA def(vals) | main.go:48:3:48:6 | vals | +| main.go:49:3:49:11 | ... += ... | main.go:49:3:49:11 | SSA def(keys) | +| main.go:49:3:49:11 | SSA def(keys) | main.go:46:44:52:1 | result-read:0 block statement | +| main.go:49:3:49:11 | SSA def(keys) | main.go:49:3:49:6 | keys | +| main.go:55:6:55:17 | SSA def(ch) | main.go:56:2:56:3 | ch | +| main.go:55:6:55:17 | zero-init:0 value declaration specifier | main.go:55:6:55:17 | SSA def(ch) | | main.go:56:2:56:3 | ch | main.go:57:4:57:5 | ch | | main.go:56:2:56:3 | ch [postupdate] | main.go:57:4:57:5 | ch | -| main.go:61:2:61:2 | SSA def(x) | main.go:64:11:64:11 | x | -| main.go:61:7:61:7 | 1 | main.go:61:2:61:2 | SSA def(x) | -| main.go:62:2:62:2 | SSA def(y) | main.go:64:14:64:14 | y | -| main.go:62:7:62:7 | 2 | main.go:62:2:62:2 | SSA def(y) | -| main.go:63:2:63:2 | SSA def(z) | main.go:64:17:64:17 | z | -| main.go:63:7:63:7 | 3 | main.go:63:2:63:2 | SSA def(z) | -| main.go:64:2:64:2 | SSA def(a) | main.go:66:9:66:9 | a | -| main.go:64:7:64:18 | call to min | main.go:64:2:64:2 | SSA def(a) | +| main.go:61:2:61:7 | SSA def(x) | main.go:64:11:64:11 | x | +| main.go:61:7:61:7 | 1 | main.go:61:2:61:7 | SSA def(x) | +| main.go:62:2:62:7 | SSA def(y) | main.go:64:14:64:14 | y | +| main.go:62:7:62:7 | 2 | main.go:62:2:62:7 | SSA def(y) | +| main.go:63:2:63:7 | SSA def(z) | main.go:64:17:64:17 | z | +| main.go:63:7:63:7 | 3 | main.go:63:2:63:7 | SSA def(z) | +| main.go:64:2:64:18 | SSA def(a) | main.go:66:9:66:9 | a | +| main.go:64:7:64:18 | call to min | main.go:64:2:64:18 | SSA def(a) | | main.go:64:11:64:11 | x | main.go:64:7:64:18 | call to min | | main.go:64:11:64:11 | x | main.go:65:11:65:11 | x | | main.go:64:14:64:14 | y | main.go:64:7:64:18 | call to min | | main.go:64:14:64:14 | y | main.go:65:14:65:14 | y | | main.go:64:17:64:17 | z | main.go:64:7:64:18 | call to min | | main.go:64:17:64:17 | z | main.go:65:17:65:17 | z | -| main.go:65:2:65:2 | SSA def(b) | main.go:66:12:66:12 | b | -| main.go:65:7:65:18 | call to max | main.go:65:2:65:2 | SSA def(b) | +| main.go:65:2:65:18 | SSA def(b) | main.go:66:12:66:12 | b | +| main.go:65:7:65:18 | call to max | main.go:65:2:65:18 | SSA def(b) | | main.go:65:11:65:11 | x | main.go:65:7:65:18 | call to max | | main.go:65:14:65:14 | y | main.go:65:7:65:18 | call to max | | main.go:65:17:65:17 | z | main.go:65:7:65:18 | call to max | | strings.go:8:12:8:12 | SSA def(s) | strings.go:9:24:9:24 | s | -| strings.go:8:12:8:12 | argument corresponding to s | strings.go:8:12:8:12 | SSA def(s) | -| strings.go:9:2:9:3 | SSA def(s2) | strings.go:11:20:11:21 | s2 | -| strings.go:9:8:9:38 | call to Replace | strings.go:9:2:9:3 | SSA def(s2) | +| strings.go:8:12:8:12 | s | strings.go:8:12:8:12 | SSA def(s) | +| strings.go:9:2:9:38 | SSA def(s2) | strings.go:11:20:11:21 | s2 | +| strings.go:9:8:9:38 | call to Replace | strings.go:9:2:9:38 | SSA def(s2) | | strings.go:9:24:9:24 | s | strings.go:10:27:10:27 | s | -| strings.go:10:2:10:3 | SSA def(s3) | strings.go:11:24:11:25 | s3 | -| strings.go:10:8:10:42 | call to ReplaceAll | strings.go:10:2:10:3 | SSA def(s3) | +| strings.go:10:2:10:42 | SSA def(s3) | strings.go:11:24:11:25 | s3 | +| strings.go:10:8:10:42 | call to ReplaceAll | strings.go:10:2:10:42 | SSA def(s3) | | strings.go:11:20:11:21 | s2 | strings.go:11:48:11:49 | s2 | | strings.go:11:24:11:25 | s3 | strings.go:11:67:11:68 | s3 | | url.go:8:12:8:12 | SSA def(b) | url.go:11:5:11:5 | b | -| url.go:8:12:8:12 | argument corresponding to b | url.go:8:12:8:12 | SSA def(b) | +| url.go:8:12:8:12 | b | url.go:8:12:8:12 | SSA def(b) | | url.go:8:20:8:20 | SSA def(s) | url.go:12:46:12:46 | s | | url.go:8:20:8:20 | SSA def(s) | url.go:14:48:14:48 | s | -| url.go:8:20:8:20 | argument corresponding to s | url.go:8:20:8:20 | SSA def(s) | -| url.go:12:3:12:5 | SSA def(res) | url.go:19:9:19:11 | res | -| url.go:12:3:12:48 | ... = ...[0] | url.go:12:3:12:5 | SSA def(res) | -| url.go:12:3:12:48 | ... = ...[1] | url.go:12:8:12:10 | SSA def(err) | -| url.go:12:8:12:10 | SSA def(err) | url.go:16:5:16:7 | err | -| url.go:14:3:14:5 | SSA def(res) | url.go:19:9:19:11 | res | -| url.go:14:3:14:50 | ... = ...[0] | url.go:14:3:14:5 | SSA def(res) | -| url.go:14:3:14:50 | ... = ...[1] | url.go:14:8:14:10 | SSA def(err) | -| url.go:14:8:14:10 | SSA def(err) | url.go:16:5:16:7 | err | +| url.go:8:20:8:20 | s | url.go:8:20:8:20 | SSA def(s) | +| url.go:12:3:12:48 | SSA def(err) | url.go:16:5:16:7 | err | +| url.go:12:3:12:48 | SSA def(res) | url.go:19:9:19:11 | res | +| url.go:12:3:12:48 | extract:0 ... = ... | url.go:12:3:12:48 | SSA def(res) | +| url.go:12:3:12:48 | extract:1 ... = ... | url.go:12:3:12:48 | SSA def(err) | +| url.go:14:3:14:50 | SSA def(err) | url.go:16:5:16:7 | err | +| url.go:14:3:14:50 | SSA def(res) | url.go:19:9:19:11 | res | +| url.go:14:3:14:50 | extract:0 ... = ... | url.go:14:3:14:50 | SSA def(res) | +| url.go:14:3:14:50 | extract:1 ... = ... | url.go:14:3:14:50 | SSA def(err) | | url.go:22:12:22:12 | SSA def(i) | url.go:24:5:24:5 | i | -| url.go:22:12:22:12 | argument corresponding to i | url.go:22:12:22:12 | SSA def(i) | +| url.go:22:12:22:12 | i | url.go:22:12:22:12 | SSA def(i) | | url.go:22:19:22:19 | SSA def(s) | url.go:23:20:23:20 | s | -| url.go:22:19:22:19 | argument corresponding to s | url.go:22:19:22:19 | SSA def(s) | -| url.go:23:2:23:2 | SSA def(u) | url.go:25:10:25:10 | u | -| url.go:23:2:23:21 | ... := ...[0] | url.go:23:2:23:2 | SSA def(u) | +| url.go:22:19:22:19 | s | url.go:22:19:22:19 | SSA def(s) | +| url.go:23:2:23:21 | SSA def(u) | url.go:25:10:25:10 | u | +| url.go:23:2:23:21 | extract:0 ... := ... | url.go:23:2:23:21 | SSA def(u) | | url.go:23:20:23:20 | s | url.go:27:29:27:29 | s | -| url.go:27:2:27:2 | SSA def(u) | url.go:28:14:28:14 | u | -| url.go:27:2:27:30 | ... = ...[0] | url.go:27:2:27:2 | SSA def(u) | +| url.go:27:2:27:30 | SSA def(u) | url.go:28:14:28:14 | u | +| url.go:27:2:27:30 | extract:0 ... = ... | url.go:27:2:27:30 | SSA def(u) | | url.go:28:14:28:14 | u | url.go:29:14:29:14 | u | | url.go:28:14:28:14 | u [postupdate] | url.go:29:14:29:14 | u | | url.go:29:14:29:14 | u | url.go:30:11:30:11 | u | | url.go:29:14:29:14 | u [postupdate] | url.go:30:11:30:11 | u | -| url.go:30:2:30:3 | SSA def(bs) | url.go:31:14:31:15 | bs | -| url.go:30:2:30:27 | ... := ...[0] | url.go:30:2:30:3 | SSA def(bs) | +| url.go:30:2:30:27 | SSA def(bs) | url.go:31:14:31:15 | bs | +| url.go:30:2:30:27 | extract:0 ... := ... | url.go:30:2:30:27 | SSA def(bs) | | url.go:30:11:30:11 | u | url.go:32:9:32:9 | u | | url.go:30:11:30:11 | u [postupdate] | url.go:32:9:32:9 | u | -| url.go:32:2:32:2 | SSA def(u) | url.go:33:14:33:14 | u | -| url.go:32:2:32:23 | ... = ...[0] | url.go:32:2:32:2 | SSA def(u) | +| url.go:32:2:32:23 | SSA def(u) | url.go:33:14:33:14 | u | +| url.go:32:2:32:23 | extract:0 ... = ... | url.go:32:2:32:23 | SSA def(u) | | url.go:33:14:33:14 | u | url.go:34:14:34:14 | u | | url.go:33:14:33:14 | u [postupdate] | url.go:34:14:34:14 | u | | url.go:34:14:34:14 | u | url.go:35:14:35:14 | u | | url.go:34:14:34:14 | u [postupdate] | url.go:35:14:35:14 | u | | url.go:35:14:35:14 | u | url.go:36:6:36:6 | u | | url.go:35:14:35:14 | u [postupdate] | url.go:36:6:36:6 | u | -| url.go:36:2:36:2 | SSA def(u) | url.go:37:9:37:9 | u | +| url.go:36:2:36:26 | SSA def(u) | url.go:37:9:37:9 | u | | url.go:36:6:36:6 | u | url.go:36:25:36:25 | u | | url.go:36:6:36:6 | u [postupdate] | url.go:36:25:36:25 | u | -| url.go:36:6:36:26 | call to ResolveReference | url.go:36:2:36:2 | SSA def(u) | -| url.go:42:2:42:3 | SSA def(ui) | url.go:43:11:43:12 | ui | -| url.go:42:7:42:38 | call to UserPassword | url.go:42:2:42:3 | SSA def(ui) | -| url.go:43:2:43:3 | SSA def(pw) | url.go:44:14:44:15 | pw | -| url.go:43:2:43:23 | ... := ...[0] | url.go:43:2:43:3 | SSA def(pw) | +| url.go:36:6:36:26 | call to ResolveReference | url.go:36:2:36:26 | SSA def(u) | +| url.go:42:2:42:38 | SSA def(ui) | url.go:43:11:43:12 | ui | +| url.go:42:7:42:38 | call to UserPassword | url.go:42:2:42:38 | SSA def(ui) | +| url.go:43:2:43:23 | SSA def(pw) | url.go:44:14:44:15 | pw | +| url.go:43:2:43:23 | extract:0 ... := ... | url.go:43:2:43:23 | SSA def(pw) | | url.go:43:11:43:12 | ui | url.go:45:14:45:15 | ui | | url.go:43:11:43:12 | ui [postupdate] | url.go:45:14:45:15 | ui | | url.go:45:14:45:15 | ui | url.go:46:9:46:10 | ui | | url.go:45:14:45:15 | ui [postupdate] | url.go:46:9:46:10 | ui | | url.go:49:12:49:12 | SSA def(q) | url.go:50:25:50:25 | q | -| url.go:49:12:49:12 | argument corresponding to q | url.go:49:12:49:12 | SSA def(q) | -| url.go:50:2:50:2 | SSA def(v) | url.go:51:14:51:14 | v | -| url.go:50:2:50:26 | ... := ...[0] | url.go:50:2:50:2 | SSA def(v) | +| url.go:49:12:49:12 | q | url.go:49:12:49:12 | SSA def(q) | +| url.go:50:2:50:26 | SSA def(v) | url.go:51:14:51:14 | v | +| url.go:50:2:50:26 | extract:0 ... := ... | url.go:50:2:50:26 | SSA def(v) | | url.go:51:14:51:14 | v | url.go:52:14:52:14 | v | | url.go:51:14:51:14 | v [postupdate] | url.go:52:14:52:14 | v | | url.go:52:14:52:14 | v | url.go:53:9:53:9 | v | | url.go:52:14:52:14 | v [postupdate] | url.go:53:9:53:9 | v | | url.go:56:12:56:12 | SSA def(q) | url.go:57:29:57:29 | q | -| url.go:56:12:56:12 | argument corresponding to q | url.go:56:12:56:12 | SSA def(q) | -| url.go:57:2:57:8 | SSA def(joined1) | url.go:58:38:58:44 | joined1 | -| url.go:57:2:57:39 | ... := ...[0] | url.go:57:2:57:8 | SSA def(joined1) | -| url.go:58:2:58:8 | SSA def(joined2) | url.go:59:24:59:30 | joined2 | -| url.go:58:2:58:45 | ... := ...[0] | url.go:58:2:58:8 | SSA def(joined2) | -| url.go:59:2:59:6 | SSA def(asUrl) | url.go:60:15:60:19 | asUrl | -| url.go:59:2:59:31 | ... := ...[0] | url.go:59:2:59:6 | SSA def(asUrl) | -| url.go:60:2:60:10 | SSA def(joinedUrl) | url.go:61:9:61:17 | joinedUrl | -| url.go:60:15:60:37 | call to JoinPath | url.go:60:2:60:10 | SSA def(joinedUrl) | +| url.go:56:12:56:12 | q | url.go:56:12:56:12 | SSA def(q) | +| url.go:57:2:57:39 | SSA def(joined1) | url.go:58:38:58:44 | joined1 | +| url.go:57:2:57:39 | extract:0 ... := ... | url.go:57:2:57:39 | SSA def(joined1) | +| url.go:58:2:58:45 | SSA def(joined2) | url.go:59:24:59:30 | joined2 | +| url.go:58:2:58:45 | extract:0 ... := ... | url.go:58:2:58:45 | SSA def(joined2) | +| url.go:59:2:59:31 | SSA def(asUrl) | url.go:60:15:60:19 | asUrl | +| url.go:59:2:59:31 | extract:0 ... := ... | url.go:59:2:59:31 | SSA def(asUrl) | +| url.go:60:2:60:37 | SSA def(joinedUrl) | url.go:61:9:61:17 | joinedUrl | +| url.go:60:15:60:37 | call to JoinPath | url.go:60:2:60:37 | SSA def(joinedUrl) | | url.go:64:13:64:13 | SSA def(q) | url.go:66:27:66:27 | q | -| url.go:64:13:64:13 | argument corresponding to q | url.go:64:13:64:13 | SSA def(q) | -| url.go:65:2:65:9 | SSA def(cleanUrl) | url.go:66:9:66:16 | cleanUrl | -| url.go:65:2:65:48 | ... := ...[0] | url.go:65:2:65:9 | SSA def(cleanUrl) | +| url.go:64:13:64:13 | q | url.go:64:13:64:13 | SSA def(q) | +| url.go:65:2:65:48 | SSA def(cleanUrl) | url.go:66:9:66:16 | cleanUrl | +| url.go:65:2:65:48 | extract:0 ... := ... | url.go:65:2:65:48 | SSA def(cleanUrl) | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected index 667845624969..4ace99a0ab2c 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected @@ -1,5 +1,5 @@ -| main.go:26:11:26:17 | type assertion | main.go:26:2:26:17 | ... := ...[0] | -| main.go:26:11:26:17 | type assertion | main.go:26:2:26:17 | ... := ...[1] | +| main.go:26:11:26:17 | type assertion | main.go:26:2:26:17 | extract:0 ... := ... | +| main.go:26:11:26:17 | type assertion | main.go:26:2:26:17 | extract:1 ... := ... | | main.go:38:13:38:13 | 1 | main.go:38:7:38:20 | slice literal | | main.go:38:16:38:16 | 2 | main.go:38:7:38:20 | slice literal | | main.go:38:19:38:19 | 3 | main.go:38:7:38:20 | slice literal | @@ -8,9 +8,9 @@ | main.go:40:15:40:15 | s | main.go:40:8:40:23 | call to append | | main.go:40:18:40:19 | s1 | main.go:40:8:40:23 | call to append | | main.go:42:10:42:11 | s4 | main.go:42:7:42:7 | s [postupdate] | -| main.go:47:20:47:21 | next key-value pair in range | main.go:47:2:50:2 | range statement[0] | -| main.go:47:20:47:21 | next key-value pair in range | main.go:47:2:50:2 | range statement[1] | -| main.go:47:20:47:21 | xs | main.go:47:2:50:2 | range statement[1] | +| main.go:47:2:50:2 | next range element | main.go:47:2:50:2 | extract:0 range element | +| main.go:47:2:50:2 | next range element | main.go:47:2:50:2 | extract:1 range element | +| main.go:47:20:47:21 | xs | main.go:47:2:50:2 | extract:1 range element | | strings.go:9:24:9:24 | s | strings.go:9:8:9:38 | call to Replace | | strings.go:9:32:9:34 | "_" | strings.go:9:8:9:38 | call to Replace | | strings.go:10:27:10:27 | s | strings.go:10:8:10:42 | call to ReplaceAll | @@ -24,29 +24,29 @@ | strings.go:11:48:11:49 | s2 | strings.go:11:30:11:50 | call to Sprintf | | strings.go:11:54:11:69 | call to Sprintln | strings.go:11:9:11:69 | ...+... | | strings.go:11:67:11:68 | s3 | strings.go:11:54:11:69 | call to Sprintln | -| url.go:12:14:12:48 | call to PathUnescape | url.go:12:3:12:48 | ... = ...[0] | -| url.go:12:14:12:48 | call to PathUnescape | url.go:12:3:12:48 | ... = ...[1] | -| url.go:12:31:12:47 | call to PathEscape | url.go:12:3:12:48 | ... = ...[0] | +| url.go:12:14:12:48 | call to PathUnescape | url.go:12:3:12:48 | extract:0 ... = ... | +| url.go:12:14:12:48 | call to PathUnescape | url.go:12:3:12:48 | extract:1 ... = ... | +| url.go:12:31:12:47 | call to PathEscape | url.go:12:3:12:48 | extract:0 ... = ... | | url.go:12:46:12:46 | s | url.go:12:31:12:47 | call to PathEscape | -| url.go:14:14:14:50 | call to QueryUnescape | url.go:14:3:14:50 | ... = ...[0] | -| url.go:14:14:14:50 | call to QueryUnescape | url.go:14:3:14:50 | ... = ...[1] | -| url.go:14:32:14:49 | call to QueryEscape | url.go:14:3:14:50 | ... = ...[0] | +| url.go:14:14:14:50 | call to QueryUnescape | url.go:14:3:14:50 | extract:0 ... = ... | +| url.go:14:14:14:50 | call to QueryUnescape | url.go:14:3:14:50 | extract:1 ... = ... | +| url.go:14:32:14:49 | call to QueryEscape | url.go:14:3:14:50 | extract:0 ... = ... | | url.go:14:48:14:48 | s | url.go:14:32:14:49 | call to QueryEscape | -| url.go:23:10:23:21 | call to Parse | url.go:23:2:23:21 | ... := ...[0] | -| url.go:23:10:23:21 | call to Parse | url.go:23:2:23:21 | ... := ...[1] | -| url.go:23:20:23:20 | s | url.go:23:2:23:21 | ... := ...[0] | -| url.go:27:9:27:30 | call to ParseRequestURI | url.go:27:2:27:30 | ... = ...[0] | -| url.go:27:9:27:30 | call to ParseRequestURI | url.go:27:2:27:30 | ... = ...[1] | -| url.go:27:29:27:29 | s | url.go:27:2:27:30 | ... = ...[0] | +| url.go:23:10:23:21 | call to Parse | url.go:23:2:23:21 | extract:0 ... := ... | +| url.go:23:10:23:21 | call to Parse | url.go:23:2:23:21 | extract:1 ... := ... | +| url.go:23:20:23:20 | s | url.go:23:2:23:21 | extract:0 ... := ... | +| url.go:27:9:27:30 | call to ParseRequestURI | url.go:27:2:27:30 | extract:0 ... = ... | +| url.go:27:9:27:30 | call to ParseRequestURI | url.go:27:2:27:30 | extract:1 ... = ... | +| url.go:27:29:27:29 | s | url.go:27:2:27:30 | extract:0 ... = ... | | url.go:28:14:28:14 | u | url.go:28:14:28:28 | call to EscapedPath | | url.go:29:14:29:14 | u | url.go:29:14:29:25 | call to Hostname | -| url.go:30:11:30:11 | u | url.go:30:2:30:27 | ... := ...[0] | -| url.go:30:11:30:27 | call to MarshalBinary | url.go:30:2:30:27 | ... := ...[0] | -| url.go:30:11:30:27 | call to MarshalBinary | url.go:30:2:30:27 | ... := ...[1] | -| url.go:32:9:32:9 | u | url.go:32:2:32:23 | ... = ...[0] | -| url.go:32:9:32:23 | call to Parse | url.go:32:2:32:23 | ... = ...[0] | -| url.go:32:9:32:23 | call to Parse | url.go:32:2:32:23 | ... = ...[1] | -| url.go:32:17:32:22 | "/foo" | url.go:32:2:32:23 | ... = ...[0] | +| url.go:30:11:30:11 | u | url.go:30:2:30:27 | extract:0 ... := ... | +| url.go:30:11:30:27 | call to MarshalBinary | url.go:30:2:30:27 | extract:0 ... := ... | +| url.go:30:11:30:27 | call to MarshalBinary | url.go:30:2:30:27 | extract:1 ... := ... | +| url.go:32:9:32:9 | u | url.go:32:2:32:23 | extract:0 ... = ... | +| url.go:32:9:32:23 | call to Parse | url.go:32:2:32:23 | extract:0 ... = ... | +| url.go:32:9:32:23 | call to Parse | url.go:32:2:32:23 | extract:1 ... = ... | +| url.go:32:17:32:22 | "/foo" | url.go:32:2:32:23 | extract:0 ... = ... | | url.go:33:14:33:14 | u | url.go:33:14:33:21 | call to Port | | url.go:34:14:34:14 | u | url.go:34:14:34:22 | call to Query | | url.go:35:14:35:14 | u | url.go:35:14:35:27 | call to RequestURI | @@ -55,30 +55,30 @@ | url.go:41:17:41:20 | "me" | url.go:41:8:41:21 | call to User | | url.go:42:24:42:27 | "me" | url.go:42:7:42:38 | call to UserPassword | | url.go:42:30:42:37 | "secret" | url.go:42:7:42:38 | call to UserPassword | -| url.go:43:11:43:12 | ui | url.go:43:2:43:23 | ... := ...[0] | -| url.go:43:11:43:23 | call to Password | url.go:43:2:43:23 | ... := ...[0] | -| url.go:43:11:43:23 | call to Password | url.go:43:2:43:23 | ... := ...[1] | +| url.go:43:11:43:12 | ui | url.go:43:2:43:23 | extract:0 ... := ... | +| url.go:43:11:43:23 | call to Password | url.go:43:2:43:23 | extract:0 ... := ... | +| url.go:43:11:43:23 | call to Password | url.go:43:2:43:23 | extract:1 ... := ... | | url.go:45:14:45:15 | ui | url.go:45:14:45:26 | call to Username | -| url.go:50:10:50:26 | call to ParseQuery | url.go:50:2:50:26 | ... := ...[0] | -| url.go:50:10:50:26 | call to ParseQuery | url.go:50:2:50:26 | ... := ...[1] | -| url.go:50:25:50:25 | q | url.go:50:2:50:26 | ... := ...[0] | +| url.go:50:10:50:26 | call to ParseQuery | url.go:50:2:50:26 | extract:0 ... := ... | +| url.go:50:10:50:26 | call to ParseQuery | url.go:50:2:50:26 | extract:1 ... := ... | +| url.go:50:25:50:25 | q | url.go:50:2:50:26 | extract:0 ... := ... | | url.go:51:14:51:14 | v | url.go:51:14:51:23 | call to Encode | | url.go:52:14:52:14 | v | url.go:52:14:52:26 | call to Get | -| url.go:57:16:57:39 | call to JoinPath | url.go:57:2:57:39 | ... := ...[0] | -| url.go:57:16:57:39 | call to JoinPath | url.go:57:2:57:39 | ... := ...[1] | -| url.go:57:29:57:29 | q | url.go:57:2:57:39 | ... := ...[0] | -| url.go:57:32:57:38 | "clean" | url.go:57:2:57:39 | ... := ...[0] | -| url.go:58:16:58:45 | call to JoinPath | url.go:58:2:58:45 | ... := ...[0] | -| url.go:58:16:58:45 | call to JoinPath | url.go:58:2:58:45 | ... := ...[1] | -| url.go:58:29:58:35 | "clean" | url.go:58:2:58:45 | ... := ...[0] | -| url.go:58:38:58:44 | joined1 | url.go:58:2:58:45 | ... := ...[0] | -| url.go:59:14:59:31 | call to Parse | url.go:59:2:59:31 | ... := ...[0] | -| url.go:59:14:59:31 | call to Parse | url.go:59:2:59:31 | ... := ...[1] | -| url.go:59:24:59:30 | joined2 | url.go:59:2:59:31 | ... := ...[0] | +| url.go:57:16:57:39 | call to JoinPath | url.go:57:2:57:39 | extract:0 ... := ... | +| url.go:57:16:57:39 | call to JoinPath | url.go:57:2:57:39 | extract:1 ... := ... | +| url.go:57:29:57:29 | q | url.go:57:2:57:39 | extract:0 ... := ... | +| url.go:57:32:57:38 | "clean" | url.go:57:2:57:39 | extract:0 ... := ... | +| url.go:58:16:58:45 | call to JoinPath | url.go:58:2:58:45 | extract:0 ... := ... | +| url.go:58:16:58:45 | call to JoinPath | url.go:58:2:58:45 | extract:1 ... := ... | +| url.go:58:29:58:35 | "clean" | url.go:58:2:58:45 | extract:0 ... := ... | +| url.go:58:38:58:44 | joined1 | url.go:58:2:58:45 | extract:0 ... := ... | +| url.go:59:14:59:31 | call to Parse | url.go:59:2:59:31 | extract:0 ... := ... | +| url.go:59:14:59:31 | call to Parse | url.go:59:2:59:31 | extract:1 ... := ... | +| url.go:59:24:59:30 | joined2 | url.go:59:2:59:31 | extract:0 ... := ... | | url.go:60:15:60:19 | asUrl | url.go:60:15:60:37 | call to JoinPath | | url.go:60:30:60:36 | "clean" | url.go:60:15:60:37 | call to JoinPath | -| url.go:65:17:65:48 | call to Parse | url.go:65:2:65:48 | ... := ...[0] | -| url.go:65:17:65:48 | call to Parse | url.go:65:2:65:48 | ... := ...[1] | -| url.go:65:27:65:47 | "http://harmless.org" | url.go:65:2:65:48 | ... := ...[0] | +| url.go:65:17:65:48 | call to Parse | url.go:65:2:65:48 | extract:0 ... := ... | +| url.go:65:17:65:48 | call to Parse | url.go:65:2:65:48 | extract:1 ... := ... | +| url.go:65:27:65:47 | "http://harmless.org" | url.go:65:2:65:48 | extract:0 ... := ... | | url.go:66:9:66:16 | cleanUrl | url.go:66:9:66:28 | call to JoinPath | | url.go:66:27:66:27 | q | url.go:66:9:66:28 | call to JoinPath | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getEntryNode.expected b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getEntryNode.expected index a64298b64442..c66a1334a178 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getEntryNode.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getEntryNode.expected @@ -25,15 +25,15 @@ | result | main.go:53:2:53:22 | call to op2 | main.go:53:2:53:22 | call to op2 | | result | main.go:53:14:53:21 | call to bump | main.go:53:14:53:21 | call to bump | | result | tst2.go:10:9:10:26 | call to NewEncoder | tst2.go:10:9:10:26 | call to NewEncoder | -| result | tst2.go:10:9:10:39 | call to Encode | tst2.go:10:2:10:4 | SSA def(err) | -| result | tst.go:9:17:9:33 | call to new | tst.go:9:2:9:12 | SSA def(bytesBuffer) | +| result | tst2.go:10:9:10:39 | call to Encode | tst2.go:10:2:10:39 | SSA def(err) | +| result | tst.go:9:17:9:33 | call to new | tst.go:9:2:9:33 | SSA def(bytesBuffer) | | result 0 | main.go:51:2:51:14 | call to op | main.go:51:2:51:14 | call to op | | result 0 | main.go:53:2:53:22 | call to op2 | main.go:53:2:53:22 | call to op2 | | result 0 | main.go:53:14:53:21 | call to bump | main.go:53:14:53:21 | call to bump | -| result 0 | main.go:54:10:54:15 | call to test | main.go:54:2:54:2 | SSA def(x) | -| result 0 | main.go:56:9:56:15 | call to test2 | main.go:56:2:56:2 | SSA def(x) | +| result 0 | main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | SSA def(x) | +| result 0 | main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | SSA def(x) | | result 0 | tst2.go:10:9:10:26 | call to NewEncoder | tst2.go:10:9:10:26 | call to NewEncoder | -| result 0 | tst2.go:10:9:10:39 | call to Encode | tst2.go:10:2:10:4 | SSA def(err) | -| result 0 | tst.go:9:17:9:33 | call to new | tst.go:9:2:9:12 | SSA def(bytesBuffer) | -| result 1 | main.go:54:10:54:15 | call to test | main.go:54:5:54:5 | SSA def(y) | -| result 1 | main.go:56:9:56:15 | call to test2 | main.go:56:5:56:5 | SSA def(y) | +| result 0 | tst2.go:10:9:10:39 | call to Encode | tst2.go:10:2:10:39 | SSA def(err) | +| result 0 | tst.go:9:17:9:33 | call to new | tst.go:9:2:9:33 | SSA def(bytesBuffer) | +| result 1 | main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | SSA def(y) | +| result 1 | main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | SSA def(y) | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getExitNode.expected b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getExitNode.expected index b101ce537fca..c62d1a1fc231 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getExitNode.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionInput_getExitNode.expected @@ -4,7 +4,7 @@ | parameter 0 | reset.go:8:1:16:1 | function declaration | reset.go:8:27:8:27 | SSA def(r) | | parameter 0 | tst2.go:8:1:12:1 | function declaration | tst2.go:8:12:8:15 | SSA def(data) | | parameter 0 | tst.go:8:1:11:1 | function declaration | tst.go:8:12:8:17 | SSA def(reader) | -| parameter 0 | tst.go:13:1:13:25 | function declaration | tst.go:13:12:13:13 | initialization of xs | +| parameter 0 | tst.go:13:1:13:25 | function declaration | tst.go:13:12:13:13 | xs | | parameter 0 | tst.go:15:1:19:1 | function declaration | tst.go:15:12:15:12 | SSA def(x) | | parameter 1 | main.go:5:1:11:1 | function declaration | main.go:5:20:5:20 | SSA def(x) | | parameter 1 | main.go:13:1:20:1 | function declaration | main.go:13:21:13:21 | SSA def(x) | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getEntryNode.expected b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getEntryNode.expected index 263a9298413a..ebe01f709c94 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getEntryNode.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getEntryNode.expected @@ -1,22 +1,22 @@ | result | main.go:5:1:11:1 | function declaration | main.go:7:10:7:14 | ...+... | | result | main.go:5:1:11:1 | function declaration | main.go:9:10:9:14 | ...-... | -| result | main.go:13:1:20:1 | function declaration | main.go:13:36:13:38 | zero value for res | +| result | main.go:13:1:20:1 | function declaration | main.go:13:45:20:1 | zero-init:0 block statement | | result | main.go:13:1:20:1 | function declaration | main.go:15:9:15:13 | ...+... | | result | main.go:13:1:20:1 | function declaration | main.go:17:10:17:14 | ...-... | | result | main.go:26:1:29:1 | function declaration | main.go:28:9:28:15 | selection of count | | result | reset.go:8:1:16:1 | function declaration | reset.go:15:9:15:12 | sink | | result 0 | main.go:31:1:33:1 | function declaration | main.go:32:9:32:10 | 23 | -| result 0 | main.go:35:1:38:1 | function declaration | main.go:35:15:35:15 | zero value for x | +| result 0 | main.go:35:1:38:1 | function declaration | main.go:35:29:38:1 | zero-init:0 block statement | | result 0 | main.go:35:1:38:1 | function declaration | main.go:36:13:36:14 | 23 | -| result 0 | main.go:40:1:48:1 | function declaration | main.go:40:21:40:23 | zero value for int | +| result 0 | main.go:40:1:48:1 | function declaration | main.go:40:33:48:1 | zero-init:0 block statement | | result 0 | main.go:40:1:48:1 | function declaration | main.go:45:10:45:10 | 0 | | result 0 | main.go:40:1:48:1 | function declaration | main.go:47:9:47:9 | 0 | | result 0 | tst2.go:8:1:12:1 | function declaration | tst2.go:11:9:11:9 | w | | result 1 | main.go:31:1:33:1 | function declaration | main.go:32:13:32:14 | 42 | -| result 1 | main.go:35:1:38:1 | function declaration | main.go:35:22:35:22 | zero value for y | +| result 1 | main.go:35:1:38:1 | function declaration | main.go:35:29:38:1 | zero-init:1 block statement | | result 1 | main.go:35:1:38:1 | function declaration | main.go:36:9:36:10 | 42 | -| result 1 | main.go:40:1:48:1 | function declaration | main.go:40:26:40:26 | zero value for y | -| result 1 | main.go:40:1:48:1 | function declaration | main.go:42:3:42:5 | rhs of increment statement | +| result 1 | main.go:40:1:48:1 | function declaration | main.go:40:33:48:1 | zero-init:1 block statement | +| result 1 | main.go:40:1:48:1 | function declaration | main.go:42:3:42:5 | increment statement | | result 1 | main.go:40:1:48:1 | function declaration | main.go:45:13:45:13 | 1 | | result 1 | main.go:40:1:48:1 | function declaration | main.go:47:12:47:12 | 4 | | result 1 | tst2.go:8:1:12:1 | function declaration | tst2.go:11:12:11:14 | err | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getExitNode.expected b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getExitNode.expected index eebf68d92d4a..9d2fdaf117e0 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getExitNode.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_getExitNode.expected @@ -17,10 +17,10 @@ | result 0 | main.go:51:2:51:14 | call to op | main.go:51:2:51:14 | call to op | | result 0 | main.go:53:2:53:22 | call to op2 | main.go:53:2:53:22 | call to op2 | | result 0 | main.go:53:14:53:21 | call to bump | main.go:53:14:53:21 | call to bump | -| result 0 | main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | ... := ...[0] | -| result 0 | main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | ... = ...[0] | +| result 0 | main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | extract:0 ... := ... | +| result 0 | main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | extract:0 ... = ... | | result 0 | tst2.go:10:9:10:26 | call to NewEncoder | tst2.go:10:9:10:26 | call to NewEncoder | | result 0 | tst2.go:10:9:10:39 | call to Encode | tst2.go:10:9:10:39 | call to Encode | | result 0 | tst.go:9:17:9:33 | call to new | tst.go:9:17:9:33 | call to new | -| result 1 | main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | ... := ...[1] | -| result 1 | main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | ... = ...[1] | +| result 1 | main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | extract:1 ... := ... | +| result 1 | main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | extract:1 ... = ... | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_isResult_int.expected b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_isResult_int.expected index 61f029031c67..071afdc13858 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_isResult_int.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FunctionInputsAndOutputs/FunctionOutput_isResult_int.expected @@ -4,10 +4,10 @@ | main.go:53:2:53:22 | call to op2 | main.go:53:2:53:22 | call to op2 | 0 | result 0 | | main.go:53:14:53:21 | call to bump | main.go:53:14:53:21 | call to bump | 0 | result | | main.go:53:14:53:21 | call to bump | main.go:53:14:53:21 | call to bump | 0 | result 0 | -| main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | ... := ...[0] | 0 | result 0 | -| main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | ... := ...[1] | 1 | result 1 | -| main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | ... = ...[0] | 0 | result 0 | -| main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | ... = ...[1] | 1 | result 1 | +| main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | extract:0 ... := ... | 0 | result 0 | +| main.go:54:10:54:15 | call to test | main.go:54:2:54:15 | extract:1 ... := ... | 1 | result 1 | +| main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | extract:0 ... = ... | 0 | result 0 | +| main.go:56:9:56:15 | call to test2 | main.go:56:2:56:15 | extract:1 ... = ... | 1 | result 1 | | tst2.go:10:9:10:26 | call to NewEncoder | tst2.go:10:9:10:26 | call to NewEncoder | 0 | result | | tst2.go:10:9:10:26 | call to NewEncoder | tst2.go:10:9:10:26 | call to NewEncoder | 0 | result 0 | | tst2.go:10:9:10:39 | call to Encode | tst2.go:10:9:10:39 | call to Encode | 0 | result | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/GlobalValueNumber.expected b/go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/GlobalValueNumber.expected index 287a7f735f24..b8d5333c8411 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/GlobalValueNumber.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/GlobalValueNumbering/GlobalValueNumber.expected @@ -1,39 +1,38 @@ -| main.go:6:2:6:5 | 1 | main.go:14:7:14:7 | 1 | -| main.go:10:2:10:2 | SSA def(x) | main.go:10:7:10:7 | 0 | +| main.go:10:2:10:7 | SSA def(x) | main.go:10:7:10:7 | 0 | | main.go:10:7:10:7 | 0 | main.go:10:7:10:7 | 0 | -| main.go:11:6:11:6 | SSA def(y) | main.go:10:7:10:7 | 0 | -| main.go:11:6:11:6 | zero value for y | main.go:10:7:10:7 | 0 | +| main.go:11:6:11:10 | SSA def(y) | main.go:10:7:10:7 | 0 | +| main.go:11:6:11:10 | zero-init:0 value declaration specifier | main.go:10:7:10:7 | 0 | | main.go:12:2:12:18 | call to Println | main.go:12:2:12:18 | call to Println | | main.go:12:14:12:14 | x | main.go:10:7:10:7 | 0 | | main.go:12:17:12:17 | y | main.go:10:7:10:7 | 0 | -| main.go:14:2:14:2 | SSA def(z) | main.go:14:7:14:7 | 1 | +| main.go:14:2:14:7 | SSA def(z) | main.go:14:7:14:7 | 1 | | main.go:14:7:14:7 | 1 | main.go:14:7:14:7 | 1 | | main.go:15:2:15:9 | call to bump | main.go:15:2:15:9 | call to bump | | main.go:16:2:16:21 | call to Println | main.go:16:2:16:21 | call to Println | | main.go:16:14:16:14 | x | main.go:10:7:10:7 | 0 | | main.go:16:17:16:17 | y | main.go:10:7:10:7 | 0 | -| main.go:18:2:18:3 | SSA def(ss) | main.go:18:8:18:24 | call to make | +| main.go:18:2:18:24 | SSA def(ss) | main.go:18:8:18:24 | call to make | | main.go:18:8:18:24 | call to make | main.go:18:8:18:24 | call to make | | main.go:18:23:18:23 | 3 | main.go:18:23:18:23 | 3 | | main.go:19:5:19:5 | 2 | main.go:19:5:19:5 | 2 | | main.go:19:10:19:24 | "Hello, world!" | main.go:19:10:19:24 | "Hello, world!" | | main.go:20:2:20:16 | call to Println | main.go:20:2:20:16 | call to Println | -| main.go:23:14:23:16 | implicit read of res | main.go:24:8:24:8 | 4 | -| main.go:23:14:23:16 | zero value for res | main.go:10:7:10:7 | 0 | -| main.go:24:2:24:4 | SSA def(res) | main.go:24:8:24:8 | 4 | +| main.go:23:23:26:1 | result-read:0 block statement | main.go:24:8:24:8 | 4 | +| main.go:23:23:26:1 | zero-init:0 block statement | main.go:10:7:10:7 | 0 | +| main.go:24:2:24:8 | SSA def(res) | main.go:24:8:24:8 | 4 | | main.go:24:8:24:8 | 4 | main.go:24:8:24:8 | 4 | -| main.go:28:15:28:17 | implicit read of res | main.go:30:9:30:9 | 6 | -| main.go:28:15:28:17 | zero value for res | main.go:10:7:10:7 | 0 | +| main.go:28:24:31:1 | result-read:0 block statement | main.go:30:9:30:9 | 6 | +| main.go:28:24:31:1 | zero-init:0 block statement | main.go:10:7:10:7 | 0 | | main.go:29:8:29:8 | 5 | main.go:29:8:29:8 | 5 | +| main.go:30:2:30:9 | SSA def(res) | main.go:30:9:30:9 | 6 | | main.go:30:9:30:9 | 6 | main.go:30:9:30:9 | 6 | -| main.go:30:9:30:9 | SSA def(res) | main.go:30:9:30:9 | 6 | -| main.go:33:15:33:17 | zero value for res | main.go:10:7:10:7 | 0 | +| main.go:33:24:39:1 | zero-init:0 block statement | main.go:10:7:10:7 | 0 | | main.go:34:8:34:8 | 7 | main.go:34:8:34:8 | 7 | -| main.go:35:8:37:4 | function call | main.go:35:8:37:4 | function call | -| main.go:36:3:36:5 | SSA def(res) | main.go:36:9:36:9 | 8 | +| main.go:35:8:37:4 | defer-invoke function call | main.go:35:8:37:4 | function call | +| main.go:36:3:36:9 | SSA def(res) | main.go:36:9:36:9 | 8 | | main.go:36:9:36:9 | 8 | main.go:36:9:36:9 | 8 | +| main.go:38:2:38:9 | SSA def(res) | main.go:38:9:38:9 | 9 | | main.go:38:9:38:9 | 9 | main.go:38:9:38:9 | 9 | -| main.go:38:9:38:9 | SSA def(res) | main.go:38:9:38:9 | 9 | | regressions.go:5:11:5:31 | call to Sizeof | regressions.go:5:11:5:31 | call to Sizeof | | regressions.go:7:11:7:15 | false | regressions.go:7:11:7:15 | false | | regressions.go:9:11:9:12 | !... | regressions.go:11:11:11:14 | true | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/HiddenNodes/test.expected b/go/ql/test/library-tests/semmle/go/dataflow/HiddenNodes/test.expected index 13aa3515962b..3b1674900dd0 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/HiddenNodes/test.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/HiddenNodes/test.expected @@ -2,11 +2,11 @@ models | 1 | Summary: archive/tar; ; false; FileInfoHeader; ; ; Argument[0]; ReturnValue[0]; taint; manual | edges | test.go:14:8:14:15 | call to source | test.go:15:34:15:35 | fi | provenance | | -| test.go:15:2:15:44 | ... := ...[0] | test.go:16:7:16:12 | header | provenance | | -| test.go:15:34:15:35 | fi | test.go:15:2:15:44 | ... := ...[0] | provenance | MaD:1 | +| test.go:15:2:15:44 | extract:0 ... := ... | test.go:16:7:16:12 | header | provenance | | +| test.go:15:34:15:35 | fi | test.go:15:2:15:44 | extract:0 ... := ... | provenance | MaD:1 | nodes | test.go:14:8:14:15 | call to source | semmle.label | call to source | -| test.go:15:2:15:44 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:15:2:15:44 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:15:34:15:35 | fi | semmle.label | fi | | test.go:16:7:16:12 | header | semmle.label | header | subpaths diff --git a/go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getResult_int.expected b/go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getResult_int.expected index 6c9465eeaf47..9e8955199329 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getResult_int.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/Nodes/CallNode_getResult_int.expected @@ -1,3 +1,3 @@ -| main.go:9:9:9:14 | call to test | 0 | main.go:9:2:9:14 | ... = ...[0] | -| main.go:9:9:9:14 | call to test | 1 | main.go:9:2:9:14 | ... = ...[1] | +| main.go:9:9:9:14 | call to test | 0 | main.go:9:2:9:14 | extract:0 ... = ... | +| main.go:9:9:9:14 | call to test | 1 | main.go:9:2:9:14 | extract:1 ... = ... | | main.go:14:8:14:24 | call to make | 0 | main.go:14:8:14:24 | call to make | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/Nodes/ResultNode.expected b/go/ql/test/library-tests/semmle/go/dataflow/Nodes/ResultNode.expected index 093fcdbdae13..ca4d2fc9dd8d 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/Nodes/ResultNode.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/Nodes/ResultNode.expected @@ -4,5 +4,5 @@ | resultParameters.go:9:10:9:10 | 1 | Result node with index 0 | | resultParameters.go:11:10:11:10 | 2 | Result node with index 0 | | resultParameters.go:13:9:13:9 | 3 | Result node with index 0 | -| resultParameters.go:16:26:16:26 | implicit read of r | Result node with index 0 | -| resultParameters.go:21:38:21:38 | implicit read of r | Result node with index 0 | +| resultParameters.go:16:33:19:1 | result-read:0 block statement | Result node with index 0 | +| resultParameters.go:21:45:27:1 | result-read:0 block statement | Result node with index 0 | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/Nodes/resultParameters.go b/go/ql/test/library-tests/semmle/go/dataflow/Nodes/resultParameters.go index c404b8199142..60ae1462687e 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/Nodes/resultParameters.go +++ b/go/ql/test/library-tests/semmle/go/dataflow/Nodes/resultParameters.go @@ -13,15 +13,15 @@ func multipleReturns(selector int) int { return 3 // $ Alert[result-node] } -func resultParameter1() (r int) { // $ Alert[result-node] // implicit reads of result parameters are located at the result parameter declaration +func resultParameter1() (r int) { r = 0 return -} +} // $ Alert[result-node] // implicit reads of result parameters use the function body's location -func resultParameter2(selector int) (r int) { // $ Alert[result-node] // implicit reads of result parameters are located at the result parameter declaration +func resultParameter2(selector int) (r int) { r = 0 if selector == 1 { return 1 } return -} +} // $ Alert[result-node] // implicit reads of result parameters use the function body's location diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PostUpdateNodes/test.expected b/go/ql/test/library-tests/semmle/go/dataflow/PostUpdateNodes/test.expected index d29d11627b0f..f0d15090e67f 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PostUpdateNodes/test.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/PostUpdateNodes/test.expected @@ -10,12 +10,12 @@ | test.go:25:2:25:2 | a | test.go:25:2:25:2 | a [postupdate] | | test.go:25:2:25:5 | selection of bs | test.go:25:2:25:5 | selection of bs [postupdate] | | test.go:25:2:25:8 | index expression | test.go:25:2:25:8 | index expression [postupdate] | -| test.go:25:2:25:13 | implicit dereference | test.go:25:2:25:13 | implicit dereference [postupdate] | +| test.go:25:2:25:13 | implicit-deref selection of cptr | test.go:25:2:25:13 | implicit-deref selection of cptr [postupdate] | | test.go:25:2:25:13 | selection of cptr | test.go:25:2:25:13 | selection of cptr [postupdate] | | test.go:26:2:26:2 | a | test.go:26:2:26:2 | a [postupdate] | -| test.go:26:2:26:7 | implicit dereference | test.go:26:2:26:7 | implicit dereference [postupdate] | +| test.go:26:2:26:7 | implicit-deref selection of bptr | test.go:26:2:26:7 | implicit-deref selection of bptr [postupdate] | | test.go:26:2:26:7 | selection of bptr | test.go:26:2:26:7 | selection of bptr [postupdate] | -| test.go:26:2:26:12 | implicit dereference | test.go:26:2:26:12 | implicit dereference [postupdate] | +| test.go:26:2:26:12 | implicit-deref selection of cptr | test.go:26:2:26:12 | implicit-deref selection of cptr [postupdate] | | test.go:26:2:26:12 | selection of cptr | test.go:26:2:26:12 | selection of cptr [postupdate] | | test.go:28:7:28:10 | struct literal | test.go:28:7:28:10 | struct literal [postupdate] | | test.go:29:2:29:2 | c | test.go:29:2:29:2 | c [postupdate] | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.expected b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.expected index 950a3a5ae987..c08f17177ac2 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.expected @@ -1,132 +1,132 @@ -| main.go:22:2:22:6 | SSA def(outer) | main.go:25:7:25:11 | outer | -| main.go:22:11:24:2 | struct literal | main.go:22:2:22:6 | SSA def(outer) | -| main.go:22:11:24:2 | struct literal [postupdate] | main.go:22:2:22:6 | SSA def(outer) | +| main.go:22:2:24:2 | SSA def(outer) | main.go:25:7:25:11 | outer | +| main.go:22:11:24:2 | struct literal | main.go:22:2:24:2 | SSA def(outer) | +| main.go:22:11:24:2 | struct literal [postupdate] | main.go:22:2:24:2 | SSA def(outer) | | main.go:25:7:25:11 | outer | main.go:26:7:26:11 | outer | | main.go:26:7:26:11 | outer | main.go:27:7:27:11 | outer | | main.go:27:7:27:11 | outer | main.go:28:7:28:11 | outer | -| main.go:30:2:30:7 | SSA def(outerp) | main.go:33:7:33:12 | outerp | -| main.go:30:12:32:2 | &... | main.go:30:2:30:7 | SSA def(outerp) | -| main.go:30:12:32:2 | &... [postupdate] | main.go:30:2:30:7 | SSA def(outerp) | +| main.go:30:2:32:2 | SSA def(outerp) | main.go:33:7:33:12 | outerp | +| main.go:30:12:32:2 | &... | main.go:30:2:32:2 | SSA def(outerp) | +| main.go:30:12:32:2 | &... [postupdate] | main.go:30:2:32:2 | SSA def(outerp) | | main.go:33:7:33:12 | outerp | main.go:34:7:34:12 | outerp | | main.go:33:7:33:12 | outerp [postupdate] | main.go:34:7:34:12 | outerp | | main.go:34:7:34:12 | outerp | main.go:35:7:35:12 | outerp | | main.go:34:7:34:12 | outerp [postupdate] | main.go:35:7:35:12 | outerp | | main.go:35:7:35:12 | outerp | main.go:36:7:36:12 | outerp | | main.go:35:7:35:12 | outerp [postupdate] | main.go:36:7:36:12 | outerp | -| main.go:40:2:40:6 | SSA def(outer) | main.go:41:7:41:11 | outer | -| main.go:40:11:40:40 | struct literal | main.go:40:2:40:6 | SSA def(outer) | -| main.go:40:11:40:40 | struct literal [postupdate] | main.go:40:2:40:6 | SSA def(outer) | +| main.go:40:2:40:40 | SSA def(outer) | main.go:41:7:41:11 | outer | +| main.go:40:11:40:40 | struct literal | main.go:40:2:40:40 | SSA def(outer) | +| main.go:40:11:40:40 | struct literal [postupdate] | main.go:40:2:40:40 | SSA def(outer) | | main.go:41:7:41:11 | outer | main.go:42:7:42:11 | outer | | main.go:42:7:42:11 | outer | main.go:43:7:43:11 | outer | | main.go:43:7:43:11 | outer | main.go:44:7:44:11 | outer | -| main.go:46:2:46:7 | SSA def(outerp) | main.go:47:7:47:12 | outerp | -| main.go:46:12:46:42 | &... | main.go:46:2:46:7 | SSA def(outerp) | -| main.go:46:12:46:42 | &... [postupdate] | main.go:46:2:46:7 | SSA def(outerp) | +| main.go:46:2:46:42 | SSA def(outerp) | main.go:47:7:47:12 | outerp | +| main.go:46:12:46:42 | &... | main.go:46:2:46:42 | SSA def(outerp) | +| main.go:46:12:46:42 | &... [postupdate] | main.go:46:2:46:42 | SSA def(outerp) | | main.go:47:7:47:12 | outerp | main.go:48:7:48:12 | outerp | | main.go:47:7:47:12 | outerp [postupdate] | main.go:48:7:48:12 | outerp | | main.go:48:7:48:12 | outerp | main.go:49:7:49:12 | outerp | | main.go:48:7:48:12 | outerp [postupdate] | main.go:49:7:49:12 | outerp | | main.go:49:7:49:12 | outerp | main.go:50:7:50:12 | outerp | | main.go:49:7:49:12 | outerp [postupdate] | main.go:50:7:50:12 | outerp | -| main.go:54:2:54:6 | SSA def(inner) | main.go:55:19:55:23 | inner | -| main.go:54:11:54:25 | struct literal | main.go:54:2:54:6 | SSA def(inner) | -| main.go:54:11:54:25 | struct literal [postupdate] | main.go:54:2:54:6 | SSA def(inner) | -| main.go:55:2:55:7 | SSA def(middle) | main.go:56:17:56:22 | middle | -| main.go:55:12:55:24 | struct literal | main.go:55:2:55:7 | SSA def(middle) | -| main.go:55:12:55:24 | struct literal [postupdate] | main.go:55:2:55:7 | SSA def(middle) | -| main.go:56:2:56:6 | SSA def(outer) | main.go:57:7:57:11 | outer | -| main.go:56:11:56:23 | struct literal | main.go:56:2:56:6 | SSA def(outer) | -| main.go:56:11:56:23 | struct literal [postupdate] | main.go:56:2:56:6 | SSA def(outer) | +| main.go:54:2:54:25 | SSA def(inner) | main.go:55:19:55:23 | inner | +| main.go:54:11:54:25 | struct literal | main.go:54:2:54:25 | SSA def(inner) | +| main.go:54:11:54:25 | struct literal [postupdate] | main.go:54:2:54:25 | SSA def(inner) | +| main.go:55:2:55:24 | SSA def(middle) | main.go:56:17:56:22 | middle | +| main.go:55:12:55:24 | struct literal | main.go:55:2:55:24 | SSA def(middle) | +| main.go:55:12:55:24 | struct literal [postupdate] | main.go:55:2:55:24 | SSA def(middle) | +| main.go:56:2:56:23 | SSA def(outer) | main.go:57:7:57:11 | outer | +| main.go:56:11:56:23 | struct literal | main.go:56:2:56:23 | SSA def(outer) | +| main.go:56:11:56:23 | struct literal [postupdate] | main.go:56:2:56:23 | SSA def(outer) | | main.go:57:7:57:11 | outer | main.go:58:7:58:11 | outer | | main.go:58:7:58:11 | outer | main.go:59:7:59:11 | outer | | main.go:59:7:59:11 | outer | main.go:60:7:60:11 | outer | -| main.go:62:2:62:7 | SSA def(innerp) | main.go:63:20:63:25 | innerp | -| main.go:62:12:62:26 | struct literal | main.go:62:2:62:7 | SSA def(innerp) | -| main.go:62:12:62:26 | struct literal [postupdate] | main.go:62:2:62:7 | SSA def(innerp) | -| main.go:63:2:63:8 | SSA def(middlep) | main.go:64:18:64:24 | middlep | -| main.go:63:13:63:26 | struct literal | main.go:63:2:63:8 | SSA def(middlep) | -| main.go:63:13:63:26 | struct literal [postupdate] | main.go:63:2:63:8 | SSA def(middlep) | -| main.go:64:2:64:7 | SSA def(outerp) | main.go:65:7:65:12 | outerp | -| main.go:64:12:64:25 | struct literal | main.go:64:2:64:7 | SSA def(outerp) | -| main.go:64:12:64:25 | struct literal [postupdate] | main.go:64:2:64:7 | SSA def(outerp) | +| main.go:62:2:62:26 | SSA def(innerp) | main.go:63:20:63:25 | innerp | +| main.go:62:12:62:26 | struct literal | main.go:62:2:62:26 | SSA def(innerp) | +| main.go:62:12:62:26 | struct literal [postupdate] | main.go:62:2:62:26 | SSA def(innerp) | +| main.go:63:2:63:26 | SSA def(middlep) | main.go:64:18:64:24 | middlep | +| main.go:63:13:63:26 | struct literal | main.go:63:2:63:26 | SSA def(middlep) | +| main.go:63:13:63:26 | struct literal [postupdate] | main.go:63:2:63:26 | SSA def(middlep) | +| main.go:64:2:64:25 | SSA def(outerp) | main.go:65:7:65:12 | outerp | +| main.go:64:12:64:25 | struct literal | main.go:64:2:64:25 | SSA def(outerp) | +| main.go:64:12:64:25 | struct literal [postupdate] | main.go:64:2:64:25 | SSA def(outerp) | | main.go:65:7:65:12 | outerp | main.go:66:7:66:12 | outerp | | main.go:66:7:66:12 | outerp | main.go:67:7:67:12 | outerp | | main.go:67:7:67:12 | outerp | main.go:68:7:68:12 | outerp | -| main.go:72:2:72:6 | SSA def(inner) | main.go:73:26:73:30 | inner | -| main.go:72:11:72:25 | struct literal | main.go:72:2:72:6 | SSA def(inner) | -| main.go:72:11:72:25 | struct literal [postupdate] | main.go:72:2:72:6 | SSA def(inner) | -| main.go:73:2:73:7 | SSA def(middle) | main.go:74:25:74:30 | middle | -| main.go:73:12:73:31 | struct literal | main.go:73:2:73:7 | SSA def(middle) | -| main.go:73:12:73:31 | struct literal [postupdate] | main.go:73:2:73:7 | SSA def(middle) | -| main.go:74:2:74:6 | SSA def(outer) | main.go:75:7:75:11 | outer | -| main.go:74:11:74:31 | struct literal | main.go:74:2:74:6 | SSA def(outer) | -| main.go:74:11:74:31 | struct literal [postupdate] | main.go:74:2:74:6 | SSA def(outer) | +| main.go:72:2:72:25 | SSA def(inner) | main.go:73:26:73:30 | inner | +| main.go:72:11:72:25 | struct literal | main.go:72:2:72:25 | SSA def(inner) | +| main.go:72:11:72:25 | struct literal [postupdate] | main.go:72:2:72:25 | SSA def(inner) | +| main.go:73:2:73:31 | SSA def(middle) | main.go:74:25:74:30 | middle | +| main.go:73:12:73:31 | struct literal | main.go:73:2:73:31 | SSA def(middle) | +| main.go:73:12:73:31 | struct literal [postupdate] | main.go:73:2:73:31 | SSA def(middle) | +| main.go:74:2:74:31 | SSA def(outer) | main.go:75:7:75:11 | outer | +| main.go:74:11:74:31 | struct literal | main.go:74:2:74:31 | SSA def(outer) | +| main.go:74:11:74:31 | struct literal [postupdate] | main.go:74:2:74:31 | SSA def(outer) | | main.go:75:7:75:11 | outer | main.go:76:7:76:11 | outer | | main.go:76:7:76:11 | outer | main.go:77:7:77:11 | outer | | main.go:77:7:77:11 | outer | main.go:78:7:78:11 | outer | -| main.go:80:2:80:7 | SSA def(innerp) | main.go:81:27:81:32 | innerp | -| main.go:80:12:80:26 | struct literal | main.go:80:2:80:7 | SSA def(innerp) | -| main.go:80:12:80:26 | struct literal [postupdate] | main.go:80:2:80:7 | SSA def(innerp) | -| main.go:81:2:81:8 | SSA def(middlep) | main.go:82:26:82:32 | middlep | -| main.go:81:13:81:33 | struct literal | main.go:81:2:81:8 | SSA def(middlep) | -| main.go:81:13:81:33 | struct literal [postupdate] | main.go:81:2:81:8 | SSA def(middlep) | -| main.go:82:2:82:7 | SSA def(outerp) | main.go:83:7:83:12 | outerp | -| main.go:82:12:82:33 | struct literal | main.go:82:2:82:7 | SSA def(outerp) | -| main.go:82:12:82:33 | struct literal [postupdate] | main.go:82:2:82:7 | SSA def(outerp) | +| main.go:80:2:80:26 | SSA def(innerp) | main.go:81:27:81:32 | innerp | +| main.go:80:12:80:26 | struct literal | main.go:80:2:80:26 | SSA def(innerp) | +| main.go:80:12:80:26 | struct literal [postupdate] | main.go:80:2:80:26 | SSA def(innerp) | +| main.go:81:2:81:33 | SSA def(middlep) | main.go:82:26:82:32 | middlep | +| main.go:81:13:81:33 | struct literal | main.go:81:2:81:33 | SSA def(middlep) | +| main.go:81:13:81:33 | struct literal [postupdate] | main.go:81:2:81:33 | SSA def(middlep) | +| main.go:82:2:82:33 | SSA def(outerp) | main.go:83:7:83:12 | outerp | +| main.go:82:12:82:33 | struct literal | main.go:82:2:82:33 | SSA def(outerp) | +| main.go:82:12:82:33 | struct literal [postupdate] | main.go:82:2:82:33 | SSA def(outerp) | | main.go:83:7:83:12 | outerp | main.go:84:7:84:12 | outerp | | main.go:84:7:84:12 | outerp | main.go:85:7:85:12 | outerp | | main.go:85:7:85:12 | outerp | main.go:86:7:86:12 | outerp | -| main.go:90:6:90:10 | SSA def(outer) | main.go:91:2:91:6 | outer | -| main.go:90:6:90:10 | zero value for outer | main.go:90:6:90:10 | SSA def(outer) | +| main.go:90:6:90:16 | SSA def(outer) | main.go:91:2:91:6 | outer | +| main.go:90:6:90:16 | zero-init:0 value declaration specifier | main.go:90:6:90:16 | SSA def(outer) | | main.go:91:2:91:6 | outer | main.go:92:7:92:11 | outer | | main.go:91:2:91:6 | outer [postupdate] | main.go:92:7:92:11 | outer | | main.go:92:7:92:11 | outer | main.go:93:7:93:11 | outer | | main.go:93:7:93:11 | outer | main.go:94:7:94:11 | outer | | main.go:94:7:94:11 | outer | main.go:95:7:95:11 | outer | -| main.go:97:6:97:11 | SSA def(outerp) | main.go:98:2:98:7 | outerp | -| main.go:97:6:97:11 | zero value for outerp | main.go:97:6:97:11 | SSA def(outerp) | +| main.go:97:6:97:17 | SSA def(outerp) | main.go:98:2:98:7 | outerp | +| main.go:97:6:97:17 | zero-init:0 value declaration specifier | main.go:97:6:97:17 | SSA def(outerp) | | main.go:98:2:98:7 | outerp | main.go:99:7:99:12 | outerp | | main.go:98:2:98:7 | outerp [postupdate] | main.go:99:7:99:12 | outerp | | main.go:99:7:99:12 | outerp | main.go:100:7:100:12 | outerp | | main.go:100:7:100:12 | outerp | main.go:101:7:101:12 | outerp | | main.go:101:7:101:12 | outerp | main.go:102:7:102:12 | outerp | -| main.go:106:6:106:10 | SSA def(outer) | main.go:107:2:107:6 | outer | -| main.go:106:6:106:10 | zero value for outer | main.go:106:6:106:10 | SSA def(outer) | +| main.go:106:6:106:16 | SSA def(outer) | main.go:107:2:107:6 | outer | +| main.go:106:6:106:16 | zero-init:0 value declaration specifier | main.go:106:6:106:16 | SSA def(outer) | | main.go:107:2:107:6 | outer | main.go:108:7:108:11 | outer | | main.go:107:2:107:6 | outer [postupdate] | main.go:108:7:108:11 | outer | | main.go:108:7:108:11 | outer | main.go:109:7:109:11 | outer | | main.go:109:7:109:11 | outer | main.go:110:7:110:11 | outer | | main.go:110:7:110:11 | outer | main.go:111:7:111:11 | outer | -| main.go:113:6:113:11 | SSA def(outerp) | main.go:114:2:114:7 | outerp | -| main.go:113:6:113:11 | zero value for outerp | main.go:113:6:113:11 | SSA def(outerp) | +| main.go:113:6:113:17 | SSA def(outerp) | main.go:114:2:114:7 | outerp | +| main.go:113:6:113:17 | zero-init:0 value declaration specifier | main.go:113:6:113:17 | SSA def(outerp) | | main.go:114:2:114:7 | outerp | main.go:115:7:115:12 | outerp | | main.go:114:2:114:7 | outerp [postupdate] | main.go:115:7:115:12 | outerp | | main.go:115:7:115:12 | outerp | main.go:116:7:116:12 | outerp | | main.go:116:7:116:12 | outerp | main.go:117:7:117:12 | outerp | | main.go:117:7:117:12 | outerp | main.go:118:7:118:12 | outerp | -| main.go:122:6:122:10 | SSA def(outer) | main.go:123:2:123:6 | outer | -| main.go:122:6:122:10 | zero value for outer | main.go:122:6:122:10 | SSA def(outer) | +| main.go:122:6:122:16 | SSA def(outer) | main.go:123:2:123:6 | outer | +| main.go:122:6:122:16 | zero-init:0 value declaration specifier | main.go:122:6:122:16 | SSA def(outer) | | main.go:123:2:123:6 | outer | main.go:124:7:124:11 | outer | | main.go:123:2:123:6 | outer [postupdate] | main.go:124:7:124:11 | outer | | main.go:124:7:124:11 | outer | main.go:125:7:125:11 | outer | | main.go:125:7:125:11 | outer | main.go:126:7:126:11 | outer | | main.go:126:7:126:11 | outer | main.go:127:7:127:11 | outer | -| main.go:129:6:129:11 | SSA def(outerp) | main.go:130:2:130:7 | outerp | -| main.go:129:6:129:11 | zero value for outerp | main.go:129:6:129:11 | SSA def(outerp) | +| main.go:129:6:129:17 | SSA def(outerp) | main.go:130:2:130:7 | outerp | +| main.go:129:6:129:17 | zero-init:0 value declaration specifier | main.go:129:6:129:17 | SSA def(outerp) | | main.go:130:2:130:7 | outerp | main.go:131:7:131:12 | outerp | | main.go:130:2:130:7 | outerp [postupdate] | main.go:131:7:131:12 | outerp | | main.go:131:7:131:12 | outerp | main.go:132:7:132:12 | outerp | | main.go:132:7:132:12 | outerp | main.go:133:7:133:12 | outerp | | main.go:133:7:133:12 | outerp | main.go:134:7:134:12 | outerp | -| main.go:138:6:138:10 | SSA def(outer) | main.go:139:2:139:6 | outer | -| main.go:138:6:138:10 | zero value for outer | main.go:138:6:138:10 | SSA def(outer) | +| main.go:138:6:138:16 | SSA def(outer) | main.go:139:2:139:6 | outer | +| main.go:138:6:138:16 | zero-init:0 value declaration specifier | main.go:138:6:138:16 | SSA def(outer) | | main.go:139:2:139:6 | outer | main.go:140:7:140:11 | outer | | main.go:139:2:139:6 | outer [postupdate] | main.go:140:7:140:11 | outer | | main.go:140:7:140:11 | outer | main.go:141:7:141:11 | outer | | main.go:141:7:141:11 | outer | main.go:142:7:142:11 | outer | | main.go:142:7:142:11 | outer | main.go:143:7:143:11 | outer | -| main.go:145:6:145:11 | SSA def(outerp) | main.go:146:2:146:7 | outerp | -| main.go:145:6:145:11 | zero value for outerp | main.go:145:6:145:11 | SSA def(outerp) | +| main.go:145:6:145:17 | SSA def(outerp) | main.go:146:2:146:7 | outerp | +| main.go:145:6:145:17 | zero-init:0 value declaration specifier | main.go:145:6:145:17 | SSA def(outerp) | | main.go:146:2:146:7 | outerp | main.go:147:7:147:12 | outerp | | main.go:146:2:146:7 | outerp [postupdate] | main.go:147:7:147:12 | outerp | | main.go:147:7:147:12 | outerp | main.go:148:7:148:12 | outerp | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsElement.expected b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsElement.expected index 640c0dec2676..df6a0b049b60 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsElement.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsElement.expected @@ -1,3 +1,3 @@ | tst.go:19:10:19:14 | index expression | tst.go:19:10:19:11 | xs | tst.go:19:13:19:13 | 1 | -| tst.go:20:10:20:14 | index expression | tst.go:20:10:20:11 | implicit dereference | tst.go:20:13:20:13 | 1 | +| tst.go:20:10:20:14 | index expression | tst.go:20:10:20:11 | implicit-deref ps | tst.go:20:13:20:13 | 1 | | tst.go:20:10:20:14 | index expression | tst.go:20:10:20:11 | ps | tst.go:20:13:20:13 | 1 | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsField.expected b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsField.expected index 683117030c76..3dbbdc221e8d 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsField.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsField.expected @@ -1,4 +1,4 @@ -| tst.go:8:8:8:10 | selection of f | tst.go:8:8:8:8 | implicit dereference | tst.go:4:2:4:2 | f | +| tst.go:8:8:8:10 | selection of f | tst.go:8:8:8:8 | implicit-deref t | tst.go:4:2:4:2 | f | | tst.go:8:8:8:10 | selection of f | tst.go:8:8:8:8 | t | tst.go:4:2:4:2 | f | | tst.go:13:9:13:11 | selection of f | tst.go:13:9:13:9 | t | tst.go:4:2:4:2 | f | | tst.go:17:8:17:10 | selection of f | tst.go:17:8:17:8 | x | tst.go:4:2:4:2 | f | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsMethod.expected b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsMethod.expected index 1909e3257452..0a948af2cd23 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsMethod.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/readsMethod.expected @@ -1,3 +1,3 @@ -| tst.go:9:9:9:13 | selection of get | tst.go:9:9:9:9 | implicit dereference | tst.go:12:12:12:14 | get | +| tst.go:9:9:9:13 | selection of get | tst.go:9:9:9:9 | implicit-deref t | tst.go:12:12:12:14 | get | | tst.go:9:9:9:13 | selection of get | tst.go:9:9:9:9 | t | tst.go:12:12:12:14 | get | | tst.go:18:2:18:7 | selection of bump | tst.go:18:2:18:2 | x | tst.go:7:13:7:16 | bump | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesElement.expected b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesElement.expected index 44792aa3d299..23cfd9b6acab 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesElement.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesElement.expected @@ -1,3 +1,3 @@ -| tst.go:19:2:19:6 | assignment to element | tst.go:19:2:19:3 | xs [postupdate] | tst.go:19:5:19:5 | 0 | tst.go:19:10:19:14 | index expression | -| tst.go:20:2:20:6 | assignment to element | tst.go:20:2:20:3 | implicit dereference [postupdate] | tst.go:20:5:20:5 | 0 | tst.go:20:10:20:14 | index expression | -| tst.go:20:2:20:6 | assignment to element | tst.go:20:2:20:3 | ps [postupdate] | tst.go:20:5:20:5 | 0 | tst.go:20:10:20:14 | index expression | +| tst.go:19:2:19:14 | assign:0 ... = ... | tst.go:19:2:19:3 | xs [postupdate] | tst.go:19:5:19:5 | 0 | tst.go:19:10:19:14 | index expression | +| tst.go:20:2:20:14 | assign:0 ... = ... | tst.go:20:2:20:3 | implicit-deref ps [postupdate] | tst.go:20:5:20:5 | 0 | tst.go:20:10:20:14 | index expression | +| tst.go:20:2:20:14 | assign:0 ... = ... | tst.go:20:2:20:3 | ps [postupdate] | tst.go:20:5:20:5 | 0 | tst.go:20:10:20:14 | index expression | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesField.expected b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesField.expected index 7862b2d61b3d..414a82acfc95 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesField.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ReadsAndWrites/writesField.expected @@ -1,3 +1,3 @@ -| tst.go:8:2:8:4 | assignment to field f | tst.go:8:2:8:2 | implicit dereference [postupdate] | tst.go:4:2:4:2 | f | tst.go:8:8:8:14 | ...+... | -| tst.go:8:2:8:4 | assignment to field f | tst.go:8:2:8:2 | t [postupdate] | tst.go:4:2:4:2 | f | tst.go:8:8:8:14 | ...+... | -| tst.go:17:2:17:4 | assignment to field f | tst.go:17:2:17:2 | x [postupdate] | tst.go:4:2:4:2 | f | tst.go:17:8:17:14 | ...+... | +| tst.go:8:2:8:14 | assign:0 ... = ... | tst.go:8:2:8:2 | implicit-deref t [postupdate] | tst.go:4:2:4:2 | f | tst.go:8:8:8:14 | ...+... | +| tst.go:8:2:8:14 | assign:0 ... = ... | tst.go:8:2:8:2 | t [postupdate] | tst.go:4:2:4:2 | f | tst.go:8:8:8:14 | ...+... | +| tst.go:17:2:17:14 | assign:0 ... = ... | tst.go:17:2:17:2 | x [postupdate] | tst.go:4:2:4:2 | f | tst.go:17:8:17:14 | ...+... | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/SSA/DefUse.expected b/go/ql/test/library-tests/semmle/go/dataflow/SSA/DefUse.expected index 775eff4a49e5..17be1f70f90c 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/SSA/DefUse.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/SSA/DefUse.expected @@ -1,42 +1,42 @@ -| main.go:15:12:15:12 | x | main.go:13:6:13:6 | SSA def(x) | main.go:13:6:13:6 | x | -| main.go:15:15:15:15 | y | main.go:14:2:14:2 | SSA def(y) | main.go:14:2:14:2 | y | -| main.go:17:3:17:3 | y | main.go:14:2:14:2 | SSA def(y) | main.go:14:2:14:2 | y | -| main.go:19:12:19:12 | x | main.go:13:6:13:6 | SSA def(x) | main.go:13:6:13:6 | x | -| main.go:19:15:19:15 | y | main.go:19:2:19:10 | SSA phi(y) | main.go:14:2:14:2 | y | -| main.go:21:7:21:7 | y | main.go:19:2:19:10 | SSA phi(y) | main.go:14:2:14:2 | y | -| main.go:23:12:23:12 | x | main.go:23:2:23:10 | SSA phi(x) | main.go:13:6:13:6 | x | -| main.go:23:15:23:15 | y | main.go:19:2:19:10 | SSA phi(y) | main.go:14:2:14:2 | y | +| main.go:15:12:15:12 | x | main.go:13:6:13:10 | SSA def(x) | main.go:13:6:13:6 | x | +| main.go:15:15:15:15 | y | main.go:14:2:14:8 | SSA def(y) | main.go:14:2:14:2 | y | +| main.go:17:3:17:3 | y | main.go:14:2:14:8 | SSA def(y) | main.go:14:2:14:2 | y | +| main.go:19:12:19:12 | x | main.go:13:6:13:10 | SSA def(x) | main.go:13:6:13:6 | x | +| main.go:19:15:19:15 | y | main.go:16:2:18:2 | SSA phi(y) | main.go:14:2:14:2 | y | +| main.go:21:7:21:7 | y | main.go:16:2:18:2 | SSA phi(y) | main.go:14:2:14:2 | y | +| main.go:23:12:23:12 | x | main.go:20:2:22:2 | SSA phi(x) | main.go:13:6:13:6 | x | +| main.go:23:15:23:15 | y | main.go:16:2:18:2 | SSA phi(y) | main.go:14:2:14:2 | y | | main.go:27:10:27:10 | x | main.go:26:10:26:10 | SSA def(x) | main.go:26:10:26:10 | x | -| main.go:29:10:29:10 | b | main.go:27:5:27:5 | SSA def(b) | main.go:27:5:27:5 | b | -| main.go:29:13:29:13 | a | main.go:27:2:27:2 | SSA def(a) | main.go:27:2:27:2 | a | -| main.go:31:9:31:9 | a | main.go:31:9:31:9 | SSA phi(a) | main.go:27:2:27:2 | a | -| main.go:31:12:31:12 | b | main.go:31:9:31:9 | SSA phi(b) | main.go:27:5:27:5 | b | +| main.go:29:10:29:10 | b | main.go:27:2:27:13 | SSA def(b) | main.go:27:5:27:5 | b | +| main.go:29:13:29:13 | a | main.go:27:2:27:13 | SSA def(a) | main.go:27:2:27:2 | a | +| main.go:31:9:31:9 | a | main.go:28:2:30:2 | SSA phi(a) | main.go:27:2:27:2 | a | +| main.go:31:12:31:12 | b | main.go:28:2:30:2 | SSA phi(b) | main.go:27:5:27:5 | b | | main.go:35:3:35:3 | x | main.go:34:11:34:11 | SSA def(x) | main.go:34:11:34:11 | x | -| main.go:40:10:40:10 | x | main.go:39:2:39:2 | SSA def(x) | main.go:39:2:39:2 | x | -| main.go:42:8:42:10 | ptr | main.go:40:2:40:4 | SSA def(ptr) | main.go:40:2:40:4 | ptr | -| main.go:44:12:44:12 | x | main.go:39:2:39:2 | SSA def(x) | main.go:39:2:39:2 | x | -| main.go:47:13:47:18 | implicit read of result | main.go:48:2:48:7 | SSA def(result) | main.go:47:13:47:18 | result | -| main.go:52:14:52:19 | implicit read of result | main.go:52:14:52:19 | SSA def(result) | main.go:52:14:52:19 | result | -| main.go:61:12:61:12 | x | main.go:58:6:58:9 | SSA phi(x) | main.go:57:6:57:6 | x | -| main.go:64:16:64:16 | i | main.go:65:6:65:9 | SSA phi(i) | main.go:64:6:64:6 | i | -| main.go:70:12:70:12 | y | main.go:65:6:65:9 | SSA phi(y) | main.go:63:2:63:2 | y | -| main.go:73:16:73:16 | i | main.go:74:3:74:3 | SSA phi(i) | main.go:73:6:73:6 | i | -| main.go:79:12:79:12 | z | main.go:74:3:74:3 | SSA def(z) | main.go:72:2:72:2 | z | -| main.go:82:18:82:18 | implicit read of a | main.go:84:5:84:5 | SSA def(a) | main.go:82:18:82:18 | a | -| main.go:82:25:82:25 | implicit read of b | main.go:82:25:82:25 | SSA def(b) | main.go:82:25:82:25 | b | -| main.go:84:9:84:9 | x | main.go:83:2:83:2 | SSA def(x) | main.go:83:2:83:2 | x | -| main.go:84:15:84:15 | x | main.go:83:2:83:2 | SSA def(x) | main.go:83:2:83:2 | x | +| main.go:40:10:40:10 | x | main.go:39:2:39:8 | SSA def(x) | main.go:39:2:39:2 | x | +| main.go:42:8:42:10 | ptr | main.go:40:2:40:10 | SSA def(ptr) | main.go:40:2:40:4 | ptr | +| main.go:44:12:44:12 | x | main.go:39:2:39:8 | SSA def(x) | main.go:39:2:39:2 | x | +| main.go:47:25:50:1 | result-read:0 block statement | main.go:48:2:48:12 | SSA def(result) | main.go:47:13:47:18 | result | +| main.go:52:26:54:1 | result-read:0 block statement | main.go:52:26:54:1 | SSA def(result) | main.go:52:14:52:19 | result | +| main.go:61:12:61:12 | x | main.go:58:6:58:11 | SSA phi(x) | main.go:57:6:57:6 | x | +| main.go:64:16:64:16 | i | main.go:64:20:69:2 | SSA phi(i) | main.go:64:6:64:6 | i | +| main.go:70:12:70:12 | y | main.go:64:20:69:2 | SSA phi(y) | main.go:63:2:63:2 | y | +| main.go:73:16:73:16 | i | main.go:73:20:78:2 | SSA phi(i) | main.go:73:6:73:6 | i | +| main.go:79:12:79:12 | z | main.go:74:3:74:7 | SSA def(z) | main.go:72:2:72:2 | z | +| main.go:82:36:86:1 | result-read:0 block statement | main.go:84:2:84:15 | SSA def(a) | main.go:82:18:82:18 | a | +| main.go:82:36:86:1 | result-read:1 block statement | main.go:82:36:86:1 | SSA def(b) | main.go:82:25:82:25 | b | +| main.go:84:9:84:9 | x | main.go:83:2:83:8 | SSA def(x) | main.go:83:2:83:2 | x | +| main.go:84:15:84:15 | x | main.go:83:2:83:8 | SSA def(x) | main.go:83:2:83:2 | x | | main.go:97:2:97:8 | wrapper | main.go:95:22:95:28 | SSA def(wrapper) | main.go:95:22:95:28 | wrapper | | main.go:100:9:100:9 | x | main.go:97:2:99:3 | SSA def(x) | main.go:96:2:96:2 | x | | main.go:105:2:105:8 | wrapper | main.go:103:20:103:26 | SSA def(wrapper) | main.go:103:20:103:26 | wrapper | | main.go:106:8:106:8 | x | main.go:105:16:108:2 | SSA def(x) | main.go:104:2:104:2 | x | -| main.go:107:7:107:7 | y | main.go:106:3:106:3 | SSA def(y) | main.go:106:3:106:3 | y | -| main.go:109:9:109:9 | x | main.go:104:2:104:2 | SSA def(x) | main.go:104:2:104:2 | x | +| main.go:107:7:107:7 | y | main.go:106:3:106:8 | SSA def(y) | main.go:106:3:106:3 | y | +| main.go:109:9:109:9 | x | main.go:104:2:104:7 | SSA def(x) | main.go:104:2:104:2 | x | | main.go:114:2:114:8 | wrapper | main.go:112:29:112:35 | SSA def(wrapper) | main.go:112:29:112:35 | wrapper | | main.go:115:8:115:8 | x | main.go:114:16:117:2 | SSA def(x) | main.go:113:2:113:2 | x | -| main.go:116:7:116:7 | y | main.go:115:3:115:3 | SSA def(y) | main.go:115:3:115:3 | y | +| main.go:116:7:116:7 | y | main.go:115:3:115:12 | SSA def(y) | main.go:115:3:115:3 | y | | main.go:118:9:118:9 | x | main.go:114:2:117:3 | SSA def(x) | main.go:113:2:113:2 | x | -| main.go:135:2:135:2 | p | main.go:135:2:135:2 | SSA phi(p) | main.go:128:6:128:6 | p | -| main.go:137:12:137:12 | p | main.go:135:2:135:2 | SSA phi(p) | main.go:128:6:128:6 | p | -| main.go:137:17:137:17 | p | main.go:135:2:135:2 | SSA phi(p) | main.go:128:6:128:6 | p | -| main.go:137:24:137:24 | p | main.go:135:2:135:2 | SSA phi(p) | main.go:128:6:128:6 | p | +| main.go:135:2:135:2 | p | main.go:129:2:133:2 | SSA phi(p) | main.go:128:6:128:6 | p | +| main.go:137:12:137:12 | p | main.go:129:2:133:2 | SSA phi(p) | main.go:128:6:128:6 | p | +| main.go:137:17:137:17 | p | main.go:129:2:133:2 | SSA phi(p) | main.go:128:6:128:6 | p | +| main.go:137:24:137:24 | p | main.go:129:2:133:2 | SSA phi(p) | main.go:128:6:128:6 | p | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaDefinition.expected b/go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaDefinition.expected index 3ff2faf872c4..0345f6c5b70a 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaDefinition.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaDefinition.expected @@ -1,51 +1,51 @@ -| main.go:13:6:13:6 | SSA def(x) | -| main.go:14:2:14:2 | SSA def(y) | -| main.go:17:3:17:3 | SSA def(y) | -| main.go:19:2:19:10 | SSA phi(y) | -| main.go:21:3:21:3 | SSA def(x) | -| main.go:23:2:23:10 | SSA phi(x) | +| main.go:13:6:13:10 | SSA def(x) | +| main.go:14:2:14:8 | SSA def(y) | +| main.go:16:2:18:2 | SSA phi(y) | +| main.go:17:3:17:9 | SSA def(y) | +| main.go:20:2:22:2 | SSA phi(x) | +| main.go:21:3:21:7 | SSA def(x) | | main.go:26:10:26:10 | SSA def(x) | -| main.go:27:2:27:2 | SSA def(a) | -| main.go:27:5:27:5 | SSA def(b) | -| main.go:29:3:29:3 | SSA def(a) | -| main.go:29:6:29:6 | SSA def(b) | -| main.go:31:9:31:9 | SSA phi(a) | -| main.go:31:9:31:9 | SSA phi(b) | +| main.go:27:2:27:13 | SSA def(a) | +| main.go:27:2:27:13 | SSA def(b) | +| main.go:28:2:30:2 | SSA phi(a) | +| main.go:28:2:30:2 | SSA phi(b) | +| main.go:29:3:29:13 | SSA def(a) | +| main.go:29:3:29:13 | SSA def(b) | | main.go:34:11:34:11 | SSA def(x) | -| main.go:39:2:39:2 | SSA def(x) | -| main.go:40:2:40:4 | SSA def(ptr) | -| main.go:48:2:48:7 | SSA def(result) | -| main.go:52:14:52:19 | SSA def(result) | -| main.go:57:6:57:6 | SSA def(x) | -| main.go:58:6:58:9 | SSA phi(x) | -| main.go:59:3:59:3 | SSA def(x) | -| main.go:63:2:63:2 | SSA def(y) | -| main.go:64:6:64:6 | SSA def(i) | +| main.go:39:2:39:8 | SSA def(x) | +| main.go:40:2:40:10 | SSA def(ptr) | +| main.go:48:2:48:12 | SSA def(result) | +| main.go:52:26:54:1 | SSA def(result) | +| main.go:57:6:57:10 | SSA def(x) | +| main.go:58:6:58:11 | SSA phi(x) | +| main.go:59:3:59:7 | SSA def(x) | +| main.go:63:2:63:7 | SSA def(y) | +| main.go:64:6:64:11 | SSA def(i) | | main.go:64:16:64:18 | SSA def(i) | -| main.go:65:6:65:9 | SSA phi(i) | -| main.go:65:6:65:9 | SSA phi(y) | -| main.go:68:3:68:3 | SSA def(y) | -| main.go:73:6:73:6 | SSA def(i) | +| main.go:64:20:69:2 | SSA phi(i) | +| main.go:64:20:69:2 | SSA phi(y) | +| main.go:68:3:68:7 | SSA def(y) | +| main.go:73:6:73:11 | SSA def(i) | | main.go:73:16:73:18 | SSA def(i) | -| main.go:74:3:74:3 | SSA def(z) | -| main.go:74:3:74:3 | SSA phi(i) | -| main.go:82:25:82:25 | SSA def(b) | -| main.go:83:2:83:2 | SSA def(x) | -| main.go:84:5:84:5 | SSA def(a) | +| main.go:73:20:78:2 | SSA phi(i) | +| main.go:74:3:74:7 | SSA def(z) | +| main.go:82:36:86:1 | SSA def(b) | +| main.go:83:2:83:8 | SSA def(x) | +| main.go:84:2:84:15 | SSA def(a) | | main.go:95:22:95:28 | SSA def(wrapper) | -| main.go:96:2:96:2 | SSA def(x) | +| main.go:96:2:96:7 | SSA def(x) | | main.go:97:2:99:3 | SSA def(x) | -| main.go:98:3:98:3 | SSA def(x) | +| main.go:98:3:98:7 | SSA def(x) | | main.go:103:20:103:26 | SSA def(wrapper) | -| main.go:104:2:104:2 | SSA def(x) | +| main.go:104:2:104:7 | SSA def(x) | | main.go:105:16:108:2 | SSA def(x) | -| main.go:106:3:106:3 | SSA def(y) | +| main.go:106:3:106:8 | SSA def(y) | | main.go:112:29:112:35 | SSA def(wrapper) | -| main.go:113:2:113:2 | SSA def(x) | +| main.go:113:2:113:7 | SSA def(x) | | main.go:114:2:117:3 | SSA def(x) | | main.go:114:16:117:2 | SSA def(x) | -| main.go:115:3:115:3 | SSA def(y) | -| main.go:116:3:116:3 | SSA def(x) | -| main.go:130:3:130:3 | SSA def(p) | -| main.go:132:3:132:3 | SSA def(p) | -| main.go:135:2:135:2 | SSA phi(p) | +| main.go:115:3:115:12 | SSA def(y) | +| main.go:116:3:116:7 | SSA def(x) | +| main.go:129:2:133:2 | SSA phi(p) | +| main.go:130:3:130:24 | SSA def(p) | +| main.go:132:3:132:24 | SSA def(p) | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaWithFields.expected b/go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaWithFields.expected index 2c43f05257aa..f00640593538 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaWithFields.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/SSA/SsaWithFields.expected @@ -1,58 +1,58 @@ -| main.go:13:6:13:6 | (SSA def(x)) | x | -| main.go:14:2:14:2 | (SSA def(y)) | y | -| main.go:17:3:17:3 | (SSA def(y)) | y | -| main.go:19:2:19:10 | (SSA phi(y)) | y | -| main.go:21:3:21:3 | (SSA def(x)) | x | -| main.go:23:2:23:10 | (SSA phi(x)) | x | +| main.go:13:6:13:10 | (SSA def(x)) | x | +| main.go:14:2:14:8 | (SSA def(y)) | y | +| main.go:16:2:18:2 | (SSA phi(y)) | y | +| main.go:17:3:17:9 | (SSA def(y)) | y | +| main.go:20:2:22:2 | (SSA phi(x)) | x | +| main.go:21:3:21:7 | (SSA def(x)) | x | | main.go:26:10:26:10 | (SSA def(x)) | x | -| main.go:27:2:27:2 | (SSA def(a)) | a | -| main.go:27:5:27:5 | (SSA def(b)) | b | -| main.go:29:3:29:3 | (SSA def(a)) | a | -| main.go:29:6:29:6 | (SSA def(b)) | b | -| main.go:31:9:31:9 | (SSA phi(a)) | a | -| main.go:31:9:31:9 | (SSA phi(b)) | b | +| main.go:27:2:27:13 | (SSA def(a)) | a | +| main.go:27:2:27:13 | (SSA def(b)) | b | +| main.go:28:2:30:2 | (SSA phi(a)) | a | +| main.go:28:2:30:2 | (SSA phi(b)) | b | +| main.go:29:3:29:13 | (SSA def(a)) | a | +| main.go:29:3:29:13 | (SSA def(b)) | b | | main.go:34:11:34:11 | (SSA def(x)) | x | -| main.go:39:2:39:2 | (SSA def(x)) | x | -| main.go:40:2:40:4 | (SSA def(ptr)) | ptr | -| main.go:48:2:48:7 | (SSA def(result)) | result | -| main.go:52:14:52:19 | (SSA def(result)) | result | -| main.go:57:6:57:6 | (SSA def(x)) | x | -| main.go:58:6:58:9 | (SSA phi(x)) | x | -| main.go:59:3:59:3 | (SSA def(x)) | x | -| main.go:63:2:63:2 | (SSA def(y)) | y | -| main.go:64:6:64:6 | (SSA def(i)) | i | +| main.go:39:2:39:8 | (SSA def(x)) | x | +| main.go:40:2:40:10 | (SSA def(ptr)) | ptr | +| main.go:48:2:48:12 | (SSA def(result)) | result | +| main.go:52:26:54:1 | (SSA def(result)) | result | +| main.go:57:6:57:10 | (SSA def(x)) | x | +| main.go:58:6:58:11 | (SSA phi(x)) | x | +| main.go:59:3:59:7 | (SSA def(x)) | x | +| main.go:63:2:63:7 | (SSA def(y)) | y | +| main.go:64:6:64:11 | (SSA def(i)) | i | | main.go:64:16:64:18 | (SSA def(i)) | i | -| main.go:65:6:65:9 | (SSA phi(i)) | i | -| main.go:65:6:65:9 | (SSA phi(y)) | y | -| main.go:68:3:68:3 | (SSA def(y)) | y | -| main.go:73:6:73:6 | (SSA def(i)) | i | +| main.go:64:20:69:2 | (SSA phi(i)) | i | +| main.go:64:20:69:2 | (SSA phi(y)) | y | +| main.go:68:3:68:7 | (SSA def(y)) | y | +| main.go:73:6:73:11 | (SSA def(i)) | i | | main.go:73:16:73:18 | (SSA def(i)) | i | -| main.go:74:3:74:3 | (SSA def(z)) | z | -| main.go:74:3:74:3 | (SSA phi(i)) | i | -| main.go:82:25:82:25 | (SSA def(b)) | b | -| main.go:83:2:83:2 | (SSA def(x)) | x | -| main.go:84:5:84:5 | (SSA def(a)) | a | +| main.go:73:20:78:2 | (SSA phi(i)) | i | +| main.go:74:3:74:7 | (SSA def(z)) | z | +| main.go:82:36:86:1 | (SSA def(b)) | b | +| main.go:83:2:83:8 | (SSA def(x)) | x | +| main.go:84:2:84:15 | (SSA def(a)) | a | | main.go:95:22:95:28 | (SSA def(wrapper)) | wrapper | | main.go:95:22:95:28 | (SSA def(wrapper)).s | wrapper.s | -| main.go:96:2:96:2 | (SSA def(x)) | x | +| main.go:96:2:96:7 | (SSA def(x)) | x | | main.go:97:2:99:3 | (SSA def(x)) | x | -| main.go:98:3:98:3 | (SSA def(x)) | x | +| main.go:98:3:98:7 | (SSA def(x)) | x | | main.go:103:20:103:26 | (SSA def(wrapper)) | wrapper | | main.go:103:20:103:26 | (SSA def(wrapper)).s | wrapper.s | -| main.go:104:2:104:2 | (SSA def(x)) | x | +| main.go:104:2:104:7 | (SSA def(x)) | x | | main.go:105:16:108:2 | (SSA def(x)) | x | -| main.go:106:3:106:3 | (SSA def(y)) | y | +| main.go:106:3:106:8 | (SSA def(y)) | y | | main.go:112:29:112:35 | (SSA def(wrapper)) | wrapper | | main.go:112:29:112:35 | (SSA def(wrapper)).s | wrapper.s | -| main.go:113:2:113:2 | (SSA def(x)) | x | +| main.go:113:2:113:7 | (SSA def(x)) | x | | main.go:114:2:117:3 | (SSA def(x)) | x | | main.go:114:16:117:2 | (SSA def(x)) | x | -| main.go:115:3:115:3 | (SSA def(y)) | y | -| main.go:116:3:116:3 | (SSA def(x)) | x | -| main.go:130:3:130:3 | (SSA def(p)) | p | -| main.go:132:3:132:3 | (SSA def(p)) | p | -| main.go:135:2:135:2 | (SSA phi(p)) | p | -| main.go:135:2:135:2 | (SSA phi(p)).a | p.a | -| main.go:135:2:135:2 | (SSA phi(p)).b | p.b | -| main.go:135:2:135:2 | (SSA phi(p)).b.a | p.b.a | -| main.go:135:2:135:2 | (SSA phi(p)).c | p.c | +| main.go:115:3:115:12 | (SSA def(y)) | y | +| main.go:116:3:116:7 | (SSA def(x)) | x | +| main.go:129:2:133:2 | (SSA phi(p)) | p | +| main.go:129:2:133:2 | (SSA phi(p)).a | p.a | +| main.go:129:2:133:2 | (SSA phi(p)).b | p.b | +| main.go:129:2:133:2 | (SSA phi(p)).b.a | p.b.a | +| main.go:129:2:133:2 | (SSA phi(p)).c | p.c | +| main.go:130:3:130:24 | (SSA def(p)) | p | +| main.go:132:3:132:24 | (SSA def(p)) | p | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/SSA/VarDefs.expected b/go/ql/test/library-tests/semmle/go/dataflow/SSA/VarDefs.expected index 6149ddfbb54a..01085718157d 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/SSA/VarDefs.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/SSA/VarDefs.expected @@ -1,54 +1,54 @@ -| main.go:13:6:13:6 | assignment to x | main.go:13:6:13:6 | x | main.go:13:6:13:6 | zero value for x | -| main.go:14:2:14:2 | assignment to y | main.go:14:2:14:2 | y | main.go:14:7:14:8 | 23 | -| main.go:17:3:17:3 | assignment to y | main.go:14:2:14:2 | y | main.go:17:3:17:9 | ... += ... | -| main.go:21:3:21:3 | assignment to x | main.go:13:6:13:6 | x | main.go:21:7:21:7 | y | -| main.go:26:10:26:10 | initialization of x | main.go:26:10:26:10 | x | main.go:26:10:26:10 | argument corresponding to x | -| main.go:27:2:27:2 | assignment to a | main.go:27:2:27:2 | a | main.go:27:10:27:10 | x | -| main.go:27:5:27:5 | assignment to b | main.go:27:5:27:5 | b | main.go:27:13:27:13 | 0 | -| main.go:29:3:29:3 | assignment to a | main.go:27:2:27:2 | a | main.go:29:10:29:10 | b | -| main.go:29:6:29:6 | assignment to b | main.go:27:5:27:5 | b | main.go:29:13:29:13 | a | -| main.go:34:11:34:11 | initialization of x | main.go:34:11:34:11 | x | main.go:34:11:34:11 | argument corresponding to x | -| main.go:39:2:39:2 | assignment to x | main.go:39:2:39:2 | x | main.go:39:7:39:8 | 23 | -| main.go:40:2:40:4 | assignment to ptr | main.go:40:2:40:4 | ptr | main.go:40:9:40:10 | &... | -| main.go:47:13:47:18 | initialization of result | main.go:47:13:47:18 | result | main.go:47:13:47:18 | zero value for result | -| main.go:48:2:48:7 | assignment to result | main.go:47:13:47:18 | result | main.go:48:11:48:12 | 42 | -| main.go:52:14:52:19 | initialization of result | main.go:52:14:52:19 | result | main.go:52:14:52:19 | zero value for result | -| main.go:57:6:57:6 | assignment to x | main.go:57:6:57:6 | x | main.go:57:6:57:6 | zero value for x | -| main.go:59:3:59:3 | assignment to x | main.go:57:6:57:6 | x | main.go:59:7:59:7 | 2 | -| main.go:63:2:63:2 | assignment to y | main.go:63:2:63:2 | y | main.go:63:7:63:7 | 1 | -| main.go:64:6:64:6 | assignment to i | main.go:64:6:64:6 | i | main.go:64:11:64:11 | 0 | -| main.go:64:16:64:18 | increment statement | main.go:64:6:64:6 | i | main.go:64:16:64:18 | rhs of increment statement | -| main.go:68:3:68:3 | assignment to y | main.go:63:2:63:2 | y | main.go:68:7:68:7 | 2 | -| main.go:72:2:72:2 | assignment to z | main.go:72:2:72:2 | z | main.go:72:7:72:7 | 1 | -| main.go:73:6:73:6 | assignment to i | main.go:73:6:73:6 | i | main.go:73:11:73:11 | 0 | -| main.go:73:16:73:18 | increment statement | main.go:73:6:73:6 | i | main.go:73:16:73:18 | rhs of increment statement | -| main.go:74:3:74:3 | assignment to z | main.go:72:2:72:2 | z | main.go:74:7:74:7 | 2 | -| main.go:82:18:82:18 | initialization of a | main.go:82:18:82:18 | a | main.go:82:18:82:18 | zero value for a | -| main.go:82:25:82:25 | initialization of b | main.go:82:25:82:25 | b | main.go:82:25:82:25 | zero value for b | -| main.go:83:2:83:2 | assignment to x | main.go:83:2:83:2 | x | main.go:83:7:83:8 | 23 | -| main.go:84:2:84:2 | assignment to x | main.go:83:2:83:2 | x | main.go:84:9:84:12 | ...+... | -| main.go:84:5:84:5 | assignment to a | main.go:82:18:82:18 | a | main.go:84:15:84:15 | x | -| main.go:93:15:93:16 | initialization of cb | main.go:93:15:93:16 | cb | main.go:93:15:93:16 | argument corresponding to cb | -| main.go:95:22:95:28 | initialization of wrapper | main.go:95:22:95:28 | wrapper | main.go:95:22:95:28 | argument corresponding to wrapper | -| main.go:96:2:96:2 | assignment to x | main.go:96:2:96:2 | x | main.go:96:7:96:7 | 0 | -| main.go:98:3:98:3 | assignment to x | main.go:96:2:96:2 | x | main.go:98:7:98:7 | 1 | -| main.go:103:20:103:26 | initialization of wrapper | main.go:103:20:103:26 | wrapper | main.go:103:20:103:26 | argument corresponding to wrapper | -| main.go:104:2:104:2 | assignment to x | main.go:104:2:104:2 | x | main.go:104:7:104:7 | 0 | -| main.go:106:3:106:3 | assignment to y | main.go:106:3:106:3 | y | main.go:106:8:106:8 | x | -| main.go:112:29:112:35 | initialization of wrapper | main.go:112:29:112:35 | wrapper | main.go:112:29:112:35 | argument corresponding to wrapper | -| main.go:113:2:113:2 | assignment to x | main.go:113:2:113:2 | x | main.go:113:7:113:7 | 0 | -| main.go:115:3:115:3 | assignment to y | main.go:115:3:115:3 | y | main.go:115:8:115:12 | ...+... | -| main.go:116:3:116:3 | assignment to x | main.go:113:2:113:2 | x | main.go:116:7:116:7 | y | -| main.go:128:6:128:6 | assignment to p | main.go:128:6:128:6 | p | main.go:128:6:128:6 | zero value for p | -| main.go:130:3:130:3 | assignment to p | main.go:128:6:128:6 | p | main.go:130:7:130:24 | struct literal | -| main.go:130:9:130:9 | init of 2 | main.go:122:2:122:2 | a | main.go:130:9:130:9 | 2 | -| main.go:130:12:130:18 | init of struct literal | main.go:123:2:123:2 | b | main.go:130:12:130:18 | struct literal | -| main.go:130:14:130:14 | init of 1 | main.go:89:2:89:2 | a | main.go:130:14:130:14 | 1 | -| main.go:130:17:130:17 | init of 5 | main.go:90:2:90:2 | b | main.go:130:17:130:17 | 5 | -| main.go:130:21:130:23 | init of 'n' | main.go:124:2:124:2 | c | main.go:130:21:130:23 | 'n' | -| main.go:132:3:132:3 | assignment to p | main.go:128:6:128:6 | p | main.go:132:7:132:24 | struct literal | -| main.go:132:9:132:9 | init of 3 | main.go:122:2:122:2 | a | main.go:132:9:132:9 | 3 | -| main.go:132:12:132:18 | init of struct literal | main.go:123:2:123:2 | b | main.go:132:12:132:18 | struct literal | -| main.go:132:14:132:14 | init of 4 | main.go:89:2:89:2 | a | main.go:132:14:132:14 | 4 | -| main.go:132:17:132:17 | init of 5 | main.go:90:2:90:2 | b | main.go:132:17:132:17 | 5 | -| main.go:132:21:132:23 | init of '2' | main.go:124:2:124:2 | c | main.go:132:21:132:23 | '2' | +| main.go:13:6:13:10 | zero-init:0 value declaration specifier | main.go:13:6:13:6 | x | main.go:13:6:13:10 | zero-init:0 value declaration specifier | +| main.go:14:2:14:8 | assign:0 ... := ... | main.go:14:2:14:2 | y | main.go:14:7:14:8 | 23 | +| main.go:17:3:17:9 | ... += ... | main.go:14:2:14:2 | y | main.go:17:3:17:9 | ... += ... | +| main.go:21:3:21:7 | assign:0 ... = ... | main.go:13:6:13:6 | x | main.go:21:7:21:7 | y | +| main.go:26:10:26:10 | x | main.go:26:10:26:10 | x | main.go:26:10:26:10 | x | +| main.go:27:2:27:13 | assign:0 ... := ... | main.go:27:2:27:2 | a | main.go:27:10:27:10 | x | +| main.go:27:2:27:13 | assign:1 ... := ... | main.go:27:5:27:5 | b | main.go:27:13:27:13 | 0 | +| main.go:29:3:29:13 | assign:0 ... = ... | main.go:27:2:27:2 | a | main.go:29:10:29:10 | b | +| main.go:29:3:29:13 | assign:1 ... = ... | main.go:27:5:27:5 | b | main.go:29:13:29:13 | a | +| main.go:34:11:34:11 | x | main.go:34:11:34:11 | x | main.go:34:11:34:11 | x | +| main.go:39:2:39:8 | assign:0 ... := ... | main.go:39:2:39:2 | x | main.go:39:7:39:8 | 23 | +| main.go:40:2:40:10 | assign:0 ... := ... | main.go:40:2:40:4 | ptr | main.go:40:9:40:10 | &... | +| main.go:47:25:50:1 | zero-init:0 block statement | main.go:47:13:47:18 | result | main.go:47:25:50:1 | zero-init:0 block statement | +| main.go:48:2:48:12 | assign:0 ... = ... | main.go:47:13:47:18 | result | main.go:48:11:48:12 | 42 | +| main.go:52:26:54:1 | zero-init:0 block statement | main.go:52:14:52:19 | result | main.go:52:26:54:1 | zero-init:0 block statement | +| main.go:57:6:57:10 | zero-init:0 value declaration specifier | main.go:57:6:57:6 | x | main.go:57:6:57:10 | zero-init:0 value declaration specifier | +| main.go:59:3:59:7 | assign:0 ... = ... | main.go:57:6:57:6 | x | main.go:59:7:59:7 | 2 | +| main.go:63:2:63:7 | assign:0 ... := ... | main.go:63:2:63:2 | y | main.go:63:7:63:7 | 1 | +| main.go:64:6:64:11 | assign:0 ... := ... | main.go:64:6:64:6 | i | main.go:64:11:64:11 | 0 | +| main.go:64:16:64:18 | increment statement | main.go:64:6:64:6 | i | main.go:64:16:64:18 | increment statement | +| main.go:68:3:68:7 | assign:0 ... = ... | main.go:63:2:63:2 | y | main.go:68:7:68:7 | 2 | +| main.go:72:2:72:7 | assign:0 ... := ... | main.go:72:2:72:2 | z | main.go:72:7:72:7 | 1 | +| main.go:73:6:73:11 | assign:0 ... := ... | main.go:73:6:73:6 | i | main.go:73:11:73:11 | 0 | +| main.go:73:16:73:18 | increment statement | main.go:73:6:73:6 | i | main.go:73:16:73:18 | increment statement | +| main.go:74:3:74:7 | assign:0 ... = ... | main.go:72:2:72:2 | z | main.go:74:7:74:7 | 2 | +| main.go:82:36:86:1 | zero-init:0 block statement | main.go:82:18:82:18 | a | main.go:82:36:86:1 | zero-init:0 block statement | +| main.go:82:36:86:1 | zero-init:1 block statement | main.go:82:25:82:25 | b | main.go:82:36:86:1 | zero-init:1 block statement | +| main.go:83:2:83:8 | assign:0 ... := ... | main.go:83:2:83:2 | x | main.go:83:7:83:8 | 23 | +| main.go:84:2:84:15 | assign:0 ... = ... | main.go:83:2:83:2 | x | main.go:84:9:84:12 | ...+... | +| main.go:84:2:84:15 | assign:1 ... = ... | main.go:82:18:82:18 | a | main.go:84:15:84:15 | x | +| main.go:93:15:93:16 | cb | main.go:93:15:93:16 | cb | main.go:93:15:93:16 | cb | +| main.go:95:22:95:28 | wrapper | main.go:95:22:95:28 | wrapper | main.go:95:22:95:28 | wrapper | +| main.go:96:2:96:7 | assign:0 ... := ... | main.go:96:2:96:2 | x | main.go:96:7:96:7 | 0 | +| main.go:98:3:98:7 | assign:0 ... = ... | main.go:96:2:96:2 | x | main.go:98:7:98:7 | 1 | +| main.go:103:20:103:26 | wrapper | main.go:103:20:103:26 | wrapper | main.go:103:20:103:26 | wrapper | +| main.go:104:2:104:7 | assign:0 ... := ... | main.go:104:2:104:2 | x | main.go:104:7:104:7 | 0 | +| main.go:106:3:106:8 | assign:0 ... := ... | main.go:106:3:106:3 | y | main.go:106:8:106:8 | x | +| main.go:112:29:112:35 | wrapper | main.go:112:29:112:35 | wrapper | main.go:112:29:112:35 | wrapper | +| main.go:113:2:113:7 | assign:0 ... := ... | main.go:113:2:113:2 | x | main.go:113:7:113:7 | 0 | +| main.go:115:3:115:12 | assign:0 ... := ... | main.go:115:3:115:3 | y | main.go:115:8:115:12 | ...+... | +| main.go:116:3:116:7 | assign:0 ... = ... | main.go:113:2:113:2 | x | main.go:116:7:116:7 | y | +| main.go:128:6:128:8 | zero-init:0 value declaration specifier | main.go:128:6:128:6 | p | main.go:128:6:128:8 | zero-init:0 value declaration specifier | +| main.go:130:3:130:24 | assign:0 ... = ... | main.go:128:6:128:6 | p | main.go:130:7:130:24 | struct literal | +| main.go:130:9:130:9 | lit-init 2 | main.go:122:2:122:2 | a | main.go:130:9:130:9 | 2 | +| main.go:130:12:130:18 | lit-init struct literal | main.go:123:2:123:2 | b | main.go:130:12:130:18 | struct literal | +| main.go:130:14:130:14 | lit-init 1 | main.go:89:2:89:2 | a | main.go:130:14:130:14 | 1 | +| main.go:130:17:130:17 | lit-init 5 | main.go:90:2:90:2 | b | main.go:130:17:130:17 | 5 | +| main.go:130:21:130:23 | lit-init 'n' | main.go:124:2:124:2 | c | main.go:130:21:130:23 | 'n' | +| main.go:132:3:132:24 | assign:0 ... = ... | main.go:128:6:128:6 | p | main.go:132:7:132:24 | struct literal | +| main.go:132:9:132:9 | lit-init 3 | main.go:122:2:122:2 | a | main.go:132:9:132:9 | 3 | +| main.go:132:12:132:18 | lit-init struct literal | main.go:123:2:123:2 | b | main.go:132:12:132:18 | struct literal | +| main.go:132:14:132:14 | lit-init 4 | main.go:89:2:89:2 | a | main.go:132:14:132:14 | 4 | +| main.go:132:17:132:17 | lit-init 5 | main.go:90:2:90:2 | b | main.go:132:17:132:17 | 5 | +| main.go:132:21:132:23 | lit-init '2' | main.go:124:2:124:2 | c | main.go:132:21:132:23 | '2' | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/SSA/VarUses.expected b/go/ql/test/library-tests/semmle/go/dataflow/SSA/VarUses.expected index 2e6b3c855c36..5a37307af191 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/SSA/VarUses.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/SSA/VarUses.expected @@ -15,15 +15,15 @@ | main.go:40:10:40:10 | x | main.go:39:2:39:2 | x | | main.go:42:8:42:10 | ptr | main.go:40:2:40:4 | ptr | | main.go:44:12:44:12 | x | main.go:39:2:39:2 | x | -| main.go:47:13:47:18 | implicit read of result | main.go:47:13:47:18 | result | -| main.go:52:14:52:19 | implicit read of result | main.go:52:14:52:19 | result | +| main.go:47:25:50:1 | result-read:0 block statement | main.go:47:13:47:18 | result | +| main.go:52:26:54:1 | result-read:0 block statement | main.go:52:14:52:19 | result | | main.go:61:12:61:12 | x | main.go:57:6:57:6 | x | | main.go:64:16:64:16 | i | main.go:64:6:64:6 | i | | main.go:70:12:70:12 | y | main.go:63:2:63:2 | y | | main.go:73:16:73:16 | i | main.go:73:6:73:6 | i | | main.go:79:12:79:12 | z | main.go:72:2:72:2 | z | -| main.go:82:18:82:18 | implicit read of a | main.go:82:18:82:18 | a | -| main.go:82:25:82:25 | implicit read of b | main.go:82:25:82:25 | b | +| main.go:82:36:86:1 | result-read:0 block statement | main.go:82:18:82:18 | a | +| main.go:82:36:86:1 | result-read:1 block statement | main.go:82:25:82:25 | b | | main.go:84:9:84:9 | x | main.go:83:2:83:2 | x | | main.go:84:15:84:15 | x | main.go:83:2:83:2 | x | | main.go:97:2:97:8 | wrapper | main.go:95:22:95:28 | wrapper | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/SliceExpressions/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/dataflow/SliceExpressions/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ThreatModels/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/dataflow/ThreatModels/CONSISTENCY/DataFlowConsistency.expected index b1b3608ee058..0a79232575c2 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ThreatModels/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ThreatModels/CONSISTENCY/DataFlowConsistency.expected @@ -1,2 +1,2 @@ reverseRead -| test.go:32:11:32:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:32:11:32:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/CONSISTENCY/DataFlowConsistency.expected deleted file mode 100644 index 95848ba942a8..000000000000 --- a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/CONSISTENCY/DataFlowConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -reverseRead -| main.go:23:3:23:5 | out | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Afero/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Afero/CONSISTENCY/DataFlowConsistency.expected index daba79d62f03..40a0dda55e33 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Afero/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Afero/CONSISTENCY/DataFlowConsistency.expected @@ -1,2 +1,2 @@ reverseRead -| test.go:19:14:19:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:19:14:19:20 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Beego/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Beego/CONSISTENCY/DataFlowConsistency.expected index 42b10a988b50..fe63cabf552a 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Beego/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Beego/CONSISTENCY/DataFlowConsistency.expected @@ -1,16 +1,16 @@ reverseRead -| test.go:142:3:142:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:143:3:143:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:143:23:143:29 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:208:18:208:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:208:18:208:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:142:3:142:9 | implicit-deref context | Origin of readStep is missing a PostUpdateNode. | +| test.go:143:3:143:9 | implicit-deref context | Origin of readStep is missing a PostUpdateNode. | +| test.go:143:23:143:29 | implicit-deref context | Origin of readStep is missing a PostUpdateNode. | +| test.go:208:18:208:20 | implicit-deref ctx | Origin of readStep is missing a PostUpdateNode. | +| test.go:208:18:208:28 | implicit-deref selection of Request | Origin of readStep is missing a PostUpdateNode. | | test.go:229:21:229:25 | files | Origin of readStep is missing a PostUpdateNode. | -| test.go:259:2:259:2 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:270:37:270:37 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:259:2:259:2 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| test.go:270:37:270:37 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | | test.go:283:44:283:48 | files | Origin of readStep is missing a PostUpdateNode. | | test.go:297:51:297:62 | genericFiles | Origin of readStep is missing a PostUpdateNode. | | test.go:298:54:298:62 | untainted | Origin of readStep is missing a PostUpdateNode. | -| test.go:317:13:317:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:318:20:318:22 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:324:17:324:19 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:324:17:324:25 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:317:13:317:15 | implicit-deref ctx | Origin of readStep is missing a PostUpdateNode. | +| test.go:318:20:318:22 | implicit-deref ctx | Origin of readStep is missing a PostUpdateNode. | +| test.go:324:17:324:19 | implicit-deref ctx | Origin of readStep is missing a PostUpdateNode. | +| test.go:324:17:324:25 | implicit-deref selection of Input | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected index be8ae2ec2fa4..f88de8721b0b 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected @@ -24,9 +24,9 @@ | test.go:204:14:204:55 | type conversion | test.go:199:15:199:26 | call to Data | test.go:204:14:204:55 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:199:15:199:26 | call to Data | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:205:14:205:59 | type conversion | test.go:199:15:199:26 | call to Data | test.go:205:14:205:59 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:199:15:199:26 | call to Data | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:209:14:209:28 | type conversion | test.go:208:18:208:33 | selection of Form | test.go:209:14:209:28 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:208:18:208:33 | selection of Form | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:224:14:224:32 | type conversion | test.go:223:2:223:34 | ... := ...[1] | test.go:224:14:224:32 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:223:2:223:34 | ... := ...[1] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:226:14:226:20 | content | test.go:223:2:223:34 | ... := ...[0] | test.go:226:14:226:20 | content | Cross-site scripting vulnerability due to $@. | test.go:223:2:223:34 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:229:14:229:38 | type conversion | test.go:228:2:228:40 | ... := ...[0] | test.go:229:14:229:38 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:228:2:228:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:224:14:224:32 | type conversion | test.go:223:2:223:34 | extract:1 ... := ... | test.go:224:14:224:32 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:223:2:223:34 | extract:1 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:226:14:226:20 | content | test.go:223:2:223:34 | extract:0 ... := ... | test.go:226:14:226:20 | content | Cross-site scripting vulnerability due to $@. | test.go:223:2:223:34 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:229:14:229:38 | type conversion | test.go:228:2:228:40 | extract:0 ... := ... | test.go:229:14:229:38 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:228:2:228:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:232:14:232:22 | type conversion | test.go:231:7:231:28 | call to GetString | test.go:232:14:232:22 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:231:7:231:28 | call to GetString | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:235:14:235:26 | type conversion | test.go:234:8:234:35 | call to GetStrings | test.go:235:14:235:26 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:234:8:234:35 | call to GetStrings | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:238:14:238:27 | type conversion | test.go:237:9:237:17 | call to Input | test.go:238:14:238:27 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:237:9:237:17 | call to Input | user-provided value | test.go:0:0:0:0 | test.go | | @@ -36,20 +36,20 @@ | test.go:264:16:264:37 | call to GetCookie | test.go:264:16:264:37 | call to GetCookie | test.go:264:16:264:37 | call to GetCookie | Cross-site scripting vulnerability due to $@. | test.go:264:16:264:37 | call to GetCookie | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:265:15:265:41 | call to GetCookie | test.go:265:15:265:41 | call to GetCookie | test.go:265:15:265:41 | call to GetCookie | Cross-site scripting vulnerability due to $@. | test.go:265:15:265:41 | call to GetCookie | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:270:55:270:84 | type conversion | test.go:270:62:270:83 | call to GetCookie | test.go:270:55:270:84 | type conversion | Cross-site scripting vulnerability due to $@. | test.go:270:62:270:83 | call to GetCookie | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:283:21:283:61 | call to GetDisplayString | test.go:275:2:275:40 | ... := ...[0] | test.go:283:21:283:61 | call to GetDisplayString | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:284:21:284:92 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:284:21:284:92 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:285:21:285:96 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:285:21:285:96 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:290:3:292:80 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:290:3:292:80 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:293:21:293:101 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:293:21:293:101 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:294:21:294:101 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:294:21:294:101 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:295:21:295:97 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:295:21:295:97 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:296:21:296:97 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:296:21:296:97 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:297:21:297:102 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:297:21:297:102 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:298:21:298:102 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:298:21:298:102 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:299:21:299:82 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:299:21:299:82 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:301:21:301:133 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:301:21:301:133 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:302:21:302:88 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:302:21:302:88 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:303:21:303:87 | selection of Filename | test.go:275:2:275:40 | ... := ...[0] | test.go:303:21:303:87 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:283:21:283:61 | call to GetDisplayString | test.go:275:2:275:40 | extract:0 ... := ... | test.go:283:21:283:61 | call to GetDisplayString | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:284:21:284:92 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:284:21:284:92 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:285:21:285:96 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:285:21:285:96 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:290:3:292:80 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:290:3:292:80 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:293:21:293:101 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:293:21:293:101 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:294:21:294:101 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:294:21:294:101 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:295:21:295:97 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:295:21:295:97 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:296:21:296:97 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:296:21:296:97 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:297:21:297:102 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:297:21:297:102 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:298:21:298:102 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:298:21:298:102 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:299:21:299:82 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:299:21:299:82 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:301:21:301:133 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:301:21:301:133 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:302:21:302:88 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:302:21:302:88 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:303:21:303:87 | selection of Filename | test.go:275:2:275:40 | extract:0 ... := ... | test.go:303:21:303:87 | selection of Filename | Cross-site scripting vulnerability due to $@. | test.go:275:2:275:40 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:311:21:311:48 | type assertion | test.go:309:15:309:36 | call to GetString | test.go:311:21:311:48 | type assertion | Cross-site scripting vulnerability due to $@. | test.go:309:15:309:36 | call to GetString | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:312:21:312:52 | type assertion | test.go:309:15:309:36 | call to GetString | test.go:312:21:312:52 | type assertion | Cross-site scripting vulnerability due to $@. | test.go:309:15:309:36 | call to GetString | user-provided value | test.go:0:0:0:0 | test.go | | edges @@ -81,19 +81,19 @@ edges | test.go:200:36:200:53 | type assertion | test.go:200:21:200:54 | call to HTML2str | provenance | MaD:35 | | test.go:201:21:201:57 | call to Htmlunquote | test.go:201:14:201:58 | type conversion | provenance | | | test.go:201:39:201:56 | type assertion | test.go:201:21:201:57 | call to Htmlunquote | provenance | MaD:36 | -| test.go:202:2:202:68 | ... := ...[0] | test.go:203:14:203:28 | type assertion | provenance | | -| test.go:202:28:202:56 | type assertion | test.go:202:2:202:68 | ... := ...[0] | provenance | MaD:37 | +| test.go:202:2:202:68 | extract:0 ... := ... | test.go:203:14:203:28 | type assertion | provenance | | +| test.go:202:28:202:56 | type assertion | test.go:202:2:202:68 | extract:0 ... := ... | provenance | MaD:37 | | test.go:204:21:204:54 | call to Str2html | test.go:204:14:204:55 | type conversion | provenance | | | test.go:204:36:204:53 | type assertion | test.go:204:21:204:54 | call to Str2html | provenance | MaD:39 | | test.go:205:21:205:58 | call to Substr | test.go:205:14:205:59 | type conversion | provenance | | | test.go:205:34:205:51 | type assertion | test.go:205:21:205:58 | call to Substr | provenance | MaD:40 | | test.go:208:18:208:33 | selection of Form | test.go:208:36:208:36 | s [postupdate] | provenance | Src:MaD:21 MaD:38 | | test.go:208:36:208:36 | s [postupdate] | test.go:209:14:209:28 | type conversion | provenance | | -| test.go:223:2:223:34 | ... := ...[0] | test.go:225:31:225:31 | f | provenance | Src:MaD:15 | -| test.go:223:2:223:34 | ... := ...[1] | test.go:224:14:224:32 | type conversion | provenance | Src:MaD:15 | -| test.go:225:2:225:32 | ... := ...[0] | test.go:226:14:226:20 | content | provenance | | -| test.go:225:31:225:31 | f | test.go:225:2:225:32 | ... := ...[0] | provenance | MaD:41 | -| test.go:228:2:228:40 | ... := ...[0] | test.go:229:14:229:38 | type conversion | provenance | Src:MaD:16 | +| test.go:223:2:223:34 | extract:0 ... := ... | test.go:225:31:225:31 | f | provenance | Src:MaD:15 | +| test.go:223:2:223:34 | extract:1 ... := ... | test.go:224:14:224:32 | type conversion | provenance | Src:MaD:15 | +| test.go:225:2:225:32 | extract:0 ... := ... | test.go:226:14:226:20 | content | provenance | | +| test.go:225:31:225:31 | f | test.go:225:2:225:32 | extract:0 ... := ... | provenance | MaD:41 | +| test.go:228:2:228:40 | extract:0 ... := ... | test.go:229:14:229:38 | type conversion | provenance | Src:MaD:16 | | test.go:231:7:231:28 | call to GetString | test.go:232:14:232:22 | type conversion | provenance | Src:MaD:17 | | test.go:234:8:234:35 | call to GetStrings | test.go:235:14:235:26 | type conversion | provenance | Src:MaD:18 | | test.go:237:9:237:17 | call to Input | test.go:238:14:238:27 | type conversion | provenance | Src:MaD:19 | @@ -101,21 +101,21 @@ edges | test.go:246:15:246:36 | call to GetString | test.go:249:21:249:29 | untrusted | provenance | Src:MaD:17 | | test.go:259:23:259:44 | call to GetCookie | test.go:259:16:259:45 | type conversion | provenance | Src:MaD:14 | | test.go:270:62:270:83 | call to GetCookie | test.go:270:55:270:84 | type conversion | provenance | Src:MaD:14 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:278:21:278:28 | index expression | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:283:44:283:60 | selection of Filename | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:284:38:284:49 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:285:37:285:48 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:291:4:291:15 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:293:42:293:53 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:294:53:294:64 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:295:38:295:49 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:296:49:296:60 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:297:51:297:65 | index expression | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:298:36:298:47 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:299:37:299:48 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:301:39:301:50 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:302:40:302:51 | genericFiles | provenance | Src:MaD:16 | -| test.go:275:2:275:40 | ... := ...[0] | test.go:303:39:303:50 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:278:21:278:28 | index expression | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:283:44:283:60 | selection of Filename | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:284:38:284:49 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:285:37:285:48 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:291:4:291:15 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:293:42:293:53 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:294:53:294:64 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:295:38:295:49 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:296:49:296:60 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:297:51:297:65 | index expression | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:298:36:298:47 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:299:37:299:48 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:301:39:301:50 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:302:40:302:51 | genericFiles | provenance | Src:MaD:16 | +| test.go:275:2:275:40 | extract:0 ... := ... | test.go:303:39:303:50 | genericFiles | provenance | Src:MaD:16 | | test.go:278:3:278:14 | genericFiles [postupdate] [array] | test.go:297:51:297:62 | genericFiles [array] | provenance | | | test.go:278:21:278:28 | index expression | test.go:278:3:278:14 | genericFiles [postupdate] [array] | provenance | | | test.go:283:44:283:60 | selection of Filename | test.go:283:21:283:61 | call to GetDisplayString | provenance | FunctionModel | @@ -240,7 +240,7 @@ nodes | test.go:201:14:201:58 | type conversion | semmle.label | type conversion | | test.go:201:21:201:57 | call to Htmlunquote | semmle.label | call to Htmlunquote | | test.go:201:39:201:56 | type assertion | semmle.label | type assertion | -| test.go:202:2:202:68 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:202:2:202:68 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:202:28:202:56 | type assertion | semmle.label | type assertion | | test.go:203:14:203:28 | type assertion | semmle.label | type assertion | | test.go:204:14:204:55 | type conversion | semmle.label | type conversion | @@ -252,13 +252,13 @@ nodes | test.go:208:18:208:33 | selection of Form | semmle.label | selection of Form | | test.go:208:36:208:36 | s [postupdate] | semmle.label | s [postupdate] | | test.go:209:14:209:28 | type conversion | semmle.label | type conversion | -| test.go:223:2:223:34 | ... := ...[0] | semmle.label | ... := ...[0] | -| test.go:223:2:223:34 | ... := ...[1] | semmle.label | ... := ...[1] | +| test.go:223:2:223:34 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | +| test.go:223:2:223:34 | extract:1 ... := ... | semmle.label | extract:1 ... := ... | | test.go:224:14:224:32 | type conversion | semmle.label | type conversion | -| test.go:225:2:225:32 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:225:2:225:32 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:225:31:225:31 | f | semmle.label | f | | test.go:226:14:226:20 | content | semmle.label | content | -| test.go:228:2:228:40 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:228:2:228:40 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:229:14:229:38 | type conversion | semmle.label | type conversion | | test.go:231:7:231:28 | call to GetString | semmle.label | call to GetString | | test.go:232:14:232:22 | type conversion | semmle.label | type conversion | @@ -276,7 +276,7 @@ nodes | test.go:265:15:265:41 | call to GetCookie | semmle.label | call to GetCookie | | test.go:270:55:270:84 | type conversion | semmle.label | type conversion | | test.go:270:62:270:83 | call to GetCookie | semmle.label | call to GetCookie | -| test.go:275:2:275:40 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:275:2:275:40 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:278:3:278:14 | genericFiles [postupdate] [array] | semmle.label | genericFiles [postupdate] [array] | | test.go:278:21:278:28 | index expression | semmle.label | index expression | | test.go:283:21:283:61 | call to GetDisplayString | semmle.label | call to GetDisplayString | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Chi/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Chi/CONSISTENCY/DataFlowConsistency.expected index e87bbb9cdee9..4bd409e41d29 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Chi/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Chi/CONSISTENCY/DataFlowConsistency.expected @@ -1,2 +1,2 @@ reverseRead -| test.go:13:12:13:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:13:12:13:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Echo/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Echo/CONSISTENCY/DataFlowConsistency.expected index 1765ea137674..01ec84e742c6 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Echo/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Echo/CONSISTENCY/DataFlowConsistency.expected @@ -1,4 +1,4 @@ reverseRead | test.go:89:16:89:22 | cookies | Origin of readStep is missing a PostUpdateNode. | -| test.go:193:10:193:22 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:193:10:193:22 | implicit-deref call to Request | Origin of readStep is missing a PostUpdateNode. | | test.go:216:20:216:26 | cookies | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected index 4e885d284d48..c13bbc39ec8a 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected @@ -5,11 +5,11 @@ | test.go:34:16:34:20 | param | test.go:33:11:33:27 | call to QueryParams | test.go:34:16:34:20 | param | Cross-site scripting vulnerability due to $@. | test.go:33:11:33:27 | call to QueryParams | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:40:16:40:19 | qstr | test.go:39:10:39:26 | call to QueryString | test.go:40:16:40:19 | qstr | Cross-site scripting vulnerability due to $@. | test.go:39:10:39:26 | call to QueryString | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:46:16:46:18 | val | test.go:45:9:45:34 | call to FormValue | test.go:46:16:46:18 | val | Cross-site scripting vulnerability due to $@. | test.go:45:9:45:34 | call to FormValue | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:52:16:52:37 | index expression | test.go:51:2:51:30 | ... := ...[0] | test.go:52:16:52:37 | index expression | Cross-site scripting vulnerability due to $@. | test.go:51:2:51:30 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:61:20:61:25 | buffer | test.go:57:2:57:46 | ... := ...[0] | test.go:61:20:61:25 | buffer | Cross-site scripting vulnerability due to $@. | test.go:57:2:57:46 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:67:16:67:41 | index expression | test.go:66:2:66:31 | ... := ...[0] | test.go:67:16:67:41 | index expression | Cross-site scripting vulnerability due to $@. | test.go:66:2:66:31 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:77:20:77:25 | buffer | test.go:72:2:72:31 | ... := ...[0] | test.go:77:20:77:25 | buffer | Cross-site scripting vulnerability due to $@. | test.go:72:2:72:31 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | -| test.go:83:16:83:24 | selection of Value | test.go:82:2:82:32 | ... := ...[0] | test.go:83:16:83:24 | selection of Value | Cross-site scripting vulnerability due to $@. | test.go:82:2:82:32 | ... := ...[0] | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:52:16:52:37 | index expression | test.go:51:2:51:30 | extract:0 ... := ... | test.go:52:16:52:37 | index expression | Cross-site scripting vulnerability due to $@. | test.go:51:2:51:30 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:61:20:61:25 | buffer | test.go:57:2:57:46 | extract:0 ... := ... | test.go:61:20:61:25 | buffer | Cross-site scripting vulnerability due to $@. | test.go:57:2:57:46 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:67:16:67:41 | index expression | test.go:66:2:66:31 | extract:0 ... := ... | test.go:67:16:67:41 | index expression | Cross-site scripting vulnerability due to $@. | test.go:66:2:66:31 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:77:20:77:25 | buffer | test.go:72:2:72:31 | extract:0 ... := ... | test.go:77:20:77:25 | buffer | Cross-site scripting vulnerability due to $@. | test.go:72:2:72:31 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | +| test.go:83:16:83:24 | selection of Value | test.go:82:2:82:32 | extract:0 ... := ... | test.go:83:16:83:24 | selection of Value | Cross-site scripting vulnerability due to $@. | test.go:82:2:82:32 | extract:0 ... := ... | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:89:16:89:31 | selection of Value | test.go:88:13:88:25 | call to Cookies | test.go:89:16:89:31 | selection of Value | Cross-site scripting vulnerability due to $@. | test.go:88:13:88:25 | call to Cookies | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:100:16:100:21 | selection of s | test.go:99:11:99:15 | &... [postupdate] | test.go:100:16:100:21 | selection of s | Cross-site scripting vulnerability due to $@. | test.go:99:11:99:15 | &... [postupdate] | user-provided value | test.go:0:0:0:0 | test.go | | | test.go:114:16:114:42 | type assertion | test.go:113:21:113:42 | call to Param | test.go:114:16:114:42 | type assertion | Cross-site scripting vulnerability due to $@. | test.go:113:21:113:42 | call to Param | user-provided value | test.go:0:0:0:0 | test.go | | @@ -25,23 +25,23 @@ edges | test.go:33:11:33:27 | call to QueryParams | test.go:34:16:34:20 | param | provenance | Src:MaD:11 | | test.go:39:10:39:26 | call to QueryString | test.go:40:16:40:19 | qstr | provenance | Src:MaD:12 | | test.go:45:9:45:34 | call to FormValue | test.go:46:16:46:18 | val | provenance | Src:MaD:6 | -| test.go:51:2:51:30 | ... := ...[0] | test.go:52:16:52:37 | index expression | provenance | Src:MaD:5 | -| test.go:57:2:57:46 | ... := ...[0] | test.go:58:13:58:22 | fileHeader | provenance | Src:MaD:4 | -| test.go:58:2:58:29 | ... := ...[0] | test.go:60:2:60:5 | file | provenance | | -| test.go:58:13:58:22 | fileHeader | test.go:58:2:58:29 | ... := ...[0] | provenance | MaD:17 | +| test.go:51:2:51:30 | extract:0 ... := ... | test.go:52:16:52:37 | index expression | provenance | Src:MaD:5 | +| test.go:57:2:57:46 | extract:0 ... := ... | test.go:58:13:58:22 | fileHeader | provenance | Src:MaD:4 | +| test.go:58:2:58:29 | extract:0 ... := ... | test.go:60:2:60:5 | file | provenance | | +| test.go:58:13:58:22 | fileHeader | test.go:58:2:58:29 | extract:0 ... := ... | provenance | MaD:17 | | test.go:60:2:60:5 | file | test.go:60:12:60:17 | buffer [postupdate] | provenance | MaD:15 | | test.go:60:2:60:5 | file | test.go:60:12:60:17 | buffer [postupdate] | provenance | MaD:16 | | test.go:60:2:60:5 | file | test.go:60:12:60:17 | buffer [postupdate] | provenance | MaD:18 | | test.go:60:12:60:17 | buffer [postupdate] | test.go:61:20:61:25 | buffer | provenance | | -| test.go:66:2:66:31 | ... := ...[0] | test.go:67:16:67:41 | index expression | provenance | Src:MaD:7 | -| test.go:72:2:72:31 | ... := ...[0] | test.go:74:13:74:22 | fileHeader | provenance | Src:MaD:7 | -| test.go:74:2:74:29 | ... := ...[0] | test.go:76:2:76:5 | file | provenance | | -| test.go:74:13:74:22 | fileHeader | test.go:74:2:74:29 | ... := ...[0] | provenance | MaD:17 | +| test.go:66:2:66:31 | extract:0 ... := ... | test.go:67:16:67:41 | index expression | provenance | Src:MaD:7 | +| test.go:72:2:72:31 | extract:0 ... := ... | test.go:74:13:74:22 | fileHeader | provenance | Src:MaD:7 | +| test.go:74:2:74:29 | extract:0 ... := ... | test.go:76:2:76:5 | file | provenance | | +| test.go:74:13:74:22 | fileHeader | test.go:74:2:74:29 | extract:0 ... := ... | provenance | MaD:17 | | test.go:76:2:76:5 | file | test.go:76:12:76:17 | buffer [postupdate] | provenance | MaD:15 | | test.go:76:2:76:5 | file | test.go:76:12:76:17 | buffer [postupdate] | provenance | MaD:16 | | test.go:76:2:76:5 | file | test.go:76:12:76:17 | buffer [postupdate] | provenance | MaD:18 | | test.go:76:12:76:17 | buffer [postupdate] | test.go:77:20:77:25 | buffer | provenance | | -| test.go:82:2:82:32 | ... := ...[0] | test.go:83:16:83:24 | selection of Value | provenance | Src:MaD:2 | +| test.go:82:2:82:32 | extract:0 ... := ... | test.go:83:16:83:24 | selection of Value | provenance | Src:MaD:2 | | test.go:88:13:88:25 | call to Cookies | test.go:89:16:89:31 | selection of Value | provenance | Src:MaD:3 | | test.go:99:11:99:15 | &... [postupdate] | test.go:100:16:100:21 | selection of s | provenance | Src:MaD:1 | | test.go:113:2:113:4 | ctx [postupdate] | test.go:114:16:114:18 | ctx | provenance | | @@ -88,23 +88,23 @@ nodes | test.go:40:16:40:19 | qstr | semmle.label | qstr | | test.go:45:9:45:34 | call to FormValue | semmle.label | call to FormValue | | test.go:46:16:46:18 | val | semmle.label | val | -| test.go:51:2:51:30 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:51:2:51:30 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:52:16:52:37 | index expression | semmle.label | index expression | -| test.go:57:2:57:46 | ... := ...[0] | semmle.label | ... := ...[0] | -| test.go:58:2:58:29 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:57:2:57:46 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | +| test.go:58:2:58:29 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:58:13:58:22 | fileHeader | semmle.label | fileHeader | | test.go:60:2:60:5 | file | semmle.label | file | | test.go:60:12:60:17 | buffer [postupdate] | semmle.label | buffer [postupdate] | | test.go:61:20:61:25 | buffer | semmle.label | buffer | -| test.go:66:2:66:31 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:66:2:66:31 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:67:16:67:41 | index expression | semmle.label | index expression | -| test.go:72:2:72:31 | ... := ...[0] | semmle.label | ... := ...[0] | -| test.go:74:2:74:29 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:72:2:72:31 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | +| test.go:74:2:74:29 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:74:13:74:22 | fileHeader | semmle.label | fileHeader | | test.go:76:2:76:5 | file | semmle.label | file | | test.go:76:12:76:17 | buffer [postupdate] | semmle.label | buffer [postupdate] | | test.go:77:20:77:25 | buffer | semmle.label | buffer | -| test.go:82:2:82:32 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:82:2:82:32 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:83:16:83:24 | selection of Value | semmle.label | selection of Value | | test.go:88:13:88:25 | call to Cookies | semmle.label | call to Cookies | | test.go:89:16:89:31 | selection of Value | semmle.label | selection of Value | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Fasthttp/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Fasthttp/CONSISTENCY/DataFlowConsistency.expected index b57f285e1425..ce16ef565303 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Fasthttp/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Fasthttp/CONSISTENCY/DataFlowConsistency.expected @@ -1,22 +1,22 @@ reverseRead | fasthttp.go:75:28:75:35 | lbclient | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:102:7:102:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:162:3:162:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:163:3:163:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:164:3:164:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:165:15:165:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:166:15:166:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:167:15:167:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:168:15:168:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:170:3:170:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:172:3:172:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:173:3:173:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:174:3:174:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:175:3:175:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:183:3:183:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:184:3:184:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:185:16:185:25 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:194:3:194:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:195:3:195:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:196:3:196:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| fasthttp.go:197:3:197:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:102:7:102:16 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:162:3:162:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:163:3:163:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:164:3:164:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:165:15:165:24 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:166:15:166:24 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:167:15:167:24 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:168:15:168:24 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:170:3:170:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:172:3:172:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:173:3:173:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:174:3:174:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:175:3:175:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:183:3:183:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:184:3:184:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:185:16:185:25 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:194:3:194:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:195:3:195:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:196:3:196:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | +| fasthttp.go:197:3:197:12 | implicit-deref requestCtx | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Fasthttp/RemoteFlowSources.expected b/go/ql/test/library-tests/semmle/go/frameworks/Fasthttp/RemoteFlowSources.expected index e69de29bb2d1..3ff8fb45938f 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Fasthttp/RemoteFlowSources.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Fasthttp/RemoteFlowSources.expected @@ -0,0 +1,8 @@ +| fasthttp.go:165:3:165:45 | extract:0 ... := ... | Unexpected result: RemoteFlowSource="extract:0 ... := ..." | +| fasthttp.go:165:53:165:89 | comment | Missing result: RemoteFlowSource="... := ...[0]" | +| fasthttp.go:166:3:166:46 | extract:0 ... := ... | Unexpected result: RemoteFlowSource="extract:0 ... := ..." | +| fasthttp.go:166:53:166:89 | comment | Missing result: RemoteFlowSource="... := ...[0]" | +| fasthttp.go:167:3:167:47 | extract:0 ... := ... | Unexpected result: RemoteFlowSource="extract:0 ... := ..." | +| fasthttp.go:167:53:167:89 | comment | Missing result: RemoteFlowSource="... := ...[0]" | +| fasthttp.go:168:3:168:51 | extract:0 ... := ... | Unexpected result: RemoteFlowSource="extract:0 ... := ..." | +| fasthttp.go:168:53:168:89 | comment | Missing result: RemoteFlowSource="... := ...[0]" | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Gin/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Gin/CONSISTENCY/DataFlowConsistency.expected index d430ebd33f51..a3358c49ec11 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Gin/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Gin/CONSISTENCY/DataFlowConsistency.expected @@ -1,5 +1,5 @@ reverseRead -| Gin.go:26:18:26:18 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Gin.go:26:28:26:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Gin.go:158:10:158:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Gin.go:162:13:162:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| Gin.go:26:18:26:18 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Gin.go:26:28:26:28 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Gin.go:158:10:158:12 | implicit-deref ctx | Origin of readStep is missing a PostUpdateNode. | +| Gin.go:162:13:162:15 | implicit-deref ctx | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Gin/Gin.expected b/go/ql/test/library-tests/semmle/go/frameworks/Gin/Gin.expected index 071bf34cd7e0..46239a3c3394 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Gin/Gin.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Gin/Gin.expected @@ -7,18 +7,18 @@ | Gin.go:58:10:58:25 | call to Param | | Gin.go:62:10:62:34 | call to GetStringSlice | | Gin.go:66:10:66:29 | call to GetString | -| Gin.go:70:3:70:28 | ... := ...[0] | +| Gin.go:70:3:70:28 | extract:0 ... := ... | | Gin.go:74:10:74:23 | call to ClientIP | | Gin.go:78:10:78:26 | call to ContentType | -| Gin.go:82:3:82:29 | ... := ...[0] | -| Gin.go:86:3:86:36 | ... := ...[0] | -| Gin.go:90:3:90:31 | ... := ...[0] | -| Gin.go:94:3:94:39 | ... := ...[0] | -| Gin.go:98:3:98:34 | ... := ...[0] | +| Gin.go:82:3:82:29 | extract:0 ... := ... | +| Gin.go:86:3:86:36 | extract:0 ... := ... | +| Gin.go:90:3:90:31 | extract:0 ... := ... | +| Gin.go:94:3:94:39 | extract:0 ... := ... | +| Gin.go:98:3:98:34 | extract:0 ... := ... | | Gin.go:102:10:102:52 | call to DefaultPostForm | | Gin.go:106:10:106:49 | call to DefaultQuery | -| Gin.go:110:3:110:37 | ... := ...[0] | -| Gin.go:114:3:114:34 | ... := ...[0] | +| Gin.go:110:3:110:37 | extract:0 ... := ... | +| Gin.go:114:3:114:34 | extract:0 ... := ... | | Gin.go:118:10:118:32 | call to GetStringMap | | Gin.go:122:10:122:38 | call to GetStringMapString | | Gin.go:126:10:126:43 | call to GetStringMapStringSlice | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/GoMicro/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/GoMicro/CONSISTENCY/DataFlowConsistency.expected index 0bbe91ae77ed..d3172f5635cb 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/GoMicro/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/GoMicro/CONSISTENCY/DataFlowConsistency.expected @@ -3,12 +3,12 @@ reverseRead | proto/Hello.pb.go:47:9:47:39 | file_proto_Hello_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | | proto/Hello.pb.go:81:10:81:40 | file_proto_Hello_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | | proto/Hello.pb.go:94:9:94:39 | file_proto_Hello_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | -| proto/Hello.pb.go:169:13:169:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| proto/Hello.pb.go:171:13:171:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| proto/Hello.pb.go:173:13:173:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| proto/Hello.pb.go:181:13:181:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| proto/Hello.pb.go:183:13:183:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| proto/Hello.pb.go:185:13:185:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| proto/Hello.pb.micro.go:55:9:55:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| proto/Hello.pb.micro.go:57:9:57:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| proto/Hello.pb.micro.go:86:9:86:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| proto/Hello.pb.go:169:13:169:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| proto/Hello.pb.go:171:13:171:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| proto/Hello.pb.go:173:13:173:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| proto/Hello.pb.go:181:13:181:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| proto/Hello.pb.go:183:13:183:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| proto/Hello.pb.go:185:13:185:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| proto/Hello.pb.micro.go:55:9:55:9 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| proto/Hello.pb.micro.go:57:9:57:9 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| proto/Hello.pb.micro.go:86:9:86:9 | implicit-deref h | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.expected b/go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.expected index 0af67462f7c2..b17e65d31ec7 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.expected @@ -6,18 +6,18 @@ models | 5 | Source: github.com/emicklei/go-restful; Request; true; ReadEntity; ; ; Argument[0]; remote; manual | edges | gorestful.go:15:15:15:44 | call to QueryParameters | gorestful.go:15:15:15:47 | index expression | provenance | Src:MaD:4 Sink:MaD:1 | -| gorestful.go:17:2:17:39 | ... := ...[0] | gorestful.go:18:15:18:17 | val | provenance | Src:MaD:2 Sink:MaD:1 | +| gorestful.go:17:2:17:39 | extract:0 ... := ... | gorestful.go:18:15:18:17 | val | provenance | Src:MaD:2 Sink:MaD:1 | | gorestful.go:21:15:21:38 | call to PathParameters | gorestful.go:21:15:21:45 | index expression | provenance | Src:MaD:3 Sink:MaD:1 | | gorestful.go:23:21:23:24 | &... [postupdate] | gorestful.go:24:15:24:21 | selection of cmd | provenance | Src:MaD:5 Sink:MaD:1 | | gorestful_v2.go:15:15:15:44 | call to QueryParameters | gorestful_v2.go:15:15:15:47 | index expression | provenance | Src:MaD:4 Sink:MaD:1 | -| gorestful_v2.go:17:2:17:39 | ... := ...[0] | gorestful_v2.go:18:15:18:17 | val | provenance | Src:MaD:2 Sink:MaD:1 | +| gorestful_v2.go:17:2:17:39 | extract:0 ... := ... | gorestful_v2.go:18:15:18:17 | val | provenance | Src:MaD:2 Sink:MaD:1 | | gorestful_v2.go:21:15:21:38 | call to PathParameters | gorestful_v2.go:21:15:21:45 | index expression | provenance | Src:MaD:3 Sink:MaD:1 | | gorestful_v2.go:23:21:23:24 | &... [postupdate] | gorestful_v2.go:24:15:24:21 | selection of cmd | provenance | Src:MaD:5 Sink:MaD:1 | nodes | gorestful.go:15:15:15:44 | call to QueryParameters | semmle.label | call to QueryParameters | | gorestful.go:15:15:15:47 | index expression | semmle.label | index expression | | gorestful.go:16:15:16:43 | call to QueryParameter | semmle.label | call to QueryParameter | -| gorestful.go:17:2:17:39 | ... := ...[0] | semmle.label | ... := ...[0] | +| gorestful.go:17:2:17:39 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | gorestful.go:18:15:18:17 | val | semmle.label | val | | gorestful.go:19:15:19:44 | call to HeaderParameter | semmle.label | call to HeaderParameter | | gorestful.go:20:15:20:42 | call to PathParameter | semmle.label | call to PathParameter | @@ -28,7 +28,7 @@ nodes | gorestful_v2.go:15:15:15:44 | call to QueryParameters | semmle.label | call to QueryParameters | | gorestful_v2.go:15:15:15:47 | index expression | semmle.label | index expression | | gorestful_v2.go:16:15:16:43 | call to QueryParameter | semmle.label | call to QueryParameter | -| gorestful_v2.go:17:2:17:39 | ... := ...[0] | semmle.label | ... := ...[0] | +| gorestful_v2.go:17:2:17:39 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | gorestful_v2.go:18:15:18:17 | val | semmle.label | val | | gorestful_v2.go:19:15:19:44 | call to HeaderParameter | semmle.label | call to HeaderParameter | | gorestful_v2.go:20:15:20:42 | call to PathParameter | semmle.label | call to PathParameter | @@ -41,14 +41,14 @@ invalidModelRow #select | gorestful.go:15:15:15:47 | index expression | gorestful.go:15:15:15:44 | call to QueryParameters | gorestful.go:15:15:15:47 | index expression | This command depends on $@. | gorestful.go:15:15:15:44 | call to QueryParameters | a user-provided value | | gorestful.go:16:15:16:43 | call to QueryParameter | gorestful.go:16:15:16:43 | call to QueryParameter | gorestful.go:16:15:16:43 | call to QueryParameter | This command depends on $@. | gorestful.go:16:15:16:43 | call to QueryParameter | a user-provided value | -| gorestful.go:18:15:18:17 | val | gorestful.go:17:2:17:39 | ... := ...[0] | gorestful.go:18:15:18:17 | val | This command depends on $@. | gorestful.go:17:2:17:39 | ... := ...[0] | a user-provided value | +| gorestful.go:18:15:18:17 | val | gorestful.go:17:2:17:39 | extract:0 ... := ... | gorestful.go:18:15:18:17 | val | This command depends on $@. | gorestful.go:17:2:17:39 | extract:0 ... := ... | a user-provided value | | gorestful.go:19:15:19:44 | call to HeaderParameter | gorestful.go:19:15:19:44 | call to HeaderParameter | gorestful.go:19:15:19:44 | call to HeaderParameter | This command depends on $@. | gorestful.go:19:15:19:44 | call to HeaderParameter | a user-provided value | | gorestful.go:20:15:20:42 | call to PathParameter | gorestful.go:20:15:20:42 | call to PathParameter | gorestful.go:20:15:20:42 | call to PathParameter | This command depends on $@. | gorestful.go:20:15:20:42 | call to PathParameter | a user-provided value | | gorestful.go:21:15:21:45 | index expression | gorestful.go:21:15:21:38 | call to PathParameters | gorestful.go:21:15:21:45 | index expression | This command depends on $@. | gorestful.go:21:15:21:38 | call to PathParameters | a user-provided value | | gorestful.go:24:15:24:21 | selection of cmd | gorestful.go:23:21:23:24 | &... [postupdate] | gorestful.go:24:15:24:21 | selection of cmd | This command depends on $@. | gorestful.go:23:21:23:24 | &... [postupdate] | a user-provided value | | gorestful_v2.go:15:15:15:47 | index expression | gorestful_v2.go:15:15:15:44 | call to QueryParameters | gorestful_v2.go:15:15:15:47 | index expression | This command depends on $@. | gorestful_v2.go:15:15:15:44 | call to QueryParameters | a user-provided value | | gorestful_v2.go:16:15:16:43 | call to QueryParameter | gorestful_v2.go:16:15:16:43 | call to QueryParameter | gorestful_v2.go:16:15:16:43 | call to QueryParameter | This command depends on $@. | gorestful_v2.go:16:15:16:43 | call to QueryParameter | a user-provided value | -| gorestful_v2.go:18:15:18:17 | val | gorestful_v2.go:17:2:17:39 | ... := ...[0] | gorestful_v2.go:18:15:18:17 | val | This command depends on $@. | gorestful_v2.go:17:2:17:39 | ... := ...[0] | a user-provided value | +| gorestful_v2.go:18:15:18:17 | val | gorestful_v2.go:17:2:17:39 | extract:0 ... := ... | gorestful_v2.go:18:15:18:17 | val | This command depends on $@. | gorestful_v2.go:17:2:17:39 | extract:0 ... := ... | a user-provided value | | gorestful_v2.go:19:15:19:44 | call to HeaderParameter | gorestful_v2.go:19:15:19:44 | call to HeaderParameter | gorestful_v2.go:19:15:19:44 | call to HeaderParameter | This command depends on $@. | gorestful_v2.go:19:15:19:44 | call to HeaderParameter | a user-provided value | | gorestful_v2.go:20:15:20:42 | call to PathParameter | gorestful_v2.go:20:15:20:42 | call to PathParameter | gorestful_v2.go:20:15:20:42 | call to PathParameter | This command depends on $@. | gorestful_v2.go:20:15:20:42 | call to PathParameter | a user-provided value | | gorestful_v2.go:21:15:21:45 | index expression | gorestful_v2.go:21:15:21:38 | call to PathParameters | gorestful_v2.go:21:15:21:45 | index expression | This command depends on $@. | gorestful_v2.go:21:15:21:38 | call to PathParameters | a user-provided value | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Protobuf/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Protobuf/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Protobuf/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Protobuf/CONSISTENCY/DataFlowConsistency.expected index b69ab06bee15..91e28a8114e8 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Protobuf/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Protobuf/CONSISTENCY/DataFlowConsistency.expected @@ -7,26 +7,26 @@ reverseRead | protos/query/query.pb.go:169:9:169:33 | file_query_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | | protos/query/query.pb.go:204:10:204:34 | file_query_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | | protos/query/query.pb.go:217:9:217:33 | file_query_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:318:13:318:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:320:13:320:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:322:13:322:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:330:13:330:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:332:13:332:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:334:13:334:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:342:13:342:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:344:13:344:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:346:13:346:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| testDeprecatedApi.go:74:24:74:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| testDeprecatedApi.go:85:24:85:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:318:13:318:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:320:13:320:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:322:13:322:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:330:13:330:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:332:13:332:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:334:13:334:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:342:13:342:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:344:13:344:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:346:13:346:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| testDeprecatedApi.go:74:24:74:28 | implicit-deref query | Origin of readStep is missing a PostUpdateNode. | +| testDeprecatedApi.go:85:24:85:28 | implicit-deref query | Origin of readStep is missing a PostUpdateNode. | | testDeprecatedApi.go:98:13:98:24 | selection of Alerts | Origin of readStep is missing a PostUpdateNode. | -| testDeprecatedApi.go:124:12:124:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| testDeprecatedApi.go:167:12:167:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| testDeprecatedApi.go:124:12:124:16 | implicit-deref query | Origin of readStep is missing a PostUpdateNode. | +| testDeprecatedApi.go:167:12:167:16 | implicit-deref query | Origin of readStep is missing a PostUpdateNode. | | testDeprecatedApi.go:176:24:176:28 | query | Origin of readStep is missing a PostUpdateNode. | | testModernApi.go:94:12:94:21 | serialized | Origin of readStep is missing a PostUpdateNode. | -| testModernApi.go:102:24:102:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| testModernApi.go:113:24:113:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| testModernApi.go:102:24:102:28 | implicit-deref query | Origin of readStep is missing a PostUpdateNode. | +| testModernApi.go:113:24:113:28 | implicit-deref query | Origin of readStep is missing a PostUpdateNode. | | testModernApi.go:126:13:126:24 | selection of Alerts | Origin of readStep is missing a PostUpdateNode. | -| testModernApi.go:162:12:162:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| testModernApi.go:162:12:162:16 | implicit-deref query | Origin of readStep is missing a PostUpdateNode. | | testModernApi.go:186:12:186:21 | serialized | Origin of readStep is missing a PostUpdateNode. | -| testModernApi.go:224:12:224:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| testModernApi.go:224:12:224:16 | implicit-deref query | Origin of readStep is missing a PostUpdateNode. | | testModernApi.go:233:24:233:28 | query | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Revel/CONSISTENCY/DataFlowConsistency.expected index 999379f92981..c6c4611752d8 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/CONSISTENCY/DataFlowConsistency.expected @@ -1,114 +1,114 @@ reverseRead -| EndToEnd.go:31:35:31:35 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:31:35:31:42 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:37:18:37:18 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:37:18:37:25 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:45:18:45:18 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:45:18:45:25 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:52:20:52:20 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:52:20:52:27 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:59:18:59:18 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:59:18:59:25 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:65:26:65:26 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:65:26:65:33 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:70:22:70:22 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:70:22:70:29 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:75:22:75:22 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:75:22:75:29 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:80:35:80:35 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:80:35:80:42 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:85:22:85:22 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:85:22:85:29 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:90:21:90:21 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:90:21:90:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:95:20:95:20 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| EndToEnd.go:95:20:95:27 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:26:7:26:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:27:7:27:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:27:7:27:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:30:2:30:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:33:7:33:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:37:7:37:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:37:7:37:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:38:24:38:24 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:42:7:42:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:43:24:43:24 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:47:7:47:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:51:7:51:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:52:7:52:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:56:7:56:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:31:35:31:42 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:31:35:31:42 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:37:18:37:25 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:37:18:37:25 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:45:18:45:25 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:45:18:45:25 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:52:20:52:27 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:52:20:52:27 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:59:18:59:25 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:59:18:59:25 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:65:26:65:33 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:65:26:65:33 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:70:22:70:29 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:70:22:70:29 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:75:22:75:29 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:75:22:75:29 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:80:35:80:42 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:80:35:80:42 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:85:22:85:29 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:85:22:85:29 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:90:21:90:28 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:90:21:90:28 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:95:20:95:27 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| EndToEnd.go:95:20:95:27 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:26:7:26:14 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:27:7:27:14 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:27:7:27:14 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:30:2:30:9 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:33:7:33:15 | implicit-field:1 selection of Request | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:37:7:37:14 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:37:7:37:14 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:38:24:38:32 | implicit-field:1 selection of Request | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:42:7:42:14 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:43:24:43:32 | implicit-field:1 selection of Request | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:47:7:47:14 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:51:7:51:14 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:52:7:52:15 | implicit-field:1 selection of Request | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:56:7:56:14 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | | Revel.go:56:7:56:27 | index expression | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:60:7:60:7 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:60:7:60:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:63:2:63:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:70:22:70:22 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:75:7:75:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:76:7:76:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:77:7:77:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:77:7:77:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:78:7:78:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:79:7:79:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:80:7:80:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:82:13:82:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:85:13:85:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:88:13:88:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:60:7:60:14 | implicit-deref selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:60:7:60:14 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:63:2:63:9 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:70:22:70:29 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:75:7:75:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:76:7:76:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:77:7:77:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:77:7:77:15 | implicit-deref selection of Request | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:78:7:78:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:79:7:79:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:80:7:80:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:82:13:82:13 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:85:13:85:13 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:88:13:88:13 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | | Revel.go:89:7:89:28 | index expression | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:91:7:91:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:91:7:91:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:91:7:91:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:91:7:91:15 | implicit-deref selection of Request | Origin of readStep is missing a PostUpdateNode. | | Revel.go:91:7:91:41 | index expression | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:93:28:93:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:96:15:96:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:99:7:99:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:101:7:101:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:103:15:103:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:109:7:109:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:111:7:111:7 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:116:2:116:2 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:116:2:116:10 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:120:2:120:2 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:120:2:120:10 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:125:13:125:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:125:13:125:21 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:128:14:128:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:128:14:128:22 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| Revel.go:133:13:133:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:34:2:34:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:47:2:47:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:56:2:56:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:57:2:57:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:59:16:59:16 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:61:5:61:5 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:62:3:62:3 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:68:2:68:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:79:5:79:5 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:81:5:81:5 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:83:4:83:4 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:89:2:89:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/app.go:95:10:95:10 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:44:3:44:3 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:51:2:51:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:143:26:143:26 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:144:2:144:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:146:2:146:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:148:5:148:5 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:149:3:149:3 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:153:2:153:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:166:19:166:19 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:168:5:168:5 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:168:33:168:33 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:169:3:169:3 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:174:5:174:5 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:175:3:175:3 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:93:28:93:28 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:96:15:96:15 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:99:7:99:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:101:7:101:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:103:15:103:15 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:109:7:109:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:111:7:111:7 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:116:2:116:2 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:116:2:116:10 | implicit-deref selection of Request | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:120:2:120:2 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:120:2:120:10 | implicit-deref selection of Request | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:125:13:125:13 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:125:13:125:21 | implicit-deref selection of Request | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:128:14:128:14 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:128:14:128:22 | implicit-deref selection of Request | Origin of readStep is missing a PostUpdateNode. | +| Revel.go:133:13:133:13 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:34:2:34:10 | implicit-field:1 selection of Session | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:47:2:47:8 | implicit-field:1 selection of Flash | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:56:2:56:13 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:57:2:57:13 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:59:16:59:27 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:61:5:61:16 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:62:3:62:14 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:68:2:68:8 | implicit-field:1 selection of Flash | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:79:5:79:13 | implicit-field:1 selection of Session | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:81:5:81:13 | implicit-field:1 selection of Session | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:83:4:83:10 | implicit-field:1 selection of Flash | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:89:2:89:8 | implicit-field:1 selection of Flash | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/app.go:95:10:95:18 | implicit-field:1 selection of Session | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:44:3:44:9 | implicit-field:1 selection of Flash | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:51:2:51:6 | implicit-field:1 selection of Log | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:143:26:143:37 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:144:2:144:13 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:146:2:146:13 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:148:5:148:16 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:149:3:149:14 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:153:2:153:8 | implicit-field:1 selection of Flash | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:166:19:166:30 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:168:5:168:16 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:168:33:168:40 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:169:3:169:14 | implicit-field:1 selection of Validation | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:174:5:174:12 | implicit-field:1 selection of Params | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:175:3:175:9 | implicit-field:1 selection of Flash | Origin of readStep is missing a PostUpdateNode. | | examples/booking/app/controllers/hotels.go:176:4:176:10 | booking | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/controllers/hotels.go:184:2:184:2 | implicit read of field Controller | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/init.go:36:44:36:44 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/init.go:40:49:40:49 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/init.go:52:2:52:2 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/init.go:52:2:52:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/init.go:53:2:53:2 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/init.go:53:2:53:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/init.go:54:2:54:2 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/init.go:54:2:54:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/controllers/hotels.go:184:2:184:8 | implicit-field:1 selection of Flash | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/init.go:36:44:36:44 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/init.go:40:49:40:49 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/init.go:52:2:52:2 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/init.go:52:2:52:11 | implicit-deref selection of Response | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/init.go:53:2:53:2 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/init.go:53:2:53:11 | implicit-deref selection of Response | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/init.go:54:2:54:2 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/init.go:54:2:54:11 | implicit-deref selection of Response | Origin of readStep is missing a PostUpdateNode. | | examples/booking/app/models/booking.go:33:13:33:19 | booking | Origin of readStep is missing a PostUpdateNode. | | examples/booking/app/models/booking.go:34:13:34:19 | booking | Origin of readStep is missing a PostUpdateNode. | | examples/booking/app/models/booking.go:35:13:35:19 | booking | Origin of readStep is missing a PostUpdateNode. | @@ -121,7 +121,7 @@ reverseRead | examples/booking/app/models/booking.go:69:3:69:3 | b | Origin of readStep is missing a PostUpdateNode. | | examples/booking/app/models/booking.go:73:39:73:39 | b | Origin of readStep is missing a PostUpdateNode. | | examples/booking/app/models/booking.go:73:47:73:47 | b | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/models/booking.go:81:13:81:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/models/booking.go:82:14:82:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/models/booking.go:83:17:83:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| examples/booking/app/models/booking.go:84:18:84:18 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/models/booking.go:81:13:81:13 | implicit-deref b | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/models/booking.go:82:14:82:14 | implicit-deref b | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/models/booking.go:83:17:83:17 | implicit-deref b | Origin of readStep is missing a PostUpdateNode. | +| examples/booking/app/models/booking.go:84:18:84:18 | implicit-deref b | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.expected b/go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.expected index 3c889cd177cb..5868cd8c3e7b 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.expected @@ -1,17 +1,17 @@ #select | EndToEnd.go:95:20:95:49 | call to Get | EndToEnd.go:95:20:95:27 | selection of Params | EndToEnd.go:95:20:95:49 | call to Get | This path to an untrusted URL redirection depends on a $@. | EndToEnd.go:95:20:95:27 | selection of Params | user-provided value | edges -| EndToEnd.go:95:20:95:27 | implicit dereference | EndToEnd.go:95:20:95:27 | selection of Params [postupdate] | provenance | Config | -| EndToEnd.go:95:20:95:27 | implicit dereference | EndToEnd.go:95:20:95:32 | selection of Form | provenance | Config | -| EndToEnd.go:95:20:95:27 | selection of Params | EndToEnd.go:95:20:95:27 | implicit dereference | provenance | Src:MaD:2 Config | +| EndToEnd.go:95:20:95:27 | implicit-deref selection of Params | EndToEnd.go:95:20:95:27 | selection of Params [postupdate] | provenance | Config | +| EndToEnd.go:95:20:95:27 | implicit-deref selection of Params | EndToEnd.go:95:20:95:32 | selection of Form | provenance | Config | +| EndToEnd.go:95:20:95:27 | selection of Params | EndToEnd.go:95:20:95:27 | implicit-deref selection of Params | provenance | Src:MaD:2 Config | | EndToEnd.go:95:20:95:27 | selection of Params | EndToEnd.go:95:20:95:32 | selection of Form | provenance | Src:MaD:2 Config | -| EndToEnd.go:95:20:95:27 | selection of Params [postupdate] | EndToEnd.go:95:20:95:27 | implicit dereference | provenance | Config | +| EndToEnd.go:95:20:95:27 | selection of Params [postupdate] | EndToEnd.go:95:20:95:27 | implicit-deref selection of Params | provenance | Config | | EndToEnd.go:95:20:95:32 | selection of Form | EndToEnd.go:95:20:95:49 | call to Get | provenance | Config Sink:MaD:1 | models | 1 | Sink: group:revel; Controller; true; Redirect; ; ; Argument[0]; url-redirection; manual | | 2 | Source: group:revel; Controller; true; Params; ; ; ; remote; manual | nodes -| EndToEnd.go:95:20:95:27 | implicit dereference | semmle.label | implicit dereference | +| EndToEnd.go:95:20:95:27 | implicit-deref selection of Params | semmle.label | implicit-deref selection of Params | | EndToEnd.go:95:20:95:27 | selection of Params | semmle.label | selection of Params | | EndToEnd.go:95:20:95:27 | selection of Params [postupdate] | semmle.label | selection of Params [postupdate] | | EndToEnd.go:95:20:95:32 | selection of Form | semmle.label | selection of Form | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/Revel.go b/go/ql/test/library-tests/semmle/go/frameworks/Revel/Revel.go index 219e1dddb4c9..c1a2cc72d9e2 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/Revel.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/Revel.go @@ -64,7 +64,7 @@ func (c myAppController) accessingParamsJSONIsUnsafe() { sink(val2["name"].(string)) } -func (c myAppController) rawRead() { // $ responsebody='argument corresponding to c' +func (c myAppController) rawRead() { // $ responsebody='c' c.ViewArgs["Foo"] = "

      raw HTML

      " // $ responsebody='"

      raw HTML

      "' c.ViewArgs["Bar"] = "

      not raw HTML

      " c.ViewArgs["Foo"] = c.Params.Query // $ responsebody='selection of Query' Alert[go/reflected-xss] diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Bytes.go b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Bytes.go index ac528c46267d..d744819e2807 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Bytes.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Bytes.go @@ -335,6 +335,20 @@ func TaintStepTest_Cutright(sourceCQL interface{}) interface{} { return right } +func TaintStepTest_CutLastleft(sourceCQL interface{}) interface{} { + fromReader628 := sourceCQL.([]byte) + sep := []byte{} + left, _, _ := bytes.CutLast(fromReader628, sep) + return left +} + +func TaintStepTest_CutLastright(sourceCQL interface{}) interface{} { + fromReader628 := sourceCQL.([]byte) + sep := []byte{} + _, right, _ := bytes.CutLast(fromReader628, sep) + return right +} + func TaintStepTest_CutPrefix(sourceCQL interface{}) interface{} { fromReader628 := sourceCQL.([]byte) sep := []byte{} @@ -636,4 +650,14 @@ func RunAllTaints_Bytes() { out := TaintStepTest_BytesBufferPeek(source) sink(55, out) } + { + source := newSource(56) + out := TaintStepTest_CutLastleft(source) + sink(56, out) + } + { + source := newSource(57) + out := TaintStepTest_CutLastright(source) + sink(57, out) + } } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSql.go b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSql.go index 59a61cff31a9..3e2f5af18bba 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSql.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSql.go @@ -2,7 +2,10 @@ package main -import "database/sql" +import ( + "database/sql" + "database/sql/driver" +) func TaintStepTest_DatabaseSqlNamed_B0I0O0(sourceCQL interface{}) interface{} { fromString656 := sourceCQL.(string) @@ -79,6 +82,12 @@ func TaintStepTest_DatabaseSqlConnPrepareContext(sourceCQL interface{}) interfac return intoPrepareResult0 } +func TaintStepTest_DatabaseSqlConvertAssign(sourceCQL interface{}) interface{} { + var destination interface{} + sql.ConvertAssign(driver.ScanContext{}, &destination, sourceCQL) + return destination +} + func RunAllTaints_DatabaseSql() { { source := newSource(0) @@ -135,4 +144,9 @@ func RunAllTaints_DatabaseSql() { out := TaintStepTest_DatabaseSqlConnPrepareContext(source) sink(10, out) } + { + source := newSource(11) + out := TaintStepTest_DatabaseSqlConvertAssign(source) + sink(11, out) + } } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSqlDriver.go b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSqlDriver.go index fe44132e0fb4..ff572e9d889d 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSqlDriver.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/DatabaseSqlDriver.go @@ -45,6 +45,13 @@ func TaintStepTest_DatabaseSqlDriverValuerValue_B0I0O0(sourceCQL interface{}) in return intoValue982 } +func TaintStepTest_DatabaseSqlDriverRowsColumnScannerScanColumn(sourceCQL interface{}) interface{} { + fromRows := sourceCQL.(driver.RowsColumnScanner) + var destination interface{} + fromRows.ScanColumn(driver.ScanContext{}, 0, &destination) + return destination +} + func RunAllTaints_DatabaseSqlDriver() { { source := newSource(0) @@ -76,4 +83,9 @@ func RunAllTaints_DatabaseSqlDriver() { out := TaintStepTest_DatabaseSqlDriverValuerValue_B0I0O0(source) sink(5, out) } + { + source := newSource(6) + out := TaintStepTest_DatabaseSqlDriverRowsColumnScannerScanColumn(source) + sink(6, out) + } } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingJsonJsontext.go b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingJsonJsontext.go new file mode 100644 index 000000000000..771de17ded3f --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/EncodingJsonJsontext.go @@ -0,0 +1,413 @@ +package main + +import ( + "encoding/json/jsontext" + "io" +) + +func TaintStepTest_JsontextAppendFloat_I0(sourceCQL interface{}) interface{} { + fromByte := sourceCQL.([]byte) + intoByte := jsontext.AppendFloat(fromByte, 0, 64) + return intoByte +} + +func TaintStepTest_JsontextAppendFloat_I1(sourceCQL interface{}) interface{} { + fromFloat := sourceCQL.(float64) + intoByte := jsontext.AppendFloat(nil, fromFloat, 64) + return intoByte +} + +func TaintStepTest_JsontextAppendFormat_I0(sourceCQL interface{}) interface{} { + fromByte := sourceCQL.([]byte) + intoByte, _ := jsontext.AppendFormat(fromByte, []byte{}) + return intoByte +} + +func TaintStepTest_JsontextAppendFormat_I1(sourceCQL interface{}) interface{} { + fromByte := sourceCQL.([]byte) + intoByte, _ := jsontext.AppendFormat(nil, fromByte) + return intoByte +} + +func TaintStepTest_JsontextAppendQuote_I0(sourceCQL interface{}) interface{} { + fromByte := sourceCQL.([]byte) + intoByte, _ := jsontext.AppendQuote(fromByte, []byte{}) + return intoByte +} + +func TaintStepTest_JsontextAppendQuote_I1(sourceCQL interface{}) interface{} { + fromString := sourceCQL.(string) + intoByte, _ := jsontext.AppendQuote(nil, fromString) + return intoByte +} + +func TaintStepTest_JsontextAppendUnquote_I0(sourceCQL interface{}) interface{} { + fromByte := sourceCQL.([]byte) + intoByte, _ := jsontext.AppendUnquote(fromByte, []byte{}) + return intoByte +} + +func TaintStepTest_JsontextAppendUnquote_I1(sourceCQL interface{}) interface{} { + fromString := sourceCQL.(string) + intoByte, _ := jsontext.AppendUnquote(nil, fromString) + return intoByte +} + +func TaintStepTest_JsontextNewDecoder(sourceCQL interface{}) interface{} { + fromReader := sourceCQL.(io.Reader) + intoDecoder := jsontext.NewDecoder(fromReader) + return intoDecoder +} + +func TaintStepTest_JsontextNewEncoder(sourceCQL interface{}) interface{} { + fromEncoder := sourceCQL.(*jsontext.Encoder) + var intoWriter io.Writer + intermediateCQL := jsontext.NewEncoder(intoWriter) + link(fromEncoder, intermediateCQL) + return intoWriter +} + +func TaintStepTest_JsontextFloat(sourceCQL interface{}) interface{} { + fromFloat := sourceCQL.(float64) + intoToken := jsontext.Float(fromFloat) + return intoToken +} + +func TaintStepTest_JsontextFloat32(sourceCQL interface{}) interface{} { + fromFloat := sourceCQL.(float32) + intoToken := jsontext.Float32(fromFloat) + return intoToken +} + +func TaintStepTest_JsontextInt(sourceCQL interface{}) interface{} { + fromInt := sourceCQL.(int64) + intoToken := jsontext.Int(fromInt) + return intoToken +} + +func TaintStepTest_JsontextString(sourceCQL interface{}) interface{} { + fromString := sourceCQL.(string) + intoToken := jsontext.String(fromString) + return intoToken +} + +func TaintStepTest_JsontextUint(sourceCQL interface{}) interface{} { + fromUint := sourceCQL.(uint64) + intoToken := jsontext.Uint(fromUint) + return intoToken +} + +func TaintStepTest_JsontextDecoderReadToken(sourceCQL interface{}) interface{} { + fromDecoder := sourceCQL.(jsontext.Decoder) + intoToken, _ := fromDecoder.ReadToken() + return intoToken +} + +func TaintStepTest_JsontextDecoderReadValue(sourceCQL interface{}) interface{} { + fromDecoder := sourceCQL.(jsontext.Decoder) + intoValue, _ := fromDecoder.ReadValue() + return intoValue +} + +func TaintStepTest_JsontextDecoderReset(sourceCQL interface{}) interface{} { + fromReader := sourceCQL.(io.Reader) + var intoDecoder jsontext.Decoder + intoDecoder.Reset(fromReader) + return intoDecoder +} + +func TaintStepTest_JsontextDecoderUnreadBuffer(sourceCQL interface{}) interface{} { + fromDecoder := sourceCQL.(jsontext.Decoder) + intoByte := fromDecoder.UnreadBuffer() + return intoByte +} + +func TaintStepTest_JsontextEncoderReset(sourceCQL interface{}) interface{} { + fromEncoder := sourceCQL.(jsontext.Encoder) + var intoWriter io.Writer + fromEncoder.Reset(intoWriter) + return intoWriter +} + +func TaintStepTest_JsontextEncoderWriteToken(sourceCQL interface{}) interface{} { + fromToken := sourceCQL.(jsontext.Token) + var intoEncoder jsontext.Encoder + intoEncoder.WriteToken(fromToken) + return intoEncoder +} + +func TaintStepTest_JsontextEncoderWriteValue(sourceCQL interface{}) interface{} { + fromValue := sourceCQL.(jsontext.Value) + var intoEncoder jsontext.Encoder + intoEncoder.WriteValue(fromValue) + return intoEncoder +} + +func TaintStepTest_JsontextPointerAppendToken_Receiver(sourceCQL interface{}) interface{} { + fromPointer := sourceCQL.(jsontext.Pointer) + intoPointer := fromPointer.AppendToken("") + return intoPointer +} + +func TaintStepTest_JsontextPointerAppendToken_I0(sourceCQL interface{}) interface{} { + fromString := sourceCQL.(string) + var pointer jsontext.Pointer + intoPointer := pointer.AppendToken(fromString) + return intoPointer +} + +func TaintStepTest_JsontextPointerLastToken(sourceCQL interface{}) interface{} { + fromPointer := sourceCQL.(jsontext.Pointer) + intoString := fromPointer.LastToken() + return intoString +} + +func TaintStepTest_JsontextPointerParent(sourceCQL interface{}) interface{} { + fromPointer := sourceCQL.(jsontext.Pointer) + intoPointer := fromPointer.Parent() + return intoPointer +} + +func TaintStepTest_JsontextTokenClone(sourceCQL interface{}) interface{} { + fromToken := sourceCQL.(jsontext.Token) + intoToken := fromToken.Clone() + return intoToken +} + +func TaintStepTest_JsontextTokenFloat(sourceCQL interface{}) interface{} { + fromToken := sourceCQL.(jsontext.Token) + intoFloat, _ := fromToken.Float() + return intoFloat +} + +func TaintStepTest_JsontextTokenFloat32(sourceCQL interface{}) interface{} { + fromToken := sourceCQL.(jsontext.Token) + intoFloat, _ := fromToken.Float32() + return intoFloat +} + +func TaintStepTest_JsontextTokenInt(sourceCQL interface{}) interface{} { + fromToken := sourceCQL.(jsontext.Token) + intoInt, _ := fromToken.Int() + return intoInt +} + +func TaintStepTest_JsontextTokenString(sourceCQL interface{}) interface{} { + fromToken := sourceCQL.(jsontext.Token) + intoString := fromToken.String() + return intoString +} + +func TaintStepTest_JsontextTokenUint(sourceCQL interface{}) interface{} { + fromToken := sourceCQL.(jsontext.Token) + intoUint, _ := fromToken.Uint() + return intoUint +} + +func TaintStepTest_JsontextValueClone(sourceCQL interface{}) interface{} { + fromValue := sourceCQL.(jsontext.Value) + intoValue := fromValue.Clone() + return intoValue +} + +func TaintStepTest_JsontextValueMarshalJSON(sourceCQL interface{}) interface{} { + fromValue := sourceCQL.(jsontext.Value) + intoByte, _ := fromValue.MarshalJSON() + return intoByte +} + +func TaintStepTest_JsontextValueString(sourceCQL interface{}) interface{} { + fromValue := sourceCQL.(jsontext.Value) + intoString := fromValue.String() + return intoString +} + +func TaintStepTest_JsontextValueUnmarshalJSON(sourceCQL interface{}) interface{} { + fromByte := sourceCQL.([]byte) + var intoValue jsontext.Value + intoValue.UnmarshalJSON(fromByte) + return intoValue +} + +func RunAllTaints_EncodingJsonJsontext() { + { + source := newSource(0) + out := TaintStepTest_JsontextAppendFloat_I0(source) + sink(0, out) + } + { + source := newSource(1) + out := TaintStepTest_JsontextAppendFloat_I1(source) + sink(1, out) + } + { + source := newSource(2) + out := TaintStepTest_JsontextAppendFormat_I0(source) + sink(2, out) + } + { + source := newSource(3) + out := TaintStepTest_JsontextAppendFormat_I1(source) + sink(3, out) + } + { + source := newSource(4) + out := TaintStepTest_JsontextAppendQuote_I0(source) + sink(4, out) + } + { + source := newSource(5) + out := TaintStepTest_JsontextAppendQuote_I1(source) + sink(5, out) + } + { + source := newSource(6) + out := TaintStepTest_JsontextAppendUnquote_I0(source) + sink(6, out) + } + { + source := newSource(7) + out := TaintStepTest_JsontextAppendUnquote_I1(source) + sink(7, out) + } + { + source := newSource(8) + out := TaintStepTest_JsontextNewDecoder(source) + sink(8, out) + } + { + source := newSource(9) + out := TaintStepTest_JsontextNewEncoder(source) + sink(9, out) + } + { + source := newSource(10) + out := TaintStepTest_JsontextFloat(source) + sink(10, out) + } + { + source := newSource(11) + out := TaintStepTest_JsontextFloat32(source) + sink(11, out) + } + { + source := newSource(12) + out := TaintStepTest_JsontextInt(source) + sink(12, out) + } + { + source := newSource(13) + out := TaintStepTest_JsontextString(source) + sink(13, out) + } + { + source := newSource(14) + out := TaintStepTest_JsontextUint(source) + sink(14, out) + } + { + source := newSource(15) + out := TaintStepTest_JsontextDecoderReadToken(source) + sink(15, out) + } + { + source := newSource(16) + out := TaintStepTest_JsontextDecoderReadValue(source) + sink(16, out) + } + { + source := newSource(17) + out := TaintStepTest_JsontextDecoderReset(source) + sink(17, out) + } + { + source := newSource(18) + out := TaintStepTest_JsontextDecoderUnreadBuffer(source) + sink(18, out) + } + { + source := newSource(19) + out := TaintStepTest_JsontextEncoderReset(source) + sink(19, out) + } + { + source := newSource(20) + out := TaintStepTest_JsontextEncoderWriteToken(source) + sink(20, out) + } + { + source := newSource(21) + out := TaintStepTest_JsontextEncoderWriteValue(source) + sink(21, out) + } + { + source := newSource(22) + out := TaintStepTest_JsontextPointerAppendToken_Receiver(source) + sink(22, out) + } + { + source := newSource(23) + out := TaintStepTest_JsontextPointerAppendToken_I0(source) + sink(23, out) + } + { + source := newSource(24) + out := TaintStepTest_JsontextPointerLastToken(source) + sink(24, out) + } + { + source := newSource(25) + out := TaintStepTest_JsontextPointerParent(source) + sink(25, out) + } + { + source := newSource(26) + out := TaintStepTest_JsontextTokenClone(source) + sink(26, out) + } + { + source := newSource(27) + out := TaintStepTest_JsontextTokenFloat(source) + sink(27, out) + } + { + source := newSource(28) + out := TaintStepTest_JsontextTokenFloat32(source) + sink(28, out) + } + { + source := newSource(29) + out := TaintStepTest_JsontextTokenInt(source) + sink(29, out) + } + { + source := newSource(30) + out := TaintStepTest_JsontextTokenString(source) + sink(30, out) + } + { + source := newSource(31) + out := TaintStepTest_JsontextTokenUint(source) + sink(31, out) + } + { + source := newSource(32) + out := TaintStepTest_JsontextValueClone(source) + sink(32, out) + } + { + source := newSource(33) + out := TaintStepTest_JsontextValueMarshalJSON(source) + sink(33, out) + } + { + source := newSource(34) + out := TaintStepTest_JsontextValueString(source) + sink(34, out) + } + { + source := newSource(35) + out := TaintStepTest_JsontextValueUnmarshalJSON(source) + sink(35, out) + } +} diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/NetHttp.go b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/NetHttp.go index ebf7fce029d0..86129bedbff2 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/NetHttp.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/NetHttp.go @@ -6,6 +6,7 @@ import ( "bufio" "io" "net/http" + "net/url" ) func TaintStepTest_NetHttpCanonicalHeaderKey_B0I0O0(sourceCQL interface{}) interface{} { @@ -175,6 +176,16 @@ func TaintStepTest_NetHttpResponseWriterWrite_B0I0O0(sourceCQL interface{}) inte return intoResponseWriter139 } +func TaintStepTest_NetUrlURLClone(sourceCQL interface{}) interface{} { + fromURL := sourceCQL.(*url.URL) + return fromURL.Clone() +} + +func TaintStepTest_NetUrlValuesClone(sourceCQL interface{}) interface{} { + fromValues := sourceCQL.(url.Values) + return fromValues.Clone() +} + func RunAllTaints_NetHttp() { { source := newSource(0) @@ -306,4 +317,14 @@ func RunAllTaints_NetHttp() { out := TaintStepTest_NetHttpResponseWriterWrite_B0I0O0(source) sink(23, out) } + { + source := newSource(26) + out := TaintStepTest_NetUrlURLClone(source) + sink(26, out) + } + { + source := newSource(27) + out := TaintStepTest_NetUrlValuesClone(source) + sink(27, out) + } } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Strings.go b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Strings.go index 878f4809130b..ac152a84c3b5 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Strings.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/Strings.go @@ -7,21 +7,80 @@ import ( "strings" ) +func TaintStepTest_StringsClone(sourceCQL interface{}) interface{} { + return strings.Clone(sourceCQL.(string)) +} + +func TaintStepTest_StringsCutleft(sourceCQL interface{}) interface{} { + left, _, _ := strings.Cut(sourceCQL.(string), "") + return left +} + +func TaintStepTest_StringsCutright(sourceCQL interface{}) interface{} { + _, right, _ := strings.Cut(sourceCQL.(string), "") + return right +} + +func TaintStepTest_StringsCutPrefix(sourceCQL interface{}) interface{} { + result, _ := strings.CutPrefix(sourceCQL.(string), "") + return result +} + +func TaintStepTest_StringsCutSuffix(sourceCQL interface{}) interface{} { + result, _ := strings.CutSuffix(sourceCQL.(string), "") + return result +} + +func TaintStepTest_StringsFieldsFuncSeq(sourceCQL interface{}) interface{} { + for result := range strings.FieldsFuncSeq(sourceCQL.(string), nil) { + return result + } + return "" +} + +func TaintStepTest_StringsFieldsSeq(sourceCQL interface{}) interface{} { + for result := range strings.FieldsSeq(sourceCQL.(string)) { + return result + } + return "" +} + +func TaintStepTest_StringsLines(sourceCQL interface{}) interface{} { + for result := range strings.Lines(sourceCQL.(string)) { + return result + } + return "" +} + +func TaintStepTest_StringsSplitAfterSeq(sourceCQL interface{}) interface{} { + for result := range strings.SplitAfterSeq(sourceCQL.(string), "") { + return result + } + return "" +} + +func TaintStepTest_StringsSplitSeq(sourceCQL interface{}) interface{} { + for result := range strings.SplitSeq(sourceCQL.(string), "") { + return result + } + return "" +} + func TaintStepTest_StringsFields_B0I0O0(sourceCQL interface{}) interface{} { fromString656 := sourceCQL.(string) intoString414 := strings.Fields(fromString656) - return intoString414 + return intoString414[0] } func TaintStepTest_StringsFieldsFunc_B0I0O0(sourceCQL interface{}) interface{} { fromString518 := sourceCQL.(string) intoString650 := strings.FieldsFunc(fromString518, nil) - return intoString650 + return intoString650[0] } func TaintStepTest_StringsJoin_B0I0O0(sourceCQL interface{}) interface{} { - fromString784 := sourceCQL.([]string) - intoString957 := strings.Join(fromString784, "") + fromString784 := sourceCQL.(string) + intoString957 := strings.Join([]string{fromString784}, "") return intoString957 } @@ -231,6 +290,18 @@ func TaintStepTest_StringsBuilderWriteString_B0I0O0(sourceCQL interface{}) inter return intoBuilder389 } +func TaintStepTest_StringsBuilderWriteByte(sourceCQL interface{}) interface{} { + var builder strings.Builder + builder.WriteByte(sourceCQL.(byte)) + return builder +} + +func TaintStepTest_StringsBuilderWriteRune(sourceCQL interface{}) interface{} { + var builder strings.Builder + builder.WriteRune(sourceCQL.(rune)) + return builder +} + func TaintStepTest_StringsReaderRead_B0I0O0(sourceCQL interface{}) interface{} { fromReader198 := sourceCQL.(strings.Reader) var intoByte477 []byte @@ -245,6 +316,18 @@ func TaintStepTest_StringsReaderReadAt_B0I0O0(sourceCQL interface{}) interface{} return intoByte382 } +func TaintStepTest_StringsReaderReadByte(sourceCQL interface{}) interface{} { + reader := sourceCQL.(strings.Reader) + result, _ := reader.ReadByte() + return result +} + +func TaintStepTest_StringsReaderReadRune(sourceCQL interface{}) interface{} { + reader := sourceCQL.(strings.Reader) + result, _, _ := reader.ReadRune() + return result +} + func TaintStepTest_StringsReaderReset_B0I0O0(sourceCQL interface{}) interface{} { fromString715 := sourceCQL.(string) var intoReader179 strings.Reader @@ -274,6 +357,28 @@ func TaintStepTest_StringsReplacerWriteString_B0I0O0(sourceCQL interface{}) inte return intoWriter754 } +func TaintStepTest_StringsReplacerReplaceReceiver(sourceCQL interface{}) interface{} { + return sourceCQL.(*strings.Replacer).Replace("") +} + +func TaintStepTest_StringsReplacerWriteStringReceiver(sourceCQL interface{}) interface{} { + var writer io.Writer + sourceCQL.(*strings.Replacer).WriteString(writer, "") + return writer +} + +func TaintStepTest_StringsCutLastleft(sourceCQL interface{}) interface{} { + fromString := sourceCQL.(string) + left, _, _ := strings.CutLast(fromString, "") + return left +} + +func TaintStepTest_StringsCutLastright(sourceCQL interface{}) interface{} { + fromString := sourceCQL.(string) + _, right, _ := strings.CutLast(fromString, "") + return right +} + func RunAllTaints_Strings() { { source := newSource(0) @@ -490,4 +595,94 @@ func RunAllTaints_Strings() { out := TaintStepTest_StringsReplacerWriteString_B0I0O0(source) sink(42, out) } + { + source := newSource(43) + out := TaintStepTest_StringsCutLastleft(source) + sink(43, out) + } + { + source := newSource(44) + out := TaintStepTest_StringsCutLastright(source) + sink(44, out) + } + { + source := newSource(45) + out := TaintStepTest_StringsClone(source) + sink(45, out) + } + { + source := newSource(46) + out := TaintStepTest_StringsCutleft(source) + sink(46, out) + } + { + source := newSource(47) + out := TaintStepTest_StringsCutright(source) + sink(47, out) + } + { + source := newSource(48) + out := TaintStepTest_StringsCutPrefix(source) + sink(48, out) + } + { + source := newSource(49) + out := TaintStepTest_StringsCutSuffix(source) + sink(49, out) + } + // { + // source := newSource(50) + // out := TaintStepTest_StringsFieldsFuncSeq(source) + // sink(50, out) + // } + // { + // source := newSource(51) + // out := TaintStepTest_StringsFieldsSeq(source) + // sink(51, out) + // } + // { + // source := newSource(52) + // out := TaintStepTest_StringsLines(source) + // sink(52, out) + // } + // { + // source := newSource(53) + // out := TaintStepTest_StringsSplitAfterSeq(source) + // sink(53, out) + // } + // { + // source := newSource(54) + // out := TaintStepTest_StringsSplitSeq(source) + // sink(54, out) + // } + { + source := newSource(55) + out := TaintStepTest_StringsBuilderWriteByte(source) + sink(55, out) + } + { + source := newSource(56) + out := TaintStepTest_StringsBuilderWriteRune(source) + sink(56, out) + } + { + source := newSource(57) + out := TaintStepTest_StringsReaderReadByte(source) + sink(57, out) + } + { + source := newSource(58) + out := TaintStepTest_StringsReaderReadRune(source) + sink(58, out) + } + { + source := newSource(59) + out := TaintStepTest_StringsReplacerReplaceReceiver(source) + sink(59, out) + } + { + source := newSource(60) + out := TaintStepTest_StringsReplacerWriteStringReceiver(source) + sink(60, out) + } } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/go.mod b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/go.mod index 1a8220297f27..50e9957cce14 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/go.mod +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/go.mod @@ -1,6 +1,6 @@ module example.com/m -go 1.26 +go 1.27 require ( golang.org/x/net v0.0.0-20201010224723-4f7140c49acb diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/CONSISTENCY/DataFlowConsistency.expected index c7680b2b6ca1..22b7e84f85e2 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/SystemCommandExecutors/CONSISTENCY/DataFlowConsistency.expected @@ -1,2 +1,2 @@ reverseRead -| SystemCommandExecutors.go:25:12:25:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| SystemCommandExecutors.go:25:12:25:14 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/CONSISTENCY/DataFlowConsistency.expected index f07ffbe60cfe..716050b1f160 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/CONSISTENCY/DataFlowConsistency.expected @@ -1,3 +1,3 @@ reverseRead -| main.go:28:2:28:4 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:34:2:34:4 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| main.go:28:2:28:4 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| main.go:34:2:34:4 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected b/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected index cfbbc771f777..98381fa1ed1c 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected @@ -1,12 +1,12 @@ invalidModelRow #select -| crypto.go:9:14:9:31 | call to NewCipher | crypto.go:9:2:9:31 | ... := ...[0] | -| crypto.go:9:14:9:31 | call to NewCipher | crypto.go:9:2:9:31 | ... := ...[1] | -| crypto.go:10:15:10:34 | call to NewGCM | crypto.go:10:2:10:34 | ... := ...[0] | -| crypto.go:10:15:10:34 | call to NewGCM | crypto.go:10:2:10:34 | ... := ...[1] | -| crypto.go:11:18:11:57 | call to Open | crypto.go:11:2:11:57 | ... := ...[0] | -| crypto.go:11:18:11:57 | call to Open | crypto.go:11:2:11:57 | ... := ...[1] | -| crypto.go:11:42:11:51 | ciphertext | crypto.go:11:2:11:57 | ... := ...[0] | +| crypto.go:9:14:9:31 | call to NewCipher | crypto.go:9:2:9:31 | extract:0 ... := ... | +| crypto.go:9:14:9:31 | call to NewCipher | crypto.go:9:2:9:31 | extract:1 ... := ... | +| crypto.go:10:15:10:34 | call to NewGCM | crypto.go:10:2:10:34 | extract:0 ... := ... | +| crypto.go:10:15:10:34 | call to NewGCM | crypto.go:10:2:10:34 | extract:1 ... := ... | +| crypto.go:11:18:11:57 | call to Open | crypto.go:11:2:11:57 | extract:0 ... := ... | +| crypto.go:11:18:11:57 | call to Open | crypto.go:11:2:11:57 | extract:1 ... := ... | +| crypto.go:11:42:11:51 | ciphertext | crypto.go:11:2:11:57 | extract:0 ... := ... | | io.go:14:31:14:43 | "some string" | io.go:14:13:14:44 | call to NewReader | | io.go:16:23:16:27 | &... | io.go:16:24:16:27 | buf1 [postupdate] | | io.go:16:23:16:27 | &... [postupdate] | io.go:16:24:16:27 | buf1 [postupdate] | @@ -31,9 +31,9 @@ invalidModelRow | io.go:33:20:33:23 | buf1 | io.go:33:19:33:23 | &... | | io.go:33:20:33:23 | buf1 [postupdate] | io.go:33:19:33:23 | &... | | io.go:35:16:35:21 | reader | io.go:35:12:35:13 | w2 [postupdate] | -| io.go:39:11:39:19 | call to Pipe | io.go:39:3:39:19 | ... := ...[0] | -| io.go:39:11:39:19 | call to Pipe | io.go:39:3:39:19 | ... := ...[1] | -| io.go:40:14:40:14 | w [postupdate] | io.go:39:3:39:19 | ... := ...[0] | +| io.go:39:11:39:19 | call to Pipe | io.go:39:3:39:19 | extract:0 ... := ... | +| io.go:39:11:39:19 | call to Pipe | io.go:39:3:39:19 | extract:1 ... := ... | +| io.go:40:14:40:14 | w [postupdate] | io.go:39:3:39:19 | extract:0 ... := ... | | io.go:40:17:40:31 | "some string\\n" | io.go:40:14:40:14 | w [postupdate] | | io.go:43:16:43:16 | r | io.go:43:3:43:5 | buf [postupdate] | | io.go:44:13:44:15 | buf | io.go:44:13:44:24 | call to String | @@ -74,35 +74,35 @@ invalidModelRow | io.go:101:26:101:38 | "some string" | io.go:101:8:101:39 | call to NewReader | | io.go:102:3:102:3 | r | io.go:102:13:102:21 | selection of Stdout [postupdate] | | io.go:108:30:108:42 | "some string" | io.go:108:12:108:43 | call to NewReader | -| io.go:109:12:109:33 | call to ReadAll | io.go:109:2:109:33 | ... := ...[0] | -| io.go:109:12:109:33 | call to ReadAll | io.go:109:2:109:33 | ... := ...[1] | -| io.go:109:27:109:32 | reader | io.go:109:2:109:33 | ... := ...[0] | +| io.go:109:12:109:33 | call to ReadAll | io.go:109:2:109:33 | extract:0 ... := ... | +| io.go:109:12:109:33 | call to ReadAll | io.go:109:2:109:33 | extract:1 ... := ... | +| io.go:109:27:109:32 | reader | io.go:109:2:109:33 | extract:0 ... := ... | | io.go:110:18:110:20 | buf | io.go:110:2:110:10 | selection of Stdout [postupdate] | -| main.go:11:12:11:26 | call to Marshal | main.go:11:2:11:26 | ... := ...[0] | -| main.go:11:12:11:26 | call to Marshal | main.go:11:2:11:26 | ... := ...[1] | -| main.go:11:25:11:25 | v | main.go:11:2:11:26 | ... := ...[0] | -| main.go:13:14:13:52 | call to MarshalIndent | main.go:13:2:13:52 | ... := ...[0] | -| main.go:13:14:13:52 | call to MarshalIndent | main.go:13:2:13:52 | ... := ...[1] | -| main.go:13:33:13:33 | v | main.go:13:2:13:52 | ... := ...[0] | -| main.go:13:36:13:45 | "/*JSON*/" | main.go:13:2:13:52 | ... := ...[0] | -| main.go:13:48:13:51 | " " | main.go:13:2:13:52 | ... := ...[0] | +| main.go:11:12:11:26 | call to Marshal | main.go:11:2:11:26 | extract:0 ... := ... | +| main.go:11:12:11:26 | call to Marshal | main.go:11:2:11:26 | extract:1 ... := ... | +| main.go:11:25:11:25 | v | main.go:11:2:11:26 | extract:0 ... := ... | +| main.go:13:14:13:52 | call to MarshalIndent | main.go:13:2:13:52 | extract:0 ... := ... | +| main.go:13:14:13:52 | call to MarshalIndent | main.go:13:2:13:52 | extract:1 ... := ... | +| main.go:13:33:13:33 | v | main.go:13:2:13:52 | extract:0 ... := ... | +| main.go:13:36:13:45 | "/*JSON*/" | main.go:13:2:13:52 | extract:0 ... := ... | +| main.go:13:48:13:51 | " " | main.go:13:2:13:52 | extract:0 ... := ... | | main.go:14:25:14:25 | b | main.go:14:9:14:41 | slice literal | | main.go:14:28:14:30 | err | main.go:14:9:14:41 | slice literal | | main.go:14:33:14:34 | b2 | main.go:14:9:14:41 | slice literal | | main.go:14:37:14:40 | err2 | main.go:14:9:14:41 | slice literal | -| main.go:19:18:19:42 | call to DecodeString | main.go:19:2:19:42 | ... := ...[0] | -| main.go:19:18:19:42 | call to DecodeString | main.go:19:2:19:42 | ... := ...[1] | -| main.go:19:35:19:41 | encoded | main.go:19:2:19:42 | ... := ...[0] | +| main.go:19:18:19:42 | call to DecodeString | main.go:19:2:19:42 | extract:0 ... := ... | +| main.go:19:18:19:42 | call to DecodeString | main.go:19:2:19:42 | extract:1 ... := ... | +| main.go:19:35:19:41 | encoded | main.go:19:2:19:42 | extract:0 ... := ... | | main.go:23:25:23:31 | decoded | main.go:23:9:23:48 | slice literal | | main.go:23:34:23:36 | err | main.go:23:9:23:48 | slice literal | | main.go:23:39:23:47 | reEncoded | main.go:23:9:23:48 | slice literal | -| main.go:28:2:28:4 | implicit dereference | main.go:28:2:28:4 | req [postupdate] | -| main.go:28:2:28:4 | implicit dereference | main.go:28:2:28:9 | selection of Body | -| main.go:28:2:28:4 | req | main.go:28:2:28:4 | implicit dereference | -| main.go:28:2:28:4 | req [postupdate] | main.go:28:2:28:4 | implicit dereference | +| main.go:28:2:28:4 | implicit-deref req | main.go:28:2:28:4 | req [postupdate] | +| main.go:28:2:28:4 | implicit-deref req | main.go:28:2:28:9 | selection of Body | +| main.go:28:2:28:4 | req | main.go:28:2:28:4 | implicit-deref req | +| main.go:28:2:28:4 | req [postupdate] | main.go:28:2:28:4 | implicit-deref req | | main.go:28:2:28:9 | selection of Body | main.go:28:16:28:16 | b [postupdate] | -| main.go:34:2:34:4 | implicit dereference | main.go:34:2:34:4 | req [postupdate] | -| main.go:34:2:34:4 | implicit dereference | main.go:34:2:34:9 | selection of Body | -| main.go:34:2:34:4 | req | main.go:34:2:34:4 | implicit dereference | -| main.go:34:2:34:4 | req [postupdate] | main.go:34:2:34:4 | implicit dereference | +| main.go:34:2:34:4 | implicit-deref req | main.go:34:2:34:4 | req [postupdate] | +| main.go:34:2:34:4 | implicit-deref req | main.go:34:2:34:9 | selection of Body | +| main.go:34:2:34:4 | req | main.go:34:2:34:4 | implicit-deref req | +| main.go:34:2:34:4 | req [postupdate] | main.go:34:2:34:4 | implicit-deref req | | main.go:34:2:34:9 | selection of Body | main.go:34:16:34:16 | b [postupdate] | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Twirp/CONSISTENCY/CfgConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Twirp/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Twirp/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Twirp/CONSISTENCY/DataFlowConsistency.expected index d4e53cf33a9a..71165fc94b07 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Twirp/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Twirp/CONSISTENCY/DataFlowConsistency.expected @@ -7,91 +7,91 @@ reverseRead | rpc/notes/service.pb.go:155:9:155:45 | file_rpc_notes_service_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.pb.go:182:10:182:46 | file_rpc_notes_service_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.pb.go:195:9:195:45 | file_rpc_notes_service_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:297:13:297:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:299:13:299:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:301:13:301:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:309:13:309:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:311:13:311:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:313:13:313:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:321:13:321:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:323:13:323:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:325:13:325:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:333:13:333:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:335:13:335:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.pb.go:337:13:337:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:297:13:297:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:299:13:299:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:301:13:301:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:309:13:309:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:311:13:311:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:313:13:313:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:321:13:321:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:323:13:323:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:325:13:325:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:333:13:333:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:335:13:335:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.pb.go:337:13:337:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:82:40:82:49 | clientOpts | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:118:37:118:37 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:118:37:118:37 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:118:47:118:52 | selection of opts | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:124:24:124:29 | selection of opts | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:128:34:128:39 | selection of opts | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:164:37:164:37 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:164:37:164:37 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:164:47:164:52 | selection of opts | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:170:24:170:29 | selection of opts | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:174:34:174:39 | selection of opts | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:221:40:221:49 | clientOpts | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:257:33:257:33 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:257:33:257:33 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:257:43:257:48 | selection of opts | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:263:24:263:29 | selection of opts | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:267:34:267:39 | selection of opts | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:303:33:303:33 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:303:33:303:33 | implicit-deref c | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:303:43:303:48 | selection of opts | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:309:24:309:29 | selection of opts | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:313:34:313:39 | selection of opts | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:350:45:350:54 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:360:29:360:29 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:389:38:389:38 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:397:58:397:60 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:402:47:402:49 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:404:48:404:50 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:405:58:405:60 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:409:95:409:97 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:410:58:410:60 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:422:48:422:50 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:423:58:423:60 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:429:12:429:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:440:53:440:55 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:441:43:441:45 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:449:36:449:36 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:455:23:455:25 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:477:13:477:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:494:41:494:41 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:507:34:507:34 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:524:24:524:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:526:24:526:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:532:36:532:36 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:538:25:538:27 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:558:13:558:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:575:41:575:41 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:588:34:588:34 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:603:24:603:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:605:24:605:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:609:12:609:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:620:53:620:55 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:621:43:621:45 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:629:36:629:36 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:635:23:635:25 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:657:13:657:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:674:41:674:41 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:687:34:687:34 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:704:24:704:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:706:24:706:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:712:36:712:36 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:718:25:718:27 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:738:13:738:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:755:41:755:41 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:768:34:768:34 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:783:24:783:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:785:24:785:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:350:45:350:54 | implicit-deref serverOpts | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:360:29:360:29 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:389:38:389:38 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:397:58:397:60 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:402:47:402:49 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:404:48:404:50 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:405:58:405:60 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:409:95:409:97 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:410:58:410:60 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:422:48:422:50 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:423:58:423:60 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:429:12:429:14 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:440:53:440:55 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:441:43:441:45 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:449:36:449:36 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:455:23:455:25 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:477:13:477:13 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:494:41:494:41 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:507:34:507:34 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:524:24:524:24 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:526:24:526:24 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:532:36:532:36 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:538:25:538:27 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:558:13:558:13 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:575:41:575:41 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:588:34:588:34 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:603:24:603:24 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:605:24:605:24 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:609:12:609:14 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:620:53:620:55 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:621:43:621:45 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:629:36:629:36 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:635:23:635:25 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:657:13:657:13 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:674:41:674:41 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:687:34:687:34 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:704:24:704:24 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:706:24:706:24 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:712:36:712:36 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:718:25:718:27 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:738:13:738:13 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:755:41:755:41 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:768:34:768:34 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:783:24:783:24 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:785:24:785:24 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | | rpc/notes/service.twirp.go:969:8:969:13 | copied | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:984:2:984:4 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:985:2:985:4 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:986:2:986:4 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:1032:15:1032:18 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:1037:35:1037:38 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:1116:66:1116:66 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:1159:98:1159:98 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:1227:21:1227:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:1237:35:1237:38 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:1278:11:1278:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| rpc/notes/service.twirp.go:1292:23:1292:26 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| server/main.go:33:19:33:19 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:984:2:984:4 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:985:2:985:4 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:986:2:986:4 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:1032:15:1032:18 | implicit-deref resp | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:1037:35:1037:38 | implicit-deref resp | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:1116:66:1116:66 | implicit-deref e | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:1159:98:1159:98 | implicit-deref e | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:1227:21:1227:24 | implicit-deref resp | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:1237:35:1237:38 | implicit-deref resp | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:1278:11:1278:14 | implicit-deref resp | Origin of readStep is missing a PostUpdateNode. | +| rpc/notes/service.twirp.go:1292:23:1292:26 | implicit-deref resp | Origin of readStep is missing a PostUpdateNode. | +| server/main.go:33:19:33:19 | implicit-deref s | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected b/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected index a50f131a747c..483cd2702ca6 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected @@ -4,8 +4,8 @@ edges | client/main.go:16:35:16:78 | &... | server/main.go:19:56:19:61 | SSA def(params) | provenance | | | client/main.go:16:35:16:78 | &... [postupdate] | client/main.go:16:35:16:78 | &... | provenance | | -| rpc/notes/service.twirp.go:538:2:538:33 | ... := ...[0] | rpc/notes/service.twirp.go:544:27:544:29 | buf | provenance | | -| rpc/notes/service.twirp.go:538:25:538:32 | selection of Body | rpc/notes/service.twirp.go:538:2:538:33 | ... := ...[0] | provenance | Src:MaD:1 MaD:3 | +| rpc/notes/service.twirp.go:538:2:538:33 | extract:0 ... := ... | rpc/notes/service.twirp.go:544:27:544:29 | buf | provenance | | +| rpc/notes/service.twirp.go:538:25:538:32 | selection of Body | rpc/notes/service.twirp.go:538:2:538:33 | extract:0 ... := ... | provenance | Src:MaD:1 MaD:3 | | rpc/notes/service.twirp.go:544:27:544:29 | buf | rpc/notes/service.twirp.go:544:32:544:41 | reqContent [postupdate] | provenance | MaD:2 | | rpc/notes/service.twirp.go:544:32:544:41 | reqContent [postupdate] | rpc/notes/service.twirp.go:574:2:577:2 | SSA def(reqContent) | provenance | | | rpc/notes/service.twirp.go:574:2:577:2 | SSA def(reqContent) | rpc/notes/service.twirp.go:576:35:576:44 | reqContent | provenance | | @@ -21,7 +21,7 @@ models nodes | client/main.go:16:35:16:78 | &... | semmle.label | &... | | client/main.go:16:35:16:78 | &... [postupdate] | semmle.label | &... [postupdate] | -| rpc/notes/service.twirp.go:538:2:538:33 | ... := ...[0] | semmle.label | ... := ...[0] | +| rpc/notes/service.twirp.go:538:2:538:33 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | rpc/notes/service.twirp.go:538:25:538:32 | selection of Body | semmle.label | selection of Body | | rpc/notes/service.twirp.go:544:27:544:29 | buf | semmle.label | buf | | rpc/notes/service.twirp.go:544:32:544:41 | reqContent [postupdate] | semmle.label | reqContent [postupdate] | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/CONSISTENCY/DataFlowConsistency.expected index ace7b23eded1..980efad53219 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/CONSISTENCY/DataFlowConsistency.expected @@ -1,2 +1,2 @@ reverseRead -| WebSocketReadWrite.go:27:9:27:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| WebSocketReadWrite.go:27:9:27:9 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/Read.expected b/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/Read.expected index 4c4bd0743d24..0eea39ca3ae4 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/Read.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/Read.expected @@ -1,8 +1,8 @@ | WebSocketReadWrite.go:32:11:32:14 | xnet [postupdate] | | WebSocketReadWrite.go:36:21:36:25 | xnet2 [postupdate] | -| WebSocketReadWrite.go:41:3:41:40 | ... := ...[1] | -| WebSocketReadWrite.go:44:3:44:48 | ... := ...[1] | +| WebSocketReadWrite.go:41:3:41:40 | extract:1 ... := ... | +| WebSocketReadWrite.go:44:3:44:48 | extract:1 ... := ... | | WebSocketReadWrite.go:52:26:52:35 | gorillaMsg [postupdate] | | WebSocketReadWrite.go:56:17:56:24 | gorilla2 [postupdate] | -| WebSocketReadWrite.go:61:3:61:38 | ... := ...[1] | -| WebSocketReadWrite.go:67:3:67:36 | ... := ...[0] | +| WebSocketReadWrite.go:61:3:61:38 | extract:1 ... := ... | +| WebSocketReadWrite.go:67:3:67:36 | extract:0 ... := ... | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/RemoteFlowSources.expected b/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/RemoteFlowSources.expected index e0c1603ff2e9..17d1e7adaf4b 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/RemoteFlowSources.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/WebSocket/RemoteFlowSources.expected @@ -1,9 +1,9 @@ | WebSocketReadWrite.go:27:9:27:16 | selection of Header | | WebSocketReadWrite.go:32:11:32:14 | xnet [postupdate] | | WebSocketReadWrite.go:36:21:36:25 | xnet2 [postupdate] | -| WebSocketReadWrite.go:41:3:41:40 | ... := ...[1] | -| WebSocketReadWrite.go:44:3:44:48 | ... := ...[1] | +| WebSocketReadWrite.go:41:3:41:40 | extract:1 ... := ... | +| WebSocketReadWrite.go:44:3:44:48 | extract:1 ... := ... | | WebSocketReadWrite.go:52:26:52:35 | gorillaMsg [postupdate] | | WebSocketReadWrite.go:56:17:56:24 | gorilla2 [postupdate] | -| WebSocketReadWrite.go:61:3:61:38 | ... := ...[1] | -| WebSocketReadWrite.go:67:3:67:36 | ... := ...[0] | +| WebSocketReadWrite.go:61:3:61:38 | extract:1 ... := ... | +| WebSocketReadWrite.go:67:3:67:36 | extract:0 ... := ... | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/CONSISTENCY/DataFlowConsistency.expected index e938aa2ca923..5cdc979ed6b1 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/CONSISTENCY/DataFlowConsistency.expected @@ -1,12 +1,12 @@ reverseRead -| test.go:12:12:12:18 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:17:24:17:30 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:20:36:20:42 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:23:33:23:39 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:12:12:12:18 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:17:24:17:30 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:20:36:20:42 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:23:33:23:39 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | | test.go:24:22:24:26 | nodes | Origin of readStep is missing a PostUpdateNode. | -| test.go:26:45:26:51 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:26:45:26:51 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | | test.go:27:22:27:27 | nodes2 | Origin of readStep is missing a PostUpdateNode. | -| test.go:31:33:31:39 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:39:49:39:55 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:43:31:43:37 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| test.go:48:32:48:38 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| test.go:31:33:31:39 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:39:49:39:55 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:43:31:43:37 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| test.go:48:32:48:38 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected index 17c74de55552..8cd9603077e7 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected @@ -19,15 +19,15 @@ edges | test.go:12:12:12:44 | call to Get | test.go:15:42:15:47 | param1 | provenance | | | test.go:15:22:15:48 | call to UnescapeString | test.go:15:15:15:49 | type conversion | provenance | | | test.go:15:42:15:47 | param1 | test.go:15:22:15:48 | call to UnescapeString | provenance | MaD:9 | -| test.go:17:2:17:36 | ... := ...[0] | test.go:18:15:18:31 | type conversion | provenance | | -| test.go:17:2:17:36 | ... := ...[0] | test.go:29:22:29:25 | node | provenance | | -| test.go:17:24:17:35 | selection of Body | test.go:17:2:17:36 | ... := ...[0] | provenance | Src:MaD:1 MaD:5 | -| test.go:20:2:20:48 | ... := ...[0] | test.go:21:15:21:32 | type conversion | provenance | | -| test.go:20:36:20:47 | selection of Body | test.go:20:2:20:48 | ... := ...[0] | provenance | Src:MaD:1 MaD:8 | -| test.go:23:2:23:50 | ... := ...[0] | test.go:24:15:24:35 | type conversion | provenance | | -| test.go:23:33:23:44 | selection of Body | test.go:23:2:23:50 | ... := ...[0] | provenance | Src:MaD:1 MaD:6 | -| test.go:26:2:26:62 | ... := ...[0] | test.go:27:15:27:36 | type conversion | provenance | | -| test.go:26:45:26:56 | selection of Body | test.go:26:2:26:62 | ... := ...[0] | provenance | Src:MaD:1 MaD:7 | +| test.go:17:2:17:36 | extract:0 ... := ... | test.go:18:15:18:31 | type conversion | provenance | | +| test.go:17:2:17:36 | extract:0 ... := ... | test.go:29:22:29:25 | node | provenance | | +| test.go:17:24:17:35 | selection of Body | test.go:17:2:17:36 | extract:0 ... := ... | provenance | Src:MaD:1 MaD:5 | +| test.go:20:2:20:48 | extract:0 ... := ... | test.go:21:15:21:32 | type conversion | provenance | | +| test.go:20:36:20:47 | selection of Body | test.go:20:2:20:48 | extract:0 ... := ... | provenance | Src:MaD:1 MaD:8 | +| test.go:23:2:23:50 | extract:0 ... := ... | test.go:24:15:24:35 | type conversion | provenance | | +| test.go:23:33:23:44 | selection of Body | test.go:23:2:23:50 | extract:0 ... := ... | provenance | Src:MaD:1 MaD:6 | +| test.go:26:2:26:62 | extract:0 ... := ... | test.go:27:15:27:36 | type conversion | provenance | | +| test.go:26:45:26:56 | selection of Body | test.go:26:2:26:62 | extract:0 ... := ... | provenance | Src:MaD:1 MaD:7 | | test.go:31:15:31:45 | call to NewTokenizer | test.go:32:15:32:23 | tokenizer | provenance | | | test.go:31:15:31:45 | call to NewTokenizer | test.go:33:15:33:23 | tokenizer | provenance | | | test.go:31:15:31:45 | call to NewTokenizer | test.go:34:17:34:25 | tokenizer | provenance | | @@ -36,24 +36,24 @@ edges | test.go:31:33:31:44 | selection of Body | test.go:31:15:31:45 | call to NewTokenizer | provenance | Src:MaD:1 MaD:3 | | test.go:32:15:32:23 | tokenizer | test.go:32:15:32:34 | call to Buffered | provenance | MaD:12 | | test.go:33:15:33:23 | tokenizer | test.go:33:15:33:29 | call to Raw | provenance | MaD:13 | -| test.go:34:2:34:35 | ... := ...[1] | test.go:35:15:35:19 | value | provenance | | -| test.go:34:17:34:25 | tokenizer | test.go:34:2:34:35 | ... := ...[1] | provenance | MaD:14 | +| test.go:34:2:34:35 | extract:1 ... := ... | test.go:35:15:35:19 | value | provenance | | +| test.go:34:17:34:25 | tokenizer | test.go:34:2:34:35 | extract:1 ... := ... | provenance | MaD:14 | | test.go:36:15:36:23 | tokenizer | test.go:36:15:36:30 | call to Text | provenance | MaD:15 | | test.go:37:22:37:30 | tokenizer | test.go:37:22:37:38 | call to Token | provenance | MaD:16 | | test.go:37:22:37:38 | call to Token | test.go:37:15:37:44 | type conversion | provenance | | | test.go:39:23:39:77 | call to NewTokenizerFragment | test.go:40:15:40:31 | tokenizerFragment | provenance | | | test.go:39:49:39:60 | selection of Body | test.go:39:23:39:77 | call to NewTokenizerFragment | provenance | Src:MaD:1 MaD:4 | | test.go:40:15:40:31 | tokenizerFragment | test.go:40:15:40:42 | call to Buffered | provenance | MaD:12 | -| test.go:43:2:43:43 | ... := ...[0] | test.go:44:24:44:34 | taintedNode | provenance | | -| test.go:43:31:43:42 | selection of Body | test.go:43:2:43:43 | ... := ...[0] | provenance | Src:MaD:1 MaD:5 | +| test.go:43:2:43:43 | extract:0 ... := ... | test.go:44:24:44:34 | taintedNode | provenance | | +| test.go:43:31:43:42 | selection of Body | test.go:43:2:43:43 | extract:0 ... := ... | provenance | Src:MaD:1 MaD:5 | | test.go:44:2:44:10 | cleanNode [postupdate] | test.go:45:22:45:31 | &... | provenance | | | test.go:44:2:44:10 | cleanNode [postupdate] | test.go:45:23:45:31 | cleanNode | provenance | | | test.go:44:24:44:34 | taintedNode | test.go:44:2:44:10 | cleanNode [postupdate] | provenance | MaD:10 | | test.go:45:22:45:31 | &... [pointer] | test.go:45:22:45:31 | &... | provenance | | | test.go:45:23:45:31 | cleanNode | test.go:45:22:45:31 | &... | provenance | | | test.go:45:23:45:31 | cleanNode | test.go:45:22:45:31 | &... [pointer] | provenance | | -| test.go:48:2:48:44 | ... := ...[0] | test.go:49:26:49:37 | taintedNode2 | provenance | | -| test.go:48:32:48:43 | selection of Body | test.go:48:2:48:44 | ... := ...[0] | provenance | Src:MaD:1 MaD:5 | +| test.go:48:2:48:44 | extract:0 ... := ... | test.go:49:26:49:37 | taintedNode2 | provenance | | +| test.go:48:32:48:43 | selection of Body | test.go:48:2:48:44 | extract:0 ... := ... | provenance | Src:MaD:1 MaD:5 | | test.go:49:2:49:11 | cleanNode2 [postupdate] | test.go:50:22:50:32 | &... | provenance | | | test.go:49:2:49:11 | cleanNode2 [postupdate] | test.go:50:23:50:32 | cleanNode2 | provenance | | | test.go:49:26:49:37 | taintedNode2 | test.go:49:2:49:11 | cleanNode2 [postupdate] | provenance | MaD:11 | @@ -86,16 +86,16 @@ nodes | test.go:15:15:15:49 | type conversion | semmle.label | type conversion | | test.go:15:22:15:48 | call to UnescapeString | semmle.label | call to UnescapeString | | test.go:15:42:15:47 | param1 | semmle.label | param1 | -| test.go:17:2:17:36 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:17:2:17:36 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:17:24:17:35 | selection of Body | semmle.label | selection of Body | | test.go:18:15:18:31 | type conversion | semmle.label | type conversion | -| test.go:20:2:20:48 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:20:2:20:48 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:20:36:20:47 | selection of Body | semmle.label | selection of Body | | test.go:21:15:21:32 | type conversion | semmle.label | type conversion | -| test.go:23:2:23:50 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:23:2:23:50 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:23:33:23:44 | selection of Body | semmle.label | selection of Body | | test.go:24:15:24:35 | type conversion | semmle.label | type conversion | -| test.go:26:2:26:62 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:26:2:26:62 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:26:45:26:56 | selection of Body | semmle.label | selection of Body | | test.go:27:15:27:36 | type conversion | semmle.label | type conversion | | test.go:29:22:29:25 | node | semmle.label | node | @@ -105,7 +105,7 @@ nodes | test.go:32:15:32:34 | call to Buffered | semmle.label | call to Buffered | | test.go:33:15:33:23 | tokenizer | semmle.label | tokenizer | | test.go:33:15:33:29 | call to Raw | semmle.label | call to Raw | -| test.go:34:2:34:35 | ... := ...[1] | semmle.label | ... := ...[1] | +| test.go:34:2:34:35 | extract:1 ... := ... | semmle.label | extract:1 ... := ... | | test.go:34:17:34:25 | tokenizer | semmle.label | tokenizer | | test.go:35:15:35:19 | value | semmle.label | value | | test.go:36:15:36:23 | tokenizer | semmle.label | tokenizer | @@ -117,14 +117,14 @@ nodes | test.go:39:49:39:60 | selection of Body | semmle.label | selection of Body | | test.go:40:15:40:31 | tokenizerFragment | semmle.label | tokenizerFragment | | test.go:40:15:40:42 | call to Buffered | semmle.label | call to Buffered | -| test.go:43:2:43:43 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:43:2:43:43 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:43:31:43:42 | selection of Body | semmle.label | selection of Body | | test.go:44:2:44:10 | cleanNode [postupdate] | semmle.label | cleanNode [postupdate] | | test.go:44:24:44:34 | taintedNode | semmle.label | taintedNode | | test.go:45:22:45:31 | &... | semmle.label | &... | | test.go:45:22:45:31 | &... [pointer] | semmle.label | &... [pointer] | | test.go:45:23:45:31 | cleanNode | semmle.label | cleanNode | -| test.go:48:2:48:44 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:48:2:48:44 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:48:32:48:43 | selection of Body | semmle.label | selection of Body | | test.go:49:2:49:11 | cleanNode2 [postupdate] | semmle.label | cleanNode2 [postupdate] | | test.go:49:26:49:37 | taintedNode2 | semmle.label | taintedNode2 | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected index 8b2f05c297f8..6a229e1f37df 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected @@ -1,14 +1,14 @@ #select -| test.go:57:11:57:41 | call to EscapeString | test.go:56:2:56:42 | ... := ...[0] | test.go:57:11:57:41 | call to EscapeString | This query depends on a $@. | test.go:56:2:56:42 | ... := ...[0] | user-provided value | +| test.go:57:11:57:41 | call to EscapeString | test.go:56:2:56:42 | extract:0 ... := ... | test.go:57:11:57:41 | call to EscapeString | This query depends on a $@. | test.go:56:2:56:42 | extract:0 ... := ... | user-provided value | edges -| test.go:56:2:56:42 | ... := ...[0] | test.go:57:29:57:40 | selection of Value | provenance | Src:MaD:2 | +| test.go:56:2:56:42 | extract:0 ... := ... | test.go:57:29:57:40 | selection of Value | provenance | Src:MaD:2 | | test.go:57:29:57:40 | selection of Value | test.go:57:11:57:41 | call to EscapeString | provenance | MaD:3 Sink:MaD:1 | models | 1 | Sink: database/sql; DB; true; Query; ; ; Argument[0]; sql-injection; manual | | 2 | Source: net/http; Request; true; Cookie; ; ; ReturnValue[0]; remote; manual | | 3 | Summary: golang.org/x/net/html; ; false; EscapeString; ; ; Argument[0]; ReturnValue; taint; manual | nodes -| test.go:56:2:56:42 | ... := ...[0] | semmle.label | ... := ...[0] | +| test.go:56:2:56:42 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | test.go:57:11:57:41 | call to EscapeString | semmle.label | call to EscapeString | | test.go:57:29:57:40 | selection of Value | semmle.label | selection of Value | subpaths diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/yaml.go b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/yaml.go index 388d884f38b7..68b2c657d748 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/yaml.go +++ b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/yaml.go @@ -12,10 +12,10 @@ func main() { var in, out interface{} var inb []byte - out, _ = yaml1.Marshal(in) // $ marshaler="yaml: in -> ... = ...[0]" ttfnmodelstep="in -> ... = ...[0]" + out, _ = yaml1.Marshal(in) // $ marshaler="yaml: in -> extract:0 ... = ..." ttfnmodelstep="in -> extract:0 ... = ..." yaml1.Unmarshal(inb, out) // $ unmarshaler="yaml: inb -> out [postupdate]" ttfnmodelstep="inb -> out [postupdate]" - out, _ = yaml2.Marshal(in) // $ marshaler="yaml: in -> ... = ...[0]" ttfnmodelstep="in -> ... = ...[0]" + out, _ = yaml2.Marshal(in) // $ marshaler="yaml: in -> extract:0 ... = ..." ttfnmodelstep="in -> extract:0 ... = ..." yaml2.Unmarshal(inb, out) // $ unmarshaler="yaml: inb -> out [postupdate]" ttfnmodelstep="inb -> out [postupdate]" yaml2.UnmarshalStrict(inb, out) // $ unmarshaler="yaml: inb -> out [postupdate]" ttfnmodelstep="inb -> out [postupdate]" @@ -27,7 +27,7 @@ func main() { e := yaml2.NewEncoder(w) // $ ttfnmodelstep="SSA def(e) -> w [postupdate]" e.Encode(in) // $ ttfnmodelstep="in -> e [postupdate]" - out, _ = yaml3.Marshal(in) // $ marshaler="yaml: in -> ... = ...[0]" ttfnmodelstep="in -> ... = ...[0]" + out, _ = yaml3.Marshal(in) // $ marshaler="yaml: in -> extract:0 ... = ..." ttfnmodelstep="in -> extract:0 ... = ..." yaml3.Unmarshal(inb, out) // $ unmarshaler="yaml: inb -> out [postupdate]" ttfnmodelstep="inb -> out [postupdate]" d1 := yaml3.NewDecoder(r) // $ ttfnmodelstep="r -> call to NewDecoder" diff --git a/go/ql/test/library-tests/semmle/go/security/SafeUrlFlow/SafeUrlFlow.expected b/go/ql/test/library-tests/semmle/go/security/SafeUrlFlow/SafeUrlFlow.expected index c2f82841d83c..e15f4207b6c1 100644 --- a/go/ql/test/library-tests/semmle/go/security/SafeUrlFlow/SafeUrlFlow.expected +++ b/go/ql/test/library-tests/semmle/go/security/SafeUrlFlow/SafeUrlFlow.expected @@ -56,9 +56,9 @@ edges | SafeUrlFlow.go:74:70:74:76 | safeURL | SafeUrlFlow.go:74:70:74:85 | call to String | provenance | MaD:3 | | SafeUrlFlow.go:78:40:78:46 | safeURL | SafeUrlFlow.go:78:40:78:55 | call to String | provenance | MaD:3 | | SafeUrlFlow.go:84:14:84:21 | selection of Host | SafeUrlFlow.go:87:19:87:26 | safeHost | provenance | | -| SafeUrlFlow.go:87:2:87:10 | implicit dereference [postupdate] | SafeUrlFlow.go:87:2:87:10 | targetURL [postupdate] | provenance | | +| SafeUrlFlow.go:87:2:87:10 | implicit-deref targetURL [postupdate] | SafeUrlFlow.go:87:2:87:10 | targetURL [postupdate] | provenance | | | SafeUrlFlow.go:87:2:87:10 | targetURL [postupdate] | SafeUrlFlow.go:89:24:89:32 | targetURL | provenance | | -| SafeUrlFlow.go:87:19:87:26 | safeHost | SafeUrlFlow.go:87:2:87:10 | implicit dereference [postupdate] | provenance | Config | +| SafeUrlFlow.go:87:19:87:26 | safeHost | SafeUrlFlow.go:87:2:87:10 | implicit-deref targetURL [postupdate] | provenance | Config | | SafeUrlFlow.go:87:19:87:26 | safeHost | SafeUrlFlow.go:87:2:87:10 | targetURL [postupdate] | provenance | Config | | SafeUrlFlow.go:89:24:89:32 | targetURL | SafeUrlFlow.go:89:24:89:41 | call to String | provenance | MaD:3 Sink:MaD:1 | | SafeUrlFlow.go:96:13:96:19 | selection of URL | SafeUrlFlow.go:105:11:105:23 | reconstructed | provenance | Src:MaD:2 | @@ -108,7 +108,7 @@ nodes | SafeUrlFlow.go:78:40:78:46 | safeURL | semmle.label | safeURL | | SafeUrlFlow.go:78:40:78:55 | call to String | semmle.label | call to String | | SafeUrlFlow.go:84:14:84:21 | selection of Host | semmle.label | selection of Host | -| SafeUrlFlow.go:87:2:87:10 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | +| SafeUrlFlow.go:87:2:87:10 | implicit-deref targetURL [postupdate] | semmle.label | implicit-deref targetURL [postupdate] | | SafeUrlFlow.go:87:2:87:10 | targetURL [postupdate] | semmle.label | targetURL [postupdate] | | SafeUrlFlow.go:87:19:87:26 | safeHost | semmle.label | safeHost | | SafeUrlFlow.go:89:24:89:32 | targetURL | semmle.label | targetURL | diff --git a/go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/LengthComparisonOffByOne.expected b/go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/LengthComparisonOffByOne.expected index 156b5860bd68..497e6fbf8e0e 100644 --- a/go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/LengthComparisonOffByOne.expected +++ b/go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/LengthComparisonOffByOne.expected @@ -1,3 +1,4 @@ | LengthComparisonOffByOne.go:8:14:8:29 | ...<=... | Off-by-one index comparison against length may lead to out-of-bounds $@. | LengthComparisonOffByOne.go:10:6:10:14 | index expression | read | | main.go:6:5:6:15 | ...<=... | Off-by-one index comparison against length may lead to out-of-bounds $@. | main.go:7:10:7:13 | index expression | read | | main.go:29:5:29:14 | ...>... | Off-by-one index comparison against length may lead to out-of-bounds $@. | main.go:30:10:30:13 | index expression | read | +| main.go:87:7:87:17 | ...>=... | Off-by-one index comparison against length may lead to out-of-bounds $@. | main.go:93:9:93:12 | index expression | read | diff --git a/go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/main.go b/go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/main.go index 01e849c0f2fc..f0f1d6168638 100644 --- a/go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/main.go +++ b/go/ql/test/query-tests/InconsistentCode/LengthComparisonOffByOne/main.go @@ -83,4 +83,14 @@ func f10(i int, a intintmap) int { return -1 } +func f11(a []int) int { + if !(len(a) >= 3 && // $ Alert + a[0] == 0 && + a[1] == 0 && + a[2] == 0) { + return -1 + } + return a[3] // $ Source +} + func main() {} diff --git a/go/ql/test/query-tests/InconsistentCode/MissingErrorCheck/MissingErrorCheck.expected b/go/ql/test/query-tests/InconsistentCode/MissingErrorCheck/MissingErrorCheck.expected index 9db748ebabd0..acd73e5a79ef 100644 --- a/go/ql/test/query-tests/InconsistentCode/MissingErrorCheck/MissingErrorCheck.expected +++ b/go/ql/test/query-tests/InconsistentCode/MissingErrorCheck/MissingErrorCheck.expected @@ -1,2 +1,2 @@ -| tests.go:61:30:61:35 | result | $@ may be nil at this dereference because $@ may not have been checked. | tests.go:59:2:59:7 | SSA def(result) | result | tests.go:59:10:59:12 | SSA def(err) | err | -| tests.go:243:27:243:32 | result | $@ may be nil at this dereference because $@ may not have been checked. | tests.go:241:2:241:7 | SSA def(result) | result | tests.go:241:10:241:12 | SSA def(err) | err | +| tests.go:61:30:61:35 | result | $@ may be nil at this dereference because $@ may not have been checked. | tests.go:59:2:59:30 | SSA def(result) | result | tests.go:59:2:59:30 | SSA def(err) | err | +| tests.go:243:27:243:32 | result | $@ may be nil at this dereference because $@ may not have been checked. | tests.go:241:2:241:37 | SSA def(result) | result | tests.go:241:2:241:37 | SSA def(err) | err | diff --git a/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/CONSISTENCY/CfgConsistency.expected b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..2ce97565d12d --- /dev/null +++ b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,9 @@ +consistencyOverview +| multipleSuccessors | 6 | +multipleSuccessors +| tests.go:96:2:104:2 | After if statement | successor | tests.go:94:30:105:1 | After block statement | +| tests.go:96:2:104:2 | After if statement | successor | tests.go:99:9:99:17 | defer-invoke call to Close | +| tests.go:119:2:119:6 | After ... = ... | successor | tests.go:107:31:120:1 | After block statement | +| tests.go:119:2:119:6 | After ... = ... | successor | tests.go:112:9:112:17 | defer-invoke call to Close | +| tests.go:124:2:136:2 | After if statement | successor | tests.go:122:46:137:1 | After block statement | +| tests.go:124:2:136:2 | After if statement | successor | tests.go:126:9:126:17 | defer-invoke call to Close | diff --git a/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected index 5ded10ee1bde..4fe3c754a5a5 100644 --- a/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected +++ b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected @@ -1,30 +1,30 @@ #select -| tests.go:10:8:10:8 | f | tests.go:32:5:32:78 | ... := ...[0] | tests.go:10:8:10:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:32:15:32:78 | call to OpenFile | call to OpenFile | -| tests.go:10:8:10:8 | f | tests.go:46:5:46:76 | ... := ...[0] | tests.go:10:8:10:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:46:15:46:76 | call to OpenFile | call to OpenFile | -| tests.go:15:3:15:3 | f | tests.go:32:5:32:78 | ... := ...[0] | tests.go:15:3:15:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:32:15:32:78 | call to OpenFile | call to OpenFile | -| tests.go:15:3:15:3 | f | tests.go:46:5:46:76 | ... := ...[0] | tests.go:15:3:15:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:46:15:46:76 | call to OpenFile | call to OpenFile | -| tests.go:57:3:57:3 | f | tests.go:55:5:55:78 | ... := ...[0] | tests.go:57:3:57:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:55:15:55:78 | call to OpenFile | call to OpenFile | -| tests.go:69:3:69:3 | f | tests.go:67:5:67:76 | ... := ...[0] | tests.go:69:3:69:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:67:15:67:76 | call to OpenFile | call to OpenFile | -| tests.go:126:9:126:9 | f | tests.go:124:5:124:78 | ... := ...[0] | tests.go:126:9:126:9 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:124:15:124:78 | call to OpenFile | call to OpenFile | -| tests.go:145:3:145:3 | f | tests.go:141:5:141:78 | ... := ...[0] | tests.go:145:3:145:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:141:15:141:78 | call to OpenFile | call to OpenFile | -| tests.go:166:8:166:8 | f | tests.go:162:2:162:74 | ... := ...[0] | tests.go:166:8:166:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:162:12:162:74 | call to OpenFile | call to OpenFile | +| tests.go:10:8:10:8 | f | tests.go:32:5:32:78 | extract:0 ... := ... | tests.go:10:8:10:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:32:15:32:78 | call to OpenFile | call to OpenFile | +| tests.go:10:8:10:8 | f | tests.go:46:5:46:76 | extract:0 ... := ... | tests.go:10:8:10:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:46:15:46:76 | call to OpenFile | call to OpenFile | +| tests.go:15:3:15:3 | f | tests.go:32:5:32:78 | extract:0 ... := ... | tests.go:15:3:15:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:32:15:32:78 | call to OpenFile | call to OpenFile | +| tests.go:15:3:15:3 | f | tests.go:46:5:46:76 | extract:0 ... := ... | tests.go:15:3:15:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:46:15:46:76 | call to OpenFile | call to OpenFile | +| tests.go:57:3:57:3 | f | tests.go:55:5:55:78 | extract:0 ... := ... | tests.go:57:3:57:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:55:15:55:78 | call to OpenFile | call to OpenFile | +| tests.go:69:3:69:3 | f | tests.go:67:5:67:76 | extract:0 ... := ... | tests.go:69:3:69:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:67:15:67:76 | call to OpenFile | call to OpenFile | +| tests.go:126:9:126:9 | f | tests.go:124:5:124:78 | extract:0 ... := ... | tests.go:126:9:126:9 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:124:15:124:78 | call to OpenFile | call to OpenFile | +| tests.go:145:3:145:3 | f | tests.go:141:5:141:78 | extract:0 ... := ... | tests.go:145:3:145:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:141:15:141:78 | call to OpenFile | call to OpenFile | +| tests.go:166:8:166:8 | f | tests.go:162:2:162:74 | extract:0 ... := ... | tests.go:166:8:166:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:162:12:162:74 | call to OpenFile | call to OpenFile | edges | tests.go:9:24:9:24 | SSA def(f) | tests.go:10:8:10:8 | f | provenance | | | tests.go:13:32:13:32 | SSA def(f) | tests.go:14:13:16:2 | SSA def(f) | provenance | | | tests.go:14:13:16:2 | SSA def(f) | tests.go:15:3:15:3 | f | provenance | | -| tests.go:32:5:32:78 | ... := ...[0] | tests.go:33:21:33:21 | f | provenance | Src:MaD:1 | -| tests.go:32:5:32:78 | ... := ...[0] | tests.go:34:29:34:29 | f | provenance | Src:MaD:1 | +| tests.go:32:5:32:78 | extract:0 ... := ... | tests.go:33:21:33:21 | f | provenance | Src:MaD:1 | +| tests.go:32:5:32:78 | extract:0 ... := ... | tests.go:34:29:34:29 | f | provenance | Src:MaD:1 | | tests.go:33:21:33:21 | f | tests.go:9:24:9:24 | SSA def(f) | provenance | | | tests.go:34:29:34:29 | f | tests.go:13:32:13:32 | SSA def(f) | provenance | | -| tests.go:46:5:46:76 | ... := ...[0] | tests.go:47:21:47:21 | f | provenance | Src:MaD:1 | -| tests.go:46:5:46:76 | ... := ...[0] | tests.go:48:29:48:29 | f | provenance | Src:MaD:1 | +| tests.go:46:5:46:76 | extract:0 ... := ... | tests.go:47:21:47:21 | f | provenance | Src:MaD:1 | +| tests.go:46:5:46:76 | extract:0 ... := ... | tests.go:48:29:48:29 | f | provenance | Src:MaD:1 | | tests.go:47:21:47:21 | f | tests.go:9:24:9:24 | SSA def(f) | provenance | | | tests.go:48:29:48:29 | f | tests.go:13:32:13:32 | SSA def(f) | provenance | | -| tests.go:55:5:55:78 | ... := ...[0] | tests.go:57:3:57:3 | f | provenance | Src:MaD:1 | -| tests.go:67:5:67:76 | ... := ...[0] | tests.go:69:3:69:3 | f | provenance | Src:MaD:1 | -| tests.go:124:5:124:78 | ... := ...[0] | tests.go:126:9:126:9 | f | provenance | Src:MaD:1 | -| tests.go:141:5:141:78 | ... := ...[0] | tests.go:145:3:145:3 | f | provenance | Src:MaD:1 | -| tests.go:162:2:162:74 | ... := ...[0] | tests.go:166:8:166:8 | f | provenance | Src:MaD:1 | +| tests.go:55:5:55:78 | extract:0 ... := ... | tests.go:57:3:57:3 | f | provenance | Src:MaD:1 | +| tests.go:67:5:67:76 | extract:0 ... := ... | tests.go:69:3:69:3 | f | provenance | Src:MaD:1 | +| tests.go:124:5:124:78 | extract:0 ... := ... | tests.go:126:9:126:9 | f | provenance | Src:MaD:1 | +| tests.go:141:5:141:78 | extract:0 ... := ... | tests.go:145:3:145:3 | f | provenance | Src:MaD:1 | +| tests.go:162:2:162:74 | extract:0 ... := ... | tests.go:166:8:166:8 | f | provenance | Src:MaD:1 | models | 1 | Source: os; ; false; OpenFile; ; ; ReturnValue[0]; file; manual | nodes @@ -33,20 +33,20 @@ nodes | tests.go:13:32:13:32 | SSA def(f) | semmle.label | SSA def(f) | | tests.go:14:13:16:2 | SSA def(f) | semmle.label | SSA def(f) | | tests.go:15:3:15:3 | f | semmle.label | f | -| tests.go:32:5:32:78 | ... := ...[0] | semmle.label | ... := ...[0] | +| tests.go:32:5:32:78 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tests.go:33:21:33:21 | f | semmle.label | f | | tests.go:34:29:34:29 | f | semmle.label | f | -| tests.go:46:5:46:76 | ... := ...[0] | semmle.label | ... := ...[0] | +| tests.go:46:5:46:76 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tests.go:47:21:47:21 | f | semmle.label | f | | tests.go:48:29:48:29 | f | semmle.label | f | -| tests.go:55:5:55:78 | ... := ...[0] | semmle.label | ... := ...[0] | +| tests.go:55:5:55:78 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tests.go:57:3:57:3 | f | semmle.label | f | -| tests.go:67:5:67:76 | ... := ...[0] | semmle.label | ... := ...[0] | +| tests.go:67:5:67:76 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tests.go:69:3:69:3 | f | semmle.label | f | -| tests.go:124:5:124:78 | ... := ...[0] | semmle.label | ... := ...[0] | +| tests.go:124:5:124:78 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tests.go:126:9:126:9 | f | semmle.label | f | -| tests.go:141:5:141:78 | ... := ...[0] | semmle.label | ... := ...[0] | +| tests.go:141:5:141:78 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tests.go:145:3:145:3 | f | semmle.label | f | -| tests.go:162:2:162:74 | ... := ...[0] | semmle.label | ... := ...[0] | +| tests.go:162:2:162:74 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tests.go:166:8:166:8 | f | semmle.label | f | subpaths diff --git a/go/ql/test/query-tests/InconsistentCode/WhitespaceContradictsPrecedence/ParenthesizedOperands.go b/go/ql/test/query-tests/InconsistentCode/WhitespaceContradictsPrecedence/ParenthesizedOperands.go new file mode 100644 index 000000000000..07882d38b0a4 --- /dev/null +++ b/go/ql/test/query-tests/InconsistentCode/WhitespaceContradictsPrecedence/ParenthesizedOperands.go @@ -0,0 +1,11 @@ +package main + +// autoformat-ignore (otherwise gofmt will insist on its particular spacing) + +func weightedMeanGood(a, b float64, countA, countB, total int) float64 { + return ((a * float64(countA)) + (b * float64(countB))) / float64(total) +} + +func parenthesizedGood(a, b, c int) int { + return (a ^ b)&c +} diff --git a/go/ql/test/query-tests/RedundantCode/DeadStoreOfField/CONSISTENCY/CfgConsistency.expected b/go/ql/test/query-tests/RedundantCode/DeadStoreOfField/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/query-tests/RedundantCode/DeadStoreOfField/DeadStoreOfField.expected b/go/ql/test/query-tests/RedundantCode/DeadStoreOfField/DeadStoreOfField.expected index 68935b96eca4..476154a69fa5 100644 --- a/go/ql/test/query-tests/RedundantCode/DeadStoreOfField/DeadStoreOfField.expected +++ b/go/ql/test/query-tests/RedundantCode/DeadStoreOfField/DeadStoreOfField.expected @@ -1 +1,3 @@ -| DeadStoreOfField.go:8:2:8:6 | assignment to field val | This assignment to val is useless since its value is never read. | +| DeadStoreOfField.go:8:2:8:6 | selection of val | This assignment to val is useless since its value is never read. | +| writetargets.go:18:2:18:4 | selection of a | This assignment to a is useless since its value is never read. | +| writetargets.go:23:2:23:4 | selection of c | This assignment to c is useless since its value is never read. | diff --git a/go/ql/test/query-tests/RedundantCode/DeadStoreOfField/writetargets.go b/go/ql/test/query-tests/RedundantCode/DeadStoreOfField/writetargets.go new file mode 100644 index 000000000000..25d4630bfb47 --- /dev/null +++ b/go/ql/test/query-tests/RedundantCode/DeadStoreOfField/writetargets.go @@ -0,0 +1,37 @@ +package main + +// Field-write target variations for go/useless-assignment-to-field, exercising +// the FieldTarget write target with different selector-expression shapes. + +type wtInner struct { + a int + b int +} + +type wtEmbed struct { + wtInner + c int +} + +// direct field write on a value copy (dead) +func wtDirect(v wtInner) { + v.a = 0 // $ Alert +} + +// non-embedded field write on a value copy (dead) +func wtOwnField(v wtEmbed) { + v.c = 0 // $ Alert +} + +// The query only reports direct `v.f` writes, so writes whose base is itself a +// field access are not flagged, even though they are also dead. + +// explicitly-qualified embedded field write on a value copy (not flagged) +func wtNested(v wtEmbed) { + v.wtInner.b = 0 // OK +} + +// promoted (value-embedded) field write on a value copy (not flagged) +func wtPromoted(v wtEmbed) { + v.a = 0 // OK +} diff --git a/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/CONSISTENCY/CfgConsistency.expected b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..b77a8bf15ea0 --- /dev/null +++ b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,13 @@ +consistencyOverview +| multipleSuccessors | 10 | +multipleSuccessors +| testdata.go:418:2:423:2 | select statement | successor | testdata.go:419:2:420:7 | comm clause | +| testdata.go:418:2:423:2 | select statement | successor | testdata.go:421:2:422:7 | comm clause | +| testdata.go:430:2:437:2 | select statement | successor | testdata.go:431:2:432:17 | comm clause | +| testdata.go:430:2:437:2 | select statement | successor | testdata.go:433:2:434:17 | comm clause | +| testdata.go:430:2:437:2 | select statement | successor | testdata.go:435:2:436:7 | comm clause | +| testdata.go:443:2:450:2 | select statement | successor | testdata.go:444:2:445:7 | comm clause | +| testdata.go:443:2:450:2 | select statement | successor | testdata.go:446:2:447:7 | comm clause | +| testdata.go:443:2:450:2 | select statement | successor | testdata.go:448:2:449:7 | comm clause | +| testdata.go:457:2:462:2 | select statement | successor | testdata.go:458:2:459:7 | comm clause | +| testdata.go:457:2:462:2 | select statement | successor | testdata.go:460:2:461:7 | comm clause | diff --git a/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/CONSISTENCY/UnexpectedFrontendErrors.expected b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/CONSISTENCY/UnexpectedFrontendErrors.expected index a7a03f17abcf..dbdac1b9d081 100644 --- a/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/CONSISTENCY/UnexpectedFrontendErrors.expected +++ b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/CONSISTENCY/UnexpectedFrontendErrors.expected @@ -1 +1 @@ -| main.go:36:9:36:9 | undefined: unknownFunction | +| main.go:41:9:41:9 | undefined: unknownFunction | diff --git a/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/DeadStoreOfLocal.expected b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/DeadStoreOfLocal.expected index 5b2010251ef7..a2cba0d5dc92 100644 --- a/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/DeadStoreOfLocal.expected +++ b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/DeadStoreOfLocal.expected @@ -1,30 +1,42 @@ -| main.go:25:2:25:2 | assignment to x | This definition of x is never used. | -| testdata.go:32:2:32:2 | assignment to x | This definition of x is never used. | -| testdata.go:37:2:37:2 | assignment to x | This definition of x is never used. | -| testdata.go:61:2:61:2 | assignment to x | This definition of x is never used. | -| testdata.go:67:2:67:2 | assignment to x | This definition of x is never used. | -| testdata.go:99:2:99:2 | assignment to x | This definition of x is never used. | -| testdata.go:101:3:101:3 | assignment to x | This definition of x is never used. | -| testdata.go:108:2:108:2 | assignment to x | This definition of x is never used. | -| testdata.go:110:3:110:3 | assignment to x | This definition of x is never used. | -| testdata.go:128:2:128:2 | assignment to x | This definition of x is never used. | -| testdata.go:130:3:130:3 | assignment to x | This definition of x is never used. | -| testdata.go:131:3:131:3 | assignment to x | This definition of x is never used. | -| testdata.go:134:3:134:3 | assignment to x | This definition of x is never used. | -| testdata.go:143:3:143:3 | assignment to x | This definition of x is never used. | -| testdata.go:164:3:164:3 | assignment to x | This definition of x is never used. | -| testdata.go:172:3:172:3 | assignment to x | This definition of x is never used. | -| testdata.go:180:3:180:5 | increment statement | This definition of x is never used. | -| testdata.go:201:2:201:2 | assignment to x | This definition of x is never used. | -| testdata.go:262:2:262:2 | assignment to x | This definition of x is never used. | -| testdata.go:268:2:268:2 | assignment to x | This definition of x is never used. | -| testdata.go:309:2:309:2 | assignment to a | This definition of a is never used. | -| testdata.go:321:2:321:2 | assignment to a | This definition of a is never used. | -| testdata.go:387:3:387:3 | assignment to x | This definition of x is never used. | -| testdata.go:432:3:432:3 | assignment to x | This definition of x is never used. | -| testdata.go:434:3:434:3 | assignment to x | This definition of x is never used. | -| testdata.go:441:2:441:2 | assignment to x | This definition of x is never used. | -| testdata.go:488:3:488:3 | assignment to x | This definition of x is never used. | -| testdata.go:542:3:542:3 | assignment to x | This definition of x is never used. | -| testdata.go:580:4:580:4 | assignment to x | This definition of x is never used. | -| testdata.go:629:3:629:4 | assignment to v1 | This definition of v1 is never used. | +| main.go:25:2:25:2 | x | This definition of x is never used. | +| testdata.go:32:2:32:2 | x | This definition of x is never used. | +| testdata.go:37:2:37:2 | x | This definition of x is never used. | +| testdata.go:61:2:61:2 | x | This definition of x is never used. | +| testdata.go:67:2:67:2 | x | This definition of x is never used. | +| testdata.go:99:2:99:2 | x | This definition of x is never used. | +| testdata.go:101:3:101:3 | x | This definition of x is never used. | +| testdata.go:108:2:108:2 | x | This definition of x is never used. | +| testdata.go:110:3:110:3 | x | This definition of x is never used. | +| testdata.go:128:2:128:2 | x | This definition of x is never used. | +| testdata.go:130:3:130:3 | x | This definition of x is never used. | +| testdata.go:131:3:131:3 | x | This definition of x is never used. | +| testdata.go:134:3:134:3 | x | This definition of x is never used. | +| testdata.go:143:3:143:3 | x | This definition of x is never used. | +| testdata.go:164:3:164:3 | x | This definition of x is never used. | +| testdata.go:172:3:172:3 | x | This definition of x is never used. | +| testdata.go:180:3:180:3 | x | This definition of x is never used. | +| testdata.go:201:2:201:2 | x | This definition of x is never used. | +| testdata.go:262:2:262:2 | x | This definition of x is never used. | +| testdata.go:268:2:268:2 | x | This definition of x is never used. | +| testdata.go:309:2:309:2 | a | This definition of a is never used. | +| testdata.go:321:2:321:2 | a | This definition of a is never used. | +| testdata.go:387:3:387:3 | x | This definition of x is never used. | +| testdata.go:432:3:432:3 | x | This definition of x is never used. | +| testdata.go:434:3:434:3 | x | This definition of x is never used. | +| testdata.go:441:2:441:2 | x | This definition of x is never used. | +| testdata.go:488:3:488:3 | x | This definition of x is never used. | +| testdata.go:542:3:542:3 | x | This definition of x is never used. | +| testdata.go:580:4:580:4 | x | This definition of x is never used. | +| testdata.go:629:3:629:4 | v1 | This definition of v1 is never used. | +| writetargets.go:20:2:20:2 | x | This definition of x is never used. | +| writetargets.go:27:2:27:2 | x | This definition of x is never used. | +| writetargets.go:34:6:34:6 | x | This definition of x is never used. | +| writetargets.go:41:2:41:2 | x | This definition of x is never used. | +| writetargets.go:48:2:48:2 | x | This definition of x is never used. | +| writetargets.go:55:2:55:2 | x | This definition of x is never used. | +| writetargets.go:62:2:62:2 | x | This definition of x is never used. | +| writetargets.go:71:2:71:2 | x | This definition of x is never used. | +| writetargets.go:79:2:79:2 | v | This definition of v is never used. | +| writetargets.go:87:2:87:2 | v | This definition of v is never used. | +| writetargets.go:95:9:95:9 | v | This definition of v is never used. | +| writetargets.go:105:2:105:2 | r | This definition of r is never used. | diff --git a/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/main.go b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/main.go index ee7b9214a66b..6574f5377bb2 100644 --- a/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/main.go +++ b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/main.go @@ -26,6 +26,11 @@ func deadParameter(x int) bool { // we don't want to flag x here return true } +func usedOnlyAfterFalse() bool { + s := deadStore() + return false && s == 0 +} + func test2(x int) (int, int) { y := x >> 5 z := x % (1) diff --git a/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/writetargets.go b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/writetargets.go new file mode 100644 index 000000000000..a7d707cfc8ea --- /dev/null +++ b/go/ql/test/query-tests/RedundantCode/DeadStoreOfLocal/writetargets.go @@ -0,0 +1,135 @@ +package p + +// Examples exercising each kind of IR write target, to check that +// `go/useless-assignment-to-local` reports the assigned variable for every kind +// and correctly ignores writes that do not define a local variable. + +func wtTwoInts() (int, int) { return deadStore(), deadStore() } + +func wtMap() map[string]int { return nil } + +func wtIface() interface{} { return nil } + +type wtStruct struct{ f int } + +// --- Write targets that define a local variable (can be flagged) --- + +// simple assignment (assign / VarOrConstTarget) +func wtAssign() { + var x int + x = deadStore() // $ Alert + x = deadStore() + _ = x +} + +// short variable declaration (assign) +func wtShortDecl() { + x := deadStore() // $ Alert + x = deadStore() + _ = x +} + +// var declaration with initializer (assign via ValueSpec) +func wtVarDecl() { + var x = deadStore() // $ Alert + x = deadStore() + _ = x +} + +// compound assignment (compound-rhs) +func wtCompound(x int) int { + x += deadStore() // $ Alert + x = deadStore() + return x +} + +// increment (compound-rhs on an IncDecStmt) +func wtIncrement(x int) int { + x++ // $ Alert + x = deadStore() + return x +} + +// decrement (compound-rhs on an IncDecStmt) +func wtDecrement(x int) int { + x-- // $ Alert + x = deadStore() + return x +} + +// tuple destructuring in a short declaration (extract) +func wtExtractShortDecl() { + x, y := wtTwoInts() // $ Alert + x = deadStore() + _ = x + _ = y +} + +// tuple destructuring in an assignment (extract) +func wtExtractAssign() { + var x, y int + x, y = wtTwoInts() // $ Alert + x = deadStore() + _ = x + _ = y +} + +// map access with comma-ok (extract) +func wtExtractMapCommaOk() { + v, ok := wtMap()["k"] // $ Alert + v = deadStore() + _ = v + _ = ok +} + +// type assertion with comma-ok (extract) +func wtExtractTypeAssert() { + v, ok := wtIface().(int) // $ Alert + v = deadStore() + _ = v + _ = ok +} + +// range key/value (extract on a RangeElementExpr) +func wtExtractRange(xs []int) { + for i, v := range xs { // $ Alert + v = deadStore() + _ = i + _ = v + } +} + +// assignment to a named result (VarOrConstTarget), dead because it is +// overwritten by the value in the `return` statement +func wtNamedResult() (r int) { + r = deadStore() // $ Alert + return deadStore() +} + +// --- Write targets that do not define a local variable (never flagged here) --- + +// field write (FieldTarget) - covered by go/useless-assignment-to-field +func wtField(s *wtStruct) { + s.f = deadStore() + s.f = deadStore() + _ = s.f +} + +// element write (ElementTarget) +func wtElement(xs []int) { + xs[0] = deadStore() + xs[0] = deadStore() + _ = xs[0] +} + +// pointer dereference write (PointerTarget) +func wtPointer(p *int) { + *p = deadStore() + *p = deadStore() + _ = *p +} + +// composite literal element (MkLiteralElementTarget) +func wtLiteralElement() { + _ = []int{deadStore(), deadStore()} +} diff --git a/go/ql/test/query-tests/RedundantCode/RedundantRecover/CONSISTENCY/CfgConsistency.expected b/go/ql/test/query-tests/RedundantCode/RedundantRecover/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover.expected b/go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover.expected index fdc175c8cf0f..07295232067a 100644 --- a/go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover.expected +++ b/go/ql/test/query-tests/RedundantCode/RedundantRecover/RedundantRecover.expected @@ -1,3 +1,3 @@ | RedundantRecover1.go:6:5:6:13 | call to recover | This call to 'recover' has no effect because $@ is never called using a defer statement. | RedundantRecover1.go:5:1:9:1 | function declaration | the enclosing function | -| RedundantRecover2.go:4:8:4:16 | call to recover | Deferred calls to 'recover' have no effect. | RedundantRecover2.go:3:1:6:1 | function declaration | the enclosing function | +| RedundantRecover2.go:4:8:4:16 | defer-invoke call to recover | Deferred calls to 'recover' have no effect. | RedundantRecover2.go:3:1:6:1 | function declaration | the enclosing function | | tst.go:8:5:8:13 | call to recover | This call to 'recover' has no effect because $@ is never called using a defer statement. | tst.go:5:1:11:1 | function declaration | the enclosing function | diff --git a/go/ql/test/query-tests/RedundantCode/RedundantRecover/tst.go b/go/ql/test/query-tests/RedundantCode/RedundantRecover/tst.go index c9bebbd4bfe4..e136cd9dff50 100644 --- a/go/ql/test/query-tests/RedundantCode/RedundantRecover/tst.go +++ b/go/ql/test/query-tests/RedundantCode/RedundantRecover/tst.go @@ -3,16 +3,16 @@ package main import "fmt" func callRecover3() { - // This will have no effect because panics do not propagate down the stack, - // only back up the stack + // This has no effect because recover is only effective when called directly + // by a deferred function while its caller is panicking. if recover() != nil { // $ Alert fmt.Printf("recovered") } } func fun3() { - panic("3") callRecover3() + panic("3") } func callRecover4() { diff --git a/go/ql/test/query-tests/RedundantCode/UnreachableStatement/CONSISTENCY/CfgConsistency.expected b/go/ql/test/query-tests/RedundantCode/UnreachableStatement/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..887fef4a49c7 --- /dev/null +++ b/go/ql/test/query-tests/RedundantCode/UnreachableStatement/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,14 @@ +consistencyOverview +| deadEnd | 11 | +deadEnd +| main.go:17:2:17:10 | select statement | +| main.go:109:2:109:10 | select statement | +| main.go:115:2:115:10 | select statement | +| main.go:126:2:126:10 | select statement | +| main.go:132:2:132:10 | select statement | +| main.go:138:2:138:10 | select statement | +| main.go:145:2:145:10 | select statement | +| main.go:151:2:151:10 | select statement | +| main.go:157:2:157:10 | select statement | +| main.go:164:2:164:10 | select statement | +| main.go:168:2:168:10 | select statement | diff --git a/go/ql/test/query-tests/RedundantCode/UnreachableStatement/UnreachableStatement.expected b/go/ql/test/query-tests/RedundantCode/UnreachableStatement/UnreachableStatement.expected index 9c70b439d5b3..240cfcaf1e5e 100644 --- a/go/ql/test/query-tests/RedundantCode/UnreachableStatement/UnreachableStatement.expected +++ b/go/ql/test/query-tests/RedundantCode/UnreachableStatement/UnreachableStatement.expected @@ -10,3 +10,4 @@ | main.go:147:2:147:17 | return statement | This statement is unreachable. | | main.go:153:2:153:22 | return statement | This statement is unreachable. | | main.go:159:2:159:43 | return statement | This statement is unreachable. | +| main.go:171:2:171:14 | expression statement | This statement is unreachable. | diff --git a/go/ql/test/query-tests/RedundantCode/UnreachableStatement/main.go b/go/ql/test/query-tests/RedundantCode/UnreachableStatement/main.go index cc26b717f605..016920175bb7 100644 --- a/go/ql/test/query-tests/RedundantCode/UnreachableStatement/main.go +++ b/go/ql/test/query-tests/RedundantCode/UnreachableStatement/main.go @@ -159,4 +159,48 @@ func test19() mystruct { return mystruct{test10(1), test10(2) == 2} // $ Alert } +func test20() { + go panic("panic in another goroutine") + select {} // OK: reachable after starting the goroutine +} + +func test21() { + select {} + panic("unreachable") // OK: allowlisted statement + // OK: empty statement + unreachable() // $ Alert +} + +func test22() { + goto reachableLabel + panic("unreachable") // OK: allowlisted statement +reachableLabel: + reachable() // OK: reachable through the goto +} + +func test23() { + if true { + return + } + unreachable() // OK: deliberately unreachable + unreachable() // OK: deliberately unreachable +} + +type ( + embedded struct{} + recursive struct { + *embedded + value int + *recursive + } +) + +func test24(x *recursive) []int { + values := []int{0} + if x.value != 0 { + values = append(values, x.value) + } + return values // OK: reachable because value is a direct field of recursive +} + func main() {} diff --git a/go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/CONSISTENCY/DataFlowConsistency.expected index 1861fe5d2b9d..5290b84ea889 100644 --- a/go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/CONSISTENCY/DataFlowConsistency.expected @@ -1,5 +1,5 @@ reverseRead -| IncompleteHostnameRegexp.go:12:42:12:44 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| IncompleteHostnameRegexpGood2.go:12:42:12:44 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| IncompleteHostnameRegexpGood.go:12:42:12:44 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:18:57:18:57 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| IncompleteHostnameRegexp.go:12:42:12:44 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| IncompleteHostnameRegexpGood2.go:12:42:12:44 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| IncompleteHostnameRegexpGood.go:12:42:12:44 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| main.go:18:57:18:57 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/CONSISTENCY/DataFlowConsistency.expected index a9e0caae7699..16052a78564a 100644 --- a/go/ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-020/MissingRegexpAnchor/CONSISTENCY/DataFlowConsistency.expected @@ -1,3 +1,3 @@ reverseRead -| MissingRegexpAnchor.go:12:42:12:44 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| MissingRegexpAnchorGood.go:12:42:12:44 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| MissingRegexpAnchor.go:12:42:12:44 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| MissingRegexpAnchorGood.go:12:42:12:44 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-022/CONSISTENCY/CfgConsistency.expected b/go/ql/test/query-tests/Security/CWE-022/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/query-tests/Security/CWE-022/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-022/CONSISTENCY/DataFlowConsistency.expected index 69de1fc20fd4..9f47590b9448 100644 --- a/go/ql/test/query-tests/Security/CWE-022/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-022/CONSISTENCY/DataFlowConsistency.expected @@ -1,3 +1,3 @@ reverseRead -| TaintedPath.go:15:18:15:18 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| TaintedPath.go:15:18:15:18 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | | TaintedPath.go:84:28:84:32 | files | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected b/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected index 851ed3533ae9..ecb64813d4c4 100644 --- a/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected +++ b/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected @@ -12,8 +12,8 @@ edges | TaintedPath.go:22:57:22:68 | tainted_path | TaintedPath.go:26:63:26:74 | tainted_path | provenance | | | TaintedPath.go:22:57:22:68 | tainted_path | TaintedPath.go:43:29:43:40 | tainted_path | provenance | Sink:MaD:1 | | TaintedPath.go:22:57:22:68 | tainted_path | TaintedPath.go:74:39:74:56 | ...+... | provenance | | -| TaintedPath.go:26:2:26:75 | ... := ...[0] | TaintedPath.go:27:28:27:45 | sanitized_filepath | provenance | Sink:MaD:1 | -| TaintedPath.go:26:63:26:74 | tainted_path | TaintedPath.go:26:2:26:75 | ... := ...[0] | provenance | MaD:4 | +| TaintedPath.go:26:2:26:75 | extract:0 ... := ... | TaintedPath.go:27:28:27:45 | sanitized_filepath | provenance | Sink:MaD:1 | +| TaintedPath.go:26:63:26:74 | tainted_path | TaintedPath.go:26:2:26:75 | extract:0 ... := ... | provenance | MaD:4 | | TaintedPath.go:74:39:74:56 | ...+... | TaintedPath.go:74:28:74:57 | call to Clean | provenance | MaD:5 Sink:MaD:1 | models | 1 | Sink: io/ioutil; ; false; ReadFile; ; ; Argument[0]; path-injection; manual | @@ -27,7 +27,7 @@ nodes | TaintedPath.go:18:29:18:40 | tainted_path | semmle.label | tainted_path | | TaintedPath.go:22:28:22:69 | call to Join | semmle.label | call to Join | | TaintedPath.go:22:57:22:68 | tainted_path | semmle.label | tainted_path | -| TaintedPath.go:26:2:26:75 | ... := ...[0] | semmle.label | ... := ...[0] | +| TaintedPath.go:26:2:26:75 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | TaintedPath.go:26:63:26:74 | tainted_path | semmle.label | tainted_path | | TaintedPath.go:27:28:27:45 | sanitized_filepath | semmle.label | sanitized_filepath | | TaintedPath.go:43:29:43:40 | tainted_path | semmle.label | tainted_path | diff --git a/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected b/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected index 88f1666af3b9..6ed511869f75 100644 --- a/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected +++ b/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected @@ -1,27 +1,27 @@ #select -| UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | Unsanitized archive entry, which may contain '..', is used in a $@. | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | file system operation | -| ZipSlip.go:11:2:15:2 | range statement[1] | ZipSlip.go:11:2:15:2 | range statement[1] | ZipSlip.go:14:20:14:20 | p | Unsanitized archive entry, which may contain '..', is used in a $@. | ZipSlip.go:14:20:14:20 | p | file system operation | -| tarslip.go:15:2:15:30 | ... := ...[0] | tarslip.go:15:2:15:30 | ... := ...[0] | tarslip.go:16:14:16:34 | call to Dir | Unsanitized archive entry, which may contain '..', is used in a $@. | tarslip.go:16:14:16:34 | call to Dir | file system operation | -| tst.go:23:2:43:2 | range statement[1] | tst.go:23:2:43:2 | range statement[1] | tst.go:27:21:27:48 | call to Join | Unsanitized archive entry, which may contain '..', is used in a $@. | tst.go:27:21:27:48 | call to Join | file system operation | -| tst.go:23:2:43:2 | range statement[1] | tst.go:23:2:43:2 | range statement[1] | tst.go:29:20:29:23 | path | Unsanitized archive entry, which may contain '..', is used in a $@. | tst.go:29:20:29:23 | path | file system operation | -| tst.go:23:2:43:2 | range statement[1] | tst.go:23:2:43:2 | range statement[1] | tst.go:31:21:31:24 | path | Unsanitized archive entry, which may contain '..', is used in a $@. | tst.go:31:21:31:24 | path | file system operation | +| UnsafeUnzipSymlinkGood.go:72:3:72:25 | extract:0 ... := ... | UnsafeUnzipSymlinkGood.go:72:3:72:25 | extract:0 ... := ... | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | Unsanitized archive entry, which may contain '..', is used in a $@. | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | file system operation | +| ZipSlip.go:11:2:15:2 | extract:1 range element | ZipSlip.go:11:2:15:2 | extract:1 range element | ZipSlip.go:14:20:14:20 | p | Unsanitized archive entry, which may contain '..', is used in a $@. | ZipSlip.go:14:20:14:20 | p | file system operation | +| tarslip.go:15:2:15:30 | extract:0 ... := ... | tarslip.go:15:2:15:30 | extract:0 ... := ... | tarslip.go:16:14:16:34 | call to Dir | Unsanitized archive entry, which may contain '..', is used in a $@. | tarslip.go:16:14:16:34 | call to Dir | file system operation | +| tst.go:23:2:43:2 | extract:1 range element | tst.go:23:2:43:2 | extract:1 range element | tst.go:27:21:27:48 | call to Join | Unsanitized archive entry, which may contain '..', is used in a $@. | tst.go:27:21:27:48 | call to Join | file system operation | +| tst.go:23:2:43:2 | extract:1 range element | tst.go:23:2:43:2 | extract:1 range element | tst.go:29:20:29:23 | path | Unsanitized archive entry, which may contain '..', is used in a $@. | tst.go:29:20:29:23 | path | file system operation | +| tst.go:23:2:43:2 | extract:1 range element | tst.go:23:2:43:2 | extract:1 range element | tst.go:31:21:31:24 | path | Unsanitized archive entry, which may contain '..', is used in a $@. | tst.go:31:21:31:24 | path | file system operation | edges | UnsafeUnzipSymlinkGood.go:52:24:52:32 | SSA def(candidate) | UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | provenance | | | UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | provenance | FunctionModel Sink:MaD:3 | -| UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | provenance | | -| UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | provenance | | +| UnsafeUnzipSymlinkGood.go:72:3:72:25 | extract:0 ... := ... | UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | provenance | | +| UnsafeUnzipSymlinkGood.go:72:3:72:25 | extract:0 ... := ... | UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | provenance | | | UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | UnsafeUnzipSymlinkGood.go:52:24:52:32 | SSA def(candidate) | provenance | | | UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | UnsafeUnzipSymlinkGood.go:52:24:52:32 | SSA def(candidate) | provenance | | -| ZipSlip.go:11:2:15:2 | range statement[1] | ZipSlip.go:12:24:12:29 | selection of Name | provenance | | -| ZipSlip.go:12:3:12:30 | ... := ...[0] | ZipSlip.go:14:20:14:20 | p | provenance | Sink:MaD:1 | -| ZipSlip.go:12:24:12:29 | selection of Name | ZipSlip.go:12:3:12:30 | ... := ...[0] | provenance | MaD:4 | -| tarslip.go:15:2:15:30 | ... := ...[0] | tarslip.go:16:23:16:33 | selection of Name | provenance | | +| ZipSlip.go:11:2:15:2 | extract:1 range element | ZipSlip.go:12:24:12:29 | selection of Name | provenance | | +| ZipSlip.go:12:3:12:30 | extract:0 ... := ... | ZipSlip.go:14:20:14:20 | p | provenance | Sink:MaD:1 | +| ZipSlip.go:12:24:12:29 | selection of Name | ZipSlip.go:12:3:12:30 | extract:0 ... := ... | provenance | MaD:4 | +| tarslip.go:15:2:15:30 | extract:0 ... := ... | tarslip.go:16:23:16:33 | selection of Name | provenance | | | tarslip.go:16:23:16:33 | selection of Name | tarslip.go:16:14:16:34 | call to Dir | provenance | MaD:6 Sink:MaD:2 | -| tst.go:23:2:43:2 | range statement[1] | tst.go:25:38:25:41 | path | provenance | | -| tst.go:23:2:43:2 | range statement[1] | tst.go:29:20:29:23 | path | provenance | Sink:MaD:1 | -| tst.go:23:2:43:2 | range statement[1] | tst.go:31:21:31:24 | path | provenance | Sink:MaD:1 | -| tst.go:25:3:25:42 | ... := ...[0] | tst.go:27:41:27:47 | relpath | provenance | | -| tst.go:25:38:25:41 | path | tst.go:25:3:25:42 | ... := ...[0] | provenance | MaD:5 | +| tst.go:23:2:43:2 | extract:1 range element | tst.go:25:38:25:41 | path | provenance | | +| tst.go:23:2:43:2 | extract:1 range element | tst.go:29:20:29:23 | path | provenance | Sink:MaD:1 | +| tst.go:23:2:43:2 | extract:1 range element | tst.go:31:21:31:24 | path | provenance | Sink:MaD:1 | +| tst.go:25:3:25:42 | extract:0 ... := ... | tst.go:27:41:27:47 | relpath | provenance | | +| tst.go:25:38:25:41 | path | tst.go:25:3:25:42 | extract:0 ... := ... | provenance | MaD:5 | | tst.go:27:41:27:47 | relpath | tst.go:27:21:27:48 | call to Join | provenance | FunctionModel Sink:MaD:1 | models | 1 | Sink: io/ioutil; ; false; WriteFile; ; ; Argument[0]; path-injection; manual | @@ -34,18 +34,18 @@ nodes | UnsafeUnzipSymlinkGood.go:52:24:52:32 | SSA def(candidate) | semmle.label | SSA def(candidate) | | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | semmle.label | call to Join | | UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | semmle.label | candidate | -| UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | semmle.label | ... := ...[0] | +| UnsafeUnzipSymlinkGood.go:72:3:72:25 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | semmle.label | selection of Linkname | | UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | semmle.label | selection of Name | -| ZipSlip.go:11:2:15:2 | range statement[1] | semmle.label | range statement[1] | -| ZipSlip.go:12:3:12:30 | ... := ...[0] | semmle.label | ... := ...[0] | +| ZipSlip.go:11:2:15:2 | extract:1 range element | semmle.label | extract:1 range element | +| ZipSlip.go:12:3:12:30 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | ZipSlip.go:12:24:12:29 | selection of Name | semmle.label | selection of Name | | ZipSlip.go:14:20:14:20 | p | semmle.label | p | -| tarslip.go:15:2:15:30 | ... := ...[0] | semmle.label | ... := ...[0] | +| tarslip.go:15:2:15:30 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tarslip.go:16:14:16:34 | call to Dir | semmle.label | call to Dir | | tarslip.go:16:23:16:33 | selection of Name | semmle.label | selection of Name | -| tst.go:23:2:43:2 | range statement[1] | semmle.label | range statement[1] | -| tst.go:25:3:25:42 | ... := ...[0] | semmle.label | ... := ...[0] | +| tst.go:23:2:43:2 | extract:1 range element | semmle.label | extract:1 range element | +| tst.go:25:3:25:42 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tst.go:25:38:25:41 | path | semmle.label | path | | tst.go:27:21:27:48 | call to Join | semmle.label | call to Join | | tst.go:27:41:27:47 | relpath | semmle.label | relpath | diff --git a/go/ql/test/query-tests/Security/CWE-078/CONSISTENCY/CfgConsistency.expected b/go/ql/test/query-tests/Security/CWE-078/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/query-tests/Security/CWE-078/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-078/CONSISTENCY/DataFlowConsistency.expected index 51645e40047a..4a35d9f88b96 100644 --- a/go/ql/test/query-tests/Security/CWE-078/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-078/CONSISTENCY/DataFlowConsistency.expected @@ -1,11 +1,11 @@ reverseRead -| ArgumentInjection.go:9:10:9:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CommandInjection2.go:13:15:13:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CommandInjection2.go:21:15:21:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CommandInjection2.go:41:15:41:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CommandInjection.go:9:13:9:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| GitSubcommands.go:11:13:11:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| GitSubcommands.go:22:13:22:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| GitSubcommands.go:33:13:33:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| SanitizingDoubleDash.go:9:13:9:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| SanitizingDoubleDash.go:92:13:92:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| ArgumentInjection.go:9:10:9:12 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CommandInjection2.go:13:15:13:17 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CommandInjection2.go:21:15:21:17 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CommandInjection2.go:41:15:41:17 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| CommandInjection.go:9:13:9:15 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| GitSubcommands.go:11:13:11:15 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| GitSubcommands.go:22:13:22:15 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| GitSubcommands.go:33:13:33:15 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| SanitizingDoubleDash.go:9:13:9:15 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| SanitizingDoubleDash.go:92:13:92:15 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected b/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected index b029c6d2b849..2c0e30f02e47 100644 --- a/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected @@ -48,14 +48,14 @@ edges | GitSubcommands.go:11:13:11:27 | call to Query | GitSubcommands.go:17:36:17:42 | tainted | provenance | | | GitSubcommands.go:33:13:33:19 | selection of URL | GitSubcommands.go:33:13:33:27 | call to Query | provenance | Src:MaD:2 MaD:7 | | GitSubcommands.go:33:13:33:27 | call to Query | GitSubcommands.go:38:32:38:38 | tainted | provenance | | -| SanitizingDoubleDash.go:9:2:9:8 | SSA def(tainted) | SanitizingDoubleDash.go:13:25:13:31 | tainted | provenance | | -| SanitizingDoubleDash.go:9:2:9:8 | SSA def(tainted) | SanitizingDoubleDash.go:14:23:14:33 | slice expression | provenance | | -| SanitizingDoubleDash.go:9:2:9:8 | SSA def(tainted) | SanitizingDoubleDash.go:39:31:39:37 | tainted | provenance | Config | -| SanitizingDoubleDash.go:9:2:9:8 | SSA def(tainted) | SanitizingDoubleDash.go:52:24:52:30 | tainted | provenance | Config | -| SanitizingDoubleDash.go:9:2:9:8 | SSA def(tainted) | SanitizingDoubleDash.go:68:31:68:37 | tainted | provenance | Config | -| SanitizingDoubleDash.go:9:2:9:8 | SSA def(tainted) | SanitizingDoubleDash.go:80:23:80:29 | tainted | provenance | Config | +| SanitizingDoubleDash.go:9:2:9:37 | SSA def(tainted) | SanitizingDoubleDash.go:13:25:13:31 | tainted | provenance | | +| SanitizingDoubleDash.go:9:2:9:37 | SSA def(tainted) | SanitizingDoubleDash.go:14:23:14:33 | slice expression | provenance | | +| SanitizingDoubleDash.go:9:2:9:37 | SSA def(tainted) | SanitizingDoubleDash.go:39:31:39:37 | tainted | provenance | Config | +| SanitizingDoubleDash.go:9:2:9:37 | SSA def(tainted) | SanitizingDoubleDash.go:52:24:52:30 | tainted | provenance | Config | +| SanitizingDoubleDash.go:9:2:9:37 | SSA def(tainted) | SanitizingDoubleDash.go:68:31:68:37 | tainted | provenance | Config | +| SanitizingDoubleDash.go:9:2:9:37 | SSA def(tainted) | SanitizingDoubleDash.go:80:23:80:29 | tainted | provenance | Config | | SanitizingDoubleDash.go:9:13:9:19 | selection of URL | SanitizingDoubleDash.go:9:13:9:27 | call to Query | provenance | Src:MaD:2 MaD:7 | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:9:2:9:8 | SSA def(tainted) | provenance | | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:9:2:9:37 | SSA def(tainted) | provenance | | | SanitizingDoubleDash.go:13:15:13:32 | array literal [array] | SanitizingDoubleDash.go:14:23:14:30 | arrayLit [array] | provenance | | | SanitizingDoubleDash.go:13:25:13:31 | tainted | SanitizingDoubleDash.go:13:15:13:32 | array literal [array] | provenance | | | SanitizingDoubleDash.go:14:23:14:30 | arrayLit [array] | SanitizingDoubleDash.go:14:23:14:33 | slice element node | provenance | | @@ -181,7 +181,7 @@ nodes | GitSubcommands.go:33:13:33:19 | selection of URL | semmle.label | selection of URL | | GitSubcommands.go:33:13:33:27 | call to Query | semmle.label | call to Query | | GitSubcommands.go:38:32:38:38 | tainted | semmle.label | tainted | -| SanitizingDoubleDash.go:9:2:9:8 | SSA def(tainted) | semmle.label | SSA def(tainted) | +| SanitizingDoubleDash.go:9:2:9:37 | SSA def(tainted) | semmle.label | SSA def(tainted) | | SanitizingDoubleDash.go:9:13:9:19 | selection of URL | semmle.label | selection of URL | | SanitizingDoubleDash.go:9:13:9:27 | call to Query | semmle.label | call to Query | | SanitizingDoubleDash.go:13:15:13:32 | array literal [array] | semmle.label | array literal [array] | diff --git a/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected b/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected index 809f5c20976b..d7f1ecd08652 100644 --- a/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected +++ b/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected @@ -1,14 +1,14 @@ #select -| StoredCommand.go:14:22:14:28 | cmdName | StoredCommand.go:11:2:11:27 | ... := ...[0] | StoredCommand.go:14:22:14:28 | cmdName | This command depends on a $@. | StoredCommand.go:11:2:11:27 | ... := ...[0] | stored value | +| StoredCommand.go:14:22:14:28 | cmdName | StoredCommand.go:11:2:11:27 | extract:0 ... := ... | StoredCommand.go:14:22:14:28 | cmdName | This command depends on a $@. | StoredCommand.go:11:2:11:27 | extract:0 ... := ... | stored value | edges -| StoredCommand.go:11:2:11:27 | ... := ...[0] | StoredCommand.go:13:2:13:5 | rows | provenance | Src:MaD:2 | +| StoredCommand.go:11:2:11:27 | extract:0 ... := ... | StoredCommand.go:13:2:13:5 | rows | provenance | Src:MaD:2 | | StoredCommand.go:13:2:13:5 | rows | StoredCommand.go:13:12:13:19 | &... [postupdate] | provenance | FunctionModel | | StoredCommand.go:13:12:13:19 | &... [postupdate] | StoredCommand.go:14:22:14:28 | cmdName | provenance | Sink:MaD:1 | models | 1 | Sink: os/exec; ; false; Command; ; ; Argument[0]; command-injection; manual | | 2 | Source: database/sql; DB; true; Query; ; ; ReturnValue[0]; database; manual | nodes -| StoredCommand.go:11:2:11:27 | ... := ...[0] | semmle.label | ... := ...[0] | +| StoredCommand.go:11:2:11:27 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | StoredCommand.go:13:2:13:5 | rows | semmle.label | rows | | StoredCommand.go:13:12:13:19 | &... [postupdate] | semmle.label | &... [postupdate] | | StoredCommand.go:14:22:14:28 | cmdName | semmle.label | cmdName | diff --git a/go/ql/test/query-tests/Security/CWE-079/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-079/CONSISTENCY/DataFlowConsistency.expected index 0b22e7c6251b..ac74617174f9 100644 --- a/go/ql/test/query-tests/Security/CWE-079/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-079/CONSISTENCY/DataFlowConsistency.expected @@ -1,21 +1,21 @@ reverseRead -| HtmlTemplateEscapingBypassXss.go:99:9:99:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| ReflectedXss.go:11:15:11:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| ReflectedXssGood.go:15:15:15:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| contenttype.go:11:11:11:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| contenttype.go:25:11:25:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| contenttype.go:39:11:39:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| contenttype.go:49:11:49:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| contenttype.go:61:11:61:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| contenttype.go:71:11:71:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| contenttype.go:86:11:86:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| contenttype.go:98:11:98:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| contenttype.go:111:11:111:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| HtmlTemplateEscapingBypassXss.go:99:9:99:9 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| ReflectedXss.go:11:15:11:15 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| ReflectedXssGood.go:15:15:15:15 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| contenttype.go:11:11:11:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| contenttype.go:25:11:25:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| contenttype.go:39:11:39:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| contenttype.go:49:11:49:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| contenttype.go:61:11:61:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| contenttype.go:71:11:71:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| contenttype.go:86:11:86:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| contenttype.go:98:11:98:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| contenttype.go:111:11:111:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | | reflectedxsstest.go:15:13:15:13 | r | Origin of readStep is missing a PostUpdateNode. | | reflectedxsstest.go:21:13:21:13 | r | Origin of readStep is missing a PostUpdateNode. | | reflectedxsstest.go:51:14:51:14 | r | Origin of readStep is missing a PostUpdateNode. | -| tst.go:14:15:14:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:33:15:33:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:48:14:48:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:66:15:66:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| websocketXss.go:26:9:26:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| tst.go:14:15:14:15 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:33:15:33:15 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:48:14:48:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:66:15:66:15 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| websocketXss.go:27:9:27:9 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected index 3e593f0c2029..48b7d7728df6 100644 --- a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected @@ -6,34 +6,35 @@ | contenttype.go:79:11:79:14 | data | contenttype.go:73:10:73:28 | call to FormValue | contenttype.go:79:11:79:14 | data | Cross-site scripting vulnerability due to $@. | contenttype.go:73:10:73:28 | call to FormValue | user-provided value | contenttype.go:0:0:0:0 | contenttype.go | | | contenttype.go:91:4:91:7 | data | contenttype.go:88:10:88:28 | call to FormValue | contenttype.go:91:4:91:7 | data | Cross-site scripting vulnerability due to $@. | contenttype.go:88:10:88:28 | call to FormValue | user-provided value | contenttype.go:0:0:0:0 | contenttype.go | | | contenttype.go:114:50:114:53 | data | contenttype.go:113:10:113:28 | call to FormValue | contenttype.go:114:50:114:53 | data | Cross-site scripting vulnerability due to $@. | contenttype.go:113:10:113:28 | call to FormValue | user-provided value | contenttype.go:0:0:0:0 | contenttype.go | | -| reflectedxsstest.go:33:10:33:57 | type conversion | reflectedxsstest.go:30:2:30:44 | ... := ...[0] | reflectedxsstest.go:33:10:33:57 | type conversion | Cross-site scripting vulnerability due to $@. | reflectedxsstest.go:30:2:30:44 | ... := ...[0] | user-provided value | reflectedxsstest.go:0:0:0:0 | reflectedxsstest.go | | -| reflectedxsstest.go:34:10:34:62 | type conversion | reflectedxsstest.go:30:2:30:44 | ... := ...[1] | reflectedxsstest.go:34:10:34:62 | type conversion | Cross-site scripting vulnerability due to $@. | reflectedxsstest.go:30:2:30:44 | ... := ...[1] | user-provided value | reflectedxsstest.go:0:0:0:0 | reflectedxsstest.go | | -| reflectedxsstest.go:44:10:44:55 | type conversion | reflectedxsstest.go:38:2:38:35 | ... := ...[0] | reflectedxsstest.go:44:10:44:55 | type conversion | Cross-site scripting vulnerability due to $@. | reflectedxsstest.go:38:2:38:35 | ... := ...[0] | user-provided value | reflectedxsstest.go:0:0:0:0 | reflectedxsstest.go | | -| reflectedxsstest.go:45:10:45:18 | byteSlice | reflectedxsstest.go:38:2:38:35 | ... := ...[0] | reflectedxsstest.go:45:10:45:18 | byteSlice | Cross-site scripting vulnerability due to $@. | reflectedxsstest.go:38:2:38:35 | ... := ...[0] | user-provided value | reflectedxsstest.go:0:0:0:0 | reflectedxsstest.go | | +| reflectedxsstest.go:33:10:33:57 | type conversion | reflectedxsstest.go:30:2:30:44 | extract:0 ... := ... | reflectedxsstest.go:33:10:33:57 | type conversion | Cross-site scripting vulnerability due to $@. | reflectedxsstest.go:30:2:30:44 | extract:0 ... := ... | user-provided value | reflectedxsstest.go:0:0:0:0 | reflectedxsstest.go | | +| reflectedxsstest.go:34:10:34:62 | type conversion | reflectedxsstest.go:30:2:30:44 | extract:1 ... := ... | reflectedxsstest.go:34:10:34:62 | type conversion | Cross-site scripting vulnerability due to $@. | reflectedxsstest.go:30:2:30:44 | extract:1 ... := ... | user-provided value | reflectedxsstest.go:0:0:0:0 | reflectedxsstest.go | | +| reflectedxsstest.go:44:10:44:55 | type conversion | reflectedxsstest.go:38:2:38:35 | extract:0 ... := ... | reflectedxsstest.go:44:10:44:55 | type conversion | Cross-site scripting vulnerability due to $@. | reflectedxsstest.go:38:2:38:35 | extract:0 ... := ... | user-provided value | reflectedxsstest.go:0:0:0:0 | reflectedxsstest.go | | +| reflectedxsstest.go:45:10:45:18 | byteSlice | reflectedxsstest.go:38:2:38:35 | extract:0 ... := ... | reflectedxsstest.go:45:10:45:18 | byteSlice | Cross-site scripting vulnerability due to $@. | reflectedxsstest.go:38:2:38:35 | extract:0 ... := ... | user-provided value | reflectedxsstest.go:0:0:0:0 | reflectedxsstest.go | | | reflectedxsstest.go:54:11:54:21 | type conversion | reflectedxsstest.go:51:14:51:18 | selection of URL | reflectedxsstest.go:54:11:54:21 | type conversion | Cross-site scripting vulnerability due to $@. | reflectedxsstest.go:51:14:51:18 | selection of URL | user-provided value | reflectedxsstest.go:0:0:0:0 | reflectedxsstest.go | | | tst.go:18:12:18:39 | type conversion | tst.go:14:15:14:20 | selection of Form | tst.go:18:12:18:39 | type conversion | Cross-site scripting vulnerability due to $@. | tst.go:14:15:14:20 | selection of Form | user-provided value | tst.go:0:0:0:0 | tst.go | | | tst.go:53:12:53:26 | type conversion | tst.go:48:14:48:19 | selection of Form | tst.go:53:12:53:26 | type conversion | Cross-site scripting vulnerability due to $@. | tst.go:48:14:48:19 | selection of Form | user-provided value | tst.go:0:0:0:0 | tst.go | | -| websocketXss.go:32:24:32:27 | xnet | websocketXss.go:31:11:31:14 | xnet [postupdate] | websocketXss.go:32:24:32:27 | xnet | Cross-site scripting vulnerability due to $@. | websocketXss.go:31:11:31:14 | xnet [postupdate] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | -| websocketXss.go:36:24:36:28 | xnet2 | websocketXss.go:35:21:35:25 | xnet2 [postupdate] | websocketXss.go:36:24:36:28 | xnet2 | Cross-site scripting vulnerability due to $@. | websocketXss.go:35:21:35:25 | xnet2 [postupdate] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | -| websocketXss.go:41:24:41:29 | nhooyr | websocketXss.go:40:3:40:40 | ... := ...[1] | websocketXss.go:41:24:41:29 | nhooyr | Cross-site scripting vulnerability due to $@. | websocketXss.go:40:3:40:40 | ... := ...[1] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | -| websocketXss.go:48:24:48:33 | gorillaMsg | websocketXss.go:47:26:47:35 | gorillaMsg [postupdate] | websocketXss.go:48:24:48:33 | gorillaMsg | Cross-site scripting vulnerability due to $@. | websocketXss.go:47:26:47:35 | gorillaMsg [postupdate] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | -| websocketXss.go:52:24:52:31 | gorilla2 | websocketXss.go:51:17:51:24 | gorilla2 [postupdate] | websocketXss.go:52:24:52:31 | gorilla2 | Cross-site scripting vulnerability due to $@. | websocketXss.go:51:17:51:24 | gorilla2 [postupdate] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | -| websocketXss.go:55:24:55:31 | gorilla3 | websocketXss.go:54:3:54:38 | ... := ...[1] | websocketXss.go:55:24:55:31 | gorilla3 | Cross-site scripting vulnerability due to $@. | websocketXss.go:54:3:54:38 | ... := ...[1] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | +| websocketXss.go:33:24:33:27 | xnet | websocketXss.go:32:11:32:14 | xnet [postupdate] | websocketXss.go:33:24:33:27 | xnet | Cross-site scripting vulnerability due to $@. | websocketXss.go:32:11:32:14 | xnet [postupdate] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | +| websocketXss.go:37:24:37:28 | xnet2 | websocketXss.go:36:21:36:25 | xnet2 [postupdate] | websocketXss.go:37:24:37:28 | xnet2 | Cross-site scripting vulnerability due to $@. | websocketXss.go:36:21:36:25 | xnet2 [postupdate] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | +| websocketXss.go:42:24:42:29 | nhooyr | websocketXss.go:41:3:41:40 | extract:1 ... := ... | websocketXss.go:42:24:42:29 | nhooyr | Cross-site scripting vulnerability due to $@. | websocketXss.go:41:3:41:40 | extract:1 ... := ... | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | +| websocketXss.go:47:24:47:31 | coderMsg | websocketXss.go:46:3:46:42 | extract:1 ... := ... | websocketXss.go:47:24:47:31 | coderMsg | Cross-site scripting vulnerability due to $@. | websocketXss.go:46:3:46:42 | extract:1 ... := ... | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | +| websocketXss.go:54:24:54:33 | gorillaMsg | websocketXss.go:53:26:53:35 | gorillaMsg [postupdate] | websocketXss.go:54:24:54:33 | gorillaMsg | Cross-site scripting vulnerability due to $@. | websocketXss.go:53:26:53:35 | gorillaMsg [postupdate] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | +| websocketXss.go:58:24:58:31 | gorilla2 | websocketXss.go:57:17:57:24 | gorilla2 [postupdate] | websocketXss.go:58:24:58:31 | gorilla2 | Cross-site scripting vulnerability due to $@. | websocketXss.go:57:17:57:24 | gorilla2 [postupdate] | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | +| websocketXss.go:61:24:61:31 | gorilla3 | websocketXss.go:60:3:60:38 | extract:1 ... := ... | websocketXss.go:61:24:61:31 | gorilla3 | Cross-site scripting vulnerability due to $@. | websocketXss.go:60:3:60:38 | extract:1 ... := ... | user-provided value | websocketXss.go:0:0:0:0 | websocketXss.go | | edges -| ReflectedXss.go:11:15:11:20 | selection of Form | ReflectedXss.go:11:15:11:36 | call to Get | provenance | Src:MaD:6 MaD:18 | +| ReflectedXss.go:11:15:11:20 | selection of Form | ReflectedXss.go:11:15:11:36 | call to Get | provenance | Src:MaD:7 MaD:18 | | ReflectedXss.go:11:15:11:36 | call to Get | ReflectedXss.go:14:44:14:51 | username | provenance | | -| contenttype.go:11:11:11:16 | selection of Form | contenttype.go:11:11:11:28 | call to Get | provenance | Src:MaD:6 MaD:18 | +| contenttype.go:11:11:11:16 | selection of Form | contenttype.go:11:11:11:28 | call to Get | provenance | Src:MaD:7 MaD:18 | | contenttype.go:11:11:11:28 | call to Get | contenttype.go:17:11:17:22 | type conversion | provenance | | -| contenttype.go:49:11:49:16 | selection of Form | contenttype.go:49:11:49:28 | call to Get | provenance | Src:MaD:6 MaD:18 | +| contenttype.go:49:11:49:16 | selection of Form | contenttype.go:49:11:49:28 | call to Get | provenance | Src:MaD:7 MaD:18 | | contenttype.go:49:11:49:28 | call to Get | contenttype.go:53:34:53:37 | data | provenance | | -| contenttype.go:63:10:63:28 | call to FormValue | contenttype.go:64:52:64:55 | data | provenance | Src:MaD:8 | -| contenttype.go:73:10:73:28 | call to FormValue | contenttype.go:79:11:79:14 | data | provenance | Src:MaD:8 | -| contenttype.go:88:10:88:28 | call to FormValue | contenttype.go:91:4:91:7 | data | provenance | Src:MaD:8 | -| contenttype.go:113:10:113:28 | call to FormValue | contenttype.go:114:50:114:53 | data | provenance | Src:MaD:8 | -| reflectedxsstest.go:30:2:30:44 | ... := ...[0] | reflectedxsstest.go:31:30:31:33 | file | provenance | Src:MaD:7 | -| reflectedxsstest.go:30:2:30:44 | ... := ...[1] | reflectedxsstest.go:34:46:34:60 | selection of Filename | provenance | Src:MaD:7 | -| reflectedxsstest.go:31:2:31:34 | ... := ...[0] | reflectedxsstest.go:32:48:32:54 | content | provenance | | -| reflectedxsstest.go:31:30:31:33 | file | reflectedxsstest.go:31:2:31:34 | ... := ...[0] | provenance | MaD:13 | +| contenttype.go:63:10:63:28 | call to FormValue | contenttype.go:64:52:64:55 | data | provenance | Src:MaD:9 | +| contenttype.go:73:10:73:28 | call to FormValue | contenttype.go:79:11:79:14 | data | provenance | Src:MaD:9 | +| contenttype.go:88:10:88:28 | call to FormValue | contenttype.go:91:4:91:7 | data | provenance | Src:MaD:9 | +| contenttype.go:113:10:113:28 | call to FormValue | contenttype.go:114:50:114:53 | data | provenance | Src:MaD:9 | +| reflectedxsstest.go:30:2:30:44 | extract:0 ... := ... | reflectedxsstest.go:31:30:31:33 | file | provenance | Src:MaD:8 | +| reflectedxsstest.go:30:2:30:44 | extract:1 ... := ... | reflectedxsstest.go:34:46:34:60 | selection of Filename | provenance | Src:MaD:8 | +| reflectedxsstest.go:31:2:31:34 | extract:0 ... := ... | reflectedxsstest.go:32:48:32:54 | content | provenance | | +| reflectedxsstest.go:31:30:31:33 | file | reflectedxsstest.go:31:2:31:34 | extract:0 ... := ... | provenance | MaD:13 | | reflectedxsstest.go:32:48:32:54 | content | reflectedxsstest.go:33:49:33:55 | content | provenance | | | reflectedxsstest.go:33:17:33:56 | []type{args} [array] | reflectedxsstest.go:33:17:33:56 | call to Sprintf | provenance | MaD:12 | | reflectedxsstest.go:33:17:33:56 | call to Sprintf | reflectedxsstest.go:33:10:33:57 | type conversion | provenance | | @@ -43,10 +44,10 @@ edges | reflectedxsstest.go:34:17:34:61 | call to Sprintf | reflectedxsstest.go:34:10:34:62 | type conversion | provenance | | | reflectedxsstest.go:34:46:34:60 | selection of Filename | reflectedxsstest.go:34:17:34:61 | []type{args} [array] | provenance | | | reflectedxsstest.go:34:46:34:60 | selection of Filename | reflectedxsstest.go:34:17:34:61 | call to Sprintf | provenance | FunctionModel | -| reflectedxsstest.go:38:2:38:35 | ... := ...[0] | reflectedxsstest.go:39:16:39:21 | reader | provenance | Src:MaD:9 | -| reflectedxsstest.go:39:2:39:32 | ... := ...[0] | reflectedxsstest.go:40:14:40:17 | part | provenance | | -| reflectedxsstest.go:39:2:39:32 | ... := ...[0] | reflectedxsstest.go:42:2:42:5 | part | provenance | | -| reflectedxsstest.go:39:16:39:21 | reader | reflectedxsstest.go:39:2:39:32 | ... := ...[0] | provenance | MaD:16 | +| reflectedxsstest.go:38:2:38:35 | extract:0 ... := ... | reflectedxsstest.go:39:16:39:21 | reader | provenance | Src:MaD:10 | +| reflectedxsstest.go:39:2:39:32 | extract:0 ... := ... | reflectedxsstest.go:40:14:40:17 | part | provenance | | +| reflectedxsstest.go:39:2:39:32 | extract:0 ... := ... | reflectedxsstest.go:42:2:42:5 | part | provenance | | +| reflectedxsstest.go:39:16:39:21 | reader | reflectedxsstest.go:39:2:39:32 | extract:0 ... := ... | provenance | MaD:16 | | reflectedxsstest.go:40:14:40:17 | part | reflectedxsstest.go:40:14:40:28 | call to FileName | provenance | MaD:15 | | reflectedxsstest.go:40:14:40:28 | call to FileName | reflectedxsstest.go:44:46:44:53 | partName | provenance | | | reflectedxsstest.go:42:2:42:5 | part | reflectedxsstest.go:42:12:42:20 | byteSlice [postupdate] | provenance | MaD:14 | @@ -55,32 +56,35 @@ edges | reflectedxsstest.go:44:17:44:54 | call to Sprintf | reflectedxsstest.go:44:10:44:55 | type conversion | provenance | | | reflectedxsstest.go:44:46:44:53 | partName | reflectedxsstest.go:44:17:44:54 | []type{args} [array] | provenance | | | reflectedxsstest.go:44:46:44:53 | partName | reflectedxsstest.go:44:17:44:54 | call to Sprintf | provenance | FunctionModel | -| reflectedxsstest.go:51:14:51:18 | selection of URL | reflectedxsstest.go:51:14:51:26 | call to Query | provenance | Src:MaD:10 MaD:17 | +| reflectedxsstest.go:51:14:51:18 | selection of URL | reflectedxsstest.go:51:14:51:26 | call to Query | provenance | Src:MaD:11 MaD:17 | | reflectedxsstest.go:51:14:51:26 | call to Query | reflectedxsstest.go:54:11:54:21 | type conversion | provenance | | -| tst.go:14:15:14:20 | selection of Form | tst.go:14:15:14:36 | call to Get | provenance | Src:MaD:6 MaD:18 | -| tst.go:14:15:14:36 | call to Get | tst.go:18:32:18:32 | a | provenance | | +| tst.go:14:15:14:20 | selection of Form | tst.go:14:15:14:36 | call to Get | provenance | Src:MaD:7 MaD:18 | +| tst.go:14:15:14:36 | call to Get | tst.go:17:18:17:25 | username | provenance | | +| tst.go:17:9:17:57 | slice literal [array] | tst.go:18:32:18:32 | a [array] | provenance | | +| tst.go:17:18:17:25 | username | tst.go:17:9:17:57 | slice literal [array] | provenance | | | tst.go:18:19:18:38 | call to Join | tst.go:18:12:18:39 | type conversion | provenance | | -| tst.go:18:32:18:32 | a | tst.go:18:19:18:38 | call to Join | provenance | MaD:19 | -| tst.go:48:14:48:19 | selection of Form | tst.go:48:14:48:34 | call to Get | provenance | Src:MaD:6 MaD:18 | +| tst.go:18:32:18:32 | a [array] | tst.go:18:19:18:38 | call to Join | provenance | MaD:19 | +| tst.go:48:14:48:19 | selection of Form | tst.go:48:14:48:34 | call to Get | provenance | Src:MaD:7 MaD:18 | | tst.go:48:14:48:34 | call to Get | tst.go:53:12:53:26 | type conversion | provenance | | -| websocketXss.go:31:11:31:14 | xnet [postupdate] | websocketXss.go:32:24:32:27 | xnet | provenance | Src:MaD:5 | -| websocketXss.go:35:21:35:25 | xnet2 [postupdate] | websocketXss.go:36:24:36:28 | xnet2 | provenance | Src:MaD:4 | -| websocketXss.go:40:3:40:40 | ... := ...[1] | websocketXss.go:41:24:41:29 | nhooyr | provenance | Src:MaD:11 | -| websocketXss.go:47:26:47:35 | gorillaMsg [postupdate] | websocketXss.go:48:24:48:33 | gorillaMsg | provenance | Src:MaD:1 | -| websocketXss.go:51:17:51:24 | gorilla2 [postupdate] | websocketXss.go:52:24:52:31 | gorilla2 | provenance | Src:MaD:2 | -| websocketXss.go:54:3:54:38 | ... := ...[1] | websocketXss.go:55:24:55:31 | gorilla3 | provenance | Src:MaD:3 | +| websocketXss.go:32:11:32:14 | xnet [postupdate] | websocketXss.go:33:24:33:27 | xnet | provenance | Src:MaD:5 | +| websocketXss.go:36:21:36:25 | xnet2 [postupdate] | websocketXss.go:37:24:37:28 | xnet2 | provenance | Src:MaD:4 | +| websocketXss.go:41:3:41:40 | extract:1 ... := ... | websocketXss.go:42:24:42:29 | nhooyr | provenance | Src:MaD:6 | +| websocketXss.go:46:3:46:42 | extract:1 ... := ... | websocketXss.go:47:24:47:31 | coderMsg | provenance | Src:MaD:6 | +| websocketXss.go:53:26:53:35 | gorillaMsg [postupdate] | websocketXss.go:54:24:54:33 | gorillaMsg | provenance | Src:MaD:1 | +| websocketXss.go:57:17:57:24 | gorilla2 [postupdate] | websocketXss.go:58:24:58:31 | gorilla2 | provenance | Src:MaD:2 | +| websocketXss.go:60:3:60:38 | extract:1 ... := ... | websocketXss.go:61:24:61:31 | gorilla3 | provenance | Src:MaD:3 | models | 1 | Source: github.com/gorilla/websocket; ; false; ReadJSON; ; ; Argument[1]; remote; manual | | 2 | Source: github.com/gorilla/websocket; Conn; true; ReadJSON; ; ; Argument[0]; remote; manual | | 3 | Source: github.com/gorilla/websocket; Conn; true; ReadMessage; ; ; ReturnValue[1]; remote; manual | | 4 | Source: golang.org/x/net/websocket; Codec; true; Receive; ; ; Argument[1]; remote; manual | | 5 | Source: golang.org/x/net/websocket; Conn; true; Read; ; ; Argument[0]; remote; manual | -| 6 | Source: net/http; Request; true; Form; ; ; ; remote; manual | -| 7 | Source: net/http; Request; true; FormFile; ; ; ReturnValue[0..1]; remote; manual | -| 8 | Source: net/http; Request; true; FormValue; ; ; ReturnValue; remote; manual | -| 9 | Source: net/http; Request; true; MultipartReader; ; ; ReturnValue[0]; remote; manual | -| 10 | Source: net/http; Request; true; URL; ; ; ; remote; manual | -| 11 | Source: nhooyr.io/websocket; Conn; true; Read; ; ; ReturnValue[1]; remote; manual | +| 6 | Source: group:coder/websocket; Conn; true; Read; ; ; ReturnValue[1]; remote; manual | +| 7 | Source: net/http; Request; true; Form; ; ; ; remote; manual | +| 8 | Source: net/http; Request; true; FormFile; ; ; ReturnValue[0..1]; remote; manual | +| 9 | Source: net/http; Request; true; FormValue; ; ; ReturnValue; remote; manual | +| 10 | Source: net/http; Request; true; MultipartReader; ; ; ReturnValue[0]; remote; manual | +| 11 | Source: net/http; Request; true; URL; ; ; ; remote; manual | | 12 | Summary: fmt; ; false; Sprintf; ; ; Argument[1].ArrayElement; ReturnValue; taint; manual | | 13 | Summary: io; ; false; ReadAll; ; ; Argument[0]; ReturnValue[0]; taint; manual | | 14 | Summary: io; Reader; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | @@ -88,7 +92,7 @@ models | 16 | Summary: mime/multipart; Reader; true; NextPart; ; ; Argument[receiver]; ReturnValue[0]; taint; manual | | 17 | Summary: net/url; URL; true; Query; ; ; Argument[receiver]; ReturnValue; taint; manual | | 18 | Summary: net/url; Values; true; Get; ; ; Argument[receiver]; ReturnValue; taint; manual | -| 19 | Summary: strings; ; false; Join; ; ; Argument[0..1]; ReturnValue; taint; manual | +| 19 | Summary: strings; ; false; Join; ; ; Argument[0].ArrayElement; ReturnValue; taint; manual | nodes | ReflectedXss.go:11:15:11:20 | selection of Form | semmle.label | selection of Form | | ReflectedXss.go:11:15:11:36 | call to Get | semmle.label | call to Get | @@ -107,9 +111,9 @@ nodes | contenttype.go:91:4:91:7 | data | semmle.label | data | | contenttype.go:113:10:113:28 | call to FormValue | semmle.label | call to FormValue | | contenttype.go:114:50:114:53 | data | semmle.label | data | -| reflectedxsstest.go:30:2:30:44 | ... := ...[0] | semmle.label | ... := ...[0] | -| reflectedxsstest.go:30:2:30:44 | ... := ...[1] | semmle.label | ... := ...[1] | -| reflectedxsstest.go:31:2:31:34 | ... := ...[0] | semmle.label | ... := ...[0] | +| reflectedxsstest.go:30:2:30:44 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | +| reflectedxsstest.go:30:2:30:44 | extract:1 ... := ... | semmle.label | extract:1 ... := ... | +| reflectedxsstest.go:31:2:31:34 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | reflectedxsstest.go:31:30:31:33 | file | semmle.label | file | | reflectedxsstest.go:32:48:32:54 | content | semmle.label | content | | reflectedxsstest.go:33:10:33:57 | type conversion | semmle.label | type conversion | @@ -120,8 +124,8 @@ nodes | reflectedxsstest.go:34:17:34:61 | []type{args} [array] | semmle.label | []type{args} [array] | | reflectedxsstest.go:34:17:34:61 | call to Sprintf | semmle.label | call to Sprintf | | reflectedxsstest.go:34:46:34:60 | selection of Filename | semmle.label | selection of Filename | -| reflectedxsstest.go:38:2:38:35 | ... := ...[0] | semmle.label | ... := ...[0] | -| reflectedxsstest.go:39:2:39:32 | ... := ...[0] | semmle.label | ... := ...[0] | +| reflectedxsstest.go:38:2:38:35 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | +| reflectedxsstest.go:39:2:39:32 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | reflectedxsstest.go:39:16:39:21 | reader | semmle.label | reader | | reflectedxsstest.go:40:14:40:17 | part | semmle.label | part | | reflectedxsstest.go:40:14:40:28 | call to FileName | semmle.label | call to FileName | @@ -137,22 +141,26 @@ nodes | reflectedxsstest.go:54:11:54:21 | type conversion | semmle.label | type conversion | | tst.go:14:15:14:20 | selection of Form | semmle.label | selection of Form | | tst.go:14:15:14:36 | call to Get | semmle.label | call to Get | +| tst.go:17:9:17:57 | slice literal [array] | semmle.label | slice literal [array] | +| tst.go:17:18:17:25 | username | semmle.label | username | | tst.go:18:12:18:39 | type conversion | semmle.label | type conversion | | tst.go:18:19:18:38 | call to Join | semmle.label | call to Join | -| tst.go:18:32:18:32 | a | semmle.label | a | +| tst.go:18:32:18:32 | a [array] | semmle.label | a [array] | | tst.go:48:14:48:19 | selection of Form | semmle.label | selection of Form | | tst.go:48:14:48:34 | call to Get | semmle.label | call to Get | | tst.go:53:12:53:26 | type conversion | semmle.label | type conversion | -| websocketXss.go:31:11:31:14 | xnet [postupdate] | semmle.label | xnet [postupdate] | -| websocketXss.go:32:24:32:27 | xnet | semmle.label | xnet | -| websocketXss.go:35:21:35:25 | xnet2 [postupdate] | semmle.label | xnet2 [postupdate] | -| websocketXss.go:36:24:36:28 | xnet2 | semmle.label | xnet2 | -| websocketXss.go:40:3:40:40 | ... := ...[1] | semmle.label | ... := ...[1] | -| websocketXss.go:41:24:41:29 | nhooyr | semmle.label | nhooyr | -| websocketXss.go:47:26:47:35 | gorillaMsg [postupdate] | semmle.label | gorillaMsg [postupdate] | -| websocketXss.go:48:24:48:33 | gorillaMsg | semmle.label | gorillaMsg | -| websocketXss.go:51:17:51:24 | gorilla2 [postupdate] | semmle.label | gorilla2 [postupdate] | -| websocketXss.go:52:24:52:31 | gorilla2 | semmle.label | gorilla2 | -| websocketXss.go:54:3:54:38 | ... := ...[1] | semmle.label | ... := ...[1] | -| websocketXss.go:55:24:55:31 | gorilla3 | semmle.label | gorilla3 | +| websocketXss.go:32:11:32:14 | xnet [postupdate] | semmle.label | xnet [postupdate] | +| websocketXss.go:33:24:33:27 | xnet | semmle.label | xnet | +| websocketXss.go:36:21:36:25 | xnet2 [postupdate] | semmle.label | xnet2 [postupdate] | +| websocketXss.go:37:24:37:28 | xnet2 | semmle.label | xnet2 | +| websocketXss.go:41:3:41:40 | extract:1 ... := ... | semmle.label | extract:1 ... := ... | +| websocketXss.go:42:24:42:29 | nhooyr | semmle.label | nhooyr | +| websocketXss.go:46:3:46:42 | extract:1 ... := ... | semmle.label | extract:1 ... := ... | +| websocketXss.go:47:24:47:31 | coderMsg | semmle.label | coderMsg | +| websocketXss.go:53:26:53:35 | gorillaMsg [postupdate] | semmle.label | gorillaMsg [postupdate] | +| websocketXss.go:54:24:54:33 | gorillaMsg | semmle.label | gorillaMsg | +| websocketXss.go:57:17:57:24 | gorilla2 [postupdate] | semmle.label | gorilla2 [postupdate] | +| websocketXss.go:58:24:58:31 | gorilla2 | semmle.label | gorilla2 | +| websocketXss.go:60:3:60:38 | extract:1 ... := ... | semmle.label | extract:1 ... := ... | +| websocketXss.go:61:24:61:31 | gorilla3 | semmle.label | gorilla3 | subpaths diff --git a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected index cde1a866c755..50284f8e6d4d 100644 --- a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected @@ -1,10 +1,10 @@ #select | StoredXss.go:13:21:13:36 | ...+... | StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | Stored cross-site scripting vulnerability due to $@. | StoredXss.go:13:21:13:31 | call to Name | stored value | -| stored.go:30:22:30:25 | name | stored.go:18:3:18:28 | ... := ...[0] | stored.go:30:22:30:25 | name | Stored cross-site scripting vulnerability due to $@. | stored.go:18:3:18:28 | ... := ...[0] | stored value | +| stored.go:30:22:30:25 | name | stored.go:18:3:18:28 | extract:0 ... := ... | stored.go:30:22:30:25 | name | Stored cross-site scripting vulnerability due to $@. | stored.go:18:3:18:28 | extract:0 ... := ... | stored value | | stored.go:61:22:61:25 | path | stored.go:59:30:59:33 | SSA def(path) | stored.go:61:22:61:25 | path | Stored cross-site scripting vulnerability due to $@. | stored.go:59:30:59:33 | SSA def(path) | stored value | edges | StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | provenance | | -| stored.go:18:3:18:28 | ... := ...[0] | stored.go:25:14:25:17 | rows | provenance | Src:MaD:1 | +| stored.go:18:3:18:28 | extract:0 ... := ... | stored.go:25:14:25:17 | rows | provenance | Src:MaD:1 | | stored.go:25:14:25:17 | rows | stored.go:25:29:25:33 | &... [postupdate] | provenance | FunctionModel | | stored.go:25:29:25:33 | &... [postupdate] | stored.go:30:22:30:25 | name | provenance | | | stored.go:59:30:59:33 | SSA def(path) | stored.go:61:22:61:25 | path | provenance | | @@ -13,7 +13,7 @@ models nodes | StoredXss.go:13:21:13:31 | call to Name | semmle.label | call to Name | | StoredXss.go:13:21:13:36 | ...+... | semmle.label | ...+... | -| stored.go:18:3:18:28 | ... := ...[0] | semmle.label | ... := ...[0] | +| stored.go:18:3:18:28 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | stored.go:25:14:25:17 | rows | semmle.label | rows | | stored.go:25:29:25:33 | &... [postupdate] | semmle.label | &... [postupdate] | | stored.go:30:22:30:25 | name | semmle.label | name | diff --git a/go/ql/test/query-tests/Security/CWE-079/go.mod b/go/ql/test/query-tests/Security/CWE-079/go.mod index aaab77bf0398..fa397e413d7e 100644 --- a/go/ql/test/query-tests/Security/CWE-079/go.mod +++ b/go/ql/test/query-tests/Security/CWE-079/go.mod @@ -3,6 +3,7 @@ module codeql-go-tests/CWE-079 go 1.24 require ( + github.com/coder/websocket v1.8.5 github.com/gobwas/ws v1.0.3 github.com/gorilla/websocket v1.4.2 golang.org/x/net v0.0.0-20200505041828-1ed23360d12c diff --git a/go/ql/test/query-tests/Security/CWE-079/vendor/github.com/coder/websocket/LICENSE b/go/ql/test/query-tests/Security/CWE-079/vendor/github.com/coder/websocket/LICENSE new file mode 100644 index 000000000000..b5b5fef31f0f --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-079/vendor/github.com/coder/websocket/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Anmol Sethi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/go/ql/test/query-tests/Security/CWE-079/vendor/github.com/coder/websocket/stub.go b/go/ql/test/query-tests/Security/CWE-079/vendor/github.com/coder/websocket/stub.go new file mode 100644 index 000000000000..7bf2a208daca --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-079/vendor/github.com/coder/websocket/stub.go @@ -0,0 +1,76 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for nhooyr.io/websocket, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: nhooyr.io/websocket (exports: ; functions: Dial) + +// Package websocket is a stub of nhooyr.io/websocket, generated by depstubber. +package websocket + +import ( + context "context" + io "io" + http "net/http" +) + +type CompressionMode int + +type Conn struct{} + +func (_ *Conn) Close(_ StatusCode, _ string) error { + return nil +} + +func (_ *Conn) CloseRead(_ context.Context) context.Context { + return nil +} + +func (_ *Conn) Ping(_ context.Context) error { + return nil +} + +func (_ *Conn) Read(_ context.Context) (MessageType, []byte, error) { + return 0, nil, nil +} + +func (_ *Conn) Reader(_ context.Context) (MessageType, io.Reader, error) { + return 0, nil, nil +} + +func (_ *Conn) SetReadLimit(_ int64) {} + +func (_ *Conn) Subprotocol() string { + return "" +} + +func (_ *Conn) Write(_ context.Context, _ MessageType, _ []byte) error { + return nil +} + +func (_ *Conn) Writer(_ context.Context, _ MessageType) (io.WriteCloser, error) { + return nil, nil +} + +func Dial(_ context.Context, _ string, _ *DialOptions) (*Conn, *http.Response, error) { + return nil, nil, nil +} + +type DialOptions struct { + HTTPClient *http.Client + HTTPHeader http.Header + Subprotocols []string + CompressionMode CompressionMode + CompressionThreshold int +} + +type MessageType int + +func (_ MessageType) String() string { + return "" +} + +type StatusCode int + +func (_ StatusCode) String() string { + return "" +} diff --git a/go/ql/test/query-tests/Security/CWE-079/vendor/modules.txt b/go/ql/test/query-tests/Security/CWE-079/vendor/modules.txt index f61f191db597..829fd45b3539 100644 --- a/go/ql/test/query-tests/Security/CWE-079/vendor/modules.txt +++ b/go/ql/test/query-tests/Security/CWE-079/vendor/modules.txt @@ -1,3 +1,6 @@ +# github.com/coder/websocket v1.8.5 +## explicit +github.com/coder/websocket # github.com/gobwas/ws v1.0.3 ## explicit github.com/gobwas/ws diff --git a/go/ql/test/query-tests/Security/CWE-079/websocketXss.go b/go/ql/test/query-tests/Security/CWE-079/websocketXss.go index eadc87b2c9f9..1bf77e72d8f6 100644 --- a/go/ql/test/query-tests/Security/CWE-079/websocketXss.go +++ b/go/ql/test/query-tests/Security/CWE-079/websocketXss.go @@ -10,6 +10,7 @@ import ( "fmt" "net/http" + coder "github.com/coder/websocket" gorilla "github.com/gorilla/websocket" websocket "golang.org/x/net/websocket" nhooyr "nhooyr.io/websocket" @@ -40,6 +41,11 @@ func xss(w http.ResponseWriter, r *http.Request) { _, nhooyr, _ := n.Read(context.TODO()) // $ Source[go/reflected-xss] fmt.Fprintf(w, "%v", nhooyr) // $ Alert[go/reflected-xss] } + { + n, _, _ := coder.Dial(context.TODO(), uri, nil) + _, coderMsg, _ := n.Read(context.TODO()) // $ Source[go/reflected-xss] + fmt.Fprintf(w, "%v", coderMsg) // $ Alert[go/reflected-xss] + } { dialer := gorilla.Dialer{} conn, _, _ := dialer.Dial(uri, nil) diff --git a/go/ql/test/query-tests/Security/CWE-089/CONSISTENCY/CfgConsistency.expected b/go/ql/test/query-tests/Security/CWE-089/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/query-tests/Security/CWE-089/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-089/CONSISTENCY/DataFlowConsistency.expected index bb9cf32663a7..3ec923eb2391 100644 --- a/go/ql/test/query-tests/Security/CWE-089/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-089/CONSISTENCY/DataFlowConsistency.expected @@ -1,23 +1,23 @@ reverseRead -| SqlInjection.go:11:3:11:5 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| SqlInjection.go:11:3:11:5 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | | SqlInjection.go:11:3:11:17 | call to Query | Origin of readStep is missing a PostUpdateNode. | -| SqlInjectionGood.go:10:14:10:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| SqlInjectionGood.go:10:14:10:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | | SqlInjectionGood.go:10:14:10:28 | call to Query | Origin of readStep is missing a PostUpdateNode. | -| issue48.go:17:25:17:27 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| issue48.go:17:25:17:27 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | | issue48.go:21:3:21:21 | RequestDataFromJson | Origin of readStep is missing a PostUpdateNode. | -| issue48.go:27:26:27:28 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| issue48.go:27:26:27:28 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | | issue48.go:31:3:31:22 | RequestDataFromJson2 | Origin of readStep is missing a PostUpdateNode. | -| issue48.go:37:24:37:26 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| issue48.go:37:24:37:26 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | | issue48.go:40:3:40:22 | RequestDataFromJson3 | Origin of readStep is missing a PostUpdateNode. | -| main.go:15:63:15:63 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| main.go:15:63:15:63 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | | main.go:15:63:15:75 | call to Query | Origin of readStep is missing a PostUpdateNode. | -| main.go:16:63:16:63 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:30:13:30:15 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:34:3:34:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:40:25:40:27 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:43:3:43:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:49:28:49:30 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:52:3:52:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| main.go:58:28:58:30 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| main.go:16:63:16:63 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| main.go:30:13:30:15 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| main.go:34:3:34:13 | implicit-deref RequestData | Origin of readStep is missing a PostUpdateNode. | +| main.go:40:25:40:27 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| main.go:43:3:43:13 | implicit-deref RequestData | Origin of readStep is missing a PostUpdateNode. | +| main.go:49:28:49:30 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| main.go:52:3:52:13 | implicit-deref RequestData | Origin of readStep is missing a PostUpdateNode. | +| main.go:58:28:58:30 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | | main.go:61:4:61:15 | star expression | Origin of readStep is missing a PostUpdateNode. | -| main.go:68:18:68:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| main.go:68:18:68:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected b/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected index e8c6848b5695..70037706cfd8 100644 --- a/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected @@ -31,16 +31,16 @@ edges | SqlInjection.go:11:3:11:17 | call to Query | SqlInjection.go:11:3:11:29 | index expression | provenance | | | SqlInjection.go:11:3:11:29 | index expression | SqlInjection.go:10:7:11:30 | []type{args} [array] | provenance | | | SqlInjection.go:11:3:11:29 | index expression | SqlInjection.go:10:7:11:30 | call to Sprintf | provenance | FunctionModel | -| issue48.go:17:2:17:33 | ... := ...[0] | issue48.go:18:17:18:17 | b | provenance | | -| issue48.go:17:25:17:32 | selection of Body | issue48.go:17:2:17:33 | ... := ...[0] | provenance | Src:MaD:17 MaD:24 | +| issue48.go:17:2:17:33 | extract:0 ... := ... | issue48.go:18:17:18:17 | b | provenance | | +| issue48.go:17:25:17:32 | selection of Body | issue48.go:17:2:17:33 | extract:0 ... := ... | provenance | Src:MaD:17 MaD:24 | | issue48.go:18:17:18:17 | b | issue48.go:18:20:18:39 | &... [postupdate] | provenance | MaD:22 | | issue48.go:18:20:18:39 | &... [postupdate] | issue48.go:21:3:21:33 | index expression | provenance | | | issue48.go:20:8:21:34 | []type{args} [array] | issue48.go:20:8:21:34 | call to Sprintf | provenance | MaD:23 | | issue48.go:20:8:21:34 | call to Sprintf | issue48.go:22:11:22:12 | q3 | provenance | Sink:MaD:1 | | issue48.go:21:3:21:33 | index expression | issue48.go:20:8:21:34 | []type{args} [array] | provenance | | | issue48.go:21:3:21:33 | index expression | issue48.go:20:8:21:34 | call to Sprintf | provenance | FunctionModel | -| issue48.go:27:2:27:34 | ... := ...[0] | issue48.go:28:17:28:18 | b2 | provenance | | -| issue48.go:27:26:27:33 | selection of Body | issue48.go:27:2:27:34 | ... := ...[0] | provenance | Src:MaD:17 MaD:24 | +| issue48.go:27:2:27:34 | extract:0 ... := ... | issue48.go:28:17:28:18 | b2 | provenance | | +| issue48.go:27:26:27:33 | selection of Body | issue48.go:27:2:27:34 | extract:0 ... := ... | provenance | Src:MaD:17 MaD:24 | | issue48.go:28:17:28:18 | b2 | issue48.go:28:21:28:41 | &... [postupdate] | provenance | MaD:22 | | issue48.go:28:21:28:41 | &... [postupdate] | issue48.go:31:3:31:31 | selection of Category | provenance | | | issue48.go:30:8:31:32 | []type{args} [array] | issue48.go:30:8:31:32 | call to Sprintf | provenance | MaD:23 | @@ -72,19 +72,19 @@ edges | main.go:30:13:30:39 | index expression | main.go:28:18:31:2 | struct literal [Category] | provenance | | | main.go:33:7:34:23 | []type{args} [array] | main.go:33:7:34:23 | call to Sprintf | provenance | MaD:23 | | main.go:33:7:34:23 | call to Sprintf | main.go:35:11:35:11 | q | provenance | Sink:MaD:1 | -| main.go:34:3:34:13 | RequestData [pointer, Category] | main.go:34:3:34:13 | implicit dereference [Category] | provenance | | -| main.go:34:3:34:13 | implicit dereference [Category] | main.go:34:3:34:22 | selection of Category | provenance | | +| main.go:34:3:34:13 | RequestData [pointer, Category] | main.go:34:3:34:13 | implicit-deref RequestData [Category] | provenance | | +| main.go:34:3:34:13 | implicit-deref RequestData [Category] | main.go:34:3:34:22 | selection of Category | provenance | | | main.go:34:3:34:22 | selection of Category | main.go:33:7:34:23 | []type{args} [array] | provenance | | | main.go:34:3:34:22 | selection of Category | main.go:33:7:34:23 | call to Sprintf | provenance | FunctionModel | | main.go:40:2:40:12 | RequestData [postupdate] [pointer, Category] | main.go:43:3:43:13 | RequestData [pointer, Category] | provenance | | -| main.go:40:2:40:12 | implicit dereference [postupdate] [Category] | main.go:40:2:40:12 | RequestData [postupdate] [pointer, Category] | provenance | | +| main.go:40:2:40:12 | implicit-deref RequestData [postupdate] [Category] | main.go:40:2:40:12 | RequestData [postupdate] [pointer, Category] | provenance | | | main.go:40:25:40:31 | selection of URL | main.go:40:25:40:39 | call to Query | provenance | Src:MaD:21 MaD:26 | | main.go:40:25:40:39 | call to Query | main.go:40:25:40:51 | index expression | provenance | | -| main.go:40:25:40:51 | index expression | main.go:40:2:40:12 | implicit dereference [postupdate] [Category] | provenance | | +| main.go:40:25:40:51 | index expression | main.go:40:2:40:12 | implicit-deref RequestData [postupdate] [Category] | provenance | | | main.go:42:7:43:23 | []type{args} [array] | main.go:42:7:43:23 | call to Sprintf | provenance | MaD:23 | | main.go:42:7:43:23 | call to Sprintf | main.go:44:11:44:11 | q | provenance | Sink:MaD:1 | -| main.go:43:3:43:13 | RequestData [pointer, Category] | main.go:43:3:43:13 | implicit dereference [Category] | provenance | | -| main.go:43:3:43:13 | implicit dereference [Category] | main.go:43:3:43:22 | selection of Category | provenance | | +| main.go:43:3:43:13 | RequestData [pointer, Category] | main.go:43:3:43:13 | implicit-deref RequestData [Category] | provenance | | +| main.go:43:3:43:13 | implicit-deref RequestData [Category] | main.go:43:3:43:22 | selection of Category | provenance | | | main.go:43:3:43:22 | selection of Category | main.go:42:7:43:23 | []type{args} [array] | provenance | | | main.go:43:3:43:22 | selection of Category | main.go:42:7:43:23 | call to Sprintf | provenance | FunctionModel | | main.go:49:3:49:14 | star expression [postupdate] [Category] | main.go:49:4:49:14 | RequestData [postupdate] [pointer, Category] | provenance | | @@ -94,8 +94,8 @@ edges | main.go:49:28:49:54 | index expression | main.go:49:3:49:14 | star expression [postupdate] [Category] | provenance | | | main.go:51:7:52:23 | []type{args} [array] | main.go:51:7:52:23 | call to Sprintf | provenance | MaD:23 | | main.go:51:7:52:23 | call to Sprintf | main.go:53:11:53:11 | q | provenance | Sink:MaD:1 | -| main.go:52:3:52:13 | RequestData [pointer, Category] | main.go:52:3:52:13 | implicit dereference [Category] | provenance | | -| main.go:52:3:52:13 | implicit dereference [Category] | main.go:52:3:52:22 | selection of Category | provenance | | +| main.go:52:3:52:13 | RequestData [pointer, Category] | main.go:52:3:52:13 | implicit-deref RequestData [Category] | provenance | | +| main.go:52:3:52:13 | implicit-deref RequestData [Category] | main.go:52:3:52:22 | selection of Category | provenance | | | main.go:52:3:52:22 | selection of Category | main.go:51:7:52:23 | []type{args} [array] | provenance | | | main.go:52:3:52:22 | selection of Category | main.go:51:7:52:23 | call to Sprintf | provenance | FunctionModel | | main.go:58:3:58:14 | star expression [postupdate] [Category] | main.go:58:4:58:14 | RequestData [postupdate] [pointer, Category] | provenance | | @@ -161,7 +161,7 @@ nodes | SqlInjection.go:11:3:11:17 | call to Query | semmle.label | call to Query | | SqlInjection.go:11:3:11:29 | index expression | semmle.label | index expression | | SqlInjection.go:12:11:12:11 | q | semmle.label | q | -| issue48.go:17:2:17:33 | ... := ...[0] | semmle.label | ... := ...[0] | +| issue48.go:17:2:17:33 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | issue48.go:17:25:17:32 | selection of Body | semmle.label | selection of Body | | issue48.go:18:17:18:17 | b | semmle.label | b | | issue48.go:18:20:18:39 | &... [postupdate] | semmle.label | &... [postupdate] | @@ -169,7 +169,7 @@ nodes | issue48.go:20:8:21:34 | call to Sprintf | semmle.label | call to Sprintf | | issue48.go:21:3:21:33 | index expression | semmle.label | index expression | | issue48.go:22:11:22:12 | q3 | semmle.label | q3 | -| issue48.go:27:2:27:34 | ... := ...[0] | semmle.label | ... := ...[0] | +| issue48.go:27:2:27:34 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | issue48.go:27:26:27:33 | selection of Body | semmle.label | selection of Body | | issue48.go:28:17:28:18 | b2 | semmle.label | b2 | | issue48.go:28:21:28:41 | &... [postupdate] | semmle.label | &... [postupdate] | @@ -204,18 +204,18 @@ nodes | main.go:33:7:34:23 | []type{args} [array] | semmle.label | []type{args} [array] | | main.go:33:7:34:23 | call to Sprintf | semmle.label | call to Sprintf | | main.go:34:3:34:13 | RequestData [pointer, Category] | semmle.label | RequestData [pointer, Category] | -| main.go:34:3:34:13 | implicit dereference [Category] | semmle.label | implicit dereference [Category] | +| main.go:34:3:34:13 | implicit-deref RequestData [Category] | semmle.label | implicit-deref RequestData [Category] | | main.go:34:3:34:22 | selection of Category | semmle.label | selection of Category | | main.go:35:11:35:11 | q | semmle.label | q | | main.go:40:2:40:12 | RequestData [postupdate] [pointer, Category] | semmle.label | RequestData [postupdate] [pointer, Category] | -| main.go:40:2:40:12 | implicit dereference [postupdate] [Category] | semmle.label | implicit dereference [postupdate] [Category] | +| main.go:40:2:40:12 | implicit-deref RequestData [postupdate] [Category] | semmle.label | implicit-deref RequestData [postupdate] [Category] | | main.go:40:25:40:31 | selection of URL | semmle.label | selection of URL | | main.go:40:25:40:39 | call to Query | semmle.label | call to Query | | main.go:40:25:40:51 | index expression | semmle.label | index expression | | main.go:42:7:43:23 | []type{args} [array] | semmle.label | []type{args} [array] | | main.go:42:7:43:23 | call to Sprintf | semmle.label | call to Sprintf | | main.go:43:3:43:13 | RequestData [pointer, Category] | semmle.label | RequestData [pointer, Category] | -| main.go:43:3:43:13 | implicit dereference [Category] | semmle.label | implicit dereference [Category] | +| main.go:43:3:43:13 | implicit-deref RequestData [Category] | semmle.label | implicit-deref RequestData [Category] | | main.go:43:3:43:22 | selection of Category | semmle.label | selection of Category | | main.go:44:11:44:11 | q | semmle.label | q | | main.go:49:3:49:14 | star expression [postupdate] [Category] | semmle.label | star expression [postupdate] [Category] | @@ -226,7 +226,7 @@ nodes | main.go:51:7:52:23 | []type{args} [array] | semmle.label | []type{args} [array] | | main.go:51:7:52:23 | call to Sprintf | semmle.label | call to Sprintf | | main.go:52:3:52:13 | RequestData [pointer, Category] | semmle.label | RequestData [pointer, Category] | -| main.go:52:3:52:13 | implicit dereference [Category] | semmle.label | implicit dereference [Category] | +| main.go:52:3:52:13 | implicit-deref RequestData [Category] | semmle.label | implicit-deref RequestData [Category] | | main.go:52:3:52:22 | selection of Category | semmle.label | selection of Category | | main.go:53:11:53:11 | q | semmle.label | q | | main.go:58:3:58:14 | star expression [postupdate] [Category] | semmle.label | star expression [postupdate] [Category] | diff --git a/go/ql/test/query-tests/Security/CWE-089/StringBreak.expected b/go/ql/test/query-tests/Security/CWE-089/StringBreak.expected index 63caa73d596d..31d7ff8622c8 100644 --- a/go/ql/test/query-tests/Security/CWE-089/StringBreak.expected +++ b/go/ql/test/query-tests/Security/CWE-089/StringBreak.expected @@ -1,25 +1,25 @@ #select -| StringBreak.go:15:47:15:57 | versionJSON | StringBreak.go:11:2:11:40 | ... := ...[0] | StringBreak.go:15:47:15:57 | versionJSON | If this $@ contains a single quote, it could break out of the enclosing quotes. | StringBreak.go:11:2:11:40 | ... := ...[0] | JSON value | -| StringBreakMismatched.go:18:26:18:32 | escaped | StringBreakMismatched.go:13:2:13:40 | ... := ...[0] | StringBreakMismatched.go:18:26:18:32 | escaped | If this $@ contains a single quote, it could break out of the enclosing quotes. | StringBreakMismatched.go:13:2:13:40 | ... := ...[0] | JSON value | -| StringBreakMismatched.go:30:27:30:33 | escaped | StringBreakMismatched.go:25:2:25:40 | ... := ...[0] | StringBreakMismatched.go:30:27:30:33 | escaped | If this $@ contains a double quote, it could break out of the enclosing quotes. | StringBreakMismatched.go:25:2:25:40 | ... := ...[0] | JSON value | +| StringBreak.go:15:47:15:57 | versionJSON | StringBreak.go:11:2:11:40 | extract:0 ... := ... | StringBreak.go:15:47:15:57 | versionJSON | If this $@ contains a single quote, it could break out of the enclosing quotes. | StringBreak.go:11:2:11:40 | extract:0 ... := ... | JSON value | +| StringBreakMismatched.go:18:26:18:32 | escaped | StringBreakMismatched.go:13:2:13:40 | extract:0 ... := ... | StringBreakMismatched.go:18:26:18:32 | escaped | If this $@ contains a single quote, it could break out of the enclosing quotes. | StringBreakMismatched.go:13:2:13:40 | extract:0 ... := ... | JSON value | +| StringBreakMismatched.go:30:27:30:33 | escaped | StringBreakMismatched.go:25:2:25:40 | extract:0 ... := ... | StringBreakMismatched.go:30:27:30:33 | escaped | If this $@ contains a double quote, it could break out of the enclosing quotes. | StringBreakMismatched.go:25:2:25:40 | extract:0 ... := ... | JSON value | edges -| StringBreak.go:11:2:11:40 | ... := ...[0] | StringBreak.go:15:47:15:57 | versionJSON | provenance | | -| StringBreakMismatched.go:13:2:13:40 | ... := ...[0] | StringBreakMismatched.go:14:29:14:47 | type conversion | provenance | | +| StringBreak.go:11:2:11:40 | extract:0 ... := ... | StringBreak.go:15:47:15:57 | versionJSON | provenance | | +| StringBreakMismatched.go:13:2:13:40 | extract:0 ... := ... | StringBreakMismatched.go:14:29:14:47 | type conversion | provenance | | | StringBreakMismatched.go:14:13:14:62 | call to Replace | StringBreakMismatched.go:18:26:18:32 | escaped | provenance | | | StringBreakMismatched.go:14:29:14:47 | type conversion | StringBreakMismatched.go:14:13:14:62 | call to Replace | provenance | MaD:1 | -| StringBreakMismatched.go:25:2:25:40 | ... := ...[0] | StringBreakMismatched.go:26:29:26:47 | type conversion | provenance | | +| StringBreakMismatched.go:25:2:25:40 | extract:0 ... := ... | StringBreakMismatched.go:26:29:26:47 | type conversion | provenance | | | StringBreakMismatched.go:26:13:26:61 | call to Replace | StringBreakMismatched.go:30:27:30:33 | escaped | provenance | | | StringBreakMismatched.go:26:29:26:47 | type conversion | StringBreakMismatched.go:26:13:26:61 | call to Replace | provenance | MaD:1 | models | 1 | Summary: strings; ; false; Replace; ; ; Argument[0]; ReturnValue; taint; manual | nodes -| StringBreak.go:11:2:11:40 | ... := ...[0] | semmle.label | ... := ...[0] | +| StringBreak.go:11:2:11:40 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | StringBreak.go:15:47:15:57 | versionJSON | semmle.label | versionJSON | -| StringBreakMismatched.go:13:2:13:40 | ... := ...[0] | semmle.label | ... := ...[0] | +| StringBreakMismatched.go:13:2:13:40 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | StringBreakMismatched.go:14:13:14:62 | call to Replace | semmle.label | call to Replace | | StringBreakMismatched.go:14:29:14:47 | type conversion | semmle.label | type conversion | | StringBreakMismatched.go:18:26:18:32 | escaped | semmle.label | escaped | -| StringBreakMismatched.go:25:2:25:40 | ... := ...[0] | semmle.label | ... := ...[0] | +| StringBreakMismatched.go:25:2:25:40 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | StringBreakMismatched.go:26:13:26:61 | call to Replace | semmle.label | call to Replace | | StringBreakMismatched.go:26:29:26:47 | type conversion | semmle.label | type conversion | | StringBreakMismatched.go:30:27:30:33 | escaped | semmle.label | escaped | diff --git a/go/ql/test/query-tests/Security/CWE-117/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-117/CONSISTENCY/DataFlowConsistency.expected index a683e9691675..f519d603e82e 100644 --- a/go/ql/test/query-tests/Security/CWE-117/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-117/CONSISTENCY/DataFlowConsistency.expected @@ -1,11 +1,11 @@ reverseRead -| LogInjection.go:32:14:32:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| LogInjection.go:33:14:33:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| LogInjection.go:34:18:34:20 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| LogInjection.go:35:14:35:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| LogInjection.go:551:14:551:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| LogInjection.go:559:14:559:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| LogInjection.go:567:14:567:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| LogInjection.go:602:14:602:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| LogInjection.go:603:14:603:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| LogInjection.go:828:12:828:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:32:14:32:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:33:14:33:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:34:18:34:20 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:35:14:35:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:551:14:551:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:559:14:559:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:567:14:567:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:602:14:602:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:603:14:603:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| LogInjection.go:828:12:828:14 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected b/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected index ec1835a6f8ac..f21d5dd184b8 100644 --- a/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected +++ b/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected @@ -1,22 +1,22 @@ #select -| AllocationSizeOverflow.go:10:10:10:22 | call to len | AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | AllocationSizeOverflow.go:10:10:10:22 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | AllocationSizeOverflow.go:11:25:11:28 | size | allocation | AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | potentially large value | -| tst2.go:10:22:10:30 | call to len | tst2.go:9:2:9:37 | ... := ...[0] | tst2.go:10:22:10:30 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst2.go:10:22:10:32 | ...+... | allocation | tst2.go:9:2:9:37 | ... := ...[0] | potentially large value | -| tst2.go:15:22:15:30 | call to len | tst2.go:14:2:14:29 | ... := ...[0] | tst2.go:15:22:15:30 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst2.go:15:22:15:32 | ...+... | allocation | tst2.go:14:2:14:29 | ... := ...[0] | potentially large value | -| tst3.go:7:22:7:34 | call to len | tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:7:22:7:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:7:22:7:36 | ...+... | allocation | tst3.go:6:2:6:31 | ... := ...[0] | potentially large value | -| tst3.go:24:16:24:28 | call to len | tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:24:16:24:28 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:27:24:27:32 | newlength | allocation | tst3.go:6:2:6:31 | ... := ...[0] | potentially large value | -| tst3.go:32:16:32:28 | call to len | tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:32:16:32:28 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:36:23:36:31 | newlength | allocation | tst3.go:6:2:6:31 | ... := ...[0] | potentially large value | -| tst.go:15:22:15:34 | call to len | tst.go:14:2:14:30 | ... = ...[0] | tst.go:15:22:15:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:15:22:15:36 | ...+... | allocation | tst.go:14:2:14:30 | ... = ...[0] | potentially large value | -| tst.go:21:22:21:34 | call to len | tst.go:20:2:20:31 | ... = ...[0] | tst.go:21:22:21:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:21:22:21:36 | ...+... | allocation | tst.go:20:2:20:31 | ... = ...[0] | potentially large value | -| tst.go:27:26:27:38 | call to len | tst.go:26:2:26:31 | ... = ...[0] | tst.go:27:26:27:38 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:27:26:27:40 | ...+... | allocation | tst.go:26:2:26:31 | ... = ...[0] | potentially large value | -| tst.go:35:22:35:34 | call to len | tst.go:34:2:34:30 | ... = ...[0] | tst.go:35:22:35:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:35:22:35:36 | ...+... | allocation | tst.go:34:2:34:30 | ... = ...[0] | potentially large value | +| AllocationSizeOverflow.go:10:10:10:22 | call to len | AllocationSizeOverflow.go:6:2:6:33 | extract:0 ... := ... | AllocationSizeOverflow.go:10:10:10:22 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | AllocationSizeOverflow.go:11:25:11:28 | size | allocation | AllocationSizeOverflow.go:6:2:6:33 | extract:0 ... := ... | potentially large value | +| tst2.go:10:22:10:30 | call to len | tst2.go:9:2:9:37 | extract:0 ... := ... | tst2.go:10:22:10:30 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst2.go:10:22:10:32 | ...+... | allocation | tst2.go:9:2:9:37 | extract:0 ... := ... | potentially large value | +| tst2.go:15:22:15:30 | call to len | tst2.go:14:2:14:29 | extract:0 ... := ... | tst2.go:15:22:15:30 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst2.go:15:22:15:32 | ...+... | allocation | tst2.go:14:2:14:29 | extract:0 ... := ... | potentially large value | +| tst3.go:7:22:7:34 | call to len | tst3.go:6:2:6:31 | extract:0 ... := ... | tst3.go:7:22:7:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:7:22:7:36 | ...+... | allocation | tst3.go:6:2:6:31 | extract:0 ... := ... | potentially large value | +| tst3.go:24:16:24:28 | call to len | tst3.go:6:2:6:31 | extract:0 ... := ... | tst3.go:24:16:24:28 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:27:24:27:32 | newlength | allocation | tst3.go:6:2:6:31 | extract:0 ... := ... | potentially large value | +| tst3.go:32:16:32:28 | call to len | tst3.go:6:2:6:31 | extract:0 ... := ... | tst3.go:32:16:32:28 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:36:23:36:31 | newlength | allocation | tst3.go:6:2:6:31 | extract:0 ... := ... | potentially large value | +| tst.go:15:22:15:34 | call to len | tst.go:14:2:14:30 | extract:0 ... = ... | tst.go:15:22:15:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:15:22:15:36 | ...+... | allocation | tst.go:14:2:14:30 | extract:0 ... = ... | potentially large value | +| tst.go:21:22:21:34 | call to len | tst.go:20:2:20:31 | extract:0 ... = ... | tst.go:21:22:21:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:21:22:21:36 | ...+... | allocation | tst.go:20:2:20:31 | extract:0 ... = ... | potentially large value | +| tst.go:27:26:27:38 | call to len | tst.go:26:2:26:31 | extract:0 ... = ... | tst.go:27:26:27:38 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:27:26:27:40 | ...+... | allocation | tst.go:26:2:26:31 | extract:0 ... = ... | potentially large value | +| tst.go:35:22:35:34 | call to len | tst.go:34:2:34:30 | extract:0 ... = ... | tst.go:35:22:35:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:35:22:35:36 | ...+... | allocation | tst.go:34:2:34:30 | extract:0 ... = ... | potentially large value | edges -| AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | AllocationSizeOverflow.go:10:14:10:21 | jsonData | provenance | | +| AllocationSizeOverflow.go:6:2:6:33 | extract:0 ... := ... | AllocationSizeOverflow.go:10:14:10:21 | jsonData | provenance | | | AllocationSizeOverflow.go:10:14:10:21 | jsonData | AllocationSizeOverflow.go:10:10:10:22 | call to len | provenance | Config | -| tst2.go:9:2:9:37 | ... := ...[0] | tst2.go:10:26:10:29 | data | provenance | Src:MaD:1 | +| tst2.go:9:2:9:37 | extract:0 ... := ... | tst2.go:10:26:10:29 | data | provenance | Src:MaD:1 | | tst2.go:10:26:10:29 | data | tst2.go:10:22:10:30 | call to len | provenance | Config | -| tst2.go:14:2:14:29 | ... := ...[0] | tst2.go:15:26:15:29 | data | provenance | | +| tst2.go:14:2:14:29 | extract:0 ... := ... | tst2.go:15:26:15:29 | data | provenance | | | tst2.go:15:26:15:29 | data | tst2.go:15:22:15:30 | call to len | provenance | Config | -| tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:7:26:7:33 | jsonData | provenance | | +| tst3.go:6:2:6:31 | extract:0 ... := ... | tst3.go:7:26:7:33 | jsonData | provenance | | | tst3.go:7:26:7:33 | jsonData | tst3.go:7:22:7:34 | call to len | provenance | Config | | tst3.go:7:26:7:33 | jsonData | tst3.go:9:32:9:39 | jsonData | provenance | | | tst3.go:9:32:9:39 | jsonData | tst3.go:11:9:11:16 | jsonData | provenance | | @@ -25,27 +25,27 @@ edges | tst3.go:24:20:24:27 | jsonData | tst3.go:24:16:24:28 | call to len | provenance | Config | | tst3.go:24:20:24:27 | jsonData | tst3.go:32:20:32:27 | jsonData | provenance | | | tst3.go:32:20:32:27 | jsonData | tst3.go:32:16:32:28 | call to len | provenance | Config | -| tst.go:14:2:14:30 | ... = ...[0] | tst.go:15:26:15:33 | jsonData | provenance | | +| tst.go:14:2:14:30 | extract:0 ... = ... | tst.go:15:26:15:33 | jsonData | provenance | | | tst.go:15:26:15:33 | jsonData | tst.go:15:22:15:34 | call to len | provenance | Config | -| tst.go:20:2:20:31 | ... = ...[0] | tst.go:21:26:21:33 | jsonData | provenance | | +| tst.go:20:2:20:31 | extract:0 ... = ... | tst.go:21:26:21:33 | jsonData | provenance | | | tst.go:21:26:21:33 | jsonData | tst.go:21:22:21:34 | call to len | provenance | Config | -| tst.go:26:2:26:31 | ... = ...[0] | tst.go:27:30:27:37 | jsonData | provenance | | +| tst.go:26:2:26:31 | extract:0 ... = ... | tst.go:27:30:27:37 | jsonData | provenance | | | tst.go:27:30:27:37 | jsonData | tst.go:27:26:27:38 | call to len | provenance | Config | -| tst.go:34:2:34:30 | ... = ...[0] | tst.go:35:26:35:33 | jsonData | provenance | | +| tst.go:34:2:34:30 | extract:0 ... = ... | tst.go:35:26:35:33 | jsonData | provenance | | | tst.go:35:26:35:33 | jsonData | tst.go:35:22:35:34 | call to len | provenance | Config | models | 1 | Source: io/ioutil; ; false; ReadFile; ; ; ReturnValue[0]; file; manual | nodes -| AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | semmle.label | ... := ...[0] | +| AllocationSizeOverflow.go:6:2:6:33 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | AllocationSizeOverflow.go:10:10:10:22 | call to len | semmle.label | call to len | | AllocationSizeOverflow.go:10:14:10:21 | jsonData | semmle.label | jsonData | -| tst2.go:9:2:9:37 | ... := ...[0] | semmle.label | ... := ...[0] | +| tst2.go:9:2:9:37 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tst2.go:10:22:10:30 | call to len | semmle.label | call to len | | tst2.go:10:26:10:29 | data | semmle.label | data | -| tst2.go:14:2:14:29 | ... := ...[0] | semmle.label | ... := ...[0] | +| tst2.go:14:2:14:29 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tst2.go:15:22:15:30 | call to len | semmle.label | call to len | | tst2.go:15:26:15:29 | data | semmle.label | data | -| tst3.go:6:2:6:31 | ... := ...[0] | semmle.label | ... := ...[0] | +| tst3.go:6:2:6:31 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | tst3.go:7:22:7:34 | call to len | semmle.label | call to len | | tst3.go:7:26:7:33 | jsonData | semmle.label | jsonData | | tst3.go:9:32:9:39 | jsonData | semmle.label | jsonData | @@ -55,16 +55,16 @@ nodes | tst3.go:24:20:24:27 | jsonData | semmle.label | jsonData | | tst3.go:32:16:32:28 | call to len | semmle.label | call to len | | tst3.go:32:20:32:27 | jsonData | semmle.label | jsonData | -| tst.go:14:2:14:30 | ... = ...[0] | semmle.label | ... = ...[0] | +| tst.go:14:2:14:30 | extract:0 ... = ... | semmle.label | extract:0 ... = ... | | tst.go:15:22:15:34 | call to len | semmle.label | call to len | | tst.go:15:26:15:33 | jsonData | semmle.label | jsonData | -| tst.go:20:2:20:31 | ... = ...[0] | semmle.label | ... = ...[0] | +| tst.go:20:2:20:31 | extract:0 ... = ... | semmle.label | extract:0 ... = ... | | tst.go:21:22:21:34 | call to len | semmle.label | call to len | | tst.go:21:26:21:33 | jsonData | semmle.label | jsonData | -| tst.go:26:2:26:31 | ... = ...[0] | semmle.label | ... = ...[0] | +| tst.go:26:2:26:31 | extract:0 ... = ... | semmle.label | extract:0 ... = ... | | tst.go:27:26:27:38 | call to len | semmle.label | call to len | | tst.go:27:30:27:37 | jsonData | semmle.label | jsonData | -| tst.go:34:2:34:30 | ... = ...[0] | semmle.label | ... = ...[0] | +| tst.go:34:2:34:30 | extract:0 ... = ... | semmle.label | extract:0 ... = ... | | tst.go:35:22:35:34 | call to len | semmle.label | call to len | | tst.go:35:26:35:33 | jsonData | semmle.label | jsonData | subpaths diff --git a/go/ql/test/query-tests/Security/CWE-190/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-190/CONSISTENCY/DataFlowConsistency.expected index 26d6a7eec8e5..5d9da2284549 100644 --- a/go/ql/test/query-tests/Security/CWE-190/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-190/CONSISTENCY/DataFlowConsistency.expected @@ -1,3 +1,3 @@ reverseRead -| array_vs_contents.go:16:25:16:31 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| array_vs_contents.go:33:25:33:31 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| array_vs_contents.go:16:25:16:31 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | +| array_vs_contents.go:33:25:33:31 | implicit-deref request | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-295/DisabledCertificateCheck/DisabledCertificateCheck.expected b/go/ql/test/query-tests/Security/CWE-295/DisabledCertificateCheck/DisabledCertificateCheck.expected index 6e7de24be8e5..fc99e821181f 100644 --- a/go/ql/test/query-tests/Security/CWE-295/DisabledCertificateCheck/DisabledCertificateCheck.expected +++ b/go/ql/test/query-tests/Security/CWE-295/DisabledCertificateCheck/DisabledCertificateCheck.expected @@ -1,4 +1,4 @@ -| DisabledCertificateCheck.go:10:32:10:55 | init of key-value pair | InsecureSkipVerify should not be used in production code. | -| main.go:9:2:9:23 | assignment to field InsecureSkipVerify | InsecureSkipVerify should not be used in production code. | -| main.go:57:21:57:44 | init of key-value pair | InsecureSkipVerify should not be used in production code. | -| main.go:62:32:62:55 | init of key-value pair | InsecureSkipVerify should not be used in production code. | +| DisabledCertificateCheck.go:10:32:10:55 | lit-init key-value pair | InsecureSkipVerify should not be used in production code. | +| main.go:9:2:9:30 | assign:0 ... = ... | InsecureSkipVerify should not be used in production code. | +| main.go:57:21:57:44 | lit-init key-value pair | InsecureSkipVerify should not be used in production code. | +| main.go:62:32:62:55 | lit-init key-value pair | InsecureSkipVerify should not be used in production code. | diff --git a/go/ql/test/query-tests/Security/CWE-312/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-312/CONSISTENCY/DataFlowConsistency.expected index 9161b6f3eb9c..12cd207a4e09 100644 --- a/go/ql/test/query-tests/Security/CWE-312/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-312/CONSISTENCY/DataFlowConsistency.expected @@ -1,12 +1,12 @@ reverseRead -| CleartextLogging.go:11:11:11:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CleartextLogging.go:12:9:12:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CleartextLoggingGood.go:12:11:12:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CleartextLoggingGood.go:13:9:13:9 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| CleartextLoggingGood.go:25:14:25:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| klog.go:27:13:27:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| CleartextLogging.go:11:11:11:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| CleartextLogging.go:12:9:12:9 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| CleartextLoggingGood.go:12:11:12:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| CleartextLoggingGood.go:13:9:13:9 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| CleartextLoggingGood.go:25:14:25:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| klog.go:27:13:27:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | | klog.go:28:13:28:20 | selection of Header | Origin of readStep is missing a PostUpdateNode. | -| klog.go:29:13:29:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| klog.go:29:13:29:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | | protos/query/query.pb.go:58:9:58:34 | file_query_proto_enumTypes | Origin of readStep is missing a PostUpdateNode. | | protos/query/query.pb.go:62:10:62:35 | file_query_proto_enumTypes | Origin of readStep is missing a PostUpdateNode. | | protos/query/query.pb.go:88:10:88:34 | file_query_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | @@ -15,17 +15,17 @@ reverseRead | protos/query/query.pb.go:169:9:169:33 | file_query_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | | protos/query/query.pb.go:204:10:204:34 | file_query_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | | protos/query/query.pb.go:217:9:217:33 | file_query_proto_msgTypes | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:318:13:318:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:320:13:320:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:322:13:322:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:330:13:330:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:332:13:332:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:334:13:334:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:342:13:342:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:344:13:344:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| protos/query/query.pb.go:346:13:346:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| server1.go:11:11:11:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| server1.go:13:11:13:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:318:13:318:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:320:13:320:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:322:13:322:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:330:13:330:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:332:13:332:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:334:13:334:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:342:13:342:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:344:13:344:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| protos/query/query.pb.go:346:13:346:13 | implicit-deref v | Origin of readStep is missing a PostUpdateNode. | +| server1.go:11:11:11:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| server1.go:13:11:13:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | | server1.go:14:11:14:14 | vals | Origin of readStep is missing a PostUpdateNode. | -| server1.go:17:41:17:41 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| server1.go:21:46:21:46 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| server1.go:17:41:17:41 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| server1.go:21:46:21:46 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected b/go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected index 7a195352f395..c81e0ed61412 100644 --- a/go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected +++ b/go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected @@ -1,80 +1,80 @@ #select | klog.go:23:15:23:20 | header | klog.go:21:30:21:37 | selection of Header | klog.go:23:15:23:20 | header | $@ flows to a logging call. | klog.go:21:30:21:37 | selection of Header | Sensitive data returned by HTTP request headers | | klog.go:29:13:29:41 | call to Get | klog.go:29:13:29:20 | selection of Header | klog.go:29:13:29:41 | call to Get | $@ flows to a logging call. | klog.go:29:13:29:20 | selection of Header | Sensitive data returned by HTTP request headers | -| main.go:19:12:19:19 | password | main.go:17:2:17:9 | SSA def(password) | main.go:19:12:19:19 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:20:19:20:26 | password | main.go:17:2:17:9 | SSA def(password) | main.go:20:19:20:26 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:21:13:21:20 | password | main.go:17:2:17:9 | SSA def(password) | main.go:21:13:21:20 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:22:14:22:21 | password | main.go:17:2:17:9 | SSA def(password) | main.go:22:14:22:21 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:24:13:24:20 | password | main.go:17:2:17:9 | SSA def(password) | main.go:24:13:24:20 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:27:20:27:27 | password | main.go:17:2:17:9 | SSA def(password) | main.go:27:20:27:27 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:30:14:30:21 | password | main.go:17:2:17:9 | SSA def(password) | main.go:30:14:30:21 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:33:15:33:22 | password | main.go:17:2:17:9 | SSA def(password) | main.go:33:15:33:22 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:36:13:36:20 | password | main.go:17:2:17:9 | SSA def(password) | main.go:36:13:36:20 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:39:20:39:27 | password | main.go:17:2:17:9 | SSA def(password) | main.go:39:20:39:27 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:42:14:42:21 | password | main.go:17:2:17:9 | SSA def(password) | main.go:42:14:42:21 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:45:15:45:22 | password | main.go:17:2:17:9 | SSA def(password) | main.go:45:15:45:22 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:47:16:47:23 | password | main.go:17:2:17:9 | SSA def(password) | main.go:47:16:47:23 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:51:10:51:17 | password | main.go:17:2:17:9 | SSA def(password) | main.go:51:10:51:17 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:52:17:52:24 | password | main.go:17:2:17:9 | SSA def(password) | main.go:52:17:52:24 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:53:11:53:18 | password | main.go:17:2:17:9 | SSA def(password) | main.go:53:11:53:18 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:54:12:54:19 | password | main.go:17:2:17:9 | SSA def(password) | main.go:54:12:54:19 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:56:11:56:18 | password | main.go:17:2:17:9 | SSA def(password) | main.go:56:11:56:18 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:59:18:59:25 | password | main.go:17:2:17:9 | SSA def(password) | main.go:59:18:59:25 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:62:12:62:19 | password | main.go:17:2:17:9 | SSA def(password) | main.go:62:12:62:19 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:65:13:65:20 | password | main.go:17:2:17:9 | SSA def(password) | main.go:65:13:65:20 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:68:11:68:18 | password | main.go:17:2:17:9 | SSA def(password) | main.go:68:11:68:18 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:71:18:71:25 | password | main.go:17:2:17:9 | SSA def(password) | main.go:71:18:71:25 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:74:12:74:19 | password | main.go:17:2:17:9 | SSA def(password) | main.go:74:12:74:19 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:77:13:77:20 | password | main.go:17:2:17:9 | SSA def(password) | main.go:77:13:77:20 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:79:14:79:21 | password | main.go:17:2:17:9 | SSA def(password) | main.go:79:14:79:21 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:82:12:82:19 | password | main.go:17:2:17:9 | SSA def(password) | main.go:82:12:82:19 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:83:17:83:24 | password | main.go:17:2:17:9 | SSA def(password) | main.go:83:17:83:24 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:87:29:87:34 | fields | main.go:17:2:17:9 | SSA def(password) | main.go:87:29:87:34 | fields | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| main.go:90:35:90:42 | password | main.go:17:2:17:9 | SSA def(password) | main.go:90:35:90:42 | password | $@ flows to a logging call. | main.go:17:2:17:9 | SSA def(password) | Sensitive data returned by an access to password | -| overrides.go:13:14:13:23 | call to String | overrides.go:8:2:8:9 | SSA def(password) | overrides.go:13:14:13:23 | call to String | $@ flows to a logging call. | overrides.go:8:2:8:9 | SSA def(password) | Sensitive data returned by an access to password | -| passwords.go:9:14:9:14 | x | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:9:14:9:14 | x | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | -| passwords.go:25:14:25:21 | password | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:25:14:25:21 | password | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:19:12:19:19 | password | main.go:17:2:17:23 | SSA def(password) | main.go:19:12:19:19 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:20:19:20:26 | password | main.go:17:2:17:23 | SSA def(password) | main.go:20:19:20:26 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:21:13:21:20 | password | main.go:17:2:17:23 | SSA def(password) | main.go:21:13:21:20 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:22:14:22:21 | password | main.go:17:2:17:23 | SSA def(password) | main.go:22:14:22:21 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:24:13:24:20 | password | main.go:17:2:17:23 | SSA def(password) | main.go:24:13:24:20 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:27:20:27:27 | password | main.go:17:2:17:23 | SSA def(password) | main.go:27:20:27:27 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:30:14:30:21 | password | main.go:17:2:17:23 | SSA def(password) | main.go:30:14:30:21 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:33:15:33:22 | password | main.go:17:2:17:23 | SSA def(password) | main.go:33:15:33:22 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:36:13:36:20 | password | main.go:17:2:17:23 | SSA def(password) | main.go:36:13:36:20 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:39:20:39:27 | password | main.go:17:2:17:23 | SSA def(password) | main.go:39:20:39:27 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:42:14:42:21 | password | main.go:17:2:17:23 | SSA def(password) | main.go:42:14:42:21 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:45:15:45:22 | password | main.go:17:2:17:23 | SSA def(password) | main.go:45:15:45:22 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:47:16:47:23 | password | main.go:17:2:17:23 | SSA def(password) | main.go:47:16:47:23 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:51:10:51:17 | password | main.go:17:2:17:23 | SSA def(password) | main.go:51:10:51:17 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:52:17:52:24 | password | main.go:17:2:17:23 | SSA def(password) | main.go:52:17:52:24 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:53:11:53:18 | password | main.go:17:2:17:23 | SSA def(password) | main.go:53:11:53:18 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:54:12:54:19 | password | main.go:17:2:17:23 | SSA def(password) | main.go:54:12:54:19 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:56:11:56:18 | password | main.go:17:2:17:23 | SSA def(password) | main.go:56:11:56:18 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:59:18:59:25 | password | main.go:17:2:17:23 | SSA def(password) | main.go:59:18:59:25 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:62:12:62:19 | password | main.go:17:2:17:23 | SSA def(password) | main.go:62:12:62:19 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:65:13:65:20 | password | main.go:17:2:17:23 | SSA def(password) | main.go:65:13:65:20 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:68:11:68:18 | password | main.go:17:2:17:23 | SSA def(password) | main.go:68:11:68:18 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:71:18:71:25 | password | main.go:17:2:17:23 | SSA def(password) | main.go:71:18:71:25 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:74:12:74:19 | password | main.go:17:2:17:23 | SSA def(password) | main.go:74:12:74:19 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:77:13:77:20 | password | main.go:17:2:17:23 | SSA def(password) | main.go:77:13:77:20 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:79:14:79:21 | password | main.go:17:2:17:23 | SSA def(password) | main.go:79:14:79:21 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:82:12:82:19 | password | main.go:17:2:17:23 | SSA def(password) | main.go:82:12:82:19 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:83:17:83:24 | password | main.go:17:2:17:23 | SSA def(password) | main.go:83:17:83:24 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:87:29:87:34 | fields | main.go:17:2:17:23 | SSA def(password) | main.go:87:29:87:34 | fields | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| main.go:90:35:90:42 | password | main.go:17:2:17:23 | SSA def(password) | main.go:90:35:90:42 | password | $@ flows to a logging call. | main.go:17:2:17:23 | SSA def(password) | Sensitive data returned by an access to password | +| overrides.go:13:14:13:23 | call to String | overrides.go:8:2:8:40 | SSA def(password) | overrides.go:13:14:13:23 | call to String | $@ flows to a logging call. | overrides.go:8:2:8:40 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:9:14:9:14 | x | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:9:14:9:14 | x | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:25:14:25:21 | password | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:25:14:25:21 | password | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | | passwords.go:26:14:26:23 | selection of password | passwords.go:26:14:26:23 | selection of password | passwords.go:26:14:26:23 | selection of password | $@ flows to a logging call. | passwords.go:26:14:26:23 | selection of password | Sensitive data returned by an access to password | | passwords.go:27:14:27:26 | call to getPassword | passwords.go:27:14:27:26 | call to getPassword | passwords.go:27:14:27:26 | call to getPassword | $@ flows to a logging call. | passwords.go:27:14:27:26 | call to getPassword | Sensitive data returned by a call to getPassword | | passwords.go:28:14:28:28 | call to getPassword | passwords.go:28:14:28:28 | call to getPassword | passwords.go:28:14:28:28 | call to getPassword | $@ flows to a logging call. | passwords.go:28:14:28:28 | call to getPassword | Sensitive data returned by a call to getPassword | -| passwords.go:33:13:33:20 | password | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:33:13:33:20 | password | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | -| passwords.go:36:14:36:35 | ...+... | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:36:14:36:35 | ...+... | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:33:13:33:20 | password | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:33:13:33:20 | password | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:36:14:36:35 | ...+... | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:36:14:36:35 | ...+... | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | | passwords.go:41:14:41:17 | obj1 | passwords.go:39:13:39:13 | x | passwords.go:41:14:41:17 | obj1 | $@ flows to a logging call. | passwords.go:39:13:39:13 | x | Sensitive data returned by an access to password | -| passwords.go:46:14:46:17 | obj2 | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:46:14:46:17 | obj2 | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | -| passwords.go:53:14:53:27 | fixed_password | passwords.go:52:2:52:15 | SSA def(fixed_password) | passwords.go:53:14:53:27 | fixed_password | $@ flows to a logging call. | passwords.go:52:2:52:15 | SSA def(fixed_password) | Sensitive data returned by an access to fixed_password | +| passwords.go:46:14:46:17 | obj2 | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:46:14:46:17 | obj2 | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:53:14:53:27 | fixed_password | passwords.go:52:2:52:44 | SSA def(fixed_password) | passwords.go:53:14:53:27 | fixed_password | $@ flows to a logging call. | passwords.go:52:2:52:44 | SSA def(fixed_password) | Sensitive data returned by an access to fixed_password | | passwords.go:91:14:91:26 | utilityObject | passwords.go:89:16:89:36 | call to make | passwords.go:91:14:91:26 | utilityObject | $@ flows to a logging call. | passwords.go:89:16:89:36 | call to make | Sensitive data returned by an access to passwordSet | -| passwords.go:94:23:94:28 | secret | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:94:23:94:28 | secret | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | -| passwords.go:104:15:104:40 | ...+... | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:104:15:104:40 | ...+... | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | -| passwords.go:110:16:110:41 | ...+... | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:110:16:110:41 | ...+... | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | -| passwords.go:115:15:115:40 | ...+... | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:115:15:115:40 | ...+... | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | -| passwords.go:119:14:119:45 | ...+... | passwords.go:118:6:118:14 | SSA def(password1) | passwords.go:119:14:119:45 | ...+... | $@ flows to a logging call. | passwords.go:118:6:118:14 | SSA def(password1) | Sensitive data returned by an access to password1 | -| passwords.go:129:14:129:19 | config | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:129:14:129:19 | config | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:94:23:94:28 | secret | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:94:23:94:28 | secret | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:104:15:104:40 | ...+... | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:104:15:104:40 | ...+... | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:110:16:110:41 | ...+... | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:110:16:110:41 | ...+... | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:115:15:115:40 | ...+... | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:115:15:115:40 | ...+... | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:119:14:119:45 | ...+... | passwords.go:118:6:118:50 | SSA def(password1) | passwords.go:119:14:119:45 | ...+... | $@ flows to a logging call. | passwords.go:118:6:118:50 | SSA def(password1) | Sensitive data returned by an access to password1 | +| passwords.go:129:14:129:19 | config | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:129:14:129:19 | config | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | | passwords.go:129:14:129:19 | config | passwords.go:123:13:123:14 | x3 | passwords.go:129:14:129:19 | config | $@ flows to a logging call. | passwords.go:123:13:123:14 | x3 | Sensitive data returned by an access to password | | passwords.go:129:14:129:19 | config | passwords.go:126:13:126:25 | call to getPassword | passwords.go:129:14:129:19 | config | $@ flows to a logging call. | passwords.go:126:13:126:25 | call to getPassword | Sensitive data returned by a call to getPassword | -| passwords.go:130:14:130:21 | selection of x | passwords.go:21:2:21:9 | SSA def(password) | passwords.go:130:14:130:21 | selection of x | $@ flows to a logging call. | passwords.go:21:2:21:9 | SSA def(password) | Sensitive data returned by an access to password | +| passwords.go:130:14:130:21 | selection of x | passwords.go:21:2:21:23 | SSA def(password) | passwords.go:130:14:130:21 | selection of x | $@ flows to a logging call. | passwords.go:21:2:21:23 | SSA def(password) | Sensitive data returned by an access to password | | passwords.go:131:14:131:21 | selection of y | passwords.go:126:13:126:25 | call to getPassword | passwords.go:131:14:131:21 | selection of y | $@ flows to a logging call. | passwords.go:126:13:126:25 | call to getPassword | Sensitive data returned by a call to getPassword | -| protobuf.go:14:14:14:35 | call to GetDescription | protobuf.go:9:2:9:9 | SSA def(password) | protobuf.go:14:14:14:35 | call to GetDescription | $@ flows to a logging call. | protobuf.go:9:2:9:9 | SSA def(password) | Sensitive data returned by an access to password | +| protobuf.go:14:14:14:35 | call to GetDescription | protobuf.go:9:2:9:23 | SSA def(password) | protobuf.go:14:14:14:35 | call to GetDescription | $@ flows to a logging call. | protobuf.go:9:2:9:23 | SSA def(password) | Sensitive data returned by an access to password | edges -| klog.go:21:3:26:3 | range statement[1] | klog.go:22:27:22:33 | headers | provenance | | -| klog.go:21:30:21:37 | selection of Header | klog.go:21:3:26:3 | range statement[1] | provenance | Src:MaD:11 Config | -| klog.go:22:4:25:4 | range statement[1] | klog.go:23:15:23:20 | header | provenance | | -| klog.go:22:27:22:33 | headers | klog.go:22:4:25:4 | range statement[1] | provenance | Config | +| klog.go:21:3:26:3 | extract:1 range element | klog.go:22:27:22:33 | headers | provenance | | +| klog.go:21:30:21:37 | selection of Header | klog.go:21:3:26:3 | extract:1 range element | provenance | Src:MaD:11 Config | +| klog.go:22:4:25:4 | extract:1 range element | klog.go:23:15:23:20 | header | provenance | | +| klog.go:22:27:22:33 | headers | klog.go:22:4:25:4 | extract:1 range element | provenance | Config | | klog.go:29:13:29:20 | selection of Header | klog.go:29:13:29:41 | call to Get | provenance | Src:MaD:11 Config | -| main.go:17:2:17:9 | SSA def(password) | main.go:19:12:19:19 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:20:19:20:26 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:21:13:21:20 | password | provenance | Sink:MaD:6 | -| main.go:17:2:17:9 | SSA def(password) | main.go:22:14:22:21 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:24:13:24:20 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:27:20:27:27 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:30:14:30:21 | password | provenance | Sink:MaD:3 | -| main.go:17:2:17:9 | SSA def(password) | main.go:33:15:33:22 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:36:13:36:20 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:39:20:39:27 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:42:14:42:21 | password | provenance | Sink:MaD:5 | -| main.go:17:2:17:9 | SSA def(password) | main.go:45:15:45:22 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:47:16:47:23 | password | provenance | Sink:MaD:4 | -| main.go:17:2:17:9 | SSA def(password) | main.go:51:10:51:17 | password | provenance | | -| main.go:17:2:17:9 | SSA def(password) | main.go:51:10:51:17 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:19:12:19:19 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:20:19:20:26 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:21:13:21:20 | password | provenance | Sink:MaD:6 | +| main.go:17:2:17:23 | SSA def(password) | main.go:22:14:22:21 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:24:13:24:20 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:27:20:27:27 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:30:14:30:21 | password | provenance | Sink:MaD:3 | +| main.go:17:2:17:23 | SSA def(password) | main.go:33:15:33:22 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:36:13:36:20 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:39:20:39:27 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:42:14:42:21 | password | provenance | Sink:MaD:5 | +| main.go:17:2:17:23 | SSA def(password) | main.go:45:15:45:22 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:47:16:47:23 | password | provenance | Sink:MaD:4 | +| main.go:17:2:17:23 | SSA def(password) | main.go:51:10:51:17 | password | provenance | | +| main.go:17:2:17:23 | SSA def(password) | main.go:51:10:51:17 | password | provenance | | | main.go:51:10:51:17 | password | main.go:52:17:52:24 | password | provenance | | | main.go:51:10:51:17 | password | main.go:52:17:52:24 | password | provenance | | | main.go:52:17:52:24 | password | main.go:53:11:53:18 | password | provenance | | @@ -97,13 +97,13 @@ edges | main.go:86:2:86:7 | fields [postupdate] | main.go:87:29:87:34 | fields | provenance | Sink:MaD:2 | | main.go:86:19:86:26 | password | main.go:86:2:86:7 | fields [postupdate] | provenance | Config | | main.go:86:19:86:26 | password | main.go:90:35:90:42 | password | provenance | Sink:MaD:1 | -| overrides.go:8:2:8:9 | SSA def(password) | overrides.go:9:9:9:16 | password | provenance | | +| overrides.go:8:2:8:40 | SSA def(password) | overrides.go:9:9:9:16 | password | provenance | | | overrides.go:9:9:9:16 | password | overrides.go:13:14:13:23 | call to String | provenance | | | passwords.go:8:12:8:12 | SSA def(x) | passwords.go:9:14:9:14 | x | provenance | | -| passwords.go:21:2:21:9 | SSA def(password) | passwords.go:25:14:25:21 | password | provenance | | -| passwords.go:21:2:21:9 | SSA def(password) | passwords.go:30:8:30:15 | password | provenance | | -| passwords.go:21:2:21:9 | SSA def(password) | passwords.go:33:13:33:20 | password | provenance | | -| passwords.go:21:2:21:9 | SSA def(password) | passwords.go:36:28:36:35 | password | provenance | | +| passwords.go:21:2:21:23 | SSA def(password) | passwords.go:25:14:25:21 | password | provenance | | +| passwords.go:21:2:21:23 | SSA def(password) | passwords.go:30:8:30:15 | password | provenance | | +| passwords.go:21:2:21:23 | SSA def(password) | passwords.go:33:13:33:20 | password | provenance | | +| passwords.go:21:2:21:23 | SSA def(password) | passwords.go:36:28:36:35 | password | provenance | | | passwords.go:30:8:30:15 | password | passwords.go:8:12:8:12 | SSA def(x) | provenance | | | passwords.go:36:28:36:35 | password | passwords.go:36:14:36:35 | ...+... | provenance | Config | | passwords.go:36:28:36:35 | password | passwords.go:44:6:44:13 | password | provenance | | @@ -117,7 +117,7 @@ edges | passwords.go:50:11:50:18 | password | passwords.go:110:34:110:41 | password | provenance | | | passwords.go:50:11:50:18 | password | passwords.go:115:33:115:40 | password | provenance | | | passwords.go:50:11:50:18 | password | passwords.go:125:13:125:20 | password | provenance | | -| passwords.go:52:2:52:15 | SSA def(fixed_password) | passwords.go:53:14:53:27 | fixed_password | provenance | | +| passwords.go:52:2:52:44 | SSA def(fixed_password) | passwords.go:53:14:53:27 | fixed_password | provenance | | | passwords.go:88:19:90:2 | struct literal | passwords.go:91:14:91:26 | utilityObject | provenance | | | passwords.go:89:16:89:36 | call to make | passwords.go:88:19:90:2 | struct literal | provenance | Config | | passwords.go:104:33:104:40 | password | passwords.go:104:15:104:40 | ...+... | provenance | Config | @@ -129,7 +129,7 @@ edges | passwords.go:110:34:110:41 | password | passwords.go:125:13:125:20 | password | provenance | | | passwords.go:115:33:115:40 | password | passwords.go:115:15:115:40 | ...+... | provenance | Config | | passwords.go:115:33:115:40 | password | passwords.go:125:13:125:20 | password | provenance | | -| passwords.go:118:6:118:14 | SSA def(password1) | passwords.go:119:28:119:36 | password1 | provenance | | +| passwords.go:118:6:118:50 | SSA def(password1) | passwords.go:119:28:119:36 | password1 | provenance | | | passwords.go:119:28:119:36 | password1 | passwords.go:119:28:119:45 | call to String | provenance | Config | | passwords.go:119:28:119:45 | call to String | passwords.go:119:14:119:45 | ...+... | provenance | Config | | passwords.go:122:12:127:2 | struct literal | passwords.go:129:14:129:19 | config | provenance | | @@ -142,15 +142,15 @@ edges | passwords.go:126:13:126:25 | call to getPassword | passwords.go:122:12:127:2 | struct literal [y] | provenance | | | passwords.go:130:14:130:19 | config [x] | passwords.go:130:14:130:21 | selection of x | provenance | | | passwords.go:131:14:131:19 | config [y] | passwords.go:131:14:131:21 | selection of y | provenance | | -| protobuf.go:9:2:9:9 | SSA def(password) | protobuf.go:12:22:12:29 | password | provenance | | -| protobuf.go:12:2:12:6 | implicit dereference [postupdate] [Description] | protobuf.go:12:2:12:6 | query [postupdate] [pointer, Description] | provenance | | +| protobuf.go:9:2:9:23 | SSA def(password) | protobuf.go:12:22:12:29 | password | provenance | | +| protobuf.go:12:2:12:6 | implicit-deref query [postupdate] [Description] | protobuf.go:12:2:12:6 | query [postupdate] [pointer, Description] | provenance | | | protobuf.go:12:2:12:6 | query [postupdate] [pointer, Description] | protobuf.go:14:14:14:18 | query [pointer, Description] | provenance | | -| protobuf.go:12:22:12:29 | password | protobuf.go:12:2:12:6 | implicit dereference [postupdate] [Description] | provenance | | +| protobuf.go:12:22:12:29 | password | protobuf.go:12:2:12:6 | implicit-deref query [postupdate] [Description] | provenance | | | protobuf.go:14:14:14:18 | query [pointer, Description] | protobuf.go:14:14:14:35 | call to GetDescription | provenance | | | protobuf.go:14:14:14:18 | query [pointer, Description] | protos/query/query.pb.go:117:7:117:7 | SSA def(x) [pointer, Description] | provenance | | | protos/query/query.pb.go:117:7:117:7 | SSA def(x) [pointer, Description] | protos/query/query.pb.go:119:10:119:10 | x [pointer, Description] | provenance | | -| protos/query/query.pb.go:119:10:119:10 | implicit dereference [Description] | protos/query/query.pb.go:119:10:119:22 | selection of Description | provenance | | -| protos/query/query.pb.go:119:10:119:10 | x [pointer, Description] | protos/query/query.pb.go:119:10:119:10 | implicit dereference [Description] | provenance | | +| protos/query/query.pb.go:119:10:119:10 | implicit-deref x [Description] | protos/query/query.pb.go:119:10:119:22 | selection of Description | provenance | | +| protos/query/query.pb.go:119:10:119:10 | x [pointer, Description] | protos/query/query.pb.go:119:10:119:10 | implicit-deref x [Description] | provenance | | models | 1 | Sink: group:logrus; ; false; WithField; ; ; Argument[0..1]; log-injection; manual | | 2 | Sink: group:logrus; ; false; WithFields; ; ; Argument[0]; log-injection; manual | @@ -164,14 +164,14 @@ models | 10 | Sink: log; Logger; true; Printf; ; ; Argument[0..1]; log-injection; manual | | 11 | Source: net/http; Request; true; Header; ; ; ; remote; manual | nodes -| klog.go:21:3:26:3 | range statement[1] | semmle.label | range statement[1] | +| klog.go:21:3:26:3 | extract:1 range element | semmle.label | extract:1 range element | | klog.go:21:30:21:37 | selection of Header | semmle.label | selection of Header | -| klog.go:22:4:25:4 | range statement[1] | semmle.label | range statement[1] | +| klog.go:22:4:25:4 | extract:1 range element | semmle.label | extract:1 range element | | klog.go:22:27:22:33 | headers | semmle.label | headers | | klog.go:23:15:23:20 | header | semmle.label | header | | klog.go:29:13:29:20 | selection of Header | semmle.label | selection of Header | | klog.go:29:13:29:41 | call to Get | semmle.label | call to Get | -| main.go:17:2:17:9 | SSA def(password) | semmle.label | SSA def(password) | +| main.go:17:2:17:23 | SSA def(password) | semmle.label | SSA def(password) | | main.go:19:12:19:19 | password | semmle.label | password | | main.go:20:19:20:26 | password | semmle.label | password | | main.go:21:13:21:20 | password | semmle.label | password | @@ -209,12 +209,12 @@ nodes | main.go:86:19:86:26 | password | semmle.label | password | | main.go:87:29:87:34 | fields | semmle.label | fields | | main.go:90:35:90:42 | password | semmle.label | password | -| overrides.go:8:2:8:9 | SSA def(password) | semmle.label | SSA def(password) | +| overrides.go:8:2:8:40 | SSA def(password) | semmle.label | SSA def(password) | | overrides.go:9:9:9:16 | password | semmle.label | password | | overrides.go:13:14:13:23 | call to String | semmle.label | call to String | | passwords.go:8:12:8:12 | SSA def(x) | semmle.label | SSA def(x) | | passwords.go:9:14:9:14 | x | semmle.label | x | -| passwords.go:21:2:21:9 | SSA def(password) | semmle.label | SSA def(password) | +| passwords.go:21:2:21:23 | SSA def(password) | semmle.label | SSA def(password) | | passwords.go:25:14:25:21 | password | semmle.label | password | | passwords.go:26:14:26:23 | selection of password | semmle.label | selection of password | | passwords.go:27:14:27:26 | call to getPassword | semmle.label | call to getPassword | @@ -230,7 +230,7 @@ nodes | passwords.go:44:6:44:13 | password | semmle.label | password | | passwords.go:46:14:46:17 | obj2 | semmle.label | obj2 | | passwords.go:50:11:50:18 | password | semmle.label | password | -| passwords.go:52:2:52:15 | SSA def(fixed_password) | semmle.label | SSA def(fixed_password) | +| passwords.go:52:2:52:44 | SSA def(fixed_password) | semmle.label | SSA def(fixed_password) | | passwords.go:53:14:53:27 | fixed_password | semmle.label | fixed_password | | passwords.go:88:19:90:2 | struct literal | semmle.label | struct literal | | passwords.go:89:16:89:36 | call to make | semmle.label | call to make | @@ -242,7 +242,7 @@ nodes | passwords.go:110:34:110:41 | password | semmle.label | password | | passwords.go:115:15:115:40 | ...+... | semmle.label | ...+... | | passwords.go:115:33:115:40 | password | semmle.label | password | -| passwords.go:118:6:118:14 | SSA def(password1) | semmle.label | SSA def(password1) | +| passwords.go:118:6:118:50 | SSA def(password1) | semmle.label | SSA def(password1) | | passwords.go:119:14:119:45 | ...+... | semmle.label | ...+... | | passwords.go:119:28:119:36 | password1 | semmle.label | password1 | | passwords.go:119:28:119:45 | call to String | semmle.label | call to String | @@ -257,14 +257,14 @@ nodes | passwords.go:130:14:130:21 | selection of x | semmle.label | selection of x | | passwords.go:131:14:131:19 | config [y] | semmle.label | config [y] | | passwords.go:131:14:131:21 | selection of y | semmle.label | selection of y | -| protobuf.go:9:2:9:9 | SSA def(password) | semmle.label | SSA def(password) | -| protobuf.go:12:2:12:6 | implicit dereference [postupdate] [Description] | semmle.label | implicit dereference [postupdate] [Description] | +| protobuf.go:9:2:9:23 | SSA def(password) | semmle.label | SSA def(password) | +| protobuf.go:12:2:12:6 | implicit-deref query [postupdate] [Description] | semmle.label | implicit-deref query [postupdate] [Description] | | protobuf.go:12:2:12:6 | query [postupdate] [pointer, Description] | semmle.label | query [postupdate] [pointer, Description] | | protobuf.go:12:22:12:29 | password | semmle.label | password | | protobuf.go:14:14:14:18 | query [pointer, Description] | semmle.label | query [pointer, Description] | | protobuf.go:14:14:14:35 | call to GetDescription | semmle.label | call to GetDescription | | protos/query/query.pb.go:117:7:117:7 | SSA def(x) [pointer, Description] | semmle.label | SSA def(x) [pointer, Description] | -| protos/query/query.pb.go:119:10:119:10 | implicit dereference [Description] | semmle.label | implicit dereference [Description] | +| protos/query/query.pb.go:119:10:119:10 | implicit-deref x [Description] | semmle.label | implicit-deref x [Description] | | protos/query/query.pb.go:119:10:119:10 | x [pointer, Description] | semmle.label | x [pointer, Description] | | protos/query/query.pb.go:119:10:119:22 | selection of Description | semmle.label | selection of Description | subpaths diff --git a/go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.expected b/go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.expected index 0f0bc8bf2591..130e2a6781f3 100644 --- a/go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.expected +++ b/go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.expected @@ -10,7 +10,7 @@ edges | InsecureHostKeyCallbackExample.go:45:3:47:3 | function literal | InsecureHostKeyCallbackExample.go:52:20:52:48 | type conversion | provenance | | | InsecureHostKeyCallbackExample.go:58:39:58:46 | SSA def(callback) | InsecureHostKeyCallbackExample.go:62:20:62:27 | callback | provenance | | | InsecureHostKeyCallbackExample.go:68:48:68:55 | SSA def(callback) | InsecureHostKeyCallbackExample.go:78:28:78:35 | callback | provenance | | -| InsecureHostKeyCallbackExample.go:94:3:94:43 | ... := ...[0] | InsecureHostKeyCallbackExample.go:95:28:95:35 | callback | provenance | | +| InsecureHostKeyCallbackExample.go:94:3:94:43 | extract:0 ... := ... | InsecureHostKeyCallbackExample.go:95:28:95:35 | callback | provenance | | | InsecureHostKeyCallbackExample.go:102:22:105:4 | type conversion | InsecureHostKeyCallbackExample.go:107:35:107:50 | insecureCallback | provenance | | | InsecureHostKeyCallbackExample.go:103:3:105:3 | function literal | InsecureHostKeyCallbackExample.go:102:22:105:4 | type conversion | provenance | | | InsecureHostKeyCallbackExample.go:107:35:107:50 | insecureCallback | InsecureHostKeyCallbackExample.go:58:39:58:46 | SSA def(callback) | provenance | | @@ -35,7 +35,7 @@ nodes | InsecureHostKeyCallbackExample.go:76:28:76:54 | call to InsecureIgnoreHostKey | semmle.label | call to InsecureIgnoreHostKey | | InsecureHostKeyCallbackExample.go:78:28:78:35 | callback | semmle.label | callback | | InsecureHostKeyCallbackExample.go:92:28:92:54 | call to InsecureIgnoreHostKey | semmle.label | call to InsecureIgnoreHostKey | -| InsecureHostKeyCallbackExample.go:94:3:94:43 | ... := ...[0] | semmle.label | ... := ...[0] | +| InsecureHostKeyCallbackExample.go:94:3:94:43 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | InsecureHostKeyCallbackExample.go:95:28:95:35 | callback | semmle.label | callback | | InsecureHostKeyCallbackExample.go:102:22:105:4 | type conversion | semmle.label | type conversion | | InsecureHostKeyCallbackExample.go:103:3:105:3 | function literal | semmle.label | function literal | diff --git a/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected index 00eb67fea0ba..17c258a601bd 100644 --- a/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected +++ b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected @@ -1,29 +1,29 @@ -| encryption.go:30:2:30:36 | call to Encrypt | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:34:2:34:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:38:2:38:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:42:2:42:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:46:2:46:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:50:2:50:47 | call to CryptBlocks | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:54:2:54:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:56:22:56:91 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:59:21:59:68 | &... [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:59:22:59:68 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:59:22:59:68 | struct literal [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:60:10:60:24 | ctrStreamWriter [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:65:2:65:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:69:2:69:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | -| encryption.go:76:2:76:32 | call to Encrypt | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:80:2:80:38 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:84:2:84:38 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:88:2:88:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:92:2:92:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:96:2:96:43 | call to CryptBlocks | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:100:2:100:41 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:102:22:102:87 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:105:21:105:68 | &... [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:105:22:105:68 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:105:22:105:68 | struct literal [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:106:10:106:24 | ctrStreamWriter [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:111:2:111:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | -| encryption.go:115:2:115:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:30:2:30:36 | call to Encrypt | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:34:2:34:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:38:2:38:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:42:2:42:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:46:2:46:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:50:2:50:47 | call to CryptBlocks | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:54:2:54:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:56:22:56:91 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:59:21:59:68 | &... [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:59:22:59:68 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:59:22:59:68 | struct literal [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:60:10:60:24 | ctrStreamWriter [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:65:2:65:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:69:2:69:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | extract:0 ... := ... | The cryptographic algorithm DES | +| encryption.go:76:2:76:32 | call to Encrypt | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:80:2:80:38 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:84:2:84:38 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:88:2:88:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:92:2:92:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:96:2:96:43 | call to CryptBlocks | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:100:2:100:41 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:102:22:102:87 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:105:21:105:68 | &... [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:105:22:105:68 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:105:22:105:68 | struct literal [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:106:10:106:24 | ctrStreamWriter [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:111:2:111:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | +| encryption.go:115:2:115:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | extract:0 ... := ... | The cryptographic algorithm TRIPLEDES | | encryption.go:166:2:166:33 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:166:2:166:33 | call to XORKeyStream | The cryptographic algorithm RC4 | diff --git a/go/ql/test/query-tests/Security/CWE-327/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-327/CONSISTENCY/DataFlowConsistency.expected index 95bea8fef591..256f53d2e623 100644 --- a/go/ql/test/query-tests/Security/CWE-327/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-327/CONSISTENCY/DataFlowConsistency.expected @@ -1,4 +1,4 @@ reverseRead -| UnsafeTLS.go:329:32:329:37 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| UnsafeTLS.go:336:33:336:38 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| UnsafeTLS.go:329:32:329:37 | implicit-deref config | Origin of readStep is missing a PostUpdateNode. | +| UnsafeTLS.go:336:33:336:38 | implicit-deref config | Origin of readStep is missing a PostUpdateNode. | | UnsafeTLS.go:353:40:353:45 | suites | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-347/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-347/CONSISTENCY/DataFlowConsistency.expected index 922af8fad2eb..d5809621a06e 100644 --- a/go/ql/test/query-tests/Security/CWE-347/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-347/CONSISTENCY/DataFlowConsistency.expected @@ -1,5 +1,5 @@ reverseRead -| go-jose.v3.go:19:17:19:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| go-jose.v3.go:25:16:25:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| golang-jwt-v5.go:22:17:22:17 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| golang-jwt-v5.go:28:16:28:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| go-jose.v3.go:19:17:19:17 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| go-jose.v3.go:25:16:25:16 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| golang-jwt-v5.go:22:17:22:17 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| golang-jwt-v5.go:28:16:28:16 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-347/MissingJwtSignatureCheck.expected b/go/ql/test/query-tests/Security/CWE-347/MissingJwtSignatureCheck.expected index c1f41d118e76..7eafa2b87aa2 100644 --- a/go/ql/test/query-tests/Security/CWE-347/MissingJwtSignatureCheck.expected +++ b/go/ql/test/query-tests/Security/CWE-347/MissingJwtSignatureCheck.expected @@ -7,8 +7,8 @@ edges | go-jose.v3.go:25:16:25:47 | call to Get | go-jose.v3.go:26:15:26:25 | signedToken | provenance | | | go-jose.v3.go:26:15:26:25 | signedToken | go-jose.v3.go:29:19:29:29 | SSA def(signedToken) | provenance | | | go-jose.v3.go:29:19:29:29 | SSA def(signedToken) | go-jose.v3.go:31:37:31:47 | signedToken | provenance | | -| go-jose.v3.go:31:2:31:48 | ... := ...[0] | go-jose.v3.go:33:12:33:23 | DecodedToken | provenance | Sink:MaD:2 | -| go-jose.v3.go:31:37:31:47 | signedToken | go-jose.v3.go:31:2:31:48 | ... := ...[0] | provenance | MaD:4 | +| go-jose.v3.go:31:2:31:48 | extract:0 ... := ... | go-jose.v3.go:33:12:33:23 | DecodedToken | provenance | Sink:MaD:2 | +| go-jose.v3.go:31:37:31:47 | signedToken | go-jose.v3.go:31:2:31:48 | extract:0 ... := ... | provenance | MaD:4 | | golang-jwt-v5.go:28:16:28:20 | selection of URL | golang-jwt-v5.go:28:16:28:28 | call to Query | provenance | Src:MaD:3 MaD:5 | | golang-jwt-v5.go:28:16:28:28 | call to Query | golang-jwt-v5.go:28:16:28:47 | call to Get | provenance | MaD:6 | | golang-jwt-v5.go:28:16:28:47 | call to Get | golang-jwt-v5.go:29:25:29:35 | signedToken | provenance | | @@ -27,7 +27,7 @@ nodes | go-jose.v3.go:25:16:25:47 | call to Get | semmle.label | call to Get | | go-jose.v3.go:26:15:26:25 | signedToken | semmle.label | signedToken | | go-jose.v3.go:29:19:29:29 | SSA def(signedToken) | semmle.label | SSA def(signedToken) | -| go-jose.v3.go:31:2:31:48 | ... := ...[0] | semmle.label | ... := ...[0] | +| go-jose.v3.go:31:2:31:48 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | go-jose.v3.go:31:37:31:47 | signedToken | semmle.label | signedToken | | go-jose.v3.go:33:12:33:23 | DecodedToken | semmle.label | DecodedToken | | golang-jwt-v5.go:28:16:28:20 | selection of URL | semmle.label | selection of URL | diff --git a/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.expected b/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.expected index 9135bafbf54e..8fb1a305e550 100644 --- a/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.expected +++ b/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.expected @@ -1,30 +1,30 @@ #select -| BadRedirectCheck.go:4:23:4:37 | ...==... | BadRedirectCheck.go:3:18:3:22 | argument corresponding to redir | main.go:11:25:11:45 | call to sanitizeUrl | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | BadRedirectCheck.go:3:18:3:22 | argument corresponding to redir | this value | main.go:11:25:11:45 | call to sanitizeUrl | redirect | -| BadRedirectCheck.go:4:23:4:37 | ...==... | main.go:10:18:10:25 | argument corresponding to redirect | main.go:11:25:11:45 | call to sanitizeUrl | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | main.go:10:18:10:25 | argument corresponding to redirect | this value | main.go:11:25:11:45 | call to sanitizeUrl | redirect | -| cves.go:11:26:11:38 | ...==... | cves.go:14:23:14:25 | argument corresponding to url | cves.go:16:26:16:28 | url | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | cves.go:14:23:14:25 | argument corresponding to url | this value | cves.go:16:26:16:28 | url | redirect | +| BadRedirectCheck.go:4:23:4:37 | ...==... | BadRedirectCheck.go:3:18:3:22 | redir | main.go:11:25:11:45 | call to sanitizeUrl | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | BadRedirectCheck.go:3:18:3:22 | redir | this value | main.go:11:25:11:45 | call to sanitizeUrl | redirect | +| BadRedirectCheck.go:4:23:4:37 | ...==... | main.go:10:18:10:25 | redirect | main.go:11:25:11:45 | call to sanitizeUrl | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | main.go:10:18:10:25 | redirect | this value | main.go:11:25:11:45 | call to sanitizeUrl | redirect | +| cves.go:11:26:11:38 | ...==... | cves.go:14:23:14:25 | url | cves.go:16:26:16:28 | url | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | cves.go:14:23:14:25 | url | this value | cves.go:16:26:16:28 | url | redirect | | cves.go:34:6:34:37 | call to HasPrefix | cves.go:33:14:33:34 | call to Get | cves.go:37:25:37:32 | redirect | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | cves.go:33:14:33:34 | call to Get | this value | cves.go:37:25:37:32 | redirect | redirect | | cves.go:42:6:42:37 | call to HasPrefix | cves.go:41:14:41:34 | call to Get | cves.go:45:25:45:32 | redirect | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | cves.go:41:14:41:34 | call to Get | this value | cves.go:45:25:45:32 | redirect | redirect | -| main.go:25:7:25:38 | call to HasPrefix | main.go:32:24:32:26 | argument corresponding to url | main.go:34:26:34:28 | url | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | main.go:32:24:32:26 | argument corresponding to url | this value | main.go:34:26:34:28 | url | redirect | -| main.go:69:5:69:22 | ...!=... | main.go:68:17:68:24 | argument corresponding to redirect | main.go:77:25:77:39 | call to getTarget1 | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | main.go:68:17:68:24 | argument corresponding to redirect | this value | main.go:77:25:77:39 | call to getTarget1 | redirect | -| main.go:69:5:69:22 | ...!=... | main.go:76:19:76:21 | argument corresponding to url | main.go:77:25:77:39 | call to getTarget1 | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | main.go:76:19:76:21 | argument corresponding to url | this value | main.go:77:25:77:39 | call to getTarget1 | redirect | +| main.go:25:7:25:38 | call to HasPrefix | main.go:32:24:32:26 | url | main.go:34:26:34:28 | url | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | main.go:32:24:32:26 | url | this value | main.go:34:26:34:28 | url | redirect | +| main.go:69:5:69:22 | ...!=... | main.go:68:17:68:24 | redirect | main.go:77:25:77:39 | call to getTarget1 | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | main.go:68:17:68:24 | redirect | this value | main.go:77:25:77:39 | call to getTarget1 | redirect | +| main.go:69:5:69:22 | ...!=... | main.go:76:19:76:21 | url | main.go:77:25:77:39 | call to getTarget1 | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | main.go:76:19:76:21 | url | this value | main.go:77:25:77:39 | call to getTarget1 | redirect | | main.go:83:5:83:20 | ...!=... | main.go:87:9:87:14 | selection of Path | main.go:91:25:91:39 | call to getTarget2 | This is a check that $@, which flows into a $@, has a leading slash, but not that it does not have '/' or '\\' in its second position. | main.go:87:9:87:14 | selection of Path | this value | main.go:91:25:91:39 | call to getTarget2 | redirect | edges | BadRedirectCheck.go:3:18:3:22 | SSA def(redir) | BadRedirectCheck.go:5:10:5:14 | redir | provenance | | -| BadRedirectCheck.go:3:18:3:22 | argument corresponding to redir | BadRedirectCheck.go:5:10:5:14 | redir | provenance | | +| BadRedirectCheck.go:3:18:3:22 | redir | BadRedirectCheck.go:5:10:5:14 | redir | provenance | | | BadRedirectCheck.go:5:10:5:14 | redir | main.go:11:25:11:45 | call to sanitizeUrl | provenance | Sink:MaD:1 | -| cves.go:14:23:14:25 | argument corresponding to url | cves.go:16:26:16:28 | url | provenance | Sink:MaD:1 | +| cves.go:14:23:14:25 | url | cves.go:16:26:16:28 | url | provenance | Sink:MaD:1 | | cves.go:33:14:33:34 | call to Get | cves.go:37:25:37:32 | redirect | provenance | Sink:MaD:1 | | cves.go:41:14:41:34 | call to Get | cves.go:45:25:45:32 | redirect | provenance | Sink:MaD:1 | -| main.go:10:18:10:25 | argument corresponding to redirect | main.go:11:37:11:44 | redirect | provenance | | +| main.go:10:18:10:25 | redirect | main.go:11:37:11:44 | redirect | provenance | | | main.go:11:37:11:44 | redirect | BadRedirectCheck.go:3:18:3:22 | SSA def(redir) | provenance | | | main.go:11:37:11:44 | redirect | main.go:11:25:11:45 | call to sanitizeUrl | provenance | Sink:MaD:1 | -| main.go:32:24:32:26 | argument corresponding to url | main.go:34:26:34:28 | url | provenance | Sink:MaD:1 | +| main.go:32:24:32:26 | url | main.go:34:26:34:28 | url | provenance | Sink:MaD:1 | | main.go:68:17:68:24 | SSA def(redirect) | main.go:73:20:73:27 | redirect | provenance | | -| main.go:68:17:68:24 | argument corresponding to redirect | main.go:73:20:73:27 | redirect | provenance | | +| main.go:68:17:68:24 | redirect | main.go:73:20:73:27 | redirect | provenance | | | main.go:73:9:73:28 | call to Clean | main.go:77:25:77:39 | call to getTarget1 | provenance | Sink:MaD:1 | | main.go:73:20:73:27 | redirect | main.go:73:9:73:28 | call to Clean | provenance | MaD:2 | | main.go:73:20:73:27 | redirect | main.go:73:9:73:28 | call to Clean | provenance | MaD:2 | -| main.go:76:19:76:21 | argument corresponding to url | main.go:77:36:77:38 | url | provenance | | +| main.go:76:19:76:21 | url | main.go:77:36:77:38 | url | provenance | | | main.go:77:36:77:38 | url | main.go:68:17:68:24 | SSA def(redirect) | provenance | | | main.go:77:36:77:38 | url | main.go:77:25:77:39 | call to getTarget1 | provenance | MaD:2 Sink:MaD:1 | | main.go:87:9:87:14 | selection of Path | main.go:91:25:91:39 | call to getTarget2 | provenance | Sink:MaD:1 | @@ -33,27 +33,27 @@ models | 2 | Summary: path; ; false; Clean; ; ; Argument[0]; ReturnValue; taint; manual | nodes | BadRedirectCheck.go:3:18:3:22 | SSA def(redir) | semmle.label | SSA def(redir) | -| BadRedirectCheck.go:3:18:3:22 | argument corresponding to redir | semmle.label | argument corresponding to redir | +| BadRedirectCheck.go:3:18:3:22 | redir | semmle.label | redir | | BadRedirectCheck.go:5:10:5:14 | redir | semmle.label | redir | | BadRedirectCheck.go:5:10:5:14 | redir | semmle.label | redir | -| cves.go:14:23:14:25 | argument corresponding to url | semmle.label | argument corresponding to url | +| cves.go:14:23:14:25 | url | semmle.label | url | | cves.go:16:26:16:28 | url | semmle.label | url | | cves.go:33:14:33:34 | call to Get | semmle.label | call to Get | | cves.go:37:25:37:32 | redirect | semmle.label | redirect | | cves.go:41:14:41:34 | call to Get | semmle.label | call to Get | | cves.go:45:25:45:32 | redirect | semmle.label | redirect | -| main.go:10:18:10:25 | argument corresponding to redirect | semmle.label | argument corresponding to redirect | +| main.go:10:18:10:25 | redirect | semmle.label | redirect | | main.go:11:25:11:45 | call to sanitizeUrl | semmle.label | call to sanitizeUrl | | main.go:11:37:11:44 | redirect | semmle.label | redirect | -| main.go:32:24:32:26 | argument corresponding to url | semmle.label | argument corresponding to url | +| main.go:32:24:32:26 | url | semmle.label | url | | main.go:34:26:34:28 | url | semmle.label | url | | main.go:68:17:68:24 | SSA def(redirect) | semmle.label | SSA def(redirect) | -| main.go:68:17:68:24 | argument corresponding to redirect | semmle.label | argument corresponding to redirect | +| main.go:68:17:68:24 | redirect | semmle.label | redirect | | main.go:73:9:73:28 | call to Clean | semmle.label | call to Clean | | main.go:73:9:73:28 | call to Clean | semmle.label | call to Clean | | main.go:73:20:73:27 | redirect | semmle.label | redirect | | main.go:73:20:73:27 | redirect | semmle.label | redirect | -| main.go:76:19:76:21 | argument corresponding to url | semmle.label | argument corresponding to url | +| main.go:76:19:76:21 | url | semmle.label | url | | main.go:77:25:77:39 | call to getTarget1 | semmle.label | call to getTarget1 | | main.go:77:36:77:38 | url | semmle.label | url | | main.go:87:9:87:14 | selection of Path | semmle.label | selection of Path | diff --git a/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/CONSISTENCY/DataFlowConsistency.expected index d6381960485e..9068ee79a7d5 100644 --- a/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/CONSISTENCY/DataFlowConsistency.expected @@ -1,3 +1,3 @@ reverseRead -| cves.go:33:14:33:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| cves.go:41:14:41:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| cves.go:33:14:33:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | +| cves.go:41:14:41:16 | implicit-deref req | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/CONSISTENCY/DataFlowConsistency.expected index f05017daafda..fda76dcac5af 100644 --- a/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/CONSISTENCY/DataFlowConsistency.expected @@ -1,26 +1,26 @@ reverseRead -| OpenUrlRedirect.go:10:23:10:23 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| OpenUrlRedirectGood.go:12:16:12:16 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:13:13:13:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:22:13:22:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:33:13:33:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:48:13:48:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:56:13:56:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:68:13:68:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:77:13:77:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:85:13:85:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:93:13:93:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:102:13:102:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:115:6:115:6 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:117:24:117:24 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:126:13:126:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:138:13:138:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:150:13:150:13 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:163:11:163:11 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:176:6:176:6 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:177:35:177:35 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:220:3:220:3 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:226:23:226:23 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:227:23:227:23 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| stdlib.go:228:23:228:23 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| OpenUrlRedirect.go:10:23:10:23 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| OpenUrlRedirectGood.go:12:16:12:16 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:13:13:13:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:22:13:22:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:33:13:33:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:48:13:48:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:56:13:56:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:68:13:68:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:77:13:77:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:85:13:85:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:93:13:93:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:102:13:102:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:115:6:115:6 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:117:24:117:24 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:126:13:126:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:138:13:138:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:150:13:150:13 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:163:11:163:11 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:176:6:176:6 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:177:35:177:35 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:220:3:220:3 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:226:23:226:23 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:227:23:227:23 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| stdlib.go:228:23:228:23 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | | stdlib.go:232:23:232:33 | call to Cookies | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.expected b/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.expected index d9f24369ca2a..09c6cb5157f1 100644 --- a/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.expected +++ b/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.expected @@ -32,14 +32,14 @@ edges | stdlib.go:93:13:93:32 | call to Get | stdlib.go:94:3:94:8 | target | provenance | | | stdlib.go:94:3:94:8 | target | stdlib.go:94:3:94:25 | ... += ... | provenance | Config | | stdlib.go:94:3:94:25 | ... += ... | stdlib.go:96:23:96:28 | target | provenance | Sink:MaD:1 | -| stdlib.go:116:4:116:4 | implicit dereference [postupdate] [URL] | stdlib.go:116:4:116:4 | r [postupdate] [pointer, URL] | provenance | | +| stdlib.go:116:4:116:4 | implicit-deref r [postupdate] [URL] | stdlib.go:116:4:116:4 | r [postupdate] [pointer, URL] | provenance | | | stdlib.go:116:4:116:4 | r [postupdate] [pointer, URL] | stdlib.go:117:24:117:24 | r [pointer, URL] | provenance | | -| stdlib.go:116:4:116:8 | implicit dereference | stdlib.go:116:4:116:8 | selection of URL [postupdate] | provenance | Config | -| stdlib.go:116:4:116:8 | selection of URL | stdlib.go:116:4:116:8 | implicit dereference | provenance | Src:MaD:4 Config | -| stdlib.go:116:4:116:8 | selection of URL [postupdate] | stdlib.go:116:4:116:4 | implicit dereference [postupdate] [URL] | provenance | | -| stdlib.go:116:4:116:8 | selection of URL [postupdate] | stdlib.go:116:4:116:8 | implicit dereference | provenance | Config | -| stdlib.go:117:24:117:24 | implicit dereference [URL] | stdlib.go:117:24:117:28 | selection of URL | provenance | | -| stdlib.go:117:24:117:24 | r [pointer, URL] | stdlib.go:117:24:117:24 | implicit dereference [URL] | provenance | | +| stdlib.go:116:4:116:8 | implicit-deref selection of URL | stdlib.go:116:4:116:8 | selection of URL [postupdate] | provenance | Config | +| stdlib.go:116:4:116:8 | selection of URL | stdlib.go:116:4:116:8 | implicit-deref selection of URL | provenance | Src:MaD:4 Config | +| stdlib.go:116:4:116:8 | selection of URL [postupdate] | stdlib.go:116:4:116:4 | implicit-deref r [postupdate] [URL] | provenance | | +| stdlib.go:116:4:116:8 | selection of URL [postupdate] | stdlib.go:116:4:116:8 | implicit-deref selection of URL | provenance | Config | +| stdlib.go:117:24:117:24 | implicit-deref r [URL] | stdlib.go:117:24:117:28 | selection of URL | provenance | | +| stdlib.go:117:24:117:24 | r [pointer, URL] | stdlib.go:117:24:117:24 | implicit-deref r [URL] | provenance | | | stdlib.go:117:24:117:28 | selection of URL | stdlib.go:117:24:117:37 | call to String | provenance | Src:MaD:4 Config Sink:MaD:1 | | stdlib.go:150:13:150:18 | selection of Form | stdlib.go:150:13:150:32 | call to Get | provenance | Src:MaD:2 Config | | stdlib.go:150:13:150:32 | call to Get | stdlib.go:156:23:156:28 | target | provenance | Sink:MaD:1 | @@ -51,42 +51,42 @@ edges | stdlib.go:177:35:177:39 | selection of URL | stdlib.go:177:35:177:52 | call to RequestURI | provenance | Src:MaD:4 Config | | stdlib.go:177:35:177:52 | call to RequestURI | stdlib.go:177:24:177:52 | ...+... | provenance | Config Sink:MaD:1 | | stdlib.go:186:13:186:33 | call to FormValue | stdlib.go:188:23:188:28 | target | provenance | Src:MaD:3 Sink:MaD:1 | -| stdlib.go:194:3:194:57 | ... := ...[0] | stdlib.go:196:23:196:28 | target | provenance | | -| stdlib.go:194:36:194:56 | call to FormValue | stdlib.go:194:3:194:57 | ... := ...[0] | provenance | Src:MaD:3 Config | -| stdlib.go:196:23:196:28 | implicit dereference | stdlib.go:196:23:196:28 | target [postupdate] | provenance | Config | -| stdlib.go:196:23:196:28 | implicit dereference | stdlib.go:196:23:196:33 | selection of Path | provenance | Config Sink:MaD:1 | -| stdlib.go:196:23:196:28 | target | stdlib.go:196:23:196:28 | implicit dereference | provenance | Config | +| stdlib.go:194:3:194:57 | extract:0 ... := ... | stdlib.go:196:23:196:28 | target | provenance | | +| stdlib.go:194:36:194:56 | call to FormValue | stdlib.go:194:3:194:57 | extract:0 ... := ... | provenance | Src:MaD:3 Config | +| stdlib.go:196:23:196:28 | implicit-deref target | stdlib.go:196:23:196:28 | target [postupdate] | provenance | Config | +| stdlib.go:196:23:196:28 | implicit-deref target | stdlib.go:196:23:196:33 | selection of Path | provenance | Config Sink:MaD:1 | +| stdlib.go:196:23:196:28 | target | stdlib.go:196:23:196:28 | implicit-deref target | provenance | Config | | stdlib.go:196:23:196:28 | target | stdlib.go:196:23:196:33 | selection of Path | provenance | Config Sink:MaD:1 | | stdlib.go:196:23:196:28 | target | stdlib.go:198:23:198:28 | target | provenance | | -| stdlib.go:196:23:196:28 | target [postupdate] | stdlib.go:196:23:196:28 | implicit dereference | provenance | Config | +| stdlib.go:196:23:196:28 | target [postupdate] | stdlib.go:196:23:196:28 | implicit-deref target | provenance | Config | | stdlib.go:196:23:196:28 | target [postupdate] | stdlib.go:198:23:198:28 | target | provenance | | | stdlib.go:198:23:198:28 | target | stdlib.go:198:23:198:42 | call to EscapedPath | provenance | Config Sink:MaD:1 | -| stdlib.go:210:3:210:3 | implicit dereference [postupdate] | stdlib.go:210:3:210:3 | u [postupdate] | provenance | Config | -| stdlib.go:210:3:210:3 | implicit dereference [postupdate] | stdlib.go:210:3:210:3 | u [postupdate] [pointer] | provenance | | +| stdlib.go:210:3:210:3 | implicit-deref u [postupdate] | stdlib.go:210:3:210:3 | u [postupdate] | provenance | Config | +| stdlib.go:210:3:210:3 | implicit-deref u [postupdate] | stdlib.go:210:3:210:3 | u [postupdate] [pointer] | provenance | | | stdlib.go:210:3:210:3 | u [postupdate] | stdlib.go:212:23:212:23 | u | provenance | | | stdlib.go:210:3:210:3 | u [postupdate] [pointer] | stdlib.go:212:23:212:23 | u [pointer] | provenance | | -| stdlib.go:210:12:210:30 | call to FormValue | stdlib.go:210:3:210:3 | implicit dereference [postupdate] | provenance | Src:MaD:3 Config | +| stdlib.go:210:12:210:30 | call to FormValue | stdlib.go:210:3:210:3 | implicit-deref u [postupdate] | provenance | Src:MaD:3 Config | | stdlib.go:210:12:210:30 | call to FormValue | stdlib.go:210:3:210:3 | u [postupdate] | provenance | Src:MaD:3 Config | -| stdlib.go:212:23:212:23 | implicit dereference | stdlib.go:212:23:212:23 | u [postupdate] | provenance | Config | -| stdlib.go:212:23:212:23 | implicit dereference | stdlib.go:212:23:212:28 | selection of Path | provenance | Config Sink:MaD:1 | -| stdlib.go:212:23:212:23 | u | stdlib.go:212:23:212:23 | implicit dereference | provenance | Config | +| stdlib.go:212:23:212:23 | implicit-deref u | stdlib.go:212:23:212:23 | u [postupdate] | provenance | Config | +| stdlib.go:212:23:212:23 | implicit-deref u | stdlib.go:212:23:212:28 | selection of Path | provenance | Config Sink:MaD:1 | +| stdlib.go:212:23:212:23 | u | stdlib.go:212:23:212:23 | implicit-deref u | provenance | Config | | stdlib.go:212:23:212:23 | u | stdlib.go:212:23:212:28 | selection of Path | provenance | Config Sink:MaD:1 | | stdlib.go:212:23:212:23 | u | stdlib.go:214:23:214:23 | u | provenance | | -| stdlib.go:212:23:212:23 | u [pointer] | stdlib.go:212:23:212:23 | implicit dereference | provenance | | -| stdlib.go:212:23:212:23 | u [postupdate] | stdlib.go:212:23:212:23 | implicit dereference | provenance | Config | +| stdlib.go:212:23:212:23 | u [pointer] | stdlib.go:212:23:212:23 | implicit-deref u | provenance | | +| stdlib.go:212:23:212:23 | u [postupdate] | stdlib.go:212:23:212:23 | implicit-deref u | provenance | Config | | stdlib.go:212:23:212:23 | u [postupdate] | stdlib.go:214:23:214:23 | u | provenance | | | stdlib.go:214:23:214:23 | u | stdlib.go:214:23:214:32 | call to String | provenance | Config Sink:MaD:1 | -| stdlib.go:257:3:257:3 | implicit dereference [postupdate] | stdlib.go:257:3:257:3 | u [postupdate] | provenance | Config | -| stdlib.go:257:3:257:3 | implicit dereference [postupdate] | stdlib.go:257:3:257:3 | u [postupdate] [pointer] | provenance | | +| stdlib.go:257:3:257:3 | implicit-deref u [postupdate] | stdlib.go:257:3:257:3 | u [postupdate] | provenance | Config | +| stdlib.go:257:3:257:3 | implicit-deref u [postupdate] | stdlib.go:257:3:257:3 | u [postupdate] [pointer] | provenance | | | stdlib.go:257:3:257:3 | u [postupdate] | stdlib.go:260:3:260:3 | u | provenance | | | stdlib.go:257:3:257:3 | u [postupdate] [pointer] | stdlib.go:260:3:260:3 | u [pointer] | provenance | | -| stdlib.go:257:12:257:30 | call to FormValue | stdlib.go:257:3:257:3 | implicit dereference [postupdate] | provenance | Src:MaD:3 Config | +| stdlib.go:257:12:257:30 | call to FormValue | stdlib.go:257:3:257:3 | implicit-deref u [postupdate] | provenance | Src:MaD:3 Config | | stdlib.go:257:12:257:30 | call to FormValue | stdlib.go:257:3:257:3 | u [postupdate] | provenance | Src:MaD:3 Config | -| stdlib.go:260:3:260:3 | implicit dereference | stdlib.go:260:3:260:3 | u [postupdate] | provenance | Config | -| stdlib.go:260:3:260:3 | u | stdlib.go:260:3:260:3 | implicit dereference | provenance | Config | +| stdlib.go:260:3:260:3 | implicit-deref u | stdlib.go:260:3:260:3 | u [postupdate] | provenance | Config | +| stdlib.go:260:3:260:3 | u | stdlib.go:260:3:260:3 | implicit-deref u | provenance | Config | | stdlib.go:260:3:260:3 | u | stdlib.go:261:23:261:23 | u | provenance | | -| stdlib.go:260:3:260:3 | u [pointer] | stdlib.go:260:3:260:3 | implicit dereference | provenance | | -| stdlib.go:260:3:260:3 | u [postupdate] | stdlib.go:260:3:260:3 | implicit dereference | provenance | Config | +| stdlib.go:260:3:260:3 | u [pointer] | stdlib.go:260:3:260:3 | implicit-deref u | provenance | | +| stdlib.go:260:3:260:3 | u [postupdate] | stdlib.go:260:3:260:3 | implicit-deref u | provenance | Config | | stdlib.go:260:3:260:3 | u [postupdate] | stdlib.go:261:23:261:23 | u | provenance | | | stdlib.go:261:23:261:23 | u | stdlib.go:261:23:261:32 | call to String | provenance | Config Sink:MaD:1 | models @@ -120,12 +120,12 @@ nodes | stdlib.go:94:3:94:8 | target | semmle.label | target | | stdlib.go:94:3:94:25 | ... += ... | semmle.label | ... += ... | | stdlib.go:96:23:96:28 | target | semmle.label | target | -| stdlib.go:116:4:116:4 | implicit dereference [postupdate] [URL] | semmle.label | implicit dereference [postupdate] [URL] | +| stdlib.go:116:4:116:4 | implicit-deref r [postupdate] [URL] | semmle.label | implicit-deref r [postupdate] [URL] | | stdlib.go:116:4:116:4 | r [postupdate] [pointer, URL] | semmle.label | r [postupdate] [pointer, URL] | -| stdlib.go:116:4:116:8 | implicit dereference | semmle.label | implicit dereference | +| stdlib.go:116:4:116:8 | implicit-deref selection of URL | semmle.label | implicit-deref selection of URL | | stdlib.go:116:4:116:8 | selection of URL | semmle.label | selection of URL | | stdlib.go:116:4:116:8 | selection of URL [postupdate] | semmle.label | selection of URL [postupdate] | -| stdlib.go:117:24:117:24 | implicit dereference [URL] | semmle.label | implicit dereference [URL] | +| stdlib.go:117:24:117:24 | implicit-deref r [URL] | semmle.label | implicit-deref r [URL] | | stdlib.go:117:24:117:24 | r [pointer, URL] | semmle.label | r [pointer, URL] | | stdlib.go:117:24:117:28 | selection of URL | semmle.label | selection of URL | | stdlib.go:117:24:117:37 | call to String | semmle.label | call to String | @@ -142,30 +142,30 @@ nodes | stdlib.go:177:35:177:52 | call to RequestURI | semmle.label | call to RequestURI | | stdlib.go:186:13:186:33 | call to FormValue | semmle.label | call to FormValue | | stdlib.go:188:23:188:28 | target | semmle.label | target | -| stdlib.go:194:3:194:57 | ... := ...[0] | semmle.label | ... := ...[0] | +| stdlib.go:194:3:194:57 | extract:0 ... := ... | semmle.label | extract:0 ... := ... | | stdlib.go:194:36:194:56 | call to FormValue | semmle.label | call to FormValue | -| stdlib.go:196:23:196:28 | implicit dereference | semmle.label | implicit dereference | +| stdlib.go:196:23:196:28 | implicit-deref target | semmle.label | implicit-deref target | | stdlib.go:196:23:196:28 | target | semmle.label | target | | stdlib.go:196:23:196:28 | target [postupdate] | semmle.label | target [postupdate] | | stdlib.go:196:23:196:33 | selection of Path | semmle.label | selection of Path | | stdlib.go:198:23:198:28 | target | semmle.label | target | | stdlib.go:198:23:198:42 | call to EscapedPath | semmle.label | call to EscapedPath | -| stdlib.go:210:3:210:3 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | +| stdlib.go:210:3:210:3 | implicit-deref u [postupdate] | semmle.label | implicit-deref u [postupdate] | | stdlib.go:210:3:210:3 | u [postupdate] | semmle.label | u [postupdate] | | stdlib.go:210:3:210:3 | u [postupdate] [pointer] | semmle.label | u [postupdate] [pointer] | | stdlib.go:210:12:210:30 | call to FormValue | semmle.label | call to FormValue | -| stdlib.go:212:23:212:23 | implicit dereference | semmle.label | implicit dereference | +| stdlib.go:212:23:212:23 | implicit-deref u | semmle.label | implicit-deref u | | stdlib.go:212:23:212:23 | u | semmle.label | u | | stdlib.go:212:23:212:23 | u [pointer] | semmle.label | u [pointer] | | stdlib.go:212:23:212:23 | u [postupdate] | semmle.label | u [postupdate] | | stdlib.go:212:23:212:28 | selection of Path | semmle.label | selection of Path | | stdlib.go:214:23:214:23 | u | semmle.label | u | | stdlib.go:214:23:214:32 | call to String | semmle.label | call to String | -| stdlib.go:257:3:257:3 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | +| stdlib.go:257:3:257:3 | implicit-deref u [postupdate] | semmle.label | implicit-deref u [postupdate] | | stdlib.go:257:3:257:3 | u [postupdate] | semmle.label | u [postupdate] | | stdlib.go:257:3:257:3 | u [postupdate] [pointer] | semmle.label | u [postupdate] [pointer] | | stdlib.go:257:12:257:30 | call to FormValue | semmle.label | call to FormValue | -| stdlib.go:260:3:260:3 | implicit dereference | semmle.label | implicit dereference | +| stdlib.go:260:3:260:3 | implicit-deref u | semmle.label | implicit-deref u | | stdlib.go:260:3:260:3 | u | semmle.label | u | | stdlib.go:260:3:260:3 | u [pointer] | semmle.label | u [pointer] | | stdlib.go:260:3:260:3 | u [postupdate] | semmle.label | u [postupdate] | diff --git a/go/ql/test/query-tests/Security/CWE-640/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-640/CONSISTENCY/DataFlowConsistency.expected index f3510be5f6c8..e2b722b16382 100644 --- a/go/ql/test/query-tests/Security/CWE-640/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-640/CONSISTENCY/DataFlowConsistency.expected @@ -1,2 +1,2 @@ reverseRead -| EmailBad.go:9:10:9:10 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| EmailBad.go:9:10:9:10 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-643/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-643/CONSISTENCY/DataFlowConsistency.expected index 001bad6c8fc1..7df0be09a4b8 100644 --- a/go/ql/test/query-tests/Security/CWE-643/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-643/CONSISTENCY/DataFlowConsistency.expected @@ -1,13 +1,13 @@ reverseRead -| XPathInjection.go:13:14:13:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:35:14:35:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:46:14:46:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:57:14:57:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:72:14:72:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:83:14:83:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:92:14:92:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:93:14:93:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:106:14:106:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:115:14:115:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:116:14:116:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| tst.go:139:14:139:14 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| XPathInjection.go:13:14:13:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:35:14:35:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:46:14:46:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:57:14:57:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:72:14:72:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:83:14:83:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:92:14:92:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:93:14:93:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:106:14:106:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:115:14:115:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:116:14:116:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| tst.go:139:14:139:14 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-770/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-770/CONSISTENCY/DataFlowConsistency.expected index 215578883b20..bea886c155e3 100644 --- a/go/ql/test/query-tests/Security/CWE-770/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-770/CONSISTENCY/DataFlowConsistency.expected @@ -1,6 +1,6 @@ reverseRead -| UncontrolledAllocationSizeBad.go:11:12:11:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| UncontrolledAllocationSizeGood.go:11:12:11:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| UncontrolledAllocationSizeGood.go:32:12:32:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| UncontrolledAllocationSizeGood.go:52:12:52:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| UncontrolledAllocationSizeGood.go:73:12:73:12 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| UncontrolledAllocationSizeBad.go:11:12:11:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| UncontrolledAllocationSizeGood.go:11:12:11:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| UncontrolledAllocationSizeGood.go:32:12:32:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| UncontrolledAllocationSizeGood.go:52:12:52:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| UncontrolledAllocationSizeGood.go:73:12:73:12 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | 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 bdcf83b8935f..22005b1ac6e9 100644 --- a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.expected +++ b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.expected @@ -5,8 +5,8 @@ edges | 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 | +| UncontrolledAllocationSizeBad.go:14:2:14:37 | extract:0 ... := ... | UncontrolledAllocationSizeBad.go:20:27:20:30 | sink | provenance | | +| UncontrolledAllocationSizeBad.go:14:28:14:36 | sourceStr | UncontrolledAllocationSizeBad.go:14:2:14:37 | extract: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 | @@ -16,7 +16,7 @@ nodes | 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:2:14:37 | extract:0 ... := ... | semmle.label | extract: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-918/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/query-tests/Security/CWE-918/CONSISTENCY/DataFlowConsistency.expected index cb71c6569c58..53fc71eeb543 100644 --- a/go/ql/test/query-tests/Security/CWE-918/CONSISTENCY/DataFlowConsistency.expected +++ b/go/ql/test/query-tests/Security/CWE-918/CONSISTENCY/DataFlowConsistency.expected @@ -1,5 +1,5 @@ reverseRead -| websocket.go:110:31:110:31 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| websocket.go:120:32:120:32 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| websocket.go:129:54:129:54 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | -| websocket.go:139:55:139:55 | implicit dereference | Origin of readStep is missing a PostUpdateNode. | +| websocket.go:110:31:110:31 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| websocket.go:120:32:120:32 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| websocket.go:129:54:129:54 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | +| websocket.go:139:55:139:55 | implicit-deref r | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/query-tests/Security/CWE-918/RequestForgery.expected b/go/ql/test/query-tests/Security/CWE-918/RequestForgery.expected index 15b0e179e983..9dfdcd278a4e 100644 --- a/go/ql/test/query-tests/Security/CWE-918/RequestForgery.expected +++ b/go/ql/test/query-tests/Security/CWE-918/RequestForgery.expected @@ -37,9 +37,9 @@ edges | tst.go:11:13:11:35 | call to FormValue | tst.go:39:11:39:29 | ...+... | provenance | Src:MaD:1 | | tst.go:11:13:11:35 | call to FormValue | tst.go:41:11:41:40 | ...+... | provenance | Src:MaD:1 | | tst.go:11:13:11:35 | call to FormValue | tst.go:48:11:48:18 | tainted2 | provenance | Src:MaD:1 | -| tst.go:48:2:48:2 | implicit dereference [postupdate] | tst.go:48:2:48:2 | u [postupdate] | provenance | | +| tst.go:48:2:48:2 | implicit-deref u [postupdate] | tst.go:48:2:48:2 | u [postupdate] | provenance | | | tst.go:48:2:48:2 | u [postupdate] | tst.go:49:11:49:11 | u | provenance | | -| tst.go:48:11:48:18 | tainted2 | tst.go:48:2:48:2 | implicit dereference [postupdate] | provenance | Config | +| tst.go:48:11:48:18 | tainted2 | tst.go:48:2:48:2 | implicit-deref u [postupdate] | provenance | Config | | tst.go:48:11:48:18 | tainted2 | tst.go:48:2:48:2 | u [postupdate] | provenance | Config | | tst.go:49:11:49:11 | u | tst.go:49:11:49:20 | call to String | provenance | MaD:3 | | websocket.go:60:21:60:31 | call to Referer | websocket.go:65:27:65:40 | untrustedInput | provenance | Src:MaD:2 | @@ -71,7 +71,7 @@ nodes | tst.go:37:18:37:24 | tainted | semmle.label | tainted | | tst.go:39:11:39:29 | ...+... | semmle.label | ...+... | | tst.go:41:11:41:40 | ...+... | semmle.label | ...+... | -| tst.go:48:2:48:2 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | +| tst.go:48:2:48:2 | implicit-deref u [postupdate] | semmle.label | implicit-deref u [postupdate] | | tst.go:48:2:48:2 | u [postupdate] | semmle.label | u [postupdate] | | tst.go:48:11:48:18 | tainted2 | semmle.label | tainted2 | | tst.go:49:11:49:11 | u | semmle.label | u | diff --git a/java/kotlin-extractor/AGENTS.md b/java/kotlin-extractor/AGENTS.md new file mode 100644 index 000000000000..5cf35f53952f --- /dev/null +++ b/java/kotlin-extractor/AGENTS.md @@ -0,0 +1,33 @@ +# Kotlin extractor development + +## Versioned extractor packaging + +Extractors ship as `codeql-extractor-kotlin--.jar`, with `standalone` and `embeddable` variants. `VERSIONS` in `versions.bzl` lists compiler baselines; the Bazel `many` target builds all variants and versions. The packaged test wrapper selects the newest baseline not newer than `kotlinc` using `pick-kotlin-version.py` and `kotlin-versions.list`, ignoring prerelease suffixes. Compiler and extractor versions need not match exactly; selection alone does not prove compatibility with a newer compiler. + +## Compiler compatibility patches + +- Patches live in `src/main/kotlin/utils/versions/v_/`, replacing version dots with underscores. +- `get_compatilibity_sources` in `versions.bzl` selects the newest applicable file per filename; earlier files remain active until replaced. Comparisons ignore prerelease suffixes. +- Add same-filename replacements at the first compiler baseline needing them; preserve older implementations. Put shared code outside `utils/versions`. + +## Compiler and runtime selection + +From the repository root, replace `` with a baseline from `VERSIONS`: + +```sh +java/kotlin-extractor/dev/kotlinc --select +export PATH="$PWD/java/kotlin-extractor/dev:$PATH" +CODEQL_KOTLIN_SINGLE_VERSION= bazel build //java/kotlin-extractor +``` + +- Rebuild the Java extractor pack used by your test environment; building a JAR alone does not refresh it. Use that environment's packaging target, not a stale distribution. +- List available packs with `codeql resolve languages --format=json`, then check which Java pack the test invocation actually uses, including overrides. With `JAVA_ROOT` set to that path, check `kotlinc -version`, run `python3 "$JAVA_ROOT/tools/pick-kotlin-version.py" "@$JAVA_ROOT/tools/kotlin-versions.list"`, and verify the matching JAR exists there. QL tests use the standalone variant. +- Use a runtime JDK supported by the selected compiler; check it separately because the wrapper omits it from version output. Preserve Bazel's configured toolchain. + +## Testing + +- For extractor changes, cover applicable cases in both `java/ql/test-kotlin1` (K1) and `java/ql/test-kotlin2` (K2); neither substitutes for the other. These sibling suites are validation references, not directories governed by this file. +- Run QL suites with `codeql test run -j `, optionally sharding with `--slice=N/M`. Allow modest parallelism, but limit concurrent tests, builds, and memory use to avoid exhausting local resources. Run every shard for full coverage and aggregate failures. +- `java/ql/integration-tests/kotlin` uses the integration-test pytest harness, not `codeql test run`. Run relevant platform cases separately using the configured harness and fixtures. +- All applicable tests must pass when testing is authorised. After runner changes, pass one representative test before a matrix. Respect explicit requests not to run tests and report coverage gaps rather than claiming completion. +- Never disable or weaken tests without human approval. Before accepting expected-output changes, verify compiler/extractor/JDK selection, investigate the cause, and inspect the full diff. Do not use `--learn` for unexplained changes. diff --git a/java/kotlin-extractor/BUILD.bazel b/java/kotlin-extractor/BUILD.bazel index f33949f83914..fae93f6a2cc4 100644 --- a/java/kotlin-extractor/BUILD.bazel +++ b/java/kotlin-extractor/BUILD.bazel @@ -57,6 +57,10 @@ _compiler_plugin_registrar_service_source = "src/main/resources/META-INF/service _compiler_plugin_registrar_service_target = "META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar" +_component_registrar_service_source = "src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar" + +_component_registrar_service_target = "META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar" + py_binary( name = "generate_dbscheme", srcs = ["generate_dbscheme.py"], @@ -68,7 +72,10 @@ _resources = [ r[len("src/main/resources/"):], ) for r in glob(["src/main/resources/**"]) - if r != _compiler_plugin_registrar_service_source + if r not in ( + _compiler_plugin_registrar_service_source, + _component_registrar_service_source, + ) ] _compiler_plugin_registrar_service = ( @@ -76,6 +83,11 @@ _compiler_plugin_registrar_service = ( _compiler_plugin_registrar_service_target, ) +_component_registrar_service = ( + _component_registrar_service_source, + _component_registrar_service_target, +) + kt_javac_options( name = "javac-options", release = "8", @@ -93,7 +105,11 @@ kt_javac_options( "kotlin.RequiresOptIn", "org.jetbrains.kotlin.ir.symbols.%s" % ("IrSymbolInternals" if version_less(v, "2.0.0") else "UnsafeDuringIrConstructionAPI"), - ] + ([] if version_less(v, "2.2.20") else ["org.jetbrains.kotlin.DeprecatedForRemovalCompilerApi"]), + ] + ( + [] if version_less(v, "2.2.20") else ["org.jetbrains.kotlin.DeprecatedForRemovalCompilerApi"] + ) + ( + [] if version_less(v, "2.4.20") else ["org.jetbrains.kotlin.K1Deprecation"] + ), x_suppress_version_warnings = True, ), # * extractor.name is different for each version, so we need to put it in different output dirs @@ -103,6 +119,8 @@ kt_javac_options( name = "resources-%s" % v, srcs = [src for src, _ in _resources] + ( [_compiler_plugin_registrar_service[0]] if not version_less(v, "2.4.0") else [] + ) + ( + [_component_registrar_service[0]] if version_less(v, "2.4.20") else [] ), outs = [ "%s/com/github/codeql/extractor.name" % v, @@ -114,6 +132,11 @@ kt_javac_options( v, _compiler_plugin_registrar_service[1], )] if not version_less(v, "2.4.0") else [] + ) + ( + ["%s/%s" % ( + v, + _component_registrar_service[1], + )] if version_less(v, "2.4.20") else [] ), cmd = "\n".join([ "echo %s-%s > $(RULEDIR)/%s/com/github/codeql/extractor.name" % (_extractor_name_prefix, v, v), @@ -126,6 +149,12 @@ kt_javac_options( v, _compiler_plugin_registrar_service[1], )] if not version_less(v, "2.4.0") else [] + ) + ( + ["cp $(execpath %s) $(RULEDIR)/%s/%s" % ( + _component_registrar_service[0], + v, + _component_registrar_service[1], + )] if version_less(v, "2.4.20") else [] )), ), kt_jvm_library( diff --git a/java/kotlin-extractor/deps/kotlin-compiler-2.4.20.jar b/java/kotlin-extractor/deps/kotlin-compiler-2.4.20.jar new file mode 100644 index 000000000000..6ffc5a160971 --- /dev/null +++ b/java/kotlin-extractor/deps/kotlin-compiler-2.4.20.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:038d406cc51d5fe3f6b5a16366a3f083b783bceb9e576e3103e695c3ce04e0fa +size 60184475 diff --git a/java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.4.20.jar b/java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.4.20.jar new file mode 100644 index 000000000000..4084155d18e5 --- /dev/null +++ b/java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.4.20.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf97161430683fb9af96dc6a7017ffae1fe8737b80d12eee11f2fe3e76f8ded8 +size 58593245 diff --git a/java/kotlin-extractor/deps/kotlin-stdlib-2.4.20.jar b/java/kotlin-extractor/deps/kotlin-stdlib-2.4.20.jar new file mode 100644 index 000000000000..bf737b49cf30 --- /dev/null +++ b/java/kotlin-extractor/deps/kotlin-stdlib-2.4.20.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2226de463d309d4a5500a481320b3dea515a6981dcae1def531fbc158884e25f +size 1853314 diff --git a/java/kotlin-extractor/dev/wrapper.py b/java/kotlin-extractor/dev/wrapper.py index 1b29de23f766..6940765cbc33 100755 --- a/java/kotlin-extractor/dev/wrapper.py +++ b/java/kotlin-extractor/dev/wrapper.py @@ -27,7 +27,7 @@ import io import os -DEFAULT_VERSION = "2.4.10" +DEFAULT_VERSION = "2.4.20" def options(): diff --git a/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java b/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java index 19bdc786c5e2..16df41e5341e 100644 --- a/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java +++ b/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java @@ -1244,8 +1244,8 @@ public static File tryMakeCanonical (File f) try { // getCanonicalFile does not canonicalize subst drives on Windows, so do this separately. This // is a no-op on non-Windows platforms. - return SubstResolver.resolve(f.getCanonicalFile()); } - catch (IOException ignored) { + return SubstResolver.resolve(f.getCanonicalFile()); + } catch (IOException ignored) { Exceptions.ignore(ignored, "Can't log error: Could be too verbose."); return new File(simplifyPath(f)); } diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index 0b975d9b829b..4571987da6af 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -1645,8 +1645,9 @@ open class KotlinFileExtractor( extractMethodAndParameterTypeAccesses: Boolean, typeSubstitution: TypeSubstitution?, classTypeArgsIncludingOuterClasses: List? - ) : Label = - forceExtractFunction( + ) : Label { + val sourceLoc = tw.getLocation(f.parentClassOrNull ?: f) + return forceExtractFunction( f, parentId, extractBody = false, @@ -1656,6 +1657,7 @@ open class KotlinFileExtractor( classTypeArgsIncludingOuterClasses, overriddenAttributes = OverriddenFunctionAttributes( + sourceLoc = sourceLoc, visibility = DescriptorVisibilities.PUBLIC, modality = Modality.OPEN ) @@ -1666,7 +1668,6 @@ open class KotlinFileExtractor( CompilerGeneratedKinds.INTERFACE_FORWARDER.kind ) if (extractBody) { - val realFunctionLocId = tw.getLocation(f) val inheritedDefaultFunction = f.realOverrideTarget val directlyInheritedSymbol = when (f) { @@ -1686,10 +1687,10 @@ open class KotlinFileExtractor( (directlyInheritedSymbol.owner.parentClassOrNull ?: return functionId) .typeWith() - extractExpressionBody(functionId, realFunctionLocId).also { returnId -> + extractExpressionBody(functionId, sourceLoc).also { returnId -> extractRawMethodAccess( f, - realFunctionLocId, + sourceLoc, f.returnType, functionId, returnId, @@ -1702,7 +1703,7 @@ open class KotlinFileExtractor( extractVariableAccess( syntheticParamId, param.type, - realFunctionLocId, + sourceLoc, argParentId, idxOffset + idx, functionId, @@ -1718,7 +1719,7 @@ open class KotlinFileExtractor( callId, -1, returnId, - realFunctionLocId + sourceLoc ) }, null @@ -1726,6 +1727,7 @@ open class KotlinFileExtractor( } } } + } private fun extractFunction( f: IrFunction, @@ -3903,7 +3905,14 @@ open class KotlinFileExtractor( val prop = getPropertiesByFqName(pluginContext, propertyPkg, propertyName) - .firstOrNull { it.owner.parentClassOrNull?.fqNameWhenAvailable?.asString() == type } + .firstOrNull { + val owner = it.owner + when (val parent = owner.parent) { + is IrClass -> parent.fqNameWhenAvailable?.asString() + is IrExternalPackageFragment -> getFileClassFqName(owner)?.asString() + else -> null + } == type + } ?.owner if (prop != null) { diff --git a/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt b/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt index e215b5ca31da..d5650389448d 100644 --- a/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt +++ b/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt @@ -96,8 +96,7 @@ class MetaAnnotationSupport( val metaAnnotations = annotationClass.annotations val jvmRepeatable = metaAnnotations.find { - it.symbol.owner.parentAsClass.fqNameWhenAvailable == - JvmAnnotationNames.REPEATABLE_ANNOTATION + it.annotationClass.fqNameWhenAvailable == JvmAnnotationNames.REPEATABLE_ANNOTATION } return if (jvmRepeatable != null) { ((jvmRepeatable.codeQlGetValueArgument(0) as? IrClassReference)?.symbol as? IrClassSymbol) diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_4_20/Kotlin2ComponentRegistrar.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_4_20/Kotlin2ComponentRegistrar.kt new file mode 100644 index 000000000000..f5091752633c --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_4_20/Kotlin2ComponentRegistrar.kt @@ -0,0 +1,32 @@ +package com.github.codeql + +import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension +import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar +import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi +import org.jetbrains.kotlin.config.CompilerConfiguration + +@OptIn(ExperimentalCompilerApi::class) +abstract class Kotlin2ComponentRegistrar : CompilerPluginRegistrar() { + override val supportsK2: Boolean + get() = true + + override val pluginId: String + get() = "kotlin-extractor" + + private var extensionStorage: CompilerPluginRegistrar.ExtensionStorage? = null + + override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) { + this@Kotlin2ComponentRegistrar.extensionStorage = this + doRegisterExtensions(configuration) + } + + abstract fun doRegisterExtensions(configuration: CompilerConfiguration) + + protected fun registerExtractorExtension(extension: IrGenerationExtension) { + val storage = extensionStorage + ?: throw IllegalStateException("registerExtractorExtension called before registerExtensions") + with(storage) { + IrGenerationExtension.registerExtension(extension) + } + } +} diff --git a/java/kotlin-extractor/versions.bzl b/java/kotlin-extractor/versions.bzl index f9642c96b788..17c925493905 100644 --- a/java/kotlin-extractor/versions.bzl +++ b/java/kotlin-extractor/versions.bzl @@ -12,6 +12,7 @@ VERSIONS = [ "2.3.0", "2.3.20", "2.4.0", + "2.4.20", ] def _version_to_tuple(v): diff --git a/java/ql/consistency-queries/SsaConsistency.ql b/java/ql/consistency-queries/SsaConsistency.ql index b62db63ac5ba..2ea5604d5b7e 100644 --- a/java/ql/consistency-queries/SsaConsistency.ql +++ b/java/ql/consistency-queries/SsaConsistency.ql @@ -1,3 +1,4 @@ import java import semmle.code.java.dataflow.internal.SsaImpl import Impl::Consistency +import DataFlowIntegration::DfConsistency diff --git a/java/ql/integration-tests/java/buildless-maven-existing-settings-xml/test.py b/java/ql/integration-tests/java/buildless-maven-existing-settings-xml/test.py index 811ef3bb926b..d34586fc6955 100644 --- a/java/ql/integration-tests/java/buildless-maven-existing-settings-xml/test.py +++ b/java/ql/integration-tests/java/buildless-maven-existing-settings-xml/test.py @@ -1,9 +1,12 @@ import os import os.path -def test(codeql, java, check_diagnostics_java): +def test(codeql, java, check_diagnostics_java, tmp_path): codeql.database.create(build_mode = "none", _env={ - "_JAVA_OPTIONS": "-Duser.home=" + os.path.join(os.getcwd(), "home-dir-with-maven-settings") + "_JAVA_OPTIONS": " ".join([ + "-Duser.home=" + os.path.join(os.getcwd(), "home-dir-with-maven-settings"), + "-Dmaven.repo.local=" + str(tmp_path / "maven-repository") + ]) } ) diff --git a/java/ql/integration-tests/java/buildless-maven-mirrorof/test.py b/java/ql/integration-tests/java/buildless-maven-mirrorof/test.py index c24417c14405..e9a14a563240 100644 --- a/java/ql/integration-tests/java/buildless-maven-mirrorof/test.py +++ b/java/ql/integration-tests/java/buildless-maven-mirrorof/test.py @@ -1,10 +1,13 @@ import os import os.path -def test(codeql, java, check_diagnostics_java): +def test(codeql, java, check_diagnostics_java, tmp_path): codeql.database.create(build_mode = "none", _env={ - "_JAVA_OPTIONS": "-Duser.home=" + os.path.join(os.getcwd(), "empty-home"), + "_JAVA_OPTIONS": " ".join([ + "-Duser.home=" + os.path.join(os.getcwd(), "empty-home"), + "-Dmaven.repo.local=" + str(tmp_path / "maven-repository") + ]), "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml") } ) diff --git a/java/ql/integration-tests/java/buildless-maven/test.py b/java/ql/integration-tests/java/buildless-maven/test.py index 2e49378d9827..fdb6b208fc2a 100644 --- a/java/ql/integration-tests/java/buildless-maven/test.py +++ b/java/ql/integration-tests/java/buildless-maven/test.py @@ -1,9 +1,12 @@ import os import os.path -def test(codeql, java, check_diagnostics_java): +def test(codeql, java, check_diagnostics_java, tmp_path): codeql.database.create(build_mode = "none", _env={ - "_JAVA_OPTIONS": "-Duser.home=" + os.path.join(os.getcwd(), "empty-home") + "_JAVA_OPTIONS": " ".join([ + "-Duser.home=" + os.path.join(os.getcwd(), "empty-home"), + "-Dmaven.repo.local=" + str(tmp_path / "maven-repository") + ]) } ) diff --git a/java/ql/integration-tests/java/gradle-sample-without-wrapper-or-gradle-buildless/test.py b/java/ql/integration-tests/java/gradle-sample-without-wrapper-or-gradle-buildless/test.py index 3aaee01f4055..a312878e107f 100644 --- a/java/ql/integration-tests/java/gradle-sample-without-wrapper-or-gradle-buildless/test.py +++ b/java/ql/integration-tests/java/gradle-sample-without-wrapper-or-gradle-buildless/test.py @@ -6,7 +6,9 @@ # The version of gradle used doesn't work on java 17 def test(codeql, use_java_11, java, environment, check_diagnostics): check_diagnostics.redact += ["attributes.java_vendor"] - check_diagnostics.replacements = [("11\\.[0-9]+\\.[0-9]+", "11")] + # the JDK build provided by the CI runner image may report any number of version components + # (e.g. `11.0.32` or `11.0.32.1`), so keep only the feature version + check_diagnostics.replacements = [(r'"11(\.[0-9]+)+"', '"11"')] gradle_override_dir = pathlib.Path(tempfile.mkdtemp()) if runs_on.windows: (gradle_override_dir / "gradle.bat").write_text("@echo off\nexit /b 2\n") diff --git a/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected index 09429027c5d6..ff2c056ff962 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected +++ b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected @@ -1,5 +1,5 @@ { - "markdownMessage": "The Kotlin version installed (`999.999.999`) is too recent for this version of CodeQL. Install a version lower than 2.4.20.", + "markdownMessage": "The Kotlin version installed (`999.999.999`) is too recent for this version of CodeQL. Install a version lower than 2.4.30.", "severity": "error", "source": { "extractorName": "java", diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 13a7b5b7961b..a603b244a9a7 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,20 @@ +## 9.3.3 + +### Minor Analysis Improvements + +* The queries `java/ssrf` and `java/unvalidated-url-redirection` recognize case-insensitive comparisons of `URI.getHost()` with fixed string allowlist entries, as well as equality and case-insensitive comparisons when the host is stored in a local variable. + +## 9.3.2 + +No user-facing changes. + +## 9.3.1 + +### Minor Analysis Improvements + +* Support for Kotlin 2.4.20 has been added. +* Fixed an issue where `Foo::class.java` arguments were dropped during extraction under the Kotlin K2 compiler, which could cause false positives in queries such as `java/android/implicit-pendingintents`. + ## 9.3.0 ### New Features diff --git a/java/ql/lib/change-notes/released/9.3.1.md b/java/ql/lib/change-notes/released/9.3.1.md new file mode 100644 index 000000000000..322934436309 --- /dev/null +++ b/java/ql/lib/change-notes/released/9.3.1.md @@ -0,0 +1,6 @@ +## 9.3.1 + +### Minor Analysis Improvements + +* Support for Kotlin 2.4.20 has been added. +* Fixed an issue where `Foo::class.java` arguments were dropped during extraction under the Kotlin K2 compiler, which could cause false positives in queries such as `java/android/implicit-pendingintents`. diff --git a/java/ql/lib/change-notes/released/9.3.2.md b/java/ql/lib/change-notes/released/9.3.2.md new file mode 100644 index 000000000000..efa8cf58c1b5 --- /dev/null +++ b/java/ql/lib/change-notes/released/9.3.2.md @@ -0,0 +1,3 @@ +## 9.3.2 + +No user-facing changes. diff --git a/java/ql/lib/change-notes/released/9.3.3.md b/java/ql/lib/change-notes/released/9.3.3.md new file mode 100644 index 000000000000..09dd4ef62936 --- /dev/null +++ b/java/ql/lib/change-notes/released/9.3.3.md @@ -0,0 +1,5 @@ +## 9.3.3 + +### Minor Analysis Improvements + +* The queries `java/ssrf` and `java/unvalidated-url-redirection` recognize case-insensitive comparisons of `URI.getHost()` with fixed string allowlist entries, as well as equality and case-insensitive comparisons when the host is stored in a local variable. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index a806354ee450..0f0b41ca1bdc 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 9.3.0 +lastReleaseVersion: 9.3.3 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 8ad5c1a00f05..8f78c1d31973 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 9.3.0 +version: 9.3.3 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll index 1281afc52728..dce6ba6afd03 100644 --- a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll +++ b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll @@ -70,6 +70,8 @@ private module Ast implements AstSig { class Stmt = J::Stmt; + class LabeledStmt = J::LabeledStmt; + class Expr = J::Expr; class BlockStmt = J::BlockStmt; @@ -543,15 +545,8 @@ private module Input implements InputSig1, InputSig2 { } } - private Label getLabelOfLoop(Stmt s) { - exists(LabeledStmt l | s = l.getStmt() | - result = TJavaLabel(l.getLabel()) or - result = getLabelOfLoop(l) - ) - } - predicate hasLabel(Ast::AstNode n, Label l) { - l = getLabelOfLoop(n) + l = TJavaLabel(n.(LabeledStmt).getLabel()) or l = TJavaLabel(n.(BreakStmt).getLabel()) or @@ -616,12 +611,7 @@ private module Input implements InputSig1, InputSig2 { * flow continuing at `n`. */ predicate endAbruptCompletion(Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c) { - exists(LabeledStmt lbl | - ast = lbl.getStmt() and - n.isAfter(lbl) and - c.getSuccessorType() instanceof BreakSuccessor and - c.hasLabel(TJavaLabel(lbl.getLabel())) - ) + none() } /** Holds if there is a local non-abrupt step from `n1` to `n2`. */ diff --git a/java/ql/lib/semmle/code/java/security/RequestForgery.qll b/java/ql/lib/semmle/code/java/security/RequestForgery.qll index 489b45dffa2c..e1c77a721535 100644 --- a/java/ql/lib/semmle/code/java/security/RequestForgery.qll +++ b/java/ql/lib/semmle/code/java/security/RequestForgery.qll @@ -13,6 +13,7 @@ import semmle.code.java.frameworks.Properties private import semmle.code.java.controlflow.Guards private import semmle.code.java.dataflow.StringPrefixes private import semmle.code.java.dataflow.ExternalFlow +private import semmle.code.java.dataflow.SSA private import semmle.code.java.security.Sanitizers /** @@ -122,11 +123,21 @@ private class ExternalRequestForgerySanitizer extends RequestForgerySanitizer { ExternalRequestForgerySanitizer() { barrierNode(this, "request-forgery") } } -/** - * A comparison on the host of a url, that is a sanitizer for URL redirects. - * E.g. `"example.org".equals(url.getHost())"` - */ +/** Gets a host read, following local assignments with a single explicit SSA definition. */ +private MethodCall getCheckedHost(Expr checked) { + result = checked.getUnderlyingExpr() and + result.getMethod().hasQualifiedName("java.net", "URI", "getHost") + or + exists(SsaExplicitWrite def | + checked.getUnderlyingExpr().(VarRead).getVariable() instanceof LocalScopeVariable and + def.getARead() = checked.getUnderlyingExpr() and + result = getCheckedHost(def.getValue()) + ) +} + +/** Holds if a comparison validates the host of a URI. */ private predicate isHostComparisonSanitizer(Guard guard, Expr e, boolean branch) { + // Direct equality checks also accept nonconstant comparison operands. guard = any(MethodCall equalsCall | equalsCall.getMethod().getName() = "equals" and @@ -137,6 +148,21 @@ private predicate isHostComparisonSanitizer(Guard guard, Expr e, boolean branch) e = hostCall.getQualifier() ) ) + or + exists(MethodCall comparison, Expr checked, Expr allowed | + guard = comparison and + comparison.getMethod().getDeclaringType() instanceof TypeString and + comparison.getMethod().hasName(["equals", "equalsIgnoreCase"]) and + branch = true and + ( + checked = comparison.getQualifier() and allowed = comparison.getArgument(0) + or + checked = comparison.getArgument(0) and allowed = comparison.getQualifier() + ) and + // New cases require a fixed allowlist entry, not another untrusted value. + exists(allowed.(CompileTimeConstantExpr).getStringValue()) and + e = getCheckedHost(checked).getQualifier() + ) } /** diff --git a/java/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/java/ql/lib/utils/test/InlineExpectationsTestQuery.ql index b0360dfecd8d..72cbb9c4148a 100644 --- a/java/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/java/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import java private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/java/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/java/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index 446b6a544c34..9a51a70eda60 100644 --- a/java/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/java/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -35,4 +35,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = J::Location; + + string getRelativeUrl(Location location) { + exists(J::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 0bb36a39ed24..5bc9f1648046 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.11.13 + +No user-facing changes. + +## 1.11.12 + +No user-facing changes. + +## 1.11.11 + +No user-facing changes. + ## 1.11.10 No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.11.11.md b/java/ql/src/change-notes/released/1.11.11.md new file mode 100644 index 000000000000..e7597eb25e2c --- /dev/null +++ b/java/ql/src/change-notes/released/1.11.11.md @@ -0,0 +1,3 @@ +## 1.11.11 + +No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.11.12.md b/java/ql/src/change-notes/released/1.11.12.md new file mode 100644 index 000000000000..aaecc6fda7e7 --- /dev/null +++ b/java/ql/src/change-notes/released/1.11.12.md @@ -0,0 +1,3 @@ +## 1.11.12 + +No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.11.13.md b/java/ql/src/change-notes/released/1.11.13.md new file mode 100644 index 000000000000..f2d174ab8dc8 --- /dev/null +++ b/java/ql/src/change-notes/released/1.11.13.md @@ -0,0 +1,3 @@ +## 1.11.13 + +No user-facing changes. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index ae9cd379d8c8..539b3977389e 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.11.10 +lastReleaseVersion: 1.11.13 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 9c3cffa047ca..b06718dbdd5d 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.11.10 +version: 1.11.13 groups: - java - queries diff --git a/java/ql/test-kotlin1/TestUtilities/internal/InlineExpectationsTestImpl.qll b/java/ql/test-kotlin1/TestUtilities/internal/InlineExpectationsTestImpl.qll index cd62fdb757e0..646501a84c91 100644 --- a/java/ql/test-kotlin1/TestUtilities/internal/InlineExpectationsTestImpl.qll +++ b/java/ql/test-kotlin1/TestUtilities/internal/InlineExpectationsTestImpl.qll @@ -32,4 +32,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = J::Location; + + string getRelativeUrl(Location location) { + exists(J::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/java/ql/test-kotlin1/library-tests/kclass-java-arg/test.expected b/java/ql/test-kotlin1/library-tests/kclass-java-arg/test.expected new file mode 100644 index 000000000000..7410c1676f77 --- /dev/null +++ b/java/ql/test-kotlin1/library-tests/kclass-java-arg/test.expected @@ -0,0 +1 @@ +| consume | Class | diff --git a/java/ql/test-kotlin1/library-tests/kclass-java-arg/test.kt b/java/ql/test-kotlin1/library-tests/kclass-java-arg/test.kt new file mode 100644 index 000000000000..c3bfc80fd03e --- /dev/null +++ b/java/ql/test-kotlin1/library-tests/kclass-java-arg/test.kt @@ -0,0 +1,10 @@ +class Target + +class KClassJavaArg { + fun consume(c: Class<*>) {} + + fun test() { + // `Target::class.java` must be extracted as the argument to `consume`. + consume(Target::class.java) + } +} diff --git a/java/ql/test-kotlin1/library-tests/kclass-java-arg/test.ql b/java/ql/test-kotlin1/library-tests/kclass-java-arg/test.ql new file mode 100644 index 000000000000..e4b98d76d1cd --- /dev/null +++ b/java/ql/test-kotlin1/library-tests/kclass-java-arg/test.ql @@ -0,0 +1,5 @@ +import java + +from MethodCall mc, Argument arg +where mc.getMethod().hasName("consume") and arg = mc.getAnArgument() +select mc.getMethod().getName(), arg.getType().getName() diff --git a/java/ql/test-kotlin2/TestUtilities/internal/InlineExpectationsTestImpl.qll b/java/ql/test-kotlin2/TestUtilities/internal/InlineExpectationsTestImpl.qll index cd62fdb757e0..646501a84c91 100644 --- a/java/ql/test-kotlin2/TestUtilities/internal/InlineExpectationsTestImpl.qll +++ b/java/ql/test-kotlin2/TestUtilities/internal/InlineExpectationsTestImpl.qll @@ -32,4 +32,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = J::Location; + + string getRelativeUrl(Location location) { + exists(J::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/java/ql/test-kotlin2/library-tests/kclass-java-arg/test.expected b/java/ql/test-kotlin2/library-tests/kclass-java-arg/test.expected new file mode 100644 index 000000000000..7410c1676f77 --- /dev/null +++ b/java/ql/test-kotlin2/library-tests/kclass-java-arg/test.expected @@ -0,0 +1 @@ +| consume | Class | diff --git a/java/ql/test-kotlin2/library-tests/kclass-java-arg/test.kt b/java/ql/test-kotlin2/library-tests/kclass-java-arg/test.kt new file mode 100644 index 000000000000..c3bfc80fd03e --- /dev/null +++ b/java/ql/test-kotlin2/library-tests/kclass-java-arg/test.kt @@ -0,0 +1,10 @@ +class Target + +class KClassJavaArg { + fun consume(c: Class<*>) {} + + fun test() { + // `Target::class.java` must be extracted as the argument to `consume`. + consume(Target::class.java) + } +} diff --git a/java/ql/test-kotlin2/library-tests/kclass-java-arg/test.ql b/java/ql/test-kotlin2/library-tests/kclass-java-arg/test.ql new file mode 100644 index 000000000000..e4b98d76d1cd --- /dev/null +++ b/java/ql/test-kotlin2/library-tests/kclass-java-arg/test.ql @@ -0,0 +1,5 @@ +import java + +from MethodCall mc, Argument arg +where mc.getMethod().hasName("consume") and arg = mc.getAnArgument() +select mc.getMethod().getName(), arg.getType().getName() diff --git a/java/ql/test/query-tests/security/CWE-601/semmle/tests/HostComparisonRedirect.java b/java/ql/test/query-tests/security/CWE-601/semmle/tests/HostComparisonRedirect.java new file mode 100644 index 000000000000..edc5638bec26 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-601/semmle/tests/HostComparisonRedirect.java @@ -0,0 +1,248 @@ +import java.net.URI; +import java.util.Arrays; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class HostComparisonRedirect { + public void unguarded(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + response.sendRedirect(uri.toString()); // $ Alert + } + + public void directEquals(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + if ("example.com".equals(uri.getHost())) { + response.sendRedirect(uri.toString()); + } + } + + public void directEqualsIgnoreCase(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + if ("example.com".equalsIgnoreCase(uri.getHost())) { + response.sendRedirect(uri.toString()); + } + } + + public void reversedEqualsIgnoreCase(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + if (uri.getHost().equalsIgnoreCase("example.com")) { + response.sendRedirect(uri.toString()); + } + } + + public void localEquals(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + if ("example.com".equals(host)) { + response.sendRedirect(uri.toString()); + } + } + + public void localEqualsIgnoreCase(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + if ("example.com".equalsIgnoreCase(host)) { + response.sendRedirect(uri.toString()); + } + } + + public void streamEquals(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ SPURIOUS: Source + if (Arrays.stream(new String[]{"example.com"}).anyMatch(uri.getHost()::equals)) { + response.sendRedirect(uri.toString()); // $ SPURIOUS: Alert + } + } + + public void reportedStreamHelper(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ SPURIOUS: Source + if (isAllowedStream(uri.getHost(), "example.com")) { + response.sendRedirect(uri.toString()); // $ SPURIOUS: Alert + } + } + + private static boolean isAllowedStream(String host, String... allowedHosts) { + return Arrays.stream(allowedHosts).anyMatch(host::equalsIgnoreCase); + } + + public void reportedLoopHelper(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ SPURIOUS: Source + if (isAllowedLoop(uri.getHost(), "example.com")) { + response.sendRedirect(uri.toString()); // $ SPURIOUS: Alert + } + } + + private static boolean isAllowedLoop(String host, String... allowedHosts) { + for (String allowed : allowedHosts) { + if (allowed.equalsIgnoreCase(host)) { + return true; + } + } + return false; + } + + public void wrongBranch(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + if (!"example.com".equals(uri.getHost())) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + + public void differentUri(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI checked = new URI(request.getParameter("checked")); + URI used = new URI(request.getParameter("url")); // $ Source + if ("example.com".equals(checked.getHost())) { + response.sendRedirect(used.toString()); // $ Alert + } + } + + public void constantUrl(HttpServletResponse response) throws Exception { + response.sendRedirect("https://example.com/"); + } + + public void caseInsensitiveWrongBranch(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + if (!"example.com".equalsIgnoreCase(uri.getHost())) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + + public void caseInsensitiveDifferentUri(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI checked = new URI(request.getParameter("checked")); + URI used = new URI(request.getParameter("url")); // $ Source + if ("example.com".equalsIgnoreCase(checked.getHost())) { + response.sendRedirect(used.toString()); // $ Alert + } + } + + public void reassignedHost(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + String host = uri.getHost(); + host = "example.com"; + if ("example.com".equalsIgnoreCase(host)) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + + public void conditionallyReassignedHost(HttpServletRequest request, HttpServletResponse response, boolean skip) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + String host = uri.getHost(); + if (skip) { + host = "example.com"; + } + if ("example.com".equalsIgnoreCase(host)) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + + public void reassignedUri(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI("https://example.com/"); + String host = uri.getHost(); + uri = new URI(request.getParameter("url")); // $ Source + if ("example.com".equalsIgnoreCase(host)) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + + public void untrustedComparison(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + if (request.getParameter("allowed").equalsIgnoreCase(uri.getHost())) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + + public void unrelatedComparison(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + if (new FakeComparison().equalsIgnoreCase(uri.getHost())) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + + private static class FakeComparison { + boolean equalsIgnoreCase(String host) { + return true; + } + } + + public void aliasChain(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + String alias = host; + String secondAlias = alias; + if ("example.com".equalsIgnoreCase(secondAlias)) { + response.sendRedirect(uri.toString()); + } + } + + public void finallyOverwrite(HttpServletRequest request, HttpServletResponse response, boolean skip) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + String host = uri.getHost(); + try { + if (skip) return; + host = "example.com"; + } finally { + if ("example.com".equalsIgnoreCase(host)) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + } + + public void rejectionReturns(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + if (!"example.com".equalsIgnoreCase(host)) return; + response.sendRedirect(uri.toString()); + } + + private static final String ALLOWED_HOST = "example.com"; + + public void constantAllowlistField(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + if (ALLOWED_HOST.equalsIgnoreCase(host)) { + response.sendRedirect(uri.toString()); + } + } + + public void orBypass(HttpServletRequest request, HttpServletResponse response, boolean skip) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + String host = uri.getHost(); + if ("example.com".equalsIgnoreCase(host) || skip) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + + public void assignmentCast(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + Object value = uri.getHost(); + String host = (String) value; + if ("example.com".equalsIgnoreCase(host)) { + response.sendRedirect(uri.toString()); + } + } + + public void comparisonCast(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); + Object host = uri.getHost(); + if ("example.com".equalsIgnoreCase((String) host)) { + response.sendRedirect(uri.toString()); + } + } + + public void castHostOverwrite(HttpServletRequest request, HttpServletResponse response) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + Object host = uri.getHost(); + host = "example.com"; + if ("example.com".equalsIgnoreCase((String) host)) { + response.sendRedirect(uri.toString()); // $ Alert + } + } + + public void castHostConditionalOverwrite(HttpServletRequest request, HttpServletResponse response, boolean skip) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + Object host = uri.getHost(); + if (skip) host = "example.com"; + if ("example.com".equalsIgnoreCase((String) host)) { + response.sendRedirect(uri.toString()); // $ Alert + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected index 4e311cdd5609..7a16ee15c617 100644 --- a/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected +++ b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected @@ -1,4 +1,21 @@ #select +| HostComparisonRedirect.java:9:31:9:44 | toString(...) | HostComparisonRedirect.java:8:27:8:53 | getParameter(...) : String | HostComparisonRedirect.java:9:31:9:44 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:8:27:8:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:52:35:52:48 | toString(...) | HostComparisonRedirect.java:50:27:50:53 | getParameter(...) : String | HostComparisonRedirect.java:52:35:52:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:50:27:50:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:59:35:59:48 | toString(...) | HostComparisonRedirect.java:57:27:57:53 | getParameter(...) : String | HostComparisonRedirect.java:59:35:59:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:57:27:57:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:70:35:70:48 | toString(...) | HostComparisonRedirect.java:68:27:68:53 | getParameter(...) : String | HostComparisonRedirect.java:70:35:70:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:68:27:68:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:86:35:86:48 | toString(...) | HostComparisonRedirect.java:84:27:84:53 | getParameter(...) : String | HostComparisonRedirect.java:86:35:86:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:84:27:84:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:94:35:94:49 | toString(...) | HostComparisonRedirect.java:92:28:92:54 | getParameter(...) : String | HostComparisonRedirect.java:94:35:94:49 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:92:28:92:54 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:105:35:105:48 | toString(...) | HostComparisonRedirect.java:103:27:103:53 | getParameter(...) : String | HostComparisonRedirect.java:105:35:105:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:103:27:103:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:113:35:113:49 | toString(...) | HostComparisonRedirect.java:111:28:111:54 | getParameter(...) : String | HostComparisonRedirect.java:113:35:113:49 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:111:28:111:54 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:122:35:122:48 | toString(...) | HostComparisonRedirect.java:118:27:118:53 | getParameter(...) : String | HostComparisonRedirect.java:122:35:122:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:118:27:118:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:133:35:133:48 | toString(...) | HostComparisonRedirect.java:127:27:127:53 | getParameter(...) : String | HostComparisonRedirect.java:133:35:133:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:127:27:127:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:142:35:142:48 | toString(...) | HostComparisonRedirect.java:140:23:140:49 | getParameter(...) : String | HostComparisonRedirect.java:142:35:142:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:140:23:140:49 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:149:35:149:48 | toString(...) | HostComparisonRedirect.java:147:27:147:53 | getParameter(...) : String | HostComparisonRedirect.java:149:35:149:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:147:27:147:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:156:35:156:48 | toString(...) | HostComparisonRedirect.java:154:27:154:53 | getParameter(...) : String | HostComparisonRedirect.java:156:35:156:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:154:27:154:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:184:39:184:52 | toString(...) | HostComparisonRedirect.java:177:27:177:53 | getParameter(...) : String | HostComparisonRedirect.java:184:39:184:52 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:177:27:177:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:210:35:210:48 | toString(...) | HostComparisonRedirect.java:207:27:207:53 | getParameter(...) : String | HostComparisonRedirect.java:210:35:210:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:207:27:207:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:236:35:236:48 | toString(...) | HostComparisonRedirect.java:232:27:232:53 | getParameter(...) : String | HostComparisonRedirect.java:236:35:236:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:232:27:232:53 | getParameter(...) | user-provided value | +| HostComparisonRedirect.java:245:35:245:48 | toString(...) | HostComparisonRedirect.java:241:27:241:53 | getParameter(...) : String | HostComparisonRedirect.java:245:35:245:48 | toString(...) | Untrusted URL redirection depends on a $@. | HostComparisonRedirect.java:241:27:241:53 | getParameter(...) | user-provided value | | MicronautUrlRedirect.java:14:38:14:55 | create(...) | MicronautUrlRedirect.java:12:39:12:63 | target : String | MicronautUrlRedirect.java:14:38:14:55 | create(...) | Untrusted URL redirection depends on a $@. | MicronautUrlRedirect.java:12:39:12:63 | target | user-provided value | | MicronautUrlRedirect.java:28:47:28:64 | create(...) | MicronautUrlRedirect.java:27:45:27:69 | target : String | MicronautUrlRedirect.java:28:47:28:64 | create(...) | Untrusted URL redirection depends on a $@. | MicronautUrlRedirect.java:27:45:27:69 | target | user-provided value | | MicronautUrlRedirect.java:33:38:33:55 | create(...) | MicronautUrlRedirect.java:32:44:32:68 | target : String | MicronautUrlRedirect.java:33:38:33:55 | create(...) | Untrusted URL redirection depends on a $@. | MicronautUrlRedirect.java:32:44:32:68 | target | user-provided value | @@ -10,14 +27,65 @@ | UrlRedirect.java:42:43:42:72 | getParameter(...) | UrlRedirect.java:42:43:42:72 | getParameter(...) | UrlRedirect.java:42:43:42:72 | getParameter(...) | Untrusted URL redirection depends on a $@. | UrlRedirect.java:42:43:42:72 | getParameter(...) | user-provided value | | mad/Test.java:14:22:14:38 | (...)... | mad/Test.java:9:16:9:41 | getParameter(...) : String | mad/Test.java:14:22:14:38 | (...)... | Untrusted URL redirection depends on a $@. | mad/Test.java:9:16:9:41 | getParameter(...) | user-provided value | edges +| HostComparisonRedirect.java:8:19:8:54 | new URI(...) : URI | HostComparisonRedirect.java:9:31:9:33 | uri : URI | provenance | | +| HostComparisonRedirect.java:8:27:8:53 | getParameter(...) : String | HostComparisonRedirect.java:8:19:8:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:9:31:9:33 | uri : URI | HostComparisonRedirect.java:9:31:9:44 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:50:19:50:54 | new URI(...) : URI | HostComparisonRedirect.java:52:35:52:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:50:27:50:53 | getParameter(...) : String | HostComparisonRedirect.java:50:19:50:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:52:35:52:37 | uri : URI | HostComparisonRedirect.java:52:35:52:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:57:19:57:54 | new URI(...) : URI | HostComparisonRedirect.java:59:35:59:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:57:27:57:53 | getParameter(...) : String | HostComparisonRedirect.java:57:19:57:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:59:35:59:37 | uri : URI | HostComparisonRedirect.java:59:35:59:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:68:19:68:54 | new URI(...) : URI | HostComparisonRedirect.java:70:35:70:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:68:27:68:53 | getParameter(...) : String | HostComparisonRedirect.java:68:19:68:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:70:35:70:37 | uri : URI | HostComparisonRedirect.java:70:35:70:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:84:19:84:54 | new URI(...) : URI | HostComparisonRedirect.java:86:35:86:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:84:27:84:53 | getParameter(...) : String | HostComparisonRedirect.java:84:19:84:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:86:35:86:37 | uri : URI | HostComparisonRedirect.java:86:35:86:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:92:20:92:55 | new URI(...) : URI | HostComparisonRedirect.java:94:35:94:38 | used : URI | provenance | | +| HostComparisonRedirect.java:92:28:92:54 | getParameter(...) : String | HostComparisonRedirect.java:92:20:92:55 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:94:35:94:38 | used : URI | HostComparisonRedirect.java:94:35:94:49 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:103:19:103:54 | new URI(...) : URI | HostComparisonRedirect.java:105:35:105:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:103:27:103:53 | getParameter(...) : String | HostComparisonRedirect.java:103:19:103:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:105:35:105:37 | uri : URI | HostComparisonRedirect.java:105:35:105:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:111:20:111:55 | new URI(...) : URI | HostComparisonRedirect.java:113:35:113:38 | used : URI | provenance | | +| HostComparisonRedirect.java:111:28:111:54 | getParameter(...) : String | HostComparisonRedirect.java:111:20:111:55 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:113:35:113:38 | used : URI | HostComparisonRedirect.java:113:35:113:49 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:118:19:118:54 | new URI(...) : URI | HostComparisonRedirect.java:122:35:122:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:118:27:118:53 | getParameter(...) : String | HostComparisonRedirect.java:118:19:118:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:122:35:122:37 | uri : URI | HostComparisonRedirect.java:122:35:122:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:127:19:127:54 | new URI(...) : URI | HostComparisonRedirect.java:133:35:133:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:127:27:127:53 | getParameter(...) : String | HostComparisonRedirect.java:127:19:127:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:133:35:133:37 | uri : URI | HostComparisonRedirect.java:133:35:133:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:140:15:140:50 | new URI(...) : URI | HostComparisonRedirect.java:142:35:142:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:140:23:140:49 | getParameter(...) : String | HostComparisonRedirect.java:140:15:140:50 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:142:35:142:37 | uri : URI | HostComparisonRedirect.java:142:35:142:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:147:19:147:54 | new URI(...) : URI | HostComparisonRedirect.java:149:35:149:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:147:27:147:53 | getParameter(...) : String | HostComparisonRedirect.java:147:19:147:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:149:35:149:37 | uri : URI | HostComparisonRedirect.java:149:35:149:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:154:19:154:54 | new URI(...) : URI | HostComparisonRedirect.java:156:35:156:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:154:27:154:53 | getParameter(...) : String | HostComparisonRedirect.java:154:19:154:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:156:35:156:37 | uri : URI | HostComparisonRedirect.java:156:35:156:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:177:19:177:54 | new URI(...) : URI | HostComparisonRedirect.java:184:39:184:41 | uri : URI | provenance | | +| HostComparisonRedirect.java:177:27:177:53 | getParameter(...) : String | HostComparisonRedirect.java:177:19:177:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:184:39:184:41 | uri : URI | HostComparisonRedirect.java:184:39:184:52 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:207:19:207:54 | new URI(...) : URI | HostComparisonRedirect.java:210:35:210:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:207:27:207:53 | getParameter(...) : String | HostComparisonRedirect.java:207:19:207:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:210:35:210:37 | uri : URI | HostComparisonRedirect.java:210:35:210:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:232:19:232:54 | new URI(...) : URI | HostComparisonRedirect.java:236:35:236:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:232:27:232:53 | getParameter(...) : String | HostComparisonRedirect.java:232:19:232:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:236:35:236:37 | uri : URI | HostComparisonRedirect.java:236:35:236:48 | toString(...) | provenance | MaD:10 | +| HostComparisonRedirect.java:241:19:241:54 | new URI(...) : URI | HostComparisonRedirect.java:245:35:245:37 | uri : URI | provenance | | +| HostComparisonRedirect.java:241:27:241:53 | getParameter(...) : String | HostComparisonRedirect.java:241:19:241:54 | new URI(...) : URI | provenance | Src:MaD:6 MaD:8 | +| HostComparisonRedirect.java:245:35:245:37 | uri : URI | HostComparisonRedirect.java:245:35:245:48 | toString(...) | provenance | MaD:10 | | MicronautUrlRedirect.java:12:39:12:63 | target : String | MicronautUrlRedirect.java:14:49:14:54 | target : String | provenance | | -| MicronautUrlRedirect.java:14:49:14:54 | target : String | MicronautUrlRedirect.java:14:38:14:55 | create(...) | provenance | MaD:8 Sink:MaD:2 | +| MicronautUrlRedirect.java:14:49:14:54 | target : String | MicronautUrlRedirect.java:14:38:14:55 | create(...) | provenance | MaD:9 Sink:MaD:2 | | MicronautUrlRedirect.java:27:45:27:69 | target : String | MicronautUrlRedirect.java:28:58:28:63 | target : String | provenance | | -| MicronautUrlRedirect.java:28:58:28:63 | target : String | MicronautUrlRedirect.java:28:47:28:64 | create(...) | provenance | MaD:8 Sink:MaD:1 | +| MicronautUrlRedirect.java:28:58:28:63 | target : String | MicronautUrlRedirect.java:28:47:28:64 | create(...) | provenance | MaD:9 Sink:MaD:1 | | MicronautUrlRedirect.java:32:44:32:68 | target : String | MicronautUrlRedirect.java:33:49:33:54 | target : String | provenance | | -| MicronautUrlRedirect.java:33:49:33:54 | target : String | MicronautUrlRedirect.java:33:38:33:55 | create(...) | provenance | MaD:8 Sink:MaD:3 | +| MicronautUrlRedirect.java:33:49:33:54 | target : String | MicronautUrlRedirect.java:33:38:33:55 | create(...) | provenance | MaD:9 Sink:MaD:3 | | MicronautUrlRedirect.java:37:45:37:69 | target : String | MicronautUrlRedirect.java:38:58:38:63 | target : String | provenance | | -| MicronautUrlRedirect.java:38:58:38:63 | target : String | MicronautUrlRedirect.java:38:47:38:64 | create(...) | provenance | MaD:8 Sink:MaD:4 | +| MicronautUrlRedirect.java:38:58:38:63 | target : String | MicronautUrlRedirect.java:38:47:38:64 | create(...) | provenance | MaD:9 Sink:MaD:4 | | UrlRedirect.java:32:37:32:66 | getParameter(...) : String | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | provenance | Src:MaD:6 MaD:7 | | UrlRedirect.java:32:37:32:66 | getParameter(...) : String | UrlRedirect.java:45:28:45:39 | input : String | provenance | Src:MaD:6 | | UrlRedirect.java:45:28:45:39 | input : String | UrlRedirect.java:46:10:46:14 | input : String | provenance | | @@ -32,8 +100,78 @@ models | 5 | Sink: org.kohsuke.stapler; HttpResponses; true; redirectTo; (String); ; Argument[0]; url-redirection; ai-manual | | 6 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | | 7 | Summary: java.lang; String; false; replaceAll; ; ; Argument[this]; ReturnValue; taint; manual | -| 8 | Summary: java.net; URI; false; create; ; ; Argument[0]; ReturnValue; taint; manual | +| 8 | Summary: java.net; URI; false; URI; (String); ; Argument[0]; Argument[this]; taint; manual | +| 9 | Summary: java.net; URI; false; create; ; ; Argument[0]; ReturnValue; taint; manual | +| 10 | Summary: java.net; URI; false; toString; ; ; Argument[this]; ReturnValue; taint; manual | nodes +| HostComparisonRedirect.java:8:19:8:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:8:27:8:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:9:31:9:33 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:9:31:9:44 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:50:19:50:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:50:27:50:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:52:35:52:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:52:35:52:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:57:19:57:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:57:27:57:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:59:35:59:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:59:35:59:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:68:19:68:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:68:27:68:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:70:35:70:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:70:35:70:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:84:19:84:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:84:27:84:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:86:35:86:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:86:35:86:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:92:20:92:55 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:92:28:92:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:94:35:94:38 | used : URI | semmle.label | used : URI | +| HostComparisonRedirect.java:94:35:94:49 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:103:19:103:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:103:27:103:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:105:35:105:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:105:35:105:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:111:20:111:55 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:111:28:111:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:113:35:113:38 | used : URI | semmle.label | used : URI | +| HostComparisonRedirect.java:113:35:113:49 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:118:19:118:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:118:27:118:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:122:35:122:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:122:35:122:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:127:19:127:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:127:27:127:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:133:35:133:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:133:35:133:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:140:15:140:50 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:140:23:140:49 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:142:35:142:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:142:35:142:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:147:19:147:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:147:27:147:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:149:35:149:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:149:35:149:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:154:19:154:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:154:27:154:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:156:35:156:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:156:35:156:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:177:19:177:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:177:27:177:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:184:39:184:41 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:184:39:184:52 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:207:19:207:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:207:27:207:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:210:35:210:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:210:35:210:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:232:19:232:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:232:27:232:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:236:35:236:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:236:35:236:48 | toString(...) | semmle.label | toString(...) | +| HostComparisonRedirect.java:241:19:241:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparisonRedirect.java:241:27:241:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparisonRedirect.java:245:35:245:37 | uri : URI | semmle.label | uri : URI | +| HostComparisonRedirect.java:245:35:245:48 | toString(...) | semmle.label | toString(...) | | MicronautUrlRedirect.java:12:39:12:63 | target : String | semmle.label | target : String | | MicronautUrlRedirect.java:14:38:14:55 | create(...) | semmle.label | create(...) | | MicronautUrlRedirect.java:14:49:14:54 | target : String | semmle.label | target : String | diff --git a/java/ql/test/query-tests/security/CWE-918/HostComparison.java b/java/ql/test/query-tests/security/CWE-918/HostComparison.java new file mode 100644 index 000000000000..163a74d1d8ae --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-918/HostComparison.java @@ -0,0 +1,247 @@ +import java.net.URI; +import java.util.Arrays; +import javax.servlet.http.HttpServletRequest; + +public class HostComparison { + public void unguarded(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + uri.toURL().openConnection(); // $ Alert + } + + public void directEquals(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + if ("example.com".equals(uri.getHost())) { + uri.toURL().openConnection(); + } + } + + public void directEqualsIgnoreCase(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + if ("example.com".equalsIgnoreCase(uri.getHost())) { + uri.toURL().openConnection(); + } + } + + public void reversedEqualsIgnoreCase(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + if (uri.getHost().equalsIgnoreCase("example.com")) { + uri.toURL().openConnection(); + } + } + + public void localEquals(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + if ("example.com".equals(host)) { + uri.toURL().openConnection(); + } + } + + public void localEqualsIgnoreCase(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + if ("example.com".equalsIgnoreCase(host)) { + uri.toURL().openConnection(); + } + } + + public void streamEquals(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ SPURIOUS: Source + if (Arrays.stream(new String[]{"example.com"}).anyMatch(uri.getHost()::equals)) { + uri.toURL().openConnection(); // $ SPURIOUS: Alert + } + } + + public void reportedStreamHelper(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ SPURIOUS: Source + if (isAllowedStream(uri.getHost(), "example.com")) { + uri.toURL().openConnection(); // $ SPURIOUS: Alert + } + } + + private static boolean isAllowedStream(String host, String... allowedHosts) { + return Arrays.stream(allowedHosts).anyMatch(host::equalsIgnoreCase); + } + + public void reportedLoopHelper(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ SPURIOUS: Source + if (isAllowedLoop(uri.getHost(), "example.com")) { + uri.toURL().openConnection(); // $ SPURIOUS: Alert + } + } + + private static boolean isAllowedLoop(String host, String... allowedHosts) { + for (String allowed : allowedHosts) { + if (allowed.equalsIgnoreCase(host)) { + return true; + } + } + return false; + } + + public void wrongBranch(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + if (!"example.com".equals(uri.getHost())) { + uri.toURL().openConnection(); // $ Alert + } + } + + public void differentUri(HttpServletRequest request) throws Exception { + URI checked = new URI(request.getParameter("checked")); + URI used = new URI(request.getParameter("url")); // $ Source + if ("example.com".equals(checked.getHost())) { + used.toURL().openConnection(); // $ Alert + } + } + + public void constantUrl() throws Exception { + new URI("https://example.com/").toURL().openConnection(); + } + + public void caseInsensitiveWrongBranch(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + if (!"example.com".equalsIgnoreCase(uri.getHost())) { + uri.toURL().openConnection(); // $ Alert + } + } + + public void caseInsensitiveDifferentUri(HttpServletRequest request) throws Exception { + URI checked = new URI(request.getParameter("checked")); + URI used = new URI(request.getParameter("url")); // $ Source + if ("example.com".equalsIgnoreCase(checked.getHost())) { + used.toURL().openConnection(); // $ Alert + } + } + + public void reassignedHost(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + String host = uri.getHost(); + host = "example.com"; + if ("example.com".equalsIgnoreCase(host)) { + uri.toURL().openConnection(); // $ Alert + } + } + + public void conditionallyReassignedHost(HttpServletRequest request, boolean skip) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + String host = uri.getHost(); + if (skip) { + host = "example.com"; + } + if ("example.com".equalsIgnoreCase(host)) { + uri.toURL().openConnection(); // $ Alert + } + } + + public void reassignedUri(HttpServletRequest request) throws Exception { + URI uri = new URI("https://example.com/"); + String host = uri.getHost(); + uri = new URI(request.getParameter("url")); // $ Source + if ("example.com".equalsIgnoreCase(host)) { + uri.toURL().openConnection(); // $ Alert + } + } + + public void untrustedComparison(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + if (request.getParameter("allowed").equalsIgnoreCase(uri.getHost())) { + uri.toURL().openConnection(); // $ Alert + } + } + + public void unrelatedComparison(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + if (new FakeComparison().equalsIgnoreCase(uri.getHost())) { + uri.toURL().openConnection(); // $ Alert + } + } + + private static class FakeComparison { + boolean equalsIgnoreCase(String host) { + return true; + } + } + + public void aliasChain(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + String alias = host; + String secondAlias = alias; + if ("example.com".equalsIgnoreCase(secondAlias)) { + uri.toURL().openConnection(); + } + } + + public void finallyOverwrite(HttpServletRequest request, boolean skip) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + String host = uri.getHost(); + try { + if (skip) return; + host = "example.com"; + } finally { + if ("example.com".equalsIgnoreCase(host)) { + uri.toURL().openConnection(); // $ Alert + } + } + } + + public void rejectionReturns(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + if (!"example.com".equalsIgnoreCase(host)) return; + uri.toURL().openConnection(); + } + + private static final String ALLOWED_HOST = "example.com"; + + public void constantAllowlistField(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + String host = uri.getHost(); + if (ALLOWED_HOST.equalsIgnoreCase(host)) { + uri.toURL().openConnection(); + } + } + + public void orBypass(HttpServletRequest request, boolean skip) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + String host = uri.getHost(); + if ("example.com".equalsIgnoreCase(host) || skip) { + uri.toURL().openConnection(); // $ Alert + } + } + + public void assignmentCast(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + Object value = uri.getHost(); + String host = (String) value; + if ("example.com".equalsIgnoreCase(host)) { + uri.toURL().openConnection(); + } + } + + public void comparisonCast(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); + Object host = uri.getHost(); + if ("example.com".equalsIgnoreCase((String) host)) { + uri.toURL().openConnection(); + } + } + + public void castHostOverwrite(HttpServletRequest request) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + Object host = uri.getHost(); + host = "example.com"; + if ("example.com".equalsIgnoreCase((String) host)) { + uri.toURL().openConnection(); // $ Alert + } + } + + public void castHostConditionalOverwrite(HttpServletRequest request, boolean skip) throws Exception { + URI uri = new URI(request.getParameter("url")); // $ Source + Object host = uri.getHost(); + if (skip) host = "example.com"; + if ("example.com".equalsIgnoreCase((String) host)) { + uri.toURL().openConnection(); // $ Alert + } + } +} 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 6cb07a2dee4a..3aaa32970e6d 100644 --- a/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected +++ b/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected @@ -210,6 +210,23 @@ | 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 | +| HostComparison.java:8:9:8:19 | toURL(...) | HostComparison.java:7:27:7:53 | getParameter(...) : String | HostComparison.java:8:9:8:19 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:7:27:7:53 | getParameter(...) | user-provided value | +| HostComparison.java:51:13:51:23 | toURL(...) | HostComparison.java:49:27:49:53 | getParameter(...) : String | HostComparison.java:51:13:51:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:49:27:49:53 | getParameter(...) | user-provided value | +| HostComparison.java:58:13:58:23 | toURL(...) | HostComparison.java:56:27:56:53 | getParameter(...) : String | HostComparison.java:58:13:58:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:56:27:56:53 | getParameter(...) | user-provided value | +| HostComparison.java:69:13:69:23 | toURL(...) | HostComparison.java:67:27:67:53 | getParameter(...) : String | HostComparison.java:69:13:69:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:67:27:67:53 | getParameter(...) | user-provided value | +| HostComparison.java:85:13:85:23 | toURL(...) | HostComparison.java:83:27:83:53 | getParameter(...) : String | HostComparison.java:85:13:85:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:83:27:83:53 | getParameter(...) | user-provided value | +| HostComparison.java:93:13:93:24 | toURL(...) | HostComparison.java:91:28:91:54 | getParameter(...) : String | HostComparison.java:93:13:93:24 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:91:28:91:54 | getParameter(...) | user-provided value | +| HostComparison.java:104:13:104:23 | toURL(...) | HostComparison.java:102:27:102:53 | getParameter(...) : String | HostComparison.java:104:13:104:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:102:27:102:53 | getParameter(...) | user-provided value | +| HostComparison.java:112:13:112:24 | toURL(...) | HostComparison.java:110:28:110:54 | getParameter(...) : String | HostComparison.java:112:13:112:24 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:110:28:110:54 | getParameter(...) | user-provided value | +| HostComparison.java:121:13:121:23 | toURL(...) | HostComparison.java:117:27:117:53 | getParameter(...) : String | HostComparison.java:121:13:121:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:117:27:117:53 | getParameter(...) | user-provided value | +| HostComparison.java:132:13:132:23 | toURL(...) | HostComparison.java:126:27:126:53 | getParameter(...) : String | HostComparison.java:132:13:132:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:126:27:126:53 | getParameter(...) | user-provided value | +| HostComparison.java:141:13:141:23 | toURL(...) | HostComparison.java:139:23:139:49 | getParameter(...) : String | HostComparison.java:141:13:141:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:139:23:139:49 | getParameter(...) | user-provided value | +| HostComparison.java:148:13:148:23 | toURL(...) | HostComparison.java:146:27:146:53 | getParameter(...) : String | HostComparison.java:148:13:148:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:146:27:146:53 | getParameter(...) | user-provided value | +| HostComparison.java:155:13:155:23 | toURL(...) | HostComparison.java:153:27:153:53 | getParameter(...) : String | HostComparison.java:155:13:155:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:153:27:153:53 | getParameter(...) | user-provided value | +| HostComparison.java:183:17:183:27 | toURL(...) | HostComparison.java:176:27:176:53 | getParameter(...) : String | HostComparison.java:183:17:183:27 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:176:27:176:53 | getParameter(...) | user-provided value | +| HostComparison.java:209:13:209:23 | toURL(...) | HostComparison.java:206:27:206:53 | getParameter(...) : String | HostComparison.java:209:13:209:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:206:27:206:53 | getParameter(...) | user-provided value | +| HostComparison.java:235:13:235:23 | toURL(...) | HostComparison.java:231:27:231:53 | getParameter(...) : String | HostComparison.java:235:13:235:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:231:27:231:53 | getParameter(...) | user-provided value | +| HostComparison.java:244:13:244:23 | toURL(...) | HostComparison.java:240:27:240:53 | getParameter(...) : String | HostComparison.java:244:13:244:23 | toURL(...) | Potential server-side request forgery due to a $@. | HostComparison.java:240:27:240:53 | 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 | @@ -716,6 +733,74 @@ edges | ApacheHttpSSRFVersion5.java:376:29:376:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:385:50:385:53 | host | provenance | Sink:MaD:206 | | ApacheHttpSSRFVersion5.java:376:29:376:50 | new HttpHost(...) : HttpHost | ApacheHttpSSRFVersion5.java:387:44:387:47 | host | provenance | Sink:MaD:208 | | ApacheHttpSSRFVersion5.java:376:42:376:49 | hostSink : String | ApacheHttpSSRFVersion5.java:376:29:376:50 | new HttpHost(...) : HttpHost | provenance | MaD:315 | +| HostComparison.java:7:19:7:54 | new URI(...) : URI | HostComparison.java:8:9:8:11 | uri : URI | provenance | | +| HostComparison.java:7:27:7:53 | getParameter(...) : String | HostComparison.java:7:19:7:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:7:27:7:53 | getParameter(...) : String | HostComparison.java:7:19:7:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:8:9:8:11 | uri : URI | HostComparison.java:8:9:8:19 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:49:19:49:54 | new URI(...) : URI | HostComparison.java:51:13:51:15 | uri : URI | provenance | | +| HostComparison.java:49:27:49:53 | getParameter(...) : String | HostComparison.java:49:19:49:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:49:27:49:53 | getParameter(...) : String | HostComparison.java:49:19:49:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:51:13:51:15 | uri : URI | HostComparison.java:51:13:51:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:56:19:56:54 | new URI(...) : URI | HostComparison.java:58:13:58:15 | uri : URI | provenance | | +| HostComparison.java:56:27:56:53 | getParameter(...) : String | HostComparison.java:56:19:56:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:56:27:56:53 | getParameter(...) : String | HostComparison.java:56:19:56:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:58:13:58:15 | uri : URI | HostComparison.java:58:13:58:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:67:19:67:54 | new URI(...) : URI | HostComparison.java:69:13:69:15 | uri : URI | provenance | | +| HostComparison.java:67:27:67:53 | getParameter(...) : String | HostComparison.java:67:19:67:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:67:27:67:53 | getParameter(...) : String | HostComparison.java:67:19:67:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:69:13:69:15 | uri : URI | HostComparison.java:69:13:69:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:83:19:83:54 | new URI(...) : URI | HostComparison.java:85:13:85:15 | uri : URI | provenance | | +| HostComparison.java:83:27:83:53 | getParameter(...) : String | HostComparison.java:83:19:83:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:83:27:83:53 | getParameter(...) : String | HostComparison.java:83:19:83:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:85:13:85:15 | uri : URI | HostComparison.java:85:13:85:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:91:20:91:55 | new URI(...) : URI | HostComparison.java:93:13:93:16 | used : URI | provenance | | +| HostComparison.java:91:28:91:54 | getParameter(...) : String | HostComparison.java:91:20:91:55 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:91:28:91:54 | getParameter(...) : String | HostComparison.java:91:20:91:55 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:93:13:93:16 | used : URI | HostComparison.java:93:13:93:24 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:102:19:102:54 | new URI(...) : URI | HostComparison.java:104:13:104:15 | uri : URI | provenance | | +| HostComparison.java:102:27:102:53 | getParameter(...) : String | HostComparison.java:102:19:102:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:102:27:102:53 | getParameter(...) : String | HostComparison.java:102:19:102:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:104:13:104:15 | uri : URI | HostComparison.java:104:13:104:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:110:20:110:55 | new URI(...) : URI | HostComparison.java:112:13:112:16 | used : URI | provenance | | +| HostComparison.java:110:28:110:54 | getParameter(...) : String | HostComparison.java:110:20:110:55 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:110:28:110:54 | getParameter(...) : String | HostComparison.java:110:20:110:55 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:112:13:112:16 | used : URI | HostComparison.java:112:13:112:24 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:117:19:117:54 | new URI(...) : URI | HostComparison.java:121:13:121:15 | uri : URI | provenance | | +| HostComparison.java:117:27:117:53 | getParameter(...) : String | HostComparison.java:117:19:117:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:117:27:117:53 | getParameter(...) : String | HostComparison.java:117:19:117:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:121:13:121:15 | uri : URI | HostComparison.java:121:13:121:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:126:19:126:54 | new URI(...) : URI | HostComparison.java:132:13:132:15 | uri : URI | provenance | | +| HostComparison.java:126:27:126:53 | getParameter(...) : String | HostComparison.java:126:19:126:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:126:27:126:53 | getParameter(...) : String | HostComparison.java:126:19:126:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:132:13:132:15 | uri : URI | HostComparison.java:132:13:132:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:139:15:139:50 | new URI(...) : URI | HostComparison.java:141:13:141:15 | uri : URI | provenance | | +| HostComparison.java:139:23:139:49 | getParameter(...) : String | HostComparison.java:139:15:139:50 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:139:23:139:49 | getParameter(...) : String | HostComparison.java:139:15:139:50 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:141:13:141:15 | uri : URI | HostComparison.java:141:13:141:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:146:19:146:54 | new URI(...) : URI | HostComparison.java:148:13:148:15 | uri : URI | provenance | | +| HostComparison.java:146:27:146:53 | getParameter(...) : String | HostComparison.java:146:19:146:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:146:27:146:53 | getParameter(...) : String | HostComparison.java:146:19:146:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:148:13:148:15 | uri : URI | HostComparison.java:148:13:148:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:153:19:153:54 | new URI(...) : URI | HostComparison.java:155:13:155:15 | uri : URI | provenance | | +| HostComparison.java:153:27:153:53 | getParameter(...) : String | HostComparison.java:153:19:153:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:153:27:153:53 | getParameter(...) : String | HostComparison.java:153:19:153:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:155:13:155:15 | uri : URI | HostComparison.java:155:13:155:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:176:19:176:54 | new URI(...) : URI | HostComparison.java:183:17:183:19 | uri : URI | provenance | | +| HostComparison.java:176:27:176:53 | getParameter(...) : String | HostComparison.java:176:19:176:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:176:27:176:53 | getParameter(...) : String | HostComparison.java:176:19:176:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:183:17:183:19 | uri : URI | HostComparison.java:183:17:183:27 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:206:19:206:54 | new URI(...) : URI | HostComparison.java:209:13:209:15 | uri : URI | provenance | | +| HostComparison.java:206:27:206:53 | getParameter(...) : String | HostComparison.java:206:19:206:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:206:27:206:53 | getParameter(...) : String | HostComparison.java:206:19:206:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:209:13:209:15 | uri : URI | HostComparison.java:209:13:209:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:231:19:231:54 | new URI(...) : URI | HostComparison.java:235:13:235:15 | uri : URI | provenance | | +| HostComparison.java:231:27:231:53 | getParameter(...) : String | HostComparison.java:231:19:231:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:231:27:231:53 | getParameter(...) : String | HostComparison.java:231:19:231:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:235:13:235:15 | uri : URI | HostComparison.java:235:13:235:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | +| HostComparison.java:240:19:240:54 | new URI(...) : URI | HostComparison.java:244:13:244:15 | uri : URI | provenance | | +| HostComparison.java:240:27:240:53 | getParameter(...) : String | HostComparison.java:240:19:240:54 | new URI(...) : URI | provenance | Src:MaD:292 Config | +| HostComparison.java:240:27:240:53 | getParameter(...) : String | HostComparison.java:240:19:240:54 | new URI(...) : URI | provenance | Src:MaD:292 MaD:304 | +| HostComparison.java:244:13:244:15 | uri : URI | HostComparison.java:244:13:244:23 | toURL(...) | provenance | MaD:308 Sink:MaD:15 | | JakartaWsSSRF.java:14:22:14:48 | getParameter(...) : String | JakartaWsSSRF.java:15:23:15:25 | url | provenance | Src:MaD:292 Sink:MaD:9 | | JavaNetHttpSSRF.java:25:27:25:53 | getParameter(...) : String | JavaNetHttpSSRF.java:26:31:26:34 | sink : String | provenance | Src:MaD:292 | | JavaNetHttpSSRF.java:26:23:26:35 | new URI(...) : URI | JavaNetHttpSSRF.java:39:59:39:61 | uri | provenance | Sink:MaD:12 | @@ -1774,6 +1859,74 @@ nodes | 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 | +| HostComparison.java:7:19:7:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:7:27:7:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:8:9:8:11 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:8:9:8:19 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:49:19:49:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:49:27:49:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:51:13:51:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:51:13:51:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:56:19:56:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:56:27:56:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:58:13:58:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:58:13:58:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:67:19:67:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:67:27:67:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:69:13:69:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:69:13:69:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:83:19:83:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:83:27:83:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:85:13:85:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:85:13:85:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:91:20:91:55 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:91:28:91:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:93:13:93:16 | used : URI | semmle.label | used : URI | +| HostComparison.java:93:13:93:24 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:102:19:102:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:102:27:102:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:104:13:104:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:104:13:104:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:110:20:110:55 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:110:28:110:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:112:13:112:16 | used : URI | semmle.label | used : URI | +| HostComparison.java:112:13:112:24 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:117:19:117:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:117:27:117:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:121:13:121:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:121:13:121:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:126:19:126:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:126:27:126:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:132:13:132:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:132:13:132:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:139:15:139:50 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:139:23:139:49 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:141:13:141:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:141:13:141:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:146:19:146:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:146:27:146:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:148:13:148:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:148:13:148:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:153:19:153:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:153:27:153:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:155:13:155:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:155:13:155:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:176:19:176:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:176:27:176:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:183:17:183:19 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:183:17:183:27 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:206:19:206:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:206:27:206:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:209:13:209:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:209:13:209:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:231:19:231:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:231:27:231:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:235:13:235:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:235:13:235:23 | toURL(...) | semmle.label | toURL(...) | +| HostComparison.java:240:19:240:54 | new URI(...) : URI | semmle.label | new URI(...) : URI | +| HostComparison.java:240:27:240:53 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| HostComparison.java:244:13:244:15 | uri : URI | semmle.label | uri : URI | +| HostComparison.java:244:13:244:23 | toURL(...) | semmle.label | toURL(...) | | 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 | diff --git a/javascript/extractor/src/com/semmle/jcorn/AngularExpressionParser.java b/javascript/extractor/src/com/semmle/jcorn/AngularExpressionParser.java index 79c1a1e30dbe..f3245d573352 100644 --- a/javascript/extractor/src/com/semmle/jcorn/AngularExpressionParser.java +++ b/javascript/extractor/src/com/semmle/jcorn/AngularExpressionParser.java @@ -30,14 +30,13 @@ protected Expression buildBinary( boolean logical) { // Angular pipe expression: `x|f:a` is desugared to `f(x, a)` if (op.equals("|")) { - DestructuringErrors refDestructuringErrors = new DestructuringErrors(); List arguments = new ArrayList<>(); arguments.add(left); while (this.type == TokenType.colon) { this.next(); int argStartPos = this.pos; Position argStartLocation = this.curPosition(); - Expression arg = parseMaybeUnary(refDestructuringErrors, false); + Expression arg = parseMaybeUnary(false); arguments.add(parseExprOp(arg, argStartPos, argStartLocation, TokenType.plusMin.binop, true)); } SourceLocation loc = new SourceLocation(startLoc); @@ -50,10 +49,10 @@ protected Expression buildBinary( } @Override - protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { + protected Expression parseExprAtom() { // Parse postfix "!" operator Position startLoc = this.startLoc; - Expression expr = super.parseExprAtom(refDestructuringErrors); + Expression expr = super.parseExprAtom(); if (this.type == TokenType.prefix && "!".equals(this.value)) { this.next(); // consume "!" token return finishNode(new NonNullAssertion(new SourceLocation(startLoc), expr)); diff --git a/javascript/extractor/src/com/semmle/jcorn/CustomParser.java b/javascript/extractor/src/com/semmle/jcorn/CustomParser.java index 7170aa3e5217..cb963a4cd380 100644 --- a/javascript/extractor/src/com/semmle/jcorn/CustomParser.java +++ b/javascript/extractor/src/com/semmle/jcorn/CustomParser.java @@ -90,7 +90,7 @@ protected CatchClause parseCatchClause(Position startLoc) { if (this.eat(TokenType.parenL)) { param = this.parseBindingAtom(); this.checkLVal(param, true, null); - if (this.eat(TokenType._if)) guard = this.parseExpression(false, null); + if (this.eat(TokenType._if)) guard = this.parseExpression(false); this.expect(TokenType.parenR); } else if (!options.esnext()) { this.unexpected(); @@ -123,7 +123,7 @@ protected Statement parseVarStatement(Position startLoc, String kind) { } @Override - protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { + protected Expression parseExprAtom() { Position startLoc = this.startLoc; if (options.mozExtensions() && this.isContextual("let")) { this.next(); @@ -141,9 +141,9 @@ protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { if (this.type == TokenType.comma || this.type == TokenType.bracketR || this.type == TokenType.ellipsis) { - elements = this.parseExprList(TokenType.bracketR, true, true, refDestructuringErrors); + elements = this.parseExprList(TokenType.bracketR, true, true); } else { - Expression firstExpr = this.parseMaybeAssign(false, refDestructuringErrors, null); + Expression firstExpr = this.parseMaybeAssign(false, null); // check whether this is a postfix array comprehension if (this.type == TokenType._for || this.type == TokenType._if) { ComprehensionExpression c = this.parseComprehension(startLoc, false, firstExpr); @@ -154,7 +154,7 @@ protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { elements = new ArrayList(); elements.add(firstExpr); elements.addAll( - this.parseExprList(TokenType.bracketR, true, true, refDestructuringErrors)); + this.parseExprList(TokenType.bracketR, true, true)); } } return this.finishNode(new ArrayExpression(new SourceLocation(startLoc), elements)); @@ -164,7 +164,7 @@ protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { Identifier buildinName = this.parseIdent(true); Identifier name = this.finishNode(new Identifier(new SourceLocation(startLoc), "%" + buildinName.getName())); this.expect(TokenType.parenL); - List args = this.parseExprList(TokenType.parenR, false, false, null); + List args = this.parseExprList(TokenType.parenR, false, false); CallExpression node = new CallExpression( new SourceLocation(startLoc), name, new ArrayList<>(), args, false, false); @@ -184,7 +184,7 @@ protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { } return attr; } else { - return super.parseExprAtom(refDestructuringErrors); + return super.parseExprAtom(); } } @@ -197,7 +197,7 @@ protected Node parseLetExpression(Position startLoc, boolean maybeStatement) { if (this.type == TokenType.braceL) { if (!maybeStatement) { // must be the start of an object literal - Expression body = this.parseObj(false, null); + Expression body = this.parseObj(false); return this.finishNode( new LetExpression(new SourceLocation(startLoc), decl.getDeclarations(), body)); } @@ -212,7 +212,7 @@ protected Node parseLetExpression(Position startLoc, boolean maybeStatement) { return this.finishNode( new LetStatement(new SourceLocation(startLoc), decl.getDeclarations(), body)); } else { - Expression body = this.parseExpression(false, null); + Expression body = this.parseExpression(false); return this.finishNode( new LetExpression(new SourceLocation(startLoc), decl.getDeclarations(), body)); } @@ -283,13 +283,12 @@ private boolean eatDoubleColon() { // accept `yield` in non-generator functions @Override - protected Expression parseMaybeAssign( - boolean noIn, DestructuringErrors refDestructuringErrors, AfterLeftParse afterLeftParse) { + protected Expression parseMaybeAssign(boolean noIn, AfterLeftParse afterLeftParse) { if (options.mozExtensions() && isContextual("yield")) { if (!this.inFunction) this.raise(this.startLoc, "Yield not in function"); return this.parseYield(); } - return super.parseMaybeAssign(noIn, refDestructuringErrors, afterLeftParse); + return super.parseMaybeAssign(noIn, afterLeftParse); } // add parsing of comprehensions @@ -309,12 +308,12 @@ protected ComprehensionExpression parseComprehension( } else { this.expect(TokenType._in); } - Expression right = this.parseExpression(false, null); + Expression right = this.parseExpression(false); this.expect(TokenType.parenR); blocks.add(this.finishNode(new ComprehensionBlock(blockStart, (IPattern) left, right, of))); } Expression filter = this.eat(TokenType._if) ? this.parseParenExpression() : null; - if (body == null) body = this.parseExpression(false, null); + if (body == null) body = this.parseExpression(false); return new ComprehensionExpression( new SourceLocation(startLoc), body, blocks, filter, isGenerator); @@ -353,13 +352,11 @@ protected Expression parseParenAndDistinguishExpression(boolean canBeArrow) { @Override protected boolean parseParenthesisedExpression( - DestructuringErrors refDestructuringErrors, boolean allowTrailingComma, ParenthesisedExpressions parenExprs, boolean first) { boolean cont = - super.parseParenthesisedExpression( - refDestructuringErrors, allowTrailingComma, parenExprs, first); + super.parseParenthesisedExpression(allowTrailingComma, parenExprs, first); if (options.mozExtensions() && parenExprs.exprList.size() == 1 && this.type == TokenType._for) { Expression body = parenExprs.exprList.remove(0); ComprehensionExpression c = parseComprehension(body.getLoc().getStart(), true, body); @@ -399,7 +396,7 @@ protected Expression parseNew() { && options.mozExtensions() && !canInsertSemicolon() && this.type == TokenType.braceL) { - ((NewExpression) res).getArguments().add(this.parseObj(false, null)); + ((NewExpression) res).getArguments().add(this.parseObj(false)); res = this.finishNode(res); } return res; @@ -465,7 +462,7 @@ protected Pair parseSubscript( if (options.e4x() && this.eat(TokenType.dot)) { SourceLocation start = new SourceLocation(startLoc); if (this.eat(TokenType.parenL)) { - Expression filter = parseExpression(false, null); + Expression filter = parseExpression(false); this.expect(TokenType.parenR); return Pair.make(this.finishNode(new XMLFilterExpression(start, base, filter)), true); } @@ -515,7 +512,7 @@ protected Expression parsePropertySelector(SourceLocation start) { */ protected Expression parseAttributeIdentifier(SourceLocation start) { if (this.eat(TokenType.bracketL)) { - Expression idx = parseExpression(false, null); + Expression idx = parseExpression(false); this.expect(TokenType.bracketR); return this.finishNode(new XMLAttributeSelector(start, idx, true)); } else { @@ -533,7 +530,7 @@ protected Expression parseDecoratorBody() { // followed by a right bracket, which will later be converted by // `decoratorToAttributeSelector` below List elements = new ArrayList<>(); - elements.add(parseExpression(false, null)); + elements.add(parseExpression(false)); this.expect(TokenType.bracketR); return this.finishNode(new ArrayExpression(start, elements)); } diff --git a/javascript/extractor/src/com/semmle/jcorn/ESNextParser.java b/javascript/extractor/src/com/semmle/jcorn/ESNextParser.java index 1eff68a30385..edc6fb9bf632 100644 --- a/javascript/extractor/src/com/semmle/jcorn/ESNextParser.java +++ b/javascript/extractor/src/com/semmle/jcorn/ESNextParser.java @@ -59,17 +59,14 @@ public ESNextParser(Options options, String input, int startPos) { */ @Override - protected Property parseProperty( - boolean isPattern, - DestructuringErrors refDestructuringErrors, - Map propHash) { + protected Property parseProperty(boolean isPattern, Map propHash) { Position start = this.startLoc; List decorators = parseDecorators(); Property prop = null; if (this.type == TokenType.ellipsis) { - SpreadElement spread = this.parseSpread(null); + SpreadElement spread = this.parseSpread(); Expression val; if (isPattern) val = new RestElement(spread.getLoc(), spread.getArgument()); else val = spread; @@ -79,7 +76,7 @@ protected Property parseProperty( new SourceLocation(start), null, val, Property.Kind.INIT.name(), false, false)); } - if (prop == null) prop = super.parseProperty(isPattern, refDestructuringErrors, propHash); + if (prop == null) prop = super.parseProperty(isPattern, propHash); prop.addDecorators(decorators); @@ -129,7 +126,7 @@ protected FieldDefinition parseFieldDefinition(PropertyInfo pi, boolean isStatic this.next(); boolean oldInFunc = this.inFunction; this.inFunction = true; - value = parseMaybeAssign(false, null, null); + value = parseMaybeAssign(false, null); this.inFunction = oldInFunc; } this.semicolon(); @@ -220,7 +217,7 @@ protected Statement parseStatement(boolean declaration, boolean topLevel, Set decorators = parseDecorators(); ClassExpression ce = (ClassExpression) this.parseClass(startLoc, false); @@ -232,7 +229,7 @@ protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { this.next(); int innerStart = this.start; Position innerStartLoc = this.startLoc; - Expression callee = parseSubscripts(parseExprAtom(null), innerStart, innerStartLoc, true); + Expression callee = parseSubscripts(parseExprAtom(), innerStart, innerStartLoc, true); if (!(callee instanceof MemberExpression)) this.raiseRecoverable(callee, "Binding should be performed on a member expression."); return this.finishNode(new BindExpression(startLoc, null, callee)); @@ -246,7 +243,7 @@ protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { this.expect(TokenType.parenL); return parseDynamicImport(startLoc); } - return super.parseExprAtom(refDestructuringErrors); + return super.parseExprAtom(); } @Override @@ -373,7 +370,7 @@ private boolean functionBind() { protected Pair parseSubscript( Expression base, Position startLoc, boolean noCalls) { if (!noCalls && this.eat(doubleColon)) { - Expression callee = parseSubscripts(parseExprAtom(null), this.start, this.startLoc, true); + Expression callee = parseSubscripts(parseExprAtom(), this.start, this.startLoc, true); BindExpression bind = new BindExpression(new SourceLocation(startLoc), base, callee); return Pair.make(this.finishNode(bind), true); } @@ -438,11 +435,11 @@ private MetaProperty parseImportMeta(Position loc) { * already been consumed. */ private DynamicImport parseDynamicImport(Position startLoc) { - Expression source = parseMaybeAssign(false, null, null); + Expression source = parseMaybeAssign(false, null); Expression attributes = null; if (this.eat(TokenType.comma)) { if (this.type != TokenType.parenR) { // Skip if the comma was a trailing comma - attributes = this.parseMaybeAssign(false, null, null); + attributes = this.parseMaybeAssign(false, null); this.eat(TokenType.comma); // Allow trailing comma } } diff --git a/javascript/extractor/src/com/semmle/jcorn/Parser.java b/javascript/extractor/src/com/semmle/jcorn/Parser.java index a248a82dd140..6b6876b07213 100644 --- a/javascript/extractor/src/com/semmle/jcorn/Parser.java +++ b/javascript/extractor/src/com/semmle/jcorn/Parser.java @@ -1239,32 +1239,6 @@ protected void unexpected() { unexpected((Integer) null); } - public static class DestructuringErrors { - private int shorthandAssign, trailingComma; - - public void reset() { - this.shorthandAssign = 0; - this.trailingComma = 0; - } - } - - protected boolean checkPatternErrors( - DestructuringErrors refDestructuringErrors, boolean andThrow) { - int trailing = refDestructuringErrors != null ? refDestructuringErrors.trailingComma : 0; - if (!andThrow) return trailing != 0; - if (trailing != 0) this.raise(trailing, "Comma is not permitted after the rest element"); - return false; - } - - protected boolean checkExpressionErrors( - DestructuringErrors refDestructuringErrors, boolean andThrow) { - int pos = refDestructuringErrors != null ? refDestructuringErrors.shorthandAssign : 0; - if (!andThrow) return pos != 0; - if (pos != 0) - this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns"); - return false; - } - private void checkYieldAwaitInDefaultParams() { if (this.yieldPos > 0 && (this.awaitPos == 0 || this.yieldPos < this.awaitPos)) this.raise(this.yieldPos, "Yield expression cannot be a default value"); @@ -1367,20 +1341,16 @@ private void checkPropClash(Property prop, Map propHash) { // and, *if* the syntactic construct they handle is present, wrap // the AST node that the inner parser gave them in another node. - // Parse a full expression. The optional arguments are used to - // forbid the `in` operator (in for loops initalization expressions) - // and provide reference for storing '=' operator inside shorthand - // property assignment in contexts where both object expression - // and object pattern might appear (so it's possible to raise - // delayed syntax error at correct position). - protected Expression parseExpression(boolean noIn, DestructuringErrors refDestructuringErrors) { + // Parse a full expression. The argument is used to forbid the `in` operator + // (in for loops initialization expressions). + protected Expression parseExpression(boolean noIn) { Position startLoc = this.startLoc; - Expression expr = this.parseMaybeAssign(noIn, refDestructuringErrors, null); + Expression expr = this.parseMaybeAssign(noIn, null); if (this.type == TokenType.comma) { List expressions = CollectionUtil.makeList(expr); SequenceExpression node = new SequenceExpression(new SourceLocation(startLoc), expressions); while (this.eat(TokenType.comma)) - expressions.add(this.parseMaybeAssign(noIn, refDestructuringErrors, null)); + expressions.add(this.parseMaybeAssign(noIn, null)); return this.finishNode(node); } return expr; @@ -1392,46 +1362,32 @@ public interface AfterLeftParse { // Parse an assignment expression. This includes applications of // operators like `+=`. - protected Expression parseMaybeAssign( - boolean noIn, DestructuringErrors refDestructuringErrors, AfterLeftParse afterLeftParse) { + protected Expression parseMaybeAssign(boolean noIn, AfterLeftParse afterLeftParse) { if (this.inGenerator && this.isContextual("yield")) return this.parseYield(); - boolean ownDestructuringErrors = false; - if (refDestructuringErrors == null) { - refDestructuringErrors = new DestructuringErrors(); - ownDestructuringErrors = true; - } int startPos = this.start; Position startLoc = this.startLoc; if (this.type == TokenType.parenL || this.type == TokenType.name) this.potentialArrowAt = this.start; - Expression left = this.parseMaybeConditional(noIn, refDestructuringErrors); + Expression left = this.parseMaybeConditional(noIn); if (afterLeftParse != null) left = afterLeftParse.call(left, startPos, startLoc); if (this.type.isAssign) { - this.checkPatternErrors(refDestructuringErrors, true); - if (!ownDestructuringErrors) refDestructuringErrors.reset(); Expression l = this.type == TokenType.eq ? (Expression) this.toAssignable(left, false) : left; - refDestructuringErrors.shorthandAssign = - 0; // reset because shorthand default was used correctly String operator = String.valueOf(this.value); this.checkLVal(l, false, null); this.next(); - Expression r = this.parseMaybeAssign(noIn, null, null); + Expression r = this.parseMaybeAssign(noIn, null); AssignmentExpression node = new AssignmentExpression(new SourceLocation(startLoc), operator, l, r); return this.finishNode(node); - } else { - if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true); } return left; } // Parse a ternary conditional (`?:`) operator. - protected Expression parseMaybeConditional( - boolean noIn, DestructuringErrors refDestructuringErrors) { + protected Expression parseMaybeConditional(boolean noIn) { Position startLoc = this.startLoc; - Expression expr = this.parseExprOps(noIn, refDestructuringErrors); - if (this.checkExpressionErrors(refDestructuringErrors, false)) return expr; + Expression expr = this.parseExprOps(noIn); if (this.eat(TokenType.question)) { return parseConditionalRest(noIn, startLoc, expr); } @@ -1439,20 +1395,19 @@ protected Expression parseMaybeConditional( } protected Expression parseConditionalRest(boolean noIn, Position start, Expression test) { - Expression consequent = this.parseMaybeAssign(false, null, null); + Expression consequent = this.parseMaybeAssign(false, null); this.expect(TokenType.colon); - Expression alternate = this.parseMaybeAssign(noIn, null, null); + Expression alternate = this.parseMaybeAssign(noIn, null); ConditionalExpression node = new ConditionalExpression(new SourceLocation(start), test, consequent, alternate); return this.finishNode(node); } // Start the precedence parser. - protected Expression parseExprOps(boolean noIn, DestructuringErrors refDestructuringErrors) { + protected Expression parseExprOps(boolean noIn) { int startPos = this.start; Position startLoc = this.startLoc; - Expression expr = this.parseMaybeUnary(refDestructuringErrors, false); - if (this.checkExpressionErrors(refDestructuringErrors, false)) return expr; + Expression expr = this.parseMaybeUnary(false); return this.parseExprOp(expr, startPos, startLoc, -1, noIn); } @@ -1472,7 +1427,7 @@ protected Expression parseExprOp( int startPos = this.start; Position startLoc = this.startLoc; Expression right = - this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn); + this.parseExprOp(this.parseMaybeUnary(false), startPos, startLoc, prec, noIn); Expression node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical); return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn); } @@ -1496,8 +1451,7 @@ protected Expression buildBinary( } // Parse unary operators, both prefix and postfix. - protected Expression parseMaybeUnary( - DestructuringErrors refDestructuringErrors, boolean sawUnary) { + protected Expression parseMaybeUnary(boolean sawUnary) { int startPos = this.start; Position startLoc = this.startLoc; Expression expr; @@ -1508,21 +1462,19 @@ protected Expression parseMaybeUnary( String operator = String.valueOf(this.value); boolean update = this.type == TokenType.incDec; this.next(); - Expression argument = this.parseMaybeUnary(null, true); + Expression argument = this.parseMaybeUnary(true); SourceLocation loc = new SourceLocation(startLoc); Expression node = update ? new UpdateExpression(loc, operator, argument, true) : new UnaryExpression(loc, operator, argument, true); - this.checkExpressionErrors(refDestructuringErrors, true); if (update) this.checkLVal(argument, false, null); else if (this.strict && operator.equals("delete") && argument instanceof Identifier) this.raiseRecoverable(node, "Deleting local variable in strict mode"); else sawUnary = true; expr = this.finishNode(node); } else { - expr = this.parseExprSubscripts(refDestructuringErrors); - if (this.checkExpressionErrors(refDestructuringErrors, false)) return expr; + expr = this.parseExprSubscripts(); while (this.type.isPostfix && !this.canInsertSemicolon()) { UpdateExpression node = new UpdateExpression( @@ -1535,20 +1487,19 @@ else if (this.strict && operator.equals("delete") && argument instanceof Identif if (!sawUnary && this.eat(TokenType.starstar)) return this.buildBinary( - startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false); + startPos, startLoc, expr, this.parseMaybeUnary(false), "**", false); else return expr; } // Parse call, dot, and `[]`-subscript expressions. - protected Expression parseExprSubscripts(DestructuringErrors refDestructuringErrors) { + protected Expression parseExprSubscripts() { int startPos = this.start; Position startLoc = this.startLoc; - Expression expr = this.parseExprAtom(refDestructuringErrors); + Expression expr = this.parseExprAtom(); boolean skipArrowSubscripts = expr instanceof ArrowFunctionExpression && !inputSubstring(this.lastTokStart, this.lastTokEnd).equals(")"); - if (this.checkExpressionErrors(refDestructuringErrors, false) || skipArrowSubscripts) - return expr; + if (skipArrowSubscripts) return expr; return this.parseSubscripts(expr, startPos, startLoc, false); } @@ -1578,28 +1529,24 @@ protected Pair parseSubscript( new MemberExpression( new SourceLocation(startLoc), base, - this.parseExpression(false, null), + this.parseExpression(false), true, optional, Chainable.isOnOptionalChain(optional, base)); this.expect(TokenType.bracketR); return Pair.make(this.finishNode(node), true); } else if (!noCalls && this.eat(TokenType.parenL)) { - DestructuringErrors refDestructuringErrors = new DestructuringErrors(); int oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos; this.yieldPos = 0; this.awaitPos = 0; List exprList = - this.parseExprList( - TokenType.parenR, this.options.ecmaVersion() >= 8, false, refDestructuringErrors); + this.parseExprList(TokenType.parenR, this.options.ecmaVersion() >= 8, false); if (maybeAsyncArrow && shouldParseAsyncArrow()) { - this.checkPatternErrors(refDestructuringErrors, true); this.checkYieldAwaitInDefaultParams(); this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; return Pair.make(this.parseArrowExpression(startLoc, exprList, true), false); } - this.checkExpressionErrors(refDestructuringErrors, true); if (oldYieldPos > 0) this.yieldPos = oldYieldPos; if (oldAwaitPos > 0) this.awaitPos = oldAwaitPos; CallExpression node = @@ -1642,7 +1589,7 @@ protected boolean shouldParseAsyncArrow() { // expression, an expression started by a keyword like `function` or // `new`, or an expression wrapped in punctuation like `()`, `[]`, // or `{}`. - protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { + protected Expression parseExprAtom() { Expression node; boolean canBeArrow = this.potentialArrowAt == this.start; if (this.type == TokenType._super) { @@ -1700,12 +1647,11 @@ protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { } else if (this.type == TokenType.bracketL) { Position startLoc = this.startLoc; this.next(); - List elements = - this.parseExprList(TokenType.bracketR, true, true, refDestructuringErrors); + List elements = this.parseExprList(TokenType.bracketR, true, true); node = new ArrayExpression(new SourceLocation(startLoc), elements); return this.finishNode(node); } else if (this.type == TokenType.braceL) { - return this.parseObj(false, refDestructuringErrors); + return this.parseObj(false); } else if (this.type == TokenType._function) { Position startLoc = this.startLoc; this.next(); @@ -1734,7 +1680,7 @@ protected Literal parseLiteral(TokenType tokenType, Object value) { protected Expression parseParenExpression() { this.expect(TokenType.parenL); - Expression val = this.parseExpression(false, null); + Expression val = this.parseExpression(false); this.expect(TokenType.parenR); return val; } @@ -1745,12 +1691,10 @@ protected Expression parseParenAndDistinguishExpression(boolean canBeArrow) { if (this.options.ecmaVersion() >= 6) { this.next(); - DestructuringErrors refDestructuringErrors = new DestructuringErrors(); int oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos; - ParenthesisedExpressions parenExprs = parseParenthesisedExpressions(refDestructuringErrors); + ParenthesisedExpressions parenExprs = parseParenthesisedExpressions(); if (canBeArrow && !this.canInsertSemicolon() && this.eat(TokenType.arrow)) { - this.checkPatternErrors(refDestructuringErrors, true); this.checkYieldAwaitInDefaultParams(); if (parenExprs.innerParenStart != 0) this.unexpected(parenExprs.innerParenStart); this.yieldPos = oldYieldPos; @@ -1761,7 +1705,6 @@ protected Expression parseParenAndDistinguishExpression(boolean canBeArrow) { if (parenExprs.exprList.isEmpty() || parenExprs.lastIsComma) this.unexpected(this.lastTokStart); if (parenExprs.spreadStart != 0) this.unexpected(parenExprs.spreadStart); - this.checkExpressionErrors(refDestructuringErrors, true); if (oldYieldPos > 0) this.yieldPos = oldYieldPos; if (oldAwaitPos > 0) this.awaitPos = oldAwaitPos; @@ -1803,8 +1746,7 @@ protected static class ParenthesisedExpressions { boolean lastIsComma; } - protected ParenthesisedExpressions parseParenthesisedExpressions( - DestructuringErrors refDestructuringErrors) { + protected ParenthesisedExpressions parseParenthesisedExpressions() { boolean allowTrailingComma = this.options.ecmaVersion() >= 8; ParenthesisedExpressions parenExprs = new ParenthesisedExpressions(); parenExprs.startLoc = this.startLoc; @@ -1814,8 +1756,7 @@ protected ParenthesisedExpressions parseParenthesisedExpressions( while (this.type != TokenType.parenR) { if (first) first = false; else this.expect(TokenType.comma); - if (!parseParenthesisedExpression( - refDestructuringErrors, allowTrailingComma, parenExprs, first)) break; + if (!parseParenthesisedExpression(allowTrailingComma, parenExprs, first)) break; } parenExprs.endLoc = this.startLoc; this.expect(TokenType.parenR); @@ -1829,7 +1770,6 @@ protected ParenthesisedExpressions parseParenthesisedExpressions( * @return true if more expressions may follow this one, false if it must be the last one */ protected boolean parseParenthesisedExpression( - DestructuringErrors refDestructuringErrors, boolean allowTrailingComma, ParenthesisedExpressions parenExprs, boolean first) { @@ -1838,16 +1778,15 @@ protected boolean parseParenthesisedExpression( return false; } else if (this.type == TokenType.ellipsis) { parenExprs.spreadStart = this.start; - parenExprs.exprList.add(this.parseParenItem(this.parseRest(false), -1, null)); - if (this.type == TokenType.comma) - this.raise(this.startLoc, "Comma is not permitted after the rest element"); + parenExprs.exprList.add(this.parseParenItem(this.parseRest(), -1, null)); + this.eat(TokenType.comma); return false; } else { if (this.type == TokenType.parenL && parenExprs.innerParenStart == 0) { parenExprs.innerParenStart = this.start; } parenExprs.exprList.add( - this.parseMaybeAssign(false, refDestructuringErrors, this::parseParenItem)); + this.parseMaybeAssign(false, this::parseParenItem)); } return true; } @@ -1879,7 +1818,7 @@ protected Expression parseNew() { int innerStartPos = this.start; Position innerStartLoc = this.startLoc; Expression callee = - this.parseSubscripts(this.parseExprAtom(null), innerStartPos, innerStartLoc, true); + this.parseSubscripts(this.parseExprAtom(), innerStartPos, innerStartLoc, true); if (Chainable.isOnOptionalChain(false, callee)) this.raise(callee, "An optional chain may not be used in a `new` expression."); @@ -1891,7 +1830,7 @@ protected Expression parseNewArguments(Position startLoc, Expression callee) { List arguments; if (this.eat(TokenType.parenL)) arguments = - this.parseExprList(TokenType.parenR, this.options.ecmaVersion() >= 8, false, null); + this.parseExprList(TokenType.parenR, this.options.ecmaVersion() >= 8, false); else arguments = new ArrayList(); NewExpression node = new NewExpression(new SourceLocation(startLoc), callee, new ArrayList<>(), arguments); @@ -1926,7 +1865,7 @@ protected TemplateLiteral parseTemplate(boolean isTagged) { List quasis = CollectionUtil.makeList(curElt); while (!curElt.isTail()) { this.expect(TokenType.dollarBraceL); - expressions.add(this.parseExpression(false, null)); + expressions.add(this.parseExpression(false)); this.expect(TokenType.braceR); quasis.add(curElt = this.parseTemplateElement(isTagged)); } @@ -1958,7 +1897,7 @@ MethodDefinition.Kind getMethodKind() { } // Parse an object literal or binding pattern. - protected Expression parseObj(boolean isPattern, DestructuringErrors refDestructuringErrors) { + protected Expression parseObj(boolean isPattern) { Position startLoc = this.startLoc; if (!isPattern && options.allowGeneratedCodeExprs() && charAt(pos) == '{') { // Parse mustache-style placeholder expression: {{ ... }} or {{{ ... }}} @@ -1978,7 +1917,7 @@ protected Expression parseObj(boolean isPattern, DestructuringErrors refDestruct first = false; } - properties.add(this.finishNode(parseProperty(isPattern, refDestructuringErrors, propHash))); + properties.add(this.finishNode(parseProperty(isPattern, propHash))); } SourceLocation loc = new SourceLocation(startLoc); Expression node = @@ -2022,10 +1961,7 @@ protected Expression parseGeneratedCodeExpr(Position startLoc, String openingDel bodyToken.getValue())); } - protected Property parseProperty( - boolean isPattern, - DestructuringErrors refDestructuringErrors, - Map propHash) { + protected Property parseProperty(boolean isPattern, Map propHash) { Position propStartLoc = this.startLoc; boolean isGenerator = false; if (this.options.ecmaVersion() >= 6) { @@ -2040,7 +1976,7 @@ protected Property parseProperty( } else { pi.isAsync = false; } - this.parsePropertyValue(pi, refDestructuringErrors); + this.parsePropertyValue(pi); Property prop = new Property( new SourceLocation(pi.startLoc), pi.key, pi.value, pi.kind, pi.computed, pi.method); @@ -2061,14 +1997,14 @@ private boolean isAsyncProp(PropertyInfo pi) { && !this.canInsertSemicolon(); } - protected void parsePropertyValue(PropertyInfo pi, DestructuringErrors refDestructuringErrors) { + protected void parsePropertyValue(PropertyInfo pi) { if ((pi.isGenerator || pi.isAsync) && this.type == TokenType.colon) this.unexpected(); if (this.eat(TokenType.colon)) { pi.value = pi.isPattern ? this.parseMaybeDefault(this.startLoc, null) - : this.parseMaybeAssign(false, refDestructuringErrors, null); + : this.parseMaybeAssign(false, null); pi.kind = "init"; } else if (this.options.ecmaVersion() >= 6 && this.type == TokenType.parenL) { if (pi.isPattern) this.unexpected(); @@ -2108,9 +2044,7 @@ protected void parsePropertyValue(PropertyInfo pi, DestructuringErrors refDestru pi.kind = "init"; if (pi.isPattern) { pi.value = this.parseMaybeDefault(pi.startLoc, pi.key); - } else if (this.type == TokenType.eq && refDestructuringErrors != null) { - if (refDestructuringErrors.shorthandAssign == 0) - refDestructuringErrors.shorthandAssign = this.start; + } else if (this.type == TokenType.eq) { pi.value = this.parseMaybeDefault(pi.startLoc, pi.key); } else { pi.value = pi.key; @@ -2123,14 +2057,14 @@ protected void parsePropertyValue(PropertyInfo pi, DestructuringErrors refDestru protected void parsePropertyName(PropertyInfo result) { if (this.options.ecmaVersion() >= 6) { if (this.eat(TokenType.bracketL)) { - result.key = this.parseMaybeAssign(false, null, null); + result.key = this.parseMaybeAssign(false, null); result.computed = true; this.expect(TokenType.bracketR); return; } } if (this.type == TokenType.num || this.type == TokenType.string) - result.key = this.parseExprAtom(null); + result.key = this.parseExprAtom(); else result.key = this.parseIdent(true); } @@ -2147,7 +2081,7 @@ protected FunctionExpression parseMethod(boolean isGenerator, boolean isAsync) { this.expect(TokenType.parenL); List params = - this.parseBindingList(TokenType.parenR, false, this.options.ecmaVersion() >= 8, false); + this.parseBindingList(TokenType.parenR, false, this.options.ecmaVersion() >= 8); this.checkYieldAwaitInDefaultParams(); boolean generator = this.options.ecmaVersion() >= 6 && isGenerator; Node body = this.parseFunctionBody(null, params, false); @@ -2191,7 +2125,7 @@ protected Node parseFunctionBody( boolean isExpression = isArrowFunction && this.type != TokenType.braceL; Node body; if (isExpression) { - body = this.parseMaybeAssign(false, null, null); + body = this.parseMaybeAssign(false, null); } else { // Start a new scope with regard to labels and the `inFunction` // flag (restore them to their old value afterwards). @@ -2247,10 +2181,7 @@ protected void checkParams(List params) { // nothing in between them to be parsed as `null` (which is needed // for array literals). protected List parseExprList( - TokenType close, - boolean allowTrailingComma, - boolean allowEmpty, - DestructuringErrors refDestructuringErrors) { + TokenType close, boolean allowTrailingComma, boolean allowEmpty) { List elts = new ArrayList(); boolean first = true; while (!this.eat(close)) { @@ -2265,14 +2196,9 @@ protected List parseExprList( if (allowEmpty && this.type == TokenType.comma) { elt = null; } else if (this.type == TokenType.ellipsis) { - elt = this.processExprListItem(this.parseSpread(refDestructuringErrors)); - if (this.type == TokenType.comma - && refDestructuringErrors != null - && refDestructuringErrors.trailingComma == 0) { - refDestructuringErrors.trailingComma = this.start; - } + elt = this.processExprListItem(this.parseSpread()); } else - elt = this.processExprListItem(this.parseMaybeAssign(false, refDestructuringErrors, null)); + elt = this.processExprListItem(this.parseMaybeAssign(false, null)); elts.add(elt); } return elts; @@ -2296,9 +2222,9 @@ protected Identifier parseIdent(boolean liberal) { && (this.options.ecmaVersion() >= 6 || inputSubstring(this.start, this.end).indexOf("\\") == -1)) this.raiseRecoverable(this.start, "The keyword '" + this.value + "' is reserved"); - if (!isPrivateField && this.inGenerator && this.value.equals("yield")) + if (!liberal && !isPrivateField && this.inGenerator && this.value.equals("yield")) this.raiseRecoverable(this.start, "Can not use 'yield' as identifier inside a generator"); - if (!isPrivateField && this.inAsync && this.value.equals("await")) + if (!liberal && !isPrivateField && this.inAsync && this.value.equals("await")) this.raiseRecoverable( this.start, "Can not use 'await' as identifier inside an async function"); name = String.valueOf(this.value); @@ -2335,7 +2261,7 @@ protected YieldExpression parseYield() { argument = null; } else { delegate = this.eat(TokenType.star); - argument = this.parseMaybeAssign(false, null, null); + argument = this.parseMaybeAssign(false, null); } YieldExpression node = new YieldExpression(new SourceLocation(startLoc), argument, delegate); return this.finishNode(node); @@ -2344,7 +2270,7 @@ protected YieldExpression parseYield() { protected AwaitExpression parseAwait() { Position startLoc = this.startLoc; this.next(); - Expression argument = this.parseMaybeUnary(null, true); + Expression argument = this.parseMaybeUnary(true); AwaitExpression node = new AwaitExpression(new SourceLocation(startLoc), argument); return this.finishNode(node); } @@ -2433,17 +2359,11 @@ protected List toAssignableList(List exprList, boolean i } else if (last != null && last instanceof SpreadElement) { Expression arg = ((SpreadElement) last).getArgument(); arg = (Expression) this.toAssignable(arg, isBinding); - if (!(arg instanceof Identifier - || arg instanceof MemberExpression - || arg instanceof ArrayPattern)) this.unexpected(arg.getLoc().getStart()); + if (!(arg instanceof IPattern || arg instanceof MemberExpression)) + this.unexpected(arg.getLoc().getStart()); exprList.set(end - 1, last = new RestElement(last.getLoc(), arg)); --end; } - - if (isBinding - && last instanceof RestElement - && !(((RestElement) last).getArgument() instanceof Identifier)) - this.unexpected(((RestElement) last).getArgument().getLoc().getStart()); } for (int i = 0; i < end; ++i) exprList.set(i, (Expression) this.toAssignable(exprList.get(i), isBinding)); @@ -2451,27 +2371,18 @@ protected List toAssignableList(List exprList, boolean i } // Parses spread element. - protected SpreadElement parseSpread(DestructuringErrors refDestructuringErrors) { + protected SpreadElement parseSpread() { Position start = this.startLoc; this.next(); SpreadElement node = - new SpreadElement( - new SourceLocation(start), this.parseMaybeAssign(false, refDestructuringErrors, null)); + new SpreadElement(new SourceLocation(start), this.parseMaybeAssign(false, null)); return this.finishNode(node); } - protected RestElement parseRest(boolean allowNonIdent) { + protected RestElement parseRest() { Position start = this.startLoc; this.next(); - - // RestElement inside of a function parameter must be an identifier - Expression argument = null; - if (allowNonIdent) - if (this.type == TokenType.name) argument = this.parseIdent(false); - else this.unexpected(); - else if (this.type == TokenType.name || this.type == TokenType.bracketL) - argument = this.parseBindingAtom(); - else this.unexpected(); + Expression argument = this.parseBindingAtom(); RestElement node = new RestElement(new SourceLocation(start), argument); return this.finishNode(node); } @@ -2483,18 +2394,18 @@ protected Expression parseBindingAtom() { if (this.type == TokenType.bracketL) { Position start = this.startLoc; this.next(); - List elements = this.parseBindingList(TokenType.bracketR, true, true, false); + List elements = this.parseBindingList(TokenType.bracketR, true, true); ArrayPattern node = new ArrayPattern(new SourceLocation(start), elements); return this.finishNode(node); } - if (this.type == TokenType.braceL) return this.parseObj(true, null); + if (this.type == TokenType.braceL) return this.parseObj(true); return this.parseIdent(false); } protected List parseBindingList( - TokenType close, boolean allowEmpty, boolean allowTrailingComma, boolean allowNonIdent) { + TokenType close, boolean allowEmpty, boolean allowTrailingComma) { List result = new ArrayList(); boolean first = true; while (!this.eat(close)) { @@ -2505,9 +2416,8 @@ protected List parseBindingList( } else if (allowTrailingComma && this.afterTrailingComma(close, false)) { break; } else if (this.type == TokenType.ellipsis) { - result.add(this.processBindingListItem(this.parseRest(allowNonIdent))); - if (this.type == TokenType.comma) - this.raise(this.start, "Comma is not permitted after the rest element"); + result.add(this.processBindingListItem(this.parseRest())); + this.eat(TokenType.comma); this.expect(close); break; } else { @@ -2527,7 +2437,7 @@ protected Expression parseMaybeDefault(Position startLoc, Expression left) { if (this.options.ecmaVersion() < 6 || !this.eat(TokenType.eq)) return left; AssignmentPattern node = new AssignmentPattern( - new SourceLocation(startLoc), "=", left, this.parseMaybeAssign(false, null, null)); + new SourceLocation(startLoc), "=", left, this.parseMaybeAssign(false, null)); return this.finishNode(node); } @@ -2826,7 +2736,7 @@ protected Statement parseStatement(boolean declaration, boolean topLevel, Set= 6 && this.isContextual("of"))) { - this.checkPatternErrors(refDestructuringErrors, true); init = (Expression) this.toAssignable(init, false); this.checkLVal(init, false, null); return this.parseForIn(startLoc, init); - } else { - this.checkExpressionErrors(refDestructuringErrors, true); } return this.parseFor(startLoc, init); } @@ -2972,7 +2878,7 @@ protected ReturnStatement parseReturnStatement(Position startLoc) { if (this.eagerlyTrySemicolon()) { argument = null; } else { - argument = this.parseExpression(false, null); + argument = this.parseExpression(false); this.semicolon(); } return this.finishNode(new ReturnStatement(new SourceLocation(startLoc), argument)); @@ -3005,7 +2911,7 @@ protected SwitchStatement parseSwitchStatement(Position startLoc) { curConsequent = new ArrayList(); this.next(); if (isCase) { - curTest = this.parseExpression(false, null); + curTest = this.parseExpression(false); } else { if (sawDefault) this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"); sawDefault = true; @@ -3031,7 +2937,7 @@ protected ThrowStatement parseThrowStatement(Position startLoc) { this.next(); if (inputSubstring(this.lastTokEnd, this.start).matches("(?s).*(?:" + lineBreak + ").*")) this.raise(this.lastTokEnd, "Illegal newline after throw"); - Expression argument = this.parseExpression(false, null); + Expression argument = this.parseExpression(false); this.semicolon(); return this.finishNode(new ThrowStatement(new SourceLocation(startLoc), argument)); } @@ -3144,9 +3050,9 @@ protected BlockStatement parseBlock(boolean allowStrict) { // expression. protected ForStatement parseFor(Position startLoc, Node init) { this.expect(TokenType.semi); - Expression test = this.type == TokenType.semi ? null : this.parseExpression(false, null); + Expression test = this.type == TokenType.semi ? null : this.parseExpression(false); this.expect(TokenType.semi); - Expression update = this.type == TokenType.parenR ? null : this.parseExpression(false, null); + Expression update = this.type == TokenType.parenR ? null : this.parseExpression(false); this.expect(TokenType.parenR); Statement body = this.parseStatement(false, false); this.labels.pop(); @@ -3160,7 +3066,7 @@ protected Statement parseForIn(Position startLoc, Node left) { SourceLocation loc = new SourceLocation(startLoc); boolean isForIn = this.type == TokenType._in; this.next(); - Expression right = this.parseExpression(false, null); + Expression right = this.parseExpression(false); this.expect(TokenType.parenR); Statement body = this.parseStatement(false, false); this.labels.pop(); @@ -3178,7 +3084,7 @@ protected VariableDeclaration parseVar(Position startLoc, boolean isFor, String Expression id = this.parseVarId(); Expression init = null; if (this.eat(TokenType.eq)) { - init = this.parseMaybeAssign(isFor, null, null); + init = this.parseMaybeAssign(isFor, null); } else if ((kind.equals("const") || kind.equals("using")) && !(this.type == TokenType._in || (this.options.ecmaVersion() >= 6 && this.isContextual("of")))) { @@ -3280,7 +3186,7 @@ protected IFunction parseFunctionRest( protected List parseFunctionParams() { this.expect(TokenType.parenL); List params = - this.parseBindingList(TokenType.parenR, false, this.options.ecmaVersion() >= 8, true); + this.parseBindingList(TokenType.parenR, false, this.options.ecmaVersion() >= 8); this.checkYieldAwaitInDefaultParams(); return params; } @@ -3415,7 +3321,7 @@ protected Identifier parseClassId(boolean isStatement) { } protected Expression parseClassSuper() { - return this.eat(TokenType._extends) ? this.parseExprSubscripts(null) : null; + return this.eat(TokenType._extends) ? this.parseExprSubscripts() : null; } // Parses module export declaration. @@ -3462,7 +3368,7 @@ protected ExportDeclaration parseExportRest(SourceLocation loc, Set expo new ClassDeclaration(ce.getLoc(), ce.getClassDef(), noDeclareKeyword, notAbstract); else declaration = ce; } else { - declaration = this.parseMaybeAssign(false, null, null); + declaration = this.parseMaybeAssign(false, null); this.semicolon(); } return this.finishNode(new ExportDefaultDeclaration(loc, declaration)); @@ -3497,7 +3403,7 @@ protected ExportDeclaration parseExportRest(SourceLocation loc, Set expo protected Expression parseExportFrom( List specifiers, Expression source, boolean expectFrom) { if (this.eatContextual("from")) { - if (this.type == TokenType.string) source = this.parseExprAtom(null); + if (this.type == TokenType.string) source = this.parseExprAtom(); else this.unexpected(); } else { if (expectFrom) this.unexpected(); @@ -3576,7 +3482,7 @@ protected List parseExportSpecifiers(Set exports) { } else { if (this.type == TokenType.string) { // e.g. `export { Foo_new as "Foo::new" }` - Expression string = this.parseExprAtom(null); + Expression string = this.parseExprAtom(); String str = ((Literal)string).getStringValue(); exported = this.finishNode(new Identifier(loc, str)); } else { @@ -3609,7 +3515,7 @@ protected ImportDeclaration parseLegacyModuleImport(Position startLoc) { this.checkLVal(local, true, null); this.expectContextual("from"); if (this.type != TokenType.string) this.unexpected(); - Literal source = (Literal) this.parseExprAtom(null); + Literal source = (Literal) this.parseExprAtom(); this.semicolon(); List specifiers = new ArrayList(); @@ -3625,7 +3531,7 @@ protected Expression parseImportOrExportAttributesAndSemicolon() { if (!this.eatContextual("assert")) { this.expect(TokenType._with); } - result = this.parseObj(false, null); + result = this.parseObj(false); this.semicolon(); } return result; @@ -3638,12 +3544,12 @@ protected ImportDeclaration parseImportRest(SourceLocation loc) { // import '...' if (this.type == TokenType.string) { specifiers = new ArrayList(); - source = (Literal) this.parseExprAtom(null); + source = (Literal) this.parseExprAtom(); } else { specifiers = this.parseImportSpecifiers(phaseModifier); this.expectContextual("from"); if (this.type != TokenType.string) this.unexpected(); - source = (Literal) this.parseExprAtom(null); + source = (Literal) this.parseExprAtom(); } Expression attributes = this.parseImportOrExportAttributesAndSemicolon(); if (specifiers == null) return null; @@ -3698,7 +3604,7 @@ protected ImportSpecifier parseImportSpecifier() { if (this.type == TokenType.string) { // Arbitrary Module Namespace Identifiers // e.g. `import { "Foo::new" as Foo_new } from "./foo.wasm"` - Expression string = this.parseExprAtom(null); + Expression string = this.parseExprAtom(); String str = ((Literal)string).getStringValue(); imported = this.finishNode(new Identifier(loc, str)); // only makes sense if there is a local identifier diff --git a/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java b/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java index 7475994c27ed..ec7d4c74e4ad 100644 --- a/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java +++ b/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java @@ -237,7 +237,7 @@ private void flowParseDeclareModule(Position start) { this.next(); if (this.type == TokenType.string) { - this.parseExprAtom(null); + this.parseExprAtom(); } else { this.parseIdent(false); } @@ -458,7 +458,7 @@ private void flowParseTypeParameterInstantiation() { private void flowParseObjectPropertyKey() { if (this.type == TokenType.num || this.type == TokenType.string) { - this.parseExprAtom(null); + this.parseExprAtom(); } else if ("@@iterator".equals(inputSubstring(start, start + 10))) { // allow `@@iterator` as property name; this doesn't appear to be standard Flow syntax, // but is used a few times in react-native @@ -1158,9 +1158,8 @@ protected Expression parseConditionalRest(boolean noIn, Position start, Expressi } @Override - protected ParenthesisedExpressions parseParenthesisedExpressions( - DestructuringErrors refDestructuringErrors) { - ParenthesisedExpressions pe = super.parseParenthesisedExpressions(refDestructuringErrors); + protected ParenthesisedExpressions parseParenthesisedExpressions() { + ParenthesisedExpressions pe = super.parseParenthesisedExpressions(); // handle return types for arrow functions if (flow() && this.type == TokenType.colon) { @@ -1218,14 +1217,14 @@ protected FieldDefinition parseFieldDefinition(PropertyInfo pi, boolean isStatic // parse type parameters for object method shorthand @Override - protected void parsePropertyValue(PropertyInfo pi, DestructuringErrors refDestructuringErrors) { + protected void parsePropertyValue(PropertyInfo pi) { // method shorthand if (flow() && this.isRelational("<")) { this.flowParseTypeParameterDeclaration(); if (this.type != TokenType.parenL) this.unexpected(); } - super.parsePropertyValue(pi, refDestructuringErrors); + super.parsePropertyValue(pi); } @Override diff --git a/javascript/extractor/src/com/semmle/jcorn/jsx/JSXParser.java b/javascript/extractor/src/com/semmle/jcorn/jsx/JSXParser.java index 6deec72809c3..cabdb9c1e4fd 100644 --- a/javascript/extractor/src/com/semmle/jcorn/jsx/JSXParser.java +++ b/javascript/extractor/src/com/semmle/jcorn/jsx/JSXParser.java @@ -276,7 +276,7 @@ private INode jsx_parseAttributeValue() { this.raise(node, "JSX attributes must only be assigned a non-empty expression"); return node; } else if (type == jsxTagStart || type == string) { - return this.parseExprAtom(null); + return this.parseExprAtom(); } else { this.raise(this.start, "JSX value should be either an expression or a quoted JSX text"); return null; @@ -298,7 +298,7 @@ private JSXExpressionContainer jsx_parseExpressionContainer() { this.next(); INode expression; if (this.type == braceR) expression = this.jsx_parseEmptyExpression(); - else expression = this.parseExpression(false, null); + else expression = this.parseExpression(false); this.expect(braceR); return this.finishNode(new JSXExpressionContainer(loc, expression)); } @@ -308,7 +308,7 @@ private IJSXAttribute jsx_parseAttribute() { SourceLocation loc = new SourceLocation(this.startLoc); if (this.eat(braceL)) { this.expect(ellipsis); - Expression argument = this.parseMaybeAssign(false, null, null); + Expression argument = this.parseMaybeAssign(false, null); this.expect(braceR); return this.finishNode(new JSXSpreadAttribute(loc, argument)); } @@ -358,7 +358,7 @@ private JSXElement jsx_parseElementAt(Position startLoc) { } children.add(this.jsx_parseElementAt(startLoc)); } else if (type == jsxText) { - children.add(this.parseExprAtom(null)); + children.add(this.parseExprAtom()); } else if (type == braceL) { children.add(this.jsx_parseExpressionContainer()); } else { @@ -389,13 +389,13 @@ private JSXElement jsx_parseElement() { } @Override - protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { + protected Expression parseExprAtom() { if (this.type == jsxText) { return this.parseLiteral(this.type, this.value); } else if (this.type == jsxTagStart) { return this.jsx_parseElement(); } else { - return super.parseExprAtom(refDestructuringErrors); + return super.parseExprAtom(); } } diff --git a/javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java b/javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java index 1bc64fc8ffa6..d5f8c0d1d812 100644 --- a/javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java +++ b/javascript/extractor/test/com/semmle/js/extractor/test/RobustnessTests.java @@ -1,11 +1,14 @@ package com.semmle.js.extractor.test; +import com.semmle.jcorn.CustomParser; import com.semmle.jcorn.Options; import com.semmle.jcorn.Parser; +import com.semmle.jcorn.SyntaxError; import com.semmle.util.io.WholeIO; import com.semmle.util.tests.TestPaths; import java.io.File; import java.nio.charset.StandardCharsets; +import org.junit.Assert; import org.junit.Test; public class RobustnessTests { @@ -16,4 +19,31 @@ public void letLookheadTest() { String src = new WholeIO(StandardCharsets.UTF_8.name()).strictread(test); new Parser(new Options(), src, 0).parse(); } + + @Test + public void permissiveDestructuringTest() { + String src = + """ + ({ shorthand = 1 }); + ([...rest,] = values); + function f(...args,) {} + function g(...[first, { nested }],) {} + const arrow = (...args,) => args; + const destructuringArrow = (...{ value },) => value; + async (...[first, { nested }],) => first; + ({ method(...{ value },) {} }); + """; + new Parser(new Options(), src, 0).parse(); + } + + @Test + public void parenthesizedRestParameterTest() { + try { + new CustomParser(new Options().preserveParens(true), "async(...(x)) => x", 0) + .parse(); + Assert.fail("Expected syntax error, but parsing succeeded."); + } catch (SyntaxError expected) { + Assert.assertEquals("Unexpected token (1:9)", expected.getMessage()); + } + } } diff --git a/javascript/extractor/tests/es2015/output/trap/restparms2.js.trap b/javascript/extractor/tests/es2015/output/trap/restparms2.js.trap index e6faa776dd50..924b02a736d4 100644 --- a/javascript/extractor/tests/es2015/output/trap/restparms2.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/restparms2.js.trap @@ -9,27 +9,178 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,1" -locations_default(#20002,#10000,1,1,1,1) -hasLocation(#20001,#20002) -#20003=* -js_parse_errors(#20003,#20001,"Error: Unexpected token","function f(x, ...[y, z]) { -") -#20004=@"loc,{#10000},1,18,1,18" -locations_default(#20004,#10000,1,18,1,18) -hasLocation(#20003,#20004) -#20005=* -lines(#20005,#20001,"function f(x, ...[y, z]) {"," +#20002=* +lines(#20002,#20001,"function f(x, ...[y, z]) {"," ") -#20006=@"loc,{#10000},1,1,1,26" -locations_default(#20006,#10000,1,1,1,26) -hasLocation(#20005,#20006) -#20007=* -lines(#20007,#20001,"}","") -#20008=@"loc,{#10000},2,1,2,1" -locations_default(#20008,#10000,2,1,2,1) -hasLocation(#20007,#20008) -numlines(#20001,2,0,0) -numlines(#10000,2,0,0) +#20003=@"loc,{#10000},1,1,1,26" +locations_default(#20003,#10000,1,1,1,26) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"}","") +#20005=@"loc,{#10000},2,1,2,1" +locations_default(#20005,#10000,2,1,2,1) +hasLocation(#20004,#20005) +numlines(#20001,2,2,0) +#20006=* +tokeninfo(#20006,7,#20001,0,"function") +#20007=@"loc,{#10000},1,1,1,8" +locations_default(#20007,#10000,1,1,1,8) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,1,"f") +#20009=@"loc,{#10000},1,10,1,10" +locations_default(#20009,#10000,1,10,1,10) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,2,"(") +#20011=@"loc,{#10000},1,11,1,11" +locations_default(#20011,#10000,1,11,1,11) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,3,"x") +#20013=@"loc,{#10000},1,12,1,12" +locations_default(#20013,#10000,1,12,1,12) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,4,",") +#20015=@"loc,{#10000},1,13,1,13" +locations_default(#20015,#10000,1,13,1,13) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,5,"...") +#20017=@"loc,{#10000},1,15,1,17" +locations_default(#20017,#10000,1,15,1,17) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,6,"[") +#20019=@"loc,{#10000},1,18,1,18" +locations_default(#20019,#10000,1,18,1,18) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,7,"y") +#20021=@"loc,{#10000},1,19,1,19" +locations_default(#20021,#10000,1,19,1,19) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,8,",") +#20023=@"loc,{#10000},1,20,1,20" +locations_default(#20023,#10000,1,20,1,20) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,9,"z") +#20025=@"loc,{#10000},1,22,1,22" +locations_default(#20025,#10000,1,22,1,22) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,10,"]") +#20027=@"loc,{#10000},1,23,1,23" +locations_default(#20027,#10000,1,23,1,23) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,11,")") +#20029=@"loc,{#10000},1,24,1,24" +locations_default(#20029,#10000,1,24,1,24) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,12,"{") +#20031=@"loc,{#10000},1,26,1,26" +locations_default(#20031,#10000,1,26,1,26) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,13,"}") +hasLocation(#20032,#20005) +#20033=* +tokeninfo(#20033,0,#20001,14,"") +#20034=@"loc,{#10000},2,2,2,1" +locations_default(#20034,#10000,2,2,2,1) +hasLocation(#20033,#20034) +toplevels(#20001,0) +#20035=@"loc,{#10000},1,1,2,1" +locations_default(#20035,#10000,1,1,2,1) +hasLocation(#20001,#20035) +#20036=@"var;{f};{#20000}" +variables(#20036,"f",#20000) +#20037=@"var;{this};{#20000}" +variables(#20037,"this",#20000) +#20038=* +stmts(#20038,17,#20001,0,"functio ... z]) {\n}") +hasLocation(#20038,#20035) +stmt_containers(#20038,#20001) +#20039=* +exprs(#20039,78,#20038,-1,"f") +hasLocation(#20039,#20009) +expr_containers(#20039,#20038) +literals("f","f",#20039) +decl(#20039,#20036) +#20040=* +scopes(#20040,1) +scopenodes(#20038,#20040) +scopenesting(#20040,#20000) +#20041=@"var;{this};{#20040}" +variables(#20041,"this",#20040) +#20042=@"var;{x};{#20040}" +variables(#20042,"x",#20040) +#20043=* +exprs(#20043,78,#20038,0,"x") +hasLocation(#20043,#20013) +expr_containers(#20043,#20038) +literals("x","x",#20043) +decl(#20043,#20042) +#20044=@"var;{y};{#20040}" +variables(#20044,"y",#20040) +#20045=@"var;{z};{#20040}" +variables(#20045,"z",#20040) +#20046=* +exprs(#20046,67,#20038,1,"[y, z]") +#20047=@"loc,{#10000},1,18,1,23" +locations_default(#20047,#10000,1,18,1,23) +hasLocation(#20046,#20047) +expr_containers(#20046,#20038) +#20048=* +exprs(#20048,78,#20046,0,"y") +hasLocation(#20048,#20021) +expr_containers(#20048,#20038) +literals("y","y",#20048) +decl(#20048,#20044) +#20049=* +exprs(#20049,78,#20046,1,"z") +hasLocation(#20049,#20025) +expr_containers(#20049,#20038) +literals("z","z",#20049) +decl(#20049,#20045) +array_size(#20046,2) +#20050=@"var;{arguments};{#20040}" +variables(#20050,"arguments",#20040) +is_arguments_object(#20050) +has_rest_parameter(#20038) +#20051=* +stmts(#20051,1,#20038,-2,"{\n}") +#20052=@"loc,{#10000},1,26,2,1" +locations_default(#20052,#10000,1,26,2,1) +hasLocation(#20051,#20052) +stmt_containers(#20051,#20038) +#20053=* +entry_cfg_node(#20053,#20001) +#20054=@"loc,{#10000},1,1,1,0" +locations_default(#20054,#10000,1,1,1,0) +hasLocation(#20053,#20054) +#20055=* +exit_cfg_node(#20055,#20001) +hasLocation(#20055,#20034) +successor(#20038,#20055) +#20056=* +entry_cfg_node(#20056,#20038) +hasLocation(#20056,#20054) +#20057=* +exit_cfg_node(#20057,#20038) +hasLocation(#20057,#20034) +successor(#20051,#20057) +successor(#20046,#20048) +successor(#20049,#20051) +successor(#20048,#20049) +successor(#20043,#20046) +successor(#20056,#20043) +successor(#20039,#20038) +successor(#20053,#20039) +numlines(#10000,2,2,0) filetype(#10000,"javascript") diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index c4910f0c369c..2d91489d2c7e 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,23 @@ +## 2.10.4 + +No user-facing changes. + +## 2.10.3 + +### Minor Analysis Improvements + +* The Workflow SDK directives `"use workflow"` and `"use step"` are now recognized as known directives, so the `js/unknown-directive` query no longer flags them. + +### Bug Fixes + +* Improved Hapi route handler and request input tracking through custom route registration helpers and higher-order function wrappers. + +## 2.10.2 + +### Minor Analysis Improvements + +* Fastify servers reached through a chainable configuration method, such as `fastify().withTypeProvider()` or `fastify().setValidatorCompiler(...)`, are now recognized as the same server instance. Routes registered on such an instance are now attributed to their server, which may add results for queries such as `js/missing-rate-limiting` where routes were previously not recognized at all, and remove false positives where a globally registered plugin guards them. + ## 2.10.1 No user-facing changes. @@ -647,7 +667,7 @@ No user-facing changes. ### New Features -* Improved support for [Restify](http://restify.com/) framework, leading to more results when scanning applications developed with this framework. +* Improved support for [Restify](https://restify.com/) framework, leading to more results when scanning applications developed with this framework. * Added support for the [Spife](https://github.com/npm/spife) framework. ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.4.0.md b/javascript/ql/lib/change-notes/released/0.4.0.md index cc1366d2ca26..14c1902fb4c9 100644 --- a/javascript/ql/lib/change-notes/released/0.4.0.md +++ b/javascript/ql/lib/change-notes/released/0.4.0.md @@ -2,7 +2,7 @@ ### New Features -* Improved support for [Restify](http://restify.com/) framework, leading to more results when scanning applications developed with this framework. +* Improved support for [Restify](https://restify.com/) framework, leading to more results when scanning applications developed with this framework. * Added support for the [Spife](https://github.com/npm/spife) framework. ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/2.10.2.md b/javascript/ql/lib/change-notes/released/2.10.2.md new file mode 100644 index 000000000000..94c749202ceb --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.10.2.md @@ -0,0 +1,5 @@ +## 2.10.2 + +### Minor Analysis Improvements + +* Fastify servers reached through a chainable configuration method, such as `fastify().withTypeProvider()` or `fastify().setValidatorCompiler(...)`, are now recognized as the same server instance. Routes registered on such an instance are now attributed to their server, which may add results for queries such as `js/missing-rate-limiting` where routes were previously not recognized at all, and remove false positives where a globally registered plugin guards them. diff --git a/javascript/ql/lib/change-notes/released/2.10.3.md b/javascript/ql/lib/change-notes/released/2.10.3.md new file mode 100644 index 000000000000..5f25878cac20 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.10.3.md @@ -0,0 +1,9 @@ +## 2.10.3 + +### Minor Analysis Improvements + +* The Workflow SDK directives `"use workflow"` and `"use step"` are now recognized as known directives, so the `js/unknown-directive` query no longer flags them. + +### Bug Fixes + +* Improved Hapi route handler and request input tracking through custom route registration helpers and higher-order function wrappers. diff --git a/javascript/ql/lib/change-notes/released/2.10.4.md b/javascript/ql/lib/change-notes/released/2.10.4.md new file mode 100644 index 000000000000..755ad628fc97 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.10.4.md @@ -0,0 +1,3 @@ +## 2.10.4 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 1366256715eb..ffc1edf876f3 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.10.1 +lastReleaseVersion: 2.10.4 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 97f274ff58ae..8f76c7a393fa 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.10.1 +version: 2.10.4 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/lib/semmle/javascript/Stmt.qll b/javascript/ql/lib/semmle/javascript/Stmt.qll index cedc3da2e8cb..e709c7217eb2 100644 --- a/javascript/ql/lib/semmle/javascript/Stmt.qll +++ b/javascript/ql/lib/semmle/javascript/Stmt.qll @@ -490,6 +490,32 @@ module Directive { class WorkletDirective extends KnownDirective { WorkletDirective() { this.getDirectiveText() = "worklet" } } + + /** + * A Workflow SDK `use workflow` directive. + * + * Example: + * + * ``` + * "use workflow"; + * ``` + */ + class UseWorkflowDirective extends KnownDirective { + UseWorkflowDirective() { this.getDirectiveText() = "use workflow" } + } + + /** + * A Workflow SDK `use step` directive. + * + * Example: + * + * ``` + * "use step"; + * ``` + */ + class UseStepDirective extends KnownDirective { + UseStepDirective() { this.getDirectiveText() = "use step" } + } } /** diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll index 1e50fda83fcc..8678095904a8 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll @@ -252,7 +252,10 @@ ArgumentPosition decodeUnknownArgumentPosition(AccessPathSyntax::AccessPathToken * `encodeContent` predicate. */ bindingset[token] -ContentSet decodeUnknownContent(AccessPathSyntax::AccessPathTokenBase token) { none() } +ContentSet decodeUnknownContent(AccessPathSyntax::AccessPathTokenBase token) { + token.getName() = "Member" and + result.asPropertyName() = token.getAnArgument() +} /** * Gets a return kind corresponding to the unknown token `token`. diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FunctionWrapperSteps.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FunctionWrapperSteps.qll index dda1ac7ae34f..60fdb119b70f 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FunctionWrapperSteps.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FunctionWrapperSteps.qll @@ -145,3 +145,41 @@ private module Cached { } import Cached + +/** Gets a value referring to a forwarding-wrapper around `func`. */ +private DataFlow::SourceNode trackWrappedFunction( + DataFlow::FunctionNode func, DataFlow::TypeTracker t +) { + t.start() and + functionOneWayForwardingStep(func, result) and + // Exclude functions since ordinary call edges can handle that case. + // This will typically match calls to a "wrapper factory". + not result instanceof DataFlow::FunctionNode + or + functionOneWayForwardingStep(trackWrappedFunction(func, t.continue()), result) + or + exists(DataFlow::TypeTracker t2 | result = trackWrappedFunction(func, t2).track(t2, t)) +} + +/** Gets a value referring to a forwarding-wrapper around `func`. */ +DataFlow::SourceNode trackWrappedFunction(DataFlow::SourceNode func) { + result = trackWrappedFunction(func, DataFlow::TypeTracker::end()) +} + +/** + * Data flow into a concrete function invoked through a forwarding wrapper. + * + * Only arguments with a statically known position and a corresponding non-rest parameter are + * modeled. + */ +private class FunctionWrapperCallStep extends DataFlow::SharedFlowStep { + override predicate step(DataFlow::Node pred, DataFlow::Node succ) { + exists(DataFlow::CallNode call, DataFlow::FunctionNode wrapped, int index | + call = trackWrappedFunction(wrapped).getACall() and + pred = call.getArgument(index) and + succ = wrapped.getParameter(index) and + // A rest parameter receives an array, not the argument at this index. + not succ.(DataFlow::ParameterNode).isRestParameter() + ) + } +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Fastify.qll b/javascript/ql/lib/semmle/javascript/frameworks/Fastify.qll index 26dde3fc78bd..63b6072d8ffa 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Fastify.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Fastify.qll @@ -21,6 +21,27 @@ module Fastify { StandardServerDefinition() { this = DataFlow::moduleImport("fastify").getAnInvocation() } } + /** + * Gets the name of a chainable Fastify configuration method, that is, a method that + * configures the server instance and returns that same instance, so that a call to it + * still refers to the server. + * + * Plugin, hook and route registration (`register`, `addHook`, `onClose`, and the + * shorthand route methods) returns the server as well, but is deliberately excluded + * here, because it already has a meaning in the routing model for Fastify. The + * lifecycle methods `after` and `ready` are excluded too: `after` returns the server + * only when it is given a callback, and `ready` never does. + */ + private string chainableConfigMethodName() { + result = + [ + "withTypeProvider", "addSchema", "addHttpMethod", "addContentTypeParser", "decorate", + "decorateRequest", "decorateReply", "setValidatorCompiler", "setSerializerCompiler", + "setSchemaController", "setReplySerializer", "setSchemaErrorFormatter", "setErrorHandler", + "setNotFoundHandler", "setGenReqId", "setChildLoggerFactory" + ] + } + /** Gets a data flow node referring to a fastify server. */ private DataFlow::SourceNode server(DataFlow::SourceNode creation, DataFlow::TypeTracker t) { t.start() and @@ -31,6 +52,11 @@ module Fastify { t.start() and result = pluginCallback(creation).(DataFlow::FunctionNode).getParameter(0) or + // server.withTypeProvider(), server.setValidatorCompiler(...), and friends return + // the server itself, so the result of such a call still refers to it. + t.start() and + result = server(creation).getAMethodCall(chainableConfigMethodName()) + or exists(DataFlow::TypeTracker t2 | result = server(creation, t2).track(t2, t)) } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Hapi.qll b/javascript/ql/lib/semmle/javascript/frameworks/Hapi.qll index a6dbf40d1e06..36618bffb351 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Hapi.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Hapi.qll @@ -4,6 +4,7 @@ import javascript import semmle.javascript.frameworks.HTTP +private import semmle.javascript.dataflow.internal.CallGraphs module Hapi { /** @@ -101,6 +102,19 @@ module Hapi { override RequestSource src; } + private DataFlow::SourceNode requestInputRef( + RouteHandler rh, string property, DataFlow::TypeTracker t + ) { + t.start() and + result = rh.getARequestSource().ref().getAPropertyRead(property) + or + exists(DataFlow::TypeTracker t2 | result = requestInputRef(rh, property, t2).track(t2, t)) + } + + private DataFlow::SourceNode requestInputRef(RouteHandler rh, string property) { + result = requestInputRef(rh, property, DataFlow::TypeTracker::end()) + } + /** * An access to a user-controlled Hapi request input. */ @@ -115,18 +129,18 @@ module Hapi { // `request.rawPayload` this.(DataFlow::PropRead).accesses(request, "rawPayload") or - exists(DataFlow::PropRead payload | - // `request.payload.name` - payload.accesses(request, "payload") and - this.(DataFlow::PropRead).accesses(payload, _) - ) + // `request.payload` is an object, so prefer a property read if possible. + if exists(requestInputRef(rh, "payload").getAPropertyRead()) + then this = requestInputRef(rh, "payload").getAPropertyRead() + else this = rh.getARequestSource().ref().getAPropertyRead("payload") ) or kind = "parameter" and - exists(DataFlow::PropRead query | - // `request.query.name` - query.accesses(request, ["query", "params"]) and - this.(DataFlow::PropRead).accesses(query, _) + exists(string property | property = ["query", "params"] | + // These are objects, so prefer a property read if possible. + if exists(requestInputRef(rh, property).getAPropertyRead()) + then this = requestInputRef(rh, property).getAPropertyRead() + else this = rh.getARequestSource().ref().getAPropertyRead(property) ) or exists(DataFlow::PropRead url | @@ -199,30 +213,10 @@ module Hapi { */ class RouteSetup extends DataFlow::MethodCallNode, Http::Servers::StandardRouteSetup { ServerDefinition server; - DataFlow::Node handler; RouteSetup() { server.ref().getAMethodCall() = this and - ( - // server.route({ handler: fun }) - this.getMethodName() = "route" and - this.getOptionArgument(0, "handler") = handler - or - // server.ext('/', fun) - this.getMethodName() = "ext" and - handler = this.getArgument(1) - or - // server.route([{ handler(request){}]) - this.getMethodName() = "route" and - handler = - this.getArgument(0) - .getALocalSource() - .(DataFlow::ArrayCreationNode) - .getAnElement() - .getALocalSource() - .getAPropertySource("handler") - .getAFunctionValue() - ) + this.getMethodName() = ["route", "ext"] } override DataFlow::SourceNode getARouteHandler() { @@ -233,11 +227,45 @@ module Hapi { t.start() and result = this.getRouteHandler().getALocalSource() or - exists(DataFlow::TypeBackTracker t2 | result = this.getARouteHandler(t2).backtrack(t2, t)) + this.getMethodName() = "route" and + t.isInProp("handler") and + result = this.getArgument(0).getALocalSource() + or + exists(DataFlow::TypeBackTracker t2, DataFlow::SourceNode succ | + succ = this.getARouteHandler(t2) + | + result = succ.backtrack(t2, t) + or + Http::routeHandlerStep(result, succ) and + t = t2 + or + DataFlow::SharedFlowStep::storeStep(result.getALocalUse(), succ, + DataFlow::PseudoProperties::arrayElement()) and + t = t2.continue() + ) } pragma[noinline] - private DataFlow::Node getRouteHandler() { result = handler } + private DataFlow::Node getRouteHandler() { + // server.route({ handler: fun }) + this.getMethodName() = "route" and + this.getOptionArgument(0, "handler") = result + or + // server.ext('/', fun) + this.getMethodName() = "ext" and + result = this.getArgument(1) + or + // server.route([{ handler(request){}]) + this.getMethodName() = "route" and + result = + this.getArgument(0) + .getALocalSource() + .(DataFlow::ArrayCreationNode) + .getAnElement() + .getALocalSource() + .getAPropertySource("handler") + .getAFunctionValue() + } override DataFlow::Node getServer() { result = server } } @@ -263,6 +291,56 @@ module Hapi { } } + private DataFlow::SourceNode routeDefinitionRef( + DataFlow::ObjectLiteralNode definition, DataFlow::TypeTracker t + ) { + t.start() and + result = definition + or + exists(DataFlow::TypeTracker t2 | result = routeDefinitionRef(definition, t2).track(t2, t)) + } + + private predicate handlerRegistration( + DataFlow::FunctionNode handler, DataFlow::ObjectLiteralNode definition + ) { + exists( + DataFlow::CallNode registration, DataFlow::FunctionNode registrar, + DataFlow::ParameterNode handlerParameter, DataFlow::SourceNode handlerRef, int index + | + registration.getACallee() = registrar.getFunction() and + handlerParameter = registrar.getParameter(index) and + handlerParameter.flowsTo(definition.getAPropertyWrite("handler").getRhs()) and + ( + handlerRef = handler + or + handlerRef = CallGraph::callgraphStep(handler, DataFlow::TypeTracker::end()) + ) and + handlerRef.flowsTo(registration.getArgument(index)) + ) + } + + /** Data flow through handlers stored in route definitions by registration helpers. */ + private class RegisteredHandlerCallStep extends DataFlow::SharedFlowStep { + DataFlow::CallNode call; + DataFlow::FunctionNode handler; + + RegisteredHandlerCallStep() { + exists(DataFlow::ObjectLiteralNode definition, DataFlow::PropRead handlerRead | + handlerRegistration(handler, definition) and + handlerRead.getPropertyName() = "handler" and + routeDefinitionRef(definition, DataFlow::TypeTracker::end()).flowsTo(handlerRead.getBase()) and + call.getCalleeNode() = handlerRead + ) + } + + override predicate step(DataFlow::Node pred, DataFlow::Node succ) { + exists(int index | + pred = call.getArgument(index) and + succ = handler.getParameter(index) + ) + } + } + /** * A function that looks like a Hapi route handler and flows to a route setup. */ diff --git a/javascript/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/javascript/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 55892be75d79..068f69d0013c 100644 --- a/javascript/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/javascript/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import javascript private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/javascript/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/javascript/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index 42eb94230ae6..d73cdcd321b5 100644 --- a/javascript/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/javascript/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -8,6 +8,16 @@ module Impl implements InlineExpectationsTestSig { class Location = JS::Location; + string getRelativeUrl(Location location) { + exists(JS::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } + abstract private class ExpectationCommentImpl extends Locatable { abstract string getContents(); diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 541393cea333..825eedb33c2c 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.4.8 + +No user-facing changes. + +## 2.4.7 + +No user-facing changes. + +## 2.4.6 + +No user-facing changes. + ## 2.4.5 ### Minor Analysis Improvements diff --git a/javascript/ql/src/change-notes/released/2.4.6.md b/javascript/ql/src/change-notes/released/2.4.6.md new file mode 100644 index 000000000000..9c588051a43a --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.4.6.md @@ -0,0 +1,3 @@ +## 2.4.6 + +No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.4.7.md b/javascript/ql/src/change-notes/released/2.4.7.md new file mode 100644 index 000000000000..a281729de6d8 --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.4.7.md @@ -0,0 +1,3 @@ +## 2.4.7 + +No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.4.8.md b/javascript/ql/src/change-notes/released/2.4.8.md new file mode 100644 index 000000000000..b26883844325 --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.4.8.md @@ -0,0 +1,3 @@ +## 2.4.8 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 4d5f66ce2c87..33a159ab6e0e 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.4.5 +lastReleaseVersion: 2.4.8 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 83e2caff741c..dd3d317b8223 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.4.5 +version: 2.4.8 groups: - javascript - queries diff --git a/javascript/ql/test/library-tests/AwaitPropertyName/AwaitPropertyName.expected b/javascript/ql/test/library-tests/AwaitPropertyName/AwaitPropertyName.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/javascript/ql/test/library-tests/AwaitPropertyName/AwaitPropertyName.ql b/javascript/ql/test/library-tests/AwaitPropertyName/AwaitPropertyName.ql new file mode 100644 index 000000000000..939784b52eab --- /dev/null +++ b/javascript/ql/test/library-tests/AwaitPropertyName/AwaitPropertyName.ql @@ -0,0 +1,4 @@ +import javascript + +from JSParseError err +select err diff --git a/javascript/ql/test/library-tests/AwaitPropertyName/options b/javascript/ql/test/library-tests/AwaitPropertyName/options new file mode 100644 index 000000000000..13f987b19caf --- /dev/null +++ b/javascript/ql/test/library-tests/AwaitPropertyName/options @@ -0,0 +1 @@ +semmle-extractor-options: --tolerate-parse-errors diff --git a/javascript/ql/test/library-tests/AwaitPropertyName/tst.js b/javascript/ql/test/library-tests/AwaitPropertyName/tst.js new file mode 100644 index 000000000000..4edc377402c0 --- /dev/null +++ b/javascript/ql/test/library-tests/AwaitPropertyName/tst.js @@ -0,0 +1,10 @@ +const pool = { await() { return 42; } }; +const generator = { yield() { return 42; } }; + +async function issue22499() { + return await pool.await(); +} + +function* yieldPropertyName() { + return generator.yield(); +} diff --git a/javascript/ql/test/library-tests/Directives/KnownDirective.expected b/javascript/ql/test/library-tests/Directives/KnownDirective.expected index 89efb1e24dcd..50fb4593dcf4 100644 --- a/javascript/ql/test/library-tests/Directives/KnownDirective.expected +++ b/javascript/ql/test/library-tests/Directives/KnownDirective.expected @@ -19,4 +19,6 @@ | tst.js:27:3:27:14 | 'use cache'; | use cache | | tst.js:28:3:28:22 | 'use cache: remote'; | use cache: remote | | tst.js:29:3:29:23 | 'use ca ... ivate'; | use cache: private | -| tst.js:36:5:36:17 | 'use strict'; | use strict | +| tst.js:30:3:30:17 | 'use workflow'; | use workflow | +| tst.js:31:3:31:13 | 'use step'; | use step | +| tst.js:38:5:38:17 | 'use strict'; | use strict | diff --git a/javascript/ql/test/library-tests/Directives/tst.js b/javascript/ql/test/library-tests/Directives/tst.js index 30a0772a610e..676972b99825 100644 --- a/javascript/ql/test/library-tests/Directives/tst.js +++ b/javascript/ql/test/library-tests/Directives/tst.js @@ -27,6 +27,8 @@ function f() { 'use cache'; 'use cache: remote'; 'use cache: private'; + 'use workflow'; + 'use step'; ; 'use strict'; // but this isn't a directive } diff --git a/javascript/ql/test/library-tests/FlowSummary/CaptureConsistency.expected b/javascript/ql/test/library-tests/FlowSummary/CaptureConsistency.expected index 35f4edcf1fb9..e331f0ddde45 100644 --- a/javascript/ql/test/library-tests/FlowSummary/CaptureConsistency.expected +++ b/javascript/ql/test/library-tests/FlowSummary/CaptureConsistency.expected @@ -15,3 +15,4 @@ closureAliasMustBeInSameScope variableAccessAstNesting uniqueCallableLocation consistencyOverview +ambiguousReadNode diff --git a/javascript/ql/test/library-tests/FlowSummary/DataFlowConsistency.expected b/javascript/ql/test/library-tests/FlowSummary/DataFlowConsistency.expected index 51612c5b97ae..84608216a9ff 100644 --- a/javascript/ql/test/library-tests/FlowSummary/DataFlowConsistency.expected +++ b/javascript/ql/test/library-tests/FlowSummary/DataFlowConsistency.expected @@ -18,6 +18,7 @@ postIsInSameCallable reverseRead | tst.js:109:11:113:3 | [dynamic parameter array] | Origin of readStep is missing a PostUpdateNode. | | tst.js:267:28:267:31 | map3 | Origin of readStep is missing a PostUpdateNode. | +| tst.js:305:30:305:43 | constructedMap | Origin of readStep is missing a PostUpdateNode. | argHasPostUpdate postWithInFlow viableImplInCallContextTooLarge diff --git a/javascript/ql/test/library-tests/FlowSummary/tst.js b/javascript/ql/test/library-tests/FlowSummary/tst.js index f3bf8513840e..a006f9c4230f 100644 --- a/javascript/ql/test/library-tests/FlowSummary/tst.js +++ b/javascript/ql/test/library-tests/FlowSummary/tst.js @@ -299,3 +299,11 @@ function m18() { sink(dynamicParam1("safe", ...[source()])); // NOT OK sink(dynamicParam1(source(), ...["safe"])); // OK } + +function m19() { + const constructedMap = new Map([["key", source()]]); + for (const [key, value] of constructedMap) { + sink(key); // OK + sink(value); // NOT OK + } +} \ No newline at end of file diff --git a/javascript/ql/test/library-tests/TripleDot/tst.js b/javascript/ql/test/library-tests/TripleDot/tst.js index 6f776264e84f..f7aedbdcf339 100644 --- a/javascript/ql/test/library-tests/TripleDot/tst.js +++ b/javascript/ql/test/library-tests/TripleDot/tst.js @@ -172,3 +172,19 @@ function t16() { sink(array[2]); // $ hasValueFlow=t16.1 sink(array); // $ hasTaintFlow=t16.1 } + +function t17() { + function target(...[x, y]) { + sink(x); // $ hasValueFlow=t17.1 + sink(y); // $ hasValueFlow=t17.2 + } + target(source("t17.1"), source("t17.2"), source("t17.3")); +} + +function t18() { + function target(...{0: x, 1: y}) { + sink(x); // $ hasValueFlow=t18.1 + sink(y); // $ hasValueFlow=t18.2 + } + target(source("t18.1"), source("t18.2"), source("t18.3")); +} diff --git a/javascript/ql/test/library-tests/frameworks/fastify/src/fastify.js b/javascript/ql/test/library-tests/frameworks/fastify/src/fastify.js index 8c5264b50e8f..c65b739d726c 100644 --- a/javascript/ql/test/library-tests/frameworks/fastify/src/fastify.js +++ b/javascript/ql/test/library-tests/frameworks/fastify/src/fastify.js @@ -90,3 +90,13 @@ fastifyWithObjects4.post( request.params; } ); + +// the server is reached through a chainable configuration method, which returns the +// same instance +var fastifyChained = require("fastify")().withTypeProvider(); +fastifyChained.get( + "/", + /* handler */ (request, reply) => { + reply.send({ hello: "world" }); // response + } +); diff --git a/javascript/ql/test/library-tests/frameworks/fastify/tests.expected b/javascript/ql/test/library-tests/frameworks/fastify/tests.expected index a0f2fd1db671..e2b3b303a6ea 100644 --- a/javascript/ql/test/library-tests/frameworks/fastify/tests.expected +++ b/javascript/ql/test/library-tests/frameworks/fastify/tests.expected @@ -7,6 +7,7 @@ test_RouteSetup | src/fastify.js:63:1:70:1 | fastify ... ;\\n }\\n) | | src/fastify.js:74:1:81:1 | fastify ... ;\\n }\\n) | | src/fastify.js:85:1:92:1 | fastify ... ;\\n }\\n) | +| src/fastify.js:97:1:102:1 | fastify ... e\\n }\\n) | test_HeaderAccess | src/fastify.js:39:5:39:24 | request.headers.name | name | test_RouteHandler @@ -25,6 +26,7 @@ test_RouteHandler | src/fastify.js:65:17:69:3 | functio ... ms;\\n } | src/fastify.js:61:27:61:46 | require("fastify")() | | src/fastify.js:76:17:80:3 | functio ... ms;\\n } | src/fastify.js:72:27:72:46 | require("fastify")() | | src/fastify.js:87:17:91:3 | functio ... ms;\\n } | src/fastify.js:83:27:83:46 | require("fastify")() | +| src/fastify.js:99:17:101:3 | (reques ... nse\\n } | src/fastify.js:96:22:96:41 | require("fastify")() | test_HeaderDefinition | src/fastify.js:42:5:42:33 | reply.h ... value") | src/fastify.js:34:17:46:3 | functio ... eam\\n } | | src/fastify.js:43:5:43:36 | reply.h ... lue" }) | src/fastify.js:34:17:46:3 | functio ... eam\\n } | @@ -34,6 +36,7 @@ test_ServerDefinition | src/fastify.js:61:27:61:46 | require("fastify")() | | src/fastify.js:72:27:72:46 | require("fastify")() | | src/fastify.js:83:27:83:46 | require("fastify")() | +| src/fastify.js:96:22:96:41 | require("fastify")() | test_RedirectInvocation | src/fastify.js:44:5:44:29 | reply.r ... e, url) | src/fastify.js:34:17:46:3 | functio ... eam\\n } | test_RequestInputAccess @@ -57,6 +60,7 @@ test_ResponseSendArgument | src/fastify.js:6:12:6:29 | { hello: "world" } | src/fastify.js:5:17:7:3 | async ( ... nse\\n } | | src/fastify.js:27:16:27:33 | { hello: "world" } | src/fastify.js:26:17:28:3 | (reques ... nse\\n } | | src/fastify.js:45:16:45:22 | payload | src/fastify.js:34:17:46:3 | functio ... eam\\n } | +| src/fastify.js:100:16:100:33 | { hello: "world" } | src/fastify.js:99:17:101:3 | (reques ... nse\\n } | test_RouteSetup_getServer | src/fastify.js:3:1:8:1 | fastify ... e\\n }\\n) | src/fastify.js:1:15:1:34 | require("fastify")() | | src/fastify.js:10:1:21:2 | fastify ... > {}\\n}) | src/fastify.js:1:15:1:34 | require("fastify")() | @@ -66,6 +70,7 @@ test_RouteSetup_getServer | src/fastify.js:63:1:70:1 | fastify ... ;\\n }\\n) | src/fastify.js:61:27:61:46 | require("fastify")() | | src/fastify.js:74:1:81:1 | fastify ... ;\\n }\\n) | src/fastify.js:72:27:72:46 | require("fastify")() | | src/fastify.js:85:1:92:1 | fastify ... ;\\n }\\n) | src/fastify.js:83:27:83:46 | require("fastify")() | +| src/fastify.js:97:1:102:1 | fastify ... e\\n }\\n) | src/fastify.js:96:22:96:41 | require("fastify")() | test_HeaderDefinition_defines | src/fastify.js:42:5:42:33 | reply.h ... value") | name | value | | src/fastify.js:43:5:43:36 | reply.h ... lue" }) | name | value | @@ -85,6 +90,7 @@ test_RouteSetup_getARouteHandler | src/fastify.js:63:1:70:1 | fastify ... ;\\n }\\n) | src/fastify.js:65:17:69:3 | functio ... ms;\\n } | | src/fastify.js:74:1:81:1 | fastify ... ;\\n }\\n) | src/fastify.js:76:17:80:3 | functio ... ms;\\n } | | src/fastify.js:85:1:92:1 | fastify ... ;\\n }\\n) | src/fastify.js:87:17:91:3 | functio ... ms;\\n } | +| src/fastify.js:97:1:102:1 | fastify ... e\\n }\\n) | src/fastify.js:99:17:101:3 | (reques ... nse\\n } | test_RouteHandler_getARequestExpr | src/fastify.js:5:17:7:3 | async ( ... nse\\n } | src/fastify.js:5:24:5:30 | request | | src/fastify.js:13:28:13:55 | (reques ... ) => {} | src/fastify.js:13:29:13:35 | request | @@ -122,6 +128,7 @@ test_RouteHandler_getARequestExpr | src/fastify.js:87:17:91:3 | functio ... ms;\\n } | src/fastify.js:88:5:88:11 | request | | src/fastify.js:87:17:91:3 | functio ... ms;\\n } | src/fastify.js:89:5:89:11 | request | | src/fastify.js:87:17:91:3 | functio ... ms;\\n } | src/fastify.js:90:5:90:11 | request | +| src/fastify.js:99:17:101:3 | (reques ... nse\\n } | src/fastify.js:99:18:99:24 | request | test_HeaderDefinition_getAHeaderName | src/fastify.js:42:5:42:33 | reply.h ... value") | name | | src/fastify.js:43:5:43:36 | reply.h ... lue" }) | name | diff --git a/javascript/ql/test/library-tests/frameworks/hapi/WrappedRouteFlow.qll b/javascript/ql/test/library-tests/frameworks/hapi/WrappedRouteFlow.qll new file mode 100644 index 000000000000..930167bd9cc7 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/hapi/WrappedRouteFlow.qll @@ -0,0 +1,15 @@ +import javascript + +module WrappedRouteConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof Http::RequestInputAccess } + + predicate isSink(DataFlow::Node sink) { + sink = DataFlow::globalVarRef("sink").getACall().getArgument(0) + } +} + +module WrappedRouteTaint = TaintTracking::Global; + +query predicate test_WrappedRouteFlow(DataFlow::Node source, DataFlow::Node sink) { + WrappedRouteTaint::flow(source, sink) +} diff --git a/javascript/ql/test/library-tests/frameworks/hapi/src/hapi.js b/javascript/ql/test/library-tests/frameworks/hapi/src/hapi.js index 467c0e801595..bfc2ebe8a020 100644 --- a/javascript/ql/test/library-tests/frameworks/hapi/src/hapi.js +++ b/javascript/ql/test/library-tests/frameworks/hapi/src/hapi.js @@ -19,8 +19,8 @@ server2.ext('onPreResponse', function handler3(request, reply) { // HTTP::RouteH function handler4(request, reply){ request.rawPayload; - request.payload.foo; - request.query.bar; + getRequest(request).payload.foo; + getRequest(request).query.bar; getRequest(request).params.bar; request.url.path; request.headers.baz; request.state.token; @@ -34,3 +34,7 @@ function getHandler() { return function (req, h){} } server2.route({handler: getHandler()}); + +function getRequest(request) { + return request; +} diff --git a/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route-cache.js b/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route-cache.js new file mode 100644 index 000000000000..7b1e7c59f008 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route-cache.js @@ -0,0 +1,7 @@ +function createCached(fn) { + return async function (...args) { + return fn(...args); + }; +} + +module.exports = { createCached }; diff --git a/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route-configurator.js b/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route-configurator.js new file mode 100644 index 000000000000..fcb26aad8fa0 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route-configurator.js @@ -0,0 +1,30 @@ +const endpoints = []; + +function apiEndpoint(method, path, handler) { + endpoints.push({ method, path, handler }); +} + +function createRouteConfig(method, path, handler) { + const hapiHandler = async function (request, h) { + return handler(request.params, request.query, request.payload); + }; + + return { + method, + path, + handler: hapiHandler, + }; +} + +function registerEndpoints(server, serviceInstance) { + for (const definition of endpoints) { + const wrapped = async (params, query, payload) => { + return definition.handler.call(serviceInstance, params, query, payload); + }; + + const config = createRouteConfig(definition.method, definition.path, wrapped); + server.route(config); + } +} + +module.exports = { apiEndpoint, registerEndpoints }; diff --git a/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route-service.js b/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route-service.js new file mode 100644 index 000000000000..9e495b8e0fde --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route-service.js @@ -0,0 +1,15 @@ +const { createCached } = require("./wrapped-route-cache"); + +class ReportService { + async runQuery(filter) { + sink(filter); + } +} + +const service = new ReportService(); + +const getReportCached = createCached(async function (filter) { + return service.runQuery(filter); +}); + +module.exports = { getReportCached }; diff --git a/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route.js b/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route.js new file mode 100644 index 000000000000..319b57f8c348 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/hapi/src/wrapped-route.js @@ -0,0 +1,22 @@ +const Hapi = require("@hapi/hapi"); +const { + apiEndpoint, + registerEndpoints, +} = require("./wrapped-route-configurator"); +const { getReportCached } = require("./wrapped-route-service"); + +class ReportRoutes { + async getReport(params, query) { + return getReportCached(query.filter); + } +} + +apiEndpoint("GET", "/reports", ReportRoutes.prototype.getReport); + +async function main() { + const server = Hapi.server(); + registerEndpoints(server, new ReportRoutes()); + return server; +} + +main(); diff --git a/javascript/ql/test/library-tests/frameworks/hapi/tests.expected b/javascript/ql/test/library-tests/frameworks/hapi/tests.expected index 730bae77bf93..6d53a86165f8 100644 --- a/javascript/ql/test/library-tests/frameworks/hapi/tests.expected +++ b/javascript/ql/test/library-tests/frameworks/hapi/tests.expected @@ -14,6 +14,7 @@ test_RouteSetup | src/hapihapi.js:17:1:18:2 | server2 ... dler\\n}) | | src/hapihapi.js:29:1:29:20 | server2.route(route) | | src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | +| src/wrapped-route-configurator.js:26:5:26:24 | server.route(config) | test_RequestExpr | src/hapi.js:13:32:13:38 | request | src/hapi.js:13:14:15:5 | functio ... n\\n } | | src/hapi.js:13:32:13:38 | request | src/hapi.js:13:14:15:5 | functio ... n\\n } | @@ -22,12 +23,20 @@ test_RequestExpr | src/hapi.js:20:19:20:25 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:20:19:20:25 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:21:3:21:9 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | -| src/hapi.js:22:3:22:9 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | -| src/hapi.js:23:3:23:9 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:22:3:22:21 | getRequest(request) | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:22:14:22:20 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:23:3:23:21 | getRequest(request) | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:23:14:23:20 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:23:34:23:52 | getRequest(request) | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:23:45:23:51 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:24:3:24:9 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:25:3:25:9 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:26:3:26:9 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:34:22:34:24 | req | src/hapi.js:34:12:34:30 | function (req, h){} | +| src/hapi.js:38:1:40:1 | return of function getRequest | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:38:21:38:27 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:38:21:38:27 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:39:10:39:16 | request | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapiglue.js:13:32:13:38 | request | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | | src/hapiglue.js:13:32:13:38 | request | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | | src/hapiglue.js:14:9:14:15 | request | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | @@ -56,6 +65,11 @@ test_RequestExpr | src/hapihapi.js:25:3:25:9 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapihapi.js:26:3:26:9 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapihapi.js:34:22:34:24 | req | src/hapihapi.js:34:12:34:30 | function (req, h){} | +| src/wrapped-route-configurator.js:8:39:8:45 | request | src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | +| src/wrapped-route-configurator.js:8:39:8:45 | request | src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | +| src/wrapped-route-configurator.js:9:20:9:26 | request | src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | +| src/wrapped-route-configurator.js:9:36:9:42 | request | src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | +| src/wrapped-route-configurator.js:9:51:9:57 | request | src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | test_HeaderAccess | src/hapi.js:25:3:25:21 | request.headers.baz | baz | | src/hapiglue.js:27:3:27:21 | request.headers.baz | baz | @@ -80,6 +94,7 @@ test_RouteHandler | src/hapihapi.js:17:30:18:1 | functio ... ndler\\n} | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | | src/hapihapi.js:34:12:34:30 | function (req, h){} | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | src/wrapped-route.js:17:18:17:30 | Hapi.server() | test_HeaderDefinition | src/hapi.js:14:9:14:46 | request ... 1', '') | src/hapi.js:13:14:15:5 | functio ... n\\n } | | src/hapiglue.js:14:9:14:46 | request ... 1', '') | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | @@ -93,10 +108,12 @@ test_ServerDefinition | src/hapiglue.js:44:45:44:51 | server_ | | src/hapihapi.js:1:15:1:50 | new (re ... erver() | | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/wrapped-route.js:17:18:17:30 | Hapi.server() | test_RequestInputAccess | src/hapi.js:21:3:21:20 | request.rawPayload | body | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | -| src/hapi.js:22:3:22:21 | request.payload.foo | body | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | -| src/hapi.js:23:3:23:19 | request.query.bar | parameter | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:22:3:22:33 | getRequ ... oad.foo | body | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:23:3:23:31 | getRequ ... ery.bar | parameter | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapi.js:23:34:23:63 | getRequ ... ams.bar | parameter | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:24:3:24:18 | request.url.path | url | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:25:3:25:21 | request.headers.baz | header | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:26:3:26:21 | request.state.token | cookie | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | @@ -114,6 +131,9 @@ test_RequestInputAccess | src/hapihapi.js:24:3:24:18 | request.url.path | url | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapihapi.js:25:3:25:21 | request.headers.baz | header | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapihapi.js:26:3:26:21 | request.state.token | cookie | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/wrapped-route-configurator.js:9:20:9:33 | request.params | parameter | src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | +| src/wrapped-route-configurator.js:9:36:9:48 | request.query | parameter | src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | +| src/wrapped-route-configurator.js:9:51:9:65 | request.payload | body | src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | test_RouteSetup_getServer | src/hapi.js:7:1:9:2 | server2 ... ler1\\n}) | src/hapi.js:4:15:4:31 | new Hapi.Server() | | src/hapi.js:12:1:15:7 | server2 ... }}) | src/hapi.js:4:15:4:31 | new Hapi.Server() | @@ -130,6 +150,7 @@ test_RouteSetup_getServer | src/hapihapi.js:17:1:18:2 | server2 ... dler\\n}) | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | | src/hapihapi.js:29:1:29:20 | server2.route(route) | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | | src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/wrapped-route-configurator.js:26:5:26:24 | server.route(config) | src/wrapped-route.js:17:18:17:30 | Hapi.server() | test_HeaderDefinition_defines | src/hapi.js:14:9:14:46 | request ... 1', '') | header1 | | | src/hapiglue.js:14:9:14:46 | request ... 1', '') | header1 | | @@ -156,6 +177,7 @@ test_RouteSetup_getARouteHandler | src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | src/hapihapi.js:33:1:35:1 | return of function getHandler | | src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | src/hapihapi.js:34:12:34:30 | function (req, h){} | | src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | src/hapihapi.js:36:25:36:36 | getHandler() | +| src/wrapped-route-configurator.js:26:5:26:24 | server.route(config) | src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | test_RouteHandler_getARequestExpr | src/hapi.js:13:14:15:5 | functio ... n\\n } | src/hapi.js:13:32:13:38 | request | | src/hapi.js:13:14:15:5 | functio ... n\\n } | src/hapi.js:13:32:13:38 | request | @@ -164,11 +186,19 @@ test_RouteHandler_getARequestExpr | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:20:19:20:25 | request | | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:20:19:20:25 | request | | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:21:3:21:9 | request | -| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:22:3:22:9 | request | -| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:23:3:23:9 | request | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:22:3:22:21 | getRequest(request) | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:22:14:22:20 | request | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:23:3:23:21 | getRequest(request) | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:23:14:23:20 | request | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:23:34:23:52 | getRequest(request) | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:23:45:23:51 | request | | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:24:3:24:9 | request | | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:25:3:25:9 | request | | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:26:3:26:9 | request | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:38:1:40:1 | return of function getRequest | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:38:21:38:27 | request | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:38:21:38:27 | request | +| src/hapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapi.js:39:10:39:16 | request | | src/hapi.js:34:12:34:30 | function (req, h){} | src/hapi.js:34:22:34:24 | req | | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | src/hapiglue.js:13:32:13:38 | request | | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | src/hapiglue.js:13:32:13:38 | request | @@ -198,6 +228,11 @@ test_RouteHandler_getARequestExpr | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:25:3:25:9 | request | | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:26:3:26:9 | request | | src/hapihapi.js:34:12:34:30 | function (req, h){} | src/hapihapi.js:34:22:34:24 | req | +| src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | src/wrapped-route-configurator.js:8:39:8:45 | request | +| src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | src/wrapped-route-configurator.js:8:39:8:45 | request | +| src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | src/wrapped-route-configurator.js:9:20:9:26 | request | +| src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | src/wrapped-route-configurator.js:9:36:9:42 | request | +| src/wrapped-route-configurator.js:8:23:10:3 | async f ... d);\\n } | src/wrapped-route-configurator.js:9:51:9:57 | request | test_HeaderDefinition_getAHeaderName | src/hapi.js:14:9:14:46 | request ... 1', '') | header1 | | src/hapiglue.js:14:9:14:46 | request ... 1', '') | header1 | @@ -206,3 +241,5 @@ test_RouteHandler_getAResponseHeader | src/hapi.js:13:14:15:5 | functio ... n\\n } | header1 | src/hapi.js:14:9:14:46 | request ... 1', '') | | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | header1 | src/hapiglue.js:14:9:14:46 | request ... 1', '') | | src/hapihapi.js:13:14:15:5 | functio ... n\\n } | header1 | src/hapihapi.js:14:9:14:46 | request ... 1', '') | +test_WrappedRouteFlow +| src/wrapped-route-configurator.js:9:36:9:48 | request.query | src/wrapped-route-service.js:5:10:5:15 | filter | diff --git a/javascript/ql/test/library-tests/frameworks/hapi/tests.ql b/javascript/ql/test/library-tests/frameworks/hapi/tests.ql index 396381b2b239..541c165d5e7f 100644 --- a/javascript/ql/test/library-tests/frameworks/hapi/tests.ql +++ b/javascript/ql/test/library-tests/frameworks/hapi/tests.ql @@ -12,3 +12,4 @@ import RouteSetup_getARouteHandler import RouteHandler import RequestExpr import RouteHandler_getARequestExpr +import WrappedRouteFlow diff --git a/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.expected b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.expected new file mode 100644 index 000000000000..be236f3a50c0 --- /dev/null +++ b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.expected @@ -0,0 +1 @@ +| ai | diff --git a/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml new file mode 100644 index 000000000000..e30874b74455 --- /dev/null +++ b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["ai", true, 0] diff --git a/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ql b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ql new file mode 100644 index 000000000000..298fb583532d --- /dev/null +++ b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ql @@ -0,0 +1,6 @@ +private import codeql.threatmodels.ThreatModels + +where + knownThreatModel("ai") and + currentThreatModel("ai") +select "ai" diff --git a/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected b/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected index 4d089fdba5be..d19dd5d69d88 100644 --- a/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected +++ b/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected @@ -11,7 +11,7 @@ | UnknownDirective.js:12:5:12:17 | "use struct;" | Unknown directive: 'use struct;'. | | UnknownDirective.js:13:5:13:17 | "Use Strict"; | Unknown directive: 'Use Strict'. | | UnknownDirective.js:14:5:14:14 | "use bar"; | Unknown directive: 'use bar'. | -| UnknownDirective.js:43:5:43:17 | "[0, 0, 0];"; | Unknown directive: '[0, 0, 0];'. | -| UnknownDirective.js:44:5:44:65 | "[0, 0, ... , 0];"; | Unknown directive: '[0, 0, 0, 0, 0, 0, 0 ... (truncated)'. | -| UnknownDirective.js:50:5:50:15 | ":nomunge"; | Unknown directive: ':nomunge'. | -| UnknownDirective.js:51:5:51:30 | "foo(), ... munge"; | Unknown directive: 'foo(), bar, baz:nomu ... (truncated)'. | +| UnknownDirective.js:45:5:45:17 | "[0, 0, 0];"; | Unknown directive: '[0, 0, 0];'. | +| UnknownDirective.js:46:5:46:65 | "[0, 0, ... , 0];"; | Unknown directive: '[0, 0, 0, 0, 0, 0, 0 ... (truncated)'. | +| UnknownDirective.js:52:5:52:15 | ":nomunge"; | Unknown directive: ':nomunge'. | +| UnknownDirective.js:53:5:53:30 | "foo(), ... munge"; | Unknown directive: 'foo(), bar, baz:nomu ... (truncated)'. | diff --git a/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js b/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js index 78c0d79f2c1a..5e4d18a381e0 100644 --- a/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js +++ b/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js @@ -37,6 +37,8 @@ function good() { "use cache"; "use cache: remote"; "use cache: private"; + "use workflow"; + "use step"; } function data() { diff --git a/javascript/ql/test/query-tests/Security/CWE-770/MissingRateLimit/MissingRateLimiting.expected b/javascript/ql/test/query-tests/Security/CWE-770/MissingRateLimit/MissingRateLimiting.expected index 5e2265f64b49..e8e1be279447 100644 --- a/javascript/ql/test/query-tests/Security/CWE-770/MissingRateLimit/MissingRateLimiting.expected +++ b/javascript/ql/test/query-tests/Security/CWE-770/MissingRateLimit/MissingRateLimiting.expected @@ -11,3 +11,5 @@ | tst.js:88:24:88:40 | expensiveHandler1 | This route handler performs $@, but is not rate-limited. | tst.js:14:40:14:46 | login() | authorization | | tst.js:111:28:111:44 | expensiveHandler1 | This route handler performs $@, but is not rate-limited. | tst.js:14:40:14:46 | login() | authorization | | tst.js:116:39:116:55 | expensiveHandler1 | This route handler performs $@, but is not rate-limited. | tst.js:14:40:14:46 | login() | authorization | +| tst.js:130:35:130:51 | expensiveHandler1 | This route handler performs $@, but is not rate-limited. | tst.js:14:40:14:46 | login() | authorization | +| tst.js:161:35:161:51 | expensiveHandler1 | This route handler performs $@, but is not rate-limited. | tst.js:14:40:14:46 | login() | authorization | diff --git a/javascript/ql/test/query-tests/Security/CWE-770/MissingRateLimit/tst.js b/javascript/ql/test/query-tests/Security/CWE-770/MissingRateLimit/tst.js index 7ff0c067fb51..7c5f1708ff6c 100644 --- a/javascript/ql/test/query-tests/Security/CWE-770/MissingRateLimit/tst.js +++ b/javascript/ql/test/query-tests/Security/CWE-770/MissingRateLimit/tst.js @@ -116,3 +116,46 @@ const fastifyApp3 = require('fastify')(); fastifyApp3.get('/before-rate-limit', expensiveHandler1); // $ Alert fastifyApp3.register(require('@fastify/rate-limit')); fastifyApp3.get('/after-rate-limit', expensiveHandler1); + +// the server instance is reached through a chainable configuration method, which +// returns the same instance +const fastifyApp4 = require('fastify')().withTypeProvider(); + +fastifyApp4.register(require('@fastify/rate-limit')); +fastifyApp4.get('/after-rate-limit', expensiveHandler1); + +// same, but with no rate limiter registered at all, so the route is genuinely unguarded +const fastifyApp5 = require('fastify')().withTypeProvider(); + +fastifyApp5.get('/no-rate-limit', expensiveHandler1); // $ Alert + +// several configuration methods chained together +const fastifyApp6 = require('fastify')() + .withTypeProvider() + .setValidatorCompiler(compiler) + .addContentTypeParser('application/json', parser) + .decorate('answer', 42); + +fastifyApp6.register(require('@fastify/rate-limit')); +fastifyApp6.get('/after-rate-limit', expensiveHandler1); + +// the chained instance is returned from a factory function, so reaching it requires +// tracking the value across the call rather than only through local references +function makeFastifyApp() { + return require('fastify')().withTypeProvider(); +} + +const fastifyApp7 = makeFastifyApp(); + +fastifyApp7.register(require('@fastify/rate-limit')); +fastifyApp7.get('/after-rate-limit', expensiveHandler1); + +// same, from a separate factory so that the server above does not share its creation +// site, and no rate limiter is registered on it +function makeUnguardedFastifyApp() { + return require('fastify')().withTypeProvider(); +} + +const fastifyApp8 = makeUnguardedFastifyApp(); + +fastifyApp8.get('/no-rate-limit', expensiveHandler1); // $ Alert diff --git a/javascript/ql/test/query-tests/Security/CWE-912/tst.js b/javascript/ql/test/query-tests/Security/CWE-912/tst.js index 00e89fd11e6f..7e54e4e51aba 100644 --- a/javascript/ql/test/query-tests/Security/CWE-912/tst.js +++ b/javascript/ql/test/query-tests/Security/CWE-912/tst.js @@ -25,17 +25,17 @@ try { stream.end(); }); }); - response.on('error', () => - { - fs.writeFile("/tmp/test", "error occured"); // OK - static data written to file + response.on('error', () => + { + fs.writeFile("/tmp/test", "error occurred"); // OK - static data written to file }); - }).on('error', () => - { - let error = "error occured"; + }).on('error', () => + { + let error = "error occurred"; let writeStream = fs.createWriteStream('/usr/good/errorlog.txt'); writeStream.write(error); // OK - static data written to file stream writeStream.end(); }); } catch (e) { -} \ No newline at end of file +} diff --git a/misc/bazel/3rdparty/py_deps/BUILD.aho-corasick-1.1.3.bazel b/misc/bazel/3rdparty/py_deps/BUILD.aho-corasick-1.1.3.bazel index 19fb311dc775..67430ddf867d 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.aho-corasick-1.1.3.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.aho-corasick-1.1.3.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstream-0.6.18.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstream-0.6.18.bazel index c447208da1e7..3f1fe4694c67 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstream-0.6.18.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstream-0.6.18.bazel @@ -57,12 +57,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -74,13 +76,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -88,6 +100,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-1.0.10.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-1.0.10.bazel index 5646802d7c87..374fbe3ce6d5 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-1.0.10.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-1.0.10.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-parse-0.2.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-parse-0.2.6.bazel index a3db2f4cf0e2..a70f05b61fbd 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-parse-0.2.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-parse-0.2.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-query-1.1.2.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-query-1.1.2.bazel index 974053fa2105..358cbf6c5230 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-query-1.1.2.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-query-1.1.2.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-wincon-3.0.7.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-wincon-3.0.7.bazel index 4e55fe14335f..40668f3a5498 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-wincon-3.0.7.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-wincon-3.0.7.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anyhow-1.0.95.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anyhow-1.0.95.bazel index c2bbc00cde76..cb9802c5fbe7 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anyhow-1.0.95.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anyhow-1.0.95.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,7 +116,7 @@ rust_library( }), version = "1.0.95", deps = [ - "@vendor_py__anyhow-1.0.95//:build_script_build", + ":build_script_build", ], ) @@ -113,6 +126,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -145,6 +161,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, pkg_name = "anyhow", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.bazel b/misc/bazel/3rdparty/py_deps/BUILD.bazel index 86bfde266419..df40f78ce256 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.bazel @@ -80,37 +80,37 @@ alias( ) alias( - name = "tree-sitter-0.24.7", - actual = "@vendor_py__tree-sitter-0.24.7//:tree_sitter", + name = "serde_json-1.0.138", + actual = "@vendor_py__serde_json-1.0.138//:serde_json", tags = ["manual"], ) alias( - name = "tree-sitter", - actual = "@vendor_py__tree-sitter-0.24.7//:tree_sitter", + name = "serde_json", + actual = "@vendor_py__serde_json-1.0.138//:serde_json", tags = ["manual"], ) alias( - name = "tree-sitter-graph-0.12.0", - actual = "@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph", + name = "tree-sitter-0.24.7", + actual = "@vendor_py__tree-sitter-0.24.7//:tree_sitter", tags = ["manual"], ) alias( - name = "tree-sitter-graph", - actual = "@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph", + name = "tree-sitter", + actual = "@vendor_py__tree-sitter-0.24.7//:tree_sitter", tags = ["manual"], ) alias( - name = "tsp-0.19.0", - actual = "@vendor_py__tsp-0.19.0//:tsp", + name = "tree-sitter-graph-0.12.0", + actual = "@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph", tags = ["manual"], ) alias( - name = "tsp", - actual = "@vendor_py__tsp-0.19.0//:tsp", + name = "tree-sitter-graph", + actual = "@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph", tags = ["manual"], ) diff --git a/misc/bazel/3rdparty/py_deps/BUILD.cc-1.2.14.bazel b/misc/bazel/3rdparty/py_deps/BUILD.cc-1.2.14.bazel index eb579ddb2fe5..9303689d18e8 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.cc-1.2.14.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.cc-1.2.14.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.clap-4.5.30.bazel b/misc/bazel/3rdparty/py_deps/BUILD.clap-4.5.30.bazel index 7846c81d4b7f..95778c79e333 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.clap-4.5.30.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.clap-4.5.30.bazel @@ -61,12 +61,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -78,13 +80,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -92,6 +104,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.clap_builder-4.5.30.bazel b/misc/bazel/3rdparty/py_deps/BUILD.clap_builder-4.5.30.bazel index 9e32f334ec28..7032210081db 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.clap_builder-4.5.30.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.clap_builder-4.5.30.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.clap_lex-0.7.4.bazel b/misc/bazel/3rdparty/py_deps/BUILD.clap_lex-0.7.4.bazel index 7e672468ebb7..2e744e19f1ae 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.clap_lex-0.7.4.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.clap_lex-0.7.4.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.colorchoice-1.0.3.bazel b/misc/bazel/3rdparty/py_deps/BUILD.colorchoice-1.0.3.bazel index f9a26a33bf39..6da8a1f3df80 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.colorchoice-1.0.3.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.colorchoice-1.0.3.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.is_terminal_polyfill-1.70.1.bazel b/misc/bazel/3rdparty/py_deps/BUILD.is_terminal_polyfill-1.70.1.bazel index acd21224d113..05926bb971c5 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.is_terminal_polyfill-1.70.1.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.is_terminal_polyfill-1.70.1.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.itoa-1.0.14.bazel b/misc/bazel/3rdparty/py_deps/BUILD.itoa-1.0.14.bazel index 1121f1c6fa81..0dffc34791c8 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.itoa-1.0.14.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.itoa-1.0.14.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.log-0.4.25.bazel b/misc/bazel/3rdparty/py_deps/BUILD.log-0.4.25.bazel index a6e892fc3e2d..7f8cd3b094d6 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.log-0.4.25.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.log-0.4.25.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.memchr-2.7.4.bazel b/misc/bazel/3rdparty/py_deps/BUILD.memchr-2.7.4.bazel index 92c05c115761..54e543b134e6 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.memchr-2.7.4.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.memchr-2.7.4.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.once_cell-1.20.3.bazel b/misc/bazel/3rdparty/py_deps/BUILD.once_cell-1.20.3.bazel index d9b023658c41..e119c92111cc 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.once_cell-1.20.3.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.once_cell-1.20.3.bazel @@ -58,12 +58,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -75,13 +77,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -89,6 +101,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.proc-macro2-1.0.93.bazel b/misc/bazel/3rdparty/py_deps/BUILD.proc-macro2-1.0.93.bazel index de386a5fb136..73045c65b539 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.proc-macro2-1.0.93.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.proc-macro2-1.0.93.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,7 +116,7 @@ rust_library( }), version = "1.0.93", deps = [ - "@vendor_py__proc-macro2-1.0.93//:build_script_build", + ":build_script_build", "@vendor_py__unicode-ident-1.0.16//:unicode_ident", ], ) @@ -114,6 +127,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -146,6 +162,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "proc-macro2", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.quote-1.0.38.bazel b/misc/bazel/3rdparty/py_deps/BUILD.quote-1.0.38.bazel index fd1be0541615..a62648df9576 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.quote-1.0.38.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.quote-1.0.38.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.regex-1.11.1.bazel b/misc/bazel/3rdparty/py_deps/BUILD.regex-1.11.1.bazel index 4363055577d1..c8549ff105ca 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.regex-1.11.1.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.regex-1.11.1.bazel @@ -71,12 +71,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -88,13 +90,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -102,6 +114,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.regex-automata-0.4.9.bazel b/misc/bazel/3rdparty/py_deps/BUILD.regex-automata-0.4.9.bazel index ed2546bbd8af..5c61023243fd 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.regex-automata-0.4.9.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.regex-automata-0.4.9.bazel @@ -76,12 +76,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -93,13 +95,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -107,6 +119,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.regex-syntax-0.8.5.bazel b/misc/bazel/3rdparty/py_deps/BUILD.regex-syntax-0.8.5.bazel index 59c590873031..6b1480dce01a 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.regex-syntax-0.8.5.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.regex-syntax-0.8.5.bazel @@ -64,12 +64,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -81,13 +83,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -95,6 +107,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.ryu-1.0.19.bazel b/misc/bazel/3rdparty/py_deps/BUILD.ryu-1.0.19.bazel index 275c416bec69..d598e526522a 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.ryu-1.0.19.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.ryu-1.0.19.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.serde-1.0.217.bazel b/misc/bazel/3rdparty/py_deps/BUILD.serde-1.0.217.bazel index 04b9339ef8e8..a3b116bd4118 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.serde-1.0.217.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.serde-1.0.217.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,7 +116,7 @@ rust_library( }), version = "1.0.217", deps = [ - "@vendor_py__serde-1.0.217//:build_script_build", + ":build_script_build", ], ) @@ -113,6 +126,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -145,6 +161,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, pkg_name = "serde", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.serde_derive-1.0.217.bazel b/misc/bazel/3rdparty/py_deps/BUILD.serde_derive-1.0.217.bazel index 3836976f89e6..ad6bea845a88 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.serde_derive-1.0.217.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.serde_derive-1.0.217.bazel @@ -52,12 +52,14 @@ rust_proc_macro( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_proc_macro( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_proc_macro( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.serde_json-1.0.138.bazel b/misc/bazel/3rdparty/py_deps/BUILD.serde_json-1.0.138.bazel index c36081cf1331..50ea1828c00e 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.serde_json-1.0.138.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.serde_json-1.0.138.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,11 +116,11 @@ rust_library( }), version = "1.0.138", deps = [ + ":build_script_build", "@vendor_py__itoa-1.0.14//:itoa", "@vendor_py__memchr-2.7.4//:memchr", "@vendor_py__ryu-1.0.19//:ryu", "@vendor_py__serde-1.0.217//:serde", - "@vendor_py__serde_json-1.0.138//:build_script_build", ], ) @@ -117,6 +130,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -149,6 +165,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "serde_json", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.shlex-1.3.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.shlex-1.3.0.bazel index 8de318e16ce3..7ad7a1fa71bd 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.shlex-1.3.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.shlex-1.3.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.smallvec-1.14.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.smallvec-1.14.0.bazel index afc560f32d27..6f3e09e2f8b2 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.smallvec-1.14.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.smallvec-1.14.0.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel b/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel index 1fb4f82d40ba..6e1f7d009ec4 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.strsim-0.11.1.bazel b/misc/bazel/3rdparty/py_deps/BUILD.strsim-0.11.1.bazel index a350fe401c64..502076f07593 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.strsim-0.11.1.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.strsim-0.11.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.syn-2.0.98.bazel b/misc/bazel/3rdparty/py_deps/BUILD.syn-2.0.98.bazel index 756de2c409a7..53a38fda064f 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.syn-2.0.98.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.syn-2.0.98.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.thiserror-1.0.69.bazel b/misc/bazel/3rdparty/py_deps/BUILD.thiserror-1.0.69.bazel index 4c5de7875052..ae33aae79229 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.thiserror-1.0.69.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.thiserror-1.0.69.bazel @@ -59,12 +59,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -76,13 +78,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -90,6 +102,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -102,7 +115,7 @@ rust_library( }), version = "1.0.69", deps = [ - "@vendor_py__thiserror-1.0.69//:build_script_build", + ":build_script_build", ], ) @@ -112,6 +125,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -140,6 +156,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "thiserror", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.thiserror-impl-1.0.69.bazel b/misc/bazel/3rdparty/py_deps/BUILD.thiserror-impl-1.0.69.bazel index f2b15bc166fd..7beef57d9608 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.thiserror-impl-1.0.69.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.thiserror-impl-1.0.69.bazel @@ -52,12 +52,14 @@ rust_proc_macro( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_proc_macro( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_proc_macro( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel index 475770bc9575..2858d4c5136b 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,10 +116,10 @@ rust_library( }), version = "0.24.7", deps = [ + ":build_script_build", "@vendor_py__regex-1.11.1//:regex", "@vendor_py__regex-syntax-0.8.5//:regex_syntax", "@vendor_py__streaming-iterator-0.1.9//:streaming_iterator", - "@vendor_py__tree-sitter-0.24.7//:build_script_build", "@vendor_py__tree-sitter-language-0.1.5//:tree_sitter_language", ], ) @@ -117,6 +130,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -149,6 +165,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, links = "tree-sitter", pkg_name = "tree-sitter", rustc_env_files = [ diff --git a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel index 3a5a51895a64..91b0d1eadf65 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel index e35100f228a8..14ccbfade289 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.unicode-ident-1.0.16.bazel b/misc/bazel/3rdparty/py_deps/BUILD.unicode-ident-1.0.16.bazel index 9754167cc21f..63420f8a0fc0 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.unicode-ident-1.0.16.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.unicode-ident-1.0.16.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.utf8parse-0.2.2.bazel b/misc/bazel/3rdparty/py_deps/BUILD.utf8parse-0.2.2.bazel index 813c2349a879..e53fb8eb55c1 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.utf8parse-0.2.2.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.utf8parse-0.2.2.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows-sys-0.59.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows-sys-0.59.0.bazel index 1c3cf791f0f4..f2d6e69bfdb0 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows-sys-0.59.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows-sys-0.59.0.bazel @@ -59,12 +59,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -76,13 +78,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -90,6 +102,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows-targets-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows-targets-0.52.6.bazel index eab2d9200442..caef5d4be7ab 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows-targets-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows-targets-0.52.6.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel index 413560f9a9a4..201dc214ec5e 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.52.6", deps = [ - "@vendor_py__windows_aarch64_gnullvm-0.52.6//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_aarch64_gnullvm", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel index 41270f37827d..eaa95b7effe5 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.52.6", deps = [ - "@vendor_py__windows_aarch64_msvc-0.52.6//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_aarch64_msvc", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnu-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnu-0.52.6.bazel index 635e04fb829f..4417810cacae 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnu-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnu-0.52.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.52.6", deps = [ - "@vendor_py__windows_i686_gnu-0.52.6//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_i686_gnu", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel index aa701fa5f9e1..e027b79a0dfe 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.52.6", deps = [ - "@vendor_py__windows_i686_gnullvm-0.52.6//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_i686_gnullvm", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_msvc-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_msvc-0.52.6.bazel index 51a7afa148f3..b658f58affd4 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_msvc-0.52.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.52.6", deps = [ - "@vendor_py__windows_i686_msvc-0.52.6//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_i686_msvc", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel index 95bb840fe66c..56e8b8bced09 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.52.6", deps = [ - "@vendor_py__windows_x86_64_gnu-0.52.6//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_x86_64_gnu", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel index e7cc05336f3f..c4a7d1a89087 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.52.6", deps = [ - "@vendor_py__windows_x86_64_gnullvm-0.52.6//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_x86_64_gnullvm", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel index dd7abf4671c5..6df588218373 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.52.6", deps = [ - "@vendor_py__windows_x86_64_msvc-0.52.6//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_x86_64_msvc", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/py_deps/anyhow-1.0.95/BUILD.bazel b/misc/bazel/3rdparty/py_deps/anyhow-1.0.95/BUILD.bazel new file mode 100644 index 000000000000..37bc215de0df --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/anyhow-1.0.95/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "anyhow-1.0.95", + actual = "@vendor_py__anyhow-1.0.95//:anyhow", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/anyhow/BUILD.bazel b/misc/bazel/3rdparty/py_deps/anyhow/BUILD.bazel new file mode 100644 index 000000000000..d9ce76974ca2 --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/anyhow/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "anyhow", + actual = "@vendor_py__anyhow-1.0.95//:anyhow", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/cc-1.2.14/BUILD.bazel b/misc/bazel/3rdparty/py_deps/cc-1.2.14/BUILD.bazel new file mode 100644 index 000000000000..a16530a5d741 --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/cc-1.2.14/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "cc-1.2.14", + actual = "@vendor_py__cc-1.2.14//:cc", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/cc/BUILD.bazel b/misc/bazel/3rdparty/py_deps/cc/BUILD.bazel new file mode 100644 index 000000000000..d8c3fb6ea8d0 --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/cc/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "cc", + actual = "@vendor_py__cc-1.2.14//:cc", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/clap-4.5.30/BUILD.bazel b/misc/bazel/3rdparty/py_deps/clap-4.5.30/BUILD.bazel new file mode 100644 index 000000000000..8ebf45139946 --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/clap-4.5.30/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "clap-4.5.30", + actual = "@vendor_py__clap-4.5.30//:clap", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/clap/BUILD.bazel b/misc/bazel/3rdparty/py_deps/clap/BUILD.bazel new file mode 100644 index 000000000000..ee7c930d1645 --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/clap/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "clap", + actual = "@vendor_py__clap-4.5.30//:clap", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/crates.bzl b/misc/bazel/3rdparty/py_deps/crates.bzl index 3979d0073368..910447b78db4 100644 --- a/misc/bazel/3rdparty/py_deps/crates.bzl +++ b/misc/bazel/3rdparty/py_deps/crates.bzl @@ -1,21 +1,497 @@ ############################################################################### # @generated -# This file is auto-generated by the cargo-bazel tool. +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: # -# DO NOT MODIFY: Local changes may be replaced in future executions. +# bazel run @@//misc/bazel/3rdparty:vendor_py_deps ############################################################################### -"""Rules for defining repositories for remote `crates_vendor` repositories""" +""" +# `crates_repository` API +- [aliases](#aliases) +- [crate_edition](#crate_edition) +- [crate_deps](#crate_deps) +- [all_crate_deps](#all_crate_deps) +- [crate_repositories](#crate_repositories) + +""" + +load("@bazel_skylib//lib:selects.bzl", "selects") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") +load("@rules_rust//crate_universe:defs.bzl", "crates_vendor_remote_repository") + +############################################################################### +# MACROS API +############################################################################### + +# An identifier that represent common dependencies (unconditional). +_COMMON_CONDITION = "" + +def _flatten_dependency_maps(all_dependency_maps): + """Flatten a list of dependency maps into one dictionary. + + Dependency maps have the following structure: + + ```python + DEPENDENCIES_MAP = { + # The first key in the map is a Bazel package + # name of the workspace this file is defined in. + "workspace_member_package": { + + # Not all dependencies are supported for all platforms. + # the condition key is the condition required to be true + # on the host platform. + "condition": { + + # An alias to a crate target. # The label of the crate target the + # Aliases are only crate names. # package name refers to. + "package_name": "@full//:label", + } + } + } + ``` + + Args: + all_dependency_maps (list): A list of dicts as described above + + Returns: + dict: A dictionary as described above + """ + dependencies = {} + + for workspace_deps_map in all_dependency_maps: + for pkg_name, conditional_deps_map in workspace_deps_map.items(): + if pkg_name not in dependencies: + non_frozen_map = dict() + for key, values in conditional_deps_map.items(): + non_frozen_map.update({key: dict(values.items())}) + dependencies.setdefault(pkg_name, non_frozen_map) + continue + + for condition, deps_map in conditional_deps_map.items(): + # If the condition has not been recorded, do so and continue + if condition not in dependencies[pkg_name]: + dependencies[pkg_name].setdefault(condition, dict(deps_map.items())) + continue + + # Alert on any miss-matched dependencies + inconsistent_entries = [] + for crate_name, crate_label in deps_map.items(): + existing = dependencies[pkg_name][condition].get(crate_name) + if existing and existing != crate_label: + inconsistent_entries.append((crate_name, existing, crate_label)) + dependencies[pkg_name][condition].update({crate_name: crate_label}) + + return dependencies + +def crate_deps(deps, package_name = None): + """Finds the fully qualified label of the requested crates for the package where this macro is called. + + Args: + deps (list): The desired list of crate targets. + package_name (str, optional): The package name of the set of dependencies to look up. + Defaults to `native.package_name()`. + + Returns: + list: A list of labels to generated rust targets (str) + """ + + if not deps: + return [] + + if package_name == None: + package_name = native.package_name() + + # Join both sets of dependencies + dependencies = _flatten_dependency_maps([ + _NORMAL_DEPENDENCIES, + _NORMAL_DEV_DEPENDENCIES, + _PROC_MACRO_DEPENDENCIES, + _PROC_MACRO_DEV_DEPENDENCIES, + _BUILD_DEPENDENCIES, + _BUILD_PROC_MACRO_DEPENDENCIES, + ]).pop(package_name, {}) + + # Combine all conditional packages so we can easily index over a flat list + # TODO: Perhaps this should actually return select statements and maintain + # the conditionals of the dependencies + flat_deps = {} + for deps_set in dependencies.values(): + for crate_name, crate_label in deps_set.items(): + flat_deps.update({crate_name: crate_label}) + + missing_crates = [] + crate_targets = [] + for crate_target in deps: + if crate_target not in flat_deps: + missing_crates.append(crate_target) + else: + crate_targets.append(flat_deps[crate_target]) + + if missing_crates: + fail("Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`".format( + missing_crates, + package_name, + dependencies, + )) + + return crate_targets + +def crate_edition(package_name = None): + """Finds the Rust edition for the package where this macro is called. + + Args: + package_name (str, optional): The package name whose edition should be + looked up. Defaults to `native.package_name()` when unset. + + Returns: + str: The Rust edition declared by the package's Cargo.toml file. + """ + if package_name == None: + package_name = native.package_name() + + if package_name not in _CRATE_EDITIONS: + fail("Tried to get crate_edition for package " + package_name + " but that package had no Cargo.toml file") + + return _CRATE_EDITIONS[package_name] + +def all_crate_deps( + normal = False, + normal_dev = False, + proc_macro = False, + proc_macro_dev = False, + build = False, + build_proc_macro = False, + package_name = None): + """Finds the fully qualified label of all requested direct crate dependencies \ + for the package where this macro is called. + + If no parameters are set, all normal dependencies are returned. Setting any one flag will + otherwise impact the contents of the returned list. + + Args: + normal (bool, optional): If True, normal dependencies are included in the + output list. + normal_dev (bool, optional): If True, normal dev dependencies will be + included in the output list. + proc_macro (bool, optional): If True, proc_macro dependencies are included + in the output list. + proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are + included in the output list. + build (bool, optional): If True, build dependencies are included + in the output list. + build_proc_macro (bool, optional): If True, build proc_macro dependencies are + included in the output list. + package_name (str, optional): The package name of the set of dependencies to look up. + Defaults to `native.package_name()` when unset. + + Returns: + list: A list of labels to generated rust targets (str) + """ + + if package_name == None: + package_name = native.package_name() + + # Determine the relevant maps to use + all_dependency_maps = [] + if normal: + all_dependency_maps.append(_NORMAL_DEPENDENCIES) + if normal_dev: + all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES) + if proc_macro: + all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES) + if proc_macro_dev: + all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES) + if build: + all_dependency_maps.append(_BUILD_DEPENDENCIES) + if build_proc_macro: + all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES) + + # Default to always using normal dependencies + if not all_dependency_maps: + all_dependency_maps.append(_NORMAL_DEPENDENCIES) + + dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None) + + if not dependencies: + if dependencies == None: + fail("Tried to get all_crate_deps for package " + package_name + " but that package had no Cargo.toml file") + else: + return [] + + crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values()) + for condition, deps in dependencies.items(): + crate_deps += selects.with_or({ + tuple(_CONDITIONS[condition]): deps.values(), + "//conditions:default": [], + }) + + return crate_deps + +def aliases( + normal = False, + normal_dev = False, + proc_macro = False, + proc_macro_dev = False, + build = False, + build_proc_macro = False, + package_name = None): + """Produces a map of Crate alias names to their original label + + If no dependency kinds are specified, `normal` and `proc_macro` are used by default. + Setting any one flag will otherwise determine the contents of the returned dict. + + Args: + normal (bool, optional): If True, normal dependencies are included in the + output list. + normal_dev (bool, optional): If True, normal dev dependencies will be + included in the output list.. + proc_macro (bool, optional): If True, proc_macro dependencies are included + in the output list. + proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are + included in the output list. + build (bool, optional): If True, build dependencies are included + in the output list. + build_proc_macro (bool, optional): If True, build proc_macro dependencies are + included in the output list. + package_name (str, optional): The package name of the set of dependencies to look up. + Defaults to `native.package_name()` when unset. + + Returns: + dict: The aliases of all associated packages + """ + if package_name == None: + package_name = native.package_name() -# buildifier: disable=bzl-visibility -load("@rules_rust//crate_universe/private:crates_vendor.bzl", "crates_vendor_remote_repository") + # Determine the relevant maps to use + all_aliases_maps = [] + if normal: + all_aliases_maps.append(_NORMAL_ALIASES) + if normal_dev: + all_aliases_maps.append(_NORMAL_DEV_ALIASES) + if proc_macro: + all_aliases_maps.append(_PROC_MACRO_ALIASES) + if proc_macro_dev: + all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES) + if build: + all_aliases_maps.append(_BUILD_ALIASES) + if build_proc_macro: + all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES) -# buildifier: disable=bzl-visibility -load("//misc/bazel/3rdparty/py_deps:defs.bzl", _crate_repositories = "crate_repositories") + # Default to always using normal aliases + if not all_aliases_maps: + all_aliases_maps.append(_NORMAL_ALIASES) + all_aliases_maps.append(_PROC_MACRO_ALIASES) + + aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None) + + if not aliases: + return dict() + + common_items = aliases.pop(_COMMON_CONDITION, {}).items() + + # If there are only common items in the dictionary, immediately return them + if not len(aliases.keys()) == 1: + return dict(common_items) + + # Build a single select statement where each conditional has accounted for the + # common set of aliases. + crate_aliases = {"//conditions:default": dict(common_items)} + for condition, deps in aliases.items(): + condition_triples = _CONDITIONS[condition] + for triple in condition_triples: + if triple in crate_aliases: + crate_aliases[triple].update(deps) + else: + crate_aliases.update({triple: dict(deps.items() + common_items)}) + + return select(crate_aliases) + +############################################################################### +# WORKSPACE MEMBER DEPS, ALIASES, AND EDITIONS +############################################################################### + +_CRATE_EDITIONS = { + "python/extractor/tsg-python": "2024", + "python/extractor/tsg-python/tsp": "2024", +} + +_NORMAL_DEPENDENCIES = { + "python/extractor/tsg-python": { + _COMMON_CONDITION: { + "anyhow": Label("@vendor_py//anyhow-1.0.95"), + "clap": Label("@vendor_py//clap-4.5.30"), + "regex": Label("@vendor_py//regex-1.11.1"), + "serde_json": Label("@vendor_py//serde_json-1.0.138"), + "tree-sitter": Label("@vendor_py//tree-sitter-0.24.7"), + "tree-sitter-graph": Label("@vendor_py//tree-sitter-graph-0.12.0"), + }, + }, + "python/extractor/tsg-python/tsp": { + _COMMON_CONDITION: { + "tree-sitter": Label("@vendor_py//tree-sitter-0.24.7"), + }, + }, +} + +_NORMAL_ALIASES = { + "python/extractor/tsg-python": { + _COMMON_CONDITION: { + }, + }, + "python/extractor/tsg-python/tsp": { + _COMMON_CONDITION: { + }, + }, +} + +_NORMAL_DEV_DEPENDENCIES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + }, +} + +_NORMAL_DEV_ALIASES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + }, +} + +_PROC_MACRO_DEPENDENCIES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + }, +} + +_PROC_MACRO_ALIASES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + }, +} + +_PROC_MACRO_DEV_DEPENDENCIES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + }, +} + +_PROC_MACRO_DEV_ALIASES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + }, +} + +_BUILD_DEPENDENCIES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + _COMMON_CONDITION: { + "cc": Label("@vendor_py//cc-1.2.14"), + }, + }, +} + +_BUILD_ALIASES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + _COMMON_CONDITION: { + }, + }, +} + +_BUILD_PROC_MACRO_DEPENDENCIES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + }, +} + +_BUILD_PROC_MACRO_ALIASES = { + "python/extractor/tsg-python": { + }, + "python/extractor/tsg-python/tsp": { + }, +} + +_CONDITIONS = { + "aarch64-apple-darwin": ["@rules_rust//rust/platform:aarch64-apple-darwin"], + "aarch64-apple-ios": ["@rules_rust//rust/platform:aarch64-apple-ios"], + "aarch64-apple-ios-macabi": ["@rules_rust//rust/platform:aarch64-apple-ios-macabi"], + "aarch64-apple-ios-sim": ["@rules_rust//rust/platform:aarch64-apple-ios-sim"], + "aarch64-linux-android": ["@rules_rust//rust/platform:aarch64-linux-android"], + "aarch64-pc-windows-gnullvm": [], + "aarch64-pc-windows-msvc": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], + "aarch64-unknown-fuchsia": ["@rules_rust//rust/platform:aarch64-unknown-fuchsia"], + "aarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu"], + "aarch64-unknown-nixos-gnu": ["@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"], + "aarch64-unknown-none": ["@rules_rust//rust/platform:aarch64-unknown-none"], + "aarch64-unknown-nto-qnx710": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"], + "aarch64-unknown-uefi": ["@rules_rust//rust/platform:aarch64-unknown-uefi"], + "arm-unknown-linux-gnueabi": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi"], + "arm-unknown-linux-musleabi": ["@rules_rust//rust/platform:arm-unknown-linux-musleabi"], + "armv7-linux-androideabi": ["@rules_rust//rust/platform:armv7-linux-androideabi"], + "armv7-unknown-linux-gnueabi": ["@rules_rust//rust/platform:armv7-unknown-linux-gnueabi"], + "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], + "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], + "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], + "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], + "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(any())": [], + "cfg(windows)": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], + "i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"], + "i686-linux-android": ["@rules_rust//rust/platform:i686-linux-android"], + "i686-pc-windows-gnullvm": [], + "i686-pc-windows-msvc": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], + "i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"], + "i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], + "loongarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:loongarch64-unknown-linux-gnu"], + "mips-unknown-linux-gnu": ["@rules_rust//rust/platform:mips-unknown-linux-gnu"], + "powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"], + "riscv32imac-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imac-unknown-none-elf"], + "riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"], + "riscv64gc-unknown-linux-gnu": ["@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu"], + "riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"], + "s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"], + "sparc64-unknown-linux-gnu": ["@rules_rust//rust/platform:sparc64-unknown-linux-gnu"], + "sparc64-unknown-netbsd": ["@rules_rust//rust/platform:sparc64-unknown-netbsd"], + "sparc64-unknown-openbsd": ["@rules_rust//rust/platform:sparc64-unknown-openbsd"], + "thumbv6m-none-eabi": ["@rules_rust//rust/platform:thumbv6m-none-eabi"], + "thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"], + "thumbv7em-none-eabihf": ["@rules_rust//rust/platform:thumbv7em-none-eabihf"], + "thumbv7m-none-eabi": ["@rules_rust//rust/platform:thumbv7m-none-eabi"], + "thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"], + "thumbv8m.main-none-eabihf": ["@rules_rust//rust/platform:thumbv8m.main-none-eabihf"], + "wasm32-unknown-emscripten": ["@rules_rust//rust/platform:wasm32-unknown-emscripten"], + "wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], + "wasm32-wasip1": ["@rules_rust//rust/platform:wasm32-wasip1"], + "wasm32-wasip1-threads": ["@rules_rust//rust/platform:wasm32-wasip1-threads"], + "wasm32-wasip2": ["@rules_rust//rust/platform:wasm32-wasip2"], + "x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"], + "x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"], + "x86_64-apple-ios-macabi": ["@rules_rust//rust/platform:x86_64-apple-ios-macabi"], + "x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"], + "x86_64-pc-windows-gnullvm": [], + "x86_64-pc-windows-msvc": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], + "x86_64-unknown-freebsd": ["@rules_rust//rust/platform:x86_64-unknown-freebsd"], + "x86_64-unknown-fuchsia": ["@rules_rust//rust/platform:x86_64-unknown-fuchsia"], + "x86_64-unknown-linux-gnu": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu"], + "x86_64-unknown-nixos-gnu": ["@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "x86_64-unknown-none": ["@rules_rust//rust/platform:x86_64-unknown-none"], + "x86_64-unknown-uefi": ["@rules_rust//rust/platform:x86_64-unknown-uefi"], +} + +############################################################################### def crate_repositories(): - """Generates repositories for vendored crates. + """A macro for defining repositories for all generated crates. Returns: A list of repos visible to the module through the module extension. @@ -23,10 +499,497 @@ def crate_repositories(): maybe( crates_vendor_remote_repository, name = "vendor_py", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.bazel"), - defs_module = Label("//misc/bazel/3rdparty/py_deps:defs.bzl"), + # Lean interface: just point at `crates.bzl`; the repo rule + # derives the sibling `BUILD.bazel` and `defs.bzl`. + crates_module = Label("//misc/bazel/3rdparty/py_deps:crates.bzl"), + ) + maybe( + http_archive, + name = "vendor_py__aho-corasick-1.1.3", + sha256 = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916", + type = "tar.gz", + urls = ["https://static.crates.io/crates/aho-corasick/1.1.3/download"], + strip_prefix = "aho-corasick-1.1.3", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.aho-corasick-1.1.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__anstream-0.6.18", + sha256 = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstream/0.6.18/download"], + strip_prefix = "anstream-0.6.18", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstream-0.6.18.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__anstyle-1.0.10", + sha256 = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstyle/1.0.10/download"], + strip_prefix = "anstyle-1.0.10", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstyle-1.0.10.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__anstyle-parse-0.2.6", + sha256 = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstyle-parse/0.2.6/download"], + strip_prefix = "anstyle-parse-0.2.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstyle-parse-0.2.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__anstyle-query-1.1.2", + sha256 = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstyle-query/1.1.2/download"], + strip_prefix = "anstyle-query-1.1.2", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstyle-query-1.1.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__anstyle-wincon-3.0.7", + sha256 = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstyle-wincon/3.0.7/download"], + strip_prefix = "anstyle-wincon-3.0.7", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstyle-wincon-3.0.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__anyhow-1.0.95", + sha256 = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anyhow/1.0.95/download"], + strip_prefix = "anyhow-1.0.95", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anyhow-1.0.95.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__cc-1.2.14", + sha256 = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cc/1.2.14/download"], + strip_prefix = "cc-1.2.14", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.cc-1.2.14.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__clap-4.5.30", + sha256 = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap/4.5.30/download"], + strip_prefix = "clap-4.5.30", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.clap-4.5.30.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__clap_builder-4.5.30", + sha256 = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap_builder/4.5.30/download"], + strip_prefix = "clap_builder-4.5.30", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.clap_builder-4.5.30.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__clap_lex-0.7.4", + sha256 = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap_lex/0.7.4/download"], + strip_prefix = "clap_lex-0.7.4", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.clap_lex-0.7.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__colorchoice-1.0.3", + sha256 = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990", + type = "tar.gz", + urls = ["https://static.crates.io/crates/colorchoice/1.0.3/download"], + strip_prefix = "colorchoice-1.0.3", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.colorchoice-1.0.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__is_terminal_polyfill-1.70.1", + sha256 = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf", + type = "tar.gz", + urls = ["https://static.crates.io/crates/is_terminal_polyfill/1.70.1/download"], + strip_prefix = "is_terminal_polyfill-1.70.1", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.is_terminal_polyfill-1.70.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__itoa-1.0.14", + sha256 = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674", + type = "tar.gz", + urls = ["https://static.crates.io/crates/itoa/1.0.14/download"], + strip_prefix = "itoa-1.0.14", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.itoa-1.0.14.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__log-0.4.25", + sha256 = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/log/0.4.25/download"], + strip_prefix = "log-0.4.25", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.log-0.4.25.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__memchr-2.7.4", + sha256 = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3", + 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/py_deps:BUILD.memchr-2.7.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__once_cell-1.20.3", + sha256 = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/once_cell/1.20.3/download"], + strip_prefix = "once_cell-1.20.3", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.once_cell-1.20.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__proc-macro2-1.0.93", + sha256 = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99", + type = "tar.gz", + urls = ["https://static.crates.io/crates/proc-macro2/1.0.93/download"], + strip_prefix = "proc-macro2-1.0.93", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.proc-macro2-1.0.93.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__quote-1.0.38", + sha256 = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/quote/1.0.38/download"], + strip_prefix = "quote-1.0.38", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.quote-1.0.38.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__regex-1.11.1", + sha256 = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191", + type = "tar.gz", + urls = ["https://static.crates.io/crates/regex/1.11.1/download"], + strip_prefix = "regex-1.11.1", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.regex-1.11.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__regex-automata-0.4.9", + sha256 = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908", + type = "tar.gz", + urls = ["https://static.crates.io/crates/regex-automata/0.4.9/download"], + strip_prefix = "regex-automata-0.4.9", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.regex-automata-0.4.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__regex-syntax-0.8.5", + sha256 = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/regex-syntax/0.8.5/download"], + strip_prefix = "regex-syntax-0.8.5", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.regex-syntax-0.8.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__ryu-1.0.19", + sha256 = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ryu/1.0.19/download"], + strip_prefix = "ryu-1.0.19", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.ryu-1.0.19.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__serde-1.0.217", + sha256 = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde/1.0.217/download"], + strip_prefix = "serde-1.0.217", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.serde-1.0.217.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__serde_derive-1.0.217", + sha256 = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_derive/1.0.217/download"], + strip_prefix = "serde_derive-1.0.217", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.serde_derive-1.0.217.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__serde_json-1.0.138", + sha256 = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_json/1.0.138/download"], + strip_prefix = "serde_json-1.0.138", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.serde_json-1.0.138.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__shlex-1.3.0", + sha256 = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64", + type = "tar.gz", + urls = ["https://static.crates.io/crates/shlex/1.3.0/download"], + strip_prefix = "shlex-1.3.0", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.shlex-1.3.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__smallvec-1.14.0", + sha256 = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd", + 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/py_deps:BUILD.smallvec-1.14.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__streaming-iterator-0.1.9", + sha256 = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520", + type = "tar.gz", + urls = ["https://static.crates.io/crates/streaming-iterator/0.1.9/download"], + strip_prefix = "streaming-iterator-0.1.9", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.streaming-iterator-0.1.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__strsim-0.11.1", + sha256 = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/strsim/0.11.1/download"], + strip_prefix = "strsim-0.11.1", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.strsim-0.11.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__syn-2.0.98", + sha256 = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/syn/2.0.98/download"], + strip_prefix = "syn-2.0.98", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.syn-2.0.98.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__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/py_deps:BUILD.thiserror-1.0.69.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__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/py_deps:BUILD.thiserror-impl-1.0.69.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__tree-sitter-0.24.7", + sha256 = "a5387dffa7ffc7d2dae12b50c6f7aab8ff79d6210147c6613561fc3d474c6f75", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter/0.24.7/download"], + strip_prefix = "tree-sitter-0.24.7", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-0.24.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__tree-sitter-graph-0.12.0", + sha256 = "63f86eb73c7d891c4b9b6fe4d4e63dd94c506e4788af7c2296afdcfbeea626cc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter-graph/0.12.0/download"], + strip_prefix = "tree-sitter-graph-0.12.0", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-graph-0.12.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__tree-sitter-language-0.1.5", + sha256 = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter-language/0.1.5/download"], + strip_prefix = "tree-sitter-language-0.1.5", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-language-0.1.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__unicode-ident-1.0.16", + sha256 = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034", + type = "tar.gz", + urls = ["https://static.crates.io/crates/unicode-ident/1.0.16/download"], + strip_prefix = "unicode-ident-1.0.16", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.unicode-ident-1.0.16.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__utf8parse-0.2.2", + sha256 = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821", + type = "tar.gz", + urls = ["https://static.crates.io/crates/utf8parse/0.2.2/download"], + strip_prefix = "utf8parse-0.2.2", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.utf8parse-0.2.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows-sys-0.59.0", + sha256 = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-sys/0.59.0/download"], + strip_prefix = "windows-sys-0.59.0", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows-sys-0.59.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows-targets-0.52.6", + sha256 = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-targets/0.52.6/download"], + strip_prefix = "windows-targets-0.52.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows-targets-0.52.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows_aarch64_gnullvm-0.52.6", + sha256 = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download"], + strip_prefix = "windows_aarch64_gnullvm-0.52.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_aarch64_gnullvm-0.52.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows_aarch64_msvc-0.52.6", + sha256 = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download"], + strip_prefix = "windows_aarch64_msvc-0.52.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_aarch64_msvc-0.52.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows_i686_gnu-0.52.6", + sha256 = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_i686_gnu/0.52.6/download"], + strip_prefix = "windows_i686_gnu-0.52.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_i686_gnu-0.52.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows_i686_gnullvm-0.52.6", + sha256 = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download"], + strip_prefix = "windows_i686_gnullvm-0.52.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_i686_gnullvm-0.52.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows_i686_msvc-0.52.6", + sha256 = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_i686_msvc/0.52.6/download"], + strip_prefix = "windows_i686_msvc-0.52.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_i686_msvc-0.52.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows_x86_64_gnu-0.52.6", + sha256 = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download"], + strip_prefix = "windows_x86_64_gnu-0.52.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_x86_64_gnu-0.52.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows_x86_64_gnullvm-0.52.6", + sha256 = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download"], + strip_prefix = "windows_x86_64_gnullvm-0.52.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_x86_64_gnullvm-0.52.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_py__windows_x86_64_msvc-0.52.6", + sha256 = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download"], + strip_prefix = "windows_x86_64_msvc-0.52.6", + build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_x86_64_msvc-0.52.6.bazel"), ) - direct_deps = [struct(repo = "vendor_py", is_dev_dep = False)] - direct_deps.extend(_crate_repositories()) - return direct_deps + return [ + struct(repo = "vendor_py", is_dev_dep = False), + struct(repo = "vendor_py__anyhow-1.0.95", is_dev_dep = False), + struct(repo = "vendor_py__cc-1.2.14", is_dev_dep = False), + struct(repo = "vendor_py__clap-4.5.30", is_dev_dep = False), + struct(repo = "vendor_py__regex-1.11.1", is_dev_dep = False), + struct(repo = "vendor_py__serde_json-1.0.138", is_dev_dep = False), + struct(repo = "vendor_py__tree-sitter-0.24.7", is_dev_dep = False), + struct(repo = "vendor_py__tree-sitter-graph-0.12.0", is_dev_dep = False), + ] diff --git a/misc/bazel/3rdparty/py_deps/defs.bzl b/misc/bazel/3rdparty/py_deps/defs.bzl index 70e6051ac930..0aa81f443fb2 100644 --- a/misc/bazel/3rdparty/py_deps/defs.bzl +++ b/misc/bazel/3rdparty/py_deps/defs.bzl @@ -5,943 +5,19 @@ # # bazel run @@//misc/bazel/3rdparty:vendor_py_deps ############################################################################### -""" -# `crates_repository` API - -- [aliases](#aliases) -- [crate_deps](#crate_deps) -- [all_crate_deps](#all_crate_deps) -- [crate_repositories](#crate_repositories) - -""" - -load("@bazel_skylib//lib:selects.bzl", "selects") -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") - -############################################################################### -# MACROS API -############################################################################### - -# An identifier that represent common dependencies (unconditional). -_COMMON_CONDITION = "" - -def _flatten_dependency_maps(all_dependency_maps): - """Flatten a list of dependency maps into one dictionary. - - Dependency maps have the following structure: - - ```python - DEPENDENCIES_MAP = { - # The first key in the map is a Bazel package - # name of the workspace this file is defined in. - "workspace_member_package": { - - # Not all dependencies are supported for all platforms. - # the condition key is the condition required to be true - # on the host platform. - "condition": { - - # An alias to a crate target. # The label of the crate target the - # Aliases are only crate names. # package name refers to. - "package_name": "@full//:label", - } - } - } - ``` - - Args: - all_dependency_maps (list): A list of dicts as described above - - Returns: - dict: A dictionary as described above - """ - dependencies = {} - - for workspace_deps_map in all_dependency_maps: - for pkg_name, conditional_deps_map in workspace_deps_map.items(): - if pkg_name not in dependencies: - non_frozen_map = dict() - for key, values in conditional_deps_map.items(): - non_frozen_map.update({key: dict(values.items())}) - dependencies.setdefault(pkg_name, non_frozen_map) - continue - - for condition, deps_map in conditional_deps_map.items(): - # If the condition has not been recorded, do so and continue - if condition not in dependencies[pkg_name]: - dependencies[pkg_name].setdefault(condition, dict(deps_map.items())) - continue - - # Alert on any miss-matched dependencies - inconsistent_entries = [] - for crate_name, crate_label in deps_map.items(): - existing = dependencies[pkg_name][condition].get(crate_name) - if existing and existing != crate_label: - inconsistent_entries.append((crate_name, existing, crate_label)) - dependencies[pkg_name][condition].update({crate_name: crate_label}) - - return dependencies - -def crate_deps(deps, package_name = None): - """Finds the fully qualified label of the requested crates for the package where this macro is called. - - Args: - deps (list): The desired list of crate targets. - package_name (str, optional): The package name of the set of dependencies to look up. - Defaults to `native.package_name()`. - - Returns: - list: A list of labels to generated rust targets (str) - """ - - if not deps: - return [] - - if package_name == None: - package_name = native.package_name() - - # Join both sets of dependencies - dependencies = _flatten_dependency_maps([ - _NORMAL_DEPENDENCIES, - _NORMAL_DEV_DEPENDENCIES, - _PROC_MACRO_DEPENDENCIES, - _PROC_MACRO_DEV_DEPENDENCIES, - _BUILD_DEPENDENCIES, - _BUILD_PROC_MACRO_DEPENDENCIES, - ]).pop(package_name, {}) - - # Combine all conditional packages so we can easily index over a flat list - # TODO: Perhaps this should actually return select statements and maintain - # the conditionals of the dependencies - flat_deps = {} - for deps_set in dependencies.values(): - for crate_name, crate_label in deps_set.items(): - flat_deps.update({crate_name: crate_label}) - - missing_crates = [] - crate_targets = [] - for crate_target in deps: - if crate_target not in flat_deps: - missing_crates.append(crate_target) - else: - crate_targets.append(flat_deps[crate_target]) - - if missing_crates: - fail("Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`".format( - missing_crates, - package_name, - dependencies, - )) - - return crate_targets - -def all_crate_deps( - normal = False, - normal_dev = False, - proc_macro = False, - proc_macro_dev = False, - build = False, - build_proc_macro = False, - package_name = None): - """Finds the fully qualified label of all requested direct crate dependencies \ - for the package where this macro is called. - - If no parameters are set, all normal dependencies are returned. Setting any one flag will - otherwise impact the contents of the returned list. - - Args: - normal (bool, optional): If True, normal dependencies are included in the - output list. - normal_dev (bool, optional): If True, normal dev dependencies will be - included in the output list. - proc_macro (bool, optional): If True, proc_macro dependencies are included - in the output list. - proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are - included in the output list. - build (bool, optional): If True, build dependencies are included - in the output list. - build_proc_macro (bool, optional): If True, build proc_macro dependencies are - included in the output list. - package_name (str, optional): The package name of the set of dependencies to look up. - Defaults to `native.package_name()` when unset. - - Returns: - list: A list of labels to generated rust targets (str) - """ - - if package_name == None: - package_name = native.package_name() - - # Determine the relevant maps to use - all_dependency_maps = [] - if normal: - all_dependency_maps.append(_NORMAL_DEPENDENCIES) - if normal_dev: - all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES) - if proc_macro: - all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES) - if proc_macro_dev: - all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES) - if build: - all_dependency_maps.append(_BUILD_DEPENDENCIES) - if build_proc_macro: - all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES) - - # Default to always using normal dependencies - if not all_dependency_maps: - all_dependency_maps.append(_NORMAL_DEPENDENCIES) - - dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None) - - if not dependencies: - if dependencies == None: - fail("Tried to get all_crate_deps for package " + package_name + " but that package had no Cargo.toml file") - else: - return [] - - crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values()) - for condition, deps in dependencies.items(): - crate_deps += selects.with_or({ - tuple(_CONDITIONS[condition]): deps.values(), - "//conditions:default": [], - }) - - return crate_deps - -def aliases( - normal = False, - normal_dev = False, - proc_macro = False, - proc_macro_dev = False, - build = False, - build_proc_macro = False, - package_name = None): - """Produces a map of Crate alias names to their original label - - If no dependency kinds are specified, `normal` and `proc_macro` are used by default. - Setting any one flag will otherwise determine the contents of the returned dict. - - Args: - normal (bool, optional): If True, normal dependencies are included in the - output list. - normal_dev (bool, optional): If True, normal dev dependencies will be - included in the output list.. - proc_macro (bool, optional): If True, proc_macro dependencies are included - in the output list. - proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are - included in the output list. - build (bool, optional): If True, build dependencies are included - in the output list. - build_proc_macro (bool, optional): If True, build proc_macro dependencies are - included in the output list. - package_name (str, optional): The package name of the set of dependencies to look up. - Defaults to `native.package_name()` when unset. - - Returns: - dict: The aliases of all associated packages - """ - if package_name == None: - package_name = native.package_name() - - # Determine the relevant maps to use - all_aliases_maps = [] - if normal: - all_aliases_maps.append(_NORMAL_ALIASES) - if normal_dev: - all_aliases_maps.append(_NORMAL_DEV_ALIASES) - if proc_macro: - all_aliases_maps.append(_PROC_MACRO_ALIASES) - if proc_macro_dev: - all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES) - if build: - all_aliases_maps.append(_BUILD_ALIASES) - if build_proc_macro: - all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES) - - # Default to always using normal aliases - if not all_aliases_maps: - all_aliases_maps.append(_NORMAL_ALIASES) - all_aliases_maps.append(_PROC_MACRO_ALIASES) - - aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None) - - if not aliases: - return dict() - - common_items = aliases.pop(_COMMON_CONDITION, {}).items() - - # If there are only common items in the dictionary, immediately return them - if not len(aliases.keys()) == 1: - return dict(common_items) - - # Build a single select statement where each conditional has accounted for the - # common set of aliases. - crate_aliases = {"//conditions:default": dict(common_items)} - for condition, deps in aliases.items(): - condition_triples = _CONDITIONS[condition] - for triple in condition_triples: - if triple in crate_aliases: - crate_aliases[triple].update(deps) - else: - crate_aliases.update({triple: dict(deps.items() + common_items)}) - - return select(crate_aliases) - -############################################################################### -# WORKSPACE MEMBER DEPS AND ALIASES -############################################################################### - -_NORMAL_DEPENDENCIES = { - "python/extractor/tsg-python": { - _COMMON_CONDITION: { - "anyhow": Label("@vendor_py__anyhow-1.0.95//:anyhow"), - "clap": Label("@vendor_py__clap-4.5.30//:clap"), - "regex": Label("@vendor_py__regex-1.11.1//:regex"), - "tree-sitter": Label("@vendor_py__tree-sitter-0.24.7//:tree_sitter"), - "tree-sitter-graph": Label("@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph"), - }, - }, - "python/extractor/tsg-python/tsp": { - _COMMON_CONDITION: { - "tree-sitter": Label("@vendor_py__tree-sitter-0.24.7//:tree_sitter"), - }, - }, -} - -_NORMAL_ALIASES = { - "python/extractor/tsg-python": { - _COMMON_CONDITION: { - }, - }, - "python/extractor/tsg-python/tsp": { - _COMMON_CONDITION: { - }, - }, -} - -_NORMAL_DEV_DEPENDENCIES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - }, -} - -_NORMAL_DEV_ALIASES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - }, -} - -_PROC_MACRO_DEPENDENCIES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - }, -} - -_PROC_MACRO_ALIASES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - }, -} - -_PROC_MACRO_DEV_DEPENDENCIES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - }, -} - -_PROC_MACRO_DEV_ALIASES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - }, -} - -_BUILD_DEPENDENCIES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - _COMMON_CONDITION: { - "cc": Label("@vendor_py__cc-1.2.14//:cc"), - }, - }, -} - -_BUILD_ALIASES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - _COMMON_CONDITION: { - }, - }, -} - -_BUILD_PROC_MACRO_DEPENDENCIES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - }, -} - -_BUILD_PROC_MACRO_ALIASES = { - "python/extractor/tsg-python": { - }, - "python/extractor/tsg-python/tsp": { - }, -} - -_CONDITIONS = { - "aarch64-apple-darwin": ["@rules_rust//rust/platform:aarch64-apple-darwin"], - "aarch64-apple-ios": ["@rules_rust//rust/platform:aarch64-apple-ios"], - "aarch64-apple-ios-sim": ["@rules_rust//rust/platform:aarch64-apple-ios-sim"], - "aarch64-linux-android": ["@rules_rust//rust/platform:aarch64-linux-android"], - "aarch64-pc-windows-gnullvm": [], - "aarch64-pc-windows-msvc": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], - "aarch64-unknown-fuchsia": ["@rules_rust//rust/platform:aarch64-unknown-fuchsia"], - "aarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu"], - "aarch64-unknown-nixos-gnu": ["@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"], - "aarch64-unknown-nto-qnx710": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"], - "aarch64-unknown-uefi": ["@rules_rust//rust/platform:aarch64-unknown-uefi"], - "arm-unknown-linux-gnueabi": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi"], - "arm-unknown-linux-musleabi": ["@rules_rust//rust/platform:arm-unknown-linux-musleabi"], - "armv7-linux-androideabi": ["@rules_rust//rust/platform:armv7-linux-androideabi"], - "armv7-unknown-linux-gnueabi": ["@rules_rust//rust/platform:armv7-unknown-linux-gnueabi"], - "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], - "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], - "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], - "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], - "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(any())": [], - "cfg(windows)": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], - "i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"], - "i686-linux-android": ["@rules_rust//rust/platform:i686-linux-android"], - "i686-pc-windows-gnullvm": [], - "i686-pc-windows-msvc": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], - "i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"], - "i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], - "powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"], - "riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"], - "riscv64gc-unknown-linux-gnu": ["@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu"], - "riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"], - "s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"], - "thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"], - "thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"], - "wasm32-unknown-emscripten": ["@rules_rust//rust/platform:wasm32-unknown-emscripten"], - "wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], - "wasm32-wasip1": ["@rules_rust//rust/platform:wasm32-wasip1"], - "wasm32-wasip1-threads": ["@rules_rust//rust/platform:wasm32-wasip1-threads"], - "wasm32-wasip2": ["@rules_rust//rust/platform:wasm32-wasip2"], - "x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"], - "x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"], - "x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"], - "x86_64-pc-windows-gnullvm": [], - "x86_64-pc-windows-msvc": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], - "x86_64-unknown-freebsd": ["@rules_rust//rust/platform:x86_64-unknown-freebsd"], - "x86_64-unknown-fuchsia": ["@rules_rust//rust/platform:x86_64-unknown-fuchsia"], - "x86_64-unknown-linux-gnu": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu"], - "x86_64-unknown-nixos-gnu": ["@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "x86_64-unknown-none": ["@rules_rust//rust/platform:x86_64-unknown-none"], - "x86_64-unknown-uefi": ["@rules_rust//rust/platform:x86_64-unknown-uefi"], -} - -############################################################################### - -def crate_repositories(): - """A macro for defining repositories for all generated crates. - - Returns: - A list of repos visible to the module through the module extension. - """ - maybe( - http_archive, - name = "vendor_py__aho-corasick-1.1.3", - sha256 = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916", - type = "tar.gz", - urls = ["https://static.crates.io/crates/aho-corasick/1.1.3/download"], - strip_prefix = "aho-corasick-1.1.3", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.aho-corasick-1.1.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__anstream-0.6.18", - sha256 = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstream/0.6.18/download"], - strip_prefix = "anstream-0.6.18", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstream-0.6.18.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__anstyle-1.0.10", - sha256 = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle/1.0.10/download"], - strip_prefix = "anstyle-1.0.10", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstyle-1.0.10.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__anstyle-parse-0.2.6", - sha256 = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle-parse/0.2.6/download"], - strip_prefix = "anstyle-parse-0.2.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstyle-parse-0.2.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__anstyle-query-1.1.2", - sha256 = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle-query/1.1.2/download"], - strip_prefix = "anstyle-query-1.1.2", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstyle-query-1.1.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__anstyle-wincon-3.0.7", - sha256 = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle-wincon/3.0.7/download"], - strip_prefix = "anstyle-wincon-3.0.7", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anstyle-wincon-3.0.7.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__anyhow-1.0.95", - sha256 = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anyhow/1.0.95/download"], - strip_prefix = "anyhow-1.0.95", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.anyhow-1.0.95.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__cc-1.2.14", - sha256 = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cc/1.2.14/download"], - strip_prefix = "cc-1.2.14", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.cc-1.2.14.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__clap-4.5.30", - sha256 = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/clap/4.5.30/download"], - strip_prefix = "clap-4.5.30", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.clap-4.5.30.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__clap_builder-4.5.30", - sha256 = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_builder/4.5.30/download"], - strip_prefix = "clap_builder-4.5.30", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.clap_builder-4.5.30.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__clap_lex-0.7.4", - sha256 = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6", - type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_lex/0.7.4/download"], - strip_prefix = "clap_lex-0.7.4", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.clap_lex-0.7.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__colorchoice-1.0.3", - sha256 = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990", - type = "tar.gz", - urls = ["https://static.crates.io/crates/colorchoice/1.0.3/download"], - strip_prefix = "colorchoice-1.0.3", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.colorchoice-1.0.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__is_terminal_polyfill-1.70.1", - sha256 = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf", - type = "tar.gz", - urls = ["https://static.crates.io/crates/is_terminal_polyfill/1.70.1/download"], - strip_prefix = "is_terminal_polyfill-1.70.1", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.is_terminal_polyfill-1.70.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__itoa-1.0.14", - sha256 = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674", - type = "tar.gz", - urls = ["https://static.crates.io/crates/itoa/1.0.14/download"], - strip_prefix = "itoa-1.0.14", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.itoa-1.0.14.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__log-0.4.25", - sha256 = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/log/0.4.25/download"], - strip_prefix = "log-0.4.25", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.log-0.4.25.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__memchr-2.7.4", - sha256 = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3", - 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/py_deps:BUILD.memchr-2.7.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__once_cell-1.20.3", - sha256 = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/once_cell/1.20.3/download"], - strip_prefix = "once_cell-1.20.3", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.once_cell-1.20.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__proc-macro2-1.0.93", - sha256 = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99", - type = "tar.gz", - urls = ["https://static.crates.io/crates/proc-macro2/1.0.93/download"], - strip_prefix = "proc-macro2-1.0.93", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.proc-macro2-1.0.93.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__quote-1.0.38", - sha256 = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc", - type = "tar.gz", - urls = ["https://static.crates.io/crates/quote/1.0.38/download"], - strip_prefix = "quote-1.0.38", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.quote-1.0.38.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__regex-1.11.1", - sha256 = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191", - type = "tar.gz", - urls = ["https://static.crates.io/crates/regex/1.11.1/download"], - strip_prefix = "regex-1.11.1", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.regex-1.11.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__regex-automata-0.4.9", - sha256 = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908", - type = "tar.gz", - urls = ["https://static.crates.io/crates/regex-automata/0.4.9/download"], - strip_prefix = "regex-automata-0.4.9", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.regex-automata-0.4.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__regex-syntax-0.8.5", - sha256 = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/regex-syntax/0.8.5/download"], - strip_prefix = "regex-syntax-0.8.5", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.regex-syntax-0.8.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__ryu-1.0.19", - sha256 = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ryu/1.0.19/download"], - strip_prefix = "ryu-1.0.19", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.ryu-1.0.19.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__serde-1.0.217", - sha256 = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde/1.0.217/download"], - strip_prefix = "serde-1.0.217", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.serde-1.0.217.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__serde_derive-1.0.217", - sha256 = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_derive/1.0.217/download"], - strip_prefix = "serde_derive-1.0.217", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.serde_derive-1.0.217.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__serde_json-1.0.138", - sha256 = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_json/1.0.138/download"], - strip_prefix = "serde_json-1.0.138", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.serde_json-1.0.138.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__shlex-1.3.0", - sha256 = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64", - type = "tar.gz", - urls = ["https://static.crates.io/crates/shlex/1.3.0/download"], - strip_prefix = "shlex-1.3.0", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.shlex-1.3.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__smallvec-1.14.0", - sha256 = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd", - 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/py_deps:BUILD.smallvec-1.14.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__streaming-iterator-0.1.9", - sha256 = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520", - type = "tar.gz", - urls = ["https://static.crates.io/crates/streaming-iterator/0.1.9/download"], - strip_prefix = "streaming-iterator-0.1.9", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.streaming-iterator-0.1.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__strsim-0.11.1", - sha256 = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/strsim/0.11.1/download"], - strip_prefix = "strsim-0.11.1", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.strsim-0.11.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__syn-2.0.98", - sha256 = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/syn/2.0.98/download"], - strip_prefix = "syn-2.0.98", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.syn-2.0.98.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__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/py_deps:BUILD.thiserror-1.0.69.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__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/py_deps:BUILD.thiserror-impl-1.0.69.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__tree-sitter-0.24.7", - sha256 = "a5387dffa7ffc7d2dae12b50c6f7aab8ff79d6210147c6613561fc3d474c6f75", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter/0.24.7/download"], - strip_prefix = "tree-sitter-0.24.7", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-0.24.7.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__tree-sitter-graph-0.12.0", - sha256 = "63f86eb73c7d891c4b9b6fe4d4e63dd94c506e4788af7c2296afdcfbeea626cc", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-graph/0.12.0/download"], - strip_prefix = "tree-sitter-graph-0.12.0", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-graph-0.12.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__tree-sitter-language-0.1.5", - sha256 = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-language/0.1.5/download"], - strip_prefix = "tree-sitter-language-0.1.5", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.tree-sitter-language-0.1.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__unicode-ident-1.0.16", - sha256 = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034", - type = "tar.gz", - urls = ["https://static.crates.io/crates/unicode-ident/1.0.16/download"], - strip_prefix = "unicode-ident-1.0.16", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.unicode-ident-1.0.16.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__utf8parse-0.2.2", - sha256 = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821", - type = "tar.gz", - urls = ["https://static.crates.io/crates/utf8parse/0.2.2/download"], - strip_prefix = "utf8parse-0.2.2", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.utf8parse-0.2.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows-sys-0.59.0", - sha256 = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-sys/0.59.0/download"], - strip_prefix = "windows-sys-0.59.0", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows-sys-0.59.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows-targets-0.52.6", - sha256 = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-targets/0.52.6/download"], - strip_prefix = "windows-targets-0.52.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows-targets-0.52.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows_aarch64_gnullvm-0.52.6", - sha256 = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download"], - strip_prefix = "windows_aarch64_gnullvm-0.52.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_aarch64_gnullvm-0.52.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows_aarch64_msvc-0.52.6", - sha256 = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download"], - strip_prefix = "windows_aarch64_msvc-0.52.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_aarch64_msvc-0.52.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows_i686_gnu-0.52.6", - sha256 = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_i686_gnu/0.52.6/download"], - strip_prefix = "windows_i686_gnu-0.52.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_i686_gnu-0.52.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows_i686_gnullvm-0.52.6", - sha256 = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download"], - strip_prefix = "windows_i686_gnullvm-0.52.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_i686_gnullvm-0.52.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows_i686_msvc-0.52.6", - sha256 = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_i686_msvc/0.52.6/download"], - strip_prefix = "windows_i686_msvc-0.52.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_i686_msvc-0.52.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows_x86_64_gnu-0.52.6", - sha256 = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download"], - strip_prefix = "windows_x86_64_gnu-0.52.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_x86_64_gnu-0.52.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows_x86_64_gnullvm-0.52.6", - sha256 = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download"], - strip_prefix = "windows_x86_64_gnullvm-0.52.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_x86_64_gnullvm-0.52.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_py__windows_x86_64_msvc-0.52.6", - sha256 = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download"], - strip_prefix = "windows_x86_64_msvc-0.52.6", - build_file = Label("//misc/bazel/3rdparty/py_deps:BUILD.windows_x86_64_msvc-0.52.6.bazel"), - ) - - return [ - struct(repo = "vendor_py__anyhow-1.0.95", is_dev_dep = False), - struct(repo = "vendor_py__cc-1.2.14", is_dev_dep = False), - struct(repo = "vendor_py__clap-4.5.30", is_dev_dep = False), - struct(repo = "vendor_py__regex-1.11.1", is_dev_dep = False), - struct(repo = "vendor_py__tree-sitter-0.24.7", is_dev_dep = False), - struct(repo = "vendor_py__tree-sitter-graph-0.12.0", is_dev_dep = False), - ] +"""Deprecated: re-exports the crate_universe macros from `:crates.bzl`.""" + +load( + ":crates.bzl", + _aliases = "aliases", + _all_crate_deps = "all_crate_deps", + _crate_deps = "crate_deps", + _crate_edition = "crate_edition", + _crate_repositories = "crate_repositories", +) + +aliases = _aliases +all_crate_deps = _all_crate_deps +crate_deps = _crate_deps +crate_edition = _crate_edition +crate_repositories = _crate_repositories diff --git a/misc/bazel/3rdparty/py_deps/regex-1.11.1/BUILD.bazel b/misc/bazel/3rdparty/py_deps/regex-1.11.1/BUILD.bazel new file mode 100644 index 000000000000..325b1acac5e6 --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/regex-1.11.1/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "regex-1.11.1", + actual = "@vendor_py__regex-1.11.1//:regex", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/regex/BUILD.bazel b/misc/bazel/3rdparty/py_deps/regex/BUILD.bazel new file mode 100644 index 000000000000..9968c5afe14a --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/regex/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "regex", + actual = "@vendor_py__regex-1.11.1//:regex", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/serde_json-1.0.138/BUILD.bazel b/misc/bazel/3rdparty/py_deps/serde_json-1.0.138/BUILD.bazel new file mode 100644 index 000000000000..8898be6f6a9f --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/serde_json-1.0.138/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde_json-1.0.138", + actual = "@vendor_py__serde_json-1.0.138//:serde_json", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/serde_json/BUILD.bazel b/misc/bazel/3rdparty/py_deps/serde_json/BUILD.bazel new file mode 100644 index 000000000000..16e0ac1ca72d --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/serde_json/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde_json", + actual = "@vendor_py__serde_json-1.0.138//:serde_json", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/tree-sitter-0.24.7/BUILD.bazel b/misc/bazel/3rdparty/py_deps/tree-sitter-0.24.7/BUILD.bazel new file mode 100644 index 000000000000..8d7ea5705f95 --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/tree-sitter-0.24.7/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-0.24.7", + actual = "@vendor_py__tree-sitter-0.24.7//:tree_sitter", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/tree-sitter-graph-0.12.0/BUILD.bazel b/misc/bazel/3rdparty/py_deps/tree-sitter-graph-0.12.0/BUILD.bazel new file mode 100644 index 000000000000..f460a84e4181 --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/tree-sitter-graph-0.12.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-graph-0.12.0", + actual = "@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/tree-sitter-graph/BUILD.bazel b/misc/bazel/3rdparty/py_deps/tree-sitter-graph/BUILD.bazel new file mode 100644 index 000000000000..3ed15473bc90 --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/tree-sitter-graph/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-graph", + actual = "@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/py_deps/tree-sitter/BUILD.bazel b/misc/bazel/3rdparty/py_deps/tree-sitter/BUILD.bazel new file mode 100644 index 000000000000..9bd226f8164d --- /dev/null +++ b/misc/bazel/3rdparty/py_deps/tree-sitter/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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_py_deps +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter", + actual = "@vendor_py__tree-sitter-0.24.7//:tree_sitter", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel index 2a2e575fd128..dbd1849d4a9c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.4.bazel deleted file mode 100644 index 5f173cfeddb3..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.4.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "aho_corasick", - 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", - "perf-literal", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=aho-corasick", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.4", - deps = [ - "@vendor_ts__memchr-2.8.0//:memchr", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.5.bazel new file mode 100644 index 000000000000..ffdb58ca333d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.5.bazel @@ -0,0 +1,118 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "aho_corasick", + 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", + "perf-literal", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=aho-corasick", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.5", + deps = [ + "@vendor_ts__memchr-2.8.3//:memchr", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel index 4fe1a5ae3dba..99c359be3dc7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], 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 356995f7f2a6..4802a82d4912 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 @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "0.1.5", deps = [ - "@vendor_ts__libc-0.2.186//:libc", + "@vendor_ts__libc-0.2.189//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-1.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-1.0.0.bazel index dbd980940c0b..c58f7a2cd263 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-1.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-1.0.0.bazel @@ -57,12 +57,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -74,13 +76,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -88,6 +100,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.14.bazel index 31423b2f54ce..0fc9c7ed0d47 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.14.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-1.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-1.0.0.bazel index e953847f8c00..c962383c601a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-1.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-1.0.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.5.bazel index f7aa26babb74..be44598b9c65 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.11.bazel index 5fc09341b964..d60d14088302 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.11.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.102.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.102.bazel deleted file mode 100644 index 99de10c1ab76..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.102.bazel +++ /dev/null @@ -1,170 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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 = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.102", - deps = [ - "@vendor_ts__anyhow-1.0.102//: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 = "anyhow", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=anyhow", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.102", - 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.104.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.104.bazel new file mode 100644 index 000000000000..17bcad0deff0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.104.bazel @@ -0,0 +1,187 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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 = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.104", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "anyhow", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=anyhow", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.104", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-1.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-1.0.0.bazel index 4a9f462734e5..baae4d331abe 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-1.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-1.0.0.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel deleted file mode 100644 index 4f70598af859..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "arrayvec", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=arrayvec", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.6", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.8.bazel new file mode 100644 index 000000000000..c16e02e7515e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.8.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "arrayvec", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=arrayvec", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.8", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel index 85ab8b6872dd..744c4b168ed0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-polyfill-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-polyfill-1.0.3.bazel deleted file mode 100644 index f20f39c53dca..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-polyfill-1.0.3.bazel +++ /dev/null @@ -1,163 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "atomic_polyfill", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=atomic-polyfill", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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__atomic-polyfill-1.0.3//:build_script_build", - "@vendor_ts__critical-section-1.2.0//:critical_section", - ], -) - -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 = "atomic-polyfill", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=atomic-polyfill", - "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.autocfg-1.5.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.1.bazel index a7076288c6f5..c37ceeee8be7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.22.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.22.1.bazel deleted file mode 100644 index 089c4eb1ba86..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.22.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "base64", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=base64", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.23.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.23.1.bazel new file mode 100644 index 000000000000..55a0c65e7300 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.23.1.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "base64", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=base64", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.23.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel index 7ea15cc09cd7..5fb102fd366e 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.102", - actual = "@vendor_ts__anyhow-1.0.102//:anyhow", + name = "anyhow-1.0.104", + actual = "@vendor_ts__anyhow-1.0.104//:anyhow", tags = ["manual"], ) alias( name = "anyhow", - actual = "@vendor_ts__anyhow-1.0.102//:anyhow", + actual = "@vendor_ts__anyhow-1.0.104//:anyhow", tags = ["manual"], ) @@ -68,26 +68,26 @@ alias( ) alias( - name = "chrono-0.4.44", - actual = "@vendor_ts__chrono-0.4.44//:chrono", + name = "chrono-0.4.45", + actual = "@vendor_ts__chrono-0.4.45//:chrono", tags = ["manual"], ) alias( name = "chrono", - actual = "@vendor_ts__chrono-0.4.44//:chrono", + actual = "@vendor_ts__chrono-0.4.45//:chrono", tags = ["manual"], ) alias( - name = "clap-4.6.1", - actual = "@vendor_ts__clap-4.6.1//:clap", + name = "clap-4.6.7", + actual = "@vendor_ts__clap-4.6.7//:clap", tags = ["manual"], ) alias( name = "clap", - actual = "@vendor_ts__clap-4.6.1//:clap", + actual = "@vendor_ts__clap-4.6.7//:clap", tags = ["manual"], ) @@ -104,14 +104,14 @@ alias( ) alias( - name = "either-1.16.0", - actual = "@vendor_ts__either-1.16.0//:either", + name = "either-1.19.0", + actual = "@vendor_ts__either-1.19.0//:either", tags = ["manual"], ) alias( name = "either", - actual = "@vendor_ts__either-1.16.0//:either", + actual = "@vendor_ts__either-1.19.0//:either", tags = ["manual"], ) @@ -152,14 +152,14 @@ alias( ) alias( - name = "glob-0.3.3", - actual = "@vendor_ts__glob-0.3.3//:glob", + name = "glob-0.3.4", + actual = "@vendor_ts__glob-0.3.4//:glob", tags = ["manual"], ) alias( name = "glob", - actual = "@vendor_ts__glob-0.3.3//:glob", + actual = "@vendor_ts__glob-0.3.4//:glob", tags = ["manual"], ) @@ -176,26 +176,26 @@ alias( ) alias( - name = "itertools-0.14.0", - actual = "@vendor_ts__itertools-0.14.0//:itertools", + name = "itertools-0.15.0", + actual = "@vendor_ts__itertools-0.15.0//:itertools", tags = ["manual"], ) alias( name = "itertools", - actual = "@vendor_ts__itertools-0.14.0//:itertools", + actual = "@vendor_ts__itertools-0.15.0//:itertools", tags = ["manual"], ) alias( - name = "lazy_static-1.5.0", - actual = "@vendor_ts__lazy_static-1.5.0//:lazy_static", + name = "lazy_static-1.5.1", + actual = "@vendor_ts__lazy_static-1.5.1//:lazy_static", tags = ["manual"], ) alias( name = "lazy_static", - actual = "@vendor_ts__lazy_static-1.5.0//:lazy_static", + actual = "@vendor_ts__lazy_static-1.5.1//:lazy_static", tags = ["manual"], ) @@ -236,248 +236,260 @@ alias( ) alias( - name = "proc-macro2-1.0.106", - actual = "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + name = "proc-macro2-1.0.107", + actual = "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", tags = ["manual"], ) alias( name = "proc-macro2", - actual = "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + actual = "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", tags = ["manual"], ) alias( - name = "quote-1.0.45", - actual = "@vendor_ts__quote-1.0.45//:quote", + name = "quote-1.0.47", + actual = "@vendor_ts__quote-1.0.47//:quote", tags = ["manual"], ) alias( name = "quote", - actual = "@vendor_ts__quote-1.0.45//:quote", + actual = "@vendor_ts__quote-1.0.47//:quote", tags = ["manual"], ) alias( - name = "ra_ap_base_db-0.0.328", - actual = "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", + name = "ra_ap_base_db-0.0.357", + actual = "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", tags = ["manual"], ) alias( name = "ra_ap_base_db", - actual = "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", + actual = "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", tags = ["manual"], ) alias( - name = "ra_ap_cfg-0.0.328", - actual = "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", + name = "ra_ap_cfg-0.0.357", + actual = "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", tags = ["manual"], ) alias( name = "ra_ap_cfg", - actual = "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", + actual = "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", tags = ["manual"], ) alias( - name = "ra_ap_hir-0.0.328", - actual = "@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir", + name = "ra_ap_hir-0.0.357", + actual = "@vendor_ts__ra_ap_hir-0.0.357//:ra_ap_hir", tags = ["manual"], ) alias( name = "ra_ap_hir", - actual = "@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir", + actual = "@vendor_ts__ra_ap_hir-0.0.357//:ra_ap_hir", tags = ["manual"], ) alias( - name = "ra_ap_hir_def-0.0.328", - actual = "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def", + name = "ra_ap_hir_def-0.0.357", + actual = "@vendor_ts__ra_ap_hir_def-0.0.357//:ra_ap_hir_def", tags = ["manual"], ) alias( name = "ra_ap_hir_def", - actual = "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def", + actual = "@vendor_ts__ra_ap_hir_def-0.0.357//:ra_ap_hir_def", tags = ["manual"], ) alias( - name = "ra_ap_hir_expand-0.0.328", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", + name = "ra_ap_hir_expand-0.0.357", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand", tags = ["manual"], ) alias( name = "ra_ap_hir_expand", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand", tags = ["manual"], ) alias( - name = "ra_ap_hir_ty-0.0.328", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty", + name = "ra_ap_hir_ty-0.0.357", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.357//:ra_ap_hir_ty", tags = ["manual"], ) alias( name = "ra_ap_hir_ty", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.357//:ra_ap_hir_ty", tags = ["manual"], ) alias( - name = "ra_ap_ide_db-0.0.328", - actual = "@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db", + name = "ra_ap_ide_db-0.0.357", + actual = "@vendor_ts__ra_ap_ide_db-0.0.357//:ra_ap_ide_db", tags = ["manual"], ) alias( name = "ra_ap_ide_db", - actual = "@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db", + actual = "@vendor_ts__ra_ap_ide_db-0.0.357//:ra_ap_ide_db", tags = ["manual"], ) alias( - name = "ra_ap_intern-0.0.328", - actual = "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + name = "ra_ap_intern-0.0.357", + actual = "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", tags = ["manual"], ) alias( name = "ra_ap_intern", - actual = "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", + actual = "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", tags = ["manual"], ) alias( - name = "ra_ap_load-cargo-0.0.328", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.328//:ra_ap_load_cargo", + name = "ra_ap_load-cargo-0.0.357", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.357//:ra_ap_load_cargo", tags = ["manual"], ) alias( name = "ra_ap_load-cargo", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.328//:ra_ap_load_cargo", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.357//:ra_ap_load_cargo", tags = ["manual"], ) alias( - name = "ra_ap_parser-0.0.328", - actual = "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", + name = "ra_ap_parser-0.0.357", + actual = "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser", tags = ["manual"], ) alias( name = "ra_ap_parser", - actual = "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", + actual = "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser", tags = ["manual"], ) alias( - name = "ra_ap_paths-0.0.328", - actual = "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", + name = "ra_ap_paths-0.0.357", + actual = "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", tags = ["manual"], ) alias( name = "ra_ap_paths", - actual = "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", + actual = "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", tags = ["manual"], ) alias( - name = "ra_ap_project_model-0.0.328", - actual = "@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model", + name = "ra_ap_project_model-0.0.357", + actual = "@vendor_ts__ra_ap_project_model-0.0.357//:ra_ap_project_model", tags = ["manual"], ) alias( name = "ra_ap_project_model", - actual = "@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model", + actual = "@vendor_ts__ra_ap_project_model-0.0.357//:ra_ap_project_model", tags = ["manual"], ) alias( - name = "ra_ap_span-0.0.328", - actual = "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + name = "ra_ap_span-0.0.357", + actual = "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", tags = ["manual"], ) alias( name = "ra_ap_span", - actual = "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", + actual = "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", tags = ["manual"], ) alias( - name = "ra_ap_stdx-0.0.328", - actual = "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + name = "ra_ap_stdx-0.0.357", + actual = "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "stdx-0.0.328", - actual = "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + name = "stdx-0.0.357", + actual = "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", tags = ["manual"], ) alias( name = "stdx", - actual = "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", + actual = "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "ra_ap_syntax-0.0.328", - actual = "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + name = "ra_ap_syntax-0.0.357", + actual = "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", tags = ["manual"], ) alias( name = "ra_ap_syntax", - actual = "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", + actual = "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", tags = ["manual"], ) alias( - name = "ra_ap_syntax-bridge-0.0.328", - actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", + name = "ra_ap_syntax-bridge-0.0.357", + actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge", tags = ["manual"], ) alias( name = "ra_ap_syntax-bridge", - actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", + actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge", tags = ["manual"], ) alias( - name = "ra_ap_vfs-0.0.328", - actual = "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", + name = "ra_ap_toolchain-0.0.357", + actual = "@vendor_ts__ra_ap_toolchain-0.0.357//:ra_ap_toolchain", + tags = ["manual"], +) + +alias( + name = "ra_ap_toolchain", + actual = "@vendor_ts__ra_ap_toolchain-0.0.357//:ra_ap_toolchain", + tags = ["manual"], +) + +alias( + name = "ra_ap_vfs-0.0.357", + actual = "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs", tags = ["manual"], ) alias( name = "ra_ap_vfs", - actual = "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", + actual = "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs", tags = ["manual"], ) alias( - name = "rand-0.10.1", - actual = "@vendor_ts__rand-0.10.1//:rand", + name = "rand-0.10.3", + actual = "@vendor_ts__rand-0.10.3//:rand", tags = ["manual"], ) alias( name = "rand", - actual = "@vendor_ts__rand-0.10.1//:rand", + actual = "@vendor_ts__rand-0.10.3//:rand", tags = ["manual"], ) @@ -494,50 +506,50 @@ alias( ) alias( - name = "regex-1.12.3", - actual = "@vendor_ts__regex-1.12.3//:regex", + name = "regex-1.13.1", + actual = "@vendor_ts__regex-1.13.1//:regex", tags = ["manual"], ) alias( name = "regex", - actual = "@vendor_ts__regex-1.12.3//:regex", + actual = "@vendor_ts__regex-1.13.1//:regex", tags = ["manual"], ) alias( - name = "serde-1.0.228", - actual = "@vendor_ts__serde-1.0.228//:serde", + name = "serde-1.0.229", + actual = "@vendor_ts__serde-1.0.229//:serde", tags = ["manual"], ) alias( name = "serde", - actual = "@vendor_ts__serde-1.0.228//:serde", + actual = "@vendor_ts__serde-1.0.229//:serde", tags = ["manual"], ) alias( - name = "serde_json-1.0.150", - actual = "@vendor_ts__serde_json-1.0.150//:serde_json", + name = "serde_json-1.0.151", + actual = "@vendor_ts__serde_json-1.0.151//:serde_json", tags = ["manual"], ) alias( name = "serde_json", - actual = "@vendor_ts__serde_json-1.0.150//:serde_json", + actual = "@vendor_ts__serde_json-1.0.151//:serde_json", tags = ["manual"], ) alias( - name = "serde_with-3.20.0", - actual = "@vendor_ts__serde_with-3.20.0//:serde_with", + name = "serde_with-3.24.0", + actual = "@vendor_ts__serde_with-3.24.0//:serde_with", tags = ["manual"], ) alias( name = "serde_with", - actual = "@vendor_ts__serde_with-3.20.0//:serde_with", + actual = "@vendor_ts__serde_with-3.24.0//:serde_with", tags = ["manual"], ) @@ -554,38 +566,26 @@ alias( ) alias( - name = "swift-syntax-rs-0.1.0", - actual = "@vendor_ts__swift-syntax-rs-0.1.0//:swift_syntax_rs", - tags = ["manual"], -) - -alias( - name = "swift-syntax-rs", - actual = "@vendor_ts__swift-syntax-rs-0.1.0//:swift_syntax_rs", - tags = ["manual"], -) - -alias( - name = "syn-2.0.117", - actual = "@vendor_ts__syn-2.0.117//:syn", + name = "syn-3.0.6", + actual = "@vendor_ts__syn-3.0.6//:syn", tags = ["manual"], ) alias( name = "syn", - actual = "@vendor_ts__syn-2.0.117//:syn", + actual = "@vendor_ts__syn-3.0.6//:syn", tags = ["manual"], ) alias( - name = "toml-1.1.2+spec-1.1.0", - actual = "@vendor_ts__toml-1.1.2-spec-1.1.0//:toml", + name = "toml-1.1.6+spec-1.1.0", + actual = "@vendor_ts__toml-1.1.6-spec-1.1.0//:toml", tags = ["manual"], ) alias( name = "toml", - actual = "@vendor_ts__toml-1.1.2-spec-1.1.0//:toml", + actual = "@vendor_ts__toml-1.1.6-spec-1.1.0//:toml", tags = ["manual"], ) @@ -662,14 +662,14 @@ alias( ) alias( - name = "tree-sitter-python-0.23.6", - actual = "@vendor_ts__tree-sitter-python-0.23.6//:tree_sitter_python", + name = "tree-sitter-python-0.25.0", + actual = "@vendor_ts__tree-sitter-python-0.25.0//:tree_sitter_python", tags = ["manual"], ) alias( name = "tree-sitter-python", - actual = "@vendor_ts__tree-sitter-python-0.23.6//:tree_sitter_python", + actual = "@vendor_ts__tree-sitter-python-0.25.0//:tree_sitter_python", tags = ["manual"], ) @@ -698,14 +698,14 @@ alias( ) alias( - name = "triomphe-0.1.15", - actual = "@vendor_ts__triomphe-0.1.15//:triomphe", + name = "triomphe-0.1.16", + actual = "@vendor_ts__triomphe-0.1.16//:triomphe", tags = ["manual"], ) alias( name = "triomphe", - actual = "@vendor_ts__triomphe-0.1.15//:triomphe", + actual = "@vendor_ts__triomphe-0.1.16//:triomphe", tags = ["manual"], ) @@ -722,13 +722,13 @@ alias( ) alias( - name = "zstd-0.13.3", - actual = "@vendor_ts__zstd-0.13.3//:zstd", + name = "zstd-0.14.0", + actual = "@vendor_ts__zstd-0.14.0//:zstd", tags = ["manual"], ) alias( name = "zstd", - actual = "@vendor_ts__zstd-0.13.3//:zstd", + actual = "@vendor_ts__zstd-0.14.0//:zstd", tags = ["manual"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel new file mode 100644 index 000000000000..20bbe9c068a9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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 = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.3.2", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.11.1.bazel deleted file mode 100644 index 02bd7814aa45..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.11.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.11.1", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.13.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.13.2.bazel new file mode 100644 index 000000000000..3db03a0bfe17 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.13.2.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.13.2", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.6.1.bazel deleted file mode 100644 index 76af71ed47f7..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.6.1.bazel +++ /dev/null @@ -1,165 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "borsh", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=borsh", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.6.1", - deps = [ - "@vendor_ts__borsh-1.6.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 = "2018", - pkg_name = "borsh", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=borsh", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.6.1", - visibility = ["//visibility:private"], - deps = [ - "@vendor_ts__cfg_aliases-0.2.1//:cfg_aliases", - ], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.8.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.8.1.bazel new file mode 100644 index 000000000000..763e7123f3bb --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.8.1.bazel @@ -0,0 +1,182 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "borsh", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=borsh", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.8.1", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "borsh", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=borsh", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.8.1", + visibility = ["//visibility:private"], + deps = [ + "@vendor_ts__cfg_aliases-0.2.2//:cfg_aliases", + ], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel index 1238ed9a02bf..eca4e832c4b8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bs58-0.5.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bs58-0.5.1.bazel index 9501e5277cc7..88a0e7c23613 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bs58-0.5.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bs58-0.5.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.1.bazel index 1d1c95f8e747..da7e97714681 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,6 +112,6 @@ rust_library( }), version = "1.12.1", deps = [ - "@vendor_ts__memchr-2.8.0//:memchr", + "@vendor_ts__memchr-2.8.3//:memchr", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.20.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.20.2.bazel deleted file mode 100644 index 53fc8c4cf8ea..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.20.2.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "bumpalo", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=bumpalo", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.20.2", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.20.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.20.3.bazel new file mode 100644 index 000000000000..af7caf142940 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.20.3.bazel @@ -0,0 +1,113 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "bumpalo", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=bumpalo", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.20.3", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.25.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.25.0.bazel index b39efaf84360..f4608f644ff0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.25.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.25.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.byteorder-1.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.byteorder-1.5.0.bazel deleted file mode 100644 index a4c26e134094..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.byteorder-1.5.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "byteorder", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=byteorder", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.5.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.11.1.bazel deleted file mode 100644 index d16c296c5adc..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.11.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "bytes", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=bytes", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.11.1", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.12.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.12.1.bazel new file mode 100644 index 000000000000..a9491426dcdd --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.12.1.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "bytes", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=bytes", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.12.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.2.bazel deleted file mode 100644 index 92a6e66df847..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.2.bazel +++ /dev/null @@ -1,169 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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 = [ - "serde1", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.2", - deps = [ - "@vendor_ts__camino-1.2.2//:build_script_build", - "@vendor_ts__serde_core-1.0.228//:serde_core", - ], -) - -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 = [ - "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 = "2021", - pkg_name = "camino", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=camino", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.2.2", - 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.2.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.6.bazel new file mode 100644 index 000000000000..2156930e39f7 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.6.bazel @@ -0,0 +1,186 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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 = [ + "serde1", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.6", + deps = [ + ":build_script_build", + "@vendor_ts__serde_core-1.0.229//:serde_core", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "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 = "2021", + emit_warnings = False, + pkg_name = "camino", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=camino", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.2.6", + 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.3.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.3.3.bazel index 163804fcc1a8..84441a27aeff 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.3.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.3.3.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "0.3.3", deps = [ - "@vendor_ts__serde_core-1.0.228//:serde_core", + "@vendor_ts__serde_core-1.0.229//:serde_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.23.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.23.1.bazel index b4a2d6f9aae2..75089ee76fad 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.23.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.23.1.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -98,11 +111,11 @@ rust_library( }), version = "0.23.1", deps = [ - "@vendor_ts__camino-1.2.2//:camino", + "@vendor_ts__camino-1.2.6//:camino", "@vendor_ts__cargo-platform-0.3.3//:cargo_platform", "@vendor_ts__semver-1.0.28//:semver", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.150//:serde_json", - "@vendor_ts__thiserror-2.0.18//:thiserror", + "@vendor_ts__serde-1.0.229//:serde", + "@vendor_ts__serde_json-1.0.151//:serde_json", + "@vendor_ts__thiserror-2.0.20//:thiserror", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.62.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.62.bazel deleted file mode 100644 index 0f2c0be546ad..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.62.bazel +++ /dev/null @@ -1,143 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "cc", - 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 = [ - "parallel", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=cc", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.62", - deps = [ - "@vendor_ts__find-msvc-tools-0.1.9//:find_msvc_tools", - "@vendor_ts__jobserver-0.1.34//:jobserver", - "@vendor_ts__shlex-1.3.0//:shlex", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-apple-darwin - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # arm-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # i686-unknown-linux-gnu - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # powerpc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # riscv64gc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # s390x-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-apple-darwin - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-unknown-freebsd - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.4.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.4.6.bazel new file mode 100644 index 000000000000..5c24e5186e83 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.4.6.bazel @@ -0,0 +1,159 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "cc", + 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 = [ + "parallel", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=cc", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.4.6", + deps = [ + "@vendor_ts__find-msvc-tools-0.1.12//:find_msvc_tools", + "@vendor_ts__jobserver-0.1.35//:jobserver", + "@vendor_ts__shlex-2.0.1//:shlex", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # loongarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # riscv64gc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//: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.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.4.bazel index 415a85fe18cc..9d987cefc005 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.4.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.bazel deleted file mode 100644 index 3845773a67b4..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "cfg_aliases", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=cfg_aliases", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.2.bazel new file mode 100644 index 000000000000..b31b373c6558 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.2.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "cfg_aliases", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=cfg_aliases", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.0.bazel deleted file mode 100644 index 7109de2bbe4a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.0.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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "chacha20", - 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 = [ - "rng", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=chacha20", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.10.0", - deps = [ - "@vendor_ts__cfg-if-1.0.4//:cfg_if", - "@vendor_ts__rand_core-0.10.1//:rand_core", - ] + select({ - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-unknown-none": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [ - "@vendor_ts__cpufeatures-0.3.0//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.2.bazel new file mode 100644 index 000000000000..dfd90b417f0c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.2.bazel @@ -0,0 +1,167 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "chacha20", + 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 = [ + "rng", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=chacha20", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.10.2", + deps = [ + "@vendor_ts__cfg-if-1.0.4//:cfg_if", + "@vendor_ts__rand_core-0.10.1//:rand_core", + ] + select({ + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-none": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [ + "@vendor_ts__cpufeatures-0.3.1//:cpufeatures", # cfg(any(target_arch = "x86_64", target_arch = "x86")) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel index b66be433fe88..572862345f27 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel @@ -52,12 +52,14 @@ rust_proc_macro( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_proc_macro( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_proc_macro( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,9 +108,9 @@ rust_proc_macro( }), version = "0.104.0", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", "@vendor_ts__synstructure-0.13.2//:synstructure", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel index 66edc978c74f..31010432bf93 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -98,6 +111,6 @@ rust_library( }), version = "0.104.0", deps = [ - "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__bitflags-2.13.2//:bitflags", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.44.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.44.bazel deleted file mode 100644 index d4410c3639c8..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.44.bazel +++ /dev/null @@ -1,212 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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", - "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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.44", - deps = [ - "@vendor_ts__num-traits-0.2.19//:num_traits", - "@vendor_ts__serde-1.0.228//:serde", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-apple-darwin - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-apple-ios - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-apple-ios-sim - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-linux-android - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-link-0.2.1//:windows_link", # aarch64-pc-windows-msvc - ], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-unknown-fuchsia - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__iana-time-zone-0.1.65//: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.65//:iana_time_zone", # aarch64-unknown-nto-qnx710 - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # arm-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # arm-unknown-linux-musleabi - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # armv7-linux-androideabi - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # armv7-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # i686-apple-darwin - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # i686-linux-android - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-link-0.2.1//:windows_link", # i686-pc-windows-msvc - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # i686-unknown-freebsd - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # i686-unknown-linux-gnu - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # powerpc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # riscv64gc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # s390x-unknown-linux-gnu - ], - "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # wasm32-unknown-emscripten - ], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__js-sys-0.3.98//:js_sys", # wasm32-unknown-unknown - "@vendor_ts__wasm-bindgen-0.2.121//:wasm_bindgen", # wasm32-unknown-unknown - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-apple-darwin - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-apple-ios - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-linux-android - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-link-0.2.1//:windows_link", # x86_64-pc-windows-msvc - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-unknown-freebsd - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-unknown-fuchsia - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__iana-time-zone-0.1.65//: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.45.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.45.bazel new file mode 100644 index 000000000000..d8d948f5fc55 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.45.bazel @@ -0,0 +1,246 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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", + "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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.45", + deps = [ + "@vendor_ts__num-traits-0.2.19//:num_traits", + "@vendor_ts__serde-1.0.229//:serde", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-apple-ios + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-apple-ios-macabi + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-apple-ios-sim + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-linux-android + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__windows-link-0.2.1//:windows_link", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-unknown-fuchsia + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//: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.65//:iana_time_zone", # aarch64-unknown-nto-qnx710 + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # arm-unknown-linux-musleabi + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # armv7-linux-androideabi + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # armv7-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # i686-apple-darwin + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # i686-linux-android + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__windows-link-0.2.1//:windows_link", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # i686-unknown-freebsd + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # loongarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # mips-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # riscv64gc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # sparc64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # sparc64-unknown-netbsd + ], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # sparc64-unknown-openbsd + ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # wasm32-unknown-emscripten + ], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [ + "@vendor_ts__js-sys-0.3.103//:js_sys", # wasm32-unknown-unknown + "@vendor_ts__wasm-bindgen-0.2.126//:wasm_bindgen", # wasm32-unknown-unknown + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-apple-ios + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-apple-ios-macabi + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-linux-android + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__windows-link-0.2.1//:windows_link", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-unknown-fuchsia + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//:iana_time_zone", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__iana-time-zone-0.1.65//: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.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.1.bazel deleted file mode 100644 index c03e48a40d2e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.1.bazel +++ /dev/null @@ -1,113 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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 = "2024", - proc_macro_deps = [ - "@vendor_ts__clap_derive-4.6.1//:clap_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.6.1", - deps = [ - "@vendor_ts__clap_builder-4.6.0//:clap_builder", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.7.bazel new file mode 100644 index 000000000000..5f67ad8584f1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.7.bazel @@ -0,0 +1,126 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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 = "2024", + proc_macro_deps = [ + "@vendor_ts__clap_derive-4.6.7//:clap_derive", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.6.7", + deps = [ + "@vendor_ts__clap_builder-4.6.7//:clap_builder", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.0.bazel deleted file mode 100644 index e80eda78e4eb..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.0.bazel +++ /dev/null @@ -1,111 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.6.0", - deps = [ - "@vendor_ts__anstream-1.0.0//:anstream", - "@vendor_ts__anstyle-1.0.14//:anstyle", - "@vendor_ts__clap_lex-1.1.0//:clap_lex", - "@vendor_ts__strsim-0.11.1//:strsim", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.7.bazel new file mode 100644 index 000000000000..b40612f99294 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.7.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.6.7", + deps = [ + "@vendor_ts__anstream-1.0.0//:anstream", + "@vendor_ts__anstyle-1.0.14//:anstyle", + "@vendor_ts__clap_lex-1.1.1//:clap_lex", + "@vendor_ts__strsim-0.11.1//:strsim", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.1.bazel deleted file mode 100644 index dfbff2549f07..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.1.bazel +++ /dev/null @@ -1,106 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.6.1", - deps = [ - "@vendor_ts__heck-0.5.0//:heck", - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.7.bazel new file mode 100644 index 000000000000..ff4b196e2456 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.7.bazel @@ -0,0 +1,119 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.6.7", + deps = [ + "@vendor_ts__heck-0.5.0//:heck", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-3.0.6//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-1.1.0.bazel deleted file mode 100644 index 701c96d00d9e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-1.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "clap_lex", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=clap_lex", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-1.1.1.bazel new file mode 100644 index 000000000000..63d663d010d1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-1.1.1.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "clap_lex", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=clap_lex", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cobs-0.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cobs-0.3.0.bazel index 658009e8af70..22ed036b1abf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cobs-0.3.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cobs-0.3.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "0.3.0", deps = [ - "@vendor_ts__thiserror-2.0.18//:thiserror", + "@vendor_ts__thiserror-2.0.20//:thiserror", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.5.bazel index 59b50356c647..e0c30d441ded 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.core-foundation-sys-0.8.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.core-foundation-sys-0.8.7.bazel index fdbed4c6dc75..c3f9a4384887 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.core-foundation-sys-0.8.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.core-foundation-sys-0.8.7.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.countme-3.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.countme-3.0.1.bazel index 24e1b277c8e6..31c0932048a5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.countme-3.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.countme-3.0.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.2.0.bazel index 0548d73ed680..083abb9e6774 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.2.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.0.bazel deleted file mode 100644 index 0defc99a0ac1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.0.bazel +++ /dev/null @@ -1,118 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "cpufeatures", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=cpufeatures", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.0", - deps = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_arch = "aarch64", target_os = "android")) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_arch = "aarch64", target_os = "linux")) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_arch = "aarch64", target_os = "linux")) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.1.bazel new file mode 100644 index 000000000000..c27bd552f05f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cpufeatures-0.3.1.bazel @@ -0,0 +1,137 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "cpufeatures", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=cpufeatures", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.1", + deps = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_arch = "aarch64", target_os = "android")) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_arch = "aarch64", target_os = "linux")) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_arch = "aarch64", target_os = "linux")) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_arch = "loongarch64", target_os = "linux")) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel index ee8ffed758d6..ad0b2007fd41 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,8 +116,8 @@ rust_library( }), version = "1.5.0", deps = [ + ":build_script_build", "@vendor_ts__cfg-if-1.0.4//:cfg_if", - "@vendor_ts__crc32fast-1.5.0//:build_script_build", ], ) @@ -114,6 +127,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -146,6 +162,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "crc32fast", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.critical-section-1.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.critical-section-1.2.0.bazel deleted file mode 100644 index 0e3cf2f62f41..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.critical-section-1.2.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "critical_section", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=critical-section", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.0", -) 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 deleted file mode 100644 index 3a6999466ae1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.crossbeam-channel-0.5.17.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.17.bazel new file mode 100644 index 000000000000..e3479757251a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.17.bazel @@ -0,0 +1,117 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.17", + deps = [ + "@vendor_ts__crossbeam-utils-0.8.23//:crossbeam_utils", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel deleted file mode 100644 index 5d08b0a7259b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "crossbeam_deque", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=crossbeam-deque", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.6", - deps = [ - "@vendor_ts__crossbeam-epoch-0.9.18//:crossbeam_epoch", - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.8.bazel new file mode 100644 index 000000000000..96536ddd829e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.8.bazel @@ -0,0 +1,189 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "crossbeam_deque", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crossbeam-deque", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.8", + deps = [ + ":build_script_build", + "@vendor_ts__crossbeam-epoch-0.9.21//:crossbeam_epoch", + "@vendor_ts__crossbeam-utils-0.8.23//:crossbeam_utils", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "crossbeam-deque", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crossbeam-deque", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.8.8", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.18.bazel deleted file mode 100644 index bded5897eb8e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.18.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "crossbeam_epoch", - 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 = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=crossbeam-epoch", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.18", - deps = [ - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.21.bazel new file mode 100644 index 000000000000..eba594a91a37 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.21.bazel @@ -0,0 +1,188 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "crossbeam_epoch", + 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 = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crossbeam-epoch", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.21", + deps = [ + ":build_script_build", + "@vendor_ts__crossbeam-utils-0.8.23//:crossbeam_utils", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "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", + emit_warnings = False, + pkg_name = "crossbeam-epoch", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crossbeam-epoch", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.9.21", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.bazel deleted file mode 100644 index 18797ac294ca..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "crossbeam_queue", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=crossbeam-queue", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.12", - deps = [ - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.14.bazel new file mode 100644 index 000000000000..5d7897461888 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.14.bazel @@ -0,0 +1,118 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "crossbeam_queue", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crossbeam-queue", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.14", + deps = [ + "@vendor_ts__crossbeam-utils-0.8.23//:crossbeam_utils", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel deleted file mode 100644 index ba484864b400..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel +++ /dev/null @@ -1,170 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "crossbeam_utils", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=crossbeam-utils", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.21", - deps = [ - "@vendor_ts__crossbeam-utils-0.8.21//: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 = "crossbeam-utils", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=crossbeam-utils", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.8.21", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.23.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.23.bazel new file mode 100644 index 000000000000..b399f89ca53e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.23.bazel @@ -0,0 +1,187 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "crossbeam_utils", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crossbeam-utils", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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 = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "crossbeam-utils", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crossbeam-utils", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.8.23", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.23.0.bazel deleted file mode 100644 index 84da5eac9d94..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.23.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "darling", - 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", - "suggestions", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__darling_macro-0.23.0//:darling_macro", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=darling", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.23.0", - deps = [ - "@vendor_ts__darling_core-0.23.0//:darling_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.24.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.24.1.bazel new file mode 100644 index 000000000000..d5660e3e3c0c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.24.1.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "darling", + 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", + "suggestions", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__darling_macro-0.24.1//:darling_macro", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=darling", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.24.1", + deps = [ + "@vendor_ts__darling_core-0.24.1//:darling_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.23.0.bazel deleted file mode 100644 index a9da47fd6acd..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.23.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "darling_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 = [ - "strsim", - "suggestions", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=darling_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.23.0", - deps = [ - "@vendor_ts__ident_case-1.0.1//:ident_case", - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__strsim-0.11.1//:strsim", - "@vendor_ts__syn-2.0.117//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.24.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.24.1.bazel new file mode 100644 index 000000000000..b5be536cb1ed --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.24.1.bazel @@ -0,0 +1,121 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "darling_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 = [ + "strsim", + "suggestions", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=darling_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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.24.1", + deps = [ + "@vendor_ts__ident_case-1.0.1//:ident_case", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__strsim-0.11.1//:strsim", + "@vendor_ts__syn-3.0.6//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.23.0.bazel deleted file mode 100644 index aa8c9c33128a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.23.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "darling_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 = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=darling_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.23.0", - deps = [ - "@vendor_ts__darling_core-0.23.0//:darling_core", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.24.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.24.1.bazel new file mode 100644 index 000000000000..742bfe9457d1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.24.1.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "darling_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 = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=darling_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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.24.1", + deps = [ + "@vendor_ts__darling_core-0.24.1//:darling_core", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-3.0.6//:syn", + ], +) 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 deleted file mode 100644 index bdfab824cf51..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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 = [ - "inline", - "raw-api", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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 = "6.1.0", - deps = [ - "@vendor_ts__cfg-if-1.0.4//:cfg_if", - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", - "@vendor_ts__hashbrown-0.14.5//:hashbrown", - "@vendor_ts__lock_api-0.4.14//:lock_api", - "@vendor_ts__once_cell-1.21.4//:once_cell", - "@vendor_ts__parking_lot_core-0.9.12//:parking_lot_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.2.1.bazel new file mode 100644 index 000000000000..8936cae6e0e4 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.2.1.bazel @@ -0,0 +1,122 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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 = [ + "inline", + "raw-api", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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 = "6.2.1", + deps = [ + "@vendor_ts__cfg-if-1.0.4//:cfg_if", + "@vendor_ts__crossbeam-utils-0.8.23//:crossbeam_utils", + "@vendor_ts__hashbrown-0.14.5//:hashbrown", + "@vendor_ts__lock_api-0.4.14//:lock_api", + "@vendor_ts__once_cell-1.21.4//:once_cell", + "@vendor_ts__parking_lot_core-0.9.12//:parking_lot_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-1.1.1.bazel new file mode 100644 index 000000000000..0dbaddc782d8 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-1.1.1.bazel @@ -0,0 +1,184 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "defmt", + 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__defmt-macros-1.1.1//:defmt_macros", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=defmt", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.1", + deps = [ + ":build_script_build", + "@vendor_ts__bitflags-1.3.2//:bitflags", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + links = "defmt", + pkg_name = "defmt", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=defmt", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.1.1", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-macros-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-macros-1.1.1.bazel new file mode 100644 index 000000000000..71c8b152e00e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-macros-1.1.1.bazel @@ -0,0 +1,183 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "defmt_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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=defmt-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.1", + deps = [ + ":build_script_build", + "@vendor_ts__defmt-parser-1.0.0//:defmt_parser", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "defmt-macros", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=defmt-macros", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.1.1", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-parser-1.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-parser-1.0.0.bazel new file mode 100644 index 000000000000..852811357a37 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-parser-1.0.0.bazel @@ -0,0 +1,113 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "defmt_parser", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=defmt-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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", + deps = [ + "@vendor_ts__thiserror-2.0.20//:thiserror", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.8.bazel index a2e622da9c32..c0c0362f112f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.8.bazel @@ -36,7 +36,6 @@ rust_library( ), crate_features = [ "default", - "powerfmt", ], crate_root = "src/lib.rs", edition = "2021", @@ -56,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -98,7 +110,4 @@ rust_library( "//conditions:default": ["@platforms//:incompatible"], }), version = "0.5.8", - deps = [ - "@vendor_ts__powerfmt-0.2.0//:powerfmt", - ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.derive-where-1.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.derive-where-1.6.1.bazel index 16396514eeb5..bf458f19425f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.derive-where-1.6.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.derive-where-1.6.1.bazel @@ -52,12 +52,14 @@ rust_proc_macro( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_proc_macro( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_proc_macro( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,8 +108,8 @@ rust_proc_macro( }), version = "1.6.1", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dissimilar-1.0.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dissimilar-1.0.11.bazel index 79ee7c7ee72a..beb02d9fa4e2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dissimilar-1.0.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dissimilar-1.0.11.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.drop_bomb-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.drop_bomb-0.1.5.bazel index d63db7ce6aa5..c79036f96af7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.drop_bomb-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.drop_bomb-0.1.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dunce-1.0.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dunce-1.0.5.bazel index c47d2917bf68..f739664bb789 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dunce-1.0.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dunce-1.0.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel index 40f78950a02f..3594f9820aaf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.16.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.16.0.bazel deleted file mode 100644 index 70e20043d922..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.16.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "either", - 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", - "use_std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=either", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.19.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.19.0.bazel new file mode 100644 index 000000000000..aeb6e5bf121f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.19.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "either", + 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", + "use_std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=either", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.19.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.4.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.4.0.bazel index 1aedeaf25f78..efeec21491db 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.4.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.4.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.6.1.bazel index cf929d38e539..6c43e92a25cc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.6.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.embedded-io-0.6.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.4.bazel index 09e5e93a3375..a3e2f57b5009 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.4.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "0.14.4", deps = [ - "@vendor_ts__log-0.4.29//:log", + "@vendor_ts__log-0.4.34//:log", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-0.2.33.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-0.2.33.bazel index c88ddeb86a83..4a65fece6e8f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-0.2.33.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-0.2.33.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-japanese-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-japanese-1.20141219.5.bazel index fc81caebaa98..5896a9ecc42d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-japanese-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-japanese-1.20141219.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-korean-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-korean-1.20141219.5.bazel index 6776c8f8f2fb..078ff6accb97 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-korean-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-korean-1.20141219.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-simpchinese-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-simpchinese-1.20141219.5.bazel index cd8250d7be68..52bcf54429ab 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-simpchinese-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-simpchinese-1.20141219.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-singlebyte-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-singlebyte-1.20141219.5.bazel index 3466817c9f05..8f904e6a7aca 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-singlebyte-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-singlebyte-1.20141219.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-tradchinese-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-tradchinese-1.20141219.5.bazel index e98585004e60..4ec1935d1a7f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-tradchinese-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-tradchinese-1.20141219.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding_index_tests-0.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding_index_tests-0.1.4.bazel index 987bc9667d30..db14708f8670 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding_index_tests-0.1.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding_index_tests-0.1.4.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel index 251b726dcc9d..f9bc520f0fee 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel index 4bb767ff10e1..d20df7a4ce67 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel @@ -63,12 +63,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -80,13 +82,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -94,6 +106,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -106,9 +119,9 @@ rust_library( }), version = "0.10.19", deps = [ - "@vendor_ts__figment-0.10.19//:build_script_build", + ":build_script_build", "@vendor_ts__pear-0.2.9//:pear", - "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__serde-1.0.229//:serde", "@vendor_ts__serde_yaml-0.9.34-deprecated//:serde_yaml", "@vendor_ts__uncased-0.9.10//:uncased", ] + select({ @@ -139,18 +152,36 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [ + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + ], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [ + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + ], "@rules_rust//rust/platform:thumbv7em-none-eabi": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [ + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + ], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [ + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + ], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [ + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + ], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], @@ -176,6 +207,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -211,6 +245,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, pkg_name = "figment", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.12.bazel new file mode 100644 index 000000000000..fb65dc12ff26 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.12.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "find_msvc_tools", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=find-msvc-tools", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.12", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.9.bazel deleted file mode 100644 index 12cd2ecbe0cc..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.9.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "find_msvc_tools", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=find-msvc-tools", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.5.7.bazel index 01336178f130..938bb88d1db2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.5.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.5.7.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.9.bazel index 9c55039b43f1..dce37d0793cc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.9.bazel @@ -58,12 +58,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -75,13 +77,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -89,6 +101,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel index 8fc2c7d51b89..b0e7bfca0090 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.2.0.bazel new file mode 100644 index 000000000000..9f93a855be15 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.2.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "foldhash", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=foldhash", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-3.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-3.3.0.bazel index a8823433285d..4e54c0df3877 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-3.3.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-3.3.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "3.3.0", deps = [ - "@vendor_ts__fs-err-3.3.0//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, pkg_name = "fs-err", rustc_env_files = [ ":cargo_toml_env_vars", 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 cdf129ebf21c..87794962f650 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 @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "4.1.0", deps = [ - "@vendor_ts__libc-0.2.186//:libc", + "@vendor_ts__libc-0.2.189//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fst-0.4.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fst-0.4.7.bazel index 484accede2c0..2db05e8d8961 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fst-0.4.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fst-0.4.7.bazel @@ -59,12 +59,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -76,13 +78,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -90,6 +102,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -102,7 +115,7 @@ rust_library( }), version = "0.4.7", deps = [ - "@vendor_ts__fst-0.4.7//:build_script_build", + ":build_script_build", ], ) @@ -112,6 +125,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -143,6 +159,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, pkg_name = "fst", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-core-0.3.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-core-0.3.32.bazel deleted file mode 100644 index 0540232caa8d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-core-0.3.32.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "futures_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 = [ - "alloc", - "std", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=futures-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.32", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-core-0.3.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-core-0.3.34.bazel new file mode 100644 index 000000000000..85a921ef7ff8 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-core-0.3.34.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "futures_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 = [ + "alloc", + "std", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=futures-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.34", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-task-0.3.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-task-0.3.32.bazel deleted file mode 100644 index 35f5694bc98b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-task-0.3.32.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "futures_task", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=futures-task", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.32", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-task-0.3.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-task-0.3.34.bazel new file mode 100644 index 000000000000..f960f96829fa --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-task-0.3.34.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "futures_task", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=futures-task", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.34", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-util-0.3.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-util-0.3.32.bazel deleted file mode 100644 index e545f6db19f8..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-util-0.3.32.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "futures_util", - 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", - "slab", - "std", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=futures-util", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.32", - deps = [ - "@vendor_ts__futures-core-0.3.32//:futures_core", - "@vendor_ts__futures-task-0.3.32//:futures_task", - "@vendor_ts__pin-project-lite-0.2.17//:pin_project_lite", - "@vendor_ts__slab-0.4.12//:slab", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-util-0.3.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-util-0.3.34.bazel new file mode 100644 index 000000000000..83b6c5da7672 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-util-0.3.34.bazel @@ -0,0 +1,121 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "futures_util", + 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", + "slab", + "std", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=futures-util", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.34", + deps = [ + "@vendor_ts__futures-core-0.3.34//:futures_core", + "@vendor_ts__futures-task-0.3.34//:futures_task", + "@vendor_ts__pin-project-lite-0.2.17//:pin_project_lite", + "@vendor_ts__slab-0.4.12//:slab", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.4.bazel deleted file mode 100644 index 226c87db023e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.4.bazel +++ /dev/null @@ -1,249 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "getrandom", - 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 = [ - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=getrandom", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.4", - deps = [ - "@vendor_ts__cfg-if-1.0.4//:cfg_if", - "@vendor_ts__getrandom-0.3.4//:build_script_build", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//: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.186//: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.186//: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.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.186//: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.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.186//: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.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) - ], - "@rules_rust//rust/platform:wasm32-wasip2": [ - "@vendor_ts__wasip2-1.0.3-wasi-0.2.9//:wasip2", # cfg(all(target_arch = "wasm32", target_os = "wasi", target_env = "p2")) - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//: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.186//: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.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "//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_features = [ - "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 = "getrandom", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=getrandom", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.3.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.4.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.2.bazel deleted file mode 100644 index c9cdb9f51292..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.2.bazel +++ /dev/null @@ -1,252 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "getrandom", - 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 = [ - "std", - "sys_rng", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=getrandom", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.2", - deps = [ - "@vendor_ts__cfg-if-1.0.4//:cfg_if", - "@vendor_ts__getrandom-0.4.2//:build_script_build", - "@vendor_ts__rand_core-0.10.1//:rand_core", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//: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.186//: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.186//: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.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.186//: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.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.186//: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.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) - ], - "@rules_rust//rust/platform:wasm32-wasip2": [ - "@vendor_ts__wasip2-1.0.3-wasi-0.2.9//:wasip2", # cfg(all(target_arch = "wasm32", target_os = "wasi", target_env = "p2")) - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//: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.186//: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.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) - ], - "//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_features = [ - "std", - "sys_rng", - ], - 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 = "2024", - pkg_name = "getrandom", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=getrandom", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.4.2", - 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.4.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.3.bazel new file mode 100644 index 000000000000..58c7d8f79752 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.3.bazel @@ -0,0 +1,287 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "getrandom", + 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 = [ + "std", + "sys_rng", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=getrandom", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.3", + deps = [ + ":build_script_build", + "@vendor_ts__cfg-if-1.0.4//:cfg_if", + "@vendor_ts__rand_core-0.10.1//:rand_core", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//: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.189//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//: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.189//: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.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__libc-0.2.189//: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.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.189//: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.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(target_os = "netbsd") + ], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//: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.189//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//: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.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "hurd", target_os = "illumos", target_os = "cygwin", all(target_os = "horizon", target_arch = "arm"))) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], + "//conditions:default": [], + }), +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "std", + "sys_rng", + ], + 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 = "2024", + emit_warnings = False, + pkg_name = "getrandom", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=getrandom", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.4.3", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.bazel deleted file mode 100644 index d26541b4fca7..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "glob", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=glob", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.3", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.4.bazel new file mode 100644 index 000000000000..3cfca3bda5b2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.4.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "glob", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=glob", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.4", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.18.bazel index a372bc5cbecf..baf24845c2e5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.18.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.18.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,10 +112,10 @@ rust_library( }), version = "0.4.18", deps = [ - "@vendor_ts__aho-corasick-1.1.4//:aho_corasick", + "@vendor_ts__aho-corasick-1.1.5//:aho_corasick", "@vendor_ts__bstr-1.12.1//:bstr", - "@vendor_ts__log-0.4.29//:log", - "@vendor_ts__regex-automata-0.4.14//:regex_automata", - "@vendor_ts__regex-syntax-0.8.10//:regex_syntax", + "@vendor_ts__log-0.4.34//:log", + "@vendor_ts__regex-automata-0.4.18//:regex_automata", + "@vendor_ts__regex-syntax-0.8.11//:regex_syntax", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hash32-0.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hash32-0.2.1.bazel deleted file mode 100644 index 182c9c89fd4e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hash32-0.2.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "hash32", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=hash32", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1", - deps = [ - "@vendor_ts__byteorder-1.5.0//:byteorder", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.12.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.12.3.bazel index 83f146a6367b..411bf205e59f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.12.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.12.3.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel index a485aa4c1e62..7460d9c11147 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel index a51bce9391ac..0764b2faae8d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel @@ -35,12 +35,8 @@ rust_library( ], ), crate_features = [ - "allocator-api2", - "default", "default-hasher", - "equivalent", "inline-more", - "raw-entry", ], crate_root = "src/lib.rs", edition = "2021", @@ -60,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,8 +112,6 @@ rust_library( }), version = "0.15.5", deps = [ - "@vendor_ts__allocator-api2-0.2.21//:allocator_api2", - "@vendor_ts__equivalent-1.0.2//:equivalent", "@vendor_ts__foldhash-0.1.5//:foldhash", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.1.bazel index eba4862da685..37b8ba4dfe41 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.17.1.bazel @@ -34,6 +34,14 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "allocator-api2", + "default", + "default-hasher", + "equivalent", + "inline-more", + "raw-entry", + ], crate_root = "src/lib.rs", edition = "2024", rustc_env_files = [ @@ -52,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -94,4 +115,9 @@ rust_library( "//conditions:default": ["@platforms//:incompatible"], }), version = "0.17.1", + deps = [ + "@vendor_ts__allocator-api2-0.2.21//:allocator_api2", + "@vendor_ts__equivalent-1.0.2//:equivalent", + "@vendor_ts__foldhash-0.2.0//:foldhash", + ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel deleted file mode 100644 index badd7cb27219..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "hashlink", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=hashlink", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.10.0", - deps = [ - "@vendor_ts__hashbrown-0.15.5//:hashbrown", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.12.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.12.1.bazel new file mode 100644 index 000000000000..a77ecd159951 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.12.1.bazel @@ -0,0 +1,113 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "hashlink", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=hashlink", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.12.1", + deps = [ + "@vendor_ts__hashbrown-0.17.1//:hashbrown", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heapless-0.7.17.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heapless-0.7.17.bazel deleted file mode 100644 index 75b7d25c4df4..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heapless-0.7.17.bazel +++ /dev/null @@ -1,213 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "heapless", - 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 = [ - "atomic-polyfill", - "cas", - "serde", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=heapless", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.17", - deps = [ - "@vendor_ts__hash32-0.2.1//:hash32", - "@vendor_ts__heapless-0.7.17//:build_script_build", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__stable_deref_trait-1.2.1//:stable_deref_trait", - ] + select({ - "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ - "@vendor_ts__atomic-polyfill-1.0.3//:atomic_polyfill", # riscv32imc-unknown-none-elf - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "@rules_rust//rust/platform:x86_64-unknown-none": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "@rules_rust//rust/platform:x86_64-unknown-uefi": [ - "@vendor_ts__spin-0.9.8//:spin", # cfg(target_arch = "x86_64") - ], - "//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_features = [ - "atomic-polyfill", - "cas", - "serde", - ], - 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 = "heapless", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=heapless", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.7.17", - visibility = ["//visibility:private"], - deps = [ - "@vendor_ts__rustc_version-0.4.1//:rustc_version", - ], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.5.0.bazel index a8e52fe9b29f..a6e9298f1629 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.5.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], 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 index 0db33a0a48a1..5172dd0a1148 100644 --- 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 @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hex-0.4.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hex-0.4.3.bazel index 702f649e1109..9351aa85fcaa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hex-0.4.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hex-0.4.3.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.12.bazel deleted file mode 100644 index e1135d6cac8c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.12.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "home", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=home", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.12", - deps = select({ - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.65.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.65.bazel index 3d43db490e7d..0fde039d9bce 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.65.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.65.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -104,6 +117,9 @@ rust_library( "@rules_rust//rust/platform:aarch64-apple-ios": [ "@vendor_ts__core-foundation-sys-0.8.7//:core_foundation_sys", # cfg(target_vendor = "apple") ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__core-foundation-sys-0.8.7//:core_foundation_sys", # cfg(target_vendor = "apple") + ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ "@vendor_ts__core-foundation-sys-0.8.7//:core_foundation_sys", # cfg(target_vendor = "apple") ], @@ -126,9 +142,9 @@ rust_library( "@vendor_ts__windows-core-0.62.2//:windows_core", # cfg(target_os = "windows") ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__js-sys-0.3.98//:js_sys", # cfg(all(target_arch = "wasm32", target_os = "unknown")) - "@vendor_ts__log-0.4.29//:log", # cfg(all(target_arch = "wasm32", target_os = "unknown")) - "@vendor_ts__wasm-bindgen-0.2.121//:wasm_bindgen", # cfg(all(target_arch = "wasm32", target_os = "unknown")) + "@vendor_ts__js-sys-0.3.103//:js_sys", # cfg(all(target_arch = "wasm32", target_os = "unknown")) + "@vendor_ts__log-0.4.34//:log", # cfg(all(target_arch = "wasm32", target_os = "unknown")) + "@vendor_ts__wasm-bindgen-0.2.126//:wasm_bindgen", # cfg(all(target_arch = "wasm32", target_os = "unknown")) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ "@vendor_ts__core-foundation-sys-0.8.7//:core_foundation_sys", # cfg(target_vendor = "apple") @@ -136,6 +152,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-apple-ios": [ "@vendor_ts__core-foundation-sys-0.8.7//:core_foundation_sys", # cfg(target_vendor = "apple") ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__core-foundation-sys-0.8.7//:core_foundation_sys", # cfg(target_vendor = "apple") + ], "@rules_rust//rust/platform:x86_64-linux-android": [ "@vendor_ts__android_system_properties-0.1.5//:android_system_properties", # cfg(target_os = "android") ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel index 626fa294ba23..560ed0fbe55f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.1.2", deps = [ - "@vendor_ts__iana-time-zone-haiku-0.1.2//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, pkg_name = "iana-time-zone-haiku", rustc_env_files = [ ":cargo_toml_env_vars", @@ -154,7 +171,7 @@ cargo_build_script( version = "0.1.2", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.62//:cc", + "@vendor_ts__cc-1.4.6//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.id-arena-2.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.id-arena-2.3.0.bazel deleted file mode 100644 index 7561bcf77875..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.id-arena-2.3.0.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "id_arena", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=id-arena", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ident_case-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ident_case-1.0.1.bazel index 44123d039086..dafffb18f245 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ident_case-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ident_case-1.0.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-1.9.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-1.9.3.bazel index b80e746408fe..23dadea921df 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-1.9.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-1.9.3.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,8 +112,8 @@ rust_library( }), version = "1.9.3", deps = [ + ":build_script_build", "@vendor_ts__hashbrown-0.12.3//:hashbrown", - "@vendor_ts__indexmap-1.9.3//:build_script_build", ], ) @@ -110,6 +123,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -138,6 +154,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "indexmap", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.14.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.14.0.bazel deleted file mode 100644 index 5a727af4c881..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.14.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "indexmap", - 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", - "serde", - "std", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=indexmap", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.14.0", - deps = [ - "@vendor_ts__equivalent-1.0.2//:equivalent", - "@vendor_ts__hashbrown-0.17.1//:hashbrown", - "@vendor_ts__serde_core-1.0.228//:serde_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.14.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.14.2.bazel new file mode 100644 index 000000000000..7671e5481132 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.14.2.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "indexmap", + 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", + "serde", + "std", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=indexmap", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.14.2", + deps = [ + "@vendor_ts__equivalent-1.0.2//:equivalent", + "@vendor_ts__hashbrown-0.17.1//:hashbrown", + "@vendor_ts__serde_core-1.0.229//:serde_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inlinable_string-0.1.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inlinable_string-0.1.15.bazel index 662494b3e799..a8b83e8f251c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inlinable_string-0.1.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inlinable_string-0.1.15.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.1.bazel deleted file mode 100644 index 7e7ec089ec53..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "inotify", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=inotify", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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__bitflags-2.11.1//:bitflags", - "@vendor_ts__inotify-sys-0.1.5//:inotify_sys", - "@vendor_ts__libc-0.2.186//:libc", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.5.bazel new file mode 100644 index 000000000000..6c681cc2972f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.5.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "inotify", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=inotify", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.5", + deps = [ + "@vendor_ts__bitflags-2.13.2//:bitflags", + "@vendor_ts__inotify-sys-0.1.8//:inotify_sys", + "@vendor_ts__libc-0.2.189//: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 deleted file mode 100644 index 18a221db2a12..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "inotify_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_root = "src/lib.rs", - edition = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=inotify-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.5", - deps = [ - "@vendor_ts__libc-0.2.186//:libc", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.8.bazel new file mode 100644 index 000000000000..e17e1cf2c57c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.8.bazel @@ -0,0 +1,180 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "inotify_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_root = "src/lib.rs", + edition = "2015", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=inotify-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.8", + deps = [ + ":build_script_build", + "@vendor_ts__libc-0.2.189//:libc", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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 = "2015", + emit_warnings = False, + pkg_name = "inotify-sys", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=inotify-sys", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.1.8", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.10.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.10.3.bazel new file mode 100644 index 000000000000..3f7651684c43 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.10.3.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "intrusive_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_features = [ + "alloc", + "default", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=intrusive-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.10.3", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.bazel deleted file mode 100644 index ee299069b1e2..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "intrusive_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_features = [ - "alloc", - "default", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=intrusive-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.7", - deps = [ - "@vendor_ts__memoffset-0.9.1//:memoffset", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inventory-0.3.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inventory-0.3.24.bazel index f80d0c4f3e86..5c50f47a734a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inventory-0.3.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inventory-0.3.24.bazel @@ -38,19 +38,19 @@ rust_library( edition = "2021", proc_macro_deps = select({ "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + "@vendor_ts__rustversion-1.0.23//:rustversion", # cfg(target_family = "wasm") ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + "@vendor_ts__rustversion-1.0.23//:rustversion", # cfg(target_family = "wasm") ], "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + "@vendor_ts__rustversion-1.0.23//:rustversion", # cfg(target_family = "wasm") ], "@rules_rust//rust/platform:wasm32-wasip1-threads": [ - "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + "@vendor_ts__rustversion-1.0.23//:rustversion", # cfg(target_family = "wasm") ], "@rules_rust//rust/platform:wasm32-wasip2": [ - "@vendor_ts__rustversion-1.0.22//:rustversion", # cfg(target_family = "wasm") + "@vendor_ts__rustversion-1.0.23//:rustversion", # cfg(target_family = "wasm") ], "//conditions:default": [], }), @@ -70,12 +70,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -87,13 +89,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -101,6 +113,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.2.bazel index d42782128b45..169e5417e57c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.2.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel deleted file mode 100644 index 359e0123e5f6..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "itertools", - 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", - "use_alloc", - "use_std", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=itertools", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.14.0", - deps = [ - "@vendor_ts__either-1.16.0//:either", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.15.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.15.0.bazel new file mode 100644 index 000000000000..19bb1510456d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.15.0.bazel @@ -0,0 +1,118 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "itertools", + 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", + "use_alloc", + "use_std", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=itertools", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.15.0", + deps = [ + "@vendor_ts__either-1.19.0//:either", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.18.bazel index 034a159fcebd..62aa98ad9474 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.18.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.18.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-0.2.37.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-0.2.37.bazel new file mode 100644 index 000000000000..fc234134cbcf --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-0.2.37.bazel @@ -0,0 +1,126 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "jiff", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__jiff-core-0.1.1//:jiff_core": "jcore", + }, + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=jiff", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.37", + deps = [ + "@vendor_ts__jiff-core-0.1.1//:jiff_core", + ] + select({ + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ + "@vendor_ts__portable-atomic-1.15.0//:portable_atomic", # cfg(not(target_has_atomic = "ptr")) + "@vendor_ts__portable-atomic-util-0.2.7//:portable_atomic_util", # cfg(not(target_has_atomic = "ptr")) + ], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [ + "@vendor_ts__portable-atomic-1.15.0//:portable_atomic", # cfg(not(target_has_atomic = "ptr")) + "@vendor_ts__portable-atomic-util-0.2.7//:portable_atomic_util", # cfg(not(target_has_atomic = "ptr")) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-core-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-core-0.1.1.bazel new file mode 100644 index 000000000000..af06e1d11d3c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-core-0.1.1.bazel @@ -0,0 +1,116 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "jiff_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 = [ + "alloc", + "default", + "std", + "tz-fat", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=jiff-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-static-0.2.37.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-static-0.2.37.bazel new file mode 100644 index 000000000000..3cdccea6a556 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-static-0.2.37.bazel @@ -0,0 +1,119 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "jiff_static", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__jiff-core-0.1.1//:jiff_core": "jcore", + }, + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=jiff-static", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.37", + deps = [ + "@vendor_ts__jiff-core-0.1.1//:jiff_core", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-tzdb-0.1.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-tzdb-0.1.8.bazel new file mode 100644 index 000000000000..62168da113c5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-tzdb-0.1.8.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "jiff_tzdb", + 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 = "lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=jiff-tzdb", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.8", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-tzdb-platform-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-tzdb-platform-0.1.3.bazel new file mode 100644 index 000000000000..7d1292b9132a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-tzdb-platform-0.1.3.bazel @@ -0,0 +1,113 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "jiff_tzdb_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 = "lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=jiff-tzdb-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.3", + deps = [ + "@vendor_ts__jiff-tzdb-0.1.8//:jiff_tzdb", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel deleted file mode 100644 index 0df7e753130c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel +++ /dev/null @@ -1,190 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "jobserver", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=jobserver", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.34", - deps = select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__getrandom-0.3.4//:getrandom", # cfg(windows) - ], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__getrandom-0.3.4//:getrandom", # cfg(windows) - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__getrandom-0.3.4//:getrandom", # cfg(windows) - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.35.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.35.bazel new file mode 100644 index 000000000000..53ac9fcecba3 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.35.bazel @@ -0,0 +1,224 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "jobserver", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=jobserver", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.35", + deps = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__getrandom-0.4.3//:getrandom", # cfg(windows) + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__getrandom-0.4.3//:getrandom", # cfg(windows) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__getrandom-0.4.3//:getrandom", # cfg(windows) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "//conditions:default": [], + }), +) 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 index 91f0e1ff55dc..d4e59686d3f0 100644 --- 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 @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.103.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.103.bazel new file mode 100644 index 000000000000..22ce61014253 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.103.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "js_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 = [ + "default", + "std", + "unsafe-eval", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=js-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.103", + deps = [ + "@vendor_ts__cfg-if-1.0.4//:cfg_if", + "@vendor_ts__futures-util-0.3.34//:futures_util", + "@vendor_ts__wasm-bindgen-0.2.126//:wasm_bindgen", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.98.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.98.bazel deleted file mode 100644 index 0739ea021bba..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.98.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "js_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 = [ - "default", - "std", - "unsafe-eval", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=js-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.98", - deps = [ - "@vendor_ts__cfg-if-1.0.4//:cfg_if", - "@vendor_ts__futures-util-0.3.32//:futures_util", - "@vendor_ts__once_cell-1.21.4//:once_cell", - "@vendor_ts__wasm-bindgen-0.2.121//:wasm_bindgen", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel deleted file mode 100644 index a663b6594fbb..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "kqueue", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=kqueue", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1", - deps = [ - "@vendor_ts__kqueue-sys-1.1.2//:kqueue_sys", - "@vendor_ts__libc-0.2.186//:libc", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.2.1.bazel new file mode 100644 index 000000000000..81b6c877f8fd --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.2.1.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "kqueue", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=kqueue", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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__kqueue-sys-1.1.2//:kqueue_sys", + "@vendor_ts__libc-0.2.189//:libc", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.1.2.bazel index 6ff785ad9d4b..19baf88fd701 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.1.2.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,7 +108,7 @@ rust_library( }), version = "1.1.2", deps = [ - "@vendor_ts__bitflags-2.11.1//:bitflags", - "@vendor_ts__libc-0.2.186//:libc", + "@vendor_ts__bitflags-2.13.2//:bitflags", + "@vendor_ts__libc-0.2.189//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.la-arena-0.3.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.la-arena-0.3.1.bazel index ab216fe6e836..155d0074a629 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.la-arena-0.3.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.la-arena-0.3.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.0.bazel deleted file mode 100644 index c81cfa64f50f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "lazy_static", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=lazy_static", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.5.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.1.bazel new file mode 100644 index 000000000000..5eca4475d5d0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.1.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "lazy_static", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=lazy_static", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.5.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.leb128fmt-0.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.leb128fmt-0.1.0.bazel deleted file mode 100644 index a047cb9ea54a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.leb128fmt-0.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "leb128fmt", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=leb128fmt", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.186.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.186.bazel deleted file mode 100644 index 5d03831cec69..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.186.bazel +++ /dev/null @@ -1,170 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.186", - deps = [ - "@vendor_ts__libc-0.2.186//: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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=libc", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.2.186", - 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.189.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.189.bazel new file mode 100644 index 000000000000..0d57aff487fb --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.189.bazel @@ -0,0 +1,187 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.189", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "libc", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=libc", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.2.189", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.line-index-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.line-index-0.1.2.bazel index 423b236b28f8..de5a49f68d8d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.line-index-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.line-index-0.1.2.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.14.bazel index 6ceaac5802d0..789424bd7555 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.14.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel index 42e47567b286..5268ee66fdc4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,6 +112,6 @@ rust_library( }), version = "0.3.9", deps = [ - "@vendor_ts__log-0.4.29//:log", + "@vendor_ts__log-0.4.34//:log", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.29.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.29.bazel deleted file mode 100644 index ddb30f59c320..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.29.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "log", - 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 = [ - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=log", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.29", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.34.bazel new file mode 100644 index 000000000000..1cf7c8ef7506 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.34.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "log", + 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 = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=log", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.34", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel index 33d700108c78..2b2e8af7b7da 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "0.2.0", deps = [ - "@vendor_ts__regex-automata-0.4.14//:regex_automata", + "@vendor_ts__regex-automata-0.4.18//:regex_automata", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.0.bazel deleted file mode 100644 index 98e6008f7669..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.8.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.3.bazel new file mode 100644 index 000000000000..e529b86c79df --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.3.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.8.3", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memoffset-0.9.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memoffset-0.9.1.bazel index 867f1108683c..3efe2fe7b160 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memoffset-0.9.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memoffset-0.9.1.bazel @@ -59,12 +59,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -76,13 +78,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -90,6 +102,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -102,7 +115,7 @@ rust_library( }), version = "0.9.1", deps = [ - "@vendor_ts__memoffset-0.9.1//:build_script_build", + ":build_script_build", ], ) @@ -112,6 +125,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -143,6 +159,7 @@ cargo_build_script( ], ), edition = "2015", + emit_warnings = False, pkg_name = "memoffset", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel index 854567e46fc9..e30643b033ef 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel @@ -57,12 +57,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -74,13 +76,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -88,6 +100,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.2.0.bazel deleted file mode 100644 index ebf8f0ce0c9c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.2.0.bazel +++ /dev/null @@ -1,210 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "mio", - 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", - "log", - "os-ext", - "os-poll", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=mio", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.0", - deps = [ - "@vendor_ts__log-0.4.29//:log", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") - ], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") - ], - "@rules_rust//rust/platform:wasm32-wasip2": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.2.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.2.3.bazel new file mode 100644 index 000000000000..267d8ffe2933 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.2.3.bazel @@ -0,0 +1,244 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "mio", + 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", + "log", + "os-ext", + "os-poll", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=mio", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.3", + deps = [ + "@vendor_ts__log-0.4.34//:log", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:wasm32-wasip1": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") + ], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") + ], + "@rules_rust//rust/platform:wasm32-wasip2": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel index 8ffd321c1fe0..8a20f0eed2ed 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel index 51e1d88fe23f..e69c92e66a2a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -96,6 +109,6 @@ rust_library( version = "0.9.0", deps = [ "@vendor_ts__log-0.3.9//:log", - "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__serde-1.0.229//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nohash-hasher-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nohash-hasher-0.2.0.bazel index ea49f4108a10..7eb78d9b39ee 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nohash-hasher-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nohash-hasher-0.2.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel index 41a689289f08..c2604d7f7164 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel @@ -57,12 +57,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -74,13 +76,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -88,6 +100,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -100,111 +113,139 @@ rust_library( }), version = "8.2.0", deps = [ - "@vendor_ts__libc-0.2.186//:libc", - "@vendor_ts__log-0.4.29//:log", + "@vendor_ts__libc-0.2.189//:libc", + "@vendor_ts__log-0.4.34//:log", "@vendor_ts__notify-types-2.1.0//:notify_types", "@vendor_ts__walkdir-2.5.0//:walkdir", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__bitflags-2.11.1//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.13.2//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # aarch64-apple-darwin ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__kqueue-1.2.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__kqueue-1.2.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__kqueue-1.2.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@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__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__bitflags-2.11.1//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.13.2//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # i686-apple-darwin ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@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-freebsd": [ - "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__kqueue-1.2.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__kqueue-1.2.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + ], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [ + "@vendor_ts__kqueue-1.2.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__bitflags-2.11.1//:bitflags", # cfg(target_os = "macos") + "@vendor_ts__bitflags-2.13.2//: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": [ - "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__kqueue-1.2.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__kqueue-1.2.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@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-freebsd": [ - "@vendor_ts__kqueue-1.1.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__kqueue-1.2.1//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) - "@vendor_ts__mio-1.2.0//:mio", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__inotify-0.11.5//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.3//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.1.0.bazel index d10108728e0d..324845dffc54 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.1.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "2.1.0", deps = [ - "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__bitflags-2.13.2//:bitflags", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.3.bazel index ad2e5b6694fa..e2c4edbd915b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.3.bazel @@ -68,12 +68,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -85,13 +87,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -99,6 +111,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.2.2.bazel index c1e07eb50b35..b19b527ba6cf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.2.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.2.2.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-traits-0.2.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-traits-0.2.19.bazel index 2724cafe2c42..e27be7a1d7f8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-traits-0.2.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-traits-0.2.19.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,7 +116,7 @@ rust_library( }), version = "0.2.19", deps = [ - "@vendor_ts__num-traits-0.2.19//:build_script_build", + ":build_script_build", ], ) @@ -113,6 +126,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -145,6 +161,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "num-traits", rustc_env_files = [ ":cargo_toml_env_vars", 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 index 86f976884b33..fd004595ba14 100644 --- 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 @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -96,118 +109,157 @@ rust_library( version = "1.17.0", deps = select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:aarch64-unknown-none": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:aarch64-unknown-uefi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:thumbv7em-none-eabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-wasip1": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-wasip1-threads": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-wasip2": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-none": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:x86_64-unknown-uefi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(not(windows)) + "@vendor_ts__libc-0.2.189//:libc", # cfg(not(windows)) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_threads-0.1.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_threads-0.1.7.bazel index 2ea3545ef12e..04548b48fd50 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_threads-0.1.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_threads-0.1.7.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -96,28 +109,34 @@ rust_library( version = "0.1.7", deps = select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) + "@vendor_ts__libc-0.2.189//:libc", # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.4.bazel index e556134028f4..3e369cc74815 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.4.bazel @@ -58,12 +58,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -75,13 +77,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -89,6 +101,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.2.bazel index 95c79f066379..49ca9aa2e4c2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.2.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel index 72de567588ff..15f5f42e4634 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.2.0.bazel index 7d8571887f0a..c2a1a09be7ac 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.2.0.bazel @@ -57,12 +57,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -74,13 +76,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -88,6 +100,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -100,6 +113,6 @@ rust_library( }), version = "7.2.0", deps = [ - "@vendor_ts__memchr-2.8.0//:memchr", + "@vendor_ts__memchr-2.8.3//:memchr", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.5.bazel index 0735630ce836..888609b9c78f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.5.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.12.bazel index 9b68b08ea4d9..8cf0d70d05ef 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.12.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,99 +112,120 @@ rust_library( }), version = "0.9.12", deps = [ + ":build_script_build", "@vendor_ts__cfg-if-1.0.4//:cfg_if", - "@vendor_ts__parking_lot_core-0.9.12//:build_script_build", - "@vendor_ts__smallvec-1.15.1//:smallvec", + "@vendor_ts__smallvec-1.16.1//:smallvec", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__windows-link-0.2.1//:windows_link", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__windows-link-0.2.1//:windows_link", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__windows-link-0.2.1//:windows_link", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) ], "//conditions:default": [], }), @@ -203,6 +237,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -231,6 +268,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "parking_lot_core", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear-0.2.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear-0.2.9.bazel index ccc776593759..00e55aa2c328 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear-0.2.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear-0.2.9.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], 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 6badf66e2aef..dd097afb8bab 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 @@ -52,12 +52,14 @@ rust_proc_macro( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_proc_macro( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_proc_macro( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,9 +108,9 @@ rust_proc_macro( }), version = "0.2.9", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", "@vendor_ts__proc-macro2-diagnostics-0.10.1//:proc_macro2_diagnostics", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.8.bazel index b053be48bb28..366e209d47cb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.8.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.4.8", deps = [ - "@vendor_ts__libc-0.2.186//:libc", + "@vendor_ts__libc-0.2.189//:libc", "@vendor_ts__perf-event-open-sys-4.0.0//:perf_event_open_sys", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-4.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-4.0.0.bazel index 61d131547c16..0ff8a5b6a0af 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-4.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-4.0.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "4.0.0", deps = [ - "@vendor_ts__libc-0.2.186//:libc", + "@vendor_ts__libc-0.2.189//:libc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.8.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.8.3.bazel index 054c06f6350a..58a22abcb579 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.8.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.8.3.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -97,6 +110,6 @@ rust_library( deps = [ "@vendor_ts__fixedbitset-0.5.7//:fixedbitset", "@vendor_ts__hashbrown-0.15.5//:hashbrown", - "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__indexmap-2.14.2//:indexmap", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.17.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.17.bazel index c0fad00dd23e..9042ddad2f0f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.17.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.17.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.33.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.33.bazel deleted file mode 100644 index 6d2c2e9933d6..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.33.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "pkg_config", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=pkg-config", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.33", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.34.bazel new file mode 100644 index 000000000000..809f1028635a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.34.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "pkg_config", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=pkg-config", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.34", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.13.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.13.1.bazel deleted file mode 100644 index 1018f79e9d4b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.13.1.bazel +++ /dev/null @@ -1,170 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "portable_atomic", - 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", - "fallback", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=portable-atomic", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.13.1", - deps = [ - "@vendor_ts__portable-atomic-1.13.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_features = [ - "default", - "fallback", - ], - 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 = "portable-atomic", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=portable-atomic", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.13.1", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.15.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.15.0.bazel new file mode 100644 index 000000000000..50dfb49caa45 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.15.0.bazel @@ -0,0 +1,187 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "portable_atomic", + 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", + "fallback", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=portable-atomic", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.0", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "fallback", + ], + 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", + emit_warnings = False, + pkg_name = "portable-atomic", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=portable-atomic", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.15.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-util-0.2.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-util-0.2.7.bazel new file mode 100644 index 000000000000..a9cfe5ef2e95 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-util-0.2.7.bazel @@ -0,0 +1,180 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "portable_atomic_util", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=portable-atomic-util", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.7", + deps = [ + ":build_script_build", + "@vendor_ts__portable-atomic-1.15.0//:portable_atomic", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "portable-atomic-util", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=portable-atomic-util", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.2.7", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.postcard-1.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.postcard-1.1.3.bazel index 8a9c9489923b..ed698b8d764f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.postcard-1.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.postcard-1.1.3.bazel @@ -36,9 +36,6 @@ rust_library( ), crate_features = [ "alloc", - "default", - "heapless", - "heapless-cas", ], crate_root = "src/lib.rs", edition = "2021", @@ -58,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -75,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -89,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -102,7 +112,6 @@ rust_library( version = "1.1.3", deps = [ "@vendor_ts__cobs-0.3.0//:cobs", - "@vendor_ts__heapless-0.7.17//:heapless", - "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__serde-1.0.229//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.powerfmt-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.powerfmt-0.2.0.bazel index 4f67e7c1603c..2ad27d505a89 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.powerfmt-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.powerfmt-0.2.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.prettyplease-0.2.37.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.prettyplease-0.2.37.bazel deleted file mode 100644 index ed6e293e5d6b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.prettyplease-0.2.37.bazel +++ /dev/null @@ -1,165 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "prettyplease", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=prettyplease", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.37", - deps = [ - "@vendor_ts__prettyplease-0.2.37//:build_script_build", - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__syn-2.0.117//:syn", - ], -) - -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", - links = "prettyplease02", - pkg_name = "prettyplease", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=prettyplease", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.2.37", - 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.106.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.106.bazel deleted file mode 100644 index dec96ff20b92..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.106.bazel +++ /dev/null @@ -1,171 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.106", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:build_script_build", - "@vendor_ts__unicode-ident-1.0.24//: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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=proc-macro2", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.106", - 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.107.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.107.bazel new file mode 100644 index 000000000000..23a5bc388ef4 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.107.bazel @@ -0,0 +1,188 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.107", + deps = [ + ":build_script_build", + "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "proc-macro2", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=proc-macro2", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.107", + 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 334933c92a6a..c5bce52442a3 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 @@ -61,12 +61,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -78,13 +80,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -92,6 +104,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -104,10 +117,10 @@ rust_library( }), version = "0.10.1", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__proc-macro2-diagnostics-0.10.1//:build_script_build", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", + ":build_script_build", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", "@vendor_ts__yansi-1.0.1//:yansi", ], ) @@ -118,6 +131,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -151,6 +167,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, pkg_name = "proc-macro2-diagnostics", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.45.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.45.bazel deleted file mode 100644 index 8ffcb2477317..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.45.bazel +++ /dev/null @@ -1,171 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "quote", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=quote", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.45", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//: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", - "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 = "quote", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=quote", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.45", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.47.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.47.bazel new file mode 100644 index 000000000000..b590a4e2a41c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.47.bazel @@ -0,0 +1,188 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "quote", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=quote", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.47", + deps = [ + ":build_script_build", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "quote", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=quote", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.47", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-5.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-5.3.0.bazel deleted file mode 100644 index d71877ee91cf..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-5.3.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "r_efi", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=r-efi", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.3.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-6.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-6.0.0.bazel index 5ee0d985fe56..aa2827ae07d7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-6.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-6.0.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.143.0.bazel deleted file mode 100644 index c26dd82ee19d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.143.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_rustc_abi", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_hashes-0.143.0//:ra_ap_rustc_hashes": "rustc_hashes", - "@vendor_ts__ra-ap-rustc_index-0.143.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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", - deps = [ - "@vendor_ts__bitflags-2.11.1//:bitflags", - "@vendor_ts__ra-ap-rustc_hashes-0.143.0//:ra_ap_rustc_hashes", - "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", - "@vendor_ts__tracing-0.1.44//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.166.0.bazel new file mode 100644 index 000000000000..e5ffa40e334e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.166.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_rustc_abi", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_hashes-0.166.0//:ra_ap_rustc_hashes": "rustc_hashes", + "@vendor_ts__ra-ap-rustc_index-0.166.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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", + deps = [ + "@vendor_ts__bitflags-2.13.2//:bitflags", + "@vendor_ts__ra-ap-rustc_hashes-0.166.0//:ra_ap_rustc_hashes", + "@vendor_ts__ra-ap-rustc_index-0.166.0//:ra_ap_rustc_index", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel deleted file mode 100644 index 3dfb4af1d544..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.143.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_rustc_ast_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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_ast_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.166.0.bazel new file mode 100644 index 000000000000..fde84c2464d0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.166.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_rustc_ast_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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_ast_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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.143.0.bazel deleted file mode 100644 index 6b0e793e07f6..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.143.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", - deps = [ - "@vendor_ts__rustc-stable-hash-0.1.2//:rustc_stable_hash", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.166.0.bazel new file mode 100644 index 000000000000..9ad0414dcc7e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.166.0.bazel @@ -0,0 +1,113 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", + deps = [ + "@vendor_ts__rustc-stable-hash-0.1.2//:rustc_stable_hash", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.143.0.bazel deleted file mode 100644 index db5b0ccbd889..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.143.0.bazel +++ /dev/null @@ -1,103 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_rustc_index", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_index_macros-0.143.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.143.0//:ra_ap_rustc_index_macros", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.166.0.bazel new file mode 100644 index 000000000000..37e1346cecbc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.166.0.bazel @@ -0,0 +1,116 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_rustc_index", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_index_macros-0.166.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.166.0//:ra_ap_rustc_index_macros", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.143.0.bazel deleted file mode 100644 index 13c12f07ce27..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.143.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.166.0.bazel new file mode 100644 index 000000000000..fcf203517134 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.166.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", + deps = [ + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.143.0.bazel deleted file mode 100644 index 383c1dcd3595..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.143.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", - deps = [ - "@vendor_ts__memchr-2.8.0//:memchr", - "@vendor_ts__unicode-properties-0.1.4//: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.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.166.0.bazel new file mode 100644 index 000000000000..ac52299aef40 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.166.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", + deps = [ + "@vendor_ts__memchr-2.8.3//:memchr", + "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", + "@vendor_ts__unicode-properties-0.1.4//:unicode_properties", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel deleted file mode 100644 index 8d9cd2fa75a1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel +++ /dev/null @@ -1,111 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_rustc_next_trait_solver", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index": "rustc_index", - "@vendor_ts__ra-ap-rustc_type_ir-0.143.0//:ra_ap_rustc_type_ir": "rustc_type_ir", - "@vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0//:ra_ap_rustc_type_ir_macros": "rustc_type_ir_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__derive-where-1.6.1//:derive_where", - "@vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0//:ra_ap_rustc_type_ir_macros", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_next_trait_solver", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", - deps = [ - "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", - "@vendor_ts__ra-ap-rustc_type_ir-0.143.0//:ra_ap_rustc_type_ir", - "@vendor_ts__tracing-0.1.44//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.166.0.bazel new file mode 100644 index 000000000000..a96b09799a04 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.166.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_rustc_next_trait_solver", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_index-0.166.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_type_ir-0.166.0//:ra_ap_rustc_type_ir": "rustc_type_ir", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.166.0//:ra_ap_rustc_type_ir_macros": "rustc_type_ir_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__derive-where-1.6.1//:derive_where", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.166.0//:ra_ap_rustc_type_ir_macros", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_next_trait_solver", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", + deps = [ + "@vendor_ts__ra-ap-rustc_index-0.166.0//:ra_ap_rustc_index", + "@vendor_ts__ra-ap-rustc_type_ir-0.166.0//:ra_ap_rustc_type_ir", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.143.0.bazel deleted file mode 100644 index 9b4e436a3cad..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.143.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_rustc_parse_format", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_lexer-0.143.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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", - deps = [ - "@vendor_ts__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer", - "@vendor_ts__rustc-literal-escaper-0.0.5//:rustc_literal_escaper", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.166.0.bazel new file mode 100644 index 000000000000..3a70744bbf1b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.166.0.bazel @@ -0,0 +1,117 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_rustc_parse_format", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_lexer-0.166.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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", + deps = [ + "@vendor_ts__ra-ap-rustc_lexer-0.166.0//:ra_ap_rustc_lexer", + "@vendor_ts__rustc-literal-escaper-0.0.7//:rustc_literal_escaper", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.143.0.bazel deleted file mode 100644 index 2f8087c18312..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.143.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_rustc_pattern_analysis", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_index-0.143.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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", - deps = [ - "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", - "@vendor_ts__rustc-hash-2.1.2//: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.44//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.166.0.bazel new file mode 100644 index 000000000000..855b074a8f33 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.166.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_rustc_pattern_analysis", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_index-0.166.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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", + deps = [ + "@vendor_ts__ra-ap-rustc_index-0.166.0//:ra_ap_rustc_index", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.143.0.bazel deleted file mode 100644 index 665970571fdc..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.143.0.bazel +++ /dev/null @@ -1,118 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_rustc_type_ir", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra-ap-rustc_ast_ir-0.143.0//:ra_ap_rustc_ast_ir": "rustc_ast_ir", - "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index": "rustc_index", - "@vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0//:ra_ap_rustc_type_ir_macros": "rustc_type_ir_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__derive-where-1.6.1//:derive_where", - "@vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0//:ra_ap_rustc_type_ir_macros", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_type_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.11.1//:bitflags", - "@vendor_ts__ena-0.14.4//:ena", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__ra-ap-rustc_ast_ir-0.143.0//:ra_ap_rustc_ast_ir", - "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__thin-vec-0.2.18//:thin_vec", - "@vendor_ts__tracing-0.1.44//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.166.0.bazel new file mode 100644 index 000000000000..3cd235d5fb7f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.166.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_rustc_type_ir", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra-ap-rustc_abi-0.166.0//:ra_ap_rustc_abi": "rustc_abi", + "@vendor_ts__ra-ap-rustc_ast_ir-0.166.0//:ra_ap_rustc_ast_ir": "rustc_ast_ir", + "@vendor_ts__ra-ap-rustc_index-0.166.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.166.0//:ra_ap_rustc_type_ir_macros": "rustc_type_ir_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__derive-where-1.6.1//:derive_where", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.166.0//:ra_ap_rustc_type_ir_macros", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_type_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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", + deps = [ + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.2//:bitflags", + "@vendor_ts__ena-0.14.4//:ena", + "@vendor_ts__indexmap-2.14.2//:indexmap", + "@vendor_ts__ra-ap-rustc_abi-0.166.0//:ra_ap_rustc_abi", + "@vendor_ts__ra-ap-rustc_ast_ir-0.166.0//:ra_ap_rustc_ast_ir", + "@vendor_ts__ra-ap-rustc_index-0.166.0//:ra_ap_rustc_index", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__thin-vec-0.2.19//:thin_vec", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir_macros-0.143.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir_macros-0.143.0.bazel deleted file mode 100644 index 899303af5f3f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir_macros-0.143.0.bazel +++ /dev/null @@ -1,103 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "ra_ap_rustc_type_ir_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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra-ap-rustc_type_ir_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.143.0", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - "@vendor_ts__synstructure-0.13.2//:synstructure", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir_macros-0.166.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir_macros-0.166.0.bazel new file mode 100644 index 000000000000..d613a9685a4c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir_macros-0.166.0.bazel @@ -0,0 +1,116 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "ra_ap_rustc_type_ir_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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra-ap-rustc_type_ir_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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.166.0", + deps = [ + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", + "@vendor_ts__synstructure-0.13.2//:synstructure", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.328.bazel deleted file mode 100644 index 42da0d0298c4..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.328.bazel +++ /dev/null @@ -1,127 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_base_db", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs": "vfs", - }, - 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 = "2024", - proc_macro_deps = [ - "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__dashmap-6.1.0//:dashmap", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__salsa-0.25.2//:salsa", - "@vendor_ts__semver-1.0.28//:semver", - "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.357.bazel new file mode 100644 index 000000000000..5b1230573c47 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.357.bazel @@ -0,0 +1,135 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_base_db", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs": "vfs", + }, + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__dashmap-6.2.1//:dashmap", + "@vendor_ts__indexmap-2.14.2//:indexmap", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.5//:salsa", + "@vendor_ts__semver-1.0.28//:semver", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.16//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.328.bazel deleted file mode 100644 index e02c90697076..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.328.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_cfg", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "default", - "syntax", - "tt", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__tracing-0.1.44//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.357.bazel new file mode 100644 index 000000000000..876b29bae447 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.357.bazel @@ -0,0 +1,127 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_cfg", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt": "tt", + }, + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "syntax", + "tt", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.328.bazel deleted file mode 100644 index 1fa96a118d49..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.328.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.357.bazel new file mode 100644 index 000000000000..78193a35e226 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.357.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.328.bazel deleted file mode 100644 index d8c848c0555c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.328.bazel +++ /dev/null @@ -1,130 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_hir", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def": "hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty": "hir_ty", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.328//: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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__either-1.16.0//:either", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra-ap-rustc_type_ir-0.143.0//:ra_ap_rustc_type_ir", - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", - "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__serde_json-1.0.150//:serde_json", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.357.bazel new file mode 100644 index 000000000000..a8f563cfef5f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.357.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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_hir", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_def-0.0.357//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.357//:ra_ap_hir_ty": "hir_ty", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__either-1.19.0//:either", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__ra-ap-rustc_type_ir-0.166.0//:ra_ap_rustc_type_ir", + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_def-0.0.357//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.357//:ra_ap_hir_ty", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.5//:salsa", + "@vendor_ts__serde_json-1.0.151//:serde_json", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.16//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.328.bazel deleted file mode 100644 index 04e4a11e373b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.328.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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_hir_def", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge": "syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.328//: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.328//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.11.1//:bitflags", - "@vendor_ts__cov-mark-2.2.0//:cov_mark", - "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", - "@vendor_ts__either-1.16.0//:either", - "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__indexmap-2.14.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.143.0//:ra_ap_rustc_abi", - "@vendor_ts__ra-ap-rustc_parse_format-0.143.0//:ra_ap_rustc_parse_format", - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", - "@vendor_ts__salsa-0.25.2//:salsa", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__thin-vec-0.2.18//:thin_vec", - "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.357.bazel new file mode 100644 index 000000000000..0a8446e61a7c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.357.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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_hir_def", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.2//:bitflags", + "@vendor_ts__cov-mark-2.2.0//:cov_mark", + "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", + "@vendor_ts__either-1.19.0//:either", + "@vendor_ts__fst-0.4.7//:fst", + "@vendor_ts__indexmap-2.14.2//:indexmap", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__ra-ap-rustc_abi-0.166.0//:ra_ap_rustc_abi", + "@vendor_ts__ra-ap-rustc_parse_format-0.166.0//:ra_ap_rustc_parse_format", + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", + "@vendor_ts__salsa-0.28.5//:salsa", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__thin-vec-0.2.19//:thin_vec", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.16//:triomphe", + "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.328.bazel deleted file mode 100644 index eb7d3976beef..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.328.bazel +++ /dev/null @@ -1,135 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_hir_expand", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_mbe-0.0.328//:ra_ap_mbe": "mbe", - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge": "syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.328//: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.328//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__cov-mark-2.2.0//:cov_mark", - "@vendor_ts__either-1.16.0//:either", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_mbe-0.0.328//:ra_ap_mbe", - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__salsa-0.25.2//:salsa", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__thin-vec-0.2.18//:thin_vec", - "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.357.bazel new file mode 100644 index 000000000000..4968efa0aca3 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.357.bazel @@ -0,0 +1,143 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_hir_expand", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_mbe-0.0.357//:ra_ap_mbe": "mbe", + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__cov-mark-2.2.0//:cov_mark", + "@vendor_ts__either-1.19.0//:either", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_mbe-0.0.357//:ra_ap_mbe", + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.5//:salsa", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__thin-vec-0.2.19//:thin_vec", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.16//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.328.bazel deleted file mode 100644 index 4a52cf56457d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.328.bazel +++ /dev/null @@ -1,149 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_hir_ty", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def": "hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_macros-0.0.328//:ra_ap_macros": "macros", - "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//: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__ra_ap_macros-0.0.328//:ra_ap_macros", - "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", - "@vendor_ts__serde_derive-1.0.228//:serde_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__cov-mark-2.2.0//:cov_mark", - "@vendor_ts__either-1.16.0//:either", - "@vendor_ts__ena-0.14.4//:ena", - "@vendor_ts__indexmap-2.14.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__petgraph-0.8.3//:petgraph", - "@vendor_ts__ra-ap-rustc_abi-0.143.0//:ra_ap_rustc_abi", - "@vendor_ts__ra-ap-rustc_ast_ir-0.143.0//:ra_ap_rustc_ast_ir", - "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index", - "@vendor_ts__ra-ap-rustc_next_trait_solver-0.143.0//:ra_ap_rustc_next_trait_solver", - "@vendor_ts__ra-ap-rustc_pattern_analysis-0.143.0//:ra_ap_rustc_pattern_analysis", - "@vendor_ts__ra-ap-rustc_type_ir-0.143.0//:ra_ap_rustc_type_ir", - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", - "@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", - "@vendor_ts__salsa-0.25.2//:salsa", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__thin-vec-0.2.18//:thin_vec", - "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber", - "@vendor_ts__tracing-tree-0.4.1//:tracing_tree", - "@vendor_ts__triomphe-0.1.15//: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.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.357.bazel new file mode 100644 index 000000000000..94a704b814bf --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.357.bazel @@ -0,0 +1,160 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_hir_ty", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir_def-0.0.357//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_macros-0.0.357//:ra_ap_macros": "macros", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//: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__ra_ap_macros-0.0.357//:ra_ap_macros", + "@vendor_ts__serde_derive-1.0.229//:serde_derive", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.2//:bitflags", + "@vendor_ts__cov-mark-2.2.0//:cov_mark", + "@vendor_ts__either-1.19.0//:either", + "@vendor_ts__ena-0.14.4//:ena", + "@vendor_ts__indexmap-2.14.2//:indexmap", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__oorandom-11.1.5//:oorandom", + "@vendor_ts__petgraph-0.8.3//:petgraph", + "@vendor_ts__ra-ap-rustc_abi-0.166.0//:ra_ap_rustc_abi", + "@vendor_ts__ra-ap-rustc_ast_ir-0.166.0//:ra_ap_rustc_ast_ir", + "@vendor_ts__ra-ap-rustc_index-0.166.0//:ra_ap_rustc_index", + "@vendor_ts__ra-ap-rustc_next_trait_solver-0.166.0//:ra_ap_rustc_next_trait_solver", + "@vendor_ts__ra-ap-rustc_pattern_analysis-0.166.0//:ra_ap_rustc_pattern_analysis", + "@vendor_ts__ra-ap-rustc_type_ir-0.166.0//:ra_ap_rustc_type_ir", + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir_def-0.0.357//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:rustc_apfloat", + "@vendor_ts__salsa-0.28.5//:salsa", + "@vendor_ts__serde-1.0.229//:serde", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__thin-vec-0.2.19//:thin_vec", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber", + "@vendor_ts__tracing-tree-0.4.1//:tracing_tree", + "@vendor_ts__triomphe-0.1.16//: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.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.328.bazel deleted file mode 100644 index 91ada35649e1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.328.bazel +++ /dev/null @@ -1,147 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_ide_db", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir": "hir", - "@vendor_ts__ra_ap_macros-0.0.328//:ra_ap_macros": "macros", - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_profile-0.0.328//:ra_ap_profile": "profile", - "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro": "query_group", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_test_fixture-0.0.328//:ra_ap_test_fixture": "test_fixture", - "@vendor_ts__ra_ap_test_utils-0.0.328//:ra_ap_test_utils": "test_utils", - "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs": "vfs", - }, - 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 = "2024", - proc_macro_deps = [ - "@vendor_ts__ra_ap_macros-0.0.328//:ra_ap_macros", - "@vendor_ts__ra_ap_query-group-macro-0.0.328//:ra_ap_query_group_macro", - "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.11.1//:bitflags", - "@vendor_ts__cov-mark-2.2.0//:cov_mark", - "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", - "@vendor_ts__either-1.16.0//:either", - "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__line-index-0.1.2//:line_index", - "@vendor_ts__memchr-2.8.0//:memchr", - "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", - "@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir", - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", - "@vendor_ts__ra_ap_profile-0.0.328//:ra_ap_profile", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", - "@vendor_ts__ra_ap_test_fixture-0.0.328//:ra_ap_test_fixture", - "@vendor_ts__ra_ap_test_utils-0.0.328//:ra_ap_test_utils", - "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", - "@vendor_ts__rayon-1.12.0//:rayon", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__salsa-0.25.2//:salsa", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.357.bazel new file mode 100644 index 000000000000..fae363aef572 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.357.bazel @@ -0,0 +1,157 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_ide_db", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir-0.0.357//:ra_ap_hir": "hir", + "@vendor_ts__ra_ap_macros-0.0.357//:ra_ap_macros": "macros", + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_profile-0.0.357//:ra_ap_profile": "profile", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_test_fixture-0.0.357//:ra_ap_test_fixture": "test_fixture", + "@vendor_ts__ra_ap_test_utils-0.0.357//:ra_ap_test_utils": "test_utils", + "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs": "vfs", + }, + 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 = "2024", + proc_macro_deps = [ + "@vendor_ts__ra_ap_macros-0.0.357//:ra_ap_macros", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.2//:bitflags", + "@vendor_ts__cov-mark-2.2.0//:cov_mark", + "@vendor_ts__crossbeam-channel-0.5.17//:crossbeam_channel", + "@vendor_ts__either-1.19.0//:either", + "@vendor_ts__fst-0.4.7//:fst", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__line-index-0.1.2//:line_index", + "@vendor_ts__memchr-2.8.3//:memchr", + "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir-0.0.357//:ra_ap_hir", + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser", + "@vendor_ts__ra_ap_profile-0.0.357//:ra_ap_profile", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + "@vendor_ts__ra_ap_test_fixture-0.0.357//:ra_ap_test_fixture", + "@vendor_ts__ra_ap_test_utils-0.0.357//:ra_ap_test_utils", + "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs", + "@vendor_ts__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.5//:salsa", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.16//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.328.bazel deleted file mode 100644 index e2b1c874bcbc..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.328.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__dashmap-6.1.0//:dashmap", - "@vendor_ts__hashbrown-0.14.5//:hashbrown", - "@vendor_ts__rayon-1.12.0//:rayon", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__triomphe-0.1.15//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.357.bazel new file mode 100644 index 000000000000..2b2c4eb9bf8c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.357.bazel @@ -0,0 +1,118 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__dashmap-6.2.1//:dashmap", + "@vendor_ts__hashbrown-0.14.5//:hashbrown", + "@vendor_ts__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__triomphe-0.1.16//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.328.bazel deleted file mode 100644 index 28c08916e4ef..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.328.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_load_cargo", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db": "ide_db", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_proc_macro_api-0.0.328//:ra_ap_proc_macro_api": "proc_macro_api", - "@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model": "project_model", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", - "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs": "vfs", - "@vendor_ts__ra_ap_vfs-notify-0.0.328//: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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__anyhow-1.0.102//: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.328//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_proc_macro_api-0.0.328//:ra_ap_proc_macro_api", - "@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", - "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", - "@vendor_ts__ra_ap_vfs-notify-0.0.328//:ra_ap_vfs_notify", - "@vendor_ts__tracing-0.1.44//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.357.bazel new file mode 100644 index 000000000000..5b3e3d62808d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.357.bazel @@ -0,0 +1,136 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_load_cargo", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.357//:ra_ap_ide_db": "ide_db", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.357//:ra_ap_proc_macro_api": "proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.357//:ra_ap_project_model": "project_model", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__anyhow-1.0.104//:anyhow", + "@vendor_ts__crossbeam-channel-0.5.17//:crossbeam_channel", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.357//:ra_ap_ide_db", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.357//:ra_ap_proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.357//:ra_ap_project_model", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt", + "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.357//:ra_ap_vfs_notify", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_macros-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_macros-0.0.328.bazel deleted file mode 100644 index 6411cde26a3b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_macros-0.0.328.bazel +++ /dev/null @@ -1,103 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "ra_ap_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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - "@vendor_ts__synstructure-0.13.2//:synstructure", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_macros-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_macros-0.0.357.bazel new file mode 100644 index 000000000000..9eb265e9ba64 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_macros-0.0.357.bazel @@ -0,0 +1,116 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "ra_ap_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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", + "@vendor_ts__synstructure-0.13.2//:synstructure", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.328.bazel deleted file mode 100644 index 8ba9ea8d50c4..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.328.bazel +++ /dev/null @@ -1,120 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_mbe", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge": "syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.328//: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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.11.1//:bitflags", - "@vendor_ts__cov-mark-2.2.0//:cov_mark", - "@vendor_ts__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__salsa-0.25.2//:salsa", - "@vendor_ts__smallvec-1.15.1//:smallvec", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.357.bazel new file mode 100644 index 000000000000..588fb4615001 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.357.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_mbe", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.2//:bitflags", + "@vendor_ts__cov-mark-2.2.0//:cov_mark", + "@vendor_ts__ra-ap-rustc_lexer-0.166.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.5//:salsa", + "@vendor_ts__smallvec-1.16.1//:smallvec", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.328.bazel deleted file mode 100644 index 5e1577c1785a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.328.bazel +++ /dev/null @@ -1,111 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_parser", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_edition-0.0.328//:ra_ap_edition": "edition", - }, - 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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", - "@vendor_ts__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_edition-0.0.328//:ra_ap_edition", - "@vendor_ts__rustc-literal-escaper-0.0.4//:rustc_literal_escaper", - "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__winnow-0.7.15//:winnow", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.357.bazel new file mode 100644 index 000000000000..94c17dd6980e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.357.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_parser", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_edition-0.0.357//:ra_ap_edition": "edition", + }, + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", + "@vendor_ts__ra-ap-rustc_lexer-0.166.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_edition-0.0.357//:ra_ap_edition", + "@vendor_ts__rustc-literal-escaper-0.0.7//:rustc_literal_escaper", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__winnow-0.7.13//:winnow", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.328.bazel deleted file mode 100644 index 6d809a8ca8ab..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.328.bazel +++ /dev/null @@ -1,103 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__camino-1.2.2//:camino", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.357.bazel new file mode 100644 index 000000000000..4dd34c95e2f1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.357.bazel @@ -0,0 +1,116 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__camino-1.2.6//:camino", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.328.bazel deleted file mode 100644 index 6a874669b427..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.328.bazel +++ /dev/null @@ -1,125 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_proc_macro_api", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", - }, - 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 = "2024", - proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.228//:serde_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__postcard-1.1.3//:postcard", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", - "@vendor_ts__rayon-1.12.0//:rayon", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__semver-1.0.28//:semver", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.150//:serde_json", - "@vendor_ts__tracing-0.1.44//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.357.bazel new file mode 100644 index 000000000000..60d24181b095 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.357.bazel @@ -0,0 +1,138 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_proc_macro_api", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt": "tt", + }, + 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 = "2024", + proc_macro_deps = [ + "@vendor_ts__serde_derive-1.0.229//:serde_derive", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__indexmap-2.14.2//:indexmap", + "@vendor_ts__postcard-1.1.3//:postcard", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt", + "@vendor_ts__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__semver-1.0.28//:semver", + "@vendor_ts__serde-1.0.229//:serde", + "@vendor_ts__serde_json-1.0.151//:serde_json", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.328.bazel deleted file mode 100644 index 327e50c225ba..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.328.bazel +++ /dev/null @@ -1,146 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__cfg-if-1.0.4//: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.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - ], - "@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.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - ], - "@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.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) - "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.357.bazel new file mode 100644 index 000000000000..6d57f35e6bd2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.357.bazel @@ -0,0 +1,166 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = select({ + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.8//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"), any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.328.bazel deleted file mode 100644 index d47c852ddab2..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.328.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_project_model", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_toolchain-0.0.328//:ra_ap_toolchain": "toolchain", - }, - 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 = "2024", - proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.228//:serde_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__anyhow-1.0.102//:anyhow", - "@vendor_ts__cargo_metadata-0.23.1//: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.328//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_toolchain-0.0.328//:ra_ap_toolchain", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__semver-1.0.28//:semver", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.150//:serde_json", - "@vendor_ts__temp-dir-0.1.16//:temp_dir", - "@vendor_ts__toml-0.9.12-spec-1.1.0//:toml", - "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.357.bazel new file mode 100644 index 000000000000..1cf7922deb4b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.357.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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_project_model", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_toolchain-0.0.357//:ra_ap_toolchain": "toolchain", + }, + 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 = "2024", + proc_macro_deps = [ + "@vendor_ts__serde_derive-1.0.229//:serde_derive", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__anyhow-1.0.104//:anyhow", + "@vendor_ts__cargo_metadata-0.23.1//:cargo_metadata", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_toolchain-0.0.357//:ra_ap_toolchain", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__semver-1.0.28//:semver", + "@vendor_ts__serde-1.0.229//:serde", + "@vendor_ts__serde_json-1.0.151//:serde_json", + "@vendor_ts__toml-1.1.6-spec-1.1.0//:toml", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.16//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.328.bazel deleted file mode 100644 index 0934ecd44f2e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.328.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.328.bazel deleted file mode 100644 index 6c6249a49ab9..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.328.bazel +++ /dev/null @@ -1,116 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_span", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.328//: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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__hashbrown-0.14.5//:hashbrown", - "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__salsa-0.25.2//: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.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.357.bazel new file mode 100644 index 000000000000..c06ddf6ca97c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.357.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_span", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__hashbrown-0.17.1//:hashbrown", + "@vendor_ts__la-arena-0.3.1//:la_arena", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.5//: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.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.328.bazel deleted file mode 100644 index 632b844d54ad..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.328.bazel +++ /dev/null @@ -1,199 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - 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.44//:tracing", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__miow-0.6.1//: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.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__miow-0.6.1//: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.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__miow-0.6.1//: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.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(unix) - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.357.bazel new file mode 100644 index 000000000000..ee3e09769651 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.357.bazel @@ -0,0 +1,233 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__crossbeam-channel-0.5.17//:crossbeam_channel", + "@vendor_ts__crossbeam-utils-0.8.23//:crossbeam_utils", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__jod-thread-1.0.0//:jod_thread", + "@vendor_ts__tracing-0.1.44//:tracing", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__miow-0.6.1//:miow", # cfg(windows) + "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__miow-0.6.1//:miow", # cfg(windows) + "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__miow-0.6.1//:miow", # cfg(windows) + "@vendor_ts__windows-sys-0.61.2//:windows_sys", # cfg(windows) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # cfg(unix) + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.328.bazel deleted file mode 100644 index e2cfe3404bfb..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.328.bazel +++ /dev/null @@ -1,118 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_syntax", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - }, - 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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__either-1.16.0//:either", - "@vendor_ts__itertools-0.14.0//:itertools", - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__rowan-0.15.18//:rowan", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__rustc-literal-escaper-0.0.4//:rustc_literal_escaper", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__smol_str-0.3.6//:smol_str", - "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", - ], -) -exports_files(["rust.ungram"]) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.357.bazel new file mode 100644 index 000000000000..6d87dd6531d6 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.357.bazel @@ -0,0 +1,132 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_syntax", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + }, + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__either-1.19.0//:either", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__ra-ap-rustc_lexer-0.166.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__rowan-0.17.0//:rowan", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__rustc-literal-escaper-0.0.7//:rustc_literal_escaper", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__smol_str-0.3.6//:smol_str", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.16//:triomphe", + ], +) +exports_files(["rust.ungram"]) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.328.bazel deleted file mode 100644 index 4ce70110ed1a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.328.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_syntax_bridge", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.328//: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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.357.bazel new file mode 100644 index 000000000000..2a724b60228f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.357.bazel @@ -0,0 +1,127 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_syntax_bridge", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.328.bazel deleted file mode 100644 index 40941eb64afe..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.328.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_test_fixture", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_test_utils-0.0.328//:ra_ap_test_utils": "test_utils", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt": "tt", - }, - 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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_test_fixture", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__ra_ap_base_db-0.0.328//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_test_utils-0.0.328//:ra_ap_test_utils", - "@vendor_ts__ra_ap_tt-0.0.328//:ra_ap_tt", - "@vendor_ts__triomphe-0.1.15//:triomphe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.357.bazel new file mode 100644 index 000000000000..6fdd4700f050 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.357.bazel @@ -0,0 +1,136 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_test_fixture", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_test_utils-0.0.357//:ra_ap_test_utils": "test_utils", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt": "tt", + }, + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_test_fixture", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_test_utils-0.0.357//:ra_ap_test_utils", + "@vendor_ts__ra_ap_tt-0.0.357//:ra_ap_tt", + "@vendor_ts__triomphe-0.1.16//:triomphe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.328.bazel deleted file mode 100644 index 276ab3e576d8..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.328.bazel +++ /dev/null @@ -1,110 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_test_utils", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_profile-0.0.328//:ra_ap_profile": "profile", - "@vendor_ts__ra_ap_stdx-0.0.328//: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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ra_ap_test_utils", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__dissimilar-1.0.11//:dissimilar", - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", - "@vendor_ts__ra_ap_profile-0.0.328//:ra_ap_profile", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__text-size-1.1.1//:text_size", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.357.bazel new file mode 100644 index 000000000000..6ab2ce5e3e21 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.357.bazel @@ -0,0 +1,123 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_test_utils", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_profile-0.0.357//:ra_ap_profile": "profile", + "@vendor_ts__ra_ap_stdx-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_test_utils", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__dissimilar-1.0.11//:dissimilar", + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", + "@vendor_ts__ra_ap_profile-0.0.357//:ra_ap_profile", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__text-size-1.1.1//:text_size", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.328.bazel deleted file mode 100644 index 9d73283c8059..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.328.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__camino-1.2.2//:camino", - "@vendor_ts__home-0.5.12//:home", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.357.bazel new file mode 100644 index 000000000000..b17ac7af57ab --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.357.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__camino-1.2.6//:camino", + "@vendor_ts__semver-1.0.28//:semver", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.328.bazel deleted file mode 100644 index b40b0afeeff4..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.328.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_tt", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - }, - 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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@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.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.357.bazel new file mode 100644 index 000000000000..672b8ac08b13 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.357.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_tt", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__ra-ap-rustc_lexer-0.166.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@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.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.328.bazel deleted file mode 100644 index 77cf3adfd1c5..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.328.bazel +++ /dev/null @@ -1,111 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_vfs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_stdx-0.0.328//: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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", - "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__tracing-0.1.44//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.357.bazel new file mode 100644 index 000000000000..06088e93c59f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.357.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_vfs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__crossbeam-channel-0.5.17//:crossbeam_channel", + "@vendor_ts__fst-0.4.7//:fst", + "@vendor_ts__indexmap-2.14.2//:indexmap", + "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__tracing-0.1.44//:tracing", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.328.bazel deleted file mode 100644 index 5ad594ec7e7e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.328.bazel +++ /dev/null @@ -1,113 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "ra_ap_vfs_notify", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_vfs-0.0.328//: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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.328", - deps = [ - "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", - "@vendor_ts__notify-8.2.0//:notify", - "@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths", - "@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx", - "@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs", - "@vendor_ts__rayon-1.12.0//:rayon", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__tracing-0.1.44//: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.357.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.357.bazel new file mode 100644 index 000000000000..0409bf0e13cf --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.357.bazel @@ -0,0 +1,126 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "ra_ap_vfs_notify", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_vfs-0.0.357//: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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.357", + deps = [ + "@vendor_ts__crossbeam-channel-0.5.17//:crossbeam_channel", + "@vendor_ts__notify-8.2.0//:notify", + "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs", + "@vendor_ts__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__walkdir-2.5.0//:walkdir", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.1.bazel deleted file mode 100644 index 58e4ecd87bd3..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.1.bazel +++ /dev/null @@ -1,110 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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", - "std", - "std_rng", - "sys_rng", - "thread_rng", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.10.1", - deps = [ - "@vendor_ts__chacha20-0.10.0//:chacha20", - "@vendor_ts__getrandom-0.4.2//:getrandom", - "@vendor_ts__rand_core-0.10.1//:rand_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.3.bazel new file mode 100644 index 000000000000..022df2ef9995 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.3.bazel @@ -0,0 +1,123 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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", + "std", + "std_rng", + "sys_rng", + "thread_rng", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.10.3", + deps = [ + "@vendor_ts__chacha20-0.10.2//:chacha20", + "@vendor_ts__getrandom-0.4.3//:getrandom", + "@vendor_ts__rand_core-0.10.1//:rand_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.10.1.bazel index 9522ee36ed3e..0673f7a86741 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.10.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.10.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.12.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.12.0.bazel index 80dc45dab0ab..4773d5fb78e1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.12.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.12.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,7 +108,7 @@ rust_library( }), version = "1.12.0", deps = [ - "@vendor_ts__either-1.16.0//:either", + "@vendor_ts__either-1.19.0//:either", "@vendor_ts__rayon-core-1.13.0//:rayon_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel index 29542077f377..e16e20fc7898 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,9 +112,9 @@ rust_library( }), version = "1.13.0", deps = [ - "@vendor_ts__crossbeam-deque-0.8.6//:crossbeam_deque", - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", - "@vendor_ts__rayon-core-1.13.0//:build_script_build", + ":build_script_build", + "@vendor_ts__crossbeam-deque-0.8.8//:crossbeam_deque", + "@vendor_ts__crossbeam-utils-0.8.23//:crossbeam_utils", ], ) @@ -111,6 +124,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -139,6 +155,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, links = "rayon-core", pkg_name = "rayon-core", rustc_env_files = [ diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.18.bazel index a8d39672af9b..128455980fef 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.18.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.18.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "0.5.18", deps = [ - "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__bitflags-2.13.2//:bitflags", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.25.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.25.bazel deleted file mode 100644 index 78dd3d732f31..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.25.bazel +++ /dev/null @@ -1,165 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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.25//:ref_cast_impl", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.25", - deps = [ - "@vendor_ts__ref-cast-1.0.25//: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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=ref-cast", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.25", - 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-1.0.26.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.26.bazel new file mode 100644 index 000000000000..47ee7710c1ad --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.26.bazel @@ -0,0 +1,182 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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.26//:ref_cast_impl", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.26", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "ref-cast", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ref-cast", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.26", + 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.25.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.25.bazel deleted file mode 100644 index 9f428e7b97f1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.25.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.25", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.26.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.26.bazel new file mode 100644 index 000000000000..83b8522dd88d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.26.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.26", + deps = [ + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-3.0.6//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.12.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.12.3.bazel deleted file mode 100644 index 825fabb29b18..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.12.3.bazel +++ /dev/null @@ -1,122 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "regex", - 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", - "perf", - "perf-backtrack", - "perf-cache", - "perf-dfa", - "perf-inline", - "perf-literal", - "perf-onepass", - "std", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=regex", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.12.3", - deps = [ - "@vendor_ts__aho-corasick-1.1.4//:aho_corasick", - "@vendor_ts__memchr-2.8.0//:memchr", - "@vendor_ts__regex-automata-0.4.14//:regex_automata", - "@vendor_ts__regex-syntax-0.8.10//:regex_syntax", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.13.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.13.1.bazel new file mode 100644 index 000000000000..cd6a68b1a521 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.13.1.bazel @@ -0,0 +1,135 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "regex", + 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", + "perf", + "perf-backtrack", + "perf-cache", + "perf-dfa", + "perf-inline", + "perf-literal", + "perf-onepass", + "std", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=regex", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.13.1", + deps = [ + "@vendor_ts__aho-corasick-1.1.5//:aho_corasick", + "@vendor_ts__memchr-2.8.3//:memchr", + "@vendor_ts__regex-automata-0.4.18//:regex_automata", + "@vendor_ts__regex-syntax-0.8.11//:regex_syntax", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.14.bazel deleted file mode 100644 index 7d8af771594a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.14.bazel +++ /dev/null @@ -1,130 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "regex_automata", - 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", - "dfa-build", - "dfa-onepass", - "dfa-search", - "hybrid", - "meta", - "nfa", - "nfa-backtrack", - "nfa-pikevm", - "nfa-thompson", - "perf", - "perf-inline", - "perf-literal", - "perf-literal-multisubstring", - "perf-literal-substring", - "std", - "syntax", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment", - "unicode-word-boundary", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=regex-automata", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.14", - deps = [ - "@vendor_ts__aho-corasick-1.1.4//:aho_corasick", - "@vendor_ts__memchr-2.8.0//:memchr", - "@vendor_ts__regex-syntax-0.8.10//:regex_syntax", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.18.bazel new file mode 100644 index 000000000000..be8cac10495b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.18.bazel @@ -0,0 +1,143 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "regex_automata", + 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", + "dfa-build", + "dfa-onepass", + "dfa-search", + "hybrid", + "meta", + "nfa", + "nfa-backtrack", + "nfa-pikevm", + "nfa-thompson", + "perf", + "perf-inline", + "perf-literal", + "perf-literal-multisubstring", + "perf-literal-substring", + "std", + "syntax", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment", + "unicode-word-boundary", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=regex-automata", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.18", + deps = [ + "@vendor_ts__aho-corasick-1.1.5//:aho_corasick", + "@vendor_ts__memchr-2.8.3//:memchr", + "@vendor_ts__regex-syntax-0.8.11//:regex_syntax", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.10.bazel deleted file mode 100644 index 5f3ae8f1cce0..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.10.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "regex_syntax", - 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", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=regex-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.10", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.11.bazel new file mode 100644 index 000000000000..807d55bc267b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.11.bazel @@ -0,0 +1,122 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "regex_syntax", + 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", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=regex-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.11", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.18.bazel deleted file mode 100644 index e9841cd61c3a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.18.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "rowan", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=rowan", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.15.18", - deps = [ - "@vendor_ts__countme-3.0.1//:countme", - "@vendor_ts__hashbrown-0.14.5//:hashbrown", - "@vendor_ts__memoffset-0.9.1//:memoffset", - "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", - "@vendor_ts__text-size-1.1.1//:text_size", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.17.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.17.0.bazel new file mode 100644 index 000000000000..42faf7d0eb79 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.17.0.bazel @@ -0,0 +1,117 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "rowan", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rowan", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.17.0", + deps = [ + "@vendor_ts__countme-3.0.1//:countme", + "@vendor_ts__hashbrown-0.14.5//:hashbrown", + "@vendor_ts__memoffset-0.9.1//:memoffset", + "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", + "@vendor_ts__text-size-1.1.1//:text_size", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-1.1.0.bazel index c2d2a8ecadbd..a4da983b87eb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-1.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-1.1.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.2.bazel deleted file mode 100644 index a18bdfd0e16b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.2.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "rustc_hash", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=rustc-hash", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1.2", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.3.bazel new file mode 100644 index 000000000000..92003c5bf12b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.3.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "rustc_hash", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rustc-hash", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.1.3", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.bazel deleted file mode 100644 index 8a273994a826..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.4", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.5.bazel deleted file mode 100644 index 883772a6b126..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.5.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.5", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.7.bazel new file mode 100644 index 000000000000..b62771f52d73 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.7.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.7", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-stable-hash-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-stable-hash-0.1.2.bazel index 0803a2e277ee..4566de291a11 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-stable-hash-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-stable-hash-0.1.2.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], 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 index 2e81799fba5e..da5e224b62e7 100644 --- 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 @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,9 +112,9 @@ rust_library( }), version = "0.2.3+llvm-462a31f5a5ab", deps = [ - "@vendor_ts__bitflags-2.11.1//:bitflags", - "@vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab//:build_script_build", - "@vendor_ts__smallvec-1.15.1//:smallvec", + ":build_script_build", + "@vendor_ts__bitflags-2.13.2//:bitflags", + "@vendor_ts__smallvec-1.16.1//:smallvec", ], ) @@ -111,6 +124,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -139,6 +155,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "rustc_apfloat", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_version-0.4.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_version-0.4.1.bazel deleted file mode 100644 index c93a62d6c6a7..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_version-0.4.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "rustc_version", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=rustc_version", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1", - deps = [ - "@vendor_ts__semver-1.0.28//:semver", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel deleted file mode 100644 index 442f3ba05905..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel +++ /dev/null @@ -1,162 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.22", - deps = [ - "@vendor_ts__rustversion-1.0.22//: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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=rustversion", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.22", - 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.23.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.23.bazel new file mode 100644 index 000000000000..11fd98830b5f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.23.bazel @@ -0,0 +1,179 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.23", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "rustversion", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rustversion", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.23", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.23.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.23.bazel index 85b3b4797822..ac0396f8d06c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.23.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.23.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.25.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.25.2.bazel deleted file mode 100644 index 66b48573c99c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.25.2.bazel +++ /dev/null @@ -1,124 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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 = [ - "inventory", - "macros", - "rayon", - "salsa_unstable", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.25.2", - deps = [ - "@vendor_ts__boxcar-0.2.14//:boxcar", - "@vendor_ts__crossbeam-queue-0.3.12//:crossbeam_queue", - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", - "@vendor_ts__hashbrown-0.15.5//:hashbrown", - "@vendor_ts__hashlink-0.10.0//:hashlink", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__intrusive-collections-0.9.7//:intrusive_collections", - "@vendor_ts__inventory-0.3.24//:inventory", - "@vendor_ts__parking_lot-0.12.5//:parking_lot", - "@vendor_ts__portable-atomic-1.13.1//:portable_atomic", - "@vendor_ts__rayon-1.12.0//:rayon", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", - "@vendor_ts__salsa-macro-rules-0.25.2//:salsa_macro_rules", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__thin-vec-0.2.18//:thin_vec", - "@vendor_ts__tracing-0.1.44//:tracing", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.28.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.28.5.bazel new file mode 100644 index 000000000000..d28105e2da58 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.28.5.bazel @@ -0,0 +1,140 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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 = [ + "inventory", + "macros", + "rayon", + "salsa_unstable", + "triomphe", + ], + crate_root = "src/lib.rs", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__salsa-macros-0.28.5//:salsa_macros", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.28.5", + deps = [ + "@vendor_ts__boxcar-0.2.14//:boxcar", + "@vendor_ts__crossbeam-queue-0.3.14//:crossbeam_queue", + "@vendor_ts__crossbeam-utils-0.8.23//:crossbeam_utils", + "@vendor_ts__hashbrown-0.17.1//:hashbrown", + "@vendor_ts__hashlink-0.12.1//:hashlink", + "@vendor_ts__indexmap-2.14.2//:indexmap", + "@vendor_ts__intrusive-collections-0.10.3//:intrusive_collections", + "@vendor_ts__inventory-0.3.24//:inventory", + "@vendor_ts__parking_lot-0.12.5//:parking_lot", + "@vendor_ts__portable-atomic-1.15.0//:portable_atomic", + "@vendor_ts__rayon-1.12.0//:rayon", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-macro-rules-0.28.5//:salsa_macro_rules", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__thin-vec-0.2.19//:thin_vec", + "@vendor_ts__tracing-0.1.44//:tracing", + "@vendor_ts__triomphe-0.1.16//:triomphe", + "@vendor_ts__typeid-1.0.3//:typeid", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.25.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.25.2.bazel deleted file mode 100644 index 01b605f0ed6d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.25.2.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.25.2", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.28.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.28.5.bazel new file mode 100644 index 000000000000..9c4ab7d45c66 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.28.5.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.28.5", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.25.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.25.2.bazel deleted file mode 100644 index 8905ee5100ba..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.25.2.bazel +++ /dev/null @@ -1,106 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_features = [ - "default", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.25.2", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - "@vendor_ts__synstructure-0.13.2//:synstructure", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.28.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.28.5.bazel new file mode 100644 index 000000000000..62ba21bbcf28 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.28.5.bazel @@ -0,0 +1,118 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_features = [ + "default", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.28.5", + deps = [ + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-3.0.6//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel index 1ae75e4d777f..d791c3bf735d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], 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 index a96ff5d6ee32..0ad92da5d891 100644 --- 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 @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -96,8 +109,8 @@ rust_library( version = "0.9.0", deps = [ "@vendor_ts__dyn-clone-1.0.20//:dyn_clone", - "@vendor_ts__ref-cast-1.0.25//:ref_cast", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.150//:serde_json", + "@vendor_ts__ref-cast-1.0.26//:ref_cast", + "@vendor_ts__serde-1.0.229//:serde", + "@vendor_ts__serde_json-1.0.151//:serde_json", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.2.1.bazel deleted file mode 100644 index 62eeb7975d6f..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.2.1.bazel +++ /dev/null @@ -1,103 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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__dyn-clone-1.0.20//:dyn_clone", - "@vendor_ts__ref-cast-1.0.25//:ref_cast", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.150//:serde_json", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.2.2.bazel new file mode 100644 index 000000000000..c5b85dc72667 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.2.2.bazel @@ -0,0 +1,116 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.2", + deps = [ + "@vendor_ts__dyn-clone-1.0.20//:dyn_clone", + "@vendor_ts__ref-cast-1.0.26//:ref_cast", + "@vendor_ts__serde-1.0.229//:serde", + "@vendor_ts__serde_json-1.0.151//:serde_json", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scopeguard-1.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scopeguard-1.2.0.bazel index fd65460b9772..314323540722 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scopeguard-1.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scopeguard-1.2.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.28.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.28.bazel index 5c659d959e2c..d12baecdfea7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.28.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.28.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__serde_core-1.0.228//:serde_core": "serde", + "@vendor_ts__serde_core-1.0.229//:serde_core": "serde", }, compile_data = glob( include = ["**"], @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,6 +116,6 @@ rust_library( }), version = "1.0.28", deps = [ - "@vendor_ts__serde_core-1.0.228//:serde_core", + "@vendor_ts__serde_core-1.0.229//:serde_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel deleted file mode 100644 index f21954648d62..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel +++ /dev/null @@ -1,180 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "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", - "default", - "derive", - "serde_derive", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.228//:serde_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.228", - deps = [ - "@vendor_ts__serde-1.0.228//:build_script_build", - "@vendor_ts__serde_core-1.0.228//:serde_core", - ], -) - -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 = [ - "alloc", - "default", - "derive", - "serde_derive", - "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 = "serde", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.228", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.229.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.229.bazel new file mode 100644 index 000000000000..4c9dcee67365 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.229.bazel @@ -0,0 +1,197 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "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", + "default", + "derive", + "serde_derive", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__serde_derive-1.0.229//:serde_derive", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.229", + deps = [ + ":build_script_build", + "@vendor_ts__serde_core-1.0.229//:serde_core", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "default", + "derive", + "serde_derive", + "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", + emit_warnings = False, + pkg_name = "serde", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.229", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel deleted file mode 100644 index c2eff6baca9e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel +++ /dev/null @@ -1,174 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "serde_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 = [ - "alloc", - "default", - "result", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.228", - deps = [ - "@vendor_ts__serde_core-1.0.228//: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 = [ - "alloc", - "default", - "result", - "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 = "serde_core", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_core", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.228", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.229.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.229.bazel new file mode 100644 index 000000000000..b81bf62830ed --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.229.bazel @@ -0,0 +1,191 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "serde_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 = [ + "alloc", + "default", + "result", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.229", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "default", + "result", + "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", + emit_warnings = False, + pkg_name = "serde_core", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_core", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.229", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel deleted file mode 100644 index 1d49666df317..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "serde_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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.228", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.229.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.229.bazel new file mode 100644 index 000000000000..e7110b8d6b4a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.229.bazel @@ -0,0 +1,118 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "serde_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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.229", + deps = [ + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-3.0.6//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.150.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.150.bazel deleted file mode 100644 index 9ebc6e12937d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.150.bazel +++ /dev/null @@ -1,347 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "serde_json", - 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", - "unbounded_depth", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "indexmap", # aarch64-apple-darwin - "preserve_order", # aarch64-apple-darwin - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "indexmap", # aarch64-pc-windows-msvc - "preserve_order", # aarch64-pc-windows-msvc - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "indexmap", # aarch64-unknown-linux-gnu - "preserve_order", # aarch64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu - "preserve_order", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "indexmap", # arm-unknown-linux-gnueabi - "preserve_order", # arm-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "indexmap", # i686-pc-windows-msvc - "preserve_order", # i686-pc-windows-msvc - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "indexmap", # i686-unknown-linux-gnu - "preserve_order", # i686-unknown-linux-gnu - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "indexmap", # powerpc-unknown-linux-gnu - "preserve_order", # powerpc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "indexmap", # riscv64gc-unknown-linux-gnu - "preserve_order", # riscv64gc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "indexmap", # s390x-unknown-linux-gnu - "preserve_order", # s390x-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "indexmap", # x86_64-apple-darwin - "preserve_order", # x86_64-apple-darwin - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "indexmap", # x86_64-pc-windows-msvc - "preserve_order", # x86_64-pc-windows-msvc - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "indexmap", # x86_64-unknown-freebsd - "preserve_order", # x86_64-unknown-freebsd - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "indexmap", # x86_64-unknown-linux-gnu - "preserve_order", # x86_64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu - "preserve_order", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu - ], - "//conditions:default": [], - }), - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_json", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.150", - deps = [ - "@vendor_ts__itoa-1.0.18//:itoa", - "@vendor_ts__memchr-2.8.0//:memchr", - "@vendor_ts__serde_core-1.0.228//:serde_core", - "@vendor_ts__serde_json-1.0.150//:build_script_build", - "@vendor_ts__zmij-1.0.21//:zmij", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # aarch64-apple-darwin - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # aarch64-pc-windows-msvc - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # aarch64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # arm-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # i686-pc-windows-msvc - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # i686-unknown-linux-gnu - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # powerpc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # riscv64gc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # s390x-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-apple-darwin - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-pc-windows-msvc - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-unknown-freebsd - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__indexmap-2.14.0//:indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu - ], - "//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_features = [ - "default", - "std", - "unbounded_depth", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "indexmap", # aarch64-apple-darwin - "preserve_order", # aarch64-apple-darwin - ], - "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "indexmap", # aarch64-pc-windows-msvc - "preserve_order", # aarch64-pc-windows-msvc - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "indexmap", # aarch64-unknown-linux-gnu - "preserve_order", # aarch64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu - "preserve_order", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "indexmap", # arm-unknown-linux-gnueabi - "preserve_order", # arm-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "indexmap", # i686-pc-windows-msvc - "preserve_order", # i686-pc-windows-msvc - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "indexmap", # i686-unknown-linux-gnu - "preserve_order", # i686-unknown-linux-gnu - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "indexmap", # powerpc-unknown-linux-gnu - "preserve_order", # powerpc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "indexmap", # riscv64gc-unknown-linux-gnu - "preserve_order", # riscv64gc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "indexmap", # s390x-unknown-linux-gnu - "preserve_order", # s390x-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "indexmap", # x86_64-apple-darwin - "preserve_order", # x86_64-apple-darwin - ], - "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "indexmap", # x86_64-pc-windows-msvc - "preserve_order", # x86_64-pc-windows-msvc - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "indexmap", # x86_64-unknown-freebsd - "preserve_order", # x86_64-unknown-freebsd - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "indexmap", # x86_64-unknown-linux-gnu - "preserve_order", # x86_64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu - "preserve_order", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu - ], - "//conditions:default": [], - }), - 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 = "serde_json", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=serde_json", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.150", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.151.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.151.bazel new file mode 100644 index 000000000000..79089db0005e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.151.bazel @@ -0,0 +1,375 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "serde_json", + 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", + "unbounded_depth", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "indexmap", # aarch64-apple-darwin + "preserve_order", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "indexmap", # aarch64-pc-windows-msvc + "preserve_order", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "indexmap", # aarch64-unknown-linux-gnu + "preserve_order", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "preserve_order", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "indexmap", # arm-unknown-linux-gnueabi + "preserve_order", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "indexmap", # i686-pc-windows-msvc + "preserve_order", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "indexmap", # i686-unknown-linux-gnu + "preserve_order", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "indexmap", # loongarch64-unknown-linux-gnu + "preserve_order", # loongarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "indexmap", # powerpc-unknown-linux-gnu + "preserve_order", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "indexmap", # riscv64gc-unknown-linux-gnu + "preserve_order", # riscv64gc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "indexmap", # s390x-unknown-linux-gnu + "preserve_order", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "indexmap", # x86_64-apple-darwin + "preserve_order", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "indexmap", # x86_64-pc-windows-msvc + "preserve_order", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "indexmap", # x86_64-unknown-freebsd + "preserve_order", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "indexmap", # x86_64-unknown-linux-gnu + "preserve_order", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "preserve_order", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_json", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.151", + deps = [ + ":build_script_build", + "@vendor_ts__itoa-1.0.18//:itoa", + "@vendor_ts__memchr-2.8.3//:memchr", + "@vendor_ts__serde_core-1.0.229//:serde_core", + "@vendor_ts__zmij-1.0.23//:zmij", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # loongarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # riscv64gc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__indexmap-2.14.2//:indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "std", + "unbounded_depth", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "indexmap", # aarch64-apple-darwin + "preserve_order", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "indexmap", # aarch64-pc-windows-msvc + "preserve_order", # aarch64-pc-windows-msvc + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "indexmap", # aarch64-unknown-linux-gnu + "preserve_order", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "indexmap", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "preserve_order", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "indexmap", # arm-unknown-linux-gnueabi + "preserve_order", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "indexmap", # i686-pc-windows-msvc + "preserve_order", # i686-pc-windows-msvc + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "indexmap", # i686-unknown-linux-gnu + "preserve_order", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "indexmap", # loongarch64-unknown-linux-gnu + "preserve_order", # loongarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "indexmap", # powerpc-unknown-linux-gnu + "preserve_order", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "indexmap", # riscv64gc-unknown-linux-gnu + "preserve_order", # riscv64gc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "indexmap", # s390x-unknown-linux-gnu + "preserve_order", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "indexmap", # x86_64-apple-darwin + "preserve_order", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "indexmap", # x86_64-pc-windows-msvc + "preserve_order", # x86_64-pc-windows-msvc + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "indexmap", # x86_64-unknown-freebsd + "preserve_order", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "indexmap", # x86_64-unknown-linux-gnu + "preserve_order", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "indexmap", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "preserve_order", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), + 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", + emit_warnings = False, + pkg_name = "serde_json", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=serde_json", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.151", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.1.1.bazel index 67558f9a3a19..aff56411acaf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.1.1.bazel @@ -57,12 +57,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -74,13 +76,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -88,6 +100,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -100,6 +113,6 @@ rust_library( }), version = "1.1.1", deps = [ - "@vendor_ts__serde_core-1.0.228//:serde_core", + "@vendor_ts__serde_core-1.0.229//:serde_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.20.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.20.0.bazel deleted file mode 100644 index ce7c7138c975..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.20.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_with_macros-3.20.0//:serde_with_macros", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.20.0", - deps = [ - "@vendor_ts__serde_core-1.0.228//:serde_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.24.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.24.0.bazel new file mode 100644 index 000000000000..7e43c9d34a35 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.24.0.bazel @@ -0,0 +1,122 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_with_macros-3.24.0//:serde_with_macros", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.24.0", + deps = [ + "@vendor_ts__serde_core-1.0.229//:serde_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.20.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.20.0.bazel deleted file mode 100644 index 043187a396ff..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.20.0.bazel +++ /dev/null @@ -1,103 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.20.0", - deps = [ - "@vendor_ts__darling-0.23.0//:darling", - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.24.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.24.0.bazel new file mode 100644 index 000000000000..dea954975998 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.24.0.bazel @@ -0,0 +1,116 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.24.0", + deps = [ + "@vendor_ts__darling-0.24.1//:darling", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-3.0.6//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel index 9c4de3d6020c..cc21cf0e7d96 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,10 +108,10 @@ rust_library( }), version = "0.9.34+deprecated", deps = [ - "@vendor_ts__indexmap-2.14.0//:indexmap", + "@vendor_ts__indexmap-2.14.2//:indexmap", "@vendor_ts__itoa-1.0.18//:itoa", "@vendor_ts__ryu-1.0.23//:ryu", - "@vendor_ts__serde-1.0.228//:serde", + "@vendor_ts__serde-1.0.229//:serde", "@vendor_ts__unsafe-libyaml-0.2.11//:unsafe_libyaml", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.sharded-slab-0.1.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.sharded-slab-0.1.7.bazel index 504c16d3ed6b..f59925e6b776 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.sharded-slab-0.1.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.sharded-slab-0.1.7.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,6 +108,6 @@ rust_library( }), version = "0.1.7", deps = [ - "@vendor_ts__lazy_static-1.5.0//:lazy_static", + "@vendor_ts__lazy_static-1.5.1//:lazy_static", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel deleted file mode 100644 index 1b3b26b2284d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "shlex", - 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 = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=shlex", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.3.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-2.0.1.bazel new file mode 100644 index 000000000000..ac9f97395ab6 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-2.0.1.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "shlex", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=shlex", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.simd-adler32-0.3.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.simd-adler32-0.3.9.bazel index 5e16d2d97a90..8e12154dc9f9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.simd-adler32-0.3.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.simd-adler32-0.3.9.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.slab-0.4.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.slab-0.4.12.bazel index 494843749ba2..af5ae4a3fe8e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.slab-0.4.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.slab-0.4.12.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], 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 deleted file mode 100644 index 9ffaf6afce71..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.smallvec-1.16.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.16.1.bazel new file mode 100644 index 000000000000..7b4d4b028e48 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.16.1.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.6.bazel index 020a7b78d55b..c9fcf5e5ff53 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.6.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.spin-0.9.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.spin-0.9.8.bazel deleted file mode 100644 index 1df9f216dc13..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.spin-0.9.8.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "spin", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__lock_api-0.4.14//:lock_api": "lock_api_crate", - }, - compile_data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - crate_features = [ - "barrier", - "default", - "lazy", - "lock_api", - "lock_api_crate", - "mutex", - "once", - "rwlock", - "spin_mutex", - ], - crate_root = "src/lib.rs", - edition = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=spin", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.8", - deps = [ - "@vendor_ts__lock_api-0.4.14//:lock_api", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.1.bazel index 376f789df83a..2fa4b496c3ca 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.streaming-iterator-0.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.streaming-iterator-0.1.9.bazel index 7f8b002061e4..ee1a1fcd2660 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.streaming-iterator-0.1.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.streaming-iterator-0.1.9.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.strsim-0.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.strsim-0.11.1.bazel index 2d86e10662ea..1718b3d371e4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.strsim-0.11.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.strsim-0.11.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.117.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.117.bazel deleted file mode 100644 index b9ef3361a973..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.117.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.117", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.119.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.119.bazel new file mode 100644 index 000000000000..4ca3954e7290 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.119.bazel @@ -0,0 +1,127 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.119", + deps = [ + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-3.0.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-3.0.6.bazel new file mode 100644 index 000000000000..7bafe5907f27 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-3.0.6.bazel @@ -0,0 +1,127 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.0.6", + deps = [ + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel index 7283c85254ce..bfc20a0fe8ce 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,8 +112,8 @@ rust_library( }), version = "0.13.2", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.bazel deleted file mode 100644 index 37f2db5c2100..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "temp_dir", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=temp-dir", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.16", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.text-size-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.text-size-1.1.1.bazel index 7dadc9eea336..6f49c67c7850 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.text-size-1.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.text-size-1.1.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.18.bazel deleted file mode 100644 index c8be97281992..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.18.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "thin_vec", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=thin-vec", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.18", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.19.bazel new file mode 100644 index 000000000000..fb194d026295 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.19.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "thin_vec", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=thin-vec", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.19", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.18.bazel deleted file mode 100644 index 7ba5989625a1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.18.bazel +++ /dev/null @@ -1,173 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__thiserror-impl-2.0.18//:thiserror_impl", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.18", - deps = [ - "@vendor_ts__thiserror-2.0.18//: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 = "thiserror", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=thiserror", - "manual", - "noclippy", - "norustfmt", - ], - version = "2.0.18", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.20.bazel new file mode 100644 index 000000000000..8394fdcae309 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.20.bazel @@ -0,0 +1,190 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_features = [ + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__thiserror-impl-2.0.20//:thiserror_impl", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.20", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "thiserror", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=thiserror", + "manual", + "noclippy", + "norustfmt", + ], + version = "2.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.thiserror-impl-2.0.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.18.bazel deleted file mode 100644 index ef46b223dbb3..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.18.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.18", - deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.20.bazel new file mode 100644 index 000000000000..668597c48391 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.20.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.20", + deps = [ + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-3.0.6//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.10.bazel new file mode 100644 index 000000000000..c1c1ef3d1a33 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.10.bazel @@ -0,0 +1,113 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "thread_local", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=thread_local", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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__cfg-if-1.0.4//:cfg_if", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel deleted file mode 100644 index e38f9011ecd3..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "thread_local", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=thread_local", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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__cfg-if-1.0.4//:cfg_if", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.47.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.47.bazel deleted file mode 100644 index cdbbb0f4fce5..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.47.bazel +++ /dev/null @@ -1,221 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "time", - 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", - "formatting", - "local-offset", - "std", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=time", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.47", - deps = [ - "@vendor_ts__deranged-0.5.8//:deranged", - "@vendor_ts__itoa-1.0.18//:itoa", - "@vendor_ts__num-conv-0.2.2//:num_conv", - "@vendor_ts__powerfmt-0.2.0//:powerfmt", - "@vendor_ts__time-core-0.1.8//:time_core", - ] + select({ - "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-apple-darwin - "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-darwin - ], - "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-apple-ios - "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-ios - ], - "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-apple-ios-sim - "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-ios-sim - ], - "@rules_rust//rust/platform:aarch64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-linux-android - "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-linux-android - ], - "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-unknown-fuchsia - "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-fuchsia - ], - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-unknown-linux-gnu - "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu - "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu - ], - "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ - "@vendor_ts__libc-0.2.186//:libc", # aarch64-unknown-nto-qnx710 - "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-nto-qnx710 - ], - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # arm-unknown-linux-gnueabi - "@vendor_ts__num_threads-0.1.7//:num_threads", # arm-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ - "@vendor_ts__libc-0.2.186//:libc", # arm-unknown-linux-musleabi - "@vendor_ts__num_threads-0.1.7//:num_threads", # arm-unknown-linux-musleabi - ], - "@rules_rust//rust/platform:armv7-linux-androideabi": [ - "@vendor_ts__libc-0.2.186//:libc", # armv7-linux-androideabi - "@vendor_ts__num_threads-0.1.7//:num_threads", # armv7-linux-androideabi - ], - "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__libc-0.2.186//:libc", # armv7-unknown-linux-gnueabi - "@vendor_ts__num_threads-0.1.7//:num_threads", # armv7-unknown-linux-gnueabi - ], - "@rules_rust//rust/platform:i686-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # i686-apple-darwin - "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-apple-darwin - ], - "@rules_rust//rust/platform:i686-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # i686-linux-android - "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-linux-android - ], - "@rules_rust//rust/platform:i686-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # i686-unknown-freebsd - "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-unknown-freebsd - ], - "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # i686-unknown-linux-gnu - "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-unknown-linux-gnu - ], - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # powerpc-unknown-linux-gnu - "@vendor_ts__num_threads-0.1.7//:num_threads", # powerpc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # riscv64gc-unknown-linux-gnu - "@vendor_ts__num_threads-0.1.7//:num_threads", # riscv64gc-unknown-linux-gnu - ], - "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # s390x-unknown-linux-gnu - "@vendor_ts__num_threads-0.1.7//:num_threads", # s390x-unknown-linux-gnu - ], - "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ - "@vendor_ts__libc-0.2.186//:libc", # wasm32-unknown-emscripten - "@vendor_ts__num_threads-0.1.7//:num_threads", # wasm32-unknown-emscripten - ], - "@rules_rust//rust/platform:x86_64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-apple-darwin - "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-apple-darwin - ], - "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-apple-ios - "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-apple-ios - ], - "@rules_rust//rust/platform:x86_64-linux-android": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-linux-android - "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-linux-android - ], - "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-unknown-freebsd - "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-freebsd - ], - "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-unknown-fuchsia - "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-fuchsia - ], - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-unknown-linux-gnu - "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-linux-gnu - ], - "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__libc-0.2.186//:libc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu - "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu - ], - "//conditions:default": [], - }), -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.55.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.55.bazel new file mode 100644 index 000000000000..faf29bcb510b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.55.bazel @@ -0,0 +1,261 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "time", + 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", + "formatting", + "local-offset", + "std", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=time", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.55", + deps = [ + "@vendor_ts__deranged-0.5.8//:deranged", + "@vendor_ts__num-conv-0.2.2//:num_conv", + "@vendor_ts__powerfmt-0.2.0//:powerfmt", + "@vendor_ts__time-core-0.1.9//:time_core", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-apple-darwin + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-darwin + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-apple-ios + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-ios + ], + "@rules_rust//rust/platform:aarch64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-apple-ios-macabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-ios-macabi + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-apple-ios-sim + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-apple-ios-sim + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-linux-android + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-linux-android + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-unknown-fuchsia + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-fuchsia + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-linux-gnu, aarch64-unknown-nixos-gnu + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__libc-0.2.189//:libc", # aarch64-unknown-nto-qnx710 + "@vendor_ts__num_threads-0.1.7//:num_threads", # aarch64-unknown-nto-qnx710 + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # arm-unknown-linux-gnueabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # arm-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:arm-unknown-linux-musleabi": [ + "@vendor_ts__libc-0.2.189//:libc", # arm-unknown-linux-musleabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # arm-unknown-linux-musleabi + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__libc-0.2.189//:libc", # armv7-linux-androideabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # armv7-linux-androideabi + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.189//:libc", # armv7-unknown-linux-gnueabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # armv7-unknown-linux-gnueabi + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # i686-apple-darwin + "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-apple-darwin + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # i686-linux-android + "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-linux-android + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # i686-unknown-freebsd + "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-unknown-freebsd + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # i686-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # i686-unknown-linux-gnu + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # loongarch64-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # loongarch64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # mips-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # mips-unknown-linux-gnu + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # powerpc-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # powerpc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # riscv64gc-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # riscv64gc-unknown-linux-gnu + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # s390x-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # s390x-unknown-linux-gnu + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # sparc64-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # sparc64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # sparc64-unknown-netbsd + "@vendor_ts__num_threads-0.1.7//:num_threads", # sparc64-unknown-netbsd + ], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [ + "@vendor_ts__libc-0.2.189//:libc", # sparc64-unknown-openbsd + "@vendor_ts__num_threads-0.1.7//:num_threads", # sparc64-unknown-openbsd + ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.189//:libc", # wasm32-unknown-emscripten + "@vendor_ts__num_threads-0.1.7//:num_threads", # wasm32-unknown-emscripten + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-apple-darwin + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-apple-darwin + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-apple-ios + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-apple-ios + ], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-apple-ios-macabi + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-apple-ios-macabi + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-linux-android + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-linux-android + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-unknown-freebsd + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-freebsd + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-unknown-fuchsia + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-fuchsia + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-unknown-linux-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-linux-gnu + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.189//:libc", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + "@vendor_ts__num_threads-0.1.7//:num_threads", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu + ], + "//conditions:default": [], + }), +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.8.bazel deleted file mode 100644 index 226d665682fa..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.8.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "time_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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=time-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.8", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.9.bazel new file mode 100644 index 000000000000..45f2b038de8f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.9.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "time_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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=time-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.27.bazel deleted file mode 100644 index 25f46454c286..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.27.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "time_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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=time-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.27", - deps = [ - "@vendor_ts__num-conv-0.2.2//:num_conv", - "@vendor_ts__time-core-0.1.8//:time_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.32.bazel new file mode 100644 index 000000000000..c4ec5a92c262 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.32.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "time_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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=time-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.32", + deps = [ + "@vendor_ts__num-conv-0.2.2//:num_conv", + "@vendor_ts__time-core-0.1.9//:time_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec-1.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec-1.11.0.bazel deleted file mode 100644 index e8962f83b88c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec-1.11.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "tinyvec", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=tinyvec", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.11.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec-1.13.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec-1.13.3.bazel new file mode 100644 index 000000000000..99890f01d0d1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec-1.13.3.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "tinyvec", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=tinyvec", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.13.3", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec_macros-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec_macros-0.1.1.bazel deleted file mode 100644 index 4d480406c600..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec_macros-0.1.1.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "tinyvec_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 = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=tinyvec_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.12+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.12+spec-1.1.0.bazel deleted file mode 100644 index 00dda2eead4c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.12+spec-1.1.0.bazel +++ /dev/null @@ -1,112 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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", - "serde", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.12+spec-1.1.0", - deps = [ - "@vendor_ts__serde_core-1.0.228//:serde_core", - "@vendor_ts__serde_spanned-1.1.1//:serde_spanned", - "@vendor_ts__toml_datetime-0.7.5-spec-1.1.0//:toml_datetime", - "@vendor_ts__toml_parser-1.1.2-spec-1.1.0//:toml_parser", - "@vendor_ts__toml_writer-1.1.1-spec-1.1.0//:toml_writer", - "@vendor_ts__winnow-0.7.15//:winnow", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.2+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.2+spec-1.1.0.bazel deleted file mode 100644 index fe92f9515829..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.2+spec-1.1.0.bazel +++ /dev/null @@ -1,112 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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", - "serde", - "std", - ], - crate_root = "src/lib.rs", - edition = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.2+spec-1.1.0", - deps = [ - "@vendor_ts__serde_core-1.0.228//:serde_core", - "@vendor_ts__serde_spanned-1.1.1//:serde_spanned", - "@vendor_ts__toml_datetime-1.1.1-spec-1.1.0//:toml_datetime", - "@vendor_ts__toml_parser-1.1.2-spec-1.1.0//:toml_parser", - "@vendor_ts__toml_writer-1.1.1-spec-1.1.0//:toml_writer", - "@vendor_ts__winnow-1.0.3//:winnow", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.6+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.6+spec-1.1.0.bazel new file mode 100644 index 000000000000..16ee4f42442f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.6+spec-1.1.0.bazel @@ -0,0 +1,125 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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", + "serde", + "std", + ], + crate_root = "src/lib.rs", + edition = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.6+spec-1.1.0", + deps = [ + "@vendor_ts__serde_core-1.0.229//:serde_core", + "@vendor_ts__serde_spanned-1.1.1//:serde_spanned", + "@vendor_ts__toml_datetime-1.1.1-spec-1.1.0//:toml_datetime", + "@vendor_ts__toml_parser-1.1.3-spec-1.1.0//:toml_parser", + "@vendor_ts__toml_writer-1.1.2-spec-1.1.0//:toml_writer", + "@vendor_ts__winnow-1.0.4//:winnow", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.5+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.5+spec-1.1.0.bazel deleted file mode 100644 index fc176f8a9b8b..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.5+spec-1.1.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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 = [ - "alloc", - "serde", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.5+spec-1.1.0", - deps = [ - "@vendor_ts__serde_core-1.0.228//:serde_core", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel index f92fd3be64c6..cc7bc3605af7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel @@ -57,12 +57,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -74,13 +76,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -88,6 +100,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -100,6 +113,6 @@ rust_library( }), version = "1.1.1+spec-1.1.0", deps = [ - "@vendor_ts__serde_core-1.0.228//:serde_core", + "@vendor_ts__serde_core-1.0.229//:serde_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.0.bazel deleted file mode 100644 index 8f32166ede44..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "toml_parser", - 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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=toml_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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.2+spec-1.1.0", - deps = [ - "@vendor_ts__winnow-1.0.3//:winnow", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.3+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.3+spec-1.1.0.bazel new file mode 100644 index 000000000000..a9a24773ba4c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.3+spec-1.1.0.bazel @@ -0,0 +1,117 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "toml_parser", + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=toml_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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.3+spec-1.1.0", + deps = [ + "@vendor_ts__winnow-1.0.4//:winnow", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.1+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.1+spec-1.1.0.bazel deleted file mode 100644 index c3005bdd0207..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.1+spec-1.1.0.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "toml_writer", - 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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=toml_writer", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.1+spec-1.1.0", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.2+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.2+spec-1.1.0.bazel new file mode 100644 index 000000000000..dd54460a4090 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.2+spec-1.1.0.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "toml_writer", + 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 = "2024", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=toml_writer", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.2+spec-1.1.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.44.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.44.bazel index e38c76a9b2b5..c095e8935653 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.44.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.44.bazel @@ -61,12 +61,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -78,13 +80,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -92,6 +104,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.31.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.31.bazel index 6a87d07d6245..2748c0113aa1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.31.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.31.bazel @@ -52,12 +52,14 @@ rust_proc_macro( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_proc_macro( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_proc_macro( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,8 +108,8 @@ rust_proc_macro( }), version = "0.1.31", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.36.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.36.bazel index aacfb5924369..923dbf8d5da2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.36.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.36.bazel @@ -57,12 +57,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -74,13 +76,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -88,6 +100,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel index dde38953aa25..3dbeee28c51c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.2.0", deps = [ - "@vendor_ts__lazy_static-1.5.0//:lazy_static", + "@vendor_ts__lazy_static-1.5.1//:lazy_static", "@vendor_ts__tracing-0.1.44//:tracing", "@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel index e5c9180aca2f..1ffd0bce17b4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.2.0", deps = [ - "@vendor_ts__log-0.4.29//:log", + "@vendor_ts__log-0.4.34//:log", "@vendor_ts__once_cell-1.21.4//:once_cell", "@vendor_ts__tracing-core-0.1.36//:tracing_core", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.23.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.23.bazel index c5d7e4c94300..d5e85ae2bb1a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.23.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.23.bazel @@ -71,12 +71,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -88,13 +90,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -102,6 +114,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -117,11 +130,11 @@ rust_library( "@vendor_ts__matchers-0.2.0//:matchers", "@vendor_ts__nu-ansi-term-0.50.3//:nu_ansi_term", "@vendor_ts__once_cell-1.21.4//:once_cell", - "@vendor_ts__regex-automata-0.4.14//:regex_automata", + "@vendor_ts__regex-automata-0.4.18//:regex_automata", "@vendor_ts__sharded-slab-0.1.7//:sharded_slab", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__thread_local-1.1.9//:thread_local", - "@vendor_ts__time-0.3.47//:time", + "@vendor_ts__smallvec-1.16.1//:smallvec", + "@vendor_ts__thread_local-1.1.10//:thread_local", + "@vendor_ts__time-0.3.55//:time", "@vendor_ts__tracing-0.1.44//:tracing", "@vendor_ts__tracing-core-0.1.36//:tracing_core", "@vendor_ts__tracing-log-0.2.0//:tracing_log", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-tree-0.4.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-tree-0.4.1.bazel index ba6b4a2716fb..ba9dcc5d3c8f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-tree-0.4.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-tree-0.4.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.26.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.26.9.bazel index 6b1d1d7fe93d..1eacc78d63f8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.26.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.26.9.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,10 +116,10 @@ rust_library( }), version = "0.26.9", deps = [ - "@vendor_ts__regex-1.12.3//:regex", - "@vendor_ts__regex-syntax-0.8.10//:regex_syntax", + ":build_script_build", + "@vendor_ts__regex-1.13.1//:regex", + "@vendor_ts__regex-syntax-0.8.11//:regex_syntax", "@vendor_ts__streaming-iterator-0.1.9//:streaming_iterator", - "@vendor_ts__tree-sitter-0.26.9//:build_script_build", "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", ], ) @@ -117,6 +130,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -149,6 +165,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, link_deps = [ "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", ], @@ -170,8 +187,8 @@ cargo_build_script( version = "0.26.9", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.62//:cc", - "@vendor_ts__serde_json-1.0.150//:serde_json", + "@vendor_ts__cc-1.4.6//:cc", + "@vendor_ts__serde_json-1.0.151//:serde_json", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel index d027024bc845..213a74ecdbcf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.25.0", deps = [ - "@vendor_ts__tree-sitter-embedded-template-0.25.0//:build_script_build", + ":build_script_build", "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", ], ) @@ -110,6 +123,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -138,6 +154,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, link_deps = [ "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", ], @@ -158,7 +175,7 @@ cargo_build_script( version = "0.25.0", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.62//:cc", + "@vendor_ts__cc-1.4.6//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel index f80596c45905..efd31005bc78 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.24.8", deps = [ - "@vendor_ts__tree-sitter-json-0.24.8//:build_script_build", + ":build_script_build", "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", ], ) @@ -110,6 +123,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -138,6 +154,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, link_deps = [ "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", ], @@ -158,7 +175,7 @@ cargo_build_script( version = "0.24.8", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.62//:cc", + "@vendor_ts__cc-1.4.6//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.7.bazel index d1d5d48e3f01..c17572232ce5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.7.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.1.7", deps = [ - "@vendor_ts__tree-sitter-language-0.1.7//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, links = "tree-sitter-language", pkg_name = "tree-sitter-language", rustc_env_files = [ diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-python-0.23.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-python-0.23.6.bazel deleted file mode 100644 index 4568e1556b2e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-python-0.23.6.bazel +++ /dev/null @@ -1,169 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "tree_sitter_python", - 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 = "bindings/rust/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=tree-sitter-python", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.23.6", - deps = [ - "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", - "@vendor_ts__tree-sitter-python-0.23.6//: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 = "bindings/rust/build.rs", - data = glob( - include = ["**"], - allow_empty = True, - exclude = [ - "**/* *", - ".tmp_git_root/**/*", - "BUILD", - "BUILD.bazel", - "WORKSPACE", - "WORKSPACE.bazel", - ], - ), - edition = "2021", - link_deps = [ - "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", - ], - pkg_name = "tree-sitter-python", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=tree-sitter-python", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.23.6", - visibility = ["//visibility:private"], - deps = [ - "@vendor_ts__cc-1.2.62//:cc", - ], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-python-0.25.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-python-0.25.0.bazel new file mode 100644 index 000000000000..a7728612d8d0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-python-0.25.0.bazel @@ -0,0 +1,186 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "tree_sitter_python", + 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 = "bindings/rust/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=tree-sitter-python", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.25.0", + deps = [ + ":build_script_build", + "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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 = "bindings/rust/build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + emit_warnings = False, + link_deps = [ + "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", + ], + pkg_name = "tree-sitter-python", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=tree-sitter-python", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.25.0", + visibility = ["//visibility:private"], + deps = [ + "@vendor_ts__cc-1.4.6//:cc", + ], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel index 0735acce2afe..0f54a2f11f12 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,8 +112,8 @@ rust_library( }), version = "0.23.1", deps = [ + ":build_script_build", "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", - "@vendor_ts__tree-sitter-ql-0.23.1//:build_script_build", ], ) @@ -110,6 +123,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -138,6 +154,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, link_deps = [ "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", ], @@ -158,7 +175,7 @@ cargo_build_script( version = "0.23.1", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.62//:cc", + "@vendor_ts__cc-1.4.6//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel index 94e8965196e9..d5efc2ea2f88 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,8 +112,8 @@ rust_library( }), version = "0.23.1", deps = [ + ":build_script_build", "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", - "@vendor_ts__tree-sitter-ruby-0.23.1//:build_script_build", ], ) @@ -110,6 +123,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -138,6 +154,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, link_deps = [ "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", ], @@ -158,7 +175,7 @@ cargo_build_script( version = "0.23.1", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.62//:cc", + "@vendor_ts__cc-1.4.6//:cc", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.15.bazel deleted file mode 100644 index 74d278eb3bcd..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.15.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "triomphe", - 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", - "serde", - "stable_deref_trait", - "std", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=triomphe", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.15", - deps = [ - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__stable_deref_trait-1.2.1//:stable_deref_trait", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.16.bazel new file mode 100644 index 000000000000..034e1081e2d7 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.16.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "triomphe", + 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", + "serde", + "stable_deref_trait", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=triomphe", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.16", + deps = [ + "@vendor_ts__serde-1.0.229//:serde", + "@vendor_ts__stable_deref_trait-1.2.1//:stable_deref_trait", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typed-arena-2.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typed-arena-2.0.2.bazel index 1cf6200569b7..a84180a35e64 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typed-arena-2.0.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typed-arena-2.0.2.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], 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..24674e33d16e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel @@ -0,0 +1,179 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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 = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "typeid", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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.uncased-0.9.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.uncased-0.9.10.bazel index f677429c07b0..dc1c2ecb2dbf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.uncased-0.9.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.uncased-0.9.10.bazel @@ -60,12 +60,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -77,13 +79,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -91,6 +103,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -103,7 +116,7 @@ rust_library( }), version = "0.9.10", deps = [ - "@vendor_ts__uncased-0.9.10//:build_script_build", + ":build_script_build", ], ) @@ -113,6 +126,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -145,6 +161,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, pkg_name = "uncased", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ungrammar-1.16.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ungrammar-1.16.1.bazel index 680143ae6066..a43ecf56481d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ungrammar-1.16.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ungrammar-1.16.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.24.bazel index 27918c9b2b4a..156ea023f2bb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.24.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.4.bazel index 03a7d85d1f2d..ff90d09a87ad 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.4.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-xid-0.2.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-xid-0.2.6.bazel deleted file mode 100644 index c5725abf313e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-xid-0.2.6.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "unicode_xid", - 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 = "2015", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=unicode-xid", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.6", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unsafe-libyaml-0.2.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unsafe-libyaml-0.2.11.bazel index c5a1e9accf98..8a9e69f08ffe 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unsafe-libyaml-0.2.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unsafe-libyaml-0.2.11.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8parse-0.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8parse-0.2.2.bazel index 186b6221a216..e4bea8821f83 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8parse-0.2.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8parse-0.2.2.bazel @@ -55,12 +55,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -72,13 +74,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -86,6 +98,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.valuable-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.valuable-0.1.1.bazel index 73f685b51f74..c8269757c43a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.valuable-0.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.valuable-0.1.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.1.1", deps = [ - "@vendor_ts__valuable-0.1.1//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "valuable", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.version_check-0.9.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.version_check-0.9.5.bazel index e742e2f5c3cf..b0e1a04c6011 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.version_check-0.9.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.version_check-0.9.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel index eaa6ea808b41..dd9c7fd01f3c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel index 1544ed0659e1..8aa6a072254c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.3+wasi-0.2.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.3+wasi-0.2.9.bazel deleted file mode 100644 index f1eb022310b7..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.3+wasi-0.2.9.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wasip2", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasip2", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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+wasi-0.2.9", - deps = [ - "@vendor_ts__wit-bindgen-0.57.1//:wit_bindgen", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel deleted file mode 100644 index 580c2cef0aab..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wasip3", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasip3", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.0+wasi-0.3.0-rc-2026-01-06", - deps = [ - "@vendor_ts__wit-bindgen-0.51.0//:wit_bindgen", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.121.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.121.bazel deleted file mode 100644 index e0f42d6a3b32..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.121.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//cargo:defs.bzl", - "cargo_build_script", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wasm_bindgen", - 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", - proc_macro_deps = [ - "@vendor_ts__wasm-bindgen-macro-0.2.121//:wasm_bindgen_macro", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasm-bindgen", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.121", - deps = [ - "@vendor_ts__cfg-if-1.0.4//:cfg_if", - "@vendor_ts__once_cell-1.21.4//:once_cell", - "@vendor_ts__wasm-bindgen-0.2.121//:build_script_build", - "@vendor_ts__wasm-bindgen-shared-0.2.121//:wasm_bindgen_shared", - ], -) - -cargo_build_script( - name = "_bs", - srcs = glob( - include = ["**/*.rs"], - allow_empty = True, - ), - aliases = { - "@vendor_ts__rustversion-1.0.22//:rustversion": "rustversion_compat", - }, - 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", - link_deps = [ - "@vendor_ts__wasm-bindgen-shared-0.2.121//:wasm_bindgen_shared", - ], - pkg_name = "wasm-bindgen", - proc_macro_deps = [ - "@vendor_ts__rustversion-1.0.22//:rustversion", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasm-bindgen", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.2.121", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.126.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.126.bazel new file mode 100644 index 000000000000..0c120808f80c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.126.bazel @@ -0,0 +1,202 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "wasm_bindgen", + 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", + proc_macro_deps = [ + "@vendor_ts__wasm-bindgen-macro-0.2.126//:wasm_bindgen_macro", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wasm-bindgen", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.126", + deps = [ + ":build_script_build", + "@vendor_ts__cfg-if-1.0.4//:cfg_if", + "@vendor_ts__once_cell-1.21.4//:once_cell", + "@vendor_ts__wasm-bindgen-shared-0.2.126//:wasm_bindgen_shared", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + aliases = { + "@vendor_ts__rustversion-1.0.23//:rustversion": "rustversion_compat", + }, + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + link_deps = [ + "@vendor_ts__wasm-bindgen-shared-0.2.126//:wasm_bindgen_shared", + ], + pkg_name = "wasm-bindgen", + proc_macro_deps = [ + "@vendor_ts__rustversion-1.0.23//:rustversion", + ], + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wasm-bindgen", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.2.126", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.121.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.121.bazel deleted file mode 100644 index 350d8d20fe08..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.121.bazel +++ /dev/null @@ -1,101 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "wasm_bindgen_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 = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasm-bindgen-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.121", - deps = [ - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__wasm-bindgen-macro-support-0.2.121//:wasm_bindgen_macro_support", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.126.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.126.bazel new file mode 100644 index 000000000000..2b6101c82ca1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.126.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_proc_macro( + name = "wasm_bindgen_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 = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wasm-bindgen-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.126", + deps = [ + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__wasm-bindgen-macro-support-0.2.126//:wasm_bindgen_macro_support", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.121.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.121.bazel deleted file mode 100644 index 368ec173ac73..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.121.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wasm_bindgen_macro_support", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasm-bindgen-macro-support", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.121", - deps = [ - "@vendor_ts__bumpalo-3.20.2//:bumpalo", - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - "@vendor_ts__wasm-bindgen-shared-0.2.121//:wasm_bindgen_shared", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.126.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.126.bazel new file mode 100644 index 000000000000..b51cf891efa6 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.126.bazel @@ -0,0 +1,117 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "wasm_bindgen_macro_support", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wasm-bindgen-macro-support", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.126", + deps = [ + "@vendor_ts__bumpalo-3.20.3//:bumpalo", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", + "@vendor_ts__wasm-bindgen-shared-0.2.126//:wasm_bindgen_shared", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.121.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.121.bazel deleted file mode 100644 index a3e7da764a17..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.121.bazel +++ /dev/null @@ -1,164 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wasm_bindgen_shared", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasm-bindgen-shared", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.121", - deps = [ - "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", - "@vendor_ts__wasm-bindgen-shared-0.2.121//: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", - links = "wasm_bindgen", - pkg_name = "wasm-bindgen-shared", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasm-bindgen-shared", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.2.121", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.126.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.126.bazel new file mode 100644 index 000000000000..a633f2d5e6c9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.126.bazel @@ -0,0 +1,181 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "wasm_bindgen_shared", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wasm-bindgen-shared", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.126", + deps = [ + ":build_script_build", + "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + links = "wasm_bindgen", + pkg_name = "wasm-bindgen-shared", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=wasm-bindgen-shared", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.2.126", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-encoder-0.244.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-encoder-0.244.0.bazel deleted file mode 100644 index ac2651bb736a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-encoder-0.244.0.bazel +++ /dev/null @@ -1,106 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wasm_encoder", - 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 = [ - "component-model", - "std", - "wasmparser", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasm-encoder", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.244.0", - deps = [ - "@vendor_ts__leb128fmt-0.1.0//:leb128fmt", - "@vendor_ts__wasmparser-0.244.0//:wasmparser", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-metadata-0.244.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-metadata-0.244.0.bazel deleted file mode 100644 index 5a91b52eac5c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-metadata-0.244.0.bazel +++ /dev/null @@ -1,103 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wasm_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_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasm-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.244.0", - deps = [ - "@vendor_ts__anyhow-1.0.102//:anyhow", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__wasm-encoder-0.244.0//:wasm_encoder", - "@vendor_ts__wasmparser-0.244.0//:wasmparser", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasmparser-0.244.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasmparser-0.244.0.bazel deleted file mode 100644 index 8b1c810b8090..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasmparser-0.244.0.bazel +++ /dev/null @@ -1,111 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wasmparser", - 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 = [ - "component-model", - "features", - "hash-collections", - "simd", - "std", - "validate", - ], - crate_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wasmparser", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.244.0", - deps = [ - "@vendor_ts__bitflags-2.11.1//:bitflags", - "@vendor_ts__hashbrown-0.15.5//:hashbrown", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__semver-1.0.28//:semver", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel index b9f910dc53e7..298ea60ff1e7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.62.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.62.2.bazel index 8944afcd7012..17e2d838c615 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.62.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.62.2.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.2.bazel index 64083d827e6a..2ed36393d79e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.2.bazel @@ -52,12 +52,14 @@ rust_proc_macro( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_proc_macro( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_proc_macro( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,8 +108,8 @@ rust_proc_macro( }), version = "0.60.2", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.3.bazel index 3ed1833deca0..d44b24b062f4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.3.bazel @@ -52,12 +52,14 @@ rust_proc_macro( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_proc_macro( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_proc_macro( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -95,8 +108,8 @@ rust_proc_macro( }), version = "0.59.3", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-2.0.119//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.1.bazel index ad77c468d30a..d9820e054ca8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.4.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.4.1.bazel index f3469f679b93..78cc7bef0082 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.4.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.4.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.5.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.5.1.bazel index 078c8f3c1e39..d2f956cd3e2d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.5.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.5.1.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], 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 index 4caccdd6d022..ff04d942acdd 100644 --- 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 @@ -42,7 +42,6 @@ rust_library( "Win32_Storage_FileSystem", "Win32_System", "Win32_System_IO", - "Win32_System_ProcessStatus", "Win32_System_Threading", "Win32_System_WindowsProgramming", "default", @@ -65,12 +64,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -82,13 +83,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -96,6 +107,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.2.bazel index 604ec7833e58..6a445c10167c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.2.bazel @@ -43,14 +43,12 @@ rust_library( "Win32_Storage", "Win32_Storage_FileSystem", "Win32_System", - "Win32_System_Com", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", + "Win32_System_ProcessStatus", "Win32_System_SystemInformation", "Win32_System_Threading", - "Win32_UI", - "Win32_UI_Shell", "default", ], crate_root = "src/lib.rs", @@ -71,12 +69,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -88,13 +88,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -102,6 +112,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.5.bazel index 7b8cfe447f9d..d7b4970cffab 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.5.bazel @@ -52,12 +52,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -69,13 +71,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -83,6 +95,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.1.bazel index cebafebb9908..94b7355bbf5a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.53.1", deps = [ - "@vendor_ts__windows_aarch64_gnullvm-0.53.1//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_aarch64_gnullvm", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.1.bazel index b7b20bbac41f..8d415c67fdc7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.53.1", deps = [ - "@vendor_ts__windows_aarch64_msvc-0.53.1//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_aarch64_msvc", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.1.bazel index 2e0b0f11a235..334c94008465 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.53.1", deps = [ - "@vendor_ts__windows_i686_gnu-0.53.1//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_i686_gnu", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.1.bazel index 8da9d294891f..3e293a270a44 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.53.1", deps = [ - "@vendor_ts__windows_i686_gnullvm-0.53.1//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_i686_gnullvm", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.1.bazel index 561379881b7f..fbc31563fded 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.53.1", deps = [ - "@vendor_ts__windows_i686_msvc-0.53.1//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_i686_msvc", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.1.bazel index 7d5396412f85..2e913006d6f3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.53.1", deps = [ - "@vendor_ts__windows_x86_64_gnu-0.53.1//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_x86_64_gnu", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.1.bazel index 8b43186489e8..522c970e1720 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.53.1", deps = [ - "@vendor_ts__windows_x86_64_gnullvm-0.53.1//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_x86_64_gnullvm", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.1.bazel index 1e08192e82f3..b042b97d0deb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.1.bazel @@ -56,12 +56,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -73,13 +75,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -87,6 +99,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], @@ -99,7 +112,7 @@ rust_library( }), version = "0.53.1", deps = [ - "@vendor_ts__windows_x86_64_msvc-0.53.1//:build_script_build", + ":build_script_build", ], ) @@ -109,6 +122,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -137,6 +153,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "windows_x86_64_msvc", rustc_env_files = [ ":cargo_toml_env_vars", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel new file mode 100644 index 000000000000..1fc2ac90b854 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.13", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.15.bazel deleted file mode 100644 index 156ad002d937..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.15.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.15", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.3.bazel deleted file mode 100644 index 178d093d62b5..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.3.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -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_root = "src/lib.rs", - edition = "2021", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - 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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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", -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.4.bazel new file mode 100644 index 000000000000..fd703b0f1925 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.4.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//cargo:defs.bzl", "cargo_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +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_root = "src/lib.rs", + edition = "2021", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + 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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.wit-bindgen-0.51.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.51.0.bazel deleted file mode 100644 index 17e24365c6b1..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.51.0.bazel +++ /dev/null @@ -1,162 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wit_bindgen", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-bindgen", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.51.0", - deps = [ - "@vendor_ts__wit-bindgen-0.51.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 = "2024", - pkg_name = "wit-bindgen", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-bindgen", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.51.0", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.57.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.57.1.bazel deleted file mode 100644 index 00d1f9181d93..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.57.1.bazel +++ /dev/null @@ -1,162 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wit_bindgen", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-bindgen", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.57.1", - deps = [ - "@vendor_ts__wit-bindgen-0.57.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 = "2024", - pkg_name = "wit-bindgen", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-bindgen", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.57.1", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-core-0.51.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-core-0.51.0.bazel deleted file mode 100644 index 5d5f5e2dfd8e..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-core-0.51.0.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//cargo:defs.bzl", "cargo_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wit_bindgen_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 = "2024", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-bindgen-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.51.0", - deps = [ - "@vendor_ts__anyhow-1.0.102//:anyhow", - "@vendor_ts__heck-0.5.0//:heck", - "@vendor_ts__wit-parser-0.244.0//:wit_parser", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-0.51.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-0.51.0.bazel deleted file mode 100644 index b2266ab0a05d..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-0.51.0.bazel +++ /dev/null @@ -1,173 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wit_bindgen_rust", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-bindgen-rust", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.51.0", - deps = [ - "@vendor_ts__anyhow-1.0.102//:anyhow", - "@vendor_ts__heck-0.5.0//:heck", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__prettyplease-0.2.37//:prettyplease", - "@vendor_ts__syn-2.0.117//:syn", - "@vendor_ts__wasm-metadata-0.244.0//:wasm_metadata", - "@vendor_ts__wit-bindgen-core-0.51.0//:wit_bindgen_core", - "@vendor_ts__wit-bindgen-rust-0.51.0//:build_script_build", - "@vendor_ts__wit-component-0.244.0//:wit_component", - ], -) - -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 = "2024", - link_deps = [ - "@vendor_ts__prettyplease-0.2.37//:prettyplease", - ], - pkg_name = "wit-bindgen-rust", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-bindgen-rust", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.51.0", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-macro-0.51.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-macro-0.51.0.bazel deleted file mode 100644 index 8372f1162962..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-macro-0.51.0.bazel +++ /dev/null @@ -1,172 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_proc_macro") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_proc_macro( - name = "wit_bindgen_rust_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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-bindgen-rust-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.51.0", - deps = [ - "@vendor_ts__anyhow-1.0.102//:anyhow", - "@vendor_ts__prettyplease-0.2.37//:prettyplease", - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__syn-2.0.117//:syn", - "@vendor_ts__wit-bindgen-core-0.51.0//:wit_bindgen_core", - "@vendor_ts__wit-bindgen-rust-0.51.0//:wit_bindgen_rust", - "@vendor_ts__wit-bindgen-rust-macro-0.51.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 = "2024", - link_deps = [ - "@vendor_ts__prettyplease-0.2.37//:prettyplease", - ], - pkg_name = "wit-bindgen-rust-macro", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-bindgen-rust-macro", - "manual", - "noclippy", - "norustfmt", - ], - version = "0.51.0", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-component-0.244.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-component-0.244.0.bazel deleted file mode 100644 index a37b395cfdfb..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-component-0.244.0.bazel +++ /dev/null @@ -1,112 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wit_component", - 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__serde_derive-1.0.228//:serde_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-component", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.244.0", - deps = [ - "@vendor_ts__anyhow-1.0.102//:anyhow", - "@vendor_ts__bitflags-2.11.1//:bitflags", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__log-0.4.29//:log", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.150//:serde_json", - "@vendor_ts__wasm-encoder-0.244.0//:wasm_encoder", - "@vendor_ts__wasm-metadata-0.244.0//:wasm_metadata", - "@vendor_ts__wasmparser-0.244.0//:wasmparser", - "@vendor_ts__wit-parser-0.244.0//:wit_parser", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-parser-0.244.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-parser-0.244.0.bazel deleted file mode 100644 index 4efcd20bc3e7..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-parser-0.244.0.bazel +++ /dev/null @@ -1,117 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "wit_parser", - 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 = [ - "decoding", - "default", - "serde", - "serde_json", - ], - crate_root = "src/lib.rs", - edition = "2021", - proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.228//:serde_derive", - ], - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=wit-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.244.0", - deps = [ - "@vendor_ts__anyhow-1.0.102//:anyhow", - "@vendor_ts__id-arena-2.3.0//:id_arena", - "@vendor_ts__indexmap-2.14.0//:indexmap", - "@vendor_ts__log-0.4.29//:log", - "@vendor_ts__semver-1.0.28//:semver", - "@vendor_ts__serde-1.0.228//:serde", - "@vendor_ts__serde_json-1.0.150//:serde_json", - "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", - "@vendor_ts__wasmparser-0.244.0//:wasmparser", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yansi-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yansi-1.0.1.bazel index 8770902865a6..0e2ac09574d9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yansi-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yansi-1.0.1.bazel @@ -57,12 +57,14 @@ rust_library( 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-macabi": [], "@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-none": [], "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], "@rules_rust//rust/platform:aarch64-unknown-uefi": [], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], @@ -74,13 +76,23 @@ rust_library( "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], @@ -88,6 +100,7 @@ rust_library( "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], "@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": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.21.bazel deleted file mode 100644 index be61c1bfb32c..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.21.bazel +++ /dev/null @@ -1,162 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "zmij", - 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_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zmij", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.21", - deps = [ - "@vendor_ts__zmij-1.0.21//: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 = "zmij", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zmij", - "manual", - "noclippy", - "norustfmt", - ], - version = "1.0.21", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.23.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.23.bazel new file mode 100644 index 000000000000..6120db5840f5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.23.bazel @@ -0,0 +1,179 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "zmij", + 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_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zmij", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.23", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + 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", + emit_warnings = False, + pkg_name = "zmij", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zmij", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.23", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.13.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.13.3.bazel deleted file mode 100644 index ff3e776a7f8a..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.13.3.bazel +++ /dev/null @@ -1,106 +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_toml_env_vars") -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "zstd", - 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 = [ - "arrays", - "default", - "legacy", - "zdict_builder", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zstd", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.13.3", - deps = [ - "@vendor_ts__zstd-safe-7.2.4//:zstd_safe", - ], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.14.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.14.0.bazel new file mode 100644 index 000000000000..302104cc1277 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.14.0.bazel @@ -0,0 +1,119 @@ +############################################################################### +# @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_toml_env_vars") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "zstd", + 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 = [ + "arrays", + "default", + "legacy", + "zdict_builder", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zstd", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.14.0", + deps = [ + "@vendor_ts__zstd-safe-8.0.0//:zstd_safe", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel deleted file mode 100644 index eed1e00af815..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel +++ /dev/null @@ -1,178 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "zstd_safe", - 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 = [ - "arrays", - "legacy", - "std", - "zdict_builder", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zstd-safe", - "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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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 = "7.2.4", - deps = [ - "@vendor_ts__zstd-safe-7.2.4//:build_script_build", - "@vendor_ts__zstd-sys-2.0.16-zstd.1.5.7//:zstd_sys", - ], -) - -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 = [ - "arrays", - "legacy", - "std", - "zdict_builder", - ], - 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", - link_deps = [ - "@vendor_ts__zstd-sys-2.0.16-zstd.1.5.7//:zstd_sys", - ], - pkg_name = "zstd-safe", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zstd-safe", - "manual", - "noclippy", - "norustfmt", - ], - version = "7.2.4", - visibility = ["//visibility:private"], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-8.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-8.0.0.bazel new file mode 100644 index 000000000000..c1ea072139bd --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-8.0.0.bazel @@ -0,0 +1,195 @@ +############################################################################### +# @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", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "zstd_safe", + 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 = [ + "arrays", + "legacy", + "std", + "zdict_builder", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zstd-safe", + "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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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 = "8.0.0", + deps = [ + ":build_script_build", + "@vendor_ts__zstd-sys-2.1.0-zstd.1.5.7//:zstd_sys", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "arrays", + "legacy", + "std", + "zdict_builder", + ], + 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", + emit_warnings = False, + link_deps = [ + "@vendor_ts__zstd-sys-2.1.0-zstd.1.5.7//:zstd_sys", + ], + pkg_name = "zstd-safe", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zstd-safe", + "manual", + "noclippy", + "norustfmt", + ], + version = "8.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.zstd-sys-2.0.16+zstd.1.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel deleted file mode 100644 index 6c42d38361a7..000000000000 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel +++ /dev/null @@ -1,177 +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", - "cargo_toml_env_vars", -) -load("@rules_rust//rust:defs.bzl", "rust_library") - -package(default_visibility = ["//visibility:public"]) - -cargo_toml_env_vars( - name = "cargo_toml_env_vars", - src = "Cargo.toml", -) - -rust_library( - name = "zstd_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 = [ - "legacy", - "std", - "zdict_builder", - ], - crate_root = "src/lib.rs", - edition = "2018", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zstd-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:arm-unknown-linux-musleabi": [], - "@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-linux-gnu": [], - "@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-emscripten": [], - "@rules_rust//rust/platform:wasm32-unknown-unknown": [], - "@rules_rust//rust/platform:wasm32-wasip1": [], - "@rules_rust//rust/platform:wasm32-wasip1-threads": [], - "@rules_rust//rust/platform:wasm32-wasip2": [], - "@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.16+zstd.1.5.7", - deps = [ - "@vendor_ts__zstd-sys-2.0.16-zstd.1.5.7//: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 = [ - "legacy", - "std", - "zdict_builder", - ], - 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", - links = "zstd", - pkg_name = "zstd-sys", - rustc_env_files = [ - ":cargo_toml_env_vars", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-bazel", - "crate-name=zstd-sys", - "manual", - "noclippy", - "norustfmt", - ], - version = "2.0.16+zstd.1.5.7", - visibility = ["//visibility:private"], - deps = [ - "@vendor_ts__cc-1.2.62//:cc", - "@vendor_ts__pkg-config-0.3.33//:pkg_config", - ], -) - -alias( - name = "build_script_build", - actual = ":_bs", - tags = ["manual"], -) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.1.0+zstd.1.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.1.0+zstd.1.5.7.bazel new file mode 100644 index 000000000000..7dbe0c320569 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.1.0+zstd.1.5.7.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//cargo:defs.bzl", + "cargo_build_script", + "cargo_toml_env_vars", +) +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +cargo_toml_env_vars( + name = "cargo_toml_env_vars", + src = "Cargo.toml", +) + +rust_library( + name = "zstd_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 = [ + "legacy", + "std", + "zdict_builder", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zstd-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-macabi": [], + "@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-none": [], + "@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:arm-unknown-linux-musleabi": [], + "@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:loongarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imac-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [], + "@rules_rust//rust/platform:sparc64-unknown-openbsd": [], + "@rules_rust//rust/platform:thumbv6m-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv7em-none-eabihf": [], + "@rules_rust//rust/platform:thumbv7m-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabihf": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-apple-ios-macabi": [], + "@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.1.0+zstd.1.5.7", + deps = [ + ":build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "legacy", + "std", + "zdict_builder", + ], + 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", + emit_warnings = False, + links = "zstd", + pkg_name = "zstd-sys", + rustc_env_files = [ + ":cargo_toml_env_vars", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=zstd-sys", + "manual", + "noclippy", + "norustfmt", + ], + version = "2.1.0+zstd.1.5.7", + visibility = ["//visibility:private"], + deps = [ + "@vendor_ts__cc-1.4.6//:cc", + "@vendor_ts__pkg-config-0.3.34//:pkg_config", + ], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/anyhow-1.0.104/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/anyhow-1.0.104/BUILD.bazel new file mode 100644 index 000000000000..2e3ccd2c4a3d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/anyhow-1.0.104/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "anyhow-1.0.104", + actual = "@vendor_ts__anyhow-1.0.104//:anyhow", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/anyhow/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/anyhow/BUILD.bazel new file mode 100644 index 000000000000..6e60cef6e1ce --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/anyhow/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "anyhow", + actual = "@vendor_ts__anyhow-1.0.104//:anyhow", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/argfile-1.0.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/argfile-1.0.0/BUILD.bazel new file mode 100644 index 000000000000..d9f4480097d6 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/argfile-1.0.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "argfile-1.0.0", + actual = "@vendor_ts__argfile-1.0.0//:argfile", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/argfile/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/argfile/BUILD.bazel new file mode 100644 index 000000000000..308c6689fa8e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/argfile/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "argfile", + actual = "@vendor_ts__argfile-1.0.0//:argfile", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/chalk-ir-0.104.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/chalk-ir-0.104.0/BUILD.bazel new file mode 100644 index 000000000000..565b781b3307 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/chalk-ir-0.104.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "chalk-ir-0.104.0", + actual = "@vendor_ts__chalk-ir-0.104.0//:chalk_ir", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/chalk-ir/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/chalk-ir/BUILD.bazel new file mode 100644 index 000000000000..4595c6513ded --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/chalk-ir/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "chalk-ir", + actual = "@vendor_ts__chalk-ir-0.104.0//:chalk_ir", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/chrono-0.4.45/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/chrono-0.4.45/BUILD.bazel new file mode 100644 index 000000000000..205761e16dc2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/chrono-0.4.45/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "chrono-0.4.45", + actual = "@vendor_ts__chrono-0.4.45//:chrono", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/chrono/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/chrono/BUILD.bazel new file mode 100644 index 000000000000..a750c43750ab --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/chrono/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "chrono", + actual = "@vendor_ts__chrono-0.4.45//:chrono", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/clap-4.6.7/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/clap-4.6.7/BUILD.bazel new file mode 100644 index 000000000000..55dafa3616dc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/clap-4.6.7/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "clap-4.6.7", + actual = "@vendor_ts__clap-4.6.7//:clap", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/clap/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/clap/BUILD.bazel new file mode 100644 index 000000000000..045054183a1d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/clap/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "clap", + actual = "@vendor_ts__clap-4.6.7//:clap", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/crates.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/crates.bzl index 6d6d80ef58ce..8335d46fb8a6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/crates.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/crates.bzl @@ -1,21 +1,877 @@ ############################################################################### # @generated -# This file is auto-generated by the cargo-bazel tool. +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: # -# DO NOT MODIFY: Local changes may be replaced in future executions. +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors ############################################################################### -"""Rules for defining repositories for remote `crates_vendor` repositories""" +""" +# `crates_repository` API +- [aliases](#aliases) +- [crate_edition](#crate_edition) +- [crate_deps](#crate_deps) +- [all_crate_deps](#all_crate_deps) +- [crate_repositories](#crate_repositories) + +""" + +load("@bazel_skylib//lib:selects.bzl", "selects") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") +load("@rules_rust//crate_universe:defs.bzl", "crates_vendor_remote_repository") + +############################################################################### +# MACROS API +############################################################################### + +# An identifier that represent common dependencies (unconditional). +_COMMON_CONDITION = "" + +def _flatten_dependency_maps(all_dependency_maps): + """Flatten a list of dependency maps into one dictionary. + + Dependency maps have the following structure: + + ```python + DEPENDENCIES_MAP = { + # The first key in the map is a Bazel package + # name of the workspace this file is defined in. + "workspace_member_package": { + + # Not all dependencies are supported for all platforms. + # the condition key is the condition required to be true + # on the host platform. + "condition": { + + # An alias to a crate target. # The label of the crate target the + # Aliases are only crate names. # package name refers to. + "package_name": "@full//:label", + } + } + } + ``` + + Args: + all_dependency_maps (list): A list of dicts as described above + + Returns: + dict: A dictionary as described above + """ + dependencies = {} + + for workspace_deps_map in all_dependency_maps: + for pkg_name, conditional_deps_map in workspace_deps_map.items(): + if pkg_name not in dependencies: + non_frozen_map = dict() + for key, values in conditional_deps_map.items(): + non_frozen_map.update({key: dict(values.items())}) + dependencies.setdefault(pkg_name, non_frozen_map) + continue + + for condition, deps_map in conditional_deps_map.items(): + # If the condition has not been recorded, do so and continue + if condition not in dependencies[pkg_name]: + dependencies[pkg_name].setdefault(condition, dict(deps_map.items())) + continue + + # Alert on any miss-matched dependencies + inconsistent_entries = [] + for crate_name, crate_label in deps_map.items(): + existing = dependencies[pkg_name][condition].get(crate_name) + if existing and existing != crate_label: + inconsistent_entries.append((crate_name, existing, crate_label)) + dependencies[pkg_name][condition].update({crate_name: crate_label}) + + return dependencies + +def crate_deps(deps, package_name = None): + """Finds the fully qualified label of the requested crates for the package where this macro is called. + + Args: + deps (list): The desired list of crate targets. + package_name (str, optional): The package name of the set of dependencies to look up. + Defaults to `native.package_name()`. + + Returns: + list: A list of labels to generated rust targets (str) + """ + + if not deps: + return [] + + if package_name == None: + package_name = native.package_name() + + # Join both sets of dependencies + dependencies = _flatten_dependency_maps([ + _NORMAL_DEPENDENCIES, + _NORMAL_DEV_DEPENDENCIES, + _PROC_MACRO_DEPENDENCIES, + _PROC_MACRO_DEV_DEPENDENCIES, + _BUILD_DEPENDENCIES, + _BUILD_PROC_MACRO_DEPENDENCIES, + ]).pop(package_name, {}) + + # Combine all conditional packages so we can easily index over a flat list + # TODO: Perhaps this should actually return select statements and maintain + # the conditionals of the dependencies + flat_deps = {} + for deps_set in dependencies.values(): + for crate_name, crate_label in deps_set.items(): + flat_deps.update({crate_name: crate_label}) + + missing_crates = [] + crate_targets = [] + for crate_target in deps: + if crate_target not in flat_deps: + missing_crates.append(crate_target) + else: + crate_targets.append(flat_deps[crate_target]) + + if missing_crates: + fail("Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`".format( + missing_crates, + package_name, + dependencies, + )) + + return crate_targets + +def crate_edition(package_name = None): + """Finds the Rust edition for the package where this macro is called. + + Args: + package_name (str, optional): The package name whose edition should be + looked up. Defaults to `native.package_name()` when unset. + + Returns: + str: The Rust edition declared by the package's Cargo.toml file. + """ + if package_name == None: + package_name = native.package_name() + + if package_name not in _CRATE_EDITIONS: + fail("Tried to get crate_edition for package " + package_name + " but that package had no Cargo.toml file") + + return _CRATE_EDITIONS[package_name] + +def all_crate_deps( + normal = False, + normal_dev = False, + proc_macro = False, + proc_macro_dev = False, + build = False, + build_proc_macro = False, + package_name = None): + """Finds the fully qualified label of all requested direct crate dependencies \ + for the package where this macro is called. + + If no parameters are set, all normal dependencies are returned. Setting any one flag will + otherwise impact the contents of the returned list. + + Args: + normal (bool, optional): If True, normal dependencies are included in the + output list. + normal_dev (bool, optional): If True, normal dev dependencies will be + included in the output list. + proc_macro (bool, optional): If True, proc_macro dependencies are included + in the output list. + proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are + included in the output list. + build (bool, optional): If True, build dependencies are included + in the output list. + build_proc_macro (bool, optional): If True, build proc_macro dependencies are + included in the output list. + package_name (str, optional): The package name of the set of dependencies to look up. + Defaults to `native.package_name()` when unset. + + Returns: + list: A list of labels to generated rust targets (str) + """ + + if package_name == None: + package_name = native.package_name() + + # Determine the relevant maps to use + all_dependency_maps = [] + if normal: + all_dependency_maps.append(_NORMAL_DEPENDENCIES) + if normal_dev: + all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES) + if proc_macro: + all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES) + if proc_macro_dev: + all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES) + if build: + all_dependency_maps.append(_BUILD_DEPENDENCIES) + if build_proc_macro: + all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES) + + # Default to always using normal dependencies + if not all_dependency_maps: + all_dependency_maps.append(_NORMAL_DEPENDENCIES) + + dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None) + + if not dependencies: + if dependencies == None: + fail("Tried to get all_crate_deps for package " + package_name + " but that package had no Cargo.toml file") + else: + return [] + + crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values()) + for condition, deps in dependencies.items(): + crate_deps += selects.with_or({ + tuple(_CONDITIONS[condition]): deps.values(), + "//conditions:default": [], + }) + + return crate_deps + +def aliases( + normal = False, + normal_dev = False, + proc_macro = False, + proc_macro_dev = False, + build = False, + build_proc_macro = False, + package_name = None): + """Produces a map of Crate alias names to their original label + + If no dependency kinds are specified, `normal` and `proc_macro` are used by default. + Setting any one flag will otherwise determine the contents of the returned dict. + + Args: + normal (bool, optional): If True, normal dependencies are included in the + output list. + normal_dev (bool, optional): If True, normal dev dependencies will be + included in the output list.. + proc_macro (bool, optional): If True, proc_macro dependencies are included + in the output list. + proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are + included in the output list. + build (bool, optional): If True, build dependencies are included + in the output list. + build_proc_macro (bool, optional): If True, build proc_macro dependencies are + included in the output list. + package_name (str, optional): The package name of the set of dependencies to look up. + Defaults to `native.package_name()` when unset. + + Returns: + dict: The aliases of all associated packages + """ + if package_name == None: + package_name = native.package_name() + + # Determine the relevant maps to use + all_aliases_maps = [] + if normal: + all_aliases_maps.append(_NORMAL_ALIASES) + if normal_dev: + all_aliases_maps.append(_NORMAL_DEV_ALIASES) + if proc_macro: + all_aliases_maps.append(_PROC_MACRO_ALIASES) + if proc_macro_dev: + all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES) + if build: + all_aliases_maps.append(_BUILD_ALIASES) + if build_proc_macro: + all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES) + + # Default to always using normal aliases + if not all_aliases_maps: + all_aliases_maps.append(_NORMAL_ALIASES) + all_aliases_maps.append(_PROC_MACRO_ALIASES) + + aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None) + + if not aliases: + return dict() + + common_items = aliases.pop(_COMMON_CONDITION, {}).items() + + # If there are only common items in the dictionary, immediately return them + if not len(aliases.keys()) == 1: + return dict(common_items) + + # Build a single select statement where each conditional has accounted for the + # common set of aliases. + crate_aliases = {"//conditions:default": dict(common_items)} + for condition, deps in aliases.items(): + condition_triples = _CONDITIONS[condition] + for triple in condition_triples: + if triple in crate_aliases: + crate_aliases[triple].update(deps) + else: + crate_aliases.update({triple: dict(deps.items() + common_items)}) -# buildifier: disable=bzl-visibility -load("@rules_rust//crate_universe/private:crates_vendor.bzl", "crates_vendor_remote_repository") + return select(crate_aliases) -# buildifier: disable=bzl-visibility -load("//misc/bazel/3rdparty/tree_sitter_extractors_deps:defs.bzl", _crate_repositories = "crate_repositories") +############################################################################### +# WORKSPACE MEMBER DEPS, ALIASES, AND EDITIONS +############################################################################### + +_CRATE_EDITIONS = { + "ruby/extractor": "2024", + "rust/ast-generator": "2024", + "rust/autobuild": "2024", + "rust/extractor": "2024", + "rust/extractor/macros": "2024", + "shared/tree-sitter-extractor": "2024", + "shared/yeast": "2021", + "shared/yeast-macros": "2021", + "shared/yeast-schema": "2021", + "unified/extractor": "2024", + "unified/swift-syntax-rs": "2024", +} + +_NORMAL_DEPENDENCIES = { + "ruby/extractor": { + _COMMON_CONDITION: { + "clap": Label("@vendor_ts//clap-4.6.7"), + "encoding": Label("@vendor_ts//encoding-0.2.33"), + "lazy_static": Label("@vendor_ts//lazy_static-1.5.1"), + "rayon": Label("@vendor_ts//rayon-1.12.0"), + "regex": Label("@vendor_ts//regex-1.13.1"), + "serde_json": Label("@vendor_ts//serde_json-1.0.151"), + "tracing": Label("@vendor_ts//tracing-0.1.44"), + "tracing-subscriber": Label("@vendor_ts//tracing-subscriber-0.3.23"), + "tree-sitter": Label("@vendor_ts//tree-sitter-0.26.9"), + "tree-sitter-embedded-template": Label("@vendor_ts//tree-sitter-embedded-template-0.25.0"), + "tree-sitter-ruby": Label("@vendor_ts//tree-sitter-ruby-0.23.1"), + }, + }, + "rust/ast-generator": { + _COMMON_CONDITION: { + "anyhow": Label("@vendor_ts//anyhow-1.0.104"), + "either": Label("@vendor_ts//either-1.19.0"), + "itertools": Label("@vendor_ts//itertools-0.15.0"), + "mustache": Label("@vendor_ts//mustache-0.9.0"), + "proc-macro2": Label("@vendor_ts//proc-macro2-1.0.107"), + "quote": Label("@vendor_ts//quote-1.0.47"), + "serde": Label("@vendor_ts//serde-1.0.229"), + "stdx": Label("@vendor_ts//ra_ap_stdx-0.0.357"), + "ungrammar": Label("@vendor_ts//ungrammar-1.16.1"), + }, + }, + "rust/autobuild": { + }, + "rust/extractor": { + _COMMON_CONDITION: { + "anyhow": Label("@vendor_ts//anyhow-1.0.104"), + "argfile": Label("@vendor_ts//argfile-1.0.0"), + "chalk-ir": Label("@vendor_ts//chalk-ir-0.104.0"), + "chrono": Label("@vendor_ts//chrono-0.4.45"), + "clap": Label("@vendor_ts//clap-4.6.7"), + "dunce": Label("@vendor_ts//dunce-1.0.5"), + "figment": Label("@vendor_ts//figment-0.10.19"), + "glob": Label("@vendor_ts//glob-0.3.4"), + "itertools": Label("@vendor_ts//itertools-0.15.0"), + "mustache": Label("@vendor_ts//mustache-0.9.0"), + "num-traits": Label("@vendor_ts//num-traits-0.2.19"), + "ra_ap_base_db": Label("@vendor_ts//ra_ap_base_db-0.0.357"), + "ra_ap_cfg": Label("@vendor_ts//ra_ap_cfg-0.0.357"), + "ra_ap_hir": Label("@vendor_ts//ra_ap_hir-0.0.357"), + "ra_ap_hir_def": Label("@vendor_ts//ra_ap_hir_def-0.0.357"), + "ra_ap_hir_expand": Label("@vendor_ts//ra_ap_hir_expand-0.0.357"), + "ra_ap_hir_ty": Label("@vendor_ts//ra_ap_hir_ty-0.0.357"), + "ra_ap_ide_db": Label("@vendor_ts//ra_ap_ide_db-0.0.357"), + "ra_ap_intern": Label("@vendor_ts//ra_ap_intern-0.0.357"), + "ra_ap_load-cargo": Label("@vendor_ts//ra_ap_load-cargo-0.0.357"), + "ra_ap_parser": Label("@vendor_ts//ra_ap_parser-0.0.357"), + "ra_ap_paths": Label("@vendor_ts//ra_ap_paths-0.0.357"), + "ra_ap_project_model": Label("@vendor_ts//ra_ap_project_model-0.0.357"), + "ra_ap_span": Label("@vendor_ts//ra_ap_span-0.0.357"), + "ra_ap_syntax": Label("@vendor_ts//ra_ap_syntax-0.0.357"), + "ra_ap_syntax-bridge": Label("@vendor_ts//ra_ap_syntax-bridge-0.0.357"), + "ra_ap_toolchain": Label("@vendor_ts//ra_ap_toolchain-0.0.357"), + "ra_ap_vfs": Label("@vendor_ts//ra_ap_vfs-0.0.357"), + "serde": Label("@vendor_ts//serde-1.0.229"), + "serde_json": Label("@vendor_ts//serde_json-1.0.151"), + "serde_with": Label("@vendor_ts//serde_with-3.24.0"), + "toml": Label("@vendor_ts//toml-1.1.6+spec-1.1.0"), + "tracing": Label("@vendor_ts//tracing-0.1.44"), + "tracing-flame": Label("@vendor_ts//tracing-flame-0.2.0"), + "tracing-subscriber": Label("@vendor_ts//tracing-subscriber-0.3.23"), + "triomphe": Label("@vendor_ts//triomphe-0.1.16"), + }, + }, + "rust/extractor/macros": { + _COMMON_CONDITION: { + "quote": Label("@vendor_ts//quote-1.0.47"), + "syn": Label("@vendor_ts//syn-3.0.6"), + }, + }, + "shared/tree-sitter-extractor": { + _COMMON_CONDITION: { + "chrono": Label("@vendor_ts//chrono-0.4.45"), + "encoding": Label("@vendor_ts//encoding-0.2.33"), + "flate2": Label("@vendor_ts//flate2-1.1.9"), + "globset": Label("@vendor_ts//globset-0.4.18"), + "lazy_static": Label("@vendor_ts//lazy_static-1.5.1"), + "num_cpus": Label("@vendor_ts//num_cpus-1.17.0"), + "rayon": Label("@vendor_ts//rayon-1.12.0"), + "regex": Label("@vendor_ts//regex-1.13.1"), + "serde": Label("@vendor_ts//serde-1.0.229"), + "serde_json": Label("@vendor_ts//serde_json-1.0.151"), + "tracing": Label("@vendor_ts//tracing-0.1.44"), + "tracing-subscriber": Label("@vendor_ts//tracing-subscriber-0.3.23"), + "tree-sitter": Label("@vendor_ts//tree-sitter-0.26.9"), + "zstd": Label("@vendor_ts//zstd-0.14.0"), + }, + }, + "shared/yeast": { + _COMMON_CONDITION: { + "clap": Label("@vendor_ts//clap-4.6.7"), + "serde": Label("@vendor_ts//serde-1.0.229"), + "serde_json": Label("@vendor_ts//serde_json-1.0.151"), + "serde_yaml": Label("@vendor_ts//serde_yaml-0.9.34+deprecated"), + "tree-sitter": Label("@vendor_ts//tree-sitter-0.26.9"), + "tree-sitter-python": Label("@vendor_ts//tree-sitter-python-0.25.0"), + "tree-sitter-ruby": Label("@vendor_ts//tree-sitter-ruby-0.23.1"), + }, + }, + "shared/yeast-macros": { + _COMMON_CONDITION: { + "proc-macro2": Label("@vendor_ts//proc-macro2-1.0.107"), + "quote": Label("@vendor_ts//quote-1.0.47"), + "syn": Label("@vendor_ts//syn-3.0.6"), + }, + }, + "shared/yeast-schema": { + _COMMON_CONDITION: { + "serde": Label("@vendor_ts//serde-1.0.229"), + "serde_json": Label("@vendor_ts//serde_json-1.0.151"), + "serde_yaml": Label("@vendor_ts//serde_yaml-0.9.34+deprecated"), + }, + }, + "unified/extractor": { + _COMMON_CONDITION: { + "clap": Label("@vendor_ts//clap-4.6.7"), + "encoding": Label("@vendor_ts//encoding-0.2.33"), + "lazy_static": Label("@vendor_ts//lazy_static-1.5.1"), + "rayon": Label("@vendor_ts//rayon-1.12.0"), + "regex": Label("@vendor_ts//regex-1.13.1"), + "serde": Label("@vendor_ts//serde-1.0.229"), + "serde_json": Label("@vendor_ts//serde_json-1.0.151"), + "tracing": Label("@vendor_ts//tracing-0.1.44"), + "tracing-subscriber": Label("@vendor_ts//tracing-subscriber-0.3.23"), + }, + }, + "unified/swift-syntax-rs": { + }, +} + +_NORMAL_ALIASES = { + "ruby/extractor": { + _COMMON_CONDITION: { + }, + }, + "rust/ast-generator": { + _COMMON_CONDITION: { + Label("@vendor_ts//ra_ap_stdx-0.0.357"): "stdx", + }, + }, + "rust/autobuild": { + }, + "rust/extractor": { + _COMMON_CONDITION: { + }, + }, + "rust/extractor/macros": { + _COMMON_CONDITION: { + }, + }, + "shared/tree-sitter-extractor": { + _COMMON_CONDITION: { + }, + }, + "shared/yeast": { + _COMMON_CONDITION: { + }, + }, + "shared/yeast-macros": { + _COMMON_CONDITION: { + }, + }, + "shared/yeast-schema": { + _COMMON_CONDITION: { + }, + }, + "unified/extractor": { + _COMMON_CONDITION: { + }, + }, + "unified/swift-syntax-rs": { + }, +} + +_NORMAL_DEV_DEPENDENCIES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + _COMMON_CONDITION: { + "rand": Label("@vendor_ts//rand-0.10.3"), + "tree-sitter-json": Label("@vendor_ts//tree-sitter-json-0.24.8"), + "tree-sitter-ql": Label("@vendor_ts//tree-sitter-ql-0.23.1"), + }, + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_NORMAL_DEV_ALIASES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + _COMMON_CONDITION: { + }, + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_PROC_MACRO_DEPENDENCIES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_PROC_MACRO_ALIASES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_PROC_MACRO_DEV_DEPENDENCIES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_PROC_MACRO_DEV_ALIASES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + _COMMON_CONDITION: { + }, + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_BUILD_DEPENDENCIES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_BUILD_ALIASES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_BUILD_PROC_MACRO_DEPENDENCIES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_BUILD_PROC_MACRO_ALIASES = { + "ruby/extractor": { + }, + "rust/ast-generator": { + }, + "rust/autobuild": { + }, + "rust/extractor": { + }, + "rust/extractor/macros": { + }, + "shared/tree-sitter-extractor": { + }, + "shared/yeast": { + }, + "shared/yeast-macros": { + }, + "shared/yeast-schema": { + }, + "unified/extractor": { + }, + "unified/swift-syntax-rs": { + }, +} + +_CONDITIONS = { + "aarch64-apple-darwin": ["@rules_rust//rust/platform:aarch64-apple-darwin"], + "aarch64-apple-ios": ["@rules_rust//rust/platform:aarch64-apple-ios"], + "aarch64-apple-ios-macabi": ["@rules_rust//rust/platform:aarch64-apple-ios-macabi"], + "aarch64-apple-ios-sim": ["@rules_rust//rust/platform:aarch64-apple-ios-sim"], + "aarch64-linux-android": ["@rules_rust//rust/platform:aarch64-linux-android"], + "aarch64-pc-windows-gnullvm": [], + "aarch64-pc-windows-msvc": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], + "aarch64-unknown-fuchsia": ["@rules_rust//rust/platform:aarch64-unknown-fuchsia"], + "aarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"], + "aarch64-unknown-nixos-gnu": ["@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"], + "aarch64-unknown-none": ["@rules_rust//rust/platform:aarch64-unknown-none"], + "aarch64-unknown-nto-qnx710": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"], + "aarch64-unknown-uefi": ["@rules_rust//rust/platform:aarch64-unknown-uefi"], + "arm-unknown-linux-gnueabi": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi"], + "arm-unknown-linux-musleabi": ["@rules_rust//rust/platform:arm-unknown-linux-musleabi"], + "armv7-linux-androideabi": ["@rules_rust//rust/platform:armv7-linux-androideabi"], + "armv7-unknown-linux-gnueabi": ["@rules_rust//rust/platform:armv7-unknown-linux-gnueabi"], + "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], + "cfg(all(any(target_os = \"linux\", target_os = \"android\"), not(any(all(target_os = \"linux\", target_env = \"\"), getrandom_backend = \"custom\", getrandom_backend = \"linux_raw\", getrandom_backend = \"rdrand\", getrandom_backend = \"rndr\"))))": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu", "@rules_rust//rust/platform:mips-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:sparc64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], + "cfg(all(target_arch = \"aarch64\", target_os = \"android\"))": ["@rules_rust//rust/platform:aarch64-linux-android"], + "cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"], + "cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-macabi", "@rules_rust//rust/platform:aarch64-apple-ios-sim"], + "cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))": ["@rules_rust//rust/platform:loongarch64-unknown-linux-gnu"], + "cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], + "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], + "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], + "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(all(target_os = \"linux\", not(target_env = \"ohos\"), any(target_arch = \"x86\", target_arch = \"x86_64\", target_arch = \"aarch64\")))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(all(target_os = \"linux\", target_env = \"gnu\"))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu", "@rules_rust//rust/platform:mips-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:sparc64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(all(target_os = \"uefi\", getrandom_backend = \"efi_rng\"))": [], + "cfg(any())": [], + "cfg(any(target_arch = \"x86_64\", target_arch = \"x86\"))": ["@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:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-apple-ios-macabi", "@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"], + "cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"hurd\", target_os = \"illumos\", target_os = \"cygwin\", all(target_os = \"horizon\", target_arch = \"arm\")))": ["@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], + "cfg(any(target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\", target_os = \"dragonflybsd\", target_os = \"ios\"))": ["@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-macabi", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:sparc64-unknown-netbsd", "@rules_rust//rust/platform:sparc64-unknown-openbsd", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-apple-ios-macabi", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], + "cfg(any(target_os = \"haiku\", target_os = \"redox\", target_os = \"nto\", target_os = \"aix\"))": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"], + "cfg(any(target_os = \"ios\", target_os = \"visionos\", target_os = \"watchos\", target_os = \"tvos\"))": ["@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-macabi", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-apple-ios-macabi"], + "cfg(any(target_os = \"linux\", target_os = \"android\"))": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu", "@rules_rust//rust/platform:mips-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:sparc64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(any(target_os = \"macos\", target_os = \"ios\", target_os = \"freebsd\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-macabi", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-apple-ios-macabi", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], + "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:sparc64-unknown-openbsd", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@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:arm-unknown-linux-musleabi", "@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:mips-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imac-unknown-none-elf", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:thumbv6m-none-eabi", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv7em-none-eabihf", "@rules_rust//rust/platform:thumbv7m-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabihf", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], + "cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-macabi", "@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:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@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:loongarch64-unknown-linux-gnu", "@rules_rust//rust/platform:mips-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:sparc64-unknown-linux-gnu", "@rules_rust//rust/platform:sparc64-unknown-netbsd", "@rules_rust//rust/platform:sparc64-unknown-openbsd", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-apple-ios-macabi", "@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"], + "cfg(not(target_has_atomic = \"ptr\"))": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:thumbv6m-none-eabi"], + "cfg(not(windows))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-macabi", "@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-none", "@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:arm-unknown-linux-musleabi", "@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:loongarch64-unknown-linux-gnu", "@rules_rust//rust/platform:mips-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imac-unknown-none-elf", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-none-elf", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:sparc64-unknown-linux-gnu", "@rules_rust//rust/platform:sparc64-unknown-netbsd", "@rules_rust//rust/platform:sparc64-unknown-openbsd", "@rules_rust//rust/platform:thumbv6m-none-eabi", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv7em-none-eabihf", "@rules_rust//rust/platform:thumbv7m-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabihf", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-apple-ios-macabi", "@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_family = \"wasm\")": ["@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], + "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\")": [], + "cfg(target_os = \"hermit\")": [], + "cfg(target_os = \"macos\")": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin"], + "cfg(target_os = \"netbsd\")": ["@rules_rust//rust/platform:sparc64-unknown-netbsd"], + "cfg(target_os = \"redox\")": [], + "cfg(target_os = \"solaris\")": [], + "cfg(target_os = \"vxworks\")": [], + "cfg(target_os = \"wasi\")": ["@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], + "cfg(target_os = \"windows\")": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], + "cfg(target_vendor = \"apple\")": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-macabi", "@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", "@rules_rust//rust/platform:x86_64-apple-ios-macabi"], + "cfg(unix)": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-macabi", "@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:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@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:loongarch64-unknown-linux-gnu", "@rules_rust//rust/platform:mips-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:sparc64-unknown-linux-gnu", "@rules_rust//rust/platform:sparc64-unknown-netbsd", "@rules_rust//rust/platform:sparc64-unknown-openbsd", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-apple-ios-macabi", "@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"], + "cfg(windows)": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], + "cfg(windows_raw_dylib)": [], + "i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"], + "i686-linux-android": ["@rules_rust//rust/platform:i686-linux-android"], + "i686-pc-windows-gnullvm": [], + "i686-pc-windows-msvc": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], + "i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"], + "i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], + "loongarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:loongarch64-unknown-linux-gnu"], + "mips-unknown-linux-gnu": ["@rules_rust//rust/platform:mips-unknown-linux-gnu"], + "powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"], + "riscv32imac-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imac-unknown-none-elf"], + "riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"], + "riscv64gc-unknown-linux-gnu": ["@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu"], + "riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"], + "s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"], + "sparc64-unknown-linux-gnu": ["@rules_rust//rust/platform:sparc64-unknown-linux-gnu"], + "sparc64-unknown-netbsd": ["@rules_rust//rust/platform:sparc64-unknown-netbsd"], + "sparc64-unknown-openbsd": ["@rules_rust//rust/platform:sparc64-unknown-openbsd"], + "thumbv6m-none-eabi": ["@rules_rust//rust/platform:thumbv6m-none-eabi"], + "thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"], + "thumbv7em-none-eabihf": ["@rules_rust//rust/platform:thumbv7em-none-eabihf"], + "thumbv7m-none-eabi": ["@rules_rust//rust/platform:thumbv7m-none-eabi"], + "thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"], + "thumbv8m.main-none-eabihf": ["@rules_rust//rust/platform:thumbv8m.main-none-eabihf"], + "wasm32-unknown-emscripten": ["@rules_rust//rust/platform:wasm32-unknown-emscripten"], + "wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], + "wasm32-wasip1": ["@rules_rust//rust/platform:wasm32-wasip1"], + "wasm32-wasip1-threads": ["@rules_rust//rust/platform:wasm32-wasip1-threads"], + "wasm32-wasip2": ["@rules_rust//rust/platform:wasm32-wasip2"], + "x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"], + "x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"], + "x86_64-apple-ios-macabi": ["@rules_rust//rust/platform:x86_64-apple-ios-macabi"], + "x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"], + "x86_64-pc-windows-gnullvm": [], + "x86_64-pc-windows-msvc": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], + "x86_64-unknown-freebsd": ["@rules_rust//rust/platform:x86_64-unknown-freebsd"], + "x86_64-unknown-fuchsia": ["@rules_rust//rust/platform:x86_64-unknown-fuchsia"], + "x86_64-unknown-linux-gnu": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "x86_64-unknown-nixos-gnu": ["@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "x86_64-unknown-none": ["@rules_rust//rust/platform:x86_64-unknown-none"], + "x86_64-unknown-uefi": ["@rules_rust//rust/platform:x86_64-unknown-uefi"], +} + +############################################################################### def crate_repositories(): - """Generates repositories for vendored crates. + """A macro for defining repositories for all generated crates. Returns: A list of repos visible to the module through the module extension. @@ -23,10 +879,3238 @@ def crate_repositories(): maybe( crates_vendor_remote_repository, name = "vendor_ts", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bazel"), - defs_module = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:defs.bzl"), + # Lean interface: just point at `crates.bzl`; the repo rule + # derives the sibling `BUILD.bazel` and `defs.bzl`. + crates_module = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:crates.bzl"), + ) + maybe( + http_archive, + name = "vendor_ts__adler2-2.0.1", + sha256 = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa", + type = "tar.gz", + urls = ["https://static.crates.io/crates/adler2/2.0.1/download"], + strip_prefix = "adler2-2.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.adler2-2.0.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__aho-corasick-1.1.5", + sha256 = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba", + type = "tar.gz", + urls = ["https://static.crates.io/crates/aho-corasick/1.1.5/download"], + strip_prefix = "aho-corasick-1.1.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.aho-corasick-1.1.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__allocator-api2-0.2.21", + sha256 = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923", + type = "tar.gz", + urls = ["https://static.crates.io/crates/allocator-api2/0.2.21/download"], + strip_prefix = "allocator-api2-0.2.21", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.allocator-api2-0.2.21.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__android_system_properties-0.1.5", + sha256 = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311", + type = "tar.gz", + urls = ["https://static.crates.io/crates/android_system_properties/0.1.5/download"], + strip_prefix = "android_system_properties-0.1.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.android_system_properties-0.1.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__anstream-1.0.0", + sha256 = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstream/1.0.0/download"], + strip_prefix = "anstream-1.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstream-1.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__anstyle-1.0.14", + sha256 = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstyle/1.0.14/download"], + strip_prefix = "anstyle-1.0.14", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-1.0.14.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__anstyle-parse-1.0.0", + sha256 = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstyle-parse/1.0.0/download"], + strip_prefix = "anstyle-parse-1.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-parse-1.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__anstyle-query-1.1.5", + sha256 = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstyle-query/1.1.5/download"], + strip_prefix = "anstyle-query-1.1.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-query-1.1.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__anstyle-wincon-3.0.11", + sha256 = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anstyle-wincon/3.0.11/download"], + strip_prefix = "anstyle-wincon-3.0.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-wincon-3.0.11.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__anyhow-1.0.104", + sha256 = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470", + type = "tar.gz", + urls = ["https://static.crates.io/crates/anyhow/1.0.104/download"], + strip_prefix = "anyhow-1.0.104", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anyhow-1.0.104.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__argfile-1.0.0", + sha256 = "99489a733dea0d2930bfa59c243146a8513ce7b0991b9d006647687cc61f53e7", + type = "tar.gz", + urls = ["https://static.crates.io/crates/argfile/1.0.0/download"], + strip_prefix = "argfile-1.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.argfile-1.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__arrayvec-0.7.8", + sha256 = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56", + type = "tar.gz", + urls = ["https://static.crates.io/crates/arrayvec/0.7.8/download"], + strip_prefix = "arrayvec-0.7.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.arrayvec-0.7.8.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__atomic-0.6.1", + sha256 = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340", + type = "tar.gz", + urls = ["https://static.crates.io/crates/atomic/0.6.1/download"], + strip_prefix = "atomic-0.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.atomic-0.6.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__autocfg-1.5.1", + sha256 = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53", + type = "tar.gz", + urls = ["https://static.crates.io/crates/autocfg/1.5.1/download"], + strip_prefix = "autocfg-1.5.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.autocfg-1.5.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__base64-0.23.1", + sha256 = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/base64/0.23.1/download"], + strip_prefix = "base64-0.23.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.base64-0.23.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__bitflags-1.3.2", + sha256 = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/bitflags/1.3.2/download"], + strip_prefix = "bitflags-1.3.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-1.3.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__bitflags-2.13.2", + sha256 = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06", + type = "tar.gz", + urls = ["https://static.crates.io/crates/bitflags/2.13.2/download"], + strip_prefix = "bitflags-2.13.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.13.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__borsh-1.8.1", + sha256 = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/borsh/1.8.1/download"], + strip_prefix = "borsh-1.8.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.borsh-1.8.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__boxcar-0.2.14", + sha256 = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/boxcar/0.2.14/download"], + strip_prefix = "boxcar-0.2.14", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.boxcar-0.2.14.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__bs58-0.5.1", + sha256 = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4", + type = "tar.gz", + urls = ["https://static.crates.io/crates/bs58/0.5.1/download"], + strip_prefix = "bs58-0.5.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bs58-0.5.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__bstr-1.12.1", + sha256 = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab", + type = "tar.gz", + urls = ["https://static.crates.io/crates/bstr/1.12.1/download"], + strip_prefix = "bstr-1.12.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bstr-1.12.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__bumpalo-3.20.3", + sha256 = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649", + type = "tar.gz", + urls = ["https://static.crates.io/crates/bumpalo/3.20.3/download"], + strip_prefix = "bumpalo-3.20.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bumpalo-3.20.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__bytemuck-1.25.0", + sha256 = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec", + type = "tar.gz", + urls = ["https://static.crates.io/crates/bytemuck/1.25.0/download"], + strip_prefix = "bytemuck-1.25.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bytemuck-1.25.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__bytes-1.12.1", + sha256 = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04", + type = "tar.gz", + urls = ["https://static.crates.io/crates/bytes/1.12.1/download"], + strip_prefix = "bytes-1.12.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bytes-1.12.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__camino-1.2.6", + sha256 = "bbbad30e4b4c14a39e3cc8aed085a12a327257c316619c93581e017bc52be591", + type = "tar.gz", + urls = ["https://static.crates.io/crates/camino/1.2.6/download"], + strip_prefix = "camino-1.2.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.camino-1.2.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__cargo-platform-0.3.3", + sha256 = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cargo-platform/0.3.3/download"], + strip_prefix = "cargo-platform-0.3.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo-platform-0.3.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__cargo_metadata-0.23.1", + sha256 = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cargo_metadata/0.23.1/download"], + strip_prefix = "cargo_metadata-0.23.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo_metadata-0.23.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__cc-1.4.6", + sha256 = "a3eb0f42d6c360dc3f8a821f6bf2fdea7f72bfd36b3076eb0e6d1e9e0752fff4", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cc/1.4.6/download"], + strip_prefix = "cc-1.4.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cc-1.4.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__cfg-if-1.0.4", + sha256 = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cfg-if/1.0.4/download"], + strip_prefix = "cfg-if-1.0.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cfg-if-1.0.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__cfg_aliases-0.2.2", + sha256 = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cfg_aliases/0.2.2/download"], + strip_prefix = "cfg_aliases-0.2.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cfg_aliases-0.2.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__chacha20-0.10.2", + sha256 = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06", + type = "tar.gz", + urls = ["https://static.crates.io/crates/chacha20/0.10.2/download"], + strip_prefix = "chacha20-0.10.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chacha20-0.10.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__chalk-derive-0.104.0", + sha256 = "9ea9b1e80910f66ae87c772247591432032ef3f6a67367ff17f8343db05beafa", + type = "tar.gz", + urls = ["https://static.crates.io/crates/chalk-derive/0.104.0/download"], + strip_prefix = "chalk-derive-0.104.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-derive-0.104.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__chalk-ir-0.104.0", + sha256 = "7047a516de16226cd17344d41a319d0ea1064bf9e60bd612ab341ab4a34bbfa8", + type = "tar.gz", + urls = ["https://static.crates.io/crates/chalk-ir/0.104.0/download"], + strip_prefix = "chalk-ir-0.104.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-ir-0.104.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__chrono-0.4.45", + sha256 = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327", + type = "tar.gz", + urls = ["https://static.crates.io/crates/chrono/0.4.45/download"], + strip_prefix = "chrono-0.4.45", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.45.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__clap-4.6.7", + sha256 = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap/4.6.7/download"], + strip_prefix = "clap-4.6.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.6.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__clap_builder-4.6.7", + sha256 = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap_builder/4.6.7/download"], + strip_prefix = "clap_builder-4.6.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.6.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__clap_derive-4.6.7", + sha256 = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap_derive/4.6.7/download"], + strip_prefix = "clap_derive-4.6.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.6.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__clap_lex-1.1.1", + sha256 = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap_lex/1.1.1/download"], + strip_prefix = "clap_lex-1.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_lex-1.1.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__cobs-0.3.0", + sha256 = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cobs/0.3.0/download"], + strip_prefix = "cobs-0.3.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cobs-0.3.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__colorchoice-1.0.5", + sha256 = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570", + type = "tar.gz", + urls = ["https://static.crates.io/crates/colorchoice/1.0.5/download"], + strip_prefix = "colorchoice-1.0.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.colorchoice-1.0.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__core-foundation-sys-0.8.7", + sha256 = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/core-foundation-sys/0.8.7/download"], + strip_prefix = "core-foundation-sys-0.8.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.core-foundation-sys-0.8.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__countme-3.0.1", + sha256 = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636", + type = "tar.gz", + urls = ["https://static.crates.io/crates/countme/3.0.1/download"], + strip_prefix = "countme-3.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.countme-3.0.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__cov-mark-2.2.0", + sha256 = "90863d8442510cddf7f46618c4f92413774635771a3e80830c8b30d183420b14", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cov-mark/2.2.0/download"], + strip_prefix = "cov-mark-2.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cov-mark-2.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__cpufeatures-0.3.1", + sha256 = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cpufeatures/0.3.1/download"], + strip_prefix = "cpufeatures-0.3.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cpufeatures-0.3.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__crc32fast-1.5.0", + sha256 = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crc32fast/1.5.0/download"], + strip_prefix = "crc32fast-1.5.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crc32fast-1.5.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__crossbeam-channel-0.5.17", + sha256 = "98b0cc327b5bc766e7fda9c9260cc0fa81b43a8e240440422dff70788e3f9ef1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-channel/0.5.17/download"], + strip_prefix = "crossbeam-channel-0.5.17", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-channel-0.5.17.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__crossbeam-deque-0.8.8", + sha256 = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-deque/0.8.8/download"], + strip_prefix = "crossbeam-deque-0.8.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-deque-0.8.8.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__crossbeam-epoch-0.9.21", + sha256 = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-epoch/0.9.21/download"], + strip_prefix = "crossbeam-epoch-0.9.21", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-epoch-0.9.21.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__crossbeam-queue-0.3.14", + sha256 = "03e8bd762f7479489c70ed6c768ddca99d7296857de437a68dcb2a94365b3fae", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-queue/0.3.14/download"], + strip_prefix = "crossbeam-queue-0.3.14", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-queue-0.3.14.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__crossbeam-utils-0.8.23", + sha256 = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-utils/0.8.23/download"], + strip_prefix = "crossbeam-utils-0.8.23", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-utils-0.8.23.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__darling-0.24.1", + sha256 = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec", + type = "tar.gz", + urls = ["https://static.crates.io/crates/darling/0.24.1/download"], + strip_prefix = "darling-0.24.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling-0.24.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__darling_core-0.24.1", + sha256 = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff", + type = "tar.gz", + urls = ["https://static.crates.io/crates/darling_core/0.24.1/download"], + strip_prefix = "darling_core-0.24.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling_core-0.24.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__darling_macro-0.24.1", + sha256 = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785", + type = "tar.gz", + urls = ["https://static.crates.io/crates/darling_macro/0.24.1/download"], + strip_prefix = "darling_macro-0.24.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling_macro-0.24.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__dashmap-6.2.1", + sha256 = "e6361d5c062261c78a176addb82d4c821ae42bed6089de0e12603cd25de2059c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/dashmap/6.2.1/download"], + strip_prefix = "dashmap-6.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dashmap-6.2.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__defmt-1.1.1", + sha256 = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/defmt/1.1.1/download"], + strip_prefix = "defmt-1.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.defmt-1.1.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__defmt-macros-1.1.1", + sha256 = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8", + type = "tar.gz", + urls = ["https://static.crates.io/crates/defmt-macros/1.1.1/download"], + strip_prefix = "defmt-macros-1.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.defmt-macros-1.1.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__defmt-parser-1.0.0", + sha256 = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/defmt-parser/1.0.0/download"], + strip_prefix = "defmt-parser-1.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.defmt-parser-1.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__deranged-0.5.8", + sha256 = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/deranged/0.5.8/download"], + strip_prefix = "deranged-0.5.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.deranged-0.5.8.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__derive-where-1.6.1", + sha256 = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534", + type = "tar.gz", + urls = ["https://static.crates.io/crates/derive-where/1.6.1/download"], + strip_prefix = "derive-where-1.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.derive-where-1.6.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__dissimilar-1.0.11", + sha256 = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/dissimilar/1.0.11/download"], + strip_prefix = "dissimilar-1.0.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dissimilar-1.0.11.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__drop_bomb-0.1.5", + sha256 = "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/drop_bomb/0.1.5/download"], + strip_prefix = "drop_bomb-0.1.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.drop_bomb-0.1.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__dunce-1.0.5", + sha256 = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813", + type = "tar.gz", + urls = ["https://static.crates.io/crates/dunce/1.0.5/download"], + strip_prefix = "dunce-1.0.5", + 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.20", + sha256 = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555", + type = "tar.gz", + urls = ["https://static.crates.io/crates/dyn-clone/1.0.20/download"], + strip_prefix = "dyn-clone-1.0.20", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dyn-clone-1.0.20.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__either-1.19.0", + sha256 = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be", + type = "tar.gz", + urls = ["https://static.crates.io/crates/either/1.19.0/download"], + strip_prefix = "either-1.19.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.either-1.19.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__embedded-io-0.4.0", + sha256 = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced", + type = "tar.gz", + urls = ["https://static.crates.io/crates/embedded-io/0.4.0/download"], + strip_prefix = "embedded-io-0.4.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.embedded-io-0.4.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__embedded-io-0.6.1", + sha256 = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/embedded-io/0.6.1/download"], + strip_prefix = "embedded-io-0.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.embedded-io-0.6.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ena-0.14.4", + sha256 = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ena/0.14.4/download"], + strip_prefix = "ena-0.14.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ena-0.14.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__encoding-0.2.33", + sha256 = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec", + type = "tar.gz", + urls = ["https://static.crates.io/crates/encoding/0.2.33/download"], + strip_prefix = "encoding-0.2.33", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-0.2.33.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__encoding-index-japanese-1.20141219.5", + sha256 = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91", + type = "tar.gz", + urls = ["https://static.crates.io/crates/encoding-index-japanese/1.20141219.5/download"], + strip_prefix = "encoding-index-japanese-1.20141219.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-japanese-1.20141219.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__encoding-index-korean-1.20141219.5", + sha256 = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81", + type = "tar.gz", + urls = ["https://static.crates.io/crates/encoding-index-korean/1.20141219.5/download"], + strip_prefix = "encoding-index-korean-1.20141219.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-korean-1.20141219.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__encoding-index-simpchinese-1.20141219.5", + sha256 = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7", + type = "tar.gz", + urls = ["https://static.crates.io/crates/encoding-index-simpchinese/1.20141219.5/download"], + strip_prefix = "encoding-index-simpchinese-1.20141219.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-simpchinese-1.20141219.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__encoding-index-singlebyte-1.20141219.5", + sha256 = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/encoding-index-singlebyte/1.20141219.5/download"], + strip_prefix = "encoding-index-singlebyte-1.20141219.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-singlebyte-1.20141219.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__encoding-index-tradchinese-1.20141219.5", + sha256 = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18", + type = "tar.gz", + urls = ["https://static.crates.io/crates/encoding-index-tradchinese/1.20141219.5/download"], + strip_prefix = "encoding-index-tradchinese-1.20141219.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-tradchinese-1.20141219.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__encoding_index_tests-0.1.4", + sha256 = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569", + type = "tar.gz", + urls = ["https://static.crates.io/crates/encoding_index_tests/0.1.4/download"], + strip_prefix = "encoding_index_tests-0.1.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding_index_tests-0.1.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__equivalent-1.0.2", + sha256 = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/equivalent/1.0.2/download"], + strip_prefix = "equivalent-1.0.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.equivalent-1.0.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__figment-0.10.19", + sha256 = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/figment/0.10.19/download"], + strip_prefix = "figment-0.10.19", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.figment-0.10.19.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__find-msvc-tools-0.1.12", + sha256 = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/find-msvc-tools/0.1.12/download"], + strip_prefix = "find-msvc-tools-0.1.12", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.find-msvc-tools-0.1.12.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__fixedbitset-0.5.7", + sha256 = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99", + type = "tar.gz", + urls = ["https://static.crates.io/crates/fixedbitset/0.5.7/download"], + strip_prefix = "fixedbitset-0.5.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fixedbitset-0.5.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__flate2-1.1.9", + sha256 = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/flate2/1.1.9/download"], + strip_prefix = "flate2-1.1.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.flate2-1.1.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__foldhash-0.1.5", + sha256 = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/foldhash/0.1.5/download"], + strip_prefix = "foldhash-0.1.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.foldhash-0.1.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__foldhash-0.2.0", + sha256 = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/foldhash/0.2.0/download"], + strip_prefix = "foldhash-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.foldhash-0.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__fs-err-3.3.0", + sha256 = "73fde052dbfc920003cfd2c8e2c6e6d4cc7c1091538c3a24226cec0665ab08c0", + type = "tar.gz", + urls = ["https://static.crates.io/crates/fs-err/3.3.0/download"], + strip_prefix = "fs-err-3.3.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fs-err-3.3.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__fsevent-sys-4.1.0", + sha256 = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/fsevent-sys/4.1.0/download"], + strip_prefix = "fsevent-sys-4.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fsevent-sys-4.1.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__fst-0.4.7", + sha256 = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/fst/0.4.7/download"], + strip_prefix = "fst-0.4.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fst-0.4.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__futures-core-0.3.34", + sha256 = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/futures-core/0.3.34/download"], + strip_prefix = "futures-core-0.3.34", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.futures-core-0.3.34.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__futures-task-0.3.34", + sha256 = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd", + type = "tar.gz", + urls = ["https://static.crates.io/crates/futures-task/0.3.34/download"], + strip_prefix = "futures-task-0.3.34", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.futures-task-0.3.34.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__futures-util-0.3.34", + sha256 = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/futures-util/0.3.34/download"], + strip_prefix = "futures-util-0.3.34", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.futures-util-0.3.34.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__getrandom-0.4.3", + sha256 = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099", + type = "tar.gz", + urls = ["https://static.crates.io/crates/getrandom/0.4.3/download"], + strip_prefix = "getrandom-0.4.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.getrandom-0.4.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__glob-0.3.4", + sha256 = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/glob/0.3.4/download"], + strip_prefix = "glob-0.3.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.glob-0.3.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__globset-0.4.18", + sha256 = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/globset/0.4.18/download"], + strip_prefix = "globset-0.4.18", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.globset-0.4.18.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__hashbrown-0.12.3", + sha256 = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hashbrown/0.12.3/download"], + strip_prefix = "hashbrown-0.12.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.12.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__hashbrown-0.14.5", + sha256 = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hashbrown/0.14.5/download"], + strip_prefix = "hashbrown-0.14.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.14.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__hashbrown-0.15.5", + sha256 = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hashbrown/0.15.5/download"], + strip_prefix = "hashbrown-0.15.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.15.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__hashbrown-0.17.1", + sha256 = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hashbrown/0.17.1/download"], + strip_prefix = "hashbrown-0.17.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.17.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__hashlink-0.12.1", + sha256 = "32069d97bb81e38fa67eab65e3393bf804bb85969f2bc06bf13f64aef5aba248", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hashlink/0.12.1/download"], + strip_prefix = "hashlink-0.12.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashlink-0.12.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__heck-0.5.0", + sha256 = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea", + type = "tar.gz", + urls = ["https://static.crates.io/crates/heck/0.5.0/download"], + strip_prefix = "heck-0.5.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.heck-0.5.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__hermit-abi-0.5.2", + sha256 = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c", + type = "tar.gz", + 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( + http_archive, + name = "vendor_ts__hex-0.4.3", + sha256 = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70", + type = "tar.gz", + urls = ["https://static.crates.io/crates/hex/0.4.3/download"], + strip_prefix = "hex-0.4.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hex-0.4.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__iana-time-zone-0.1.65", + sha256 = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470", + type = "tar.gz", + urls = ["https://static.crates.io/crates/iana-time-zone/0.1.65/download"], + strip_prefix = "iana-time-zone-0.1.65", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.iana-time-zone-0.1.65.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__iana-time-zone-haiku-0.1.2", + sha256 = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/iana-time-zone-haiku/0.1.2/download"], + strip_prefix = "iana-time-zone-haiku-0.1.2", + 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__ident_case-1.0.1", + sha256 = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ident_case/1.0.1/download"], + strip_prefix = "ident_case-1.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ident_case-1.0.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__indexmap-1.9.3", + sha256 = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99", + type = "tar.gz", + urls = ["https://static.crates.io/crates/indexmap/1.9.3/download"], + strip_prefix = "indexmap-1.9.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-1.9.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__indexmap-2.14.2", + sha256 = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855", + type = "tar.gz", + urls = ["https://static.crates.io/crates/indexmap/2.14.2/download"], + strip_prefix = "indexmap-2.14.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-2.14.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__inlinable_string-0.1.15", + sha256 = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/inlinable_string/0.1.15/download"], + strip_prefix = "inlinable_string-0.1.15", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.inlinable_string-0.1.15.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__inotify-0.11.5", + sha256 = "4cc00ea907cab49550b7da656f80ebb97be1b997d931fbcd28d39734e17ce592", + type = "tar.gz", + urls = ["https://static.crates.io/crates/inotify/0.11.5/download"], + strip_prefix = "inotify-0.11.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.inotify-0.11.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__inotify-sys-0.1.8", + sha256 = "c033f80b2c113cdf91ab7a33faa9cbc014726dcad99880c8609af2a370edf37d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/inotify-sys/0.1.8/download"], + strip_prefix = "inotify-sys-0.1.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.inotify-sys-0.1.8.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__intrusive-collections-0.10.3", + sha256 = "4275b20e6057cd7733fd8df8a5a31701e4fe44497dad0f3fa0e1c4fb971506be", + type = "tar.gz", + urls = ["https://static.crates.io/crates/intrusive-collections/0.10.3/download"], + strip_prefix = "intrusive-collections-0.10.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.intrusive-collections-0.10.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__inventory-0.3.24", + sha256 = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/inventory/0.3.24/download"], + strip_prefix = "inventory-0.3.24", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.inventory-0.3.24.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__is_terminal_polyfill-1.70.2", + sha256 = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695", + type = "tar.gz", + urls = ["https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download"], + strip_prefix = "is_terminal_polyfill-1.70.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.is_terminal_polyfill-1.70.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__itertools-0.15.0", + sha256 = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/itertools/0.15.0/download"], + strip_prefix = "itertools-0.15.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.itertools-0.15.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__itoa-1.0.18", + sha256 = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682", + type = "tar.gz", + urls = ["https://static.crates.io/crates/itoa/1.0.18/download"], + strip_prefix = "itoa-1.0.18", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.itoa-1.0.18.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__jiff-0.2.37", + sha256 = "0ab1baf72f08796de0260609515130699b890ac25f30e610ad894bc5856cafdb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/jiff/0.2.37/download"], + strip_prefix = "jiff-0.2.37", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jiff-0.2.37.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__jiff-core-0.1.1", + sha256 = "5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/jiff-core/0.1.1/download"], + strip_prefix = "jiff-core-0.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jiff-core-0.1.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__jiff-static-0.2.37", + sha256 = "378268a1116ad67ae6228701118ac9f491d78fda38a40a1f1a9e1348de6f7212", + type = "tar.gz", + urls = ["https://static.crates.io/crates/jiff-static/0.2.37/download"], + strip_prefix = "jiff-static-0.2.37", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jiff-static-0.2.37.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__jiff-tzdb-0.1.8", + sha256 = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/jiff-tzdb/0.1.8/download"], + strip_prefix = "jiff-tzdb-0.1.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jiff-tzdb-0.1.8.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__jiff-tzdb-platform-0.1.3", + sha256 = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8", + type = "tar.gz", + urls = ["https://static.crates.io/crates/jiff-tzdb-platform/0.1.3/download"], + strip_prefix = "jiff-tzdb-platform-0.1.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jiff-tzdb-platform-0.1.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__jobserver-0.1.35", + sha256 = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/jobserver/0.1.35/download"], + strip_prefix = "jobserver-0.1.35", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jobserver-0.1.35.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__jod-thread-1.0.0", + sha256 = "a037eddb7d28de1d0fc42411f501b53b75838d313908078d6698d064f3029b24", + type = "tar.gz", + 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( + http_archive, + name = "vendor_ts__js-sys-0.3.103", + sha256 = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102", + type = "tar.gz", + urls = ["https://static.crates.io/crates/js-sys/0.3.103/download"], + strip_prefix = "js-sys-0.3.103", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.js-sys-0.3.103.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__kqueue-1.2.1", + sha256 = "8d763e5b24120b4ddf50de6c92308156765aabfbbccebf401da7cff2d70a41ea", + type = "tar.gz", + urls = ["https://static.crates.io/crates/kqueue/1.2.1/download"], + strip_prefix = "kqueue-1.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.kqueue-1.2.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__kqueue-sys-1.1.2", + sha256 = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087", + type = "tar.gz", + urls = ["https://static.crates.io/crates/kqueue-sys/1.1.2/download"], + strip_prefix = "kqueue-sys-1.1.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.kqueue-sys-1.1.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__la-arena-0.3.1", + sha256 = "3752f229dcc5a481d60f385fa479ff46818033d881d2d801aa27dffcfb5e8306", + type = "tar.gz", + urls = ["https://static.crates.io/crates/la-arena/0.3.1/download"], + strip_prefix = "la-arena-0.3.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.la-arena-0.3.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__lazy_static-1.5.1", + sha256 = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/lazy_static/1.5.1/download"], + strip_prefix = "lazy_static-1.5.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.lazy_static-1.5.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__libc-0.2.189", + sha256 = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/libc/0.2.189/download"], + strip_prefix = "libc-0.2.189", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.189.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__line-index-0.1.2", + sha256 = "3e27e0ed5a392a7f5ba0b3808a2afccff16c64933312c84b57618b49d1209bd2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/line-index/0.1.2/download"], + strip_prefix = "line-index-0.1.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.line-index-0.1.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__lock_api-0.4.14", + sha256 = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965", + type = "tar.gz", + urls = ["https://static.crates.io/crates/lock_api/0.4.14/download"], + strip_prefix = "lock_api-0.4.14", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.lock_api-0.4.14.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__log-0.3.9", + sha256 = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/log/0.3.9/download"], + strip_prefix = "log-0.3.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.3.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__log-0.4.34", + sha256 = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6", + type = "tar.gz", + urls = ["https://static.crates.io/crates/log/0.4.34/download"], + strip_prefix = "log-0.4.34", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.34.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__matchers-0.2.0", + sha256 = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/matchers/0.2.0/download"], + strip_prefix = "matchers-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.matchers-0.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__memchr-2.8.3", + sha256 = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98", + type = "tar.gz", + urls = ["https://static.crates.io/crates/memchr/2.8.3/download"], + strip_prefix = "memchr-2.8.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.memchr-2.8.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__memoffset-0.9.1", + sha256 = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/memoffset/0.9.1/download"], + strip_prefix = "memoffset-0.9.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.memoffset-0.9.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__miniz_oxide-0.8.9", + sha256 = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316", + type = "tar.gz", + urls = ["https://static.crates.io/crates/miniz_oxide/0.8.9/download"], + strip_prefix = "miniz_oxide-0.8.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.miniz_oxide-0.8.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__mio-1.2.3", + sha256 = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8", + type = "tar.gz", + urls = ["https://static.crates.io/crates/mio/1.2.3/download"], + strip_prefix = "mio-1.2.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.mio-1.2.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__miow-0.6.1", + sha256 = "536bfad37a309d62069485248eeaba1e8d9853aaf951caaeaed0585a95346f08", + type = "tar.gz", + urls = ["https://static.crates.io/crates/miow/0.6.1/download"], + strip_prefix = "miow-0.6.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.miow-0.6.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__mustache-0.9.0", + sha256 = "51956ef1c5d20a1384524d91e616fb44dfc7d8f249bf696d49c97dd3289ecab5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/mustache/0.9.0/download"], + strip_prefix = "mustache-0.9.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.mustache-0.9.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__nohash-hasher-0.2.0", + sha256 = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451", + type = "tar.gz", + urls = ["https://static.crates.io/crates/nohash-hasher/0.2.0/download"], + strip_prefix = "nohash-hasher-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.nohash-hasher-0.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__notify-8.2.0", + sha256 = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/notify/8.2.0/download"], + strip_prefix = "notify-8.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.notify-8.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__notify-types-2.1.0", + sha256 = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/notify-types/2.1.0/download"], + strip_prefix = "notify-types-2.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.notify-types-2.1.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__nu-ansi-term-0.50.3", + sha256 = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/nu-ansi-term/0.50.3/download"], + strip_prefix = "nu-ansi-term-0.50.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.nu-ansi-term-0.50.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__num-conv-0.2.2", + sha256 = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441", + type = "tar.gz", + urls = ["https://static.crates.io/crates/num-conv/0.2.2/download"], + strip_prefix = "num-conv-0.2.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num-conv-0.2.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__num-traits-0.2.19", + sha256 = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841", + type = "tar.gz", + urls = ["https://static.crates.io/crates/num-traits/0.2.19/download"], + strip_prefix = "num-traits-0.2.19", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num-traits-0.2.19.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__num_cpus-1.17.0", + sha256 = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b", + type = "tar.gz", + 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( + http_archive, + name = "vendor_ts__num_threads-0.1.7", + sha256 = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/num_threads/0.1.7/download"], + strip_prefix = "num_threads-0.1.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num_threads-0.1.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__once_cell-1.21.4", + sha256 = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50", + type = "tar.gz", + urls = ["https://static.crates.io/crates/once_cell/1.21.4/download"], + strip_prefix = "once_cell-1.21.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.once_cell-1.21.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__once_cell_polyfill-1.70.2", + sha256 = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe", + type = "tar.gz", + urls = ["https://static.crates.io/crates/once_cell_polyfill/1.70.2/download"], + strip_prefix = "once_cell_polyfill-1.70.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.once_cell_polyfill-1.70.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__oorandom-11.1.5", + sha256 = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/oorandom/11.1.5/download"], + strip_prefix = "oorandom-11.1.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.oorandom-11.1.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__os_str_bytes-7.2.0", + sha256 = "89284d0c2af7b0eb5e814798aa07265413c8fd72009f7fc82ea25a81fb287ce9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/os_str_bytes/7.2.0/download"], + strip_prefix = "os_str_bytes-7.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.os_str_bytes-7.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__parking_lot-0.12.5", + sha256 = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/parking_lot/0.12.5/download"], + strip_prefix = "parking_lot-0.12.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.parking_lot-0.12.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__parking_lot_core-0.9.12", + sha256 = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/parking_lot_core/0.9.12/download"], + strip_prefix = "parking_lot_core-0.9.12", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.parking_lot_core-0.9.12.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__pear-0.2.9", + sha256 = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467", + type = "tar.gz", + urls = ["https://static.crates.io/crates/pear/0.2.9/download"], + strip_prefix = "pear-0.2.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pear-0.2.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__pear_codegen-0.2.9", + sha256 = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147", + type = "tar.gz", + urls = ["https://static.crates.io/crates/pear_codegen/0.2.9/download"], + strip_prefix = "pear_codegen-0.2.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pear_codegen-0.2.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__perf-event-0.4.8", + sha256 = "b4d6393d9238342159080d79b78cb59c67399a8e7ecfa5d410bd614169e4e823", + type = "tar.gz", + urls = ["https://static.crates.io/crates/perf-event/0.4.8/download"], + strip_prefix = "perf-event-0.4.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.perf-event-0.4.8.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__perf-event-open-sys-4.0.0", + sha256 = "7c44fb1c7651a45a3652c4afc6e754e40b3d6e6556f1487e2b230bfc4f33c2a8", + type = "tar.gz", + urls = ["https://static.crates.io/crates/perf-event-open-sys/4.0.0/download"], + strip_prefix = "perf-event-open-sys-4.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.perf-event-open-sys-4.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__petgraph-0.8.3", + sha256 = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455", + type = "tar.gz", + urls = ["https://static.crates.io/crates/petgraph/0.8.3/download"], + strip_prefix = "petgraph-0.8.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.petgraph-0.8.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__pin-project-lite-0.2.17", + sha256 = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd", + type = "tar.gz", + urls = ["https://static.crates.io/crates/pin-project-lite/0.2.17/download"], + strip_prefix = "pin-project-lite-0.2.17", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pin-project-lite-0.2.17.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__pkg-config-0.3.34", + sha256 = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548", + type = "tar.gz", + urls = ["https://static.crates.io/crates/pkg-config/0.3.34/download"], + strip_prefix = "pkg-config-0.3.34", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pkg-config-0.3.34.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__portable-atomic-1.15.0", + sha256 = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85", + type = "tar.gz", + urls = ["https://static.crates.io/crates/portable-atomic/1.15.0/download"], + strip_prefix = "portable-atomic-1.15.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.portable-atomic-1.15.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__portable-atomic-util-0.2.7", + sha256 = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618", + type = "tar.gz", + urls = ["https://static.crates.io/crates/portable-atomic-util/0.2.7/download"], + strip_prefix = "portable-atomic-util-0.2.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.portable-atomic-util-0.2.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__postcard-1.1.3", + sha256 = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24", + type = "tar.gz", + urls = ["https://static.crates.io/crates/postcard/1.1.3/download"], + strip_prefix = "postcard-1.1.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.postcard-1.1.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__powerfmt-0.2.0", + sha256 = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391", + type = "tar.gz", + urls = ["https://static.crates.io/crates/powerfmt/0.2.0/download"], + strip_prefix = "powerfmt-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.powerfmt-0.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__proc-macro2-1.0.107", + sha256 = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/proc-macro2/1.0.107/download"], + strip_prefix = "proc-macro2-1.0.107", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-1.0.107.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__proc-macro2-diagnostics-0.10.1", + sha256 = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8", + type = "tar.gz", + urls = ["https://static.crates.io/crates/proc-macro2-diagnostics/0.10.1/download"], + strip_prefix = "proc-macro2-diagnostics-0.10.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-diagnostics-0.10.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__quote-1.0.47", + sha256 = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001", + type = "tar.gz", + urls = ["https://static.crates.io/crates/quote/1.0.47/download"], + strip_prefix = "quote-1.0.47", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.quote-1.0.47.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__r-efi-6.0.0", + sha256 = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf", + type = "tar.gz", + urls = ["https://static.crates.io/crates/r-efi/6.0.0/download"], + strip_prefix = "r-efi-6.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.r-efi-6.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_abi-0.166.0", + sha256 = "e2cf1b1ffe31b6226c00b40cddfda65002b7729f9f4ed2d547b5856cdab0011c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_abi/0.166.0/download"], + strip_prefix = "ra-ap-rustc_abi-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_abi-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_ast_ir-0.166.0", + sha256 = "2ef42605e36e1305e815ccfc8830eb870f74d78534bca19a61629149536d8e98", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_ast_ir/0.166.0/download"], + strip_prefix = "ra-ap-rustc_ast_ir-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_ast_ir-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_hashes-0.166.0", + sha256 = "b9f5542968215c17275920791b2fa13a43014287506ed0450777c79845102e86", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_hashes/0.166.0/download"], + strip_prefix = "ra-ap-rustc_hashes-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_hashes-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_index-0.166.0", + sha256 = "1d9e47b9ca7d92cfb0d6653503adbabd41938b84474317397a664326b208d6c6", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_index/0.166.0/download"], + strip_prefix = "ra-ap-rustc_index-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_index_macros-0.166.0", + sha256 = "4d744a7a2852a22f06210bcff9e4667ed0cacbfbe94894cc294044d25e876341", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_index_macros/0.166.0/download"], + strip_prefix = "ra-ap-rustc_index_macros-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index_macros-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_lexer-0.166.0", + sha256 = "527c12b3731b7d0692498012810b85b2b8dfdb8b514321ed6afc434bd1c70191", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_lexer/0.166.0/download"], + strip_prefix = "ra-ap-rustc_lexer-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_lexer-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_next_trait_solver-0.166.0", + sha256 = "a7a9663a8d7c369e934aac2b74a638537ad7eb4be75b4530d765384dc071c936", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_next_trait_solver/0.166.0/download"], + strip_prefix = "ra-ap-rustc_next_trait_solver-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_next_trait_solver-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_parse_format-0.166.0", + sha256 = "2c038b7a8b0f784d4e441ad8ab991fbbdaa5e0be482e59c639a846a1c8126951", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_parse_format/0.166.0/download"], + strip_prefix = "ra-ap-rustc_parse_format-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_parse_format-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_pattern_analysis-0.166.0", + sha256 = "42ca286f90e99bb97cd9274c088f3c874a05d1ee90cabf40a3928afedabe99fd", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_pattern_analysis/0.166.0/download"], + strip_prefix = "ra-ap-rustc_pattern_analysis-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_pattern_analysis-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_type_ir-0.166.0", + sha256 = "26d6efb6008f665a9485e0afecf9f4950a6c4bedd8ddd330a9df8986a6c0160b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_type_ir/0.166.0/download"], + strip_prefix = "ra-ap-rustc_type_ir-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_type_ir-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra-ap-rustc_type_ir_macros-0.166.0", + sha256 = "5f4fd2355e2bbf1f343c730f623596efc6e465b5e3685b606a437567ebb75bf8", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra-ap-rustc_type_ir_macros/0.166.0/download"], + strip_prefix = "ra-ap-rustc_type_ir_macros-0.166.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_type_ir_macros-0.166.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_base_db-0.0.357", + sha256 = "8b3282d760382985f6dd4ecba16276aee569a37737204ac7c0ed89c21c8729c8", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.357/download"], + strip_prefix = "ra_ap_base_db-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_cfg-0.0.357", + sha256 = "7a582e2510c89eb7f25d4076a8c6c6030e14930c2da55a077a52a899da731377", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.357/download"], + strip_prefix = "ra_ap_cfg-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_edition-0.0.357", + sha256 = "9aa33cd125dfc80dcb0378a0660051682cf70e538aa1637a2131b2c7c3e5ab7f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.357/download"], + strip_prefix = "ra_ap_edition-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_hir-0.0.357", + sha256 = "0c497dea446296a1705723137ab83c777f89113ff37ffeb5ee68435cdfa33fc5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.357/download"], + strip_prefix = "ra_ap_hir-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_hir_def-0.0.357", + sha256 = "e88d7b6cb65042538387667162474e90d7490ddc879e9f1e941be168d058fbf0", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.357/download"], + strip_prefix = "ra_ap_hir_def-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_hir_expand-0.0.357", + sha256 = "81bbfffd8c4db9637382dbaeed22645f0db823f424b564f4b1ab92cdf45895bc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.357/download"], + strip_prefix = "ra_ap_hir_expand-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_hir_ty-0.0.357", + sha256 = "73c93211cc6305fdbf9efa2d231126613d1258278046448ddd488b4b9de3a657", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.357/download"], + strip_prefix = "ra_ap_hir_ty-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_ide_db-0.0.357", + sha256 = "cba53ccc856c17281d2cef962175d5fd6fa6f3c113353099046a1a5d352bcfc3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.357/download"], + strip_prefix = "ra_ap_ide_db-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_intern-0.0.357", + sha256 = "e05397faca776612001946899757a122172cf787e113c1f44927d40347767efc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.357/download"], + strip_prefix = "ra_ap_intern-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_load-cargo-0.0.357", + sha256 = "92b60d2111fdec8c1efb92e4e7b537d25d92810e7cd1f521b613de7d9356134b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.357/download"], + strip_prefix = "ra_ap_load-cargo-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_macros-0.0.357", + sha256 = "16c7ca6810542835f6347fdb636736096ec5976635aeb5234db59eabc4ad7d0a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_macros/0.0.357/download"], + strip_prefix = "ra_ap_macros-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_macros-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_mbe-0.0.357", + sha256 = "6a0c40fe51f6ecd4dc3abde43e2cda6ef8a90c6813d343f94c4435a826958eda", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.357/download"], + strip_prefix = "ra_ap_mbe-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_parser-0.0.357", + sha256 = "8d5ff48cb6ff1bfd2d970b013c8526e66e867278e31a80c400135509e599a53a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.357/download"], + strip_prefix = "ra_ap_parser-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_paths-0.0.357", + sha256 = "4fac1f33d3384bee4b71966141575f32f7804ba28981c29ce00439a7b646ff4e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.357/download"], + strip_prefix = "ra_ap_paths-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_proc_macro_api-0.0.357", + sha256 = "af67d958a5c93a9f2353d946a42a63424865cba3c8deb87a7232e3a28492134a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.357/download"], + strip_prefix = "ra_ap_proc_macro_api-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_profile-0.0.357", + sha256 = "dc08a4b422197c7c87ce0637bd2bd21efca772ce59add10e1dcb2f44a0aa5fed", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.357/download"], + strip_prefix = "ra_ap_profile-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_project_model-0.0.357", + sha256 = "0f7f30aeba69d975632204769026deeac9df0563ba1c451300d975e84240dfa5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.357/download"], + strip_prefix = "ra_ap_project_model-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_span-0.0.357", + sha256 = "6d3e2d088e6e32483147e0bd8973d8bb147c5d44318b9ca1080c6482a2051237", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_span/0.0.357/download"], + strip_prefix = "ra_ap_span-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_stdx-0.0.357", + sha256 = "752cf76786efedcceecd0d7afe5d5bbbf98577d62e9970424d435b9c940638cb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.357/download"], + strip_prefix = "ra_ap_stdx-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_syntax-0.0.357", + sha256 = "4c870c5861a7cb3b2f3cbf255aa964da6d040714127e660b2e953548224e320e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.357/download"], + strip_prefix = "ra_ap_syntax-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_syntax-bridge-0.0.357", + sha256 = "301390c995a3b7b36b3449618615200d460eb9b2bc6eac350b83b501b4203c27", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.357/download"], + strip_prefix = "ra_ap_syntax-bridge-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_test_fixture-0.0.357", + sha256 = "fc62c5ea0c3fa1e0a775f986787bb4d2b5493dd9bbaf7462bd49297289b268c1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_test_fixture/0.0.357/download"], + strip_prefix = "ra_ap_test_fixture-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_test_fixture-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_test_utils-0.0.357", + sha256 = "745aa6c6d2b55544058f393286b749803f2563f072d13370e28b01b58dc386f4", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_test_utils/0.0.357/download"], + strip_prefix = "ra_ap_test_utils-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_test_utils-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_toolchain-0.0.357", + sha256 = "1488e188ddb8a71f73095dce08c4a47ea212cd77622ec8c4e4cf00bdf04ba7c2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.357/download"], + strip_prefix = "ra_ap_toolchain-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_tt-0.0.357", + sha256 = "e06cdf663310197d3e1f5b7da0b95397627f2973211a7a5e2d8dae43bb585df2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.357/download"], + strip_prefix = "ra_ap_tt-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_vfs-0.0.357", + sha256 = "059025577f043d1e8c999ff8f90ad105eb918ffab94636bf311e508b82f0154a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.357/download"], + strip_prefix = "ra_ap_vfs-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_vfs-notify-0.0.357", + sha256 = "5f3d72d96b44cca70daeaef488f29466e60e460b2a520bd6029b32c2df3c4f5a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.357/download"], + strip_prefix = "ra_ap_vfs-notify-0.0.357", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.357.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rand-0.10.3", + sha256 = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rand/0.10.3/download"], + strip_prefix = "rand-0.10.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand-0.10.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rand_core-0.10.1", + sha256 = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rand_core/0.10.1/download"], + strip_prefix = "rand_core-0.10.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand_core-0.10.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rayon-1.12.0", + sha256 = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rayon/1.12.0/download"], + strip_prefix = "rayon-1.12.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rayon-1.12.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rayon-core-1.13.0", + sha256 = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rayon-core/1.13.0/download"], + strip_prefix = "rayon-core-1.13.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rayon-core-1.13.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__redox_syscall-0.5.18", + sha256 = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/redox_syscall/0.5.18/download"], + strip_prefix = "redox_syscall-0.5.18", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.redox_syscall-0.5.18.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ref-cast-1.0.26", + sha256 = "216e8f773d7923bcba9ceb86a86c93cabb3903a11872fc3f138c49630e50b96d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ref-cast/1.0.26/download"], + strip_prefix = "ref-cast-1.0.26", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ref-cast-1.0.26.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ref-cast-impl-1.0.26", + sha256 = "2c9283685feec7d69af75fb0e858d5e7378f33fe4fc699383b2916ab9273e03c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ref-cast-impl/1.0.26/download"], + strip_prefix = "ref-cast-impl-1.0.26", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ref-cast-impl-1.0.26.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__regex-1.13.1", + sha256 = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/regex/1.13.1/download"], + strip_prefix = "regex-1.13.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-1.13.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__regex-automata-0.4.18", + sha256 = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/regex-automata/0.4.18/download"], + strip_prefix = "regex-automata-0.4.18", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-automata-0.4.18.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__regex-syntax-0.8.11", + sha256 = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4", + type = "tar.gz", + urls = ["https://static.crates.io/crates/regex-syntax/0.8.11/download"], + strip_prefix = "regex-syntax-0.8.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-syntax-0.8.11.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rowan-0.17.0", + sha256 = "14b574c58582fa59fa43a2feb6608b8744184659f08a2e0117e4b8224d95ed61", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rowan/0.17.0/download"], + strip_prefix = "rowan-0.17.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rowan-0.17.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rustc-hash-1.1.0", + sha256 = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustc-hash/1.1.0/download"], + strip_prefix = "rustc-hash-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-hash-1.1.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rustc-hash-2.1.3", + sha256 = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustc-hash/2.1.3/download"], + strip_prefix = "rustc-hash-2.1.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-hash-2.1.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rustc-literal-escaper-0.0.7", + sha256 = "8be87abb9e40db7466e0681dc8ecd9dcfd40360cb10b4c8fe24a7c4c3669b198", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustc-literal-escaper/0.0.7/download"], + strip_prefix = "rustc-literal-escaper-0.0.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-literal-escaper-0.0.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rustc-stable-hash-0.1.2", + sha256 = "781442f29170c5c93b7185ad559492601acdc71d5bb0706f5868094f45cfcd08", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustc-stable-hash/0.1.2/download"], + strip_prefix = "rustc-stable-hash-0.1.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-stable-hash-0.1.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab", + sha256 = "486c2179b4796f65bfe2ee33679acf0927ac83ecf583ad6c91c3b4570911b9ad", + type = "tar.gz", + 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( + http_archive, + name = "vendor_ts__rustversion-1.0.23", + sha256 = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustversion/1.0.23/download"], + strip_prefix = "rustversion-1.0.23", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustversion-1.0.23.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ryu-1.0.23", + sha256 = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ryu/1.0.23/download"], + strip_prefix = "ryu-1.0.23", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ryu-1.0.23.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__salsa-0.28.5", + sha256 = "27d2e6e19e39591cd99c01ac4141544b4d012cfd0831348629b8187fa9fe6d34", + type = "tar.gz", + urls = ["https://static.crates.io/crates/salsa/0.28.5/download"], + strip_prefix = "salsa-0.28.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-0.28.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__salsa-macro-rules-0.28.5", + sha256 = "baf90a551c38f25ed8489111d3d5827aa18e1b85963f5e6a298505b1d1e2cb7e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/salsa-macro-rules/0.28.5/download"], + strip_prefix = "salsa-macro-rules-0.28.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macro-rules-0.28.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__salsa-macros-0.28.5", + sha256 = "69dd77f86ec10e72e314f4ddf7c44c8d349e73cdff1aad524ba9668603fb0549", + type = "tar.gz", + urls = ["https://static.crates.io/crates/salsa-macros/0.28.5/download"], + strip_prefix = "salsa-macros-0.28.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macros-0.28.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__same-file-1.0.6", + sha256 = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502", + type = "tar.gz", + urls = ["https://static.crates.io/crates/same-file/1.0.6/download"], + strip_prefix = "same-file-1.0.6", + 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__schemars-1.2.2", + sha256 = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/schemars/1.2.2/download"], + strip_prefix = "schemars-1.2.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.schemars-1.2.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__scopeguard-1.2.0", + sha256 = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49", + type = "tar.gz", + urls = ["https://static.crates.io/crates/scopeguard/1.2.0/download"], + strip_prefix = "scopeguard-1.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.scopeguard-1.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__semver-1.0.28", + sha256 = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd", + type = "tar.gz", + urls = ["https://static.crates.io/crates/semver/1.0.28/download"], + strip_prefix = "semver-1.0.28", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.semver-1.0.28.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde-1.0.229", + sha256 = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde/1.0.229/download"], + strip_prefix = "serde-1.0.229", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-1.0.229.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde_core-1.0.229", + sha256 = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_core/1.0.229/download"], + strip_prefix = "serde_core-1.0.229", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_core-1.0.229.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde_derive-1.0.229", + sha256 = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_derive/1.0.229/download"], + strip_prefix = "serde_derive-1.0.229", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_derive-1.0.229.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde_json-1.0.151", + sha256 = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_json/1.0.151/download"], + strip_prefix = "serde_json-1.0.151", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_json-1.0.151.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde_spanned-1.1.1", + sha256 = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_spanned/1.1.1/download"], + strip_prefix = "serde_spanned-1.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_spanned-1.1.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde_with-3.24.0", + sha256 = "df9adc193c780ef8f159aee8b61e2d5801aaa555e6eb0947fe45530ec506296f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_with/3.24.0/download"], + strip_prefix = "serde_with-3.24.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with-3.24.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde_with_macros-3.24.0", + sha256 = "3e17bbc68e28663bbbb90df47e058aa7eda4fb445b89fe70457bb94fbccf6e49", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_with_macros/3.24.0/download"], + strip_prefix = "serde_with_macros-3.24.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with_macros-3.24.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde_yaml-0.9.34-deprecated", + sha256 = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_yaml/0.9.34+deprecated/download"], + strip_prefix = "serde_yaml-0.9.34+deprecated", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_yaml-0.9.34+deprecated.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__sharded-slab-0.1.7", + sha256 = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6", + type = "tar.gz", + urls = ["https://static.crates.io/crates/sharded-slab/0.1.7/download"], + strip_prefix = "sharded-slab-0.1.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.sharded-slab-0.1.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__shlex-2.0.1", + sha256 = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba", + type = "tar.gz", + urls = ["https://static.crates.io/crates/shlex/2.0.1/download"], + strip_prefix = "shlex-2.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.shlex-2.0.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__simd-adler32-0.3.9", + sha256 = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214", + type = "tar.gz", + urls = ["https://static.crates.io/crates/simd-adler32/0.3.9/download"], + strip_prefix = "simd-adler32-0.3.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.simd-adler32-0.3.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__slab-0.4.12", + sha256 = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/slab/0.4.12/download"], + strip_prefix = "slab-0.4.12", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.slab-0.4.12.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__smallvec-1.16.1", + sha256 = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891", + type = "tar.gz", + urls = ["https://static.crates.io/crates/smallvec/1.16.1/download"], + strip_prefix = "smallvec-1.16.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.smallvec-1.16.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__smol_str-0.3.6", + sha256 = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523", + type = "tar.gz", + urls = ["https://static.crates.io/crates/smol_str/0.3.6/download"], + strip_prefix = "smol_str-0.3.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.smol_str-0.3.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__stable_deref_trait-1.2.1", + sha256 = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596", + type = "tar.gz", + urls = ["https://static.crates.io/crates/stable_deref_trait/1.2.1/download"], + strip_prefix = "stable_deref_trait-1.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.stable_deref_trait-1.2.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__streaming-iterator-0.1.9", + sha256 = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520", + type = "tar.gz", + urls = ["https://static.crates.io/crates/streaming-iterator/0.1.9/download"], + strip_prefix = "streaming-iterator-0.1.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.streaming-iterator-0.1.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__strsim-0.11.1", + sha256 = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/strsim/0.11.1/download"], + strip_prefix = "strsim-0.11.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.strsim-0.11.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__syn-2.0.119", + sha256 = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297", + type = "tar.gz", + urls = ["https://static.crates.io/crates/syn/2.0.119/download"], + strip_prefix = "syn-2.0.119", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-2.0.119.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__syn-3.0.6", + sha256 = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee", + type = "tar.gz", + urls = ["https://static.crates.io/crates/syn/3.0.6/download"], + strip_prefix = "syn-3.0.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-3.0.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__synstructure-0.13.2", + sha256 = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/synstructure/0.13.2/download"], + strip_prefix = "synstructure-0.13.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.synstructure-0.13.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__text-size-1.1.1", + sha256 = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233", + type = "tar.gz", + urls = ["https://static.crates.io/crates/text-size/1.1.1/download"], + strip_prefix = "text-size-1.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.text-size-1.1.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__thin-vec-0.2.19", + sha256 = "79def32ffcd477db1ff26f76dab9e3a91f0bd42a85ca96577089b24623056f9d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/thin-vec/0.2.19/download"], + strip_prefix = "thin-vec-0.2.19", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thin-vec-0.2.19.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__thiserror-2.0.20", + sha256 = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/thiserror/2.0.20/download"], + strip_prefix = "thiserror-2.0.20", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-2.0.20.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__thiserror-impl-2.0.20", + sha256 = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af", + type = "tar.gz", + urls = ["https://static.crates.io/crates/thiserror-impl/2.0.20/download"], + strip_prefix = "thiserror-impl-2.0.20", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-impl-2.0.20.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__thread_local-1.1.10", + sha256 = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070", + type = "tar.gz", + urls = ["https://static.crates.io/crates/thread_local/1.1.10/download"], + strip_prefix = "thread_local-1.1.10", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thread_local-1.1.10.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__time-0.3.55", + sha256 = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134", + type = "tar.gz", + urls = ["https://static.crates.io/crates/time/0.3.55/download"], + strip_prefix = "time-0.3.55", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-0.3.55.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__time-core-0.1.9", + sha256 = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109", + type = "tar.gz", + urls = ["https://static.crates.io/crates/time-core/0.1.9/download"], + strip_prefix = "time-core-0.1.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-core-0.1.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__time-macros-0.2.32", + sha256 = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85", + type = "tar.gz", + urls = ["https://static.crates.io/crates/time-macros/0.2.32/download"], + strip_prefix = "time-macros-0.2.32", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-macros-0.2.32.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tinyvec-1.13.3", + sha256 = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tinyvec/1.13.3/download"], + strip_prefix = "tinyvec-1.13.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tinyvec-1.13.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__toml-1.1.6-spec-1.1.0", + sha256 = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/toml/1.1.6+spec-1.1.0/download"], + strip_prefix = "toml-1.1.6+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-1.1.6+spec-1.1.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__toml_datetime-1.1.1-spec-1.1.0", + sha256 = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7", + type = "tar.gz", + urls = ["https://static.crates.io/crates/toml_datetime/1.1.1+spec-1.1.0/download"], + strip_prefix = "toml_datetime-1.1.1+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__toml_parser-1.1.3-spec-1.1.0", + sha256 = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56", + type = "tar.gz", + urls = ["https://static.crates.io/crates/toml_parser/1.1.3+spec-1.1.0/download"], + strip_prefix = "toml_parser-1.1.3+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_parser-1.1.3+spec-1.1.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__toml_writer-1.1.2-spec-1.1.0", + sha256 = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/toml_writer/1.1.2+spec-1.1.0/download"], + strip_prefix = "toml_writer-1.1.2+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_writer-1.1.2+spec-1.1.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tracing-0.1.44", + sha256 = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tracing/0.1.44/download"], + strip_prefix = "tracing-0.1.44", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-0.1.44.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tracing-attributes-0.1.31", + sha256 = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tracing-attributes/0.1.31/download"], + strip_prefix = "tracing-attributes-0.1.31", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-attributes-0.1.31.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tracing-core-0.1.36", + sha256 = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tracing-core/0.1.36/download"], + strip_prefix = "tracing-core-0.1.36", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-core-0.1.36.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tracing-flame-0.2.0", + sha256 = "0bae117ee14789185e129aaee5d93750abe67fdc5a9a62650452bfe4e122a3a9", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tracing-flame/0.2.0/download"], + strip_prefix = "tracing-flame-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-flame-0.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tracing-log-0.2.0", + sha256 = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tracing-log/0.2.0/download"], + strip_prefix = "tracing-log-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-log-0.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tracing-subscriber-0.3.23", + sha256 = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tracing-subscriber/0.3.23/download"], + strip_prefix = "tracing-subscriber-0.3.23", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-subscriber-0.3.23.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tracing-tree-0.4.1", + sha256 = "ac87aa03b6a4d5a7e4810d1a80c19601dbe0f8a837e9177f23af721c7ba7beec", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tracing-tree/0.4.1/download"], + strip_prefix = "tracing-tree-0.4.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-tree-0.4.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tree-sitter-0.26.9", + sha256 = "4dab76d0b724ba557954125188cf0633a1ca43199ced82d95c7b9c32cc3de1f3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter/0.26.9/download"], + strip_prefix = "tree-sitter-0.26.9", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-0.26.9.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tree-sitter-embedded-template-0.25.0", + sha256 = "833d528e8fcb4e49ddb04d4d6450ddb8ac08f282a58fec94ce981c9c5dbf7e3a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter-embedded-template/0.25.0/download"], + strip_prefix = "tree-sitter-embedded-template-0.25.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-embedded-template-0.25.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tree-sitter-json-0.24.8", + sha256 = "4d727acca406c0020cffc6cf35516764f36c8e3dc4408e5ebe2cb35a947ec471", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter-json/0.24.8/download"], + strip_prefix = "tree-sitter-json-0.24.8", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-json-0.24.8.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tree-sitter-language-0.1.7", + sha256 = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter-language/0.1.7/download"], + strip_prefix = "tree-sitter-language-0.1.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-language-0.1.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tree-sitter-python-0.25.0", + sha256 = "6bf85fd39652e740bf60f46f4cda9492c3a9ad75880575bf14960f775cb74a1c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter-python/0.25.0/download"], + strip_prefix = "tree-sitter-python-0.25.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-python-0.25.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tree-sitter-ql-0.23.1", + sha256 = "80b7bcaf39acefbb199417a6ec2fd0c038083ba115da3e4f4426c820dc76d386", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter-ql/0.23.1/download"], + strip_prefix = "tree-sitter-ql-0.23.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-ql-0.23.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__tree-sitter-ruby-0.23.1", + sha256 = "be0484ea4ef6bb9c575b4fdabde7e31340a8d2dbc7d52b321ac83da703249f95", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tree-sitter-ruby/0.23.1/download"], + strip_prefix = "tree-sitter-ruby-0.23.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-ruby-0.23.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__triomphe-0.1.16", + sha256 = "b40688ea6389c8171614b25491f71d4a27946e0c7ce2da1c6de27e25abf1a0ae", + type = "tar.gz", + urls = ["https://static.crates.io/crates/triomphe/0.1.16/download"], + strip_prefix = "triomphe-0.1.16", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.triomphe-0.1.16.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__typed-arena-2.0.2", + sha256 = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/typed-arena/2.0.2/download"], + strip_prefix = "typed-arena-2.0.2", + 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", + sha256 = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697", + type = "tar.gz", + urls = ["https://static.crates.io/crates/uncased/0.9.10/download"], + strip_prefix = "uncased-0.9.10", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.uncased-0.9.10.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ungrammar-1.16.1", + sha256 = "a3e5df347f0bf3ec1d670aad6ca5c6a1859cd9ea61d2113125794654ccced68f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ungrammar/1.16.1/download"], + strip_prefix = "ungrammar-1.16.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ungrammar-1.16.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__unicode-ident-1.0.24", + sha256 = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75", + type = "tar.gz", + urls = ["https://static.crates.io/crates/unicode-ident/1.0.24/download"], + strip_prefix = "unicode-ident-1.0.24", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-ident-1.0.24.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__unicode-properties-0.1.4", + sha256 = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/unicode-properties/0.1.4/download"], + strip_prefix = "unicode-properties-0.1.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-properties-0.1.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__unsafe-libyaml-0.2.11", + sha256 = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861", + type = "tar.gz", + urls = ["https://static.crates.io/crates/unsafe-libyaml/0.2.11/download"], + strip_prefix = "unsafe-libyaml-0.2.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unsafe-libyaml-0.2.11.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__utf8parse-0.2.2", + sha256 = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821", + type = "tar.gz", + urls = ["https://static.crates.io/crates/utf8parse/0.2.2/download"], + strip_prefix = "utf8parse-0.2.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.utf8parse-0.2.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__valuable-0.1.1", + sha256 = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65", + type = "tar.gz", + urls = ["https://static.crates.io/crates/valuable/0.1.1/download"], + strip_prefix = "valuable-0.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.valuable-0.1.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__version_check-0.9.5", + sha256 = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/version_check/0.9.5/download"], + strip_prefix = "version_check-0.9.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.version_check-0.9.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__walkdir-2.5.0", + sha256 = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/walkdir/2.5.0/download"], + strip_prefix = "walkdir-2.5.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.walkdir-2.5.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__wasi-0.11.1-wasi-snapshot-preview1", + sha256 = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasi/0.11.1+wasi-snapshot-preview1/download"], + strip_prefix = "wasi-0.11.1+wasi-snapshot-preview1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__wasm-bindgen-0.2.126", + sha256 = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4", + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasm-bindgen/0.2.126/download"], + strip_prefix = "wasm-bindgen-0.2.126", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-0.2.126.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__wasm-bindgen-macro-0.2.126", + sha256 = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasm-bindgen-macro/0.2.126/download"], + strip_prefix = "wasm-bindgen-macro-0.2.126", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-macro-0.2.126.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__wasm-bindgen-macro-support-0.2.126", + sha256 = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.126/download"], + strip_prefix = "wasm-bindgen-macro-support-0.2.126", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-macro-support-0.2.126.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__wasm-bindgen-shared-0.2.126", + sha256 = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24", + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasm-bindgen-shared/0.2.126/download"], + strip_prefix = "wasm-bindgen-shared-0.2.126", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-shared-0.2.126.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__winapi-util-0.1.11", + sha256 = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22", + type = "tar.gz", + urls = ["https://static.crates.io/crates/winapi-util/0.1.11/download"], + strip_prefix = "winapi-util-0.1.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winapi-util-0.1.11.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-core-0.62.2", + sha256 = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-core/0.62.2/download"], + strip_prefix = "windows-core-0.62.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-core-0.62.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-implement-0.60.2", + sha256 = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-implement/0.60.2/download"], + strip_prefix = "windows-implement-0.60.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-implement-0.60.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-interface-0.59.3", + sha256 = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-interface/0.59.3/download"], + strip_prefix = "windows-interface-0.59.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-interface-0.59.3.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-link-0.2.1", + sha256 = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-link/0.2.1/download"], + strip_prefix = "windows-link-0.2.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-link-0.2.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-result-0.4.1", + sha256 = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-result/0.4.1/download"], + strip_prefix = "windows-result-0.4.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-result-0.4.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-strings-0.5.1", + sha256 = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-strings/0.5.1/download"], + strip_prefix = "windows-strings-0.5.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-strings-0.5.1.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-sys-0.61.2", + sha256 = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-sys/0.61.2/download"], + strip_prefix = "windows-sys-0.61.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-sys-0.61.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-targets-0.53.5", + sha256 = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-targets/0.53.5/download"], + strip_prefix = "windows-targets-0.53.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-targets-0.53.5.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows_aarch64_gnullvm-0.53.1", + sha256 = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_aarch64_gnullvm/0.53.1/download"], + strip_prefix = "windows_aarch64_gnullvm-0.53.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_gnullvm-0.53.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows_aarch64_msvc-0.53.1", + sha256 = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_aarch64_msvc/0.53.1/download"], + strip_prefix = "windows_aarch64_msvc-0.53.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_msvc-0.53.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows_i686_gnu-0.53.1", + sha256 = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_i686_gnu/0.53.1/download"], + strip_prefix = "windows_i686_gnu-0.53.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnu-0.53.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows_i686_gnullvm-0.53.1", + sha256 = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_i686_gnullvm/0.53.1/download"], + strip_prefix = "windows_i686_gnullvm-0.53.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnullvm-0.53.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows_i686_msvc-0.53.1", + sha256 = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_i686_msvc/0.53.1/download"], + strip_prefix = "windows_i686_msvc-0.53.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_msvc-0.53.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows_x86_64_gnu-0.53.1", + sha256 = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_x86_64_gnu/0.53.1/download"], + strip_prefix = "windows_x86_64_gnu-0.53.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnu-0.53.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows_x86_64_gnullvm-0.53.1", + sha256 = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_x86_64_gnullvm/0.53.1/download"], + strip_prefix = "windows_x86_64_gnullvm-0.53.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnullvm-0.53.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows_x86_64_msvc-0.53.1", + sha256 = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows_x86_64_msvc/0.53.1/download"], + strip_prefix = "windows_x86_64_msvc-0.53.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_msvc-0.53.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__winnow-0.7.13", + sha256 = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf", + type = "tar.gz", + urls = ["https://static.crates.io/crates/winnow/0.7.13/download"], + strip_prefix = "winnow-0.7.13", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-0.7.13.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__winnow-1.0.4", + sha256 = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81", + type = "tar.gz", + urls = ["https://static.crates.io/crates/winnow/1.0.4/download"], + strip_prefix = "winnow-1.0.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-1.0.4.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__yansi-1.0.1", + sha256 = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049", + type = "tar.gz", + urls = ["https://static.crates.io/crates/yansi/1.0.1/download"], + strip_prefix = "yansi-1.0.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.yansi-1.0.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__zmij-1.0.23", + sha256 = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/zmij/1.0.23/download"], + strip_prefix = "zmij-1.0.23", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zmij-1.0.23.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__zstd-0.14.0", + sha256 = "bf06bd8162af0734b344780deb55b42a2429ae430870d13fcc12f238e880fe6e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/zstd/0.14.0/download"], + strip_prefix = "zstd-0.14.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zstd-0.14.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__zstd-safe-8.0.0", + sha256 = "ae42c0555055784c70058d19ba8e275528e8a99a706684868ace5da4e716a4ab", + type = "tar.gz", + urls = ["https://static.crates.io/crates/zstd-safe/8.0.0/download"], + strip_prefix = "zstd-safe-8.0.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zstd-safe-8.0.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__zstd-sys-2.1.0-zstd.1.5.7", + sha256 = "0ef0a8027ec3ee71300ab3bcbcd0393f434aa72b91ca6d635a39941deae8eea0", + type = "tar.gz", + urls = ["https://static.crates.io/crates/zstd-sys/2.1.0+zstd.1.5.7/download"], + strip_prefix = "zstd-sys-2.1.0+zstd.1.5.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zstd-sys-2.1.0+zstd.1.5.7.bazel"), ) - direct_deps = [struct(repo = "vendor_ts", is_dev_dep = False)] - direct_deps.extend(_crate_repositories()) - return direct_deps + return [ + struct(repo = "vendor_ts", is_dev_dep = False), + struct(repo = "vendor_ts__anyhow-1.0.104", is_dev_dep = False), + struct(repo = "vendor_ts__argfile-1.0.0", is_dev_dep = False), + struct(repo = "vendor_ts__chalk-ir-0.104.0", is_dev_dep = False), + struct(repo = "vendor_ts__chrono-0.4.45", is_dev_dep = False), + struct(repo = "vendor_ts__clap-4.6.7", is_dev_dep = False), + struct(repo = "vendor_ts__dunce-1.0.5", is_dev_dep = False), + struct(repo = "vendor_ts__either-1.19.0", is_dev_dep = False), + struct(repo = "vendor_ts__encoding-0.2.33", is_dev_dep = False), + struct(repo = "vendor_ts__figment-0.10.19", is_dev_dep = False), + struct(repo = "vendor_ts__flate2-1.1.9", is_dev_dep = False), + struct(repo = "vendor_ts__glob-0.3.4", is_dev_dep = False), + struct(repo = "vendor_ts__globset-0.4.18", is_dev_dep = False), + struct(repo = "vendor_ts__itertools-0.15.0", is_dev_dep = False), + struct(repo = "vendor_ts__lazy_static-1.5.1", 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.17.0", is_dev_dep = False), + struct(repo = "vendor_ts__proc-macro2-1.0.107", is_dev_dep = False), + struct(repo = "vendor_ts__quote-1.0.47", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_base_db-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_cfg-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_def-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_ide_db-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_intern-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_parser-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_paths-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_project_model-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_span-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_stdx-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_syntax-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_syntax-bridge-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_toolchain-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_vfs-0.0.357", is_dev_dep = False), + struct(repo = "vendor_ts__rayon-1.12.0", is_dev_dep = False), + struct(repo = "vendor_ts__regex-1.13.1", is_dev_dep = False), + struct(repo = "vendor_ts__serde-1.0.229", is_dev_dep = False), + struct(repo = "vendor_ts__serde_json-1.0.151", is_dev_dep = False), + struct(repo = "vendor_ts__serde_with-3.24.0", is_dev_dep = False), + struct(repo = "vendor_ts__serde_yaml-0.9.34-deprecated", is_dev_dep = False), + struct(repo = "vendor_ts__syn-3.0.6", is_dev_dep = False), + struct(repo = "vendor_ts__toml-1.1.6-spec-1.1.0", is_dev_dep = False), + struct(repo = "vendor_ts__tracing-0.1.44", 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.23", is_dev_dep = False), + struct(repo = "vendor_ts__tree-sitter-0.26.9", is_dev_dep = False), + struct(repo = "vendor_ts__tree-sitter-embedded-template-0.25.0", is_dev_dep = False), + struct(repo = "vendor_ts__tree-sitter-python-0.25.0", is_dev_dep = False), + struct(repo = "vendor_ts__tree-sitter-ruby-0.23.1", is_dev_dep = False), + struct(repo = "vendor_ts__triomphe-0.1.16", is_dev_dep = False), + struct(repo = "vendor_ts__ungrammar-1.16.1", is_dev_dep = False), + struct(repo = "vendor_ts__zstd-0.14.0", is_dev_dep = False), + struct(repo = "vendor_ts__rand-0.10.3", 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/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl index 9ba4c05d3ebe..6e5c75f885e5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -5,4252 +5,19 @@ # # bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors ############################################################################### -""" -# `crates_repository` API - -- [aliases](#aliases) -- [crate_deps](#crate_deps) -- [all_crate_deps](#all_crate_deps) -- [crate_repositories](#crate_repositories) - -""" - -load("@bazel_skylib//lib:selects.bzl", "selects") -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") - -############################################################################### -# MACROS API -############################################################################### - -# An identifier that represent common dependencies (unconditional). -_COMMON_CONDITION = "" - -def _flatten_dependency_maps(all_dependency_maps): - """Flatten a list of dependency maps into one dictionary. - - Dependency maps have the following structure: - - ```python - DEPENDENCIES_MAP = { - # The first key in the map is a Bazel package - # name of the workspace this file is defined in. - "workspace_member_package": { - - # Not all dependencies are supported for all platforms. - # the condition key is the condition required to be true - # on the host platform. - "condition": { - - # An alias to a crate target. # The label of the crate target the - # Aliases are only crate names. # package name refers to. - "package_name": "@full//:label", - } - } - } - ``` - - Args: - all_dependency_maps (list): A list of dicts as described above - - Returns: - dict: A dictionary as described above - """ - dependencies = {} - - for workspace_deps_map in all_dependency_maps: - for pkg_name, conditional_deps_map in workspace_deps_map.items(): - if pkg_name not in dependencies: - non_frozen_map = dict() - for key, values in conditional_deps_map.items(): - non_frozen_map.update({key: dict(values.items())}) - dependencies.setdefault(pkg_name, non_frozen_map) - continue - - for condition, deps_map in conditional_deps_map.items(): - # If the condition has not been recorded, do so and continue - if condition not in dependencies[pkg_name]: - dependencies[pkg_name].setdefault(condition, dict(deps_map.items())) - continue - - # Alert on any miss-matched dependencies - inconsistent_entries = [] - for crate_name, crate_label in deps_map.items(): - existing = dependencies[pkg_name][condition].get(crate_name) - if existing and existing != crate_label: - inconsistent_entries.append((crate_name, existing, crate_label)) - dependencies[pkg_name][condition].update({crate_name: crate_label}) - - return dependencies - -def crate_deps(deps, package_name = None): - """Finds the fully qualified label of the requested crates for the package where this macro is called. - - Args: - deps (list): The desired list of crate targets. - package_name (str, optional): The package name of the set of dependencies to look up. - Defaults to `native.package_name()`. - - Returns: - list: A list of labels to generated rust targets (str) - """ - - if not deps: - return [] - - if package_name == None: - package_name = native.package_name() - - # Join both sets of dependencies - dependencies = _flatten_dependency_maps([ - _NORMAL_DEPENDENCIES, - _NORMAL_DEV_DEPENDENCIES, - _PROC_MACRO_DEPENDENCIES, - _PROC_MACRO_DEV_DEPENDENCIES, - _BUILD_DEPENDENCIES, - _BUILD_PROC_MACRO_DEPENDENCIES, - ]).pop(package_name, {}) - - # Combine all conditional packages so we can easily index over a flat list - # TODO: Perhaps this should actually return select statements and maintain - # the conditionals of the dependencies - flat_deps = {} - for deps_set in dependencies.values(): - for crate_name, crate_label in deps_set.items(): - flat_deps.update({crate_name: crate_label}) - - missing_crates = [] - crate_targets = [] - for crate_target in deps: - if crate_target not in flat_deps: - missing_crates.append(crate_target) - else: - crate_targets.append(flat_deps[crate_target]) - - if missing_crates: - fail("Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`".format( - missing_crates, - package_name, - dependencies, - )) - - return crate_targets - -def all_crate_deps( - normal = False, - normal_dev = False, - proc_macro = False, - proc_macro_dev = False, - build = False, - build_proc_macro = False, - package_name = None): - """Finds the fully qualified label of all requested direct crate dependencies \ - for the package where this macro is called. - - If no parameters are set, all normal dependencies are returned. Setting any one flag will - otherwise impact the contents of the returned list. - - Args: - normal (bool, optional): If True, normal dependencies are included in the - output list. - normal_dev (bool, optional): If True, normal dev dependencies will be - included in the output list. - proc_macro (bool, optional): If True, proc_macro dependencies are included - in the output list. - proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are - included in the output list. - build (bool, optional): If True, build dependencies are included - in the output list. - build_proc_macro (bool, optional): If True, build proc_macro dependencies are - included in the output list. - package_name (str, optional): The package name of the set of dependencies to look up. - Defaults to `native.package_name()` when unset. - - Returns: - list: A list of labels to generated rust targets (str) - """ - - if package_name == None: - package_name = native.package_name() - - # Determine the relevant maps to use - all_dependency_maps = [] - if normal: - all_dependency_maps.append(_NORMAL_DEPENDENCIES) - if normal_dev: - all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES) - if proc_macro: - all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES) - if proc_macro_dev: - all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES) - if build: - all_dependency_maps.append(_BUILD_DEPENDENCIES) - if build_proc_macro: - all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES) - - # Default to always using normal dependencies - if not all_dependency_maps: - all_dependency_maps.append(_NORMAL_DEPENDENCIES) - - dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None) - - if not dependencies: - if dependencies == None: - fail("Tried to get all_crate_deps for package " + package_name + " but that package had no Cargo.toml file") - else: - return [] - - crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values()) - for condition, deps in dependencies.items(): - crate_deps += selects.with_or({ - tuple(_CONDITIONS[condition]): deps.values(), - "//conditions:default": [], - }) - - return crate_deps - -def aliases( - normal = False, - normal_dev = False, - proc_macro = False, - proc_macro_dev = False, - build = False, - build_proc_macro = False, - package_name = None): - """Produces a map of Crate alias names to their original label - - If no dependency kinds are specified, `normal` and `proc_macro` are used by default. - Setting any one flag will otherwise determine the contents of the returned dict. - - Args: - normal (bool, optional): If True, normal dependencies are included in the - output list. - normal_dev (bool, optional): If True, normal dev dependencies will be - included in the output list.. - proc_macro (bool, optional): If True, proc_macro dependencies are included - in the output list. - proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are - included in the output list. - build (bool, optional): If True, build dependencies are included - in the output list. - build_proc_macro (bool, optional): If True, build proc_macro dependencies are - included in the output list. - package_name (str, optional): The package name of the set of dependencies to look up. - Defaults to `native.package_name()` when unset. - - Returns: - dict: The aliases of all associated packages - """ - if package_name == None: - package_name = native.package_name() - - # Determine the relevant maps to use - all_aliases_maps = [] - if normal: - all_aliases_maps.append(_NORMAL_ALIASES) - if normal_dev: - all_aliases_maps.append(_NORMAL_DEV_ALIASES) - if proc_macro: - all_aliases_maps.append(_PROC_MACRO_ALIASES) - if proc_macro_dev: - all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES) - if build: - all_aliases_maps.append(_BUILD_ALIASES) - if build_proc_macro: - all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES) - - # Default to always using normal aliases - if not all_aliases_maps: - all_aliases_maps.append(_NORMAL_ALIASES) - all_aliases_maps.append(_PROC_MACRO_ALIASES) - - aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None) - - if not aliases: - return dict() - - common_items = aliases.pop(_COMMON_CONDITION, {}).items() - - # If there are only common items in the dictionary, immediately return them - if not len(aliases.keys()) == 1: - return dict(common_items) - - # Build a single select statement where each conditional has accounted for the - # common set of aliases. - crate_aliases = {"//conditions:default": dict(common_items)} - for condition, deps in aliases.items(): - condition_triples = _CONDITIONS[condition] - for triple in condition_triples: - if triple in crate_aliases: - crate_aliases[triple].update(deps) - else: - crate_aliases.update({triple: dict(deps.items() + common_items)}) - - return select(crate_aliases) - -############################################################################### -# WORKSPACE MEMBER DEPS AND ALIASES -############################################################################### - -_NORMAL_DEPENDENCIES = { - "ruby/extractor": { - _COMMON_CONDITION: { - "clap": Label("@vendor_ts__clap-4.6.1//: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.12.0//:rayon"), - "regex": Label("@vendor_ts__regex-1.12.3//:regex"), - "serde_json": Label("@vendor_ts__serde_json-1.0.150//:serde_json"), - "tracing": Label("@vendor_ts__tracing-0.1.44//:tracing"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber"), - "tree-sitter": Label("@vendor_ts__tree-sitter-0.26.9//:tree_sitter"), - "tree-sitter-embedded-template": Label("@vendor_ts__tree-sitter-embedded-template-0.25.0//:tree_sitter_embedded_template"), - "tree-sitter-ruby": Label("@vendor_ts__tree-sitter-ruby-0.23.1//:tree_sitter_ruby"), - }, - }, - "rust/ast-generator": { - _COMMON_CONDITION: { - "anyhow": Label("@vendor_ts__anyhow-1.0.102//:anyhow"), - "either": Label("@vendor_ts__either-1.16.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.106//:proc_macro2"), - "quote": Label("@vendor_ts__quote-1.0.45//:quote"), - "serde": Label("@vendor_ts__serde-1.0.228//:serde"), - "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx"), - "ungrammar": Label("@vendor_ts__ungrammar-1.16.1//:ungrammar"), - }, - }, - "rust/autobuild": { - }, - "rust/extractor": { - _COMMON_CONDITION: { - "anyhow": Label("@vendor_ts__anyhow-1.0.102//:anyhow"), - "argfile": Label("@vendor_ts__argfile-1.0.0//:argfile"), - "chalk-ir": Label("@vendor_ts__chalk-ir-0.104.0//:chalk_ir"), - "chrono": Label("@vendor_ts__chrono-0.4.44//:chrono"), - "clap": Label("@vendor_ts__clap-4.6.1//: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.3//: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.328//:ra_ap_base_db"), - "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.328//:ra_ap_cfg"), - "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.328//:ra_ap_hir"), - "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.328//:ra_ap_hir_def"), - "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.328//:ra_ap_hir_expand"), - "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.328//:ra_ap_hir_ty"), - "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.328//:ra_ap_ide_db"), - "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.328//:ra_ap_intern"), - "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.328//:ra_ap_load_cargo"), - "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.328//:ra_ap_parser"), - "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.328//:ra_ap_paths"), - "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.328//:ra_ap_project_model"), - "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.328//:ra_ap_span"), - "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.328//:ra_ap_syntax"), - "ra_ap_syntax-bridge": Label("@vendor_ts__ra_ap_syntax-bridge-0.0.328//:ra_ap_syntax_bridge"), - "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.328//:ra_ap_vfs"), - "serde": Label("@vendor_ts__serde-1.0.228//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.150//:serde_json"), - "serde_with": Label("@vendor_ts__serde_with-3.20.0//:serde_with"), - "toml": Label("@vendor_ts__toml-1.1.2-spec-1.1.0//:toml"), - "tracing": Label("@vendor_ts__tracing-0.1.44//:tracing"), - "tracing-flame": Label("@vendor_ts__tracing-flame-0.2.0//:tracing_flame"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber"), - "triomphe": Label("@vendor_ts__triomphe-0.1.15//:triomphe"), - }, - }, - "rust/extractor/macros": { - _COMMON_CONDITION: { - "quote": Label("@vendor_ts__quote-1.0.45//:quote"), - "syn": Label("@vendor_ts__syn-2.0.117//:syn"), - }, - }, - "shared/tree-sitter-extractor": { - _COMMON_CONDITION: { - "chrono": Label("@vendor_ts__chrono-0.4.44//:chrono"), - "encoding": Label("@vendor_ts__encoding-0.2.33//:encoding"), - "flate2": Label("@vendor_ts__flate2-1.1.9//:flate2"), - "globset": Label("@vendor_ts__globset-0.4.18//:globset"), - "lazy_static": Label("@vendor_ts__lazy_static-1.5.0//:lazy_static"), - "num_cpus": Label("@vendor_ts__num_cpus-1.17.0//:num_cpus"), - "rayon": Label("@vendor_ts__rayon-1.12.0//:rayon"), - "regex": Label("@vendor_ts__regex-1.12.3//:regex"), - "serde": Label("@vendor_ts__serde-1.0.228//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.150//:serde_json"), - "tracing": Label("@vendor_ts__tracing-0.1.44//:tracing"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber"), - "tree-sitter": Label("@vendor_ts__tree-sitter-0.26.9//:tree_sitter"), - "zstd": Label("@vendor_ts__zstd-0.13.3//:zstd"), - }, - }, - "shared/yeast": { - _COMMON_CONDITION: { - "clap": Label("@vendor_ts__clap-4.6.1//:clap"), - "serde": Label("@vendor_ts__serde-1.0.228//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.150//:serde_json"), - "serde_yaml": Label("@vendor_ts__serde_yaml-0.9.34-deprecated//:serde_yaml"), - "tree-sitter": Label("@vendor_ts__tree-sitter-0.26.9//:tree_sitter"), - "tree-sitter-python": Label("@vendor_ts__tree-sitter-python-0.23.6//:tree_sitter_python"), - "tree-sitter-ruby": Label("@vendor_ts__tree-sitter-ruby-0.23.1//:tree_sitter_ruby"), - }, - }, - "shared/yeast-macros": { - _COMMON_CONDITION: { - "proc-macro2": Label("@vendor_ts__proc-macro2-1.0.106//:proc_macro2"), - "quote": Label("@vendor_ts__quote-1.0.45//:quote"), - "syn": Label("@vendor_ts__syn-2.0.117//:syn"), - }, - }, - "shared/yeast-schema": { - _COMMON_CONDITION: { - "serde": Label("@vendor_ts__serde-1.0.228//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.150//:serde_json"), - "serde_yaml": Label("@vendor_ts__serde_yaml-0.9.34-deprecated//:serde_yaml"), - }, - }, - "unified/extractor": { - _COMMON_CONDITION: { - "clap": Label("@vendor_ts__clap-4.6.1//: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.12.0//:rayon"), - "regex": Label("@vendor_ts__regex-1.12.3//:regex"), - "serde_json": Label("@vendor_ts__serde_json-1.0.150//:serde_json"), - "tracing": Label("@vendor_ts__tracing-0.1.44//:tracing"), - "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber"), - }, - }, - "unified/swift-syntax-rs": { - _COMMON_CONDITION: { - }, - }, -} - -_NORMAL_ALIASES = { - "ruby/extractor": { - _COMMON_CONDITION: { - }, - }, - "rust/ast-generator": { - _COMMON_CONDITION: { - Label("@vendor_ts__ra_ap_stdx-0.0.328//:ra_ap_stdx"): "stdx", - }, - }, - "rust/autobuild": { - }, - "rust/extractor": { - _COMMON_CONDITION: { - }, - }, - "rust/extractor/macros": { - _COMMON_CONDITION: { - }, - }, - "shared/tree-sitter-extractor": { - _COMMON_CONDITION: { - }, - }, - "shared/yeast": { - _COMMON_CONDITION: { - }, - }, - "shared/yeast-macros": { - _COMMON_CONDITION: { - }, - }, - "shared/yeast-schema": { - _COMMON_CONDITION: { - }, - }, - "unified/extractor": { - _COMMON_CONDITION: { - }, - }, - "unified/swift-syntax-rs": { - _COMMON_CONDITION: { - }, - }, -} - -_NORMAL_DEV_DEPENDENCIES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - _COMMON_CONDITION: { - "rand": Label("@vendor_ts__rand-0.10.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"), - }, - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_NORMAL_DEV_ALIASES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - _COMMON_CONDITION: { - }, - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_PROC_MACRO_DEPENDENCIES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_PROC_MACRO_ALIASES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_PROC_MACRO_DEV_DEPENDENCIES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_PROC_MACRO_DEV_ALIASES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - _COMMON_CONDITION: { - }, - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_BUILD_DEPENDENCIES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_BUILD_ALIASES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_BUILD_PROC_MACRO_DEPENDENCIES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_BUILD_PROC_MACRO_ALIASES = { - "ruby/extractor": { - }, - "rust/ast-generator": { - }, - "rust/autobuild": { - }, - "rust/extractor": { - }, - "rust/extractor/macros": { - }, - "shared/tree-sitter-extractor": { - }, - "shared/yeast": { - }, - "shared/yeast-macros": { - }, - "shared/yeast-schema": { - }, - "unified/extractor": { - }, - "unified/swift-syntax-rs": { - }, -} - -_CONDITIONS = { - "aarch64-apple-darwin": ["@rules_rust//rust/platform:aarch64-apple-darwin"], - "aarch64-apple-ios": ["@rules_rust//rust/platform:aarch64-apple-ios"], - "aarch64-apple-ios-sim": ["@rules_rust//rust/platform:aarch64-apple-ios-sim"], - "aarch64-linux-android": ["@rules_rust//rust/platform:aarch64-linux-android"], - "aarch64-pc-windows-gnullvm": [], - "aarch64-pc-windows-msvc": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], - "aarch64-unknown-fuchsia": ["@rules_rust//rust/platform:aarch64-unknown-fuchsia"], - "aarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"], - "aarch64-unknown-nixos-gnu": ["@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"], - "aarch64-unknown-nto-qnx710": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"], - "aarch64-unknown-uefi": ["@rules_rust//rust/platform:aarch64-unknown-uefi"], - "arm-unknown-linux-gnueabi": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi"], - "arm-unknown-linux-musleabi": ["@rules_rust//rust/platform:arm-unknown-linux-musleabi"], - "armv7-linux-androideabi": ["@rules_rust//rust/platform:armv7-linux-androideabi"], - "armv7-unknown-linux-gnueabi": ["@rules_rust//rust/platform:armv7-unknown-linux-gnueabi"], - "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], - "cfg(all(any(target_os = \"linux\", target_os = \"android\"), not(any(all(target_os = \"linux\", target_env = \"\"), getrandom_backend = \"custom\", getrandom_backend = \"linux_raw\", getrandom_backend = \"rdrand\", getrandom_backend = \"rndr\"))))": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], - "cfg(all(target_arch = \"aarch64\", target_os = \"android\"))": ["@rules_rust//rust/platform:aarch64-linux-android"], - "cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"], - "cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim"], - "cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))": [], - "cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], - "cfg(all(target_arch = \"wasm32\", target_os = \"wasi\", target_env = \"p2\"))": ["@rules_rust//rust/platform:wasm32-wasip2"], - "cfg(all(target_arch = \"wasm32\", target_os = \"wasi\", target_env = \"p3\"))": [], - "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], - "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], - "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(all(target_os = \"linux\", not(target_env = \"ohos\"), any(target_arch = \"x86\", target_arch = \"x86_64\", target_arch = \"aarch64\")))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(all(target_os = \"linux\", target_env = \"gnu\"))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(all(target_os = \"uefi\", getrandom_backend = \"efi_rng\"))": [], - "cfg(any())": [], - "cfg(any(target_arch = \"x86_64\", target_arch = \"x86\"))": ["@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: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"], - "cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"hurd\", target_os = \"illumos\", target_os = \"cygwin\", all(target_os = \"horizon\", target_arch = \"arm\")))": ["@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], - "cfg(any(target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\", target_os = \"dragonflybsd\", target_os = \"ios\"))": ["@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], - "cfg(any(target_os = \"haiku\", target_os = \"redox\", target_os = \"nto\", target_os = \"aix\"))": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"], - "cfg(any(target_os = \"ios\", target_os = \"visionos\", target_os = \"watchos\", target_os = \"tvos\"))": ["@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:x86_64-apple-ios"], - "cfg(any(target_os = \"linux\", target_os = \"android\"))": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(any(target_os = \"macos\", target_os = \"ios\", target_os = \"freebsd\"))": ["@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:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], - "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:wasm32-unknown-emscripten", "@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:arm-unknown-linux-musleabi", "@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-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], - "cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))": ["@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:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@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:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2", "@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"], - "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:arm-unknown-linux-musleabi", "@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-linux-gnu", "@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-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2", "@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_arch = \"x86_64\")": ["@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"], - "cfg(target_family = \"wasm\")": ["@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], - "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\")": [], - "cfg(target_os = \"hermit\")": [], - "cfg(target_os = \"macos\")": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin"], - "cfg(target_os = \"netbsd\")": [], - "cfg(target_os = \"redox\")": [], - "cfg(target_os = \"solaris\")": [], - "cfg(target_os = \"vxworks\")": [], - "cfg(target_os = \"wasi\")": ["@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], - "cfg(target_os = \"windows\")": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], - "cfg(target_vendor = \"apple\")": ["@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(unix)": ["@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:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:arm-unknown-linux-musleabi", "@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:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@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"], - "cfg(windows)": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], - "cfg(windows_raw_dylib)": [], - "i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"], - "i686-linux-android": ["@rules_rust//rust/platform:i686-linux-android"], - "i686-pc-windows-gnullvm": [], - "i686-pc-windows-msvc": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], - "i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"], - "i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], - "powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"], - "riscv32i-unknown-none-elf": [], - "riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"], - "riscv64gc-unknown-linux-gnu": ["@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu"], - "riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"], - "s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"], - "thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"], - "thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"], - "wasm32-unknown-emscripten": ["@rules_rust//rust/platform:wasm32-unknown-emscripten"], - "wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], - "wasm32-wasip1": ["@rules_rust//rust/platform:wasm32-wasip1"], - "wasm32-wasip1-threads": ["@rules_rust//rust/platform:wasm32-wasip1-threads"], - "wasm32-wasip2": ["@rules_rust//rust/platform:wasm32-wasip2"], - "x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"], - "x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"], - "x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"], - "x86_64-pc-windows-gnullvm": [], - "x86_64-pc-windows-msvc": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], - "x86_64-unknown-freebsd": ["@rules_rust//rust/platform:x86_64-unknown-freebsd"], - "x86_64-unknown-fuchsia": ["@rules_rust//rust/platform:x86_64-unknown-fuchsia"], - "x86_64-unknown-linux-gnu": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "x86_64-unknown-nixos-gnu": ["@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "x86_64-unknown-none": ["@rules_rust//rust/platform:x86_64-unknown-none"], - "x86_64-unknown-uefi": ["@rules_rust//rust/platform:x86_64-unknown-uefi"], - "xtensa-esp32s2-none-elf": [], -} - -############################################################################### - -def crate_repositories(): - """A macro for defining repositories for all generated crates. - - Returns: - A list of repos visible to the module through the module extension. - """ - maybe( - http_archive, - name = "vendor_ts__adler2-2.0.1", - sha256 = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa", - type = "tar.gz", - urls = ["https://static.crates.io/crates/adler2/2.0.1/download"], - strip_prefix = "adler2-2.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.adler2-2.0.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__aho-corasick-1.1.4", - sha256 = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301", - type = "tar.gz", - urls = ["https://static.crates.io/crates/aho-corasick/1.1.4/download"], - strip_prefix = "aho-corasick-1.1.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.aho-corasick-1.1.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__allocator-api2-0.2.21", - sha256 = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923", - type = "tar.gz", - urls = ["https://static.crates.io/crates/allocator-api2/0.2.21/download"], - strip_prefix = "allocator-api2-0.2.21", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.allocator-api2-0.2.21.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__android_system_properties-0.1.5", - sha256 = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311", - type = "tar.gz", - urls = ["https://static.crates.io/crates/android_system_properties/0.1.5/download"], - strip_prefix = "android_system_properties-0.1.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.android_system_properties-0.1.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__anstream-1.0.0", - sha256 = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstream/1.0.0/download"], - strip_prefix = "anstream-1.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstream-1.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__anstyle-1.0.14", - sha256 = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle/1.0.14/download"], - strip_prefix = "anstyle-1.0.14", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-1.0.14.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__anstyle-parse-1.0.0", - sha256 = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle-parse/1.0.0/download"], - strip_prefix = "anstyle-parse-1.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-parse-1.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__anstyle-query-1.1.5", - sha256 = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle-query/1.1.5/download"], - strip_prefix = "anstyle-query-1.1.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-query-1.1.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__anstyle-wincon-3.0.11", - sha256 = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anstyle-wincon/3.0.11/download"], - strip_prefix = "anstyle-wincon-3.0.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anstyle-wincon-3.0.11.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__anyhow-1.0.102", - sha256 = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/anyhow/1.0.102/download"], - strip_prefix = "anyhow-1.0.102", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anyhow-1.0.102.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__argfile-1.0.0", - sha256 = "99489a733dea0d2930bfa59c243146a8513ce7b0991b9d006647687cc61f53e7", - type = "tar.gz", - urls = ["https://static.crates.io/crates/argfile/1.0.0/download"], - strip_prefix = "argfile-1.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.argfile-1.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__arrayvec-0.7.6", - sha256 = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50", - type = "tar.gz", - urls = ["https://static.crates.io/crates/arrayvec/0.7.6/download"], - strip_prefix = "arrayvec-0.7.6", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.arrayvec-0.7.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__atomic-0.6.1", - sha256 = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340", - type = "tar.gz", - urls = ["https://static.crates.io/crates/atomic/0.6.1/download"], - strip_prefix = "atomic-0.6.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.atomic-0.6.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__atomic-polyfill-1.0.3", - sha256 = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4", - type = "tar.gz", - urls = ["https://static.crates.io/crates/atomic-polyfill/1.0.3/download"], - strip_prefix = "atomic-polyfill-1.0.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.atomic-polyfill-1.0.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__autocfg-1.5.1", - sha256 = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53", - type = "tar.gz", - urls = ["https://static.crates.io/crates/autocfg/1.5.1/download"], - strip_prefix = "autocfg-1.5.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.autocfg-1.5.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__base64-0.22.1", - sha256 = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6", - type = "tar.gz", - urls = ["https://static.crates.io/crates/base64/0.22.1/download"], - strip_prefix = "base64-0.22.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.base64-0.22.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__bitflags-2.11.1", - sha256 = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/bitflags/2.11.1/download"], - strip_prefix = "bitflags-2.11.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.11.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__borsh-1.6.1", - sha256 = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/borsh/1.6.1/download"], - strip_prefix = "borsh-1.6.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.borsh-1.6.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__boxcar-0.2.14", - sha256 = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/boxcar/0.2.14/download"], - strip_prefix = "boxcar-0.2.14", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.boxcar-0.2.14.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__bs58-0.5.1", - sha256 = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4", - type = "tar.gz", - urls = ["https://static.crates.io/crates/bs58/0.5.1/download"], - strip_prefix = "bs58-0.5.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bs58-0.5.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__bstr-1.12.1", - sha256 = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab", - type = "tar.gz", - urls = ["https://static.crates.io/crates/bstr/1.12.1/download"], - strip_prefix = "bstr-1.12.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bstr-1.12.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__bumpalo-3.20.2", - sha256 = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb", - type = "tar.gz", - urls = ["https://static.crates.io/crates/bumpalo/3.20.2/download"], - strip_prefix = "bumpalo-3.20.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bumpalo-3.20.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__bytemuck-1.25.0", - sha256 = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec", - type = "tar.gz", - urls = ["https://static.crates.io/crates/bytemuck/1.25.0/download"], - strip_prefix = "bytemuck-1.25.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bytemuck-1.25.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__byteorder-1.5.0", - sha256 = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/byteorder/1.5.0/download"], - strip_prefix = "byteorder-1.5.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.byteorder-1.5.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__bytes-1.11.1", - sha256 = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33", - type = "tar.gz", - urls = ["https://static.crates.io/crates/bytes/1.11.1/download"], - strip_prefix = "bytes-1.11.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bytes-1.11.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__camino-1.2.2", - sha256 = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48", - type = "tar.gz", - urls = ["https://static.crates.io/crates/camino/1.2.2/download"], - strip_prefix = "camino-1.2.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.camino-1.2.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__cargo-platform-0.3.3", - sha256 = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cargo-platform/0.3.3/download"], - strip_prefix = "cargo-platform-0.3.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo-platform-0.3.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__cargo_metadata-0.23.1", - sha256 = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cargo_metadata/0.23.1/download"], - strip_prefix = "cargo_metadata-0.23.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cargo_metadata-0.23.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__cc-1.2.62", - sha256 = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cc/1.2.62/download"], - strip_prefix = "cc-1.2.62", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cc-1.2.62.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__cfg-if-1.0.4", - sha256 = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cfg-if/1.0.4/download"], - strip_prefix = "cfg-if-1.0.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cfg-if-1.0.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__cfg_aliases-0.2.1", - sha256 = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cfg_aliases/0.2.1/download"], - strip_prefix = "cfg_aliases-0.2.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cfg_aliases-0.2.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__chacha20-0.10.0", - sha256 = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601", - type = "tar.gz", - urls = ["https://static.crates.io/crates/chacha20/0.10.0/download"], - strip_prefix = "chacha20-0.10.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chacha20-0.10.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__chalk-derive-0.104.0", - sha256 = "9ea9b1e80910f66ae87c772247591432032ef3f6a67367ff17f8343db05beafa", - type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-derive/0.104.0/download"], - strip_prefix = "chalk-derive-0.104.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-derive-0.104.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__chalk-ir-0.104.0", - sha256 = "7047a516de16226cd17344d41a319d0ea1064bf9e60bd612ab341ab4a34bbfa8", - type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-ir/0.104.0/download"], - strip_prefix = "chalk-ir-0.104.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-ir-0.104.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__chrono-0.4.44", - sha256 = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0", - type = "tar.gz", - urls = ["https://static.crates.io/crates/chrono/0.4.44/download"], - strip_prefix = "chrono-0.4.44", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.44.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__clap-4.6.1", - sha256 = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51", - type = "tar.gz", - urls = ["https://static.crates.io/crates/clap/4.6.1/download"], - strip_prefix = "clap-4.6.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.6.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__clap_builder-4.6.0", - sha256 = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_builder/4.6.0/download"], - strip_prefix = "clap_builder-4.6.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.6.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__clap_derive-4.6.1", - sha256 = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_derive/4.6.1/download"], - strip_prefix = "clap_derive-4.6.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.6.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__clap_lex-1.1.0", - sha256 = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_lex/1.1.0/download"], - strip_prefix = "clap_lex-1.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_lex-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__cobs-0.3.0", - sha256 = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cobs/0.3.0/download"], - strip_prefix = "cobs-0.3.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cobs-0.3.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__colorchoice-1.0.5", - sha256 = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570", - type = "tar.gz", - urls = ["https://static.crates.io/crates/colorchoice/1.0.5/download"], - strip_prefix = "colorchoice-1.0.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.colorchoice-1.0.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__core-foundation-sys-0.8.7", - sha256 = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/core-foundation-sys/0.8.7/download"], - strip_prefix = "core-foundation-sys-0.8.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.core-foundation-sys-0.8.7.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__countme-3.0.1", - sha256 = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636", - type = "tar.gz", - urls = ["https://static.crates.io/crates/countme/3.0.1/download"], - strip_prefix = "countme-3.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.countme-3.0.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__cov-mark-2.2.0", - sha256 = "90863d8442510cddf7f46618c4f92413774635771a3e80830c8b30d183420b14", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cov-mark/2.2.0/download"], - strip_prefix = "cov-mark-2.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cov-mark-2.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__cpufeatures-0.3.0", - sha256 = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201", - type = "tar.gz", - urls = ["https://static.crates.io/crates/cpufeatures/0.3.0/download"], - strip_prefix = "cpufeatures-0.3.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cpufeatures-0.3.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__crc32fast-1.5.0", - sha256 = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511", - type = "tar.gz", - urls = ["https://static.crates.io/crates/crc32fast/1.5.0/download"], - strip_prefix = "crc32fast-1.5.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crc32fast-1.5.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__critical-section-1.2.0", - sha256 = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/critical-section/1.2.0/download"], - strip_prefix = "critical-section-1.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.critical-section-1.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__crossbeam-channel-0.5.15", - sha256 = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__crossbeam-deque-0.8.6", - sha256 = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51", - type = "tar.gz", - urls = ["https://static.crates.io/crates/crossbeam-deque/0.8.6/download"], - strip_prefix = "crossbeam-deque-0.8.6", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-deque-0.8.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__crossbeam-epoch-0.9.18", - sha256 = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/crossbeam-epoch/0.9.18/download"], - strip_prefix = "crossbeam-epoch-0.9.18", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-epoch-0.9.18.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__crossbeam-queue-0.3.12", - sha256 = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115", - type = "tar.gz", - urls = ["https://static.crates.io/crates/crossbeam-queue/0.3.12/download"], - strip_prefix = "crossbeam-queue-0.3.12", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-queue-0.3.12.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__crossbeam-utils-0.8.21", - sha256 = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28", - type = "tar.gz", - urls = ["https://static.crates.io/crates/crossbeam-utils/0.8.21/download"], - strip_prefix = "crossbeam-utils-0.8.21", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-utils-0.8.21.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__darling-0.23.0", - sha256 = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/darling/0.23.0/download"], - strip_prefix = "darling-0.23.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling-0.23.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__darling_core-0.23.0", - sha256 = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0", - type = "tar.gz", - urls = ["https://static.crates.io/crates/darling_core/0.23.0/download"], - strip_prefix = "darling_core-0.23.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling_core-0.23.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__darling_macro-0.23.0", - sha256 = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/darling_macro/0.23.0/download"], - strip_prefix = "darling_macro-0.23.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.darling_macro-0.23.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__dashmap-6.1.0", - sha256 = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf", - type = "tar.gz", - urls = ["https://static.crates.io/crates/dashmap/6.1.0/download"], - strip_prefix = "dashmap-6.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dashmap-6.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__deranged-0.5.8", - sha256 = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/deranged/0.5.8/download"], - strip_prefix = "deranged-0.5.8", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.deranged-0.5.8.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__derive-where-1.6.1", - sha256 = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534", - type = "tar.gz", - urls = ["https://static.crates.io/crates/derive-where/1.6.1/download"], - strip_prefix = "derive-where-1.6.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.derive-where-1.6.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__dissimilar-1.0.11", - sha256 = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/dissimilar/1.0.11/download"], - strip_prefix = "dissimilar-1.0.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dissimilar-1.0.11.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__drop_bomb-0.1.5", - sha256 = "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/drop_bomb/0.1.5/download"], - strip_prefix = "drop_bomb-0.1.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.drop_bomb-0.1.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__dunce-1.0.5", - sha256 = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813", - type = "tar.gz", - urls = ["https://static.crates.io/crates/dunce/1.0.5/download"], - strip_prefix = "dunce-1.0.5", - 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.20", - sha256 = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555", - type = "tar.gz", - urls = ["https://static.crates.io/crates/dyn-clone/1.0.20/download"], - strip_prefix = "dyn-clone-1.0.20", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dyn-clone-1.0.20.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__either-1.16.0", - sha256 = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/either/1.16.0/download"], - strip_prefix = "either-1.16.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.either-1.16.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__embedded-io-0.4.0", - sha256 = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced", - type = "tar.gz", - urls = ["https://static.crates.io/crates/embedded-io/0.4.0/download"], - strip_prefix = "embedded-io-0.4.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.embedded-io-0.4.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__embedded-io-0.6.1", - sha256 = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/embedded-io/0.6.1/download"], - strip_prefix = "embedded-io-0.6.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.embedded-io-0.6.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ena-0.14.4", - sha256 = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ena/0.14.4/download"], - strip_prefix = "ena-0.14.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ena-0.14.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__encoding-0.2.33", - sha256 = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec", - type = "tar.gz", - urls = ["https://static.crates.io/crates/encoding/0.2.33/download"], - strip_prefix = "encoding-0.2.33", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-0.2.33.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__encoding-index-japanese-1.20141219.5", - sha256 = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91", - type = "tar.gz", - urls = ["https://static.crates.io/crates/encoding-index-japanese/1.20141219.5/download"], - strip_prefix = "encoding-index-japanese-1.20141219.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-japanese-1.20141219.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__encoding-index-korean-1.20141219.5", - sha256 = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81", - type = "tar.gz", - urls = ["https://static.crates.io/crates/encoding-index-korean/1.20141219.5/download"], - strip_prefix = "encoding-index-korean-1.20141219.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-korean-1.20141219.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__encoding-index-simpchinese-1.20141219.5", - sha256 = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7", - type = "tar.gz", - urls = ["https://static.crates.io/crates/encoding-index-simpchinese/1.20141219.5/download"], - strip_prefix = "encoding-index-simpchinese-1.20141219.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-simpchinese-1.20141219.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__encoding-index-singlebyte-1.20141219.5", - sha256 = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/encoding-index-singlebyte/1.20141219.5/download"], - strip_prefix = "encoding-index-singlebyte-1.20141219.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-singlebyte-1.20141219.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__encoding-index-tradchinese-1.20141219.5", - sha256 = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18", - type = "tar.gz", - urls = ["https://static.crates.io/crates/encoding-index-tradchinese/1.20141219.5/download"], - strip_prefix = "encoding-index-tradchinese-1.20141219.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding-index-tradchinese-1.20141219.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__encoding_index_tests-0.1.4", - sha256 = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569", - type = "tar.gz", - urls = ["https://static.crates.io/crates/encoding_index_tests/0.1.4/download"], - strip_prefix = "encoding_index_tests-0.1.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.encoding_index_tests-0.1.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__equivalent-1.0.2", - sha256 = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/equivalent/1.0.2/download"], - strip_prefix = "equivalent-1.0.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.equivalent-1.0.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__figment-0.10.19", - sha256 = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/figment/0.10.19/download"], - strip_prefix = "figment-0.10.19", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.figment-0.10.19.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__find-msvc-tools-0.1.9", - sha256 = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582", - type = "tar.gz", - urls = ["https://static.crates.io/crates/find-msvc-tools/0.1.9/download"], - strip_prefix = "find-msvc-tools-0.1.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.find-msvc-tools-0.1.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__fixedbitset-0.5.7", - sha256 = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99", - type = "tar.gz", - urls = ["https://static.crates.io/crates/fixedbitset/0.5.7/download"], - strip_prefix = "fixedbitset-0.5.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fixedbitset-0.5.7.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__flate2-1.1.9", - sha256 = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/flate2/1.1.9/download"], - strip_prefix = "flate2-1.1.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.flate2-1.1.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__foldhash-0.1.5", - sha256 = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/foldhash/0.1.5/download"], - strip_prefix = "foldhash-0.1.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.foldhash-0.1.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__fs-err-3.3.0", - sha256 = "73fde052dbfc920003cfd2c8e2c6e6d4cc7c1091538c3a24226cec0665ab08c0", - type = "tar.gz", - urls = ["https://static.crates.io/crates/fs-err/3.3.0/download"], - strip_prefix = "fs-err-3.3.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fs-err-3.3.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__fsevent-sys-4.1.0", - sha256 = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/fsevent-sys/4.1.0/download"], - strip_prefix = "fsevent-sys-4.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fsevent-sys-4.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__fst-0.4.7", - sha256 = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/fst/0.4.7/download"], - strip_prefix = "fst-0.4.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fst-0.4.7.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__futures-core-0.3.32", - sha256 = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/futures-core/0.3.32/download"], - strip_prefix = "futures-core-0.3.32", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.futures-core-0.3.32.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__futures-task-0.3.32", - sha256 = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393", - type = "tar.gz", - urls = ["https://static.crates.io/crates/futures-task/0.3.32/download"], - strip_prefix = "futures-task-0.3.32", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.futures-task-0.3.32.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__futures-util-0.3.32", - sha256 = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6", - type = "tar.gz", - urls = ["https://static.crates.io/crates/futures-util/0.3.32/download"], - strip_prefix = "futures-util-0.3.32", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.futures-util-0.3.32.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__getrandom-0.3.4", - sha256 = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd", - type = "tar.gz", - urls = ["https://static.crates.io/crates/getrandom/0.3.4/download"], - strip_prefix = "getrandom-0.3.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.getrandom-0.3.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__getrandom-0.4.2", - sha256 = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555", - type = "tar.gz", - urls = ["https://static.crates.io/crates/getrandom/0.4.2/download"], - strip_prefix = "getrandom-0.4.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.getrandom-0.4.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__glob-0.3.3", - sha256 = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280", - type = "tar.gz", - urls = ["https://static.crates.io/crates/glob/0.3.3/download"], - strip_prefix = "glob-0.3.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.glob-0.3.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__globset-0.4.18", - sha256 = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/globset/0.4.18/download"], - strip_prefix = "globset-0.4.18", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.globset-0.4.18.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__hash32-0.2.1", - sha256 = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67", - type = "tar.gz", - urls = ["https://static.crates.io/crates/hash32/0.2.1/download"], - strip_prefix = "hash32-0.2.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hash32-0.2.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__hashbrown-0.12.3", - sha256 = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888", - type = "tar.gz", - urls = ["https://static.crates.io/crates/hashbrown/0.12.3/download"], - strip_prefix = "hashbrown-0.12.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.12.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__hashbrown-0.14.5", - sha256 = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/hashbrown/0.14.5/download"], - strip_prefix = "hashbrown-0.14.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.14.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__hashbrown-0.15.5", - sha256 = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/hashbrown/0.15.5/download"], - strip_prefix = "hashbrown-0.15.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.15.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__hashbrown-0.17.1", - sha256 = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/hashbrown/0.17.1/download"], - strip_prefix = "hashbrown-0.17.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashbrown-0.17.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__hashlink-0.10.0", - sha256 = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/hashlink/0.10.0/download"], - strip_prefix = "hashlink-0.10.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashlink-0.10.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__heapless-0.7.17", - sha256 = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/heapless/0.7.17/download"], - strip_prefix = "heapless-0.7.17", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.heapless-0.7.17.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__heck-0.5.0", - sha256 = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea", - type = "tar.gz", - urls = ["https://static.crates.io/crates/heck/0.5.0/download"], - strip_prefix = "heck-0.5.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.heck-0.5.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__hermit-abi-0.5.2", - sha256 = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__hex-0.4.3", - sha256 = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70", - type = "tar.gz", - urls = ["https://static.crates.io/crates/hex/0.4.3/download"], - strip_prefix = "hex-0.4.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hex-0.4.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__home-0.5.12", - sha256 = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/home/0.5.12/download"], - strip_prefix = "home-0.5.12", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.home-0.5.12.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__iana-time-zone-0.1.65", - sha256 = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470", - type = "tar.gz", - urls = ["https://static.crates.io/crates/iana-time-zone/0.1.65/download"], - strip_prefix = "iana-time-zone-0.1.65", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.iana-time-zone-0.1.65.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__iana-time-zone-haiku-0.1.2", - sha256 = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/iana-time-zone-haiku/0.1.2/download"], - strip_prefix = "iana-time-zone-haiku-0.1.2", - 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__id-arena-2.3.0", - sha256 = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954", - type = "tar.gz", - urls = ["https://static.crates.io/crates/id-arena/2.3.0/download"], - strip_prefix = "id-arena-2.3.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.id-arena-2.3.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ident_case-1.0.1", - sha256 = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ident_case/1.0.1/download"], - strip_prefix = "ident_case-1.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ident_case-1.0.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__indexmap-1.9.3", - sha256 = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99", - type = "tar.gz", - urls = ["https://static.crates.io/crates/indexmap/1.9.3/download"], - strip_prefix = "indexmap-1.9.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-1.9.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__indexmap-2.14.0", - sha256 = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/indexmap/2.14.0/download"], - strip_prefix = "indexmap-2.14.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.indexmap-2.14.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__inlinable_string-0.1.15", - sha256 = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb", - type = "tar.gz", - urls = ["https://static.crates.io/crates/inlinable_string/0.1.15/download"], - strip_prefix = "inlinable_string-0.1.15", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.inlinable_string-0.1.15.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__inotify-0.11.1", - sha256 = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199", - type = "tar.gz", - urls = ["https://static.crates.io/crates/inotify/0.11.1/download"], - strip_prefix = "inotify-0.11.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.inotify-0.11.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__inotify-sys-0.1.5", - sha256 = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb", - type = "tar.gz", - urls = ["https://static.crates.io/crates/inotify-sys/0.1.5/download"], - strip_prefix = "inotify-sys-0.1.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.inotify-sys-0.1.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__intrusive-collections-0.9.7", - sha256 = "189d0897e4cbe8c75efedf3502c18c887b05046e59d28404d4d8e46cbc4d1e86", - type = "tar.gz", - urls = ["https://static.crates.io/crates/intrusive-collections/0.9.7/download"], - strip_prefix = "intrusive-collections-0.9.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.intrusive-collections-0.9.7.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__inventory-0.3.24", - sha256 = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/inventory/0.3.24/download"], - strip_prefix = "inventory-0.3.24", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.inventory-0.3.24.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__is_terminal_polyfill-1.70.2", - sha256 = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695", - type = "tar.gz", - urls = ["https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download"], - strip_prefix = "is_terminal_polyfill-1.70.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.is_terminal_polyfill-1.70.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__itertools-0.14.0", - sha256 = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285", - type = "tar.gz", - urls = ["https://static.crates.io/crates/itertools/0.14.0/download"], - strip_prefix = "itertools-0.14.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.itertools-0.14.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__itoa-1.0.18", - sha256 = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682", - type = "tar.gz", - urls = ["https://static.crates.io/crates/itoa/1.0.18/download"], - strip_prefix = "itoa-1.0.18", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.itoa-1.0.18.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__jobserver-0.1.34", - sha256 = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33", - type = "tar.gz", - urls = ["https://static.crates.io/crates/jobserver/0.1.34/download"], - strip_prefix = "jobserver-0.1.34", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jobserver-0.1.34.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__jod-thread-1.0.0", - sha256 = "a037eddb7d28de1d0fc42411f501b53b75838d313908078d6698d064f3029b24", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__js-sys-0.3.98", - sha256 = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08", - type = "tar.gz", - urls = ["https://static.crates.io/crates/js-sys/0.3.98/download"], - strip_prefix = "js-sys-0.3.98", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.js-sys-0.3.98.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__kqueue-1.1.1", - sha256 = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/kqueue/1.1.1/download"], - strip_prefix = "kqueue-1.1.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.kqueue-1.1.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__kqueue-sys-1.1.2", - sha256 = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087", - type = "tar.gz", - urls = ["https://static.crates.io/crates/kqueue-sys/1.1.2/download"], - strip_prefix = "kqueue-sys-1.1.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.kqueue-sys-1.1.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__la-arena-0.3.1", - sha256 = "3752f229dcc5a481d60f385fa479ff46818033d881d2d801aa27dffcfb5e8306", - type = "tar.gz", - urls = ["https://static.crates.io/crates/la-arena/0.3.1/download"], - strip_prefix = "la-arena-0.3.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.la-arena-0.3.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__lazy_static-1.5.0", - sha256 = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe", - type = "tar.gz", - urls = ["https://static.crates.io/crates/lazy_static/1.5.0/download"], - strip_prefix = "lazy_static-1.5.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.lazy_static-1.5.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__leb128fmt-0.1.0", - sha256 = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/leb128fmt/0.1.0/download"], - strip_prefix = "leb128fmt-0.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.leb128fmt-0.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__libc-0.2.186", - sha256 = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66", - type = "tar.gz", - urls = ["https://static.crates.io/crates/libc/0.2.186/download"], - strip_prefix = "libc-0.2.186", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.libc-0.2.186.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__line-index-0.1.2", - sha256 = "3e27e0ed5a392a7f5ba0b3808a2afccff16c64933312c84b57618b49d1209bd2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/line-index/0.1.2/download"], - strip_prefix = "line-index-0.1.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.line-index-0.1.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__lock_api-0.4.14", - sha256 = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965", - type = "tar.gz", - urls = ["https://static.crates.io/crates/lock_api/0.4.14/download"], - strip_prefix = "lock_api-0.4.14", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.lock_api-0.4.14.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__log-0.3.9", - sha256 = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/log/0.3.9/download"], - strip_prefix = "log-0.3.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.3.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__log-0.4.29", - sha256 = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897", - type = "tar.gz", - urls = ["https://static.crates.io/crates/log/0.4.29/download"], - strip_prefix = "log-0.4.29", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.29.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__matchers-0.2.0", - sha256 = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/matchers/0.2.0/download"], - strip_prefix = "matchers-0.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.matchers-0.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__memchr-2.8.0", - sha256 = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79", - type = "tar.gz", - urls = ["https://static.crates.io/crates/memchr/2.8.0/download"], - strip_prefix = "memchr-2.8.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.memchr-2.8.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__memoffset-0.9.1", - sha256 = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/memoffset/0.9.1/download"], - strip_prefix = "memoffset-0.9.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.memoffset-0.9.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__miniz_oxide-0.8.9", - sha256 = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316", - type = "tar.gz", - urls = ["https://static.crates.io/crates/miniz_oxide/0.8.9/download"], - strip_prefix = "miniz_oxide-0.8.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.miniz_oxide-0.8.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__mio-1.2.0", - sha256 = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/mio/1.2.0/download"], - strip_prefix = "mio-1.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.mio-1.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__miow-0.6.1", - sha256 = "536bfad37a309d62069485248eeaba1e8d9853aaf951caaeaed0585a95346f08", - type = "tar.gz", - urls = ["https://static.crates.io/crates/miow/0.6.1/download"], - strip_prefix = "miow-0.6.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.miow-0.6.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__mustache-0.9.0", - sha256 = "51956ef1c5d20a1384524d91e616fb44dfc7d8f249bf696d49c97dd3289ecab5", - type = "tar.gz", - urls = ["https://static.crates.io/crates/mustache/0.9.0/download"], - strip_prefix = "mustache-0.9.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.mustache-0.9.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__nohash-hasher-0.2.0", - sha256 = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451", - type = "tar.gz", - urls = ["https://static.crates.io/crates/nohash-hasher/0.2.0/download"], - strip_prefix = "nohash-hasher-0.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.nohash-hasher-0.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__notify-8.2.0", - sha256 = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/notify/8.2.0/download"], - strip_prefix = "notify-8.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.notify-8.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__notify-types-2.1.0", - sha256 = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/notify-types/2.1.0/download"], - strip_prefix = "notify-types-2.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.notify-types-2.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__nu-ansi-term-0.50.3", - sha256 = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5", - type = "tar.gz", - urls = ["https://static.crates.io/crates/nu-ansi-term/0.50.3/download"], - strip_prefix = "nu-ansi-term-0.50.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.nu-ansi-term-0.50.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__num-conv-0.2.2", - sha256 = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441", - type = "tar.gz", - urls = ["https://static.crates.io/crates/num-conv/0.2.2/download"], - strip_prefix = "num-conv-0.2.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num-conv-0.2.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__num-traits-0.2.19", - sha256 = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841", - type = "tar.gz", - urls = ["https://static.crates.io/crates/num-traits/0.2.19/download"], - strip_prefix = "num-traits-0.2.19", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num-traits-0.2.19.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__num_cpus-1.17.0", - sha256 = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__num_threads-0.1.7", - sha256 = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/num_threads/0.1.7/download"], - strip_prefix = "num_threads-0.1.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.num_threads-0.1.7.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__once_cell-1.21.4", - sha256 = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50", - type = "tar.gz", - urls = ["https://static.crates.io/crates/once_cell/1.21.4/download"], - strip_prefix = "once_cell-1.21.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.once_cell-1.21.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__once_cell_polyfill-1.70.2", - sha256 = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe", - type = "tar.gz", - urls = ["https://static.crates.io/crates/once_cell_polyfill/1.70.2/download"], - strip_prefix = "once_cell_polyfill-1.70.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.once_cell_polyfill-1.70.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__oorandom-11.1.5", - sha256 = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/oorandom/11.1.5/download"], - strip_prefix = "oorandom-11.1.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.oorandom-11.1.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__os_str_bytes-7.2.0", - sha256 = "89284d0c2af7b0eb5e814798aa07265413c8fd72009f7fc82ea25a81fb287ce9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/os_str_bytes/7.2.0/download"], - strip_prefix = "os_str_bytes-7.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.os_str_bytes-7.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__parking_lot-0.12.5", - sha256 = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/parking_lot/0.12.5/download"], - strip_prefix = "parking_lot-0.12.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.parking_lot-0.12.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__parking_lot_core-0.9.12", - sha256 = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/parking_lot_core/0.9.12/download"], - strip_prefix = "parking_lot_core-0.9.12", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.parking_lot_core-0.9.12.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__pear-0.2.9", - sha256 = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467", - type = "tar.gz", - urls = ["https://static.crates.io/crates/pear/0.2.9/download"], - strip_prefix = "pear-0.2.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pear-0.2.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__pear_codegen-0.2.9", - sha256 = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147", - type = "tar.gz", - urls = ["https://static.crates.io/crates/pear_codegen/0.2.9/download"], - strip_prefix = "pear_codegen-0.2.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pear_codegen-0.2.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__perf-event-0.4.8", - sha256 = "b4d6393d9238342159080d79b78cb59c67399a8e7ecfa5d410bd614169e4e823", - type = "tar.gz", - urls = ["https://static.crates.io/crates/perf-event/0.4.8/download"], - strip_prefix = "perf-event-0.4.8", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.perf-event-0.4.8.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__perf-event-open-sys-4.0.0", - sha256 = "7c44fb1c7651a45a3652c4afc6e754e40b3d6e6556f1487e2b230bfc4f33c2a8", - type = "tar.gz", - urls = ["https://static.crates.io/crates/perf-event-open-sys/4.0.0/download"], - strip_prefix = "perf-event-open-sys-4.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.perf-event-open-sys-4.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__petgraph-0.8.3", - sha256 = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455", - type = "tar.gz", - urls = ["https://static.crates.io/crates/petgraph/0.8.3/download"], - strip_prefix = "petgraph-0.8.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.petgraph-0.8.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__pin-project-lite-0.2.17", - sha256 = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd", - type = "tar.gz", - urls = ["https://static.crates.io/crates/pin-project-lite/0.2.17/download"], - strip_prefix = "pin-project-lite-0.2.17", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pin-project-lite-0.2.17.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__pkg-config-0.3.33", - sha256 = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/pkg-config/0.3.33/download"], - strip_prefix = "pkg-config-0.3.33", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pkg-config-0.3.33.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__portable-atomic-1.13.1", - sha256 = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49", - type = "tar.gz", - urls = ["https://static.crates.io/crates/portable-atomic/1.13.1/download"], - strip_prefix = "portable-atomic-1.13.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.portable-atomic-1.13.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__postcard-1.1.3", - sha256 = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24", - type = "tar.gz", - urls = ["https://static.crates.io/crates/postcard/1.1.3/download"], - strip_prefix = "postcard-1.1.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.postcard-1.1.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__powerfmt-0.2.0", - sha256 = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391", - type = "tar.gz", - urls = ["https://static.crates.io/crates/powerfmt/0.2.0/download"], - strip_prefix = "powerfmt-0.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.powerfmt-0.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__prettyplease-0.2.37", - sha256 = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/prettyplease/0.2.37/download"], - strip_prefix = "prettyplease-0.2.37", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.prettyplease-0.2.37.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__proc-macro2-1.0.106", - sha256 = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934", - type = "tar.gz", - urls = ["https://static.crates.io/crates/proc-macro2/1.0.106/download"], - strip_prefix = "proc-macro2-1.0.106", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-1.0.106.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__proc-macro2-diagnostics-0.10.1", - sha256 = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8", - type = "tar.gz", - urls = ["https://static.crates.io/crates/proc-macro2-diagnostics/0.10.1/download"], - strip_prefix = "proc-macro2-diagnostics-0.10.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-diagnostics-0.10.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__quote-1.0.45", - sha256 = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924", - type = "tar.gz", - urls = ["https://static.crates.io/crates/quote/1.0.45/download"], - strip_prefix = "quote-1.0.45", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.quote-1.0.45.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__r-efi-5.3.0", - sha256 = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/r-efi/5.3.0/download"], - strip_prefix = "r-efi-5.3.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.r-efi-5.3.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__r-efi-6.0.0", - sha256 = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf", - type = "tar.gz", - urls = ["https://static.crates.io/crates/r-efi/6.0.0/download"], - strip_prefix = "r-efi-6.0.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.r-efi-6.0.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_abi-0.143.0", - sha256 = "1d49dbe5d570793b3c3227972a6ac85fc3e830f09b32c3cb3b68cfceebad3b0a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_abi/0.143.0/download"], - strip_prefix = "ra-ap-rustc_abi-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_abi-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_ast_ir-0.143.0", - sha256 = "cd0956db62c264a899d15667993cbbd2e8f0b02108712217e2579c61ac30b94b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_ast_ir/0.143.0/download"], - strip_prefix = "ra-ap-rustc_ast_ir-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_hashes-0.143.0", - sha256 = "7df512084c24f4c96c8cc9a59cbd264301efbc8913d3759b065398024af316c9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_hashes/0.143.0/download"], - strip_prefix = "ra-ap-rustc_hashes-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_hashes-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_index-0.143.0", - sha256 = "bca3a49a928d38ba7927605e5909b6abe77d09ff359e4695c070c3f91d69cc8a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_index/0.143.0/download"], - strip_prefix = "ra-ap-rustc_index-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_index_macros-0.143.0", - sha256 = "4463e908a62c64c2a65c1966c2f4995d0e1f8b7dfc85a8b8de2562edf3d89070", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_index_macros/0.143.0/download"], - strip_prefix = "ra-ap-rustc_index_macros-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index_macros-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_lexer-0.143.0", - sha256 = "228e01e1b237adb4bd8793487e1c37019c1e526a8f93716d99602301be267056", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_lexer/0.143.0/download"], - strip_prefix = "ra-ap-rustc_lexer-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_lexer-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_next_trait_solver-0.143.0", - sha256 = "10d6f91143011d474bb844d268b0784c6a4c6db57743558b83f5ad34511627f1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_next_trait_solver/0.143.0/download"], - strip_prefix = "ra-ap-rustc_next_trait_solver-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_parse_format-0.143.0", - sha256 = "37fa8effbc436c0ddd9d7b1421aa3cccf8b94566c841c4e4aa3e09063b8f423f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_parse_format/0.143.0/download"], - strip_prefix = "ra-ap-rustc_parse_format-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_parse_format-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_pattern_analysis-0.143.0", - sha256 = "883c843fc27847ad03b8e772dd4a2d2728af4333a6d6821a22dfcfe7136dff3e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_pattern_analysis/0.143.0/download"], - strip_prefix = "ra-ap-rustc_pattern_analysis-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_pattern_analysis-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_type_ir-0.143.0", - sha256 = "a86e33c46b2b261a173b23f207461a514812a8b2d2d7935bbc685f733eacce10", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_type_ir/0.143.0/download"], - strip_prefix = "ra-ap-rustc_type_ir-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_type_ir-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra-ap-rustc_type_ir_macros-0.143.0", - sha256 = "15034c2fcaa5cf302aea6db20eda0f71fffeb0b372d6073cc50f940e974a2a47", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_type_ir_macros/0.143.0/download"], - strip_prefix = "ra-ap-rustc_type_ir_macros-0.143.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_type_ir_macros-0.143.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_base_db-0.0.328", - sha256 = "b1567168e7c7b50acf2ffb87bde8937986d4f41c777a2c308298ede9d555c96c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.328/download"], - strip_prefix = "ra_ap_base_db-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_cfg-0.0.328", - sha256 = "1e1fc8d53014b0ec4c06c9dbf0a810ccd67b3a96de4ef06bd1a248c2295b6a37", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.328/download"], - strip_prefix = "ra_ap_cfg-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_edition-0.0.328", - sha256 = "627a8ce8e870632395b7bf053c93039a3d91dda744ccae166ac83650572cfaa2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.328/download"], - strip_prefix = "ra_ap_edition-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_hir-0.0.328", - sha256 = "b77616ef81f690a3eba4befd32112780b99f052676b0e7686a22bf79f3fbe2a8", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.328/download"], - strip_prefix = "ra_ap_hir-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_hir_def-0.0.328", - sha256 = "81504dd727efbaf48704a9c0e18e6491cb9848428376ad37146f37f63571ab3c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.328/download"], - strip_prefix = "ra_ap_hir_def-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_hir_expand-0.0.328", - sha256 = "9980623345a88d4431ce80331e640c494e2e59303e82a2cb1290b4684efdc6e5", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.328/download"], - strip_prefix = "ra_ap_hir_expand-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_hir_ty-0.0.328", - sha256 = "b822d1b9f0168281bbba34e0c5abada891fa9fc5e0b54e86493e8b075a877973", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.328/download"], - strip_prefix = "ra_ap_hir_ty-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_ide_db-0.0.328", - sha256 = "0e250964a32be6c74f1f72e0fd8aea08aaed0535d85a7fd315fe442942185da0", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.328/download"], - strip_prefix = "ra_ap_ide_db-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_intern-0.0.328", - sha256 = "df7edf9d14d093b4314b43ed75eaf56d47d870a09b8d0e0e67d17919c30bfb0f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.328/download"], - strip_prefix = "ra_ap_intern-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_load-cargo-0.0.328", - sha256 = "184cdaabfb66948938aa4b73ee24f7fa57c1292292c1d87bcad2c616cbd254ea", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.328/download"], - strip_prefix = "ra_ap_load-cargo-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_macros-0.0.328", - sha256 = "fd338f982b2f7438ee89ca2429ad7181f2f0751fa6b98d8275905c97e2fb8361", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_macros/0.0.328/download"], - strip_prefix = "ra_ap_macros-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_macros-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_mbe-0.0.328", - sha256 = "81d4c7114f2363c05b6dc7f5f6cdd6c9d6a1ba63410b0cdc80c81d1414da7c72", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.328/download"], - strip_prefix = "ra_ap_mbe-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_parser-0.0.328", - sha256 = "c9851f3b6e93971e6c3957966a07154bc35e0f91c0a6980ad71965620df6f737", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.328/download"], - strip_prefix = "ra_ap_parser-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_paths-0.0.328", - sha256 = "506bbef9963ca9275dd50f5876d68e32a58d47a369ea10bce2be1c758b081c42", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.328/download"], - strip_prefix = "ra_ap_paths-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_proc_macro_api-0.0.328", - sha256 = "18e0229d5c7daa016a8f4f735194e68baf34ca18b73982ae036a8217874f32e9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.328/download"], - strip_prefix = "ra_ap_proc_macro_api-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_profile-0.0.328", - sha256 = "b251c30d8e4df3902a92d10c4899e43403921f72aef12afa2f027a77e4898950", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.328/download"], - strip_prefix = "ra_ap_profile-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_project_model-0.0.328", - sha256 = "2b04624412e45c7b0f792859be553182ea2360d8a24bf7162ca212840e683a24", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.328/download"], - strip_prefix = "ra_ap_project_model-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_query-group-macro-0.0.328", - sha256 = "770079ca5addde33d31b7f3fa8d399f0dc29c26f69642a9d5c2a5e623d8af64d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_query-group-macro/0.0.328/download"], - strip_prefix = "ra_ap_query-group-macro-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_query-group-macro-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_span-0.0.328", - sha256 = "80a523bc8c85155ccd1db35b6855d37729d339c572b7fc0801c459bb8218976b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_span/0.0.328/download"], - strip_prefix = "ra_ap_span-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_stdx-0.0.328", - sha256 = "eb22b95e21d08060860056c86af1b47b2cecbac5422baa112d9d138e97c3671a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.328/download"], - strip_prefix = "ra_ap_stdx-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_syntax-0.0.328", - sha256 = "ba3d9c469b5635401647b69e01a9930746f08a3cac51d04ad5ae99e66bdd643f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.328/download"], - strip_prefix = "ra_ap_syntax-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_syntax-bridge-0.0.328", - sha256 = "b4d3f2e2a1836eeedc2ed2810ece4cdf7ea42284f71b7031eac8448c1cb95b09", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.328/download"], - strip_prefix = "ra_ap_syntax-bridge-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_test_fixture-0.0.328", - sha256 = "21d6d353373b4f28f2236ed7843bcee0e4dd0e6a12b339da874460bbefd070ab", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_test_fixture/0.0.328/download"], - strip_prefix = "ra_ap_test_fixture-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_test_fixture-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_test_utils-0.0.328", - sha256 = "57d10cbb0402abee7034de5d90ddf7e380d1e21ad0e1dcd2db92c3c87df78723", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_test_utils/0.0.328/download"], - strip_prefix = "ra_ap_test_utils-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_test_utils-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_toolchain-0.0.328", - sha256 = "2fed946c88a9dfa93de7a376a06493c5377a1052ac666ab9e1155f4ea57271c9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.328/download"], - strip_prefix = "ra_ap_toolchain-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_tt-0.0.328", - sha256 = "96dfc20add2675d38240a7815755b54f514d91b9dc0336cb3d024901af4faeef", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.328/download"], - strip_prefix = "ra_ap_tt-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_vfs-0.0.328", - sha256 = "d69bc10b59435e4d989d10bc0b602a5bd70e1dcc2c5d8513b10585d9e778b440", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.328/download"], - strip_prefix = "ra_ap_vfs-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_vfs-notify-0.0.328", - sha256 = "07f7f31bb0c5744ba1fe1b1460eeb62274110dfb94e4b6719cf2e7df9410032d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.328/download"], - strip_prefix = "ra_ap_vfs-notify-0.0.328", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.328.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rand-0.10.1", - sha256 = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rand/0.10.1/download"], - strip_prefix = "rand-0.10.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand-0.10.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rand_core-0.10.1", - sha256 = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rand_core/0.10.1/download"], - strip_prefix = "rand_core-0.10.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand_core-0.10.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rayon-1.12.0", - sha256 = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rayon/1.12.0/download"], - strip_prefix = "rayon-1.12.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rayon-1.12.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rayon-core-1.13.0", - sha256 = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rayon-core/1.13.0/download"], - strip_prefix = "rayon-core-1.13.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rayon-core-1.13.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__redox_syscall-0.5.18", - sha256 = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/redox_syscall/0.5.18/download"], - strip_prefix = "redox_syscall-0.5.18", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.redox_syscall-0.5.18.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ref-cast-1.0.25", - sha256 = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ref-cast/1.0.25/download"], - strip_prefix = "ref-cast-1.0.25", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ref-cast-1.0.25.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ref-cast-impl-1.0.25", - sha256 = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ref-cast-impl/1.0.25/download"], - strip_prefix = "ref-cast-impl-1.0.25", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ref-cast-impl-1.0.25.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__regex-1.12.3", - sha256 = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276", - type = "tar.gz", - urls = ["https://static.crates.io/crates/regex/1.12.3/download"], - strip_prefix = "regex-1.12.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-1.12.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__regex-automata-0.4.14", - sha256 = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/regex-automata/0.4.14/download"], - strip_prefix = "regex-automata-0.4.14", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-automata-0.4.14.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__regex-syntax-0.8.10", - sha256 = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/regex-syntax/0.8.10/download"], - strip_prefix = "regex-syntax-0.8.10", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.regex-syntax-0.8.10.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rowan-0.15.18", - sha256 = "62f509095fc8cc0c8c8564016771d458079c11a8d857e65861f045145c0d3208", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rowan/0.15.18/download"], - strip_prefix = "rowan-0.15.18", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rowan-0.15.18.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rustc-hash-1.1.0", - sha256 = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rustc-hash/1.1.0/download"], - strip_prefix = "rustc-hash-1.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-hash-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rustc-hash-2.1.2", - sha256 = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rustc-hash/2.1.2/download"], - strip_prefix = "rustc-hash-2.1.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-hash-2.1.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rustc-literal-escaper-0.0.4", - sha256 = "ab03008eb631b703dd16978282ae36c73282e7922fe101a4bd072a40ecea7b8b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rustc-literal-escaper/0.0.4/download"], - strip_prefix = "rustc-literal-escaper-0.0.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-literal-escaper-0.0.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rustc-literal-escaper-0.0.5", - sha256 = "e4ee29da77c5a54f42697493cd4c9b9f31b74df666a6c04dfc4fde77abe0438b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rustc-literal-escaper/0.0.5/download"], - strip_prefix = "rustc-literal-escaper-0.0.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-literal-escaper-0.0.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rustc-stable-hash-0.1.2", - sha256 = "781442f29170c5c93b7185ad559492601acdc71d5bb0706f5868094f45cfcd08", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rustc-stable-hash/0.1.2/download"], - strip_prefix = "rustc-stable-hash-0.1.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc-stable-hash-0.1.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rustc_apfloat-0.2.3-llvm-462a31f5a5ab", - sha256 = "486c2179b4796f65bfe2ee33679acf0927ac83ecf583ad6c91c3b4570911b9ad", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__rustc_version-0.4.1", - sha256 = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rustc_version/0.4.1/download"], - strip_prefix = "rustc_version-0.4.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc_version-0.4.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__rustversion-1.0.22", - sha256 = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/rustversion/1.0.22/download"], - strip_prefix = "rustversion-1.0.22", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustversion-1.0.22.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ryu-1.0.23", - sha256 = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ryu/1.0.23/download"], - strip_prefix = "ryu-1.0.23", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ryu-1.0.23.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__salsa-0.25.2", - sha256 = "e2e2aa2fca57727371eeafc975acc8e6f4c52f8166a78035543f6ee1c74c2dcc", - type = "tar.gz", - urls = ["https://static.crates.io/crates/salsa/0.25.2/download"], - strip_prefix = "salsa-0.25.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-0.25.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__salsa-macro-rules-0.25.2", - sha256 = "1bfc2a1e7bf06964105515451d728f2422dedc3a112383324a00b191a5c397a3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/salsa-macro-rules/0.25.2/download"], - strip_prefix = "salsa-macro-rules-0.25.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macro-rules-0.25.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__salsa-macros-0.25.2", - sha256 = "3d844c1aa34946da46af683b5c27ec1088a3d9d84a2b837a108223fd830220e1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/salsa-macros/0.25.2/download"], - strip_prefix = "salsa-macros-0.25.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macros-0.25.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__same-file-1.0.6", - sha256 = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502", - type = "tar.gz", - urls = ["https://static.crates.io/crates/same-file/1.0.6/download"], - strip_prefix = "same-file-1.0.6", - 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__schemars-1.2.1", - sha256 = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc", - type = "tar.gz", - urls = ["https://static.crates.io/crates/schemars/1.2.1/download"], - strip_prefix = "schemars-1.2.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.schemars-1.2.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__scopeguard-1.2.0", - sha256 = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49", - type = "tar.gz", - urls = ["https://static.crates.io/crates/scopeguard/1.2.0/download"], - strip_prefix = "scopeguard-1.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.scopeguard-1.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__semver-1.0.28", - sha256 = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd", - type = "tar.gz", - urls = ["https://static.crates.io/crates/semver/1.0.28/download"], - strip_prefix = "semver-1.0.28", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.semver-1.0.28.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__serde-1.0.228", - sha256 = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde/1.0.228/download"], - strip_prefix = "serde-1.0.228", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-1.0.228.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__serde_core-1.0.228", - sha256 = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_core/1.0.228/download"], - strip_prefix = "serde_core-1.0.228", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_core-1.0.228.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__serde_derive-1.0.228", - sha256 = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_derive/1.0.228/download"], - strip_prefix = "serde_derive-1.0.228", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_derive-1.0.228.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__serde_json-1.0.150", - sha256 = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_json/1.0.150/download"], - strip_prefix = "serde_json-1.0.150", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_json-1.0.150.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__serde_spanned-1.1.1", - sha256 = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_spanned/1.1.1/download"], - strip_prefix = "serde_spanned-1.1.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_spanned-1.1.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__serde_with-3.20.0", - sha256 = "e72c1c2cb7b223fafb600a619537a871c2818583d619401b785e7c0b746ccde2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_with/3.20.0/download"], - strip_prefix = "serde_with-3.20.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with-3.20.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__serde_with_macros-3.20.0", - sha256 = "b90c488738ecb4fb0262f41f43bc40efc5868d9fb744319ddf5f5317f417bfac", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_with_macros/3.20.0/download"], - strip_prefix = "serde_with_macros-3.20.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with_macros-3.20.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__serde_yaml-0.9.34-deprecated", - sha256 = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47", - type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_yaml/0.9.34+deprecated/download"], - strip_prefix = "serde_yaml-0.9.34+deprecated", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_yaml-0.9.34+deprecated.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__sharded-slab-0.1.7", - sha256 = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6", - type = "tar.gz", - urls = ["https://static.crates.io/crates/sharded-slab/0.1.7/download"], - strip_prefix = "sharded-slab-0.1.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.sharded-slab-0.1.7.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__shlex-1.3.0", - sha256 = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64", - type = "tar.gz", - urls = ["https://static.crates.io/crates/shlex/1.3.0/download"], - strip_prefix = "shlex-1.3.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.shlex-1.3.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__simd-adler32-0.3.9", - sha256 = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214", - type = "tar.gz", - urls = ["https://static.crates.io/crates/simd-adler32/0.3.9/download"], - strip_prefix = "simd-adler32-0.3.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.simd-adler32-0.3.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__slab-0.4.12", - sha256 = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5", - type = "tar.gz", - urls = ["https://static.crates.io/crates/slab/0.4.12/download"], - strip_prefix = "slab-0.4.12", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.slab-0.4.12.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__smallvec-1.15.1", - sha256 = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03", - type = "tar.gz", - 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( - http_archive, - name = "vendor_ts__smol_str-0.3.6", - sha256 = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523", - type = "tar.gz", - urls = ["https://static.crates.io/crates/smol_str/0.3.6/download"], - strip_prefix = "smol_str-0.3.6", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.smol_str-0.3.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__spin-0.9.8", - sha256 = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67", - type = "tar.gz", - urls = ["https://static.crates.io/crates/spin/0.9.8/download"], - strip_prefix = "spin-0.9.8", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.spin-0.9.8.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__stable_deref_trait-1.2.1", - sha256 = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596", - type = "tar.gz", - urls = ["https://static.crates.io/crates/stable_deref_trait/1.2.1/download"], - strip_prefix = "stable_deref_trait-1.2.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.stable_deref_trait-1.2.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__streaming-iterator-0.1.9", - sha256 = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520", - type = "tar.gz", - urls = ["https://static.crates.io/crates/streaming-iterator/0.1.9/download"], - strip_prefix = "streaming-iterator-0.1.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.streaming-iterator-0.1.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__strsim-0.11.1", - sha256 = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/strsim/0.11.1/download"], - strip_prefix = "strsim-0.11.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.strsim-0.11.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__syn-2.0.117", - sha256 = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99", - type = "tar.gz", - urls = ["https://static.crates.io/crates/syn/2.0.117/download"], - strip_prefix = "syn-2.0.117", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-2.0.117.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__synstructure-0.13.2", - sha256 = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/synstructure/0.13.2/download"], - strip_prefix = "synstructure-0.13.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.synstructure-0.13.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__temp-dir-0.1.16", - sha256 = "83176759e9416cf81ee66cb6508dbfe9c96f20b8b56265a39917551c23c70964", - type = "tar.gz", - urls = ["https://static.crates.io/crates/temp-dir/0.1.16/download"], - strip_prefix = "temp-dir-0.1.16", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.temp-dir-0.1.16.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__text-size-1.1.1", - sha256 = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233", - type = "tar.gz", - urls = ["https://static.crates.io/crates/text-size/1.1.1/download"], - strip_prefix = "text-size-1.1.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.text-size-1.1.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__thin-vec-0.2.18", - sha256 = "b0f7e269b48f0a7dd0146680fa24b50cc67fc0373f086a5b2f99bd084639b482", - type = "tar.gz", - urls = ["https://static.crates.io/crates/thin-vec/0.2.18/download"], - strip_prefix = "thin-vec-0.2.18", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thin-vec-0.2.18.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__thiserror-2.0.18", - sha256 = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4", - type = "tar.gz", - urls = ["https://static.crates.io/crates/thiserror/2.0.18/download"], - strip_prefix = "thiserror-2.0.18", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-2.0.18.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__thiserror-impl-2.0.18", - sha256 = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5", - type = "tar.gz", - urls = ["https://static.crates.io/crates/thiserror-impl/2.0.18/download"], - strip_prefix = "thiserror-impl-2.0.18", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thiserror-impl-2.0.18.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__thread_local-1.1.9", - sha256 = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185", - type = "tar.gz", - urls = ["https://static.crates.io/crates/thread_local/1.1.9/download"], - strip_prefix = "thread_local-1.1.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.thread_local-1.1.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__time-0.3.47", - sha256 = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/time/0.3.47/download"], - strip_prefix = "time-0.3.47", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-0.3.47.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__time-core-0.1.8", - sha256 = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca", - type = "tar.gz", - urls = ["https://static.crates.io/crates/time-core/0.1.8/download"], - strip_prefix = "time-core-0.1.8", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-core-0.1.8.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__time-macros-0.2.27", - sha256 = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215", - type = "tar.gz", - urls = ["https://static.crates.io/crates/time-macros/0.2.27/download"], - strip_prefix = "time-macros-0.2.27", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.time-macros-0.2.27.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tinyvec-1.11.0", - sha256 = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tinyvec/1.11.0/download"], - strip_prefix = "tinyvec-1.11.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tinyvec-1.11.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tinyvec_macros-0.1.1", - sha256 = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tinyvec_macros/0.1.1/download"], - strip_prefix = "tinyvec_macros-0.1.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tinyvec_macros-0.1.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__toml-0.9.12-spec-1.1.0", - sha256 = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863", - type = "tar.gz", - urls = ["https://static.crates.io/crates/toml/0.9.12+spec-1.1.0/download"], - strip_prefix = "toml-0.9.12+spec-1.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-0.9.12+spec-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__toml-1.1.2-spec-1.1.0", - sha256 = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee", - type = "tar.gz", - urls = ["https://static.crates.io/crates/toml/1.1.2+spec-1.1.0/download"], - strip_prefix = "toml-1.1.2+spec-1.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-1.1.2+spec-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__toml_datetime-0.7.5-spec-1.1.0", - sha256 = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347", - type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_datetime/0.7.5+spec-1.1.0/download"], - strip_prefix = "toml_datetime-0.7.5+spec-1.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-0.7.5+spec-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__toml_datetime-1.1.1-spec-1.1.0", - sha256 = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7", - type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_datetime/1.1.1+spec-1.1.0/download"], - strip_prefix = "toml_datetime-1.1.1+spec-1.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_datetime-1.1.1+spec-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__toml_parser-1.1.2-spec-1.1.0", - sha256 = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526", - type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_parser/1.1.2+spec-1.1.0/download"], - strip_prefix = "toml_parser-1.1.2+spec-1.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_parser-1.1.2+spec-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__toml_writer-1.1.1-spec-1.1.0", - sha256 = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db", - type = "tar.gz", - urls = ["https://static.crates.io/crates/toml_writer/1.1.1+spec-1.1.0/download"], - strip_prefix = "toml_writer-1.1.1+spec-1.1.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml_writer-1.1.1+spec-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tracing-0.1.44", - sha256 = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing/0.1.44/download"], - strip_prefix = "tracing-0.1.44", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-0.1.44.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tracing-attributes-0.1.31", - sha256 = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing-attributes/0.1.31/download"], - strip_prefix = "tracing-attributes-0.1.31", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-attributes-0.1.31.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tracing-core-0.1.36", - sha256 = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing-core/0.1.36/download"], - strip_prefix = "tracing-core-0.1.36", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-core-0.1.36.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tracing-flame-0.2.0", - sha256 = "0bae117ee14789185e129aaee5d93750abe67fdc5a9a62650452bfe4e122a3a9", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing-flame/0.2.0/download"], - strip_prefix = "tracing-flame-0.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-flame-0.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tracing-log-0.2.0", - sha256 = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing-log/0.2.0/download"], - strip_prefix = "tracing-log-0.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-log-0.2.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tracing-subscriber-0.3.23", - sha256 = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing-subscriber/0.3.23/download"], - strip_prefix = "tracing-subscriber-0.3.23", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-subscriber-0.3.23.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tracing-tree-0.4.1", - sha256 = "ac87aa03b6a4d5a7e4810d1a80c19601dbe0f8a837e9177f23af721c7ba7beec", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tracing-tree/0.4.1/download"], - strip_prefix = "tracing-tree-0.4.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tracing-tree-0.4.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tree-sitter-0.26.9", - sha256 = "4dab76d0b724ba557954125188cf0633a1ca43199ced82d95c7b9c32cc3de1f3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter/0.26.9/download"], - strip_prefix = "tree-sitter-0.26.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-0.26.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tree-sitter-embedded-template-0.25.0", - sha256 = "833d528e8fcb4e49ddb04d4d6450ddb8ac08f282a58fec94ce981c9c5dbf7e3a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-embedded-template/0.25.0/download"], - strip_prefix = "tree-sitter-embedded-template-0.25.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-embedded-template-0.25.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tree-sitter-json-0.24.8", - sha256 = "4d727acca406c0020cffc6cf35516764f36c8e3dc4408e5ebe2cb35a947ec471", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-json/0.24.8/download"], - strip_prefix = "tree-sitter-json-0.24.8", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-json-0.24.8.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tree-sitter-language-0.1.7", - sha256 = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-language/0.1.7/download"], - strip_prefix = "tree-sitter-language-0.1.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-language-0.1.7.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tree-sitter-python-0.23.6", - sha256 = "3d065aaa27f3aaceaf60c1f0e0ac09e1cb9eb8ed28e7bcdaa52129cffc7f4b04", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-python/0.23.6/download"], - strip_prefix = "tree-sitter-python-0.23.6", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-python-0.23.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tree-sitter-ql-0.23.1", - sha256 = "80b7bcaf39acefbb199417a6ec2fd0c038083ba115da3e4f4426c820dc76d386", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-ql/0.23.1/download"], - strip_prefix = "tree-sitter-ql-0.23.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-ql-0.23.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__tree-sitter-ruby-0.23.1", - sha256 = "be0484ea4ef6bb9c575b4fdabde7e31340a8d2dbc7d52b321ac83da703249f95", - type = "tar.gz", - urls = ["https://static.crates.io/crates/tree-sitter-ruby/0.23.1/download"], - strip_prefix = "tree-sitter-ruby-0.23.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tree-sitter-ruby-0.23.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__triomphe-0.1.15", - sha256 = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39", - type = "tar.gz", - urls = ["https://static.crates.io/crates/triomphe/0.1.15/download"], - strip_prefix = "triomphe-0.1.15", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.triomphe-0.1.15.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__typed-arena-2.0.2", - sha256 = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/typed-arena/2.0.2/download"], - strip_prefix = "typed-arena-2.0.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.typed-arena-2.0.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__uncased-0.9.10", - sha256 = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697", - type = "tar.gz", - urls = ["https://static.crates.io/crates/uncased/0.9.10/download"], - strip_prefix = "uncased-0.9.10", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.uncased-0.9.10.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ungrammar-1.16.1", - sha256 = "a3e5df347f0bf3ec1d670aad6ca5c6a1859cd9ea61d2113125794654ccced68f", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ungrammar/1.16.1/download"], - strip_prefix = "ungrammar-1.16.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ungrammar-1.16.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__unicode-ident-1.0.24", - sha256 = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75", - type = "tar.gz", - urls = ["https://static.crates.io/crates/unicode-ident/1.0.24/download"], - strip_prefix = "unicode-ident-1.0.24", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-ident-1.0.24.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__unicode-properties-0.1.4", - sha256 = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/unicode-properties/0.1.4/download"], - strip_prefix = "unicode-properties-0.1.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-properties-0.1.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__unicode-xid-0.2.6", - sha256 = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853", - type = "tar.gz", - urls = ["https://static.crates.io/crates/unicode-xid/0.2.6/download"], - strip_prefix = "unicode-xid-0.2.6", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unicode-xid-0.2.6.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__unsafe-libyaml-0.2.11", - sha256 = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861", - type = "tar.gz", - urls = ["https://static.crates.io/crates/unsafe-libyaml/0.2.11/download"], - strip_prefix = "unsafe-libyaml-0.2.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.unsafe-libyaml-0.2.11.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__utf8parse-0.2.2", - sha256 = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821", - type = "tar.gz", - urls = ["https://static.crates.io/crates/utf8parse/0.2.2/download"], - strip_prefix = "utf8parse-0.2.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.utf8parse-0.2.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__valuable-0.1.1", - sha256 = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65", - type = "tar.gz", - urls = ["https://static.crates.io/crates/valuable/0.1.1/download"], - strip_prefix = "valuable-0.1.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.valuable-0.1.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__version_check-0.9.5", - sha256 = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/version_check/0.9.5/download"], - strip_prefix = "version_check-0.9.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.version_check-0.9.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__walkdir-2.5.0", - sha256 = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/walkdir/2.5.0/download"], - strip_prefix = "walkdir-2.5.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.walkdir-2.5.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasi-0.11.1-wasi-snapshot-preview1", - sha256 = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasi/0.11.1+wasi-snapshot-preview1/download"], - strip_prefix = "wasi-0.11.1+wasi-snapshot-preview1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasip2-1.0.3-wasi-0.2.9", - sha256 = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasip2/1.0.3+wasi-0.2.9/download"], - strip_prefix = "wasip2-1.0.3+wasi-0.2.9", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasip2-1.0.3+wasi-0.2.9.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasip3-0.4.0-wasi-0.3.0-rc-2026-01-06", - sha256 = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06/download"], - strip_prefix = "wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasm-bindgen-0.2.121", - sha256 = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-bindgen/0.2.121/download"], - strip_prefix = "wasm-bindgen-0.2.121", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-0.2.121.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasm-bindgen-macro-0.2.121", - sha256 = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-bindgen-macro/0.2.121/download"], - strip_prefix = "wasm-bindgen-macro-0.2.121", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-macro-0.2.121.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasm-bindgen-macro-support-0.2.121", - sha256 = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.121/download"], - strip_prefix = "wasm-bindgen-macro-support-0.2.121", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-macro-support-0.2.121.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasm-bindgen-shared-0.2.121", - sha256 = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-bindgen-shared/0.2.121/download"], - strip_prefix = "wasm-bindgen-shared-0.2.121", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-bindgen-shared-0.2.121.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasm-encoder-0.244.0", - sha256 = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-encoder/0.244.0/download"], - strip_prefix = "wasm-encoder-0.244.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-encoder-0.244.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasm-metadata-0.244.0", - sha256 = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasm-metadata/0.244.0/download"], - strip_prefix = "wasm-metadata-0.244.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasm-metadata-0.244.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wasmparser-0.244.0", - sha256 = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wasmparser/0.244.0/download"], - strip_prefix = "wasmparser-0.244.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wasmparser-0.244.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__winapi-util-0.1.11", - sha256 = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22", - type = "tar.gz", - urls = ["https://static.crates.io/crates/winapi-util/0.1.11/download"], - strip_prefix = "winapi-util-0.1.11", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winapi-util-0.1.11.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-core-0.62.2", - sha256 = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-core/0.62.2/download"], - strip_prefix = "windows-core-0.62.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-core-0.62.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-implement-0.60.2", - sha256 = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-implement/0.60.2/download"], - strip_prefix = "windows-implement-0.60.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-implement-0.60.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-interface-0.59.3", - sha256 = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-interface/0.59.3/download"], - strip_prefix = "windows-interface-0.59.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-interface-0.59.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-link-0.2.1", - sha256 = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-link/0.2.1/download"], - strip_prefix = "windows-link-0.2.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-link-0.2.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-result-0.4.1", - sha256 = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-result/0.4.1/download"], - strip_prefix = "windows-result-0.4.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-result-0.4.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-strings-0.5.1", - sha256 = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-strings/0.5.1/download"], - strip_prefix = "windows-strings-0.5.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-strings-0.5.1.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-sys-0.61.2", - sha256 = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-sys/0.61.2/download"], - strip_prefix = "windows-sys-0.61.2", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-sys-0.61.2.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows-targets-0.53.5", - sha256 = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows-targets/0.53.5/download"], - strip_prefix = "windows-targets-0.53.5", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-targets-0.53.5.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows_aarch64_gnullvm-0.53.1", - sha256 = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_aarch64_gnullvm/0.53.1/download"], - strip_prefix = "windows_aarch64_gnullvm-0.53.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_gnullvm-0.53.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows_aarch64_msvc-0.53.1", - sha256 = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_aarch64_msvc/0.53.1/download"], - strip_prefix = "windows_aarch64_msvc-0.53.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_aarch64_msvc-0.53.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows_i686_gnu-0.53.1", - sha256 = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_i686_gnu/0.53.1/download"], - strip_prefix = "windows_i686_gnu-0.53.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnu-0.53.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows_i686_gnullvm-0.53.1", - sha256 = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_i686_gnullvm/0.53.1/download"], - strip_prefix = "windows_i686_gnullvm-0.53.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_gnullvm-0.53.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows_i686_msvc-0.53.1", - sha256 = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_i686_msvc/0.53.1/download"], - strip_prefix = "windows_i686_msvc-0.53.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_i686_msvc-0.53.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows_x86_64_gnu-0.53.1", - sha256 = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_x86_64_gnu/0.53.1/download"], - strip_prefix = "windows_x86_64_gnu-0.53.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnu-0.53.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows_x86_64_gnullvm-0.53.1", - sha256 = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_x86_64_gnullvm/0.53.1/download"], - strip_prefix = "windows_x86_64_gnullvm-0.53.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_gnullvm-0.53.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__windows_x86_64_msvc-0.53.1", - sha256 = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650", - type = "tar.gz", - urls = ["https://static.crates.io/crates/windows_x86_64_msvc/0.53.1/download"], - strip_prefix = "windows_x86_64_msvc-0.53.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows_x86_64_msvc-0.53.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__winnow-0.7.15", - sha256 = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945", - type = "tar.gz", - urls = ["https://static.crates.io/crates/winnow/0.7.15/download"], - strip_prefix = "winnow-0.7.15", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-0.7.15.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__winnow-1.0.3", - sha256 = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1", - type = "tar.gz", - urls = ["https://static.crates.io/crates/winnow/1.0.3/download"], - strip_prefix = "winnow-1.0.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winnow-1.0.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wit-bindgen-0.51.0", - sha256 = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wit-bindgen/0.51.0/download"], - strip_prefix = "wit-bindgen-0.51.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-0.51.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wit-bindgen-0.57.1", - sha256 = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wit-bindgen/0.57.1/download"], - strip_prefix = "wit-bindgen-0.57.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-0.57.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wit-bindgen-core-0.51.0", - sha256 = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wit-bindgen-core/0.51.0/download"], - strip_prefix = "wit-bindgen-core-0.51.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-core-0.51.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wit-bindgen-rust-0.51.0", - sha256 = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wit-bindgen-rust/0.51.0/download"], - strip_prefix = "wit-bindgen-rust-0.51.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-rust-0.51.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wit-bindgen-rust-macro-0.51.0", - sha256 = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wit-bindgen-rust-macro/0.51.0/download"], - strip_prefix = "wit-bindgen-rust-macro-0.51.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-bindgen-rust-macro-0.51.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wit-component-0.244.0", - sha256 = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wit-component/0.244.0/download"], - strip_prefix = "wit-component-0.244.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-component-0.244.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__wit-parser-0.244.0", - sha256 = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736", - type = "tar.gz", - urls = ["https://static.crates.io/crates/wit-parser/0.244.0/download"], - strip_prefix = "wit-parser-0.244.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.wit-parser-0.244.0.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__yansi-1.0.1", - sha256 = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049", - type = "tar.gz", - urls = ["https://static.crates.io/crates/yansi/1.0.1/download"], - strip_prefix = "yansi-1.0.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.yansi-1.0.1.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__zmij-1.0.21", - sha256 = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa", - type = "tar.gz", - urls = ["https://static.crates.io/crates/zmij/1.0.21/download"], - strip_prefix = "zmij-1.0.21", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zmij-1.0.21.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__zstd-0.13.3", - sha256 = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a", - type = "tar.gz", - urls = ["https://static.crates.io/crates/zstd/0.13.3/download"], - strip_prefix = "zstd-0.13.3", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zstd-0.13.3.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__zstd-safe-7.2.4", - sha256 = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d", - type = "tar.gz", - urls = ["https://static.crates.io/crates/zstd-safe/7.2.4/download"], - strip_prefix = "zstd-safe-7.2.4", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zstd-safe-7.2.4.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__zstd-sys-2.0.16-zstd.1.5.7", - sha256 = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748", - type = "tar.gz", - urls = ["https://static.crates.io/crates/zstd-sys/2.0.16+zstd.1.5.7/download"], - strip_prefix = "zstd-sys-2.0.16+zstd.1.5.7", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel"), - ) - - return [ - struct(repo = "vendor_ts__anyhow-1.0.102", is_dev_dep = False), - struct(repo = "vendor_ts__argfile-1.0.0", is_dev_dep = False), - struct(repo = "vendor_ts__chalk-ir-0.104.0", is_dev_dep = False), - struct(repo = "vendor_ts__chrono-0.4.44", is_dev_dep = False), - struct(repo = "vendor_ts__clap-4.6.1", is_dev_dep = False), - struct(repo = "vendor_ts__dunce-1.0.5", is_dev_dep = False), - struct(repo = "vendor_ts__either-1.16.0", is_dev_dep = False), - struct(repo = "vendor_ts__encoding-0.2.33", is_dev_dep = False), - struct(repo = "vendor_ts__figment-0.10.19", is_dev_dep = False), - struct(repo = "vendor_ts__flate2-1.1.9", is_dev_dep = False), - struct(repo = "vendor_ts__glob-0.3.3", is_dev_dep = False), - struct(repo = "vendor_ts__globset-0.4.18", is_dev_dep = False), - struct(repo = "vendor_ts__itertools-0.14.0", is_dev_dep = False), - 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.17.0", is_dev_dep = False), - struct(repo = "vendor_ts__proc-macro2-1.0.106", is_dev_dep = False), - struct(repo = "vendor_ts__quote-1.0.45", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_base_db-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_cfg-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_def-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_ide_db-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_intern-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_parser-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_paths-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_project_model-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_span-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_stdx-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_syntax-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_syntax-bridge-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_vfs-0.0.328", is_dev_dep = False), - struct(repo = "vendor_ts__rayon-1.12.0", is_dev_dep = False), - struct(repo = "vendor_ts__regex-1.12.3", is_dev_dep = False), - struct(repo = "vendor_ts__serde-1.0.228", is_dev_dep = False), - struct(repo = "vendor_ts__serde_json-1.0.150", is_dev_dep = False), - struct(repo = "vendor_ts__serde_with-3.20.0", is_dev_dep = False), - struct(repo = "vendor_ts__serde_yaml-0.9.34-deprecated", is_dev_dep = False), - struct(repo = "vendor_ts__syn-2.0.117", is_dev_dep = False), - struct(repo = "vendor_ts__toml-1.1.2-spec-1.1.0", is_dev_dep = False), - struct(repo = "vendor_ts__tracing-0.1.44", 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.23", is_dev_dep = False), - struct(repo = "vendor_ts__tree-sitter-0.26.9", is_dev_dep = False), - struct(repo = "vendor_ts__tree-sitter-embedded-template-0.25.0", is_dev_dep = False), - struct(repo = "vendor_ts__tree-sitter-python-0.23.6", is_dev_dep = False), - struct(repo = "vendor_ts__tree-sitter-ruby-0.23.1", is_dev_dep = False), - struct(repo = "vendor_ts__triomphe-0.1.15", 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.10.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), - ] +"""Deprecated: re-exports the crate_universe macros from `:crates.bzl`.""" + +load( + ":crates.bzl", + _aliases = "aliases", + _all_crate_deps = "all_crate_deps", + _crate_deps = "crate_deps", + _crate_edition = "crate_edition", + _crate_repositories = "crate_repositories", +) + +aliases = _aliases +all_crate_deps = _all_crate_deps +crate_deps = _crate_deps +crate_edition = _crate_edition +crate_repositories = _crate_repositories diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/dunce-1.0.5/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/dunce-1.0.5/BUILD.bazel new file mode 100644 index 000000000000..51a71fbd99cc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/dunce-1.0.5/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "dunce-1.0.5", + actual = "@vendor_ts__dunce-1.0.5//:dunce", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/dunce/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/dunce/BUILD.bazel new file mode 100644 index 000000000000..20a395e2a06b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/dunce/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "dunce", + actual = "@vendor_ts__dunce-1.0.5//:dunce", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/either-1.19.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/either-1.19.0/BUILD.bazel new file mode 100644 index 000000000000..7bdf7be23063 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/either-1.19.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "either-1.19.0", + actual = "@vendor_ts__either-1.19.0//:either", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/either/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/either/BUILD.bazel new file mode 100644 index 000000000000..0ce5780c3250 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/either/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "either", + actual = "@vendor_ts__either-1.19.0//:either", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/encoding-0.2.33/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/encoding-0.2.33/BUILD.bazel new file mode 100644 index 000000000000..afa34162b826 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/encoding-0.2.33/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "encoding-0.2.33", + actual = "@vendor_ts__encoding-0.2.33//:encoding", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/encoding/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/encoding/BUILD.bazel new file mode 100644 index 000000000000..3cdf487b2c0e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/encoding/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "encoding", + actual = "@vendor_ts__encoding-0.2.33//:encoding", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/figment-0.10.19/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/figment-0.10.19/BUILD.bazel new file mode 100644 index 000000000000..5440d01deff9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/figment-0.10.19/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "figment-0.10.19", + actual = "@vendor_ts__figment-0.10.19//:figment", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/figment/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/figment/BUILD.bazel new file mode 100644 index 000000000000..0ed2dd8af57c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/figment/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "figment", + actual = "@vendor_ts__figment-0.10.19//:figment", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/flate2-1.1.9/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/flate2-1.1.9/BUILD.bazel new file mode 100644 index 000000000000..01b260daea49 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/flate2-1.1.9/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "flate2-1.1.9", + actual = "@vendor_ts__flate2-1.1.9//:flate2", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/flate2/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/flate2/BUILD.bazel new file mode 100644 index 000000000000..75cab3adff50 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/flate2/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "flate2", + actual = "@vendor_ts__flate2-1.1.9//:flate2", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/glob-0.3.4/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/glob-0.3.4/BUILD.bazel new file mode 100644 index 000000000000..af2be4898b7b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/glob-0.3.4/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "glob-0.3.4", + actual = "@vendor_ts__glob-0.3.4//:glob", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/glob/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/glob/BUILD.bazel new file mode 100644 index 000000000000..7d7180483c6b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/glob/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "glob", + actual = "@vendor_ts__glob-0.3.4//:glob", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/globset-0.4.18/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/globset-0.4.18/BUILD.bazel new file mode 100644 index 000000000000..c55adf24540c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/globset-0.4.18/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "globset-0.4.18", + actual = "@vendor_ts__globset-0.4.18//:globset", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/globset/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/globset/BUILD.bazel new file mode 100644 index 000000000000..227ab092ee04 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/globset/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "globset", + actual = "@vendor_ts__globset-0.4.18//:globset", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/itertools-0.15.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/itertools-0.15.0/BUILD.bazel new file mode 100644 index 000000000000..e1a51d621c4d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/itertools-0.15.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "itertools-0.15.0", + actual = "@vendor_ts__itertools-0.15.0//:itertools", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/itertools/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/itertools/BUILD.bazel new file mode 100644 index 000000000000..ede210e8f3fb --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/itertools/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "itertools", + actual = "@vendor_ts__itertools-0.15.0//:itertools", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/lazy_static-1.5.1/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/lazy_static-1.5.1/BUILD.bazel new file mode 100644 index 000000000000..25498c7c5079 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/lazy_static-1.5.1/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "lazy_static-1.5.1", + actual = "@vendor_ts__lazy_static-1.5.1//:lazy_static", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/lazy_static/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/lazy_static/BUILD.bazel new file mode 100644 index 000000000000..206948748f1f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/lazy_static/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "lazy_static", + actual = "@vendor_ts__lazy_static-1.5.1//:lazy_static", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/mustache-0.9.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/mustache-0.9.0/BUILD.bazel new file mode 100644 index 000000000000..efad57611492 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/mustache-0.9.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "mustache-0.9.0", + actual = "@vendor_ts__mustache-0.9.0//:mustache", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/mustache/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/mustache/BUILD.bazel new file mode 100644 index 000000000000..23dee02bded5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/mustache/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "mustache", + actual = "@vendor_ts__mustache-0.9.0//:mustache", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/num-traits-0.2.19/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/num-traits-0.2.19/BUILD.bazel new file mode 100644 index 000000000000..2a511d29c9d8 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/num-traits-0.2.19/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "num-traits-0.2.19", + actual = "@vendor_ts__num-traits-0.2.19//:num_traits", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/num-traits/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/num-traits/BUILD.bazel new file mode 100644 index 000000000000..62ca3f42144e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/num-traits/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "num-traits", + actual = "@vendor_ts__num-traits-0.2.19//:num_traits", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/num_cpus-1.17.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/num_cpus-1.17.0/BUILD.bazel new file mode 100644 index 000000000000..3faa31f5f803 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/num_cpus-1.17.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "num_cpus-1.17.0", + actual = "@vendor_ts__num_cpus-1.17.0//:num_cpus", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/num_cpus/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/num_cpus/BUILD.bazel new file mode 100644 index 000000000000..ee8b9b8c23cc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/num_cpus/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "num_cpus", + actual = "@vendor_ts__num_cpus-1.17.0//:num_cpus", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/proc-macro2-1.0.107/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/proc-macro2-1.0.107/BUILD.bazel new file mode 100644 index 000000000000..f18b6a1a57a3 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/proc-macro2-1.0.107/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "proc-macro2-1.0.107", + actual = "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/proc-macro2/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/proc-macro2/BUILD.bazel new file mode 100644 index 000000000000..cda647ad06ec --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/proc-macro2/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "proc-macro2", + actual = "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/quote-1.0.47/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/quote-1.0.47/BUILD.bazel new file mode 100644 index 000000000000..fad5a98cf61a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/quote-1.0.47/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "quote-1.0.47", + actual = "@vendor_ts__quote-1.0.47//:quote", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/quote/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/quote/BUILD.bazel new file mode 100644 index 000000000000..30a4bb96671a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/quote/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "quote", + actual = "@vendor_ts__quote-1.0.47//:quote", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_base_db-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_base_db-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..522cd03a874f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_base_db-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_base_db-0.0.357", + actual = "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_base_db/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_base_db/BUILD.bazel new file mode 100644 index 000000000000..52bab14bfd9e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_base_db/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_base_db", + actual = "@vendor_ts__ra_ap_base_db-0.0.357//:ra_ap_base_db", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_cfg-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_cfg-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..c9ae80e8e7de --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_cfg-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_cfg-0.0.357", + actual = "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_cfg/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_cfg/BUILD.bazel new file mode 100644 index 000000000000..242802fe8e64 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_cfg/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_cfg", + actual = "@vendor_ts__ra_ap_cfg-0.0.357//:ra_ap_cfg", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..7c906a3c510f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_hir-0.0.357", + actual = "@vendor_ts__ra_ap_hir-0.0.357//:ra_ap_hir", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir/BUILD.bazel new file mode 100644 index 000000000000..6ebc3fc39ff9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_hir", + actual = "@vendor_ts__ra_ap_hir-0.0.357//:ra_ap_hir", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_def-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_def-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..6f113d97f897 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_def-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_hir_def-0.0.357", + actual = "@vendor_ts__ra_ap_hir_def-0.0.357//:ra_ap_hir_def", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_def/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_def/BUILD.bazel new file mode 100644 index 000000000000..d6bde01c8e2a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_def/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_hir_def", + actual = "@vendor_ts__ra_ap_hir_def-0.0.357//:ra_ap_hir_def", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_expand-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_expand-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..a3c66865e438 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_expand-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_hir_expand-0.0.357", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_expand/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_expand/BUILD.bazel new file mode 100644 index 000000000000..c466464f9448 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_expand/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_hir_expand", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.357//:ra_ap_hir_expand", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_ty-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_ty-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..72752e11b100 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_ty-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_hir_ty-0.0.357", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.357//:ra_ap_hir_ty", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_ty/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_ty/BUILD.bazel new file mode 100644 index 000000000000..2511ae98bb22 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_ty/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_hir_ty", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.357//:ra_ap_hir_ty", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_ide_db-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_ide_db-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..260ba55cafb1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_ide_db-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_ide_db-0.0.357", + actual = "@vendor_ts__ra_ap_ide_db-0.0.357//:ra_ap_ide_db", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_ide_db/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_ide_db/BUILD.bazel new file mode 100644 index 000000000000..26237388c05e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_ide_db/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_ide_db", + actual = "@vendor_ts__ra_ap_ide_db-0.0.357//:ra_ap_ide_db", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_intern-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_intern-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..3528a684713a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_intern-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_intern-0.0.357", + actual = "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_intern/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_intern/BUILD.bazel new file mode 100644 index 000000000000..659d768f896a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_intern/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_intern", + actual = "@vendor_ts__ra_ap_intern-0.0.357//:ra_ap_intern", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_load-cargo-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_load-cargo-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..e482e8bcb41e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_load-cargo-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_load-cargo-0.0.357", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.357//:ra_ap_load_cargo", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_load-cargo/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_load-cargo/BUILD.bazel new file mode 100644 index 000000000000..194f77c2ab12 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_load-cargo/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_load-cargo", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.357//:ra_ap_load_cargo", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_parser-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_parser-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..3c1400f69d3a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_parser-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_parser-0.0.357", + actual = "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_parser/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_parser/BUILD.bazel new file mode 100644 index 000000000000..618c7c0f90cf --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_parser/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_parser", + actual = "@vendor_ts__ra_ap_parser-0.0.357//:ra_ap_parser", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_paths-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_paths-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..9bc83630c2f1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_paths-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_paths-0.0.357", + actual = "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_paths/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_paths/BUILD.bazel new file mode 100644 index 000000000000..80c6e3be92ff --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_paths/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_paths", + actual = "@vendor_ts__ra_ap_paths-0.0.357//:ra_ap_paths", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_project_model-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_project_model-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..5ca2f011279b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_project_model-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_project_model-0.0.357", + actual = "@vendor_ts__ra_ap_project_model-0.0.357//:ra_ap_project_model", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_project_model/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_project_model/BUILD.bazel new file mode 100644 index 000000000000..495889ac38c8 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_project_model/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_project_model", + actual = "@vendor_ts__ra_ap_project_model-0.0.357//:ra_ap_project_model", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_span-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_span-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..5eee6ee0f576 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_span-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_span-0.0.357", + actual = "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_span/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_span/BUILD.bazel new file mode 100644 index 000000000000..89ab13450893 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_span/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_span", + actual = "@vendor_ts__ra_ap_span-0.0.357//:ra_ap_span", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_stdx-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_stdx-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..89d76f348b31 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_stdx-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_stdx-0.0.357", + actual = "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..1c4d68ad09c0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_syntax-0.0.357", + actual = "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-bridge-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-bridge-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..2f7669d8bfd6 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-bridge-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_syntax-bridge-0.0.357", + actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-bridge/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-bridge/BUILD.bazel new file mode 100644 index 000000000000..455f0efd2ccb --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-bridge/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_syntax-bridge", + actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.357//:ra_ap_syntax_bridge", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax/BUILD.bazel new file mode 100644 index 000000000000..77fa37931e8c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_syntax", + actual = "@vendor_ts__ra_ap_syntax-0.0.357//:ra_ap_syntax", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_toolchain-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_toolchain-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..382593c86aeb --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_toolchain-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_toolchain-0.0.357", + actual = "@vendor_ts__ra_ap_toolchain-0.0.357//:ra_ap_toolchain", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_toolchain/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_toolchain/BUILD.bazel new file mode 100644 index 000000000000..d21ab3062337 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_toolchain/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_toolchain", + actual = "@vendor_ts__ra_ap_toolchain-0.0.357//:ra_ap_toolchain", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_vfs-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_vfs-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..9f4331e7a920 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_vfs-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_vfs-0.0.357", + actual = "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_vfs/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_vfs/BUILD.bazel new file mode 100644 index 000000000000..2b28f60d1e94 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_vfs/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ra_ap_vfs", + actual = "@vendor_ts__ra_ap_vfs-0.0.357//:ra_ap_vfs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/rand-0.10.3/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rand-0.10.3/BUILD.bazel new file mode 100644 index 000000000000..5cf1998a5cd0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rand-0.10.3/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "rand-0.10.3", + actual = "@vendor_ts__rand-0.10.3//:rand", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/rand/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rand/BUILD.bazel new file mode 100644 index 000000000000..ddf617c23fe9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rand/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "rand", + actual = "@vendor_ts__rand-0.10.3//:rand", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/rayon-1.12.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rayon-1.12.0/BUILD.bazel new file mode 100644 index 000000000000..375eae0288e9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rayon-1.12.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "rayon-1.12.0", + actual = "@vendor_ts__rayon-1.12.0//:rayon", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/rayon/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rayon/BUILD.bazel new file mode 100644 index 000000000000..456a6693f51a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rayon/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "rayon", + actual = "@vendor_ts__rayon-1.12.0//:rayon", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/regex-1.13.1/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/regex-1.13.1/BUILD.bazel new file mode 100644 index 000000000000..392a18a9b79b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/regex-1.13.1/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "regex-1.13.1", + actual = "@vendor_ts__regex-1.13.1//:regex", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/regex/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/regex/BUILD.bazel new file mode 100644 index 000000000000..36658463cff8 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/regex/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "regex", + actual = "@vendor_ts__regex-1.13.1//:regex", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde-1.0.229/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde-1.0.229/BUILD.bazel new file mode 100644 index 000000000000..da47d9e809ca --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde-1.0.229/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde-1.0.229", + actual = "@vendor_ts__serde-1.0.229//:serde", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde/BUILD.bazel new file mode 100644 index 000000000000..667e68cba9c5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde", + actual = "@vendor_ts__serde-1.0.229//:serde", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_json-1.0.151/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_json-1.0.151/BUILD.bazel new file mode 100644 index 000000000000..c6e3be6630ab --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_json-1.0.151/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde_json-1.0.151", + actual = "@vendor_ts__serde_json-1.0.151//:serde_json", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_json/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_json/BUILD.bazel new file mode 100644 index 000000000000..a235a8747882 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_json/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde_json", + actual = "@vendor_ts__serde_json-1.0.151//:serde_json", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_with-3.24.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_with-3.24.0/BUILD.bazel new file mode 100644 index 000000000000..db827ed8cd50 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_with-3.24.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde_with-3.24.0", + actual = "@vendor_ts__serde_with-3.24.0//:serde_with", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_with/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_with/BUILD.bazel new file mode 100644 index 000000000000..683145788e91 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_with/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde_with", + actual = "@vendor_ts__serde_with-3.24.0//:serde_with", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_yaml-0.9.34+deprecated/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_yaml-0.9.34+deprecated/BUILD.bazel new file mode 100644 index 000000000000..b4d5322e507f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_yaml-0.9.34+deprecated/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde_yaml-0.9.34+deprecated", + actual = "@vendor_ts__serde_yaml-0.9.34-deprecated//:serde_yaml", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_yaml/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_yaml/BUILD.bazel new file mode 100644 index 000000000000..a6bbe7aa33ff --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_yaml/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "serde_yaml", + actual = "@vendor_ts__serde_yaml-0.9.34-deprecated//:serde_yaml", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/stdx-0.0.357/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/stdx-0.0.357/BUILD.bazel new file mode 100644 index 000000000000..af179548cde2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/stdx-0.0.357/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "stdx-0.0.357", + actual = "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/stdx/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/stdx/BUILD.bazel new file mode 100644 index 000000000000..0cb1be03e3b5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/stdx/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "stdx", + actual = "@vendor_ts__ra_ap_stdx-0.0.357//:ra_ap_stdx", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/syn-3.0.6/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/syn-3.0.6/BUILD.bazel new file mode 100644 index 000000000000..c591d6040f21 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/syn-3.0.6/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "syn-3.0.6", + actual = "@vendor_ts__syn-3.0.6//:syn", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/syn/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/syn/BUILD.bazel new file mode 100644 index 000000000000..9cf2a4efbbe5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/syn/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "syn", + actual = "@vendor_ts__syn-3.0.6//:syn", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/toml-1.1.6+spec-1.1.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/toml-1.1.6+spec-1.1.0/BUILD.bazel new file mode 100644 index 000000000000..0b35924e2827 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/toml-1.1.6+spec-1.1.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "toml-1.1.6+spec-1.1.0", + actual = "@vendor_ts__toml-1.1.6-spec-1.1.0//:toml", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/toml/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/toml/BUILD.bazel new file mode 100644 index 000000000000..5c4482309f75 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/toml/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "toml", + actual = "@vendor_ts__toml-1.1.6-spec-1.1.0//:toml", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-0.1.44/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-0.1.44/BUILD.bazel new file mode 100644 index 000000000000..35e591002a36 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-0.1.44/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tracing-0.1.44", + actual = "@vendor_ts__tracing-0.1.44//:tracing", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-flame-0.2.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-flame-0.2.0/BUILD.bazel new file mode 100644 index 000000000000..2c641a961ed2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-flame-0.2.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tracing-flame-0.2.0", + actual = "@vendor_ts__tracing-flame-0.2.0//:tracing_flame", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-flame/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-flame/BUILD.bazel new file mode 100644 index 000000000000..b2746239b9b2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-flame/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tracing-flame", + actual = "@vendor_ts__tracing-flame-0.2.0//:tracing_flame", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-subscriber-0.3.23/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-subscriber-0.3.23/BUILD.bazel new file mode 100644 index 000000000000..8d69c6f00c98 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-subscriber-0.3.23/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tracing-subscriber-0.3.23", + actual = "@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-subscriber/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-subscriber/BUILD.bazel new file mode 100644 index 000000000000..bd028fa3c4cd --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing-subscriber/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tracing-subscriber", + actual = "@vendor_ts__tracing-subscriber-0.3.23//:tracing_subscriber", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing/BUILD.bazel new file mode 100644 index 000000000000..7c70f0946694 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tracing/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tracing", + actual = "@vendor_ts__tracing-0.1.44//:tracing", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-0.26.9/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-0.26.9/BUILD.bazel new file mode 100644 index 000000000000..bb089d3bae5b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-0.26.9/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-0.26.9", + actual = "@vendor_ts__tree-sitter-0.26.9//:tree_sitter", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-embedded-template-0.25.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-embedded-template-0.25.0/BUILD.bazel new file mode 100644 index 000000000000..8cdd2b80ef48 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-embedded-template-0.25.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-embedded-template-0.25.0", + actual = "@vendor_ts__tree-sitter-embedded-template-0.25.0//:tree_sitter_embedded_template", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-embedded-template/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-embedded-template/BUILD.bazel new file mode 100644 index 000000000000..44c55f4f1356 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-embedded-template/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-embedded-template", + actual = "@vendor_ts__tree-sitter-embedded-template-0.25.0//:tree_sitter_embedded_template", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-json-0.24.8/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-json-0.24.8/BUILD.bazel new file mode 100644 index 000000000000..ac225cb7190f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-json-0.24.8/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-json-0.24.8", + actual = "@vendor_ts__tree-sitter-json-0.24.8//:tree_sitter_json", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-json/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-json/BUILD.bazel new file mode 100644 index 000000000000..984766ca7f00 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-json/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-json", + actual = "@vendor_ts__tree-sitter-json-0.24.8//:tree_sitter_json", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-python-0.25.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-python-0.25.0/BUILD.bazel new file mode 100644 index 000000000000..e457a6d859bc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-python-0.25.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-python-0.25.0", + actual = "@vendor_ts__tree-sitter-python-0.25.0//:tree_sitter_python", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-python/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-python/BUILD.bazel new file mode 100644 index 000000000000..83d48c1d99af --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-python/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-python", + actual = "@vendor_ts__tree-sitter-python-0.25.0//:tree_sitter_python", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ql-0.23.1/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ql-0.23.1/BUILD.bazel new file mode 100644 index 000000000000..e825552920d1 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ql-0.23.1/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-ql-0.23.1", + actual = "@vendor_ts__tree-sitter-ql-0.23.1//:tree_sitter_ql", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ql/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ql/BUILD.bazel new file mode 100644 index 000000000000..acf0db48ed55 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ql/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-ql", + actual = "@vendor_ts__tree-sitter-ql-0.23.1//:tree_sitter_ql", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ruby-0.23.1/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ruby-0.23.1/BUILD.bazel new file mode 100644 index 000000000000..1848cc88cefe --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ruby-0.23.1/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-ruby-0.23.1", + actual = "@vendor_ts__tree-sitter-ruby-0.23.1//:tree_sitter_ruby", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ruby/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ruby/BUILD.bazel new file mode 100644 index 000000000000..ec85d9a20497 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter-ruby/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter-ruby", + actual = "@vendor_ts__tree-sitter-ruby-0.23.1//:tree_sitter_ruby", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter/BUILD.bazel new file mode 100644 index 000000000000..8ecd89c77e5b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/tree-sitter/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "tree-sitter", + actual = "@vendor_ts__tree-sitter-0.26.9//:tree_sitter", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/triomphe-0.1.16/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/triomphe-0.1.16/BUILD.bazel new file mode 100644 index 000000000000..20d507a4952e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/triomphe-0.1.16/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "triomphe-0.1.16", + actual = "@vendor_ts__triomphe-0.1.16//:triomphe", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/triomphe/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/triomphe/BUILD.bazel new file mode 100644 index 000000000000..d3048533792a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/triomphe/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "triomphe", + actual = "@vendor_ts__triomphe-0.1.16//:triomphe", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ungrammar-1.16.1/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ungrammar-1.16.1/BUILD.bazel new file mode 100644 index 000000000000..3c2dbccf074d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ungrammar-1.16.1/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ungrammar-1.16.1", + actual = "@vendor_ts__ungrammar-1.16.1//:ungrammar", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ungrammar/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ungrammar/BUILD.bazel new file mode 100644 index 000000000000..ed687cea91b3 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ungrammar/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "ungrammar", + actual = "@vendor_ts__ungrammar-1.16.1//:ungrammar", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/zstd-0.14.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/zstd-0.14.0/BUILD.bazel new file mode 100644 index 000000000000..573e924c4aa6 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/zstd-0.14.0/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "zstd-0.14.0", + actual = "@vendor_ts__zstd-0.14.0//:zstd", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/zstd/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/zstd/BUILD.bazel new file mode 100644 index 000000000000..1b6d8a735217 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/zstd/BUILD.bazel @@ -0,0 +1,15 @@ +############################################################################### +# @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 +############################################################################### + +package(default_visibility = ["//visibility:public"]) + +alias( + name = "zstd", + actual = "@vendor_ts__zstd-0.14.0//:zstd", + tags = ["manual"], +) diff --git a/misc/codegen/generators/qlgen.py b/misc/codegen/generators/qlgen.py index c3848917c49e..2b836b2706d8 100755 --- a/misc/codegen/generators/qlgen.py +++ b/misc/codegen/generators/qlgen.py @@ -83,6 +83,8 @@ def _humanize(s: str) -> str: _format_re = re.compile(r"\{(\w+)\}") +# Regular expression to find manual `toStringImpl`s +_to_string_impl_re = re.compile(r"\bstring\s+toStringImpl\s*\(") def _get_doc(cls: schema.Class, prop: schema.Property, plural=None): @@ -117,6 +119,7 @@ def _get_doc(cls: schema.Class, prop: schema.Property, plural=None): @dataclasses.dataclass class Resolver: lookup: typing.Dict[str, schema.ClassBase] + custom_to_string_impls: typing.Set[str] = dataclasses.field(default_factory=set) _property_cache: typing.Dict[tuple[int, int], ql.Property] = dataclasses.field( default_factory=dict, init=False ) @@ -237,6 +240,10 @@ def get_ql_class(self, cls: schema.Class) -> ql.Class: hideable="ql_hideable" in cls.pragmas, internal="ql_internal" in cls.pragmas, cfg=cls.cfg, + to_string_impl_from_primary_class=bool( + cls.pragmas.get("ql_to_string_impl_from_primary_class") + ) + and cls.name not in self.custom_to_string_impls, ) return self._class_cache[cache_key] @@ -496,7 +503,15 @@ def generate(opts, renderer): data = schemaloader.load_file(input) - resolver = Resolver(data.classes) + # Schema class names whose wrapper define a manual `toStringImpl` + custom_to_string_impls = { + cls.name + for cls in data.classes.values() + if not cls.imported + and (stub_out / _get_path_impl(cls)).is_file() + and _to_string_impl_re.search((stub_out / _get_path_impl(cls)).read_text()) + } + resolver = Resolver(data.classes, custom_to_string_impls) classes = { name: resolver.get_ql_class(cls) @@ -522,7 +537,6 @@ def generate(opts, 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 ] diff --git a/misc/codegen/lib/ql.py b/misc/codegen/lib/ql.py index 503570c2adc3..7b4434a42e8a 100644 --- a/misc/codegen/lib/ql.py +++ b/misc/codegen/lib/ql.py @@ -117,6 +117,7 @@ class Class: doc: List[str] = field(default_factory=list) hideable: bool = False cfg: bool = False + to_string_impl_from_primary_class: bool = False def __post_init__(self): def get_bases(bases): diff --git a/misc/codegen/lib/schemadefs.py b/misc/codegen/lib/schemadefs.py index 125951701c9b..c4d3c0669e80 100644 --- a/misc/codegen/lib/schemadefs.py +++ b/misc/codegen/lib/schemadefs.py @@ -263,6 +263,12 @@ def __getitem__(self, item): ql.add(_Parametrized(_ClassPragma("default_doc_name"), factory=lambda doc: doc)) ql.add(_ClassPragma("hideable", inherited=True)) +ql.add( + _Parametrized( + _ClassPragma("to_string_impl_from_primary_class", inherited=True), + factory=lambda enabled: enabled, + ) +) ql.add(_Pragma("internal")) ql.add(_Parametrized(_Pragma("name"), factory=lambda name: name)) ql.add(_Parametrized(_PropertyPragma("db_table_name"), factory=lambda name: name)) diff --git a/misc/codegen/templates/ql_class.mustache b/misc/codegen/templates/ql_class.mustache index e80e0b0eebda..391c096afa31 100644 --- a/misc/codegen/templates/ql_class.mustache +++ b/misc/codegen/templates/ql_class.mustache @@ -77,6 +77,10 @@ module Generated { {{/root}} {{#final}} override string getAPrimaryQlClass() { result = "{{name}}" } + {{#to_string_impl_from_primary_class}} + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + {{/to_string_impl_from_primary_class}} {{/final}} {{#properties}} diff --git a/misc/codegen/test/test_qlgen.py b/misc/codegen/test/test_qlgen.py index a2434432390f..7e5bce3a06c1 100644 --- a/misc/codegen/test/test_qlgen.py +++ b/misc/codegen/test/test_qlgen.py @@ -196,6 +196,59 @@ def test_one_empty_class(generate_classes): } +def test_to_string_impl_from_primary_class(generate_classes): + assert generate_classes( + [ + schema.Class( + "A", + derived={"B"}, + pragmas={"ql_to_string_impl_from_primary_class": True}, + ), + schema.Class( + "B", + bases=["A"], + pragmas={"ql_to_string_impl_from_primary_class": True}, + ), + ] + ) == { + "A.qll": ( + a_ql_class_public(name="A"), + a_ql_stub(name="A"), + a_ql_class( + name="A", + imports=[stub_import_prefix + "A"], + to_string_impl_from_primary_class=True, + ), + ), + "B.qll": ( + a_ql_class_public(name="B", imports=[stub_import_prefix + "A"]), + a_ql_stub(name="B"), + a_ql_class( + name="B", + final=True, + bases=["A"], + bases_impl=["AImpl::A"], + imports=[ + stub_import_prefix_internal + "AImpl::Impl as AImpl", + ], + to_string_impl_from_primary_class=True, + ), + ), + } + + +def test_to_string_impl_from_primary_class_is_not_generated_when_custom(): + cls = schema.Class( + "A", + pragmas={"ql_to_string_impl_from_primary_class": True}, + ) + # Pass `A` as a class with a custom `toStringImpl` + resolver = qlgen.Resolver({"A": cls}, {"A"}) + + # Resolving `A` gives a class where `to_string_impl_from_primary_class` does not hold. + assert not resolver.get_ql_class(cls).to_string_impl_from_primary_class + + def test_one_empty_internal_class(generate_classes): assert generate_classes([schema.Class("A", pragmas=["ql_internal"])]) == { "A.qll": ( diff --git a/misc/codegen/test/test_schemaloader.py b/misc/codegen/test/test_schemaloader.py index 5e8ba91b742a..cdfc684ef391 100644 --- a/misc/codegen/test/test_schemaloader.py +++ b/misc/codegen/test/test_schemaloader.py @@ -382,6 +382,29 @@ class A: } +def test_inherited_to_string_impl_from_primary_class_pragma(): + @load + class data: + @defs.ql.to_string_impl_from_primary_class(True) + class A: + pass + + class B(A): + pass + + @defs.ql.to_string_impl_from_primary_class(False) + class C(B): + pass + + class D(C): + pass + + assert data.classes["A"].pragmas["ql_to_string_impl_from_primary_class"] is True + assert data.classes["B"].pragmas["ql_to_string_impl_from_primary_class"] is True + assert data.classes["C"].pragmas["ql_to_string_impl_from_primary_class"] is False + assert data.classes["D"].pragmas["ql_to_string_impl_from_primary_class"] is False + + def test_synth_from_class(): @load class data: diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 4289e0e8c4f7..8342bb58f455 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.58.md b/misc/suite-helpers/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.59.md b/misc/suite-helpers/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.60.md b/misc/suite-helpers/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 08ea3909354f..e0eab12f1948 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.0.60 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index ba51f45be36f..52c76d89213a 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.57 +version: 1.0.60 groups: shared warnOnImplicitThis: true diff --git a/python/extractor/cli-integration-test/parser-telemetry/repo_dir/old_parser.py b/python/extractor/cli-integration-test/parser-telemetry/repo_dir/old_parser.py new file mode 100644 index 000000000000..7d4290a117a4 --- /dev/null +++ b/python/extractor/cli-integration-test/parser-telemetry/repo_dir/old_parser.py @@ -0,0 +1 @@ +x = 1 diff --git a/python/extractor/cli-integration-test/parser-telemetry/repo_dir/tree_sitter_parser.py b/python/extractor/cli-integration-test/parser-telemetry/repo_dir/tree_sitter_parser.py new file mode 100644 index 000000000000..08a86e1f4c6d --- /dev/null +++ b/python/extractor/cli-integration-test/parser-telemetry/repo_dir/tree_sitter_parser.py @@ -0,0 +1,3 @@ +match 1: + case 1: + pass diff --git a/python/extractor/cli-integration-test/parser-telemetry/test.sh b/python/extractor/cli-integration-test/parser-telemetry/test.sh new file mode 100755 index 000000000000..86219c86bf12 --- /dev/null +++ b/python/extractor/cli-integration-test/parser-telemetry/test.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -Eeuo pipefail # see https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ + +set -x + +CODEQL=${CODEQL:-codeql} + +SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +cd "$SCRIPTDIR" + +rm -rf db + +$CODEQL database create db --language python --source-root repo_dir/ +python3 test_parser_telemetry.py db + +rm -rf db diff --git a/python/extractor/cli-integration-test/parser-telemetry/test_parser_telemetry.py b/python/extractor/cli-integration-test/parser-telemetry/test_parser_telemetry.py new file mode 100644 index 000000000000..c848f63eacd5 --- /dev/null +++ b/python/extractor/cli-integration-test/parser-telemetry/test_parser_telemetry.py @@ -0,0 +1,25 @@ +import glob +import json +import os +import sys + + +database = sys.argv[1] +diagnostics = [] +diagnostic_dir = os.path.join(database, "diagnostic", "extractors", "python") +for path in glob.glob(os.path.join(diagnostic_dir, "*.jsonl")): + with open(path) as diagnostic_file: + diagnostics.extend(json.loads(line) for line in diagnostic_file) +parser_statistics = [ + diagnostic + for diagnostic in diagnostics + if diagnostic["source"]["id"] == "py/extractor/parser-statistics" +] +actual = ( + sum(diagnostic["attributes"]["old_parser_file_count"] for diagnostic in parser_statistics), + sum( + diagnostic["attributes"]["tree_sitter_parser_file_count"] + for diagnostic in parser_statistics + ), +) +assert actual == (1, 1), actual diff --git a/python/extractor/cli-integration-test/writing-diagnostics/diagnostics.expected b/python/extractor/cli-integration-test/writing-diagnostics/diagnostics.expected index 12a241ad7b68..4b6fceb48faf 100644 --- a/python/extractor/cli-integration-test/writing-diagnostics/diagnostics.expected +++ b/python/extractor/cli-integration-test/writing-diagnostics/diagnostics.expected @@ -161,3 +161,24 @@ "telemetry": true } } +{ + "attributes": { + "extractor_flags": "default", + "extractor_version": "7.1.10", + "python_analysis_version": "3.12", + "python_runtime_version": "3.12.3" + }, + "markdownMessage": "Internal telemetry for the Python extractor.\n\nNo action needed.", + "severity": "note", + "source": { + "extractorName": "python", + "id": "py/extractor/summary", + "name": "Python extractor telemetry" + }, + "timestamp": "2026-09-01T13:41:33.056818Z", + "visibility": { + "cliSummaryTable": false, + "statusPage": false, + "telemetry": true + } +} diff --git a/python/extractor/cli-integration-test/writing-diagnostics/test_diagnostics_output.py b/python/extractor/cli-integration-test/writing-diagnostics/test_diagnostics_output.py index 0dce022a0f95..4108b9731943 100644 --- a/python/extractor/cli-integration-test/writing-diagnostics/test_diagnostics_output.py +++ b/python/extractor/cli-integration-test/writing-diagnostics/test_diagnostics_output.py @@ -1,7 +1,28 @@ import os import sys +import glob +import json sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", "..", "integration-tests")) import diagnostics_test_utils test_db = "db" -diagnostics_test_utils.check_diagnostics(".", test_db, skip_attributes=True) +diagnostics = [] +diagnostic_dir = os.path.join(test_db, "diagnostic", "extractors", "python") +for path in glob.glob(os.path.join(diagnostic_dir, "*.jsonl")): + with open(path) as diagnostic_file: + diagnostics.extend(json.loads(line) for line in diagnostic_file) +summary = [ + diagnostic + for diagnostic in diagnostics + if diagnostic["source"]["id"] == "py/extractor/summary" +] +assert len(summary) == 1 +assert summary[0]["attributes"]["extractor_flags"] == "default" +diagnostics_test_utils.check_diagnostics( + ".", + test_db, + skip_attributes=True, + replacements={ + r'"py/extractor/parser-statistics"': '"cli/py/extractor/parser-statistics"' + }, +) diff --git a/python/extractor/extending-the-parser.md b/python/extractor/extending-the-parser.md index 55bdd6c2a0d1..54b11d4ff855 100644 --- a/python/extractor/extending-the-parser.md +++ b/python/extractor/extending-the-parser.md @@ -43,7 +43,7 @@ This grammar can be found in the `grammar.js` file in the `tsg-python/tsp` subdi Note that whenever changes are made to `grammar.js`, you must regenerate the parser files by running ```sh -tree-sitter generate +tree-sitter generate --abi 14 ``` inside the `tsp` directory. @@ -51,13 +51,20 @@ You'll need to install the `tree-sitter` CLI in order to run this command. One way to install it is to use `cargo`: ```sh -cargo install tree-sitter-cli +cargo install tree-sitter-cli --version 0.25.10 --locked ``` (This presupposes you have `cargo` available, but you'll need this anyway when compiling `tsg-python`.) Once the parser files have been regenerated, they'll get picked up automatically when `tsg-python` is rebuilt. +The identifier rule supplements the generator's Unicode 16 properties with the +Unicode 17 `XID_Start` and `XID_Continue` additions from the Unicode Character +Database. Keep both sets of additions in sync when updating Unicode support. +Once the generator includes Unicode 17, these additions can be removed. +The `unicode_identifiers_new.py` parser fixture and `unicode17-identifiers` QL test +cover extraction independently of the host Python interpreter's Unicode version. + > Pro-tip: When you're done with your parser changes, and go to commit these to a branch, put the autogenerated files in their own commit. > This makes it easier to review the changes, and if you need to go back and regenerate the files again, it's easy to modify just that commit. diff --git a/python/extractor/semmle/cmdline.py b/python/extractor/semmle/cmdline.py index 47007c065fdc..213a1f4affae 100644 --- a/python/extractor/semmle/cmdline.py +++ b/python/extractor/semmle/cmdline.py @@ -1,4 +1,4 @@ -from optparse import OptionParser, OptionGroup, HelpFormatter +from optparse import Option, OptionParser, OptionGroup, HelpFormatter import shlex import sys import os @@ -8,9 +8,21 @@ from semmle.util import VERSION +DEFAULT_AUTOBUILDER_FLAGS = {"R", "c", "v", "verbosity", "z"} + + +class RecordingOption(Option): + def process(self, opt, value, values, parser): + flag = (self._short_opts or self._long_opts)[0].lstrip("-") + if flag not in DEFAULT_AUTOBUILDER_FLAGS: + parser.extractor_flags.add(flag) + return Option.process(self, opt, value, values, parser) + + def make_parser(): '''Parse command_line, returning options, arguments''' - parser = OptionParser(add_help_option=False, version='%s' % VERSION) + parser = OptionParser(option_class=RecordingOption, add_help_option=False, version='%s' % VERSION) + parser.extractor_flags = set() import_options = OptionGroup(parser, "Import following options", description="Note that -a -n -g and -t are included for backwards compatibility. They are ignored") @@ -172,6 +184,7 @@ def parse(command_line): setattr(options, attr, dval) args.extend(extra_args) del options.file + options.extractor_flags = sorted(parser.extractor_flags) if options.help: if options.verbose: for opt in parser._get_all_options(): diff --git a/python/extractor/semmle/extractors/module_printer.py b/python/extractor/semmle/extractors/module_printer.py index d2f4a6cc92bd..aeaa8e63f5eb 100644 --- a/python/extractor/semmle/extractors/module_printer.py +++ b/python/extractor/semmle/extractors/module_printer.py @@ -6,9 +6,9 @@ class ModulePrinter(object): name = "module printer" - def __init__(self, options, trap_folder, src_archive, renamer, logger): + def __init__(self, options, trap_folder, src_archive, renamer, logger, diagnostics_writer): self.logger = logger - self.py_extractor = PythonExtractor(options, trap_folder, src_archive, logger) + self.py_extractor = PythonExtractor(options, trap_folder, src_archive, logger, diagnostics_writer) def process(self, unit): imports = () diff --git a/python/extractor/semmle/extractors/py_extractor.py b/python/extractor/semmle/extractors/py_extractor.py index 8014063b3cb8..3b5a37fb7a96 100644 --- a/python/extractor/semmle/extractors/py_extractor.py +++ b/python/extractor/semmle/extractors/py_extractor.py @@ -16,6 +16,7 @@ def __init__(self, options, trap_folder, src_archive, logger: Logger, diagnostic self.module_extractor = extractor.Extractor.from_options(options, trap_folder, src_archive, logger, diagnostics_writer) self.finder = finder.Finder.from_options_and_env(options, logger) self.importer = imports.importer_from_options(options, self.finder, logger) + self.diagnostics_writer = diagnostics_writer def _get_module_and_imports(self, unit): if not isinstance(unit, util.FileExtractable): @@ -24,7 +25,7 @@ def _get_module_and_imports(self, unit): module = self.finder.from_extractable(unit) if module is None: return None, () - py_module = module.load(self.logger) + py_module = module.load(self.logger, self.diagnostics_writer) if py_module is None: return None, () imports = set(mod.get_extractable() for mod in self.importer.get_imports(module, py_module)) diff --git a/python/extractor/semmle/logging.py b/python/extractor/semmle/logging.py index 64037163e697..652ab810d0fb 100644 --- a/python/extractor/semmle/logging.py +++ b/python/extractor/semmle/logging.py @@ -8,6 +8,9 @@ import multiprocessing import enum import datetime +import platform + +from semmle.util import VERSION, get_analysis_version #Use standard Semmle logging levels @@ -355,6 +358,24 @@ def with_timestamp(self, timestamp): self.timestamp = timestamp return self +def extractor_telemetry_message(extractor_flags): + return (DiagnosticMessage(Source("py/extractor/summary", "Python extractor telemetry"), Severity.NOTE) + .markdown("Internal telemetry for the Python extractor.\n\nNo action needed.") + .attribute("python_analysis_version", get_analysis_version()) + .attribute("python_runtime_version", platform.python_version()) + .attribute("extractor_version", VERSION) + .attribute("extractor_flags", " ".join(extractor_flags) or "default") + .telemetry() + ) + +def parser_statistics_telemetry_message(old_parser_file_count, tree_sitter_parser_file_count): + return (DiagnosticMessage(Source("py/extractor/parser-statistics", "Python parser statistics"), Severity.NOTE) + .markdown("Internal parser telemetry for the Python extractor.\n\nNo action needed.") + .attribute("old_parser_file_count", old_parser_file_count) + .attribute("tree_sitter_parser_file_count", tree_sitter_parser_file_count) + .telemetry() + ) + def get_stack_trace_lines(): """Creates a stack trace for inclusion into the `attributes` part of a diagnostic message. Limits the size of the stack trace to 5000 characters, so as to not make the SARIF file overly big. diff --git a/python/extractor/semmle/python/finder.py b/python/extractor/semmle/python/finder.py index 632ef920d055..46e63f5e578f 100644 --- a/python/extractor/semmle/python/finder.py +++ b/python/extractor/semmle/python/finder.py @@ -65,8 +65,8 @@ def all_sub_modules(self): def get_extractable(self): return FileExtractable(self.path) - def load(self, logger=None): - return PythonSourceModule(self.name, self.path, logger=logger) + def load(self, logger, diagnostics_writer): + return PythonSourceModule(self.name, self.path, logger=logger, diagnostics_writer=diagnostics_writer) def __str__(self): return "Python module at %s" % self.path diff --git a/python/extractor/semmle/python/modules.py b/python/extractor/semmle/python/modules.py index 810c4e060f7b..7192f97cfb11 100644 --- a/python/extractor/semmle/python/modules.py +++ b/python/extractor/semmle/python/modules.py @@ -18,7 +18,7 @@ class PythonSourceModule(object): kind = None - def __init__(self, name, path, logger, bytes_source = None): + def __init__(self, name, path, logger, diagnostics_writer, bytes_source = None): assert isinstance(path, str), path self.name = name # May be None self.path = path @@ -34,6 +34,7 @@ def __init__(self, name, path, logger, bytes_source = None): self._line_types = None self._comments = None self._tokens = None + self.diagnostics_writer = diagnostics_writer self.logger = logger with timers["decode"]: self.encoding, self.bytes_source = semmle.python.parser.tokenizer.encoding_from_source(bytes_source) @@ -113,6 +114,7 @@ def old_py_ast(self): self.logger.debug("Trying old parser on %s", self.path) self._py_ast = semmle.python.parser.parse(self.tokens, self.logger) self.logger.debug("Old parser successful on %s", self.path) + self.diagnostics_writer.record_old_parser() else: self.logger.debug("Found (during old_py_ast) parse tree for %s in cache", self.path) return self._py_ast @@ -147,6 +149,7 @@ def py_ast(self): self.logger.debug("Trying tsg-python on %s", self.path) self._py_ast = semmle.python.parser.tsg_parser.parse(self.path, self.logger) self.logger.debug("tsg-python successful on %s", self.path) + self.diagnostics_writer.record_tree_sitter_parser() else: self.logger.debug("Found (during py_ast) parse tree for %s in cache", self.path) return self._py_ast diff --git a/python/extractor/semmle/python/parser/dump_ast.py b/python/extractor/semmle/python/parser/dump_ast.py index 3a7db5ab0713..97abb502e59a 100644 --- a/python/extractor/semmle/python/parser/dump_ast.py +++ b/python/extractor/semmle/python/parser/dump_ast.py @@ -119,7 +119,8 @@ def reset_error_count(self): self.error_count = 0 def old_parser(inputfile, logger): - mod = PythonSourceModule(None, inputfile, logger) + from semmle.worker import DiagnosticsWriter + mod = PythonSourceModule(None, inputfile, logger, DiagnosticsWriter(0)) logger.close() return mod.old_py_ast diff --git a/python/extractor/semmle/python/parser/tsg_parser.py b/python/extractor/semmle/python/parser/tsg_parser.py index 83dc853b525e..fa199ddf4f3d 100644 --- a/python/extractor/semmle/python/parser/tsg_parser.py +++ b/python/extractor/semmle/python/parser/tsg_parser.py @@ -3,7 +3,7 @@ # Functions and classes used for parsing Python files using `tree-sitter-graph` from ast import literal_eval -import re +import json import sys import os import semmle.python.parser @@ -114,98 +114,76 @@ def __repr__(self): cargo_file = os.path.join(tsg_python_path, "Cargo.toml") tsg_command = ["cargo", "run", "--quiet", "--release", "--manifest-path="+cargo_file] +def _decode_tsg_value(value): + value_type = value["type"] + if value_type == "null": + return None + if value_type in ("bool", "int", "string"): + return value[value_type] + if value_type == "list": + return [_decode_tsg_value(item) for item in value["values"]] + if value_type == "graphNode": + return Node(value["id"]) + raise ValueError("Unsupported TSG value type '{}'".format(value_type)) + +def _decode_tsg_node_attributes(encoded_attrs, path, logger): + # Decode every attribute first so location information is available if string decoding fails. + attrs = { + key: _decode_tsg_value(value) + for key, value in encoded_attrs.items() + } + if "s" not in attrs: + return attrs + + try: + attrs["s"] = evaluate_string(attrs["s"]) + except Exception as ex: + loc = ":".join(str(i) for i in get_location_info(attrs)) + error = ex.args[0] if ex.args else "unknown" + logger.warning( + "Error '{}' while parsing value {} at {}:{}\n".format( + error, repr(attrs["s"]), path, loc + ) + ) + return attrs + +def _format_node_attributes(attrs): + return repr(dict(sorted(attrs.items()))) + def read_tsg_python_output(path, logger): + command_args = tsg_command + [path] + p = subprocess.Popen(command_args, stdout=subprocess.PIPE) + stdout, _ = p.communicate() + if p.returncode: + raise subprocess.CalledProcessError(p.returncode, command_args, stdout) + # Mapping from node id (an integer) to a dictionary containing attribute data. node_attr = {} # Mapping a start node to a map from attribute names to lists of (value, end_node) pairs. edge_attr = {} - command_args = tsg_command + [path] - p = subprocess.Popen(command_args, stdout=subprocess.PIPE) - for line in p.stdout: - line = line.decode(sys.getfilesystemencoding()) - line = line.rstrip() - if line.startswith("node"): # e.g. `node 5` - current_node = int(line.split(" ")[1]) - d = {} - node_attr[current_node] = d - in_node = True - elif line.startswith("edge"): # e.g. `edge 5 -> 6` - current_start, current_end = tuple(map(int, line[4:].split("->"))) - d = edge_attr.setdefault(current_start, {}) - in_node = False - else: # attribute, e.g. `_kind: "Class"` - key, value = line[2:].split(": ", 1) - if value.startswith("[graph node"): # e.g. `_skip_to: [graph node 5]` - value = Node(int(value.split(" ")[2][:-1])) - elif value == "#true": # e.g. `_is_parenthesised: #true` - value = True - elif value == "#false": # e.g. `top: #false` - value = False - elif value == "#null": # e.g. `exc: #null` - value = None - else: # literal values, e.g. `name: "k1.k2"` or `level: 5` - value = rust_to_python_escapes(value) - try: - if key =="s" and value[0] == '"': # e.g. `s: "k1.k2"` - value = evaluate_string(value) - else: - value = literal_eval(value) - if isinstance(value, bytes): - try: - value = value.decode(sys.getfilesystemencoding()) - except UnicodeDecodeError: - # just include the bytes as-is - pass - except Exception as ex: - # We may not know the location at this point -- for instance if we forgot to set - # it -- but `get_location_info` will degrade gracefully in this case. - loc = ":".join(str(i) for i in get_location_info(d)) - error = ex.args[0] if ex.args else "unknown" - logger.warning("Error '{}' while parsing value {} at {}:{}\n".format(error, repr(value), path, loc)) - if in_node: - d[key] = value - else: - d.setdefault(key, []).append((value, current_end)) - p.stdout.close() - p.terminate() - p.wait() + for encoded_node in json.loads(stdout): + current_node = encoded_node["id"] + attrs = _decode_tsg_node_attributes(encoded_node["attrs"], path, logger) + node_attr[current_node] = attrs + if attrs.get("_kind") == "SyntaxErrorNode": + lineno, offset, _, _ = get_location_info(attrs) + exc = SyntaxError("Syntax Error") + exc.lineno = lineno + exc.offset = offset + raise exc + for encoded_edge in encoded_node["edges"]: + current_end = encoded_edge["sink"] + edge_fields = edge_attr.setdefault(current_node, {}) + for key, value in encoded_edge["attrs"].items(): + value = _decode_tsg_value(value) + edge_fields.setdefault(key, []).append((value, current_end)) logger.debug("Read {} nodes and {} edges from TSG output".format(len(node_attr), len(edge_attr))) return node_attr, edge_attr -# `tsg-python` serialises string values using Rust's `Debug` formatting, which diverges from what -# Python's `literal_eval` accepts in two ways: -# - characters Rust considers non-printable -- including grapheme-extending ones such as the U+FE0F -# variation selector, U+200D zero width joiner and combining accents -- are rendered as `\u{...}`, -# a syntax Python does not know at all; -# - NUL is rendered as `\0`, which Python reads as the start of an *octal* escape, silently -# swallowing up to two more digits (NUL followed by `1` is emitted as `"\01"`, which decodes -# to `\x01`). -# Everything else Rust emits (`\t`, `\r`, `\n`, `\\`, `\"`, and unescaped characters) is read back -# identically by `literal_eval`, as verified exhaustively over every Unicode scalar value. -_RUST_ESCAPE = re.compile(r"\\(?:u\{([0-9a-fA-F]{1,6})\}|.)", re.DOTALL) - -def rust_to_python_escapes(text): - """Rewrites Rust escapes in `text` that Python would reject or misread into their equivalents. - - Matching every escape sequence (rather than only the offending ones) keeps the scan in step with - the backslashes, so an escaped backslash -- how a literal `\\u{fe0f}` in the source is - serialised -- is left alone.""" - if "\\u{" not in text and "\\0" not in text: - return text - def replace(match): - code_point = match.group(1) - if code_point is None: - return "\\x00" if match.group(0) == "\\0" else match.group(0) - code_point = int(code_point, 16) - if code_point > 0xFFFF: - return "\\U{:08x}".format(code_point) - return "\\u{:04x}".format(code_point) - return _RUST_ESCAPE.sub(replace, text) - -def evaluate_string(s): - s = literal_eval(s) - prefix, quotes, content = split_string(s, None) +def evaluate_string(source_literal): + """Evaluates Python string literal text that has already been decoded from the wire format.""" + prefix, quotes, content = split_string(source_literal, None) ends_with_illegal_character = False # If the string ends with the same quote character as the outer quotes (and/or backslashes) # (e.g. the first string part of `f"""hello"{0}"""`), we must take care to not accidently create @@ -234,7 +212,11 @@ def get_context(id, node_attr, path, logger): while "ctx" not in node_attr[id]: if "_inherited_ctx" not in node_attr[id]: - logger.error("No context for node {} in file {} with attributes {}\n".format(id, path, node_attr[id])) + logger.error( + "No context for node {} in file {} with attributes {}\n".format( + id, path, _format_node_attributes(node_attr[id]) + ) + ) # A missing context is most likely to be a "load", so return that. return ast.Load() id = node_attr[id]["_inherited_ctx"].id @@ -346,7 +328,11 @@ def parse(path, logger): nodes[id] = attrs["_is_literal"] continue if "_kind" not in attrs: - logger.error("Error: Graph node {} with attributes {} has no `_kind`!\n".format(id, attrs)) + logger.error( + "Error: Graph node {} with attributes {} has no `_kind`!\n".format( + id, _format_node_attributes(attrs) + ) + ) continue # This is not the node we are looking for (so don't bother creating it). if "_skip_to" in attrs: @@ -370,12 +356,6 @@ def parse(path, logger): node.lineno, node.col_offset, end_line, end_column = get_location_info(attrs) node._end = (end_line, end_column) - if isinstance(node, SyntaxErrorNode): - exc = SyntaxError("Syntax Error") - exc.lineno = node.lineno - exc.offset = node.col_offset - raise exc - # Set up context information, if any if "ctx" in expected_fields: node.ctx = get_context(id, node_attr, path, logger) @@ -384,7 +364,7 @@ def parse(path, logger): if field.startswith("_"): continue if field == "ctx": continue if field != "parenthesised" and field not in expected_fields: - logger.warning("Unknown field {} found among {} in node {}\n".format(field, attrs, id)) + logger.warning("Unknown field {} found among {} in node {}\n".format(field, _format_node_attributes(attrs), id)) # For fields that point to other AST nodes. if isinstance(val, Node): diff --git a/python/extractor/semmle/python/passes/flow.py b/python/extractor/semmle/python/passes/flow.py index 6ea5405a8540..a100bbae7c9c 100755 --- a/python/extractor/semmle/python/passes/flow.py +++ b/python/extractor/semmle/python/passes/flow.py @@ -1916,7 +1916,8 @@ def write_ssa_phi(out, phi, arg): import semmle.python.parser.tsg_parser parsed_ast = semmle.python.parser.tsg_parser.parse(inputfile, FakeLogger()) else: - module = modules.PythonSourceModule("__main__", inputfile, FakeLogger()) + from semmle.worker import DiagnosticsWriter + module = modules.PythonSourceModule("__main__", inputfile, FakeLogger(), DiagnosticsWriter(0)) parsed_ast = module.ast FlowPass(options.split, options.prune, options.unroll).extract(parsed_ast, writer) writer.close() diff --git a/python/extractor/semmle/util.py b/python/extractor/semmle/util.py index 977d47c69dca..8c67a6f97558 100644 --- a/python/extractor/semmle/util.py +++ b/python/extractor/semmle/util.py @@ -10,7 +10,7 @@ #Semantic version of extractor. #Update this if any changes are made -VERSION = "7.1.9" +VERSION = "7.2.1" PY_EXTENSIONS = ".py", ".pyw" diff --git a/python/extractor/semmle/worker.py b/python/extractor/semmle/worker.py index ac8231390742..15b7b556bf88 100644 --- a/python/extractor/semmle/worker.py +++ b/python/extractor/semmle/worker.py @@ -10,7 +10,8 @@ from semmle.extractors import SuperExtractor, ModulePrinter, SkippedBuiltin from semmle.profiling import get_profiler from semmle.path_rename import renamer_from_options_and_env -from semmle.logging import WARN, recursion_error_message, internal_error_message, Logger +from semmle.logging import WARN, recursion_error_message, internal_error_message, extractor_telemetry_message, Logger +from semmle.logging import parser_statistics_telemetry_message from semmle.util import FileExtractable, FolderExtractable class ExtractorFailure(Exception): @@ -239,9 +240,35 @@ def _drain_queue(queue): #Emptied queue as best we can. pass +def _write_extractor_telemetry(diagnostics_writer, logger: Logger, extractor_flags): + try: + diagnostics_writer.write(extractor_telemetry_message(extractor_flags)) + except OSError as ex: + logger.warning("Failed to write extractor telemetry: %s", ex) + +def _write_parser_statistics_telemetry(diagnostics_writer, logger: Logger): + counts = diagnostics_writer.parser_statistics() + if counts == (0, 0): + return + try: + diagnostics_writer.write(parser_statistics_telemetry_message(*counts)) + except OSError as ex: + logger.warning("Failed to write parser statistics telemetry: %s", ex) + class DiagnosticsWriter(object): def __init__(self, proc_id): self.proc_id = proc_id + self.old_parser_file_count = 0 + self.tree_sitter_parser_file_count = 0 + + def record_old_parser(self): + self.old_parser_file_count += 1 + + def record_tree_sitter_parser(self): + self.tree_sitter_parser_file_count += 1 + + def parser_statistics(self): + return self.old_parser_file_count, self.tree_sitter_parser_file_count def write(self, message): dir = os.environ.get("CODEQL_EXTRACTOR_PYTHON_DIAGNOSTIC_DIR") @@ -276,9 +303,11 @@ def _extract_loop(proc_id, queue, trap_dir, archive, options, reply_queue, logge reply_queue.put(("INTERRUPT", None, None)) sys.exit(2) logger.set_process_id(proc_id) + if write_global_data: + _write_extractor_telemetry(diagnostics_writer, logger, options.extractor_flags) try: if options.trace_only: - extractor = ModulePrinter(options, trap_dir, archive, renamer, logger) + extractor = ModulePrinter(options, trap_dir, archive, renamer, logger, diagnostics_writer) else: extractor = SuperExtractor(options, trap_dir, archive, renamer, logger, diagnostics_writer) profiler = get_profiler(options, id, logger) @@ -291,6 +320,7 @@ def _extract_loop(proc_id, queue, trap_dir, archive, options, reply_queue, logge if write_global_data: extractor.write_global_data() extractor.close() + _write_parser_statistics_telemetry(diagnostics_writer, logger) return try: start = time.time() @@ -344,4 +374,5 @@ def _extract_loop(proc_id, queue, trap_dir, archive, options, reply_queue, logge except _Empty: #Cleared queue enough to avoid deadlock. pass + _write_parser_statistics_telemetry(diagnostics_writer, logger) sys.exit(2) diff --git a/python/extractor/tests/parser/match_new.expected b/python/extractor/tests/parser/match_new.expected index b71bda010bab..38fd31de6d12 100644 --- a/python/extractor/tests/parser/match_new.expected +++ b/python/extractor/tests/parser/match_new.expected @@ -1,4 +1,4 @@ -Module: [1, 0] - [43, 0] +Module: [1, 0] - [61, 0] body: [ Match: [1, 0] - [3, 19] subject: @@ -85,7 +85,7 @@ Module: [1, 0] - [43, 0] literal: BinOp: [8, 9] - [8, 18] left: - UnaryOp: [8, 10] - [8, 11] + UnaryOp: [8, 9] - [8, 11] op: USub operand: Num: [8, 10] - [8, 11] @@ -104,7 +104,7 @@ Module: [1, 0] - [43, 0] pattern: MatchLiteralPattern: [10, 9] - [10, 11] literal: - UnaryOp: [10, 10] - [10, 11] + UnaryOp: [10, 9] - [10, 11] op: USub operand: Num: [10, 10] - [10, 11] @@ -131,7 +131,7 @@ Module: [1, 0] - [43, 0] literal: BinOp: [14, 9] - [14, 16] left: - UnaryOp: [14, 10] - [14, 13] + UnaryOp: [14, 9] - [14, 13] op: USub operand: Num: [14, 10] - [14, 13] @@ -379,4 +379,210 @@ Module: [1, 0] - [43, 0] Pass: [42, 8] - [42, 12] ] ] + Match: [44, 0] - [60, 12] + subject: + Name: [44, 6] - [44, 11] + variable: Variable('value', None) + ctx: Load + cases: [ + Case: [45, 4] - [46, 12] + pattern: + MatchLiteralPattern: [45, 9] - [45, 11] + literal: + UnaryOp: [45, 9] - [45, 11] + op: UAdd + operand: + Num: [45, 10] - [45, 11] + n: 1 + text: '1' + guard: None + body: [ + Pass: [46, 8] - [46, 12] + ] + Case: [47, 4] - [48, 12] + pattern: + MatchLiteralPattern: [47, 9] - [47, 13] + literal: + UnaryOp: [47, 9] - [47, 13] + op: UAdd + operand: + Num: [47, 10] - [47, 13] + n: 1.5 + text: '1.5' + guard: None + body: [ + Pass: [48, 8] - [48, 12] + ] + Case: [49, 4] - [50, 12] + pattern: + MatchLiteralPattern: [49, 9] - [49, 12] + literal: + UnaryOp: [49, 9] - [49, 12] + op: UAdd + operand: + Num: [49, 10] - [49, 12] + n: 2j + text: '2j' + guard: None + body: [ + Pass: [50, 8] - [50, 12] + ] + Case: [51, 4] - [52, 12] + pattern: + MatchLiteralPattern: [51, 9] - [51, 14] + literal: + BinOp: [51, 9] - [51, 14] + left: + UnaryOp: [51, 9] - [51, 11] + op: UAdd + operand: + Num: [51, 10] - [51, 11] + n: 1 + text: '1' + op: Add + right: + Num: [51, 12] - [51, 14] + n: 2j + text: '2j' + guard: None + body: [ + Pass: [52, 8] - [52, 12] + ] + Case: [53, 4] - [54, 12] + pattern: + MatchLiteralPattern: [53, 9] - [53, 14] + literal: + BinOp: [53, 9] - [53, 14] + left: + UnaryOp: [53, 9] - [53, 11] + op: UAdd + operand: + Num: [53, 10] - [53, 11] + n: 1 + text: '1' + op: Sub + right: + Num: [53, 12] - [53, 14] + n: 2j + text: '2j' + guard: None + body: [ + Pass: [54, 8] - [54, 12] + ] + Case: [55, 4] - [56, 12] + pattern: + MatchOrPattern: [55, 9] - [55, 30] + patterns: [ + MatchLiteralPattern: [55, 9] - [55, 14] + literal: + UnaryOp: [55, 9] - [55, 14] + op: UAdd + operand: + Num: [55, 10] - [55, 14] + n: 16 + text: '0x10' + MatchLiteralPattern: [55, 17] - [55, 22] + literal: + UnaryOp: [55, 17] - [55, 22] + op: UAdd + operand: + Num: [55, 18] - [55, 22] + n: 8 + text: '0o10' + MatchLiteralPattern: [55, 25] - [55, 30] + literal: + UnaryOp: [55, 25] - [55, 30] + op: UAdd + operand: + Num: [55, 26] - [55, 30] + n: 2 + text: '0b10' + ] + guard: None + body: [ + Pass: [56, 8] - [56, 12] + ] + Case: [57, 4] - [58, 12] + pattern: + MatchSequencePattern: [57, 9] - [57, 19] + patterns: [ + MatchLiteralPattern: [57, 10] - [57, 12] + literal: + UnaryOp: [57, 10] - [57, 12] + op: UAdd + operand: + Num: [57, 11] - [57, 12] + n: 0 + text: '0' + MatchLiteralPattern: [57, 14] - [57, 18] + literal: + UnaryOp: [57, 14] - [57, 18] + op: USub + operand: + Num: [57, 15] - [57, 18] + n: 0.0 + text: '0.0' + ] + guard: None + body: [ + Pass: [58, 8] - [58, 12] + ] + Case: [59, 4] - [60, 12] + pattern: + MatchMappingPattern: [59, 9] - [59, 33] + mappings: [ + MatchKeyValuePattern: [59, 10] - [59, 15] + key: + MatchLiteralPattern: [59, 10] - [59, 12] + literal: + UnaryOp: [59, 10] - [59, 12] + op: UAdd + operand: + Num: [59, 11] - [59, 12] + n: 1 + text: '1' + value: + MatchCapturePattern: [59, 14] - [59, 15] + variable: + Name: [59, 14] - [59, 15] + variable: Variable('x', None) + ctx: Store + MatchKeyValuePattern: [59, 17] - [59, 24] + key: + MatchLiteralPattern: [59, 17] - [59, 21] + literal: + UnaryOp: [59, 17] - [59, 21] + op: UAdd + operand: + Num: [59, 18] - [59, 21] + n: 1.5 + text: '1.5' + value: + MatchCapturePattern: [59, 23] - [59, 24] + variable: + Name: [59, 23] - [59, 24] + variable: Variable('y', None) + ctx: Store + MatchKeyValuePattern: [59, 26] - [59, 32] + key: + MatchLiteralPattern: [59, 26] - [59, 29] + literal: + UnaryOp: [59, 26] - [59, 29] + op: UAdd + operand: + Num: [59, 27] - [59, 29] + n: 2j + text: '2j' + value: + MatchCapturePattern: [59, 31] - [59, 32] + variable: + Name: [59, 31] - [59, 32] + variable: Variable('z', None) + ctx: Store + ] + guard: None + body: [ + Pass: [60, 8] - [60, 12] + ] + ] ] diff --git a/python/extractor/tests/parser/match_new.py b/python/extractor/tests/parser/match_new.py index 99a06de5b08c..61953c95f0ab 100644 --- a/python/extractor/tests/parser/match_new.py +++ b/python/extractor/tests/parser/match_new.py @@ -40,3 +40,21 @@ def soft_keywords(): match z: case w: pass + +match value: + case +1: + pass + case +1.5: + pass + case +2j: + pass + case +1+2j: + pass + case +1-2j: + pass + case +0x10 | +0o10 | +0b10: + pass + case [+0, -0.0]: + pass + case {+1: x, +1.5: y, +2j: z}: + pass diff --git a/python/extractor/tests/parser/type_parameters_new.expected b/python/extractor/tests/parser/type_parameters_new.expected new file mode 100644 index 000000000000..0ebf6b14cb20 --- /dev/null +++ b/python/extractor/tests/parser/type_parameters_new.expected @@ -0,0 +1,88 @@ +Module: [1, 0] - [12, 0] + body: [ + TypeAlias: [1, 0] - [3, 5] + name: + Name: [1, 5] - [1, 10] + variable: Variable('Alias', None) + ctx: Store + type_parameters: [ + TypeVar: [2, 4] - [2, 5] + name: + Name: [2, 4] - [2, 5] + variable: Variable('T', None) + ctx: Store + bound: None + default: None + ] + value: + Name: [3, 4] - [3, 5] + variable: Variable('T', None) + ctx: Load + Assign: [5, 0] - [7, 4] + targets: [ + Name: [5, 4] - [5, 12] + variable: Variable('function', None) + ctx: Store + ] + value: + FunctionExpr: [5, 0] - [7, 4] + name: 'function' + args: + arguments + defaults: [] + kw_defaults: [] + annotations: [] + varargannotation: None + kwargannotation: None + kw_annotations: [] + returns: None + inner_scope: + Function: [5, 0] - [7, 4] + name: 'function' + type_parameters: [ + TypeVar: [6, 4] - [6, 5] + name: + Name: [6, 4] - [6, 5] + variable: Variable('T', None) + ctx: Store + bound: None + default: None + ] + args: [] + vararg: None + kwonlyargs: [] + kwarg: None + body: [ + Expr: [7, 5] - [7, 8] + value: + Ellipsis: [7, 5] - [7, 8] + ] + Assign: [9, 0] - [11, 2] + targets: [ + Name: [9, 6] - [9, 11] + variable: Variable('Class', None) + ctx: Store + ] + value: + ClassExpr: [9, 0] - [11, 2] + name: 'Class' + type_parameters: [ + TypeVar: [10, 4] - [10, 5] + name: + Name: [10, 4] - [10, 5] + variable: Variable('T', None) + ctx: Store + bound: None + default: None + ] + bases: [] + keywords: [] + inner_scope: + Class: [9, 0] - [11, 2] + name: 'Class' + body: [ + Expr: [11, 3] - [11, 6] + value: + Ellipsis: [11, 3] - [11, 6] + ] + ] diff --git a/python/extractor/tests/parser/type_parameters_new.py b/python/extractor/tests/parser/type_parameters_new.py new file mode 100644 index 000000000000..2bb8c1324305 --- /dev/null +++ b/python/extractor/tests/parser/type_parameters_new.py @@ -0,0 +1,11 @@ +type Alias[ + T, +] = T + +def function[ + T, +](): ... + +class Class[ + T, +]: ... diff --git a/python/extractor/tests/parser/unicode_identifiers_new.expected b/python/extractor/tests/parser/unicode_identifiers_new.expected new file mode 100644 index 000000000000..b7655aa835ee --- /dev/null +++ b/python/extractor/tests/parser/unicode_identifiers_new.expected @@ -0,0 +1,108 @@ +Module: [2, 0] - [12, 0] + body: [ + Assign: [2, 0] - [2, 7] + targets: [ + Name: [2, 0] - [2, 3] + variable: Variable('\u088f', None) + ctx: Store + ] + value: + Num: [2, 6] - [2, 7] + n: 1 + text: '1' + Assign: [3, 0] - [3, 8] + targets: [ + Name: [3, 0] - [3, 4] + variable: Variable('\U0001e6c0', None) + ctx: Store + ] + value: + Num: [3, 7] - [3, 8] + n: 2 + text: '2' + Assign: [4, 0] - [4, 8] + targets: [ + Name: [4, 0] - [4, 4] + variable: Variable('\U000323b0', None) + ctx: Store + ] + value: + Num: [4, 7] - [4, 8] + n: 3 + text: '3' + Assign: [5, 0] - [5, 8] + targets: [ + Name: [5, 0] - [5, 4] + variable: Variable('\U00011db0', None) + ctx: Store + ] + value: + Num: [5, 7] - [5, 8] + n: 4 + text: '4' + Assign: [8, 0] - [8, 8] + targets: [ + Name: [8, 0] - [8, 4] + variable: Variable('a\u1acf', None) + ctx: Store + ] + value: + Num: [8, 7] - [8, 8] + n: 5 + text: '5' + Assign: [9, 0] - [9, 9] + targets: [ + Name: [9, 0] - [9, 5] + variable: Variable('a\U00011de0', None) + ctx: Store + ] + value: + Num: [9, 8] - [9, 9] + n: 6 + text: '6' + Assign: [11, 0] - [11, 48] + targets: [ + Name: [11, 0] - [11, 6] + variable: Variable('result', None) + ctx: Store + ] + value: + BinOp: [11, 9] - [11, 48] + left: + BinOp: [11, 9] - [11, 40] + left: + BinOp: [11, 9] - [11, 33] + left: + BinOp: [11, 9] - [11, 26] + left: + BinOp: [11, 9] - [11, 19] + left: + Name: [11, 9] - [11, 12] + variable: Variable('\u088f', None) + ctx: Load + op: Add + right: + Name: [11, 15] - [11, 19] + variable: Variable('\U0001e6c0', None) + ctx: Load + op: Add + right: + Name: [11, 22] - [11, 26] + variable: Variable('\U000323b0', None) + ctx: Load + op: Add + right: + Name: [11, 29] - [11, 33] + variable: Variable('\U00011db0', None) + ctx: Load + op: Add + right: + Name: [11, 36] - [11, 40] + variable: Variable('a\u1acf', None) + ctx: Load + op: Add + right: + Name: [11, 43] - [11, 48] + variable: Variable('a\U00011de0', None) + ctx: Load + ] diff --git a/python/extractor/tests/parser/unicode_identifiers_new.py b/python/extractor/tests/parser/unicode_identifiers_new.py new file mode 100644 index 000000000000..ef91ffd3eca9 --- /dev/null +++ b/python/extractor/tests/parser/unicode_identifiers_new.py @@ -0,0 +1,11 @@ +# Unicode 17 identifier starts: Arabic, Tai Yo, CJK Extension J, and Tolong Siki. +࢏ = 1 +𞛀 = 2 +𲎰 = 3 +𑶰 = 4 + +# Unicode 17 identifier continuations: a combining mark and a decimal digit. +a᫏ = 5 +a𑷠 = 6 + +result = ࢏ + 𞛀 + 𲎰 + 𑶰 + a᫏ + a𑷠 diff --git a/python/extractor/tests/test_cmdline.py b/python/extractor/tests/test_cmdline.py new file mode 100644 index 000000000000..76f2fe951b57 --- /dev/null +++ b/python/extractor/tests/test_cmdline.py @@ -0,0 +1,34 @@ +from semmle import cmdline + + +def test_records_flags_without_values(): + options, args = cmdline.parse( + [ + "--verbosity=3", + "-zall", + "-R", + "/src", + "-vv", + "--path", + "/lib", + "-p", + "/other-lib", + "module", + ] + ) + + assert options.extractor_flags == ["p"] + assert args == ["module"] + + +def test_records_flags_from_option_file(tmp_path): + options_file = tmp_path / "extractor-options" + options_file.write_text("--colorize --max-import-depth 2") + + options, _ = cmdline.parse(["-f", str(options_file)]) + + assert options.extractor_flags == [ + "colorize", + "f", + "max-import-depth", + ] diff --git a/python/extractor/tests/test_diagnostics.py b/python/extractor/tests/test_diagnostics.py new file mode 100644 index 000000000000..ddfd22436de9 --- /dev/null +++ b/python/extractor/tests/test_diagnostics.py @@ -0,0 +1,167 @@ +import platform + +from semmle import logging +from semmle import util +from semmle import worker +from semmle.python.modules import PythonSourceModule + + +def test_extractor_telemetry_message(mocker): + mocker.patch("semmle.logging.get_analysis_version", return_value="3.13") + + message = logging.extractor_telemetry_message(["colorize", "p"]).to_dict() + message.pop("timestamp") + + assert message == { + "source": { + "id": "py/extractor/summary", + "name": "Python extractor telemetry", + "extractorName": "python", + }, + "severity": "note", + "markdownMessage": "Internal telemetry for the Python extractor.\n\nNo action needed.", + "visibility": { + "statusPage": False, + "cliSummaryTable": False, + "telemetry": True, + }, + "attributes": { + "python_analysis_version": "3.13", + "python_runtime_version": platform.python_version(), + "extractor_version": util.VERSION, + "extractor_flags": "colorize p", + }, + } + + +def test_parser_statistics_telemetry_message(): + message = logging.parser_statistics_telemetry_message( + old_parser_file_count=12, tree_sitter_parser_file_count=3 + ).to_dict() + message.pop("timestamp") + + assert message == { + "source": { + "id": "py/extractor/parser-statistics", + "name": "Python parser statistics", + "extractorName": "python", + }, + "severity": "note", + "markdownMessage": "Internal parser telemetry for the Python extractor.\n\nNo action needed.", + "visibility": { + "statusPage": False, + "cliSummaryTable": False, + "telemetry": True, + }, + "attributes": { + "old_parser_file_count": 12, + "tree_sitter_parser_file_count": 3, + }, + } + + +def test_extractor_telemetry_message_includes_empty_flags(): + message = logging.extractor_telemetry_message([]).to_dict() + + assert message["attributes"]["extractor_flags"] == "default" + + +def test_write_extractor_telemetry(mocker): + diagnostics_writer = mocker.Mock() + logger = mocker.Mock() + + worker._write_extractor_telemetry(diagnostics_writer, logger, ["quiet"]) + + diagnostics_writer.write.assert_called_once() + assert diagnostics_writer.write.call_args.args[0].to_dict()["attributes"] == { + "python_analysis_version": util.get_analysis_version(), + "python_runtime_version": platform.python_version(), + "extractor_version": util.VERSION, + "extractor_flags": "quiet", + } + logger.warning.assert_not_called() + + +def test_write_extractor_telemetry_handles_io_error(mocker): + diagnostics_writer = mocker.Mock() + diagnostics_writer.write.side_effect = OSError("write failed") + logger = mocker.Mock() + + worker._write_extractor_telemetry(diagnostics_writer, logger, []) + + logger.warning.assert_called_once_with( + "Failed to write extractor telemetry: %s", diagnostics_writer.write.side_effect + ) + + +def test_write_parser_statistics_telemetry(mocker): + diagnostics_writer = mocker.Mock() + diagnostics_writer.parser_statistics.return_value = (1, 1) + logger = mocker.Mock() + + worker._write_parser_statistics_telemetry(diagnostics_writer, logger) + + diagnostics_writer.write.assert_called_once() + assert diagnostics_writer.write.call_args.args[0].to_dict()["attributes"] == { + "old_parser_file_count": 1, + "tree_sitter_parser_file_count": 1, + } + logger.warning.assert_not_called() + + +def test_does_not_write_empty_parser_statistics_telemetry(mocker): + diagnostics_writer = mocker.Mock() + diagnostics_writer.parser_statistics.return_value = (0, 0) + logger = mocker.Mock() + + worker._write_parser_statistics_telemetry(diagnostics_writer, logger) + + diagnostics_writer.write.assert_not_called() + logger.warning.assert_not_called() + + +def test_records_old_parser_usage_once(mocker, monkeypatch): + monkeypatch.delenv("CODEQL_PYTHON_DISABLE_OLD_PARSER", raising=False) + monkeypatch.delenv("CODEQL_PYTHON_DISABLE_TSG_PARSER", raising=False) + old_ast = object() + mocker.patch("semmle.python.parser.parse", return_value=old_ast) + diagnostics_writer = worker.DiagnosticsWriter(1) + module = PythonSourceModule( + None, + "test.py", + mocker.Mock(), + diagnostics_writer, + bytes_source=b"x = 1\n", + ) + + parsed_ast = module.py_ast + # Access the cached AST again to verify that it is not counted twice. + _ = module.py_ast + + assert parsed_ast is old_ast + assert diagnostics_writer.parser_statistics() == (1, 0) + + +def test_records_tree_sitter_parser_usage_once(mocker, monkeypatch): + monkeypatch.delenv("CODEQL_PYTHON_DISABLE_OLD_PARSER", raising=False) + monkeypatch.delenv("CODEQL_PYTHON_DISABLE_TSG_PARSER", raising=False) + tree_sitter_ast = object() + mocker.patch("semmle.python.parser.parse", side_effect=SyntaxError("old parser failed")) + mocker.patch( + "semmle.python.parser.tsg_parser.parse", return_value=tree_sitter_ast + ) + diagnostics_writer = worker.DiagnosticsWriter(1) + module = PythonSourceModule( + None, + "test.py", + mocker.Mock(), + diagnostics_writer, + bytes_source=b"x = 1\n", + ) + + parsed_ast = module.py_ast + # Access the cached AST again to verify that it is not counted twice. + _ = module.py_ast + + assert parsed_ast is tree_sitter_ast + assert diagnostics_writer.parser_statistics() == (0, 1) diff --git a/python/extractor/tests/test_tsg_parser.py b/python/extractor/tests/test_tsg_parser.py index b4df0007e905..eedba8085f28 100644 --- a/python/extractor/tests/test_tsg_parser.py +++ b/python/extractor/tests/test_tsg_parser.py @@ -1,77 +1,114 @@ import unittest - -from ast import literal_eval +import unittest.mock +import json from semmle.logging import format_message -from semmle.python.parser.tsg_parser import evaluate_string, rust_to_python_escapes - - -class RustEscapeTest(unittest.TestCase): - """`tsg-python` serialises strings with Rust's `Debug` formatting, which escapes characters such - as U+FE0F as `\\u{...}` -- a syntax Python's `literal_eval` does not accept -- and NUL as `\\0`, - which Python reads as an octal escape.""" - - def test_untouched_without_escapes(self): - text = '"caf\u00e9 \u2713 \U0001f4be"' - self.assertEqual(rust_to_python_escapes(text), text) - - def test_basic_multilingual_plane(self): - self.assertEqual(rust_to_python_escapes(r'"\u{fe0f}"'), r'"\ufe0f"') - self.assertEqual(rust_to_python_escapes(r'"\u{200d}"'), r'"\u200d"') - - def test_short_and_astral_code_points(self): - self.assertEqual(rust_to_python_escapes(r'"\u{0}"'), r'"\u0000"') - self.assertEqual(rust_to_python_escapes(r'"\u{1f4a9}"'), r'"\U0001f4a9"') - - def test_other_escapes_are_preserved(self): - self.assertEqual(rust_to_python_escapes(r'"a\nb\"c\u{ad}"'), r'"a\nb\"c\u00ad"') - - def test_escaped_backslash_is_not_an_escape_introducer(self): - # How a raw string `r"\u{fe0f}"` in the analysed source gets serialised: the `\u{fe0f}` is - # literal text, not an escape, and must survive unchanged. - self.assertEqual(rust_to_python_escapes(r'"\\u{fe0f}"'), r'"\\u{fe0f}"') - - def test_nul_is_not_left_as_an_octal_escape(self): - # Rust renders NUL as `\0`; Python would read that as the start of an octal escape and - # swallow the digits that follow, decoding `"\01"` to U+0001 instead of NUL then `1`. - self.assertEqual(rust_to_python_escapes(r'"\01"'), r'"\x001"') - - def test_every_escape_shape_round_trips(self): - # Rust's `Debug for str` only ever emits these escape shapes. Check that each round-trips - # with every printable ASCII neighbour before and after it. - for escape_shape, expected in [ - (r'\0', "\x00"), - (r'\t', "\t"), - (r'\n', "\n"), - (r'\r', "\r"), - (r'\\', "\\"), - (r'\"', '"'), - (r'\u{1}', "\u0001"), - (r'\u{1f}', "\u001f"), - (r'\u{300}', "\u0300"), - (r'\u{fe0f}', "\ufe0f"), - (r'\u{e0100}', "\U000e0100"), - (r'\u{10fffe}', "\U0010fffe"), - ]: - for neighbour in map(chr, range(0x20, 0x7F)): - rendered_neighbour = {"\\": r"\\", '"': r'\"'}.get(neighbour, neighbour) - for position, text, expected_value in [ - ("before", '"' + rendered_neighbour + escape_shape + '"', neighbour + expected), - ("after", '"' + escape_shape + rendered_neighbour + '"', expected + neighbour), - ]: - with self.subTest( - escape_shape=escape_shape, - neighbour=neighbour, - position=position, - ): - self.assertEqual(literal_eval(rust_to_python_escapes(text)), expected_value) +from semmle.python.parser.tsg_parser import Node, evaluate_string, read_tsg_python_output + + +class JsonOutputTest(unittest.TestCase): + def test_decodes_nodes_edges_and_attribute_values(self): + output = json.dumps( + [ + { + "id": 0, + "edges": [ + { + "sink": 1, + "attrs": {"body": {"type": "int", "int": 0}}, + } + ], + "attrs": { + "_kind": {"type": "string", "string": "Module"}, + "_location": { + "type": "list", + "values": [ + {"type": "int", "int": 0}, + {"type": "int", "int": 0}, + {"type": "int", "int": 1}, + {"type": "int", "int": 0}, + ], + }, + }, + }, + { + "id": 1, + "edges": [], + "attrs": { + "_kind": {"type": "string", "string": "Name"}, + "variable": { + "type": "string", + "string": "caf\u00e9 \u26a0\ufe0f \U0001f4be", + }, + "s": { + "type": "string", + "string": '"\u26a0\ufe0f problem %s: %s"', + }, + "is_async": {"type": "bool", "bool": True}, + "optional": {"type": "null"}, + "_skip_to": {"type": "graphNode", "id": 0}, + }, + }, + ] + ).encode("utf-8") + + process = unittest.mock.Mock() + process.communicate.return_value = (output, None) + process.returncode = 0 + with unittest.mock.patch( + "semmle.python.parser.tsg_parser.subprocess.Popen", return_value=process + ): + node_attr, edge_attr = read_tsg_python_output( + "test.py", unittest.mock.Mock() + ) + + self.assertEqual(node_attr[1]["variable"], "caf\u00e9 \u26a0\ufe0f \U0001f4be") + self.assertEqual(node_attr[1]["s"], "\u26a0\ufe0f problem %s: %s") + self.assertIs(node_attr[1]["is_async"], True) + self.assertIsNone(node_attr[1]["optional"]) + self.assertIsInstance(node_attr[1]["_skip_to"], Node) + self.assertEqual(node_attr[1]["_skip_to"].id, 0) + self.assertEqual(edge_attr, {0: {"body": [(0, 1)]}}) def test_evaluate_string_on_reported_value(self): - # The exact value from https://github.com/github/codeql/issues/22435 that used to raise - # `truncated \uXXXX escape`. - value = rust_to_python_escapes('"\\"\u26a0\\u{fe0f} problem %s: %s\\""') + value = '"\u26a0\ufe0f problem %s: %s"' self.assertEqual(evaluate_string(value), "\u26a0\ufe0f problem %s: %s") + def test_syntax_error_node_raises(self): + output = json.dumps( + [ + { + "id": 0, + "edges": [], + "attrs": { + "_kind": {"type": "string", "string": "SyntaxErrorNode"}, + "_location": { + "type": "list", + "values": [ + {"type": "int", "int": 4}, + {"type": "int", "int": 5}, + {"type": "int", "int": 4}, + {"type": "int", "int": 6}, + ], + }, + "source": {"type": "string", "string": "!"}, + }, + } + ] + ).encode("utf-8") + + process = unittest.mock.Mock() + process.communicate.return_value = (output, None) + process.returncode = 0 + with unittest.mock.patch( + "semmle.python.parser.tsg_parser.subprocess.Popen", return_value=process + ): + with self.assertRaises(SyntaxError) as raised: + read_tsg_python_output("test.py", unittest.mock.Mock()) + + self.assertEqual(raised.exception.lineno, 5) + self.assertEqual(raised.exception.offset, 5) + class FormatMessageTest(unittest.TestCase): """A pre-formatted log message may contain `%` directives coming from the analysed source, and diff --git a/python/extractor/tsg-python/Cargo.lock b/python/extractor/tsg-python/Cargo.lock index f3604d1a3870..9c2e616354e3 100644 --- a/python/extractor/tsg-python/Cargo.lock +++ b/python/extractor/tsg-python/Cargo.lock @@ -321,6 +321,7 @@ dependencies = [ "anyhow", "clap", "regex", + "serde_json", "tree-sitter", "tree-sitter-graph", "tsp", diff --git a/python/extractor/tsg-python/Cargo.toml b/python/extractor/tsg-python/Cargo.toml index f02fb06931b2..378f8698b654 100644 --- a/python/extractor/tsg-python/Cargo.toml +++ b/python/extractor/tsg-python/Cargo.toml @@ -14,3 +14,4 @@ tree-sitter = "=0.24.7" tree-sitter-graph = "0.12.0" tsp = {path = "tsp"} clap = "4.5" +serde_json = "1.0" diff --git a/python/extractor/tsg-python/python.tsg b/python/extractor/tsg-python/python.tsg index c832f7e63219..9cf35d8fd542 100644 --- a/python/extractor/tsg-python/python.tsg +++ b/python/extractor/tsg-python/python.tsg @@ -2825,9 +2825,13 @@ var left_node = #null if some @prefix_op { set left_node = (ast-node @left "UnaryOp") - attr (left_node) _start_location = (location-start @prefix_op) + attr (left_node) _location_start = (location-start @prefix_op) attr (left_node) operand = @left.node - attr (left_node) op = "usub" + if (eq (source-text @prefix_op) "+") { + attr (left_node) op = "uadd" + } else { + attr (left_node) op = "usub" + } } else { set left_node = @left.node } diff --git a/python/extractor/tsg-python/src/main.rs b/python/extractor/tsg-python/src/main.rs index 19b2f6dcfece..2885203bc039 100644 --- a/python/extractor/tsg-python/src/main.rs +++ b/python/extractor/tsg-python/src/main.rs @@ -710,9 +710,6 @@ fn main() -> Result<()> { add_syntax_error_nodes(&mut graph, &syntax_errors); } - // `pretty_print` renders string values with Rust's `Debug` formatting, so non-printable and - // grapheme-extending characters come out as `\u{...}`. The reader on the other side - // (`semmle/python/parser/tsg_parser.py`) translates those into Python escapes. - print!("{}", graph.pretty_print()); + serde_json::to_writer(std::io::stdout().lock(), &graph)?; Ok(()) } diff --git a/python/extractor/tsg-python/tsp/bindings/rust/lib.rs b/python/extractor/tsg-python/tsp/bindings/rust/lib.rs index 560277354f2a..33a32e703f3b 100644 --- a/python/extractor/tsg-python/tsp/bindings/rust/lib.rs +++ b/python/extractor/tsg-python/tsp/bindings/rust/lib.rs @@ -62,7 +62,7 @@ mod tests { fn can_load_grammar() { let mut parser = tree_sitter::Parser::new(); parser - .set_language(super::language()) + .set_language(&super::language()) .expect("Error loading Python grammar"); } } diff --git a/python/extractor/tsg-python/tsp/grammar.js b/python/extractor/tsg-python/tsp/grammar.js index 8f4dd8d7cf64..687c700c12ca 100644 --- a/python/extractor/tsg-python/tsp/grammar.js +++ b/python/extractor/tsg-python/tsp/grammar.js @@ -22,6 +22,49 @@ const PREC = { call: 21, } +// The generator's Unicode properties currently use Unicode 16. Supplement them with +// the Unicode 17 XID additions for Python 3.15. These can be removed once the generator +// includes Unicode 17: https://www.unicode.org/Public/17.0.0/ucd/DerivedCoreProperties.txt +const UNICODE17_XID_START = [ + String.raw`\u{88F}`, + String.raw`\u{C5C}`, + String.raw`\u{CDC}`, + String.raw`\u{A7CE}-\u{A7CF}`, + String.raw`\u{A7D2}`, + String.raw`\u{A7D4}`, + String.raw`\u{A7F1}`, + String.raw`\u{10940}-\u{10959}`, + String.raw`\u{10EC5}-\u{10EC7}`, + String.raw`\u{11DB0}-\u{11DDB}`, + String.raw`\u{16EA0}-\u{16EB8}`, + String.raw`\u{16EBB}-\u{16ED3}`, + String.raw`\u{16FF2}-\u{16FF6}`, + String.raw`\u{187F8}-\u{187FF}`, + String.raw`\u{18D09}-\u{18D1E}`, + String.raw`\u{18D80}-\u{18DF2}`, + String.raw`\u{1E6C0}-\u{1E6DE}`, + String.raw`\u{1E6E0}-\u{1E6E2}`, + String.raw`\u{1E6E4}-\u{1E6E5}`, + String.raw`\u{1E6E7}-\u{1E6ED}`, + String.raw`\u{1E6F0}-\u{1E6F4}`, + String.raw`\u{1E6FE}-\u{1E6FF}`, + String.raw`\u{2B73A}-\u{2B73F}`, + String.raw`\u{2CEA2}-\u{2CEAD}`, + String.raw`\u{323B0}-\u{33479}`, +].join(''); + +const UNICODE17_XID_CONTINUE = UNICODE17_XID_START + [ + String.raw`\u{1ACF}-\u{1ADD}`, + String.raw`\u{1AE0}-\u{1AEB}`, + String.raw`\u{10EFA}-\u{10EFB}`, + String.raw`\u{11B60}-\u{11B67}`, + String.raw`\u{11DE0}-\u{11DE9}`, + String.raw`\u{1E6E3}`, + String.raw`\u{1E6E6}`, + String.raw`\u{1E6EE}-\u{1E6EF}`, + String.raw`\u{1E6F5}`, +].join(''); + module.exports = grammar({ name: 'python', @@ -426,7 +469,7 @@ module.exports = grammar({ match_literal_pattern: $ => choice( seq( - optional(field('prefix_operator', '-')), + optional(field('prefix_operator', choice('-', '+'))), field('real', choice($.integer, $.float)), optional(seq( field('operator', choice('+', '-')), @@ -595,6 +638,7 @@ module.exports = grammar({ type_parameters: $ => seq( '[', commaSep1(field('type_parameter', $._type_parameter)), + optional(','), ']' ), @@ -1220,7 +1264,10 @@ module.exports = grammar({ )) }, - identifier: $ => /[_\p{XID_Start}][_\p{XID_Continue}]*/, + identifier: $ => new RegExp( + `[_\\p{XID_Start}${UNICODE17_XID_START}][_\\p{XID_Continue}${UNICODE17_XID_CONTINUE}]*`, + 'u' + ), keyword_identifier: $ => prec(-3, alias( choice( diff --git a/python/extractor/tsg-python/tsp/src/grammar.json b/python/extractor/tsg-python/tsp/src/grammar.json index 8fb9763034ef..c8fe7ff9dea5 100644 --- a/python/extractor/tsg-python/tsp/src/grammar.json +++ b/python/extractor/tsg-python/tsp/src/grammar.json @@ -1792,8 +1792,17 @@ "type": "FIELD", "name": "prefix_operator", "content": { - "type": "STRING", - "value": "-" + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "-" + }, + { + "type": "STRING", + "value": "+" + } + ] } }, { @@ -3016,6 +3025,18 @@ } ] }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, { "type": "STRING", "value": "]" @@ -6756,7 +6777,8 @@ }, "identifier": { "type": "PATTERN", - "value": "[_\\p{XID_Start}][_\\p{XID_Continue}]*" + "value": "[_\\p{XID_Start}\\u{88F}\\u{C5C}\\u{CDC}\\u{A7CE}-\\u{A7CF}\\u{A7D2}\\u{A7D4}\\u{A7F1}\\u{10940}-\\u{10959}\\u{10EC5}-\\u{10EC7}\\u{11DB0}-\\u{11DDB}\\u{16EA0}-\\u{16EB8}\\u{16EBB}-\\u{16ED3}\\u{16FF2}-\\u{16FF6}\\u{187F8}-\\u{187FF}\\u{18D09}-\\u{18D1E}\\u{18D80}-\\u{18DF2}\\u{1E6C0}-\\u{1E6DE}\\u{1E6E0}-\\u{1E6E2}\\u{1E6E4}-\\u{1E6E5}\\u{1E6E7}-\\u{1E6ED}\\u{1E6F0}-\\u{1E6F4}\\u{1E6FE}-\\u{1E6FF}\\u{2B73A}-\\u{2B73F}\\u{2CEA2}-\\u{2CEAD}\\u{323B0}-\\u{33479}][_\\p{XID_Continue}\\u{88F}\\u{C5C}\\u{CDC}\\u{A7CE}-\\u{A7CF}\\u{A7D2}\\u{A7D4}\\u{A7F1}\\u{10940}-\\u{10959}\\u{10EC5}-\\u{10EC7}\\u{11DB0}-\\u{11DDB}\\u{16EA0}-\\u{16EB8}\\u{16EBB}-\\u{16ED3}\\u{16FF2}-\\u{16FF6}\\u{187F8}-\\u{187FF}\\u{18D09}-\\u{18D1E}\\u{18D80}-\\u{18DF2}\\u{1E6C0}-\\u{1E6DE}\\u{1E6E0}-\\u{1E6E2}\\u{1E6E4}-\\u{1E6E5}\\u{1E6E7}-\\u{1E6ED}\\u{1E6F0}-\\u{1E6F4}\\u{1E6FE}-\\u{1E6FF}\\u{2B73A}-\\u{2B73F}\\u{2CEA2}-\\u{2CEAD}\\u{323B0}-\\u{33479}\\u{1ACF}-\\u{1ADD}\\u{1AE0}-\\u{1AEB}\\u{10EFA}-\\u{10EFB}\\u{11B60}-\\u{11B67}\\u{11DE0}-\\u{11DE9}\\u{1E6E3}\\u{1E6E6}\\u{1E6EE}-\\u{1E6EF}\\u{1E6F5}]*", + "flags": "u" }, "keyword_identifier": { "type": "PREC", diff --git a/python/extractor/tsg-python/tsp/src/node-types.json b/python/extractor/tsg-python/tsp/src/node-types.json index 6579591c6522..03cdee9b3670 100644 --- a/python/extractor/tsg-python/tsp/src/node-types.json +++ b/python/extractor/tsg-python/tsp/src/node-types.json @@ -2510,6 +2510,10 @@ "multiple": false, "required": false, "types": [ + { + "type": "+", + "named": false + }, { "type": "-", "named": false diff --git a/python/extractor/tsg-python/tsp/src/parser.c b/python/extractor/tsg-python/tsp/src/parser.c index 16db1b93d977..622fe5f902d3 100644 --- a/python/extractor/tsg-python/tsp/src/parser.c +++ b/python/extractor/tsg-python/tsp/src/parser.c @@ -1,4 +1,4 @@ -/* Automatically @generated by tree-sitter */ +/* Automatically @generated by tree-sitter v0.25.10 */ #include "tree_sitter/parser.h" @@ -7,7 +7,7 @@ #endif #define LANGUAGE_VERSION 14 -#define STATE_COUNT 1755 +#define STATE_COUNT 1759 #define LARGE_STATE_COUNT 157 #define SYMBOL_COUNT 292 #define ALIAS_COUNT 3 @@ -3088,8 +3088,8 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1] = 1, [2] = 2, [3] = 3, - [4] = 4, - [5] = 2, + [4] = 2, + [5] = 5, [6] = 6, [7] = 7, [8] = 8, @@ -3116,8 +3116,8 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [29] = 29, [30] = 30, [31] = 31, - [32] = 4, - [33] = 6, + [32] = 5, + [33] = 7, [34] = 8, [35] = 9, [36] = 10, @@ -3143,13 +3143,13 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [56] = 30, [57] = 31, [58] = 3, - [59] = 7, + [59] = 6, [60] = 60, [61] = 60, [62] = 62, - [63] = 60, - [64] = 64, - [65] = 62, + [63] = 63, + [64] = 60, + [65] = 63, [66] = 66, [67] = 66, [68] = 68, @@ -3161,7 +3161,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [74] = 74, [75] = 75, [76] = 76, - [77] = 75, + [77] = 77, [78] = 78, [79] = 79, [80] = 80, @@ -3169,54 +3169,54 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [82] = 82, [83] = 83, [84] = 84, - [85] = 85, - [86] = 86, - [87] = 87, - [88] = 88, - [89] = 89, - [90] = 69, - [91] = 74, - [92] = 70, - [93] = 76, - [94] = 68, - [95] = 95, - [96] = 81, - [97] = 71, - [98] = 87, - [99] = 79, + [85] = 70, + [86] = 75, + [87] = 72, + [88] = 73, + [89] = 74, + [90] = 79, + [91] = 91, + [92] = 81, + [93] = 93, + [94] = 83, + [95] = 91, + [96] = 93, + [97] = 97, + [98] = 97, + [99] = 76, [100] = 100, - [101] = 95, - [102] = 80, + [101] = 100, + [102] = 102, [103] = 103, - [104] = 100, - [105] = 103, + [104] = 68, + [105] = 102, [106] = 106, - [107] = 107, - [108] = 107, - [109] = 82, + [107] = 103, + [108] = 78, + [109] = 109, [110] = 110, - [111] = 110, - [112] = 83, + [111] = 106, + [112] = 112, [113] = 113, - [114] = 84, - [115] = 115, - [116] = 113, - [117] = 85, - [118] = 115, + [114] = 109, + [115] = 80, + [116] = 116, + [117] = 110, + [118] = 69, [119] = 119, - [120] = 72, - [121] = 86, - [122] = 73, - [123] = 106, + [120] = 112, + [121] = 71, + [122] = 113, + [123] = 82, [124] = 119, - [125] = 88, - [126] = 89, + [125] = 116, + [126] = 84, [127] = 127, [128] = 128, - [129] = 127, - [130] = 127, - [131] = 128, - [132] = 128, + [129] = 128, + [130] = 128, + [131] = 127, + [132] = 127, [133] = 133, [134] = 134, [135] = 135, @@ -3224,31 +3224,31 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [137] = 137, [138] = 136, [139] = 136, - [140] = 136, - [141] = 141, - [142] = 137, - [143] = 143, - [144] = 144, - [145] = 136, - [146] = 136, - [147] = 137, - [148] = 135, + [140] = 140, + [141] = 136, + [142] = 142, + [143] = 137, + [144] = 136, + [145] = 145, + [146] = 137, + [147] = 135, + [148] = 137, [149] = 134, - [150] = 137, - [151] = 137, + [150] = 136, + [151] = 145, [152] = 137, - [153] = 144, + [153] = 137, [154] = 154, [155] = 155, [156] = 156, [157] = 157, - [158] = 157, + [158] = 158, [159] = 159, - [160] = 159, + [160] = 160, [161] = 161, - [162] = 162, - [163] = 159, - [164] = 164, + [162] = 158, + [163] = 161, + [164] = 158, [165] = 165, [166] = 165, [167] = 165, @@ -3258,97 +3258,97 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [171] = 171, [172] = 172, [173] = 173, - [174] = 173, + [174] = 171, [175] = 175, [176] = 176, [177] = 177, [178] = 178, - [179] = 169, + [179] = 179, [180] = 180, - [181] = 178, + [181] = 169, [182] = 182, [183] = 183, - [184] = 184, - [185] = 171, - [186] = 178, - [187] = 172, - [188] = 178, - [189] = 184, - [190] = 190, + [184] = 172, + [185] = 173, + [186] = 180, + [187] = 187, + [188] = 180, + [189] = 179, + [190] = 180, [191] = 191, [192] = 192, [193] = 193, [194] = 194, - [195] = 193, - [196] = 194, - [197] = 173, + [195] = 195, + [196] = 196, + [197] = 197, [198] = 198, - [199] = 191, - [200] = 200, + [199] = 199, + [200] = 173, [201] = 201, [202] = 202, [203] = 172, - [204] = 198, - [205] = 191, - [206] = 200, - [207] = 201, - [208] = 208, - [209] = 209, - [210] = 208, - [211] = 171, - [212] = 208, - [213] = 192, + [204] = 193, + [205] = 194, + [206] = 206, + [207] = 198, + [208] = 195, + [209] = 196, + [210] = 198, + [211] = 199, + [212] = 201, + [213] = 213, [214] = 214, - [215] = 192, + [215] = 191, [216] = 193, [217] = 194, - [218] = 198, - [219] = 191, - [220] = 200, - [221] = 201, - [222] = 209, - [223] = 208, - [224] = 224, - [225] = 193, - [226] = 194, - [227] = 198, - [228] = 228, - [229] = 200, - [230] = 201, - [231] = 209, - [232] = 208, - [233] = 233, - [234] = 209, - [235] = 208, - [236] = 209, - [237] = 209, + [218] = 195, + [219] = 196, + [220] = 214, + [221] = 198, + [222] = 199, + [223] = 171, + [224] = 214, + [225] = 191, + [226] = 193, + [227] = 194, + [228] = 195, + [229] = 196, + [230] = 198, + [231] = 199, + [232] = 191, + [233] = 198, + [234] = 199, + [235] = 199, + [236] = 201, + [237] = 214, [238] = 238, - [239] = 238, + [239] = 239, [240] = 240, [241] = 238, - [242] = 238, + [242] = 242, [243] = 243, - [244] = 244, - [245] = 245, + [244] = 238, + [245] = 238, [246] = 246, [247] = 247, [248] = 248, [249] = 249, [250] = 250, - [251] = 248, - [252] = 252, - [253] = 249, + [251] = 251, + [252] = 247, + [253] = 250, [254] = 254, - [255] = 254, - [256] = 254, - [257] = 257, + [255] = 255, + [256] = 255, + [257] = 254, [258] = 258, - [259] = 257, + [259] = 258, [260] = 258, - [261] = 257, + [261] = 254, [262] = 258, - [263] = 257, - [264] = 258, + [263] = 254, + [264] = 255, [265] = 265, [266] = 266, [267] = 267, @@ -3356,23 +3356,23 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [269] = 269, [270] = 270, [271] = 271, - [272] = 266, + [272] = 272, [273] = 273, [274] = 274, [275] = 275, - [276] = 276, - [277] = 270, + [276] = 271, + [277] = 265, [278] = 278, [279] = 279, [280] = 280, - [281] = 275, - [282] = 267, - [283] = 278, - [284] = 284, - [285] = 284, - [286] = 280, - [287] = 274, - [288] = 271, + [281] = 269, + [282] = 282, + [283] = 272, + [284] = 270, + [285] = 274, + [286] = 278, + [287] = 268, + [288] = 275, [289] = 289, [290] = 290, [291] = 291, @@ -3380,7 +3380,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [293] = 293, [294] = 294, [295] = 295, - [296] = 296, + [296] = 290, [297] = 297, [298] = 298, [299] = 299, @@ -3388,9 +3388,9 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [301] = 301, [302] = 302, [303] = 303, - [304] = 292, - [305] = 295, - [306] = 290, + [304] = 300, + [305] = 305, + [306] = 291, [307] = 307, [308] = 308, [309] = 309, @@ -3399,29 +3399,29 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [312] = 312, [313] = 313, [314] = 314, - [315] = 315, - [316] = 312, + [315] = 314, + [316] = 316, [317] = 317, [318] = 318, [319] = 319, - [320] = 320, + [320] = 318, [321] = 321, [322] = 322, - [323] = 323, - [324] = 314, - [325] = 311, - [326] = 326, - [327] = 321, - [328] = 318, - [329] = 322, - [330] = 326, - [331] = 315, - [332] = 320, - [333] = 333, - [334] = 333, - [335] = 323, - [336] = 336, - [337] = 319, + [323] = 321, + [324] = 324, + [325] = 325, + [326] = 313, + [327] = 327, + [328] = 312, + [329] = 329, + [330] = 324, + [331] = 331, + [332] = 329, + [333] = 317, + [334] = 331, + [335] = 325, + [336] = 322, + [337] = 316, [338] = 338, [339] = 339, [340] = 340, @@ -3429,175 +3429,175 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [342] = 342, [343] = 343, [344] = 344, - [345] = 345, - [346] = 346, - [347] = 347, + [345] = 339, + [346] = 341, + [347] = 342, [348] = 348, [349] = 349, [350] = 350, - [351] = 346, + [351] = 351, [352] = 352, [353] = 353, [354] = 354, - [355] = 355, + [355] = 350, [356] = 356, - [357] = 342, - [358] = 338, - [359] = 339, + [357] = 357, + [358] = 358, + [359] = 359, [360] = 360, [361] = 361, - [362] = 362, + [362] = 343, [363] = 363, [364] = 364, - [365] = 353, - [366] = 354, - [367] = 346, - [368] = 342, - [369] = 355, - [370] = 346, - [371] = 349, - [372] = 372, - [373] = 353, - [374] = 374, - [375] = 355, - [376] = 338, - [377] = 339, - [378] = 360, - [379] = 342, - [380] = 353, - [381] = 360, - [382] = 338, - [383] = 339, - [384] = 360, + [365] = 354, + [366] = 366, + [367] = 367, + [368] = 338, + [369] = 369, + [370] = 352, + [371] = 344, + [372] = 343, + [373] = 363, + [374] = 344, + [375] = 338, + [376] = 339, + [377] = 340, + [378] = 378, + [379] = 341, + [380] = 380, + [381] = 381, + [382] = 382, + [383] = 341, + [384] = 349, [385] = 342, [386] = 386, [387] = 387, - [388] = 349, - [389] = 372, - [390] = 349, - [391] = 372, - [392] = 350, + [388] = 342, + [389] = 389, + [390] = 338, + [391] = 391, + [392] = 392, [393] = 393, - [394] = 394, - [395] = 374, - [396] = 372, - [397] = 374, + [394] = 349, + [395] = 350, + [396] = 382, + [397] = 352, [398] = 398, - [399] = 372, - [400] = 400, - [401] = 343, - [402] = 398, - [403] = 403, - [404] = 404, - [405] = 405, - [406] = 346, - [407] = 407, - [408] = 346, - [409] = 374, - [410] = 353, - [411] = 355, - [412] = 338, - [413] = 339, - [414] = 360, - [415] = 342, - [416] = 372, - [417] = 417, - [418] = 403, - [419] = 353, - [420] = 403, - [421] = 354, - [422] = 403, - [423] = 403, - [424] = 345, - [425] = 425, - [426] = 355, - [427] = 425, - [428] = 339, - [429] = 429, - [430] = 360, - [431] = 394, - [432] = 403, - [433] = 338, - [434] = 434, - [435] = 405, - [436] = 348, - [437] = 347, - [438] = 355, + [399] = 349, + [400] = 350, + [401] = 350, + [402] = 339, + [403] = 361, + [404] = 343, + [405] = 363, + [406] = 344, + [407] = 393, + [408] = 340, + [409] = 339, + [410] = 340, + [411] = 338, + [412] = 341, + [413] = 343, + [414] = 344, + [415] = 339, + [416] = 340, + [417] = 341, + [418] = 342, + [419] = 350, + [420] = 420, + [421] = 393, + [422] = 422, + [423] = 393, + [424] = 393, + [425] = 393, + [426] = 378, + [427] = 359, + [428] = 428, + [429] = 342, + [430] = 338, + [431] = 422, + [432] = 352, + [433] = 343, + [434] = 344, + [435] = 389, + [436] = 351, + [437] = 380, + [438] = 340, [439] = 439, [440] = 440, [441] = 441, [442] = 442, [443] = 443, [444] = 444, - [445] = 444, + [445] = 445, [446] = 446, [447] = 447, [448] = 448, - [449] = 448, - [450] = 450, - [451] = 439, - [452] = 452, - [453] = 453, - [454] = 447, - [455] = 455, - [456] = 441, - [457] = 457, - [458] = 457, - [459] = 455, - [460] = 442, - [461] = 440, - [462] = 443, - [463] = 446, - [464] = 450, + [449] = 449, + [450] = 439, + [451] = 451, + [452] = 443, + [453] = 441, + [454] = 442, + [455] = 445, + [456] = 456, + [457] = 456, + [458] = 458, + [459] = 440, + [460] = 446, + [461] = 447, + [462] = 451, + [463] = 448, + [464] = 449, [465] = 465, [466] = 466, [467] = 467, [468] = 468, [469] = 469, - [470] = 470, - [471] = 471, + [470] = 467, + [471] = 469, [472] = 472, [473] = 473, - [474] = 474, + [474] = 468, [475] = 475, [476] = 476, - [477] = 475, + [477] = 477, [478] = 478, - [479] = 473, + [479] = 479, [480] = 480, [481] = 480, - [482] = 474, + [482] = 482, [483] = 483, - [484] = 476, - [485] = 483, - [486] = 486, - [487] = 467, - [488] = 468, - [489] = 472, - [490] = 486, - [491] = 478, - [492] = 317, + [484] = 472, + [485] = 465, + [486] = 477, + [487] = 487, + [488] = 466, + [489] = 487, + [490] = 479, + [491] = 473, + [492] = 492, [493] = 493, [494] = 494, [495] = 495, - [496] = 496, - [497] = 493, - [498] = 498, + [496] = 495, + [497] = 497, + [498] = 497, [499] = 499, [500] = 500, - [501] = 501, - [502] = 502, - [503] = 313, - [504] = 496, - [505] = 498, + [501] = 493, + [502] = 319, + [503] = 503, + [504] = 327, + [505] = 505, [506] = 506, [507] = 507, - [508] = 507, - [509] = 506, - [510] = 510, - [511] = 500, - [512] = 502, - [513] = 501, + [508] = 508, + [509] = 492, + [510] = 506, + [511] = 503, + [512] = 494, + [513] = 508, [514] = 514, [515] = 515, [516] = 516, @@ -3610,21 +3610,21 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [523] = 523, [524] = 524, [525] = 525, - [526] = 526, - [527] = 527, - [528] = 528, + [526] = 517, + [527] = 518, + [528] = 525, [529] = 529, - [530] = 530, + [530] = 529, [531] = 531, - [532] = 532, + [532] = 531, [533] = 533, - [534] = 534, + [534] = 533, [535] = 535, [536] = 536, [537] = 537, [538] = 538, [539] = 539, - [540] = 533, + [540] = 540, [541] = 541, [542] = 542, [543] = 543, @@ -3633,74 +3633,74 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [546] = 546, [547] = 547, [548] = 548, - [549] = 529, + [549] = 549, [550] = 550, - [551] = 531, - [552] = 538, + [551] = 551, + [552] = 552, [553] = 553, [554] = 554, - [555] = 544, + [555] = 555, [556] = 556, - [557] = 554, - [558] = 545, + [557] = 557, + [558] = 558, [559] = 559, [560] = 560, - [561] = 519, - [562] = 539, - [563] = 520, - [564] = 556, - [565] = 521, + [561] = 561, + [562] = 562, + [563] = 563, + [564] = 564, + [565] = 535, [566] = 566, - [567] = 525, - [568] = 526, - [569] = 530, - [570] = 532, - [571] = 535, + [567] = 567, + [568] = 568, + [569] = 569, + [570] = 570, + [571] = 536, [572] = 537, - [573] = 541, - [574] = 543, - [575] = 547, - [576] = 548, - [577] = 550, - [578] = 566, - [579] = 579, - [580] = 580, - [581] = 581, - [582] = 579, - [583] = 583, - [584] = 584, - [585] = 585, - [586] = 586, - [587] = 587, - [588] = 528, - [589] = 589, - [590] = 536, - [591] = 542, - [592] = 553, - [593] = 546, - [594] = 580, - [595] = 595, - [596] = 596, - [597] = 516, - [598] = 517, - [599] = 518, - [600] = 581, - [601] = 586, - [602] = 522, - [603] = 523, - [604] = 559, - [605] = 534, - [606] = 595, - [607] = 596, - [608] = 514, - [609] = 583, - [610] = 584, - [611] = 611, - [612] = 587, - [613] = 585, - [614] = 614, - [615] = 560, - [616] = 611, + [573] = 515, + [574] = 569, + [575] = 538, + [576] = 576, + [577] = 539, + [578] = 540, + [579] = 541, + [580] = 542, + [581] = 543, + [582] = 544, + [583] = 545, + [584] = 546, + [585] = 547, + [586] = 548, + [587] = 549, + [588] = 550, + [589] = 551, + [590] = 552, + [591] = 553, + [592] = 554, + [593] = 555, + [594] = 594, + [595] = 519, + [596] = 556, + [597] = 557, + [598] = 558, + [599] = 559, + [600] = 522, + [601] = 560, + [602] = 523, + [603] = 524, + [604] = 561, + [605] = 562, + [606] = 563, + [607] = 564, + [608] = 516, + [609] = 514, + [610] = 566, + [611] = 567, + [612] = 568, + [613] = 613, + [614] = 570, + [615] = 615, + [616] = 613, [617] = 617, [618] = 618, [619] = 619, @@ -3714,74 +3714,74 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [627] = 627, [628] = 628, [629] = 629, - [630] = 629, + [630] = 630, [631] = 631, [632] = 632, [633] = 633, [634] = 634, - [635] = 626, - [636] = 626, + [635] = 635, + [636] = 636, [637] = 637, - [638] = 638, + [638] = 628, [639] = 639, [640] = 640, - [641] = 634, - [642] = 628, - [643] = 628, - [644] = 644, - [645] = 644, - [646] = 629, - [647] = 633, - [648] = 648, - [649] = 634, - [650] = 637, - [651] = 648, - [652] = 633, - [653] = 626, - [654] = 640, - [655] = 631, - [656] = 629, - [657] = 644, - [658] = 648, - [659] = 638, - [660] = 638, - [661] = 644, - [662] = 634, - [663] = 637, - [664] = 631, - [665] = 629, - [666] = 626, - [667] = 638, - [668] = 631, - [669] = 648, - [670] = 648, - [671] = 633, - [672] = 634, - [673] = 628, - [674] = 644, - [675] = 633, - [676] = 634, - [677] = 637, - [678] = 640, - [679] = 640, - [680] = 631, - [681] = 629, - [682] = 626, - [683] = 638, - [684] = 640, - [685] = 685, - [686] = 648, - [687] = 633, - [688] = 628, - [689] = 631, - [690] = 690, - [691] = 638, - [692] = 628, - [693] = 693, - [694] = 694, - [695] = 637, - [696] = 637, - [697] = 644, + [641] = 626, + [642] = 632, + [643] = 633, + [644] = 634, + [645] = 635, + [646] = 636, + [647] = 637, + [648] = 628, + [649] = 639, + [650] = 640, + [651] = 651, + [652] = 639, + [653] = 640, + [654] = 626, + [655] = 632, + [656] = 633, + [657] = 634, + [658] = 635, + [659] = 636, + [660] = 637, + [661] = 628, + [662] = 639, + [663] = 663, + [664] = 626, + [665] = 632, + [666] = 633, + [667] = 634, + [668] = 635, + [669] = 636, + [670] = 637, + [671] = 628, + [672] = 639, + [673] = 640, + [674] = 651, + [675] = 675, + [676] = 676, + [677] = 626, + [678] = 632, + [679] = 651, + [680] = 633, + [681] = 634, + [682] = 635, + [683] = 651, + [684] = 636, + [685] = 651, + [686] = 626, + [687] = 632, + [688] = 633, + [689] = 634, + [690] = 635, + [691] = 636, + [692] = 637, + [693] = 628, + [694] = 637, + [695] = 639, + [696] = 640, + [697] = 651, [698] = 698, [699] = 640, [700] = 700, @@ -3789,7 +3789,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [702] = 702, [703] = 703, [704] = 704, - [705] = 704, + [705] = 705, [706] = 706, [707] = 707, [708] = 708, @@ -3819,306 +3819,306 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [732] = 732, [733] = 733, [734] = 734, - [735] = 735, + [735] = 728, [736] = 736, [737] = 737, [738] = 738, [739] = 739, [740] = 740, [741] = 741, - [742] = 739, + [742] = 742, [743] = 743, - [744] = 744, - [745] = 745, + [744] = 739, + [745] = 676, [746] = 746, [747] = 747, [748] = 748, - [749] = 690, - [750] = 693, - [751] = 751, - [752] = 752, - [753] = 685, - [754] = 627, - [755] = 751, - [756] = 752, - [757] = 757, - [758] = 743, - [759] = 744, - [760] = 745, - [761] = 746, - [762] = 740, - [763] = 741, - [764] = 757, - [765] = 748, - [766] = 747, - [767] = 736, - [768] = 685, - [769] = 627, - [770] = 690, - [771] = 693, - [772] = 698, - [773] = 704, - [774] = 774, - [775] = 704, - [776] = 685, - [777] = 627, - [778] = 778, - [779] = 694, - [780] = 704, - [781] = 694, - [782] = 698, - [783] = 737, - [784] = 690, - [785] = 693, - [786] = 778, - [787] = 774, + [749] = 749, + [750] = 742, + [751] = 746, + [752] = 743, + [753] = 747, + [754] = 754, + [755] = 755, + [756] = 748, + [757] = 675, + [758] = 758, + [759] = 740, + [760] = 741, + [761] = 755, + [762] = 631, + [763] = 754, + [764] = 758, + [765] = 749, + [766] = 630, + [767] = 728, + [768] = 708, + [769] = 769, + [770] = 728, + [771] = 698, + [772] = 627, + [773] = 773, + [774] = 630, + [775] = 631, + [776] = 675, + [777] = 676, + [778] = 675, + [779] = 676, + [780] = 728, + [781] = 630, + [782] = 631, + [783] = 698, + [784] = 627, + [785] = 773, + [786] = 769, + [787] = 707, [788] = 741, - [789] = 704, - [790] = 694, - [791] = 698, - [792] = 702, - [793] = 701, - [794] = 703, - [795] = 700, - [796] = 751, - [797] = 752, - [798] = 757, - [799] = 747, - [800] = 740, + [789] = 742, + [790] = 743, + [791] = 739, + [792] = 748, + [793] = 755, + [794] = 758, + [795] = 754, + [796] = 749, + [797] = 740, + [798] = 741, + [799] = 742, + [800] = 743, [801] = 739, - [802] = 743, - [803] = 744, - [804] = 748, - [805] = 747, - [806] = 745, - [807] = 746, + [802] = 748, + [803] = 755, + [804] = 758, + [805] = 740, + [806] = 754, + [807] = 749, [808] = 747, - [809] = 752, - [810] = 757, - [811] = 739, - [812] = 743, - [813] = 744, - [814] = 745, - [815] = 746, - [816] = 740, - [817] = 741, - [818] = 748, - [819] = 751, - [820] = 752, - [821] = 757, - [822] = 739, + [809] = 746, + [810] = 810, + [811] = 728, + [812] = 746, + [813] = 813, + [814] = 698, + [815] = 627, + [816] = 700, + [817] = 703, + [818] = 747, + [819] = 747, + [820] = 701, + [821] = 702, + [822] = 742, [823] = 743, - [824] = 744, - [825] = 745, - [826] = 746, - [827] = 740, - [828] = 741, - [829] = 748, - [830] = 751, - [831] = 778, - [832] = 778, - [833] = 748, - [834] = 701, - [835] = 774, - [836] = 774, - [837] = 778, - [838] = 515, - [839] = 747, - [840] = 700, - [841] = 841, - [842] = 614, - [843] = 702, - [844] = 751, - [845] = 752, - [846] = 702, + [824] = 739, + [825] = 748, + [826] = 755, + [827] = 758, + [828] = 754, + [829] = 749, + [830] = 740, + [831] = 741, + [832] = 813, + [833] = 746, + [834] = 834, + [835] = 742, + [836] = 836, + [837] = 618, + [838] = 701, + [839] = 754, + [840] = 749, + [841] = 576, + [842] = 773, + [843] = 746, + [844] = 520, + [845] = 747, + [846] = 703, [847] = 701, - [848] = 703, - [849] = 617, - [850] = 494, - [851] = 524, - [852] = 703, - [853] = 700, - [854] = 774, + [848] = 848, + [849] = 849, + [850] = 850, + [851] = 851, + [852] = 702, + [853] = 769, + [854] = 617, [855] = 855, - [856] = 757, - [857] = 857, - [858] = 858, - [859] = 618, - [860] = 470, + [856] = 773, + [857] = 739, + [858] = 507, + [859] = 700, + [860] = 860, [861] = 861, - [862] = 739, - [863] = 743, - [864] = 744, - [865] = 745, - [866] = 746, - [867] = 740, - [868] = 741, - [869] = 869, - [870] = 869, - [871] = 871, - [872] = 499, - [873] = 734, - [874] = 723, - [875] = 724, - [876] = 313, - [877] = 723, - [878] = 707, - [879] = 725, - [880] = 726, - [881] = 727, - [882] = 728, - [883] = 729, - [884] = 730, - [885] = 731, - [886] = 732, - [887] = 733, - [888] = 734, - [889] = 735, - [890] = 709, - [891] = 710, - [892] = 736, - [893] = 737, - [894] = 711, + [862] = 702, + [863] = 741, + [864] = 773, + [865] = 700, + [866] = 755, + [867] = 867, + [868] = 868, + [869] = 703, + [870] = 505, + [871] = 758, + [872] = 748, + [873] = 743, + [874] = 740, + [875] = 594, + [876] = 769, + [877] = 482, + [878] = 769, + [879] = 734, + [880] = 715, + [881] = 716, + [882] = 718, + [883] = 719, + [884] = 738, + [885] = 721, + [886] = 736, + [887] = 737, + [888] = 720, + [889] = 711, + [890] = 705, + [891] = 707, + [892] = 892, + [893] = 714, + [894] = 710, [895] = 708, - [896] = 896, - [897] = 897, - [898] = 725, - [899] = 712, - [900] = 716, - [901] = 713, - [902] = 714, - [903] = 726, - [904] = 727, - [905] = 728, - [906] = 317, - [907] = 778, - [908] = 729, - [909] = 730, + [896] = 736, + [897] = 717, + [898] = 737, + [899] = 720, + [900] = 711, + [901] = 723, + [902] = 723, + [903] = 724, + [904] = 731, + [905] = 734, + [906] = 709, + [907] = 520, + [908] = 713, + [909] = 773, [910] = 731, - [911] = 706, - [912] = 715, - [913] = 774, - [914] = 515, - [915] = 736, - [916] = 737, - [917] = 614, - [918] = 706, - [919] = 715, + [911] = 769, + [912] = 730, + [913] = 706, + [914] = 707, + [915] = 715, + [916] = 716, + [917] = 708, + [918] = 718, + [919] = 705, [920] = 719, - [921] = 709, - [922] = 710, - [923] = 707, - [924] = 524, - [925] = 708, - [926] = 738, - [927] = 713, - [928] = 721, - [929] = 724, - [930] = 722, + [921] = 725, + [922] = 738, + [923] = 726, + [924] = 727, + [925] = 729, + [926] = 732, + [927] = 710, + [928] = 713, + [929] = 722, + [930] = 714, [931] = 931, - [932] = 711, - [933] = 716, - [934] = 934, + [932] = 932, + [933] = 327, + [934] = 724, [935] = 935, - [936] = 714, - [937] = 717, - [938] = 718, - [939] = 939, - [940] = 719, - [941] = 732, - [942] = 733, - [943] = 718, - [944] = 738, - [945] = 735, - [946] = 721, - [947] = 717, - [948] = 722, - [949] = 720, - [950] = 720, + [936] = 721, + [937] = 722, + [938] = 730, + [939] = 717, + [940] = 725, + [941] = 704, + [942] = 726, + [943] = 706, + [944] = 712, + [945] = 727, + [946] = 729, + [947] = 733, + [948] = 732, + [949] = 594, + [950] = 704, [951] = 712, - [952] = 722, - [953] = 708, - [954] = 709, - [955] = 710, - [956] = 711, - [957] = 712, - [958] = 713, - [959] = 317, - [960] = 715, - [961] = 716, - [962] = 717, - [963] = 718, - [964] = 719, - [965] = 738, - [966] = 721, - [967] = 723, - [968] = 724, - [969] = 313, - [970] = 725, - [971] = 726, - [972] = 727, - [973] = 728, - [974] = 729, + [952] = 733, + [953] = 319, + [954] = 576, + [955] = 709, + [956] = 327, + [957] = 729, + [958] = 721, + [959] = 732, + [960] = 734, + [961] = 704, + [962] = 712, + [963] = 733, + [964] = 319, + [965] = 717, + [966] = 737, + [967] = 714, + [968] = 723, + [969] = 725, + [970] = 726, + [971] = 867, + [972] = 731, + [973] = 836, + [974] = 705, [975] = 730, - [976] = 731, - [977] = 732, - [978] = 733, - [979] = 734, - [980] = 735, - [981] = 981, - [982] = 982, - [983] = 983, - [984] = 858, + [976] = 706, + [977] = 709, + [978] = 710, + [979] = 713, + [980] = 722, + [981] = 715, + [982] = 716, + [983] = 718, + [984] = 719, [985] = 720, - [986] = 857, - [987] = 987, - [988] = 706, - [989] = 707, - [990] = 714, + [986] = 738, + [987] = 711, + [988] = 736, + [989] = 724, + [990] = 727, [991] = 991, [992] = 992, [993] = 993, [994] = 994, [995] = 995, [996] = 996, - [997] = 997, - [998] = 997, - [999] = 996, + [997] = 996, + [998] = 998, + [999] = 998, [1000] = 1000, - [1001] = 996, + [1001] = 1001, [1002] = 1002, - [1003] = 996, - [1004] = 997, + [1003] = 1003, + [1004] = 998, [1005] = 1005, [1006] = 1006, - [1007] = 1007, - [1008] = 997, + [1007] = 998, + [1008] = 996, [1009] = 1009, - [1010] = 1010, + [1010] = 998, [1011] = 1011, - [1012] = 1012, - [1013] = 1013, - [1014] = 997, - [1015] = 996, - [1016] = 997, - [1017] = 1017, - [1018] = 1018, - [1019] = 996, + [1012] = 996, + [1013] = 996, + [1014] = 1014, + [1015] = 1015, + [1016] = 1016, + [1017] = 998, + [1018] = 996, + [1019] = 1019, [1020] = 1020, - [1021] = 1021, + [1021] = 1020, [1022] = 1022, - [1023] = 1021, - [1024] = 1021, - [1025] = 1021, - [1026] = 1021, - [1027] = 1021, - [1028] = 1028, + [1023] = 1023, + [1024] = 1020, + [1025] = 1020, + [1026] = 1020, + [1027] = 1027, + [1028] = 1020, [1029] = 1029, [1030] = 1030, [1031] = 1031, - [1032] = 1031, - [1033] = 1033, - [1034] = 1033, + [1032] = 1032, + [1033] = 1031, + [1034] = 1032, [1035] = 1035, [1036] = 1035, [1037] = 1037, @@ -4130,57 +4130,57 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1043] = 1043, [1044] = 1044, [1045] = 1045, - [1046] = 1046, + [1046] = 1042, [1047] = 1041, - [1048] = 1048, - [1049] = 1044, + [1048] = 1045, + [1049] = 1049, [1050] = 1040, - [1051] = 1046, + [1051] = 1051, [1052] = 1052, - [1053] = 1053, - [1054] = 1044, - [1055] = 1040, - [1056] = 1052, - [1057] = 1046, - [1058] = 1052, - [1059] = 1044, - [1060] = 1044, - [1061] = 1040, - [1062] = 1046, - [1063] = 1041, - [1064] = 1064, - [1065] = 1046, - [1066] = 1052, - [1067] = 1041, - [1068] = 1068, + [1053] = 1042, + [1054] = 1051, + [1055] = 1055, + [1056] = 1056, + [1057] = 1040, + [1058] = 1041, + [1059] = 1040, + [1060] = 1041, + [1061] = 1045, + [1062] = 1042, + [1063] = 1051, + [1064] = 1051, + [1065] = 1045, + [1066] = 1040, + [1067] = 1067, + [1068] = 1045, [1069] = 1069, [1070] = 1070, [1071] = 1071, - [1072] = 1072, + [1072] = 1071, [1073] = 1073, - [1074] = 1070, - [1075] = 1075, - [1076] = 1072, + [1074] = 1074, + [1075] = 1071, + [1076] = 1076, [1077] = 1077, [1078] = 1078, - [1079] = 1079, + [1079] = 1074, [1080] = 1080, [1081] = 1081, [1082] = 1082, [1083] = 1071, - [1084] = 1070, - [1085] = 1077, - [1086] = 1070, - [1087] = 1075, - [1088] = 1073, - [1089] = 1082, - [1090] = 1080, - [1091] = 1081, - [1092] = 1080, - [1093] = 1075, - [1094] = 1075, - [1095] = 1080, - [1096] = 1069, + [1084] = 1078, + [1085] = 1082, + [1086] = 1086, + [1087] = 1070, + [1088] = 1077, + [1089] = 1070, + [1090] = 1073, + [1091] = 1080, + [1092] = 1077, + [1093] = 1077, + [1094] = 1076, + [1095] = 1081, + [1096] = 1070, [1097] = 1097, [1098] = 1098, [1099] = 1099, @@ -4192,141 +4192,141 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1105] = 1105, [1106] = 1106, [1107] = 1107, - [1108] = 1108, - [1109] = 1098, - [1110] = 1110, + [1108] = 1106, + [1109] = 1109, + [1110] = 1082, [1111] = 1111, - [1112] = 1071, + [1112] = 1037, [1113] = 1113, [1114] = 1114, - [1115] = 1073, + [1115] = 1080, [1116] = 1116, - [1117] = 1117, - [1118] = 1077, - [1119] = 1119, + [1117] = 1078, + [1118] = 1074, + [1119] = 1081, [1120] = 1120, - [1121] = 1072, - [1122] = 1122, - [1123] = 1081, + [1121] = 1082, + [1122] = 1073, + [1123] = 1076, [1124] = 1124, [1125] = 1125, - [1126] = 1037, - [1127] = 1127, + [1126] = 1126, + [1127] = 1076, [1128] = 1128, - [1129] = 1038, + [1129] = 1129, [1130] = 1130, - [1131] = 1037, + [1131] = 1130, [1132] = 1132, [1133] = 1133, [1134] = 1134, - [1135] = 1135, - [1136] = 1136, + [1135] = 1080, + [1136] = 1078, [1137] = 1137, - [1138] = 1138, - [1139] = 1098, - [1140] = 1140, + [1138] = 1100, + [1139] = 1078, + [1140] = 1073, [1141] = 1141, - [1142] = 1142, + [1142] = 1037, [1143] = 1143, - [1144] = 1120, + [1144] = 1144, [1145] = 1038, - [1146] = 1146, - [1147] = 1069, + [1146] = 1080, + [1147] = 1147, [1148] = 1148, [1149] = 1149, [1150] = 1150, [1151] = 1151, - [1152] = 1081, + [1152] = 1152, [1153] = 1081, - [1154] = 1077, - [1155] = 1073, - [1156] = 1069, - [1157] = 1071, - [1158] = 1158, - [1159] = 1098, - [1160] = 1160, - [1161] = 1082, - [1162] = 1077, + [1154] = 1154, + [1155] = 1155, + [1156] = 1156, + [1157] = 1157, + [1158] = 1074, + [1159] = 1159, + [1160] = 1081, + [1161] = 1038, + [1162] = 1162, [1163] = 1082, - [1164] = 1073, - [1165] = 1069, - [1166] = 1072, - [1167] = 1071, - [1168] = 1082, - [1169] = 1125, - [1170] = 1072, - [1171] = 1171, - [1172] = 1146, + [1164] = 1164, + [1165] = 1073, + [1166] = 1166, + [1167] = 1167, + [1168] = 1106, + [1169] = 1076, + [1170] = 1170, + [1171] = 1126, + [1172] = 1074, [1173] = 1173, [1174] = 1174, - [1175] = 1107, - [1176] = 1176, + [1175] = 1128, + [1176] = 1106, [1177] = 1177, [1178] = 1178, [1179] = 1179, [1180] = 1180, [1181] = 1181, - [1182] = 1077, + [1182] = 1182, [1183] = 1183, [1184] = 1184, [1185] = 1185, - [1186] = 1186, - [1187] = 1187, + [1186] = 1074, + [1187] = 1081, [1188] = 1082, [1189] = 1073, - [1190] = 1069, - [1191] = 1191, - [1192] = 1192, + [1190] = 1076, + [1191] = 1080, + [1192] = 1078, [1193] = 1193, - [1194] = 1184, - [1195] = 1195, - [1196] = 1186, - [1197] = 1072, - [1198] = 1037, - [1199] = 1199, - [1200] = 1200, - [1201] = 1071, + [1194] = 1194, + [1195] = 1128, + [1196] = 1196, + [1197] = 1100, + [1198] = 1198, + [1199] = 1183, + [1200] = 1128, + [1201] = 1185, [1202] = 1202, [1203] = 1203, [1204] = 1204, [1205] = 1205, - [1206] = 1203, - [1207] = 1184, - [1208] = 1177, - [1209] = 1193, - [1210] = 1107, - [1211] = 1186, - [1212] = 1186, - [1213] = 1213, - [1214] = 1081, - [1215] = 1195, - [1216] = 1183, - [1217] = 1202, - [1218] = 1204, - [1219] = 1120, - [1220] = 1125, - [1221] = 1199, + [1206] = 1206, + [1207] = 1130, + [1208] = 1208, + [1209] = 1209, + [1210] = 1210, + [1211] = 1211, + [1212] = 1212, + [1213] = 1202, + [1214] = 1205, + [1215] = 1215, + [1216] = 1216, + [1217] = 1183, + [1218] = 1202, + [1219] = 1183, + [1220] = 1202, + [1221] = 1221, [1222] = 1222, [1223] = 1223, - [1224] = 1224, - [1225] = 1225, - [1226] = 1202, - [1227] = 1204, - [1228] = 1203, - [1229] = 1202, - [1230] = 1204, + [1224] = 1179, + [1225] = 1182, + [1226] = 1194, + [1227] = 1215, + [1228] = 1038, + [1229] = 1229, + [1230] = 1037, [1231] = 1231, [1232] = 1203, - [1233] = 1038, - [1234] = 1234, - [1235] = 1235, - [1236] = 1184, - [1237] = 1237, - [1238] = 1125, - [1239] = 1239, - [1240] = 1240, + [1233] = 1233, + [1234] = 1222, + [1235] = 1179, + [1236] = 1182, + [1237] = 1222, + [1238] = 1179, + [1239] = 1182, + [1240] = 1222, [1241] = 1241, - [1242] = 1039, + [1242] = 1242, [1243] = 1243, [1244] = 1244, [1245] = 1245, @@ -4335,307 +4335,307 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1248] = 1248, [1249] = 1249, [1250] = 1250, - [1251] = 1245, + [1251] = 1039, [1252] = 1252, [1253] = 1253, [1254] = 1254, [1255] = 1255, - [1256] = 1256, + [1256] = 1246, [1257] = 1257, [1258] = 1258, [1259] = 1259, [1260] = 1260, - [1261] = 1261, - [1262] = 1256, + [1261] = 1259, + [1262] = 1262, [1263] = 1263, [1264] = 1264, - [1265] = 1253, + [1265] = 1265, [1266] = 1266, - [1267] = 1267, + [1267] = 1252, [1268] = 1268, - [1269] = 1269, - [1270] = 1249, - [1271] = 1231, + [1269] = 1262, + [1270] = 1270, + [1271] = 1271, [1272] = 1272, - [1273] = 1272, - [1274] = 1243, - [1275] = 1275, - [1276] = 1276, - [1277] = 1276, + [1273] = 1271, + [1274] = 1274, + [1275] = 1274, + [1276] = 1206, + [1277] = 1277, [1278] = 1278, - [1279] = 1250, + [1279] = 1279, [1280] = 1280, - [1281] = 1281, + [1281] = 1265, [1282] = 1282, [1283] = 1283, - [1284] = 1284, + [1284] = 1253, [1285] = 1285, - [1286] = 1272, - [1287] = 1287, - [1288] = 1243, + [1286] = 1286, + [1287] = 1205, + [1288] = 1288, [1289] = 1289, - [1290] = 1290, + [1290] = 1055, [1291] = 1291, - [1292] = 1224, - [1293] = 1053, + [1292] = 1292, + [1293] = 1286, [1294] = 1294, [1295] = 1295, - [1296] = 1289, + [1296] = 1296, [1297] = 1297, - [1298] = 1298, - [1299] = 1249, + [1298] = 1265, + [1299] = 1299, [1300] = 1300, - [1301] = 1291, + [1301] = 1301, [1302] = 1302, - [1303] = 1303, + [1303] = 1243, [1304] = 1304, [1305] = 1305, [1306] = 1306, [1307] = 1307, [1308] = 1308, - [1309] = 1309, + [1309] = 1295, [1310] = 1310, [1311] = 1311, [1312] = 1312, [1313] = 1313, - [1314] = 1285, - [1315] = 1315, - [1316] = 1199, + [1314] = 1274, + [1315] = 1301, + [1316] = 1316, [1317] = 1317, [1318] = 1318, [1319] = 1319, [1320] = 1320, - [1321] = 1321, + [1321] = 1271, [1322] = 1322, [1323] = 1323, [1324] = 1324, [1325] = 1325, [1326] = 1326, - [1327] = 1327, + [1327] = 1326, [1328] = 1328, - [1329] = 1329, - [1330] = 1330, + [1329] = 1328, + [1330] = 1292, [1331] = 1331, [1332] = 1332, [1333] = 1333, [1334] = 1334, [1335] = 1335, [1336] = 1336, - [1337] = 1300, - [1338] = 1304, + [1337] = 1337, + [1338] = 1338, [1339] = 1339, - [1340] = 1324, + [1340] = 1340, [1341] = 1341, [1342] = 1342, [1343] = 1343, [1344] = 1344, [1345] = 1345, - [1346] = 1345, - [1347] = 1347, - [1348] = 1348, + [1346] = 1301, + [1347] = 1056, + [1348] = 1067, [1349] = 1349, [1350] = 1350, - [1351] = 1328, - [1352] = 1352, - [1353] = 1347, + [1351] = 1299, + [1352] = 1320, + [1353] = 1334, [1354] = 1354, [1355] = 1355, - [1356] = 1330, + [1356] = 1356, [1357] = 1357, [1358] = 1358, [1359] = 1359, - [1360] = 1360, - [1361] = 1347, - [1362] = 1290, + [1360] = 1337, + [1361] = 1361, + [1362] = 1326, [1363] = 1363, [1364] = 1364, - [1365] = 1347, - [1366] = 1366, - [1367] = 1347, + [1365] = 1328, + [1366] = 1334, + [1367] = 1367, [1368] = 1368, - [1369] = 1068, + [1369] = 1369, [1370] = 1370, - [1371] = 1359, - [1372] = 1372, - [1373] = 1043, + [1371] = 1371, + [1372] = 1334, + [1373] = 1373, [1374] = 1374, - [1375] = 1334, - [1376] = 1350, - [1377] = 1363, - [1378] = 1331, - [1379] = 1379, - [1380] = 1380, - [1381] = 1381, + [1375] = 1375, + [1376] = 1334, + [1377] = 1355, + [1378] = 1359, + [1379] = 1331, + [1380] = 1332, + [1381] = 1356, [1382] = 1382, - [1383] = 1383, - [1384] = 1302, + [1383] = 1336, + [1384] = 1384, [1385] = 1385, - [1386] = 1370, - [1387] = 1347, + [1386] = 1386, + [1387] = 1387, [1388] = 1388, [1389] = 1389, - [1390] = 1390, - [1391] = 1391, + [1390] = 1297, + [1391] = 1382, [1392] = 1392, - [1393] = 1291, - [1394] = 1394, + [1393] = 1393, + [1394] = 1334, [1395] = 1395, [1396] = 1396, [1397] = 1397, - [1398] = 1396, - [1399] = 1328, + [1398] = 1398, + [1399] = 1399, [1400] = 1400, [1401] = 1401, - [1402] = 1345, - [1403] = 1397, + [1402] = 1340, + [1403] = 1333, [1404] = 1404, [1405] = 1405, [1406] = 1406, [1407] = 1407, [1408] = 1408, - [1409] = 1409, + [1409] = 701, [1410] = 1410, [1411] = 1411, [1412] = 1412, [1413] = 1413, - [1414] = 1335, - [1415] = 1336, + [1414] = 1414, + [1415] = 1415, [1416] = 1416, [1417] = 1417, [1418] = 1418, [1419] = 1419, - [1420] = 1420, + [1420] = 1388, [1421] = 1421, - [1422] = 1422, + [1422] = 1410, [1423] = 1423, [1424] = 1424, - [1425] = 1425, - [1426] = 1426, - [1427] = 1427, - [1428] = 1428, + [1425] = 1389, + [1426] = 1407, + [1427] = 1245, + [1428] = 1416, [1429] = 1429, [1430] = 1430, - [1431] = 1281, + [1431] = 1430, [1432] = 1432, [1433] = 1433, [1434] = 1434, [1435] = 1435, - [1436] = 1436, - [1437] = 1437, - [1438] = 1329, + [1436] = 1414, + [1437] = 1407, + [1438] = 1438, [1439] = 1439, - [1440] = 1339, + [1440] = 1440, [1441] = 1441, [1442] = 1442, [1443] = 1443, [1444] = 1444, - [1445] = 1406, - [1446] = 1446, - [1447] = 1432, - [1448] = 1448, - [1449] = 1449, - [1450] = 1449, + [1445] = 1441, + [1446] = 1244, + [1447] = 1441, + [1448] = 1442, + [1449] = 1416, + [1450] = 1450, [1451] = 1451, - [1452] = 1452, - [1453] = 1453, + [1452] = 1430, + [1453] = 1443, [1454] = 1454, - [1455] = 1455, - [1456] = 1412, - [1457] = 1413, - [1458] = 1434, - [1459] = 1441, - [1460] = 1460, - [1461] = 1432, - [1462] = 1462, - [1463] = 1259, - [1464] = 1432, + [1455] = 1433, + [1456] = 1434, + [1457] = 1414, + [1458] = 1408, + [1459] = 1407, + [1460] = 1441, + [1461] = 1461, + [1462] = 1442, + [1463] = 1443, + [1464] = 1464, [1465] = 1465, - [1466] = 1449, - [1467] = 1327, - [1468] = 1452, - [1469] = 1453, - [1470] = 1454, - [1471] = 1471, - [1472] = 1412, - [1473] = 1413, + [1466] = 1419, + [1467] = 1467, + [1468] = 1468, + [1469] = 1469, + [1470] = 700, + [1471] = 1433, + [1472] = 1472, + [1473] = 1473, [1474] = 1474, - [1475] = 1434, - [1476] = 1441, + [1475] = 1475, + [1476] = 1467, [1477] = 1477, [1478] = 1478, - [1479] = 1449, - [1480] = 1480, + [1479] = 1479, + [1480] = 1442, [1481] = 1481, - [1482] = 1452, - [1483] = 1481, + [1482] = 1423, + [1483] = 1443, [1484] = 1484, - [1485] = 702, - [1486] = 1452, + [1485] = 1485, + [1486] = 1345, [1487] = 1487, [1488] = 1488, [1489] = 1489, - [1490] = 1453, - [1491] = 1491, + [1490] = 1250, + [1491] = 1357, [1492] = 1492, [1493] = 1493, - [1494] = 1494, - [1495] = 1407, - [1496] = 1452, - [1497] = 1453, - [1498] = 1498, - [1499] = 1499, - [1500] = 1500, - [1501] = 1454, - [1502] = 1435, - [1503] = 1465, + [1494] = 1324, + [1495] = 1495, + [1496] = 1430, + [1497] = 1497, + [1498] = 1400, + [1499] = 1406, + [1500] = 1433, + [1501] = 1501, + [1502] = 1502, + [1503] = 1503, [1504] = 1504, [1505] = 1505, - [1506] = 1506, + [1506] = 1434, [1507] = 1507, - [1508] = 1260, - [1509] = 703, + [1508] = 1508, + [1509] = 1509, [1510] = 1510, [1511] = 1511, - [1512] = 1512, + [1512] = 1414, [1513] = 1513, [1514] = 1514, [1515] = 1515, - [1516] = 1383, - [1517] = 1275, - [1518] = 1454, - [1519] = 1487, - [1520] = 1491, - [1521] = 1412, + [1516] = 1516, + [1517] = 1497, + [1518] = 1518, + [1519] = 1416, + [1520] = 1520, + [1521] = 1521, [1522] = 1522, - [1523] = 1413, - [1524] = 1524, + [1523] = 1523, + [1524] = 1433, [1525] = 1434, - [1526] = 1441, - [1527] = 1492, + [1526] = 1526, + [1527] = 1527, [1528] = 1528, - [1529] = 1358, - [1530] = 1515, - [1531] = 1405, + [1529] = 1481, + [1530] = 1432, + [1531] = 1531, [1532] = 1532, - [1533] = 333, - [1534] = 1534, - [1535] = 1535, + [1533] = 1415, + [1534] = 1411, + [1535] = 1258, [1536] = 1536, [1537] = 1537, - [1538] = 1538, - [1539] = 1539, + [1538] = 1439, + [1539] = 1196, [1540] = 1540, [1541] = 1541, - [1542] = 1442, + [1542] = 1542, [1543] = 1543, [1544] = 1544, [1545] = 1545, [1546] = 1546, [1547] = 1547, - [1548] = 1538, + [1548] = 1548, [1549] = 1549, [1550] = 1550, - [1551] = 1551, + [1551] = 313, [1552] = 1552, [1553] = 1553, [1554] = 1554, @@ -4644,75 +4644,75 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1557] = 1557, [1558] = 1558, [1559] = 1559, - [1560] = 1546, - [1561] = 1561, - [1562] = 1562, + [1560] = 1560, + [1561] = 318, + [1562] = 1557, [1563] = 1563, - [1564] = 1551, + [1564] = 1564, [1565] = 1565, [1566] = 1566, [1567] = 1567, [1568] = 1568, - [1569] = 1237, + [1569] = 1569, [1570] = 1570, [1571] = 1571, [1572] = 1572, [1573] = 1573, [1574] = 1574, [1575] = 1575, - [1576] = 1544, + [1576] = 1576, [1577] = 1577, [1578] = 1578, [1579] = 1579, [1580] = 1580, [1581] = 1581, - [1582] = 318, - [1583] = 311, - [1584] = 1584, - [1585] = 1585, + [1582] = 1582, + [1583] = 1583, + [1584] = 1580, + [1585] = 1574, [1586] = 1586, - [1587] = 1587, - [1588] = 1573, - [1589] = 1589, - [1590] = 1573, - [1591] = 1591, + [1587] = 1557, + [1588] = 1576, + [1589] = 317, + [1590] = 1575, + [1591] = 1573, [1592] = 1592, [1593] = 1593, - [1594] = 1547, + [1594] = 1594, [1595] = 1595, [1596] = 1596, - [1597] = 1572, - [1598] = 312, - [1599] = 1574, - [1600] = 1428, + [1597] = 1597, + [1598] = 1598, + [1599] = 1599, + [1600] = 1600, [1601] = 1601, [1602] = 1602, [1603] = 1603, [1604] = 1604, [1605] = 1605, - [1606] = 1507, - [1607] = 326, - [1608] = 1608, - [1609] = 1609, - [1610] = 1610, - [1611] = 1611, - [1612] = 1541, + [1606] = 1606, + [1607] = 1593, + [1608] = 1520, + [1609] = 1586, + [1610] = 325, + [1611] = 314, + [1612] = 1612, [1613] = 1613, [1614] = 1614, - [1615] = 1615, - [1616] = 1616, - [1617] = 1616, + [1615] = 1429, + [1616] = 1600, + [1617] = 1617, [1618] = 1618, [1619] = 1619, [1620] = 1620, [1621] = 1621, [1622] = 1622, - [1623] = 1623, + [1623] = 1622, [1624] = 1624, [1625] = 1625, [1626] = 1626, [1627] = 1627, - [1628] = 1618, + [1628] = 1627, [1629] = 1629, [1630] = 1630, [1631] = 1631, @@ -4721,124 +4721,128 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [1634] = 1634, [1635] = 1635, [1636] = 1636, - [1637] = 1635, - [1638] = 1638, - [1639] = 1639, - [1640] = 1615, - [1641] = 1641, + [1637] = 1618, + [1638] = 1617, + [1639] = 1635, + [1640] = 1640, + [1641] = 1627, [1642] = 1642, - [1643] = 1643, - [1644] = 1630, - [1645] = 1636, - [1646] = 1646, + [1643] = 1618, + [1644] = 1644, + [1645] = 1645, + [1646] = 1629, [1647] = 1647, [1648] = 1648, - [1649] = 1643, + [1649] = 1632, [1650] = 1650, [1651] = 1651, [1652] = 1652, [1653] = 1653, [1654] = 1654, - [1655] = 1654, - [1656] = 1621, - [1657] = 1657, - [1658] = 1657, + [1655] = 1655, + [1656] = 1656, + [1657] = 1648, + [1658] = 1644, [1659] = 1659, - [1660] = 1614, - [1661] = 1647, + [1660] = 1660, + [1661] = 1632, [1662] = 1662, - [1663] = 1634, + [1663] = 1640, [1664] = 1664, [1665] = 1665, - [1666] = 1624, - [1667] = 1639, - [1668] = 1631, - [1669] = 1657, - [1670] = 1670, - [1671] = 1671, - [1672] = 1619, - [1673] = 1618, - [1674] = 1674, + [1666] = 1666, + [1667] = 1645, + [1668] = 1668, + [1669] = 1669, + [1670] = 1620, + [1671] = 1642, + [1672] = 1672, + [1673] = 1653, + [1674] = 1633, [1675] = 1675, - [1676] = 1676, - [1677] = 1651, + [1676] = 1645, + [1677] = 1677, [1678] = 1678, [1679] = 1679, - [1680] = 1665, - [1681] = 1631, + [1680] = 1680, + [1681] = 1636, [1682] = 1682, [1683] = 1683, - [1684] = 1615, - [1685] = 1664, - [1686] = 1654, - [1687] = 1629, - [1688] = 1624, - [1689] = 1689, - [1690] = 1690, - [1691] = 1639, - [1692] = 1657, - [1693] = 1632, - [1694] = 1614, - [1695] = 1676, + [1684] = 1660, + [1685] = 1685, + [1686] = 1686, + [1687] = 1686, + [1688] = 1688, + [1689] = 1642, + [1690] = 1664, + [1691] = 1680, + [1692] = 1622, + [1693] = 1626, + [1694] = 1694, + [1695] = 1695, [1696] = 1696, - [1697] = 1639, - [1698] = 1619, + [1697] = 1697, + [1698] = 1698, [1699] = 1699, - [1700] = 1664, - [1701] = 1626, - [1702] = 1619, - [1703] = 1631, - [1704] = 1704, - [1705] = 1705, + [1700] = 1688, + [1701] = 1683, + [1702] = 1620, + [1703] = 1642, + [1704] = 1683, + [1705] = 1644, [1706] = 1706, - [1707] = 1707, - [1708] = 1708, + [1707] = 1652, + [1708] = 1621, [1709] = 1709, - [1710] = 1619, - [1711] = 1618, - [1712] = 1712, - [1713] = 1675, - [1714] = 1665, - [1715] = 1648, - [1716] = 1613, - [1717] = 1676, - [1718] = 1718, - [1719] = 1622, - [1720] = 1683, - [1721] = 1654, - [1722] = 1675, - [1723] = 1659, - [1724] = 1665, - [1725] = 1725, - [1726] = 1726, - [1727] = 1624, - [1728] = 1676, - [1729] = 1639, - [1730] = 1619, + [1710] = 1686, + [1711] = 1711, + [1712] = 1664, + [1713] = 1664, + [1714] = 1688, + [1715] = 1683, + [1716] = 1716, + [1717] = 1683, + [1718] = 1683, + [1719] = 1644, + [1720] = 1620, + [1721] = 1620, + [1722] = 1722, + [1723] = 1621, + [1724] = 1624, + [1725] = 1675, + [1726] = 1622, + [1727] = 1727, + [1728] = 1627, + [1729] = 1727, + [1730] = 1632, [1731] = 1731, - [1732] = 1639, - [1733] = 1664, - [1734] = 1641, - [1735] = 1614, + [1732] = 1732, + [1733] = 1733, + [1734] = 1688, + [1735] = 1735, [1736] = 1736, - [1737] = 1615, + [1737] = 1737, [1738] = 1738, - [1739] = 1736, - [1740] = 1740, - [1741] = 1646, - [1742] = 1742, - [1743] = 1743, - [1744] = 1744, - [1745] = 1699, - [1746] = 1705, - [1747] = 1642, + [1739] = 1620, + [1740] = 1735, + [1741] = 1741, + [1742] = 1669, + [1743] = 1618, + [1744] = 1651, + [1745] = 1621, + [1746] = 1630, + [1747] = 1686, [1748] = 1748, - [1749] = 1740, - [1750] = 1748, - [1751] = 1718, - [1752] = 1752, - [1753] = 1725, - [1754] = 1675, + [1749] = 1625, + [1750] = 1738, + [1751] = 1709, + [1752] = 1655, + [1753] = 1665, + [1754] = 1754, + [1755] = 1754, + [1756] = 1645, + [1757] = 1748, + [1758] = 1695, }; static const TSCharacterRange sym_identifier_character_set_1[] = { @@ -4848,7 +4852,7 @@ static const TSCharacterRange sym_identifier_character_set_1[] = { {0x531, 0x556}, {0x559, 0x559}, {0x560, 0x588}, {0x5d0, 0x5ea}, {0x5ef, 0x5f2}, {0x620, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x7a5}, {0x7b1, 0x7b1}, {0x7ca, 0x7ea}, {0x7f4, 0x7f5}, {0x7fa, 0x7fa}, {0x800, 0x815}, {0x81a, 0x81a}, {0x824, 0x824}, {0x828, 0x828}, - {0x840, 0x858}, {0x860, 0x86a}, {0x870, 0x887}, {0x889, 0x88e}, {0x8a0, 0x8c9}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950}, + {0x840, 0x858}, {0x860, 0x86a}, {0x870, 0x887}, {0x889, 0x88f}, {0x8a0, 0x8c9}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x971, 0x980}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9ce, 0x9ce}, {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0x9fc, 0x9fc}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, @@ -4856,8 +4860,8 @@ static const TSCharacterRange sym_identifier_character_set_1[] = { {0xae0, 0xae1}, {0xaf9, 0xaf9}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb9}, {0xbd0, 0xbd0}, {0xc05, 0xc0c}, - {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc39}, {0xc3d, 0xc3d}, {0xc58, 0xc5a}, {0xc5d, 0xc5d}, {0xc60, 0xc61}, {0xc80, 0xc80}, - {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcdd, 0xcde}, {0xce0, 0xce1}, + {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc39}, {0xc3d, 0xc3d}, {0xc58, 0xc5a}, {0xc5c, 0xc5d}, {0xc60, 0xc61}, {0xc80, 0xc80}, + {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcdc, 0xcde}, {0xce0, 0xce1}, {0xcf1, 0xcf2}, {0xd04, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd3a}, {0xd3d, 0xd3d}, {0xd4e, 0xd4e}, {0xd54, 0xd56}, {0xd5f, 0xd61}, {0xd7a, 0xd7f}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe32}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe86, 0xe8a}, {0xe8c, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xeb0}, {0xeb2, 0xeb2}, @@ -4880,54 +4884,55 @@ static const TSCharacterRange sym_identifier_character_set_1[] = { {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x3005, 0x3007}, {0x3021, 0x3029}, {0x3031, 0x3035}, {0x3038, 0x303c}, {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e}, {0x31a0, 0x31bf}, {0x31f0, 0x31ff}, {0x3400, 0x4dbf}, {0x4e00, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c}, {0xa610, 0xa61f}, {0xa62a, 0xa62b}, {0xa640, 0xa66e}, - {0xa67f, 0xa69d}, {0xa6a0, 0xa6ef}, {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7cd}, {0xa7d0, 0xa7d1}, {0xa7d3, 0xa7d3}, {0xa7d5, 0xa7dc}, - {0xa7f2, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a}, {0xa80c, 0xa822}, {0xa840, 0xa873}, {0xa882, 0xa8b3}, {0xa8f2, 0xa8f7}, {0xa8fb, 0xa8fb}, - {0xa8fd, 0xa8fe}, {0xa90a, 0xa925}, {0xa930, 0xa946}, {0xa960, 0xa97c}, {0xa984, 0xa9b2}, {0xa9cf, 0xa9cf}, {0xa9e0, 0xa9e4}, {0xa9e6, 0xa9ef}, - {0xa9fa, 0xa9fe}, {0xaa00, 0xaa28}, {0xaa40, 0xaa42}, {0xaa44, 0xaa4b}, {0xaa60, 0xaa76}, {0xaa7a, 0xaa7a}, {0xaa7e, 0xaaaf}, {0xaab1, 0xaab1}, - {0xaab5, 0xaab6}, {0xaab9, 0xaabd}, {0xaac0, 0xaac0}, {0xaac2, 0xaac2}, {0xaadb, 0xaadd}, {0xaae0, 0xaaea}, {0xaaf2, 0xaaf4}, {0xab01, 0xab06}, - {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab5a}, {0xab5c, 0xab69}, {0xab70, 0xabe2}, {0xac00, 0xd7a3}, - {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, - {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfc5d}, {0xfc64, 0xfd3d}, - {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdf9}, {0xfe71, 0xfe71}, {0xfe73, 0xfe73}, {0xfe77, 0xfe77}, {0xfe79, 0xfe79}, {0xfe7b, 0xfe7b}, - {0xfe7d, 0xfe7d}, {0xfe7f, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xff9d}, {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, - {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, {0x10050, 0x1005d}, - {0x10080, 0x100fa}, {0x10140, 0x10174}, {0x10280, 0x1029c}, {0x102a0, 0x102d0}, {0x10300, 0x1031f}, {0x1032d, 0x1034a}, {0x10350, 0x10375}, {0x10380, 0x1039d}, - {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, {0x10400, 0x1049d}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563}, - {0x10570, 0x1057a}, {0x1057c, 0x1058a}, {0x1058c, 0x10592}, {0x10594, 0x10595}, {0x10597, 0x105a1}, {0x105a3, 0x105b1}, {0x105b3, 0x105b9}, {0x105bb, 0x105bc}, - {0x105c0, 0x105f3}, {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10780, 0x10785}, {0x10787, 0x107b0}, {0x107b2, 0x107ba}, {0x10800, 0x10805}, - {0x10808, 0x10808}, {0x1080a, 0x10835}, {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e}, {0x108e0, 0x108f2}, - {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939}, {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a00, 0x10a00}, {0x10a10, 0x10a13}, {0x10a15, 0x10a17}, - {0x10a19, 0x10a35}, {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55}, {0x10b60, 0x10b72}, - {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d23}, {0x10d4a, 0x10d65}, {0x10d6f, 0x10d85}, {0x10e80, 0x10ea9}, - {0x10eb0, 0x10eb1}, {0x10ec2, 0x10ec4}, {0x10f00, 0x10f1c}, {0x10f27, 0x10f27}, {0x10f30, 0x10f45}, {0x10f70, 0x10f81}, {0x10fb0, 0x10fc4}, {0x10fe0, 0x10ff6}, - {0x11003, 0x11037}, {0x11071, 0x11072}, {0x11075, 0x11075}, {0x11083, 0x110af}, {0x110d0, 0x110e8}, {0x11103, 0x11126}, {0x11144, 0x11144}, {0x11147, 0x11147}, - {0x11150, 0x11172}, {0x11176, 0x11176}, {0x11183, 0x111b2}, {0x111c1, 0x111c4}, {0x111da, 0x111da}, {0x111dc, 0x111dc}, {0x11200, 0x11211}, {0x11213, 0x1122b}, - {0x1123f, 0x11240}, {0x11280, 0x11286}, {0x11288, 0x11288}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8}, {0x112b0, 0x112de}, {0x11305, 0x1130c}, - {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133d, 0x1133d}, {0x11350, 0x11350}, {0x1135d, 0x11361}, - {0x11380, 0x11389}, {0x1138b, 0x1138b}, {0x1138e, 0x1138e}, {0x11390, 0x113b5}, {0x113b7, 0x113b7}, {0x113d1, 0x113d1}, {0x113d3, 0x113d3}, {0x11400, 0x11434}, - {0x11447, 0x1144a}, {0x1145f, 0x11461}, {0x11480, 0x114af}, {0x114c4, 0x114c5}, {0x114c7, 0x114c7}, {0x11580, 0x115ae}, {0x115d8, 0x115db}, {0x11600, 0x1162f}, - {0x11644, 0x11644}, {0x11680, 0x116aa}, {0x116b8, 0x116b8}, {0x11700, 0x1171a}, {0x11740, 0x11746}, {0x11800, 0x1182b}, {0x118a0, 0x118df}, {0x118ff, 0x11906}, - {0x11909, 0x11909}, {0x1190c, 0x11913}, {0x11915, 0x11916}, {0x11918, 0x1192f}, {0x1193f, 0x1193f}, {0x11941, 0x11941}, {0x119a0, 0x119a7}, {0x119aa, 0x119d0}, - {0x119e1, 0x119e1}, {0x119e3, 0x119e3}, {0x11a00, 0x11a00}, {0x11a0b, 0x11a32}, {0x11a3a, 0x11a3a}, {0x11a50, 0x11a50}, {0x11a5c, 0x11a89}, {0x11a9d, 0x11a9d}, - {0x11ab0, 0x11af8}, {0x11bc0, 0x11be0}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c2e}, {0x11c40, 0x11c40}, {0x11c72, 0x11c8f}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09}, - {0x11d0b, 0x11d30}, {0x11d46, 0x11d46}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d89}, {0x11d98, 0x11d98}, {0x11ee0, 0x11ef2}, {0x11f02, 0x11f02}, - {0x11f04, 0x11f10}, {0x11f12, 0x11f33}, {0x11fb0, 0x11fb0}, {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12480, 0x12543}, {0x12f90, 0x12ff0}, {0x13000, 0x1342f}, - {0x13441, 0x13446}, {0x13460, 0x143fa}, {0x14400, 0x14646}, {0x16100, 0x1611d}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, {0x16a70, 0x16abe}, {0x16ad0, 0x16aed}, - {0x16b00, 0x16b2f}, {0x16b40, 0x16b43}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16d40, 0x16d6c}, {0x16e40, 0x16e7f}, {0x16f00, 0x16f4a}, {0x16f50, 0x16f50}, - {0x16f93, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x16fe3, 0x16fe3}, {0x17000, 0x187f7}, {0x18800, 0x18cd5}, {0x18cff, 0x18d08}, {0x1aff0, 0x1aff3}, {0x1aff5, 0x1affb}, - {0x1affd, 0x1affe}, {0x1b000, 0x1b122}, {0x1b132, 0x1b132}, {0x1b150, 0x1b152}, {0x1b155, 0x1b155}, {0x1b164, 0x1b167}, {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, - {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, - {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, - {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, - {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, - {0x1d7c4, 0x1d7cb}, {0x1df00, 0x1df1e}, {0x1df25, 0x1df2a}, {0x1e030, 0x1e06d}, {0x1e100, 0x1e12c}, {0x1e137, 0x1e13d}, {0x1e14e, 0x1e14e}, {0x1e290, 0x1e2ad}, - {0x1e2c0, 0x1e2eb}, {0x1e4d0, 0x1e4eb}, {0x1e5d0, 0x1e5ed}, {0x1e5f0, 0x1e5f0}, {0x1e7e0, 0x1e7e6}, {0x1e7e8, 0x1e7eb}, {0x1e7ed, 0x1e7ee}, {0x1e7f0, 0x1e7fe}, + {0xa67f, 0xa69d}, {0xa6a0, 0xa6ef}, {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7dc}, {0xa7f1, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a}, + {0xa80c, 0xa822}, {0xa840, 0xa873}, {0xa882, 0xa8b3}, {0xa8f2, 0xa8f7}, {0xa8fb, 0xa8fb}, {0xa8fd, 0xa8fe}, {0xa90a, 0xa925}, {0xa930, 0xa946}, + {0xa960, 0xa97c}, {0xa984, 0xa9b2}, {0xa9cf, 0xa9cf}, {0xa9e0, 0xa9e4}, {0xa9e6, 0xa9ef}, {0xa9fa, 0xa9fe}, {0xaa00, 0xaa28}, {0xaa40, 0xaa42}, + {0xaa44, 0xaa4b}, {0xaa60, 0xaa76}, {0xaa7a, 0xaa7a}, {0xaa7e, 0xaaaf}, {0xaab1, 0xaab1}, {0xaab5, 0xaab6}, {0xaab9, 0xaabd}, {0xaac0, 0xaac0}, + {0xaac2, 0xaac2}, {0xaadb, 0xaadd}, {0xaae0, 0xaaea}, {0xaaf2, 0xaaf4}, {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, + {0xab28, 0xab2e}, {0xab30, 0xab5a}, {0xab5c, 0xab69}, {0xab70, 0xabe2}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, + {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, + {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfc5d}, {0xfc64, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdf9}, + {0xfe71, 0xfe71}, {0xfe73, 0xfe73}, {0xfe77, 0xfe77}, {0xfe79, 0xfe79}, {0xfe7b, 0xfe7b}, {0xfe7d, 0xfe7d}, {0xfe7f, 0xfefc}, {0xff21, 0xff3a}, + {0xff41, 0xff5a}, {0xff66, 0xff9d}, {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b}, + {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10140, 0x10174}, {0x10280, 0x1029c}, + {0x102a0, 0x102d0}, {0x10300, 0x1031f}, {0x1032d, 0x1034a}, {0x10350, 0x10375}, {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, + {0x10400, 0x1049d}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10570, 0x1057a}, {0x1057c, 0x1058a}, {0x1058c, 0x10592}, + {0x10594, 0x10595}, {0x10597, 0x105a1}, {0x105a3, 0x105b1}, {0x105b3, 0x105b9}, {0x105bb, 0x105bc}, {0x105c0, 0x105f3}, {0x10600, 0x10736}, {0x10740, 0x10755}, + {0x10760, 0x10767}, {0x10780, 0x10785}, {0x10787, 0x107b0}, {0x107b2, 0x107ba}, {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, {0x10837, 0x10838}, + {0x1083c, 0x1083c}, {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e}, {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939}, + {0x10940, 0x10959}, {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a00, 0x10a00}, {0x10a10, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a60, 0x10a7c}, + {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55}, {0x10b60, 0x10b72}, {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, + {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d23}, {0x10d4a, 0x10d65}, {0x10d6f, 0x10d85}, {0x10e80, 0x10ea9}, {0x10eb0, 0x10eb1}, {0x10ec2, 0x10ec7}, + {0x10f00, 0x10f1c}, {0x10f27, 0x10f27}, {0x10f30, 0x10f45}, {0x10f70, 0x10f81}, {0x10fb0, 0x10fc4}, {0x10fe0, 0x10ff6}, {0x11003, 0x11037}, {0x11071, 0x11072}, + {0x11075, 0x11075}, {0x11083, 0x110af}, {0x110d0, 0x110e8}, {0x11103, 0x11126}, {0x11144, 0x11144}, {0x11147, 0x11147}, {0x11150, 0x11172}, {0x11176, 0x11176}, + {0x11183, 0x111b2}, {0x111c1, 0x111c4}, {0x111da, 0x111da}, {0x111dc, 0x111dc}, {0x11200, 0x11211}, {0x11213, 0x1122b}, {0x1123f, 0x11240}, {0x11280, 0x11286}, + {0x11288, 0x11288}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8}, {0x112b0, 0x112de}, {0x11305, 0x1130c}, {0x1130f, 0x11310}, {0x11313, 0x11328}, + {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133d, 0x1133d}, {0x11350, 0x11350}, {0x1135d, 0x11361}, {0x11380, 0x11389}, {0x1138b, 0x1138b}, + {0x1138e, 0x1138e}, {0x11390, 0x113b5}, {0x113b7, 0x113b7}, {0x113d1, 0x113d1}, {0x113d3, 0x113d3}, {0x11400, 0x11434}, {0x11447, 0x1144a}, {0x1145f, 0x11461}, + {0x11480, 0x114af}, {0x114c4, 0x114c5}, {0x114c7, 0x114c7}, {0x11580, 0x115ae}, {0x115d8, 0x115db}, {0x11600, 0x1162f}, {0x11644, 0x11644}, {0x11680, 0x116aa}, + {0x116b8, 0x116b8}, {0x11700, 0x1171a}, {0x11740, 0x11746}, {0x11800, 0x1182b}, {0x118a0, 0x118df}, {0x118ff, 0x11906}, {0x11909, 0x11909}, {0x1190c, 0x11913}, + {0x11915, 0x11916}, {0x11918, 0x1192f}, {0x1193f, 0x1193f}, {0x11941, 0x11941}, {0x119a0, 0x119a7}, {0x119aa, 0x119d0}, {0x119e1, 0x119e1}, {0x119e3, 0x119e3}, + {0x11a00, 0x11a00}, {0x11a0b, 0x11a32}, {0x11a3a, 0x11a3a}, {0x11a50, 0x11a50}, {0x11a5c, 0x11a89}, {0x11a9d, 0x11a9d}, {0x11ab0, 0x11af8}, {0x11bc0, 0x11be0}, + {0x11c00, 0x11c08}, {0x11c0a, 0x11c2e}, {0x11c40, 0x11c40}, {0x11c72, 0x11c8f}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09}, {0x11d0b, 0x11d30}, {0x11d46, 0x11d46}, + {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d89}, {0x11d98, 0x11d98}, {0x11db0, 0x11ddb}, {0x11ee0, 0x11ef2}, {0x11f02, 0x11f02}, {0x11f04, 0x11f10}, + {0x11f12, 0x11f33}, {0x11fb0, 0x11fb0}, {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12480, 0x12543}, {0x12f90, 0x12ff0}, {0x13000, 0x1342f}, {0x13441, 0x13446}, + {0x13460, 0x143fa}, {0x14400, 0x14646}, {0x16100, 0x1611d}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, {0x16a70, 0x16abe}, {0x16ad0, 0x16aed}, {0x16b00, 0x16b2f}, + {0x16b40, 0x16b43}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16d40, 0x16d6c}, {0x16e40, 0x16e7f}, {0x16ea0, 0x16eb8}, {0x16ebb, 0x16ed3}, {0x16f00, 0x16f4a}, + {0x16f50, 0x16f50}, {0x16f93, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x16fe3, 0x16fe3}, {0x16ff2, 0x16ff6}, {0x17000, 0x18cd5}, {0x18cff, 0x18d1e}, {0x18d80, 0x18df2}, + {0x1aff0, 0x1aff3}, {0x1aff5, 0x1affb}, {0x1affd, 0x1affe}, {0x1b000, 0x1b122}, {0x1b132, 0x1b132}, {0x1b150, 0x1b152}, {0x1b155, 0x1b155}, {0x1b164, 0x1b167}, + {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, + {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, + {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, + {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, + {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb}, {0x1df00, 0x1df1e}, {0x1df25, 0x1df2a}, {0x1e030, 0x1e06d}, {0x1e100, 0x1e12c}, {0x1e137, 0x1e13d}, + {0x1e14e, 0x1e14e}, {0x1e290, 0x1e2ad}, {0x1e2c0, 0x1e2eb}, {0x1e4d0, 0x1e4eb}, {0x1e5d0, 0x1e5ed}, {0x1e5f0, 0x1e5f0}, {0x1e6c0, 0x1e6de}, {0x1e6e0, 0x1e6e2}, + {0x1e6e4, 0x1e6e5}, {0x1e6e7, 0x1e6ed}, {0x1e6f0, 0x1e6f4}, {0x1e6fe, 0x1e6ff}, {0x1e7e0, 0x1e7e6}, {0x1e7e8, 0x1e7eb}, {0x1e7ed, 0x1e7ee}, {0x1e7f0, 0x1e7fe}, {0x1e800, 0x1e8c4}, {0x1e900, 0x1e943}, {0x1e94b, 0x1e94b}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee24, 0x1ee24}, {0x1ee27, 0x1ee27}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee39, 0x1ee39}, {0x1ee3b, 0x1ee3b}, {0x1ee42, 0x1ee42}, {0x1ee47, 0x1ee47}, {0x1ee49, 0x1ee49}, {0x1ee4b, 0x1ee4b}, {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee54, 0x1ee54}, {0x1ee57, 0x1ee57}, {0x1ee59, 0x1ee59}, {0x1ee5b, 0x1ee5b}, {0x1ee5d, 0x1ee5d}, {0x1ee5f, 0x1ee5f}, {0x1ee61, 0x1ee62}, {0x1ee64, 0x1ee64}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee7e, 0x1ee7e}, {0x1ee80, 0x1ee89}, - {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x20000, 0x2a6df}, {0x2a700, 0x2b739}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, - {0x2ceb0, 0x2ebe0}, {0x2ebf0, 0x2ee5d}, {0x2f800, 0x2fa1d}, {0x30000, 0x3134a}, {0x31350, 0x323af}, + {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x20000, 0x2a6df}, {0x2a700, 0x2b81d}, {0x2b820, 0x2cead}, {0x2ceb0, 0x2ebe0}, + {0x2ebf0, 0x2ee5d}, {0x2f800, 0x2fa1d}, {0x30000, 0x3134a}, {0x31350, 0x33479}, }; static const TSCharacterRange sym_identifier_character_set_2[] = { @@ -4937,7 +4942,7 @@ static const TSCharacterRange sym_identifier_character_set_2[] = { {0x483, 0x487}, {0x48a, 0x52f}, {0x531, 0x556}, {0x559, 0x559}, {0x560, 0x588}, {0x591, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c5}, {0x5c7, 0x5c7}, {0x5d0, 0x5ea}, {0x5ef, 0x5f2}, {0x610, 0x61a}, {0x620, 0x669}, {0x66e, 0x6d3}, {0x6d5, 0x6dc}, {0x6df, 0x6e8}, {0x6ea, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x74a}, {0x74d, 0x7b1}, {0x7c0, 0x7f5}, {0x7fa, 0x7fa}, {0x7fd, 0x7fd}, - {0x800, 0x82d}, {0x840, 0x85b}, {0x860, 0x86a}, {0x870, 0x887}, {0x889, 0x88e}, {0x897, 0x8e1}, {0x8e3, 0x963}, {0x966, 0x96f}, + {0x800, 0x82d}, {0x840, 0x85b}, {0x860, 0x86a}, {0x870, 0x887}, {0x889, 0x88f}, {0x897, 0x8e1}, {0x8e3, 0x963}, {0x966, 0x96f}, {0x971, 0x983}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bc, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9ce}, {0x9d7, 0x9d7}, {0x9dc, 0x9dd}, {0x9df, 0x9e3}, {0x9e6, 0x9f1}, {0x9fc, 0x9fc}, {0x9fe, 0x9fe}, {0xa01, 0xa03}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39}, @@ -4948,9 +4953,9 @@ static const TSCharacterRange sym_identifier_character_set_2[] = { {0xb55, 0xb57}, {0xb5c, 0xb5d}, {0xb5f, 0xb63}, {0xb66, 0xb6f}, {0xb71, 0xb71}, {0xb82, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb9}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd}, {0xbd0, 0xbd0}, {0xbd7, 0xbd7}, {0xbe6, 0xbef}, {0xc00, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, - {0xc2a, 0xc39}, {0xc3c, 0xc44}, {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc58, 0xc5a}, {0xc5d, 0xc5d}, {0xc60, 0xc63}, + {0xc2a, 0xc39}, {0xc3c, 0xc44}, {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc58, 0xc5a}, {0xc5c, 0xc5d}, {0xc60, 0xc63}, {0xc66, 0xc6f}, {0xc80, 0xc83}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbc, 0xcc4}, - {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, {0xcdd, 0xcde}, {0xce0, 0xce3}, {0xce6, 0xcef}, {0xcf1, 0xcf3}, {0xd00, 0xd0c}, + {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, {0xcdc, 0xcde}, {0xce0, 0xce3}, {0xce6, 0xcef}, {0xcf1, 0xcf3}, {0xd00, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd44}, {0xd46, 0xd48}, {0xd4a, 0xd4e}, {0xd54, 0xd57}, {0xd5f, 0xd63}, {0xd66, 0xd6f}, {0xd7a, 0xd7f}, {0xd81, 0xd83}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xdca, 0xdca}, {0xdcf, 0xdd4}, {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xde6, 0xdef}, {0xdf2, 0xdf3}, {0xe01, 0xe3a}, {0xe40, 0xe4e}, {0xe50, 0xe59}, {0xe81, 0xe82}, @@ -4964,73 +4969,74 @@ static const TSCharacterRange sym_identifier_character_set_2[] = { {0x1740, 0x1753}, {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1772, 0x1773}, {0x1780, 0x17d3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dd}, {0x17e0, 0x17e9}, {0x180b, 0x180d}, {0x180f, 0x1819}, {0x1820, 0x1878}, {0x1880, 0x18aa}, {0x18b0, 0x18f5}, {0x1900, 0x191e}, {0x1920, 0x192b}, {0x1930, 0x193b}, {0x1946, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x19d0, 0x19da}, {0x1a00, 0x1a1b}, {0x1a20, 0x1a5e}, {0x1a60, 0x1a7c}, - {0x1a7f, 0x1a89}, {0x1a90, 0x1a99}, {0x1aa7, 0x1aa7}, {0x1ab0, 0x1abd}, {0x1abf, 0x1ace}, {0x1b00, 0x1b4c}, {0x1b50, 0x1b59}, {0x1b6b, 0x1b73}, - {0x1b80, 0x1bf3}, {0x1c00, 0x1c37}, {0x1c40, 0x1c49}, {0x1c4d, 0x1c7d}, {0x1c80, 0x1c8a}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1cd0, 0x1cd2}, - {0x1cd4, 0x1cfa}, {0x1d00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, - {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, - {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x200c, 0x200d}, {0x203f, 0x2040}, {0x2054, 0x2054}, {0x2071, 0x2071}, - {0x207f, 0x207f}, {0x2090, 0x209c}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x20e5, 0x20f0}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, - {0x2115, 0x2115}, {0x2118, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x2139}, {0x213c, 0x213f}, {0x2145, 0x2149}, - {0x214e, 0x214e}, {0x2160, 0x2188}, {0x2c00, 0x2ce4}, {0x2ceb, 0x2cf3}, {0x2d00, 0x2d25}, {0x2d27, 0x2d27}, {0x2d2d, 0x2d2d}, {0x2d30, 0x2d67}, - {0x2d6f, 0x2d6f}, {0x2d7f, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, - {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2dff}, {0x3005, 0x3007}, {0x3021, 0x302f}, {0x3031, 0x3035}, {0x3038, 0x303c}, {0x3041, 0x3096}, - {0x3099, 0x309a}, {0x309d, 0x309f}, {0x30a1, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e}, {0x31a0, 0x31bf}, {0x31f0, 0x31ff}, {0x3400, 0x4dbf}, - {0x4e00, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c}, {0xa610, 0xa62b}, {0xa640, 0xa66f}, {0xa674, 0xa67d}, {0xa67f, 0xa6f1}, {0xa717, 0xa71f}, - {0xa722, 0xa788}, {0xa78b, 0xa7cd}, {0xa7d0, 0xa7d1}, {0xa7d3, 0xa7d3}, {0xa7d5, 0xa7dc}, {0xa7f2, 0xa827}, {0xa82c, 0xa82c}, {0xa840, 0xa873}, - {0xa880, 0xa8c5}, {0xa8d0, 0xa8d9}, {0xa8e0, 0xa8f7}, {0xa8fb, 0xa8fb}, {0xa8fd, 0xa92d}, {0xa930, 0xa953}, {0xa960, 0xa97c}, {0xa980, 0xa9c0}, - {0xa9cf, 0xa9d9}, {0xa9e0, 0xa9fe}, {0xaa00, 0xaa36}, {0xaa40, 0xaa4d}, {0xaa50, 0xaa59}, {0xaa60, 0xaa76}, {0xaa7a, 0xaac2}, {0xaadb, 0xaadd}, - {0xaae0, 0xaaef}, {0xaaf2, 0xaaf6}, {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab5a}, - {0xab5c, 0xab69}, {0xab70, 0xabea}, {0xabec, 0xabed}, {0xabf0, 0xabf9}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, - {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, - {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfc5d}, {0xfc64, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdf9}, {0xfe00, 0xfe0f}, - {0xfe20, 0xfe2f}, {0xfe33, 0xfe34}, {0xfe4d, 0xfe4f}, {0xfe71, 0xfe71}, {0xfe73, 0xfe73}, {0xfe77, 0xfe77}, {0xfe79, 0xfe79}, {0xfe7b, 0xfe7b}, - {0xfe7d, 0xfe7d}, {0xfe7f, 0xfefc}, {0xff10, 0xff19}, {0xff21, 0xff3a}, {0xff3f, 0xff3f}, {0xff41, 0xff5a}, {0xff65, 0xffbe}, {0xffc2, 0xffc7}, - {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, - {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10140, 0x10174}, {0x101fd, 0x101fd}, {0x10280, 0x1029c}, {0x102a0, 0x102d0}, {0x102e0, 0x102e0}, {0x10300, 0x1031f}, - {0x1032d, 0x1034a}, {0x10350, 0x1037a}, {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, {0x10400, 0x1049d}, {0x104a0, 0x104a9}, - {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10570, 0x1057a}, {0x1057c, 0x1058a}, {0x1058c, 0x10592}, {0x10594, 0x10595}, - {0x10597, 0x105a1}, {0x105a3, 0x105b1}, {0x105b3, 0x105b9}, {0x105bb, 0x105bc}, {0x105c0, 0x105f3}, {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}, - {0x10780, 0x10785}, {0x10787, 0x107b0}, {0x107b2, 0x107ba}, {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, {0x10837, 0x10838}, {0x1083c, 0x1083c}, - {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e}, {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939}, {0x10980, 0x109b7}, - {0x109be, 0x109bf}, {0x10a00, 0x10a03}, {0x10a05, 0x10a06}, {0x10a0c, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a38, 0x10a3a}, {0x10a3f, 0x10a3f}, - {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae6}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55}, {0x10b60, 0x10b72}, {0x10b80, 0x10b91}, - {0x10c00, 0x10c48}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d27}, {0x10d30, 0x10d39}, {0x10d40, 0x10d65}, {0x10d69, 0x10d6d}, {0x10d6f, 0x10d85}, - {0x10e80, 0x10ea9}, {0x10eab, 0x10eac}, {0x10eb0, 0x10eb1}, {0x10ec2, 0x10ec4}, {0x10efc, 0x10f1c}, {0x10f27, 0x10f27}, {0x10f30, 0x10f50}, {0x10f70, 0x10f85}, - {0x10fb0, 0x10fc4}, {0x10fe0, 0x10ff6}, {0x11000, 0x11046}, {0x11066, 0x11075}, {0x1107f, 0x110ba}, {0x110c2, 0x110c2}, {0x110d0, 0x110e8}, {0x110f0, 0x110f9}, - {0x11100, 0x11134}, {0x11136, 0x1113f}, {0x11144, 0x11147}, {0x11150, 0x11173}, {0x11176, 0x11176}, {0x11180, 0x111c4}, {0x111c9, 0x111cc}, {0x111ce, 0x111da}, - {0x111dc, 0x111dc}, {0x11200, 0x11211}, {0x11213, 0x11237}, {0x1123e, 0x11241}, {0x11280, 0x11286}, {0x11288, 0x11288}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, - {0x1129f, 0x112a8}, {0x112b0, 0x112ea}, {0x112f0, 0x112f9}, {0x11300, 0x11303}, {0x11305, 0x1130c}, {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330}, - {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133b, 0x11344}, {0x11347, 0x11348}, {0x1134b, 0x1134d}, {0x11350, 0x11350}, {0x11357, 0x11357}, {0x1135d, 0x11363}, - {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11380, 0x11389}, {0x1138b, 0x1138b}, {0x1138e, 0x1138e}, {0x11390, 0x113b5}, {0x113b7, 0x113c0}, {0x113c2, 0x113c2}, - {0x113c5, 0x113c5}, {0x113c7, 0x113ca}, {0x113cc, 0x113d3}, {0x113e1, 0x113e2}, {0x11400, 0x1144a}, {0x11450, 0x11459}, {0x1145e, 0x11461}, {0x11480, 0x114c5}, - {0x114c7, 0x114c7}, {0x114d0, 0x114d9}, {0x11580, 0x115b5}, {0x115b8, 0x115c0}, {0x115d8, 0x115dd}, {0x11600, 0x11640}, {0x11644, 0x11644}, {0x11650, 0x11659}, - {0x11680, 0x116b8}, {0x116c0, 0x116c9}, {0x116d0, 0x116e3}, {0x11700, 0x1171a}, {0x1171d, 0x1172b}, {0x11730, 0x11739}, {0x11740, 0x11746}, {0x11800, 0x1183a}, - {0x118a0, 0x118e9}, {0x118ff, 0x11906}, {0x11909, 0x11909}, {0x1190c, 0x11913}, {0x11915, 0x11916}, {0x11918, 0x11935}, {0x11937, 0x11938}, {0x1193b, 0x11943}, - {0x11950, 0x11959}, {0x119a0, 0x119a7}, {0x119aa, 0x119d7}, {0x119da, 0x119e1}, {0x119e3, 0x119e4}, {0x11a00, 0x11a3e}, {0x11a47, 0x11a47}, {0x11a50, 0x11a99}, - {0x11a9d, 0x11a9d}, {0x11ab0, 0x11af8}, {0x11bc0, 0x11be0}, {0x11bf0, 0x11bf9}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c36}, {0x11c38, 0x11c40}, {0x11c50, 0x11c59}, + {0x1a7f, 0x1a89}, {0x1a90, 0x1a99}, {0x1aa7, 0x1aa7}, {0x1ab0, 0x1abd}, {0x1abf, 0x1add}, {0x1ae0, 0x1aeb}, {0x1b00, 0x1b4c}, {0x1b50, 0x1b59}, + {0x1b6b, 0x1b73}, {0x1b80, 0x1bf3}, {0x1c00, 0x1c37}, {0x1c40, 0x1c49}, {0x1c4d, 0x1c7d}, {0x1c80, 0x1c8a}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, + {0x1cd0, 0x1cd2}, {0x1cd4, 0x1cfa}, {0x1d00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, + {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, + {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x200c, 0x200d}, {0x203f, 0x2040}, {0x2054, 0x2054}, + {0x2071, 0x2071}, {0x207f, 0x207f}, {0x2090, 0x209c}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x20e5, 0x20f0}, {0x2102, 0x2102}, {0x2107, 0x2107}, + {0x210a, 0x2113}, {0x2115, 0x2115}, {0x2118, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x2139}, {0x213c, 0x213f}, + {0x2145, 0x2149}, {0x214e, 0x214e}, {0x2160, 0x2188}, {0x2c00, 0x2ce4}, {0x2ceb, 0x2cf3}, {0x2d00, 0x2d25}, {0x2d27, 0x2d27}, {0x2d2d, 0x2d2d}, + {0x2d30, 0x2d67}, {0x2d6f, 0x2d6f}, {0x2d7f, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, + {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2dff}, {0x3005, 0x3007}, {0x3021, 0x302f}, {0x3031, 0x3035}, {0x3038, 0x303c}, + {0x3041, 0x3096}, {0x3099, 0x309a}, {0x309d, 0x309f}, {0x30a1, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e}, {0x31a0, 0x31bf}, {0x31f0, 0x31ff}, + {0x3400, 0x4dbf}, {0x4e00, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c}, {0xa610, 0xa62b}, {0xa640, 0xa66f}, {0xa674, 0xa67d}, {0xa67f, 0xa6f1}, + {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7dc}, {0xa7f1, 0xa827}, {0xa82c, 0xa82c}, {0xa840, 0xa873}, {0xa880, 0xa8c5}, {0xa8d0, 0xa8d9}, + {0xa8e0, 0xa8f7}, {0xa8fb, 0xa8fb}, {0xa8fd, 0xa92d}, {0xa930, 0xa953}, {0xa960, 0xa97c}, {0xa980, 0xa9c0}, {0xa9cf, 0xa9d9}, {0xa9e0, 0xa9fe}, + {0xaa00, 0xaa36}, {0xaa40, 0xaa4d}, {0xaa50, 0xaa59}, {0xaa60, 0xaa76}, {0xaa7a, 0xaac2}, {0xaadb, 0xaadd}, {0xaae0, 0xaaef}, {0xaaf2, 0xaaf6}, + {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab5a}, {0xab5c, 0xab69}, {0xab70, 0xabea}, + {0xabec, 0xabed}, {0xabf0, 0xabf9}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, + {0xfb13, 0xfb17}, {0xfb1d, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, + {0xfbd3, 0xfc5d}, {0xfc64, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdf9}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe2f}, {0xfe33, 0xfe34}, + {0xfe4d, 0xfe4f}, {0xfe71, 0xfe71}, {0xfe73, 0xfe73}, {0xfe77, 0xfe77}, {0xfe79, 0xfe79}, {0xfe7b, 0xfe7b}, {0xfe7d, 0xfe7d}, {0xfe7f, 0xfefc}, + {0xff10, 0xff19}, {0xff21, 0xff3a}, {0xff3f, 0xff3f}, {0xff41, 0xff5a}, {0xff65, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, + {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa}, + {0x10140, 0x10174}, {0x101fd, 0x101fd}, {0x10280, 0x1029c}, {0x102a0, 0x102d0}, {0x102e0, 0x102e0}, {0x10300, 0x1031f}, {0x1032d, 0x1034a}, {0x10350, 0x1037a}, + {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, {0x10400, 0x1049d}, {0x104a0, 0x104a9}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, + {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10570, 0x1057a}, {0x1057c, 0x1058a}, {0x1058c, 0x10592}, {0x10594, 0x10595}, {0x10597, 0x105a1}, {0x105a3, 0x105b1}, + {0x105b3, 0x105b9}, {0x105bb, 0x105bc}, {0x105c0, 0x105f3}, {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10780, 0x10785}, {0x10787, 0x107b0}, + {0x107b2, 0x107ba}, {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x10855}, {0x10860, 0x10876}, + {0x10880, 0x1089e}, {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939}, {0x10940, 0x10959}, {0x10980, 0x109b7}, {0x109be, 0x109bf}, + {0x10a00, 0x10a03}, {0x10a05, 0x10a06}, {0x10a0c, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a38, 0x10a3a}, {0x10a3f, 0x10a3f}, {0x10a60, 0x10a7c}, + {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae6}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55}, {0x10b60, 0x10b72}, {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, + {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d27}, {0x10d30, 0x10d39}, {0x10d40, 0x10d65}, {0x10d69, 0x10d6d}, {0x10d6f, 0x10d85}, {0x10e80, 0x10ea9}, + {0x10eab, 0x10eac}, {0x10eb0, 0x10eb1}, {0x10ec2, 0x10ec7}, {0x10efa, 0x10f1c}, {0x10f27, 0x10f27}, {0x10f30, 0x10f50}, {0x10f70, 0x10f85}, {0x10fb0, 0x10fc4}, + {0x10fe0, 0x10ff6}, {0x11000, 0x11046}, {0x11066, 0x11075}, {0x1107f, 0x110ba}, {0x110c2, 0x110c2}, {0x110d0, 0x110e8}, {0x110f0, 0x110f9}, {0x11100, 0x11134}, + {0x11136, 0x1113f}, {0x11144, 0x11147}, {0x11150, 0x11173}, {0x11176, 0x11176}, {0x11180, 0x111c4}, {0x111c9, 0x111cc}, {0x111ce, 0x111da}, {0x111dc, 0x111dc}, + {0x11200, 0x11211}, {0x11213, 0x11237}, {0x1123e, 0x11241}, {0x11280, 0x11286}, {0x11288, 0x11288}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8}, + {0x112b0, 0x112ea}, {0x112f0, 0x112f9}, {0x11300, 0x11303}, {0x11305, 0x1130c}, {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333}, + {0x11335, 0x11339}, {0x1133b, 0x11344}, {0x11347, 0x11348}, {0x1134b, 0x1134d}, {0x11350, 0x11350}, {0x11357, 0x11357}, {0x1135d, 0x11363}, {0x11366, 0x1136c}, + {0x11370, 0x11374}, {0x11380, 0x11389}, {0x1138b, 0x1138b}, {0x1138e, 0x1138e}, {0x11390, 0x113b5}, {0x113b7, 0x113c0}, {0x113c2, 0x113c2}, {0x113c5, 0x113c5}, + {0x113c7, 0x113ca}, {0x113cc, 0x113d3}, {0x113e1, 0x113e2}, {0x11400, 0x1144a}, {0x11450, 0x11459}, {0x1145e, 0x11461}, {0x11480, 0x114c5}, {0x114c7, 0x114c7}, + {0x114d0, 0x114d9}, {0x11580, 0x115b5}, {0x115b8, 0x115c0}, {0x115d8, 0x115dd}, {0x11600, 0x11640}, {0x11644, 0x11644}, {0x11650, 0x11659}, {0x11680, 0x116b8}, + {0x116c0, 0x116c9}, {0x116d0, 0x116e3}, {0x11700, 0x1171a}, {0x1171d, 0x1172b}, {0x11730, 0x11739}, {0x11740, 0x11746}, {0x11800, 0x1183a}, {0x118a0, 0x118e9}, + {0x118ff, 0x11906}, {0x11909, 0x11909}, {0x1190c, 0x11913}, {0x11915, 0x11916}, {0x11918, 0x11935}, {0x11937, 0x11938}, {0x1193b, 0x11943}, {0x11950, 0x11959}, + {0x119a0, 0x119a7}, {0x119aa, 0x119d7}, {0x119da, 0x119e1}, {0x119e3, 0x119e4}, {0x11a00, 0x11a3e}, {0x11a47, 0x11a47}, {0x11a50, 0x11a99}, {0x11a9d, 0x11a9d}, + {0x11ab0, 0x11af8}, {0x11b60, 0x11b67}, {0x11bc0, 0x11be0}, {0x11bf0, 0x11bf9}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c36}, {0x11c38, 0x11c40}, {0x11c50, 0x11c59}, {0x11c72, 0x11c8f}, {0x11c92, 0x11ca7}, {0x11ca9, 0x11cb6}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09}, {0x11d0b, 0x11d36}, {0x11d3a, 0x11d3a}, {0x11d3c, 0x11d3d}, {0x11d3f, 0x11d47}, {0x11d50, 0x11d59}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d8e}, {0x11d90, 0x11d91}, {0x11d93, 0x11d98}, {0x11da0, 0x11da9}, - {0x11ee0, 0x11ef6}, {0x11f00, 0x11f10}, {0x11f12, 0x11f3a}, {0x11f3e, 0x11f42}, {0x11f50, 0x11f5a}, {0x11fb0, 0x11fb0}, {0x12000, 0x12399}, {0x12400, 0x1246e}, - {0x12480, 0x12543}, {0x12f90, 0x12ff0}, {0x13000, 0x1342f}, {0x13440, 0x13455}, {0x13460, 0x143fa}, {0x14400, 0x14646}, {0x16100, 0x16139}, {0x16800, 0x16a38}, - {0x16a40, 0x16a5e}, {0x16a60, 0x16a69}, {0x16a70, 0x16abe}, {0x16ac0, 0x16ac9}, {0x16ad0, 0x16aed}, {0x16af0, 0x16af4}, {0x16b00, 0x16b36}, {0x16b40, 0x16b43}, - {0x16b50, 0x16b59}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16d40, 0x16d6c}, {0x16d70, 0x16d79}, {0x16e40, 0x16e7f}, {0x16f00, 0x16f4a}, {0x16f4f, 0x16f87}, - {0x16f8f, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x16fe3, 0x16fe4}, {0x16ff0, 0x16ff1}, {0x17000, 0x187f7}, {0x18800, 0x18cd5}, {0x18cff, 0x18d08}, {0x1aff0, 0x1aff3}, - {0x1aff5, 0x1affb}, {0x1affd, 0x1affe}, {0x1b000, 0x1b122}, {0x1b132, 0x1b132}, {0x1b150, 0x1b152}, {0x1b155, 0x1b155}, {0x1b164, 0x1b167}, {0x1b170, 0x1b2fb}, - {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1bc9d, 0x1bc9e}, {0x1ccf0, 0x1ccf9}, {0x1cf00, 0x1cf2d}, {0x1cf30, 0x1cf46}, - {0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, - {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, - {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, - {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, - {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb}, {0x1d7ce, 0x1d7ff}, {0x1da00, 0x1da36}, {0x1da3b, 0x1da6c}, {0x1da75, 0x1da75}, - {0x1da84, 0x1da84}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1df00, 0x1df1e}, {0x1df25, 0x1df2a}, {0x1e000, 0x1e006}, {0x1e008, 0x1e018}, {0x1e01b, 0x1e021}, - {0x1e023, 0x1e024}, {0x1e026, 0x1e02a}, {0x1e030, 0x1e06d}, {0x1e08f, 0x1e08f}, {0x1e100, 0x1e12c}, {0x1e130, 0x1e13d}, {0x1e140, 0x1e149}, {0x1e14e, 0x1e14e}, - {0x1e290, 0x1e2ae}, {0x1e2c0, 0x1e2f9}, {0x1e4d0, 0x1e4f9}, {0x1e5d0, 0x1e5fa}, {0x1e7e0, 0x1e7e6}, {0x1e7e8, 0x1e7eb}, {0x1e7ed, 0x1e7ee}, {0x1e7f0, 0x1e7fe}, - {0x1e800, 0x1e8c4}, {0x1e8d0, 0x1e8d6}, {0x1e900, 0x1e94b}, {0x1e950, 0x1e959}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee24, 0x1ee24}, - {0x1ee27, 0x1ee27}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee39, 0x1ee39}, {0x1ee3b, 0x1ee3b}, {0x1ee42, 0x1ee42}, {0x1ee47, 0x1ee47}, {0x1ee49, 0x1ee49}, - {0x1ee4b, 0x1ee4b}, {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee54, 0x1ee54}, {0x1ee57, 0x1ee57}, {0x1ee59, 0x1ee59}, {0x1ee5b, 0x1ee5b}, {0x1ee5d, 0x1ee5d}, - {0x1ee5f, 0x1ee5f}, {0x1ee61, 0x1ee62}, {0x1ee64, 0x1ee64}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee7e, 0x1ee7e}, - {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x1fbf0, 0x1fbf9}, {0x20000, 0x2a6df}, {0x2a700, 0x2b739}, - {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}, {0x2ebf0, 0x2ee5d}, {0x2f800, 0x2fa1d}, {0x30000, 0x3134a}, {0x31350, 0x323af}, {0xe0100, 0xe01ef}, + {0x11db0, 0x11ddb}, {0x11de0, 0x11de9}, {0x11ee0, 0x11ef6}, {0x11f00, 0x11f10}, {0x11f12, 0x11f3a}, {0x11f3e, 0x11f42}, {0x11f50, 0x11f5a}, {0x11fb0, 0x11fb0}, + {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12480, 0x12543}, {0x12f90, 0x12ff0}, {0x13000, 0x1342f}, {0x13440, 0x13455}, {0x13460, 0x143fa}, {0x14400, 0x14646}, + {0x16100, 0x16139}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, {0x16a60, 0x16a69}, {0x16a70, 0x16abe}, {0x16ac0, 0x16ac9}, {0x16ad0, 0x16aed}, {0x16af0, 0x16af4}, + {0x16b00, 0x16b36}, {0x16b40, 0x16b43}, {0x16b50, 0x16b59}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16d40, 0x16d6c}, {0x16d70, 0x16d79}, {0x16e40, 0x16e7f}, + {0x16ea0, 0x16eb8}, {0x16ebb, 0x16ed3}, {0x16f00, 0x16f4a}, {0x16f4f, 0x16f87}, {0x16f8f, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x16fe3, 0x16fe4}, {0x16ff0, 0x16ff6}, + {0x17000, 0x18cd5}, {0x18cff, 0x18d1e}, {0x18d80, 0x18df2}, {0x1aff0, 0x1aff3}, {0x1aff5, 0x1affb}, {0x1affd, 0x1affe}, {0x1b000, 0x1b122}, {0x1b132, 0x1b132}, + {0x1b150, 0x1b152}, {0x1b155, 0x1b155}, {0x1b164, 0x1b167}, {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, + {0x1bc9d, 0x1bc9e}, {0x1ccf0, 0x1ccf9}, {0x1cf00, 0x1cf2d}, {0x1cf30, 0x1cf46}, {0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, + {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, + {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, + {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa}, + {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb}, + {0x1d7ce, 0x1d7ff}, {0x1da00, 0x1da36}, {0x1da3b, 0x1da6c}, {0x1da75, 0x1da75}, {0x1da84, 0x1da84}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1df00, 0x1df1e}, + {0x1df25, 0x1df2a}, {0x1e000, 0x1e006}, {0x1e008, 0x1e018}, {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a}, {0x1e030, 0x1e06d}, {0x1e08f, 0x1e08f}, + {0x1e100, 0x1e12c}, {0x1e130, 0x1e13d}, {0x1e140, 0x1e149}, {0x1e14e, 0x1e14e}, {0x1e290, 0x1e2ae}, {0x1e2c0, 0x1e2f9}, {0x1e4d0, 0x1e4f9}, {0x1e5d0, 0x1e5fa}, + {0x1e6c0, 0x1e6de}, {0x1e6e0, 0x1e6f5}, {0x1e6fe, 0x1e6ff}, {0x1e7e0, 0x1e7e6}, {0x1e7e8, 0x1e7eb}, {0x1e7ed, 0x1e7ee}, {0x1e7f0, 0x1e7fe}, {0x1e800, 0x1e8c4}, + {0x1e8d0, 0x1e8d6}, {0x1e900, 0x1e94b}, {0x1e950, 0x1e959}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee24, 0x1ee24}, {0x1ee27, 0x1ee27}, + {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee39, 0x1ee39}, {0x1ee3b, 0x1ee3b}, {0x1ee42, 0x1ee42}, {0x1ee47, 0x1ee47}, {0x1ee49, 0x1ee49}, {0x1ee4b, 0x1ee4b}, + {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee54, 0x1ee54}, {0x1ee57, 0x1ee57}, {0x1ee59, 0x1ee59}, {0x1ee5b, 0x1ee5b}, {0x1ee5d, 0x1ee5d}, {0x1ee5f, 0x1ee5f}, + {0x1ee61, 0x1ee62}, {0x1ee64, 0x1ee64}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee7e, 0x1ee7e}, {0x1ee80, 0x1ee89}, + {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x1fbf0, 0x1fbf9}, {0x20000, 0x2a6df}, {0x2a700, 0x2b81d}, {0x2b820, 0x2cead}, + {0x2ceb0, 0x2ebe0}, {0x2ebf0, 0x2ee5d}, {0x2f800, 0x2fa1d}, {0x30000, 0x3134a}, {0x31350, 0x33479}, {0xe0100, 0xe01ef}, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { @@ -5074,7 +5080,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 0x2060 || lookahead == 0xfeff) SKIP(50); if (('1' <= lookahead && lookahead <= '9')) ADVANCE(130); - if (set_contains(sym_identifier_character_set_1, 685, lookahead)) ADVANCE(140); + if (set_contains(sym_identifier_character_set_1, 692, lookahead)) ADVANCE(140); END_STATE(); case 1: if (lookahead == '\n') SKIP(14); @@ -5175,7 +5181,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 0x2060 || lookahead == 0xfeff) SKIP(14); if (('1' <= lookahead && lookahead <= '9')) ADVANCE(130); - if (set_contains(sym_identifier_character_set_1, 685, lookahead)) ADVANCE(140); + if (set_contains(sym_identifier_character_set_1, 692, lookahead)) ADVANCE(140); END_STATE(); case 15: ADVANCE_MAP( @@ -5208,7 +5214,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 0x200b || lookahead == 0x2060 || lookahead == 0xfeff) SKIP(15); - if (set_contains(sym_identifier_character_set_1, 685, lookahead)) ADVANCE(140); + if (set_contains(sym_identifier_character_set_1, 692, lookahead)) ADVANCE(140); END_STATE(); case 16: ADVANCE_MAP( @@ -5242,7 +5248,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 0x200b || lookahead == 0x2060 || lookahead == 0xfeff) SKIP(16); - if (set_contains(sym_identifier_character_set_1, 685, lookahead)) ADVANCE(140); + if (set_contains(sym_identifier_character_set_1, 692, lookahead)) ADVANCE(140); END_STATE(); case 17: if (lookahead == '#') ADVANCE(141); @@ -5438,7 +5444,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 0x2060 || lookahead == 0xfeff) SKIP(50); if (('1' <= lookahead && lookahead <= '9')) ADVANCE(130); - if (set_contains(sym_identifier_character_set_1, 685, lookahead)) ADVANCE(140); + if (set_contains(sym_identifier_character_set_1, 692, lookahead)) ADVANCE(140); END_STATE(); case 51: if (eof) ADVANCE(52); @@ -5477,7 +5483,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 0x2060 || lookahead == 0xfeff) SKIP(51); if (('1' <= lookahead && lookahead <= '9')) ADVANCE(130); - if (set_contains(sym_identifier_character_set_1, 685, lookahead)) ADVANCE(140); + if (set_contains(sym_identifier_character_set_1, 692, lookahead)) ADVANCE(140); END_STATE(); case 52: ACCEPT_TOKEN(ts_builtin_sym_end); @@ -5896,7 +5902,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { END_STATE(); case 140: ACCEPT_TOKEN(sym_identifier); - if (set_contains(sym_identifier_character_set_2, 800, lookahead)) ADVANCE(140); + if (set_contains(sym_identifier_character_set_2, 806, lookahead)) ADVANCE(140); END_STATE(); case 141: ACCEPT_TOKEN(sym_comment); @@ -6530,9 +6536,9 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [59] = {.lex_state = 51, .external_lex_state = 3}, [60] = {.lex_state = 51, .external_lex_state = 3}, [61] = {.lex_state = 51, .external_lex_state = 3}, - [62] = {.lex_state = 51, .external_lex_state = 3}, + [62] = {.lex_state = 51, .external_lex_state = 2}, [63] = {.lex_state = 51, .external_lex_state = 3}, - [64] = {.lex_state = 51, .external_lex_state = 2}, + [64] = {.lex_state = 51, .external_lex_state = 3}, [65] = {.lex_state = 51, .external_lex_state = 2}, [66] = {.lex_state = 51, .external_lex_state = 4}, [67] = {.lex_state = 51, .external_lex_state = 4}, @@ -6545,8 +6551,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [74] = {.lex_state = 51, .external_lex_state = 5}, [75] = {.lex_state = 51, .external_lex_state = 5}, [76] = {.lex_state = 51, .external_lex_state = 5}, - [77] = {.lex_state = 51, .external_lex_state = 5}, - [78] = {.lex_state = 51, .external_lex_state = 4}, + [77] = {.lex_state = 51, .external_lex_state = 4}, + [78] = {.lex_state = 51, .external_lex_state = 5}, [79] = {.lex_state = 51, .external_lex_state = 5}, [80] = {.lex_state = 51, .external_lex_state = 5}, [81] = {.lex_state = 51, .external_lex_state = 5}, @@ -6607,18 +6613,18 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [136] = {.lex_state = 51, .external_lex_state = 2}, [137] = {.lex_state = 51, .external_lex_state = 2}, [138] = {.lex_state = 51, .external_lex_state = 2}, - [139] = {.lex_state = 14, .external_lex_state = 2}, - [140] = {.lex_state = 51, .external_lex_state = 4}, - [141] = {.lex_state = 51, .external_lex_state = 2}, + [139] = {.lex_state = 51, .external_lex_state = 4}, + [140] = {.lex_state = 51, .external_lex_state = 2}, + [141] = {.lex_state = 14, .external_lex_state = 2}, [142] = {.lex_state = 51, .external_lex_state = 2}, [143] = {.lex_state = 51, .external_lex_state = 2}, [144] = {.lex_state = 51, .external_lex_state = 2}, [145] = {.lex_state = 51, .external_lex_state = 2}, - [146] = {.lex_state = 51, .external_lex_state = 2}, - [147] = {.lex_state = 14, .external_lex_state = 2}, - [148] = {.lex_state = 51, .external_lex_state = 2}, + [146] = {.lex_state = 14, .external_lex_state = 2}, + [147] = {.lex_state = 51, .external_lex_state = 2}, + [148] = {.lex_state = 51, .external_lex_state = 4}, [149] = {.lex_state = 51, .external_lex_state = 2}, - [150] = {.lex_state = 51, .external_lex_state = 4}, + [150] = {.lex_state = 51, .external_lex_state = 2}, [151] = {.lex_state = 51, .external_lex_state = 2}, [152] = {.lex_state = 51, .external_lex_state = 2}, [153] = {.lex_state = 51, .external_lex_state = 2}, @@ -6646,29 +6652,29 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [175] = {.lex_state = 51, .external_lex_state = 2}, [176] = {.lex_state = 51, .external_lex_state = 2}, [177] = {.lex_state = 51, .external_lex_state = 2}, - [178] = {.lex_state = 51, .external_lex_state = 2}, - [179] = {.lex_state = 51, .external_lex_state = 4}, + [178] = {.lex_state = 51, .external_lex_state = 4}, + [179] = {.lex_state = 51, .external_lex_state = 2}, [180] = {.lex_state = 51, .external_lex_state = 2}, - [181] = {.lex_state = 51, .external_lex_state = 2}, - [182] = {.lex_state = 51, .external_lex_state = 4}, + [181] = {.lex_state = 51, .external_lex_state = 4}, + [182] = {.lex_state = 51, .external_lex_state = 2}, [183] = {.lex_state = 51, .external_lex_state = 2}, - [184] = {.lex_state = 51, .external_lex_state = 2}, + [184] = {.lex_state = 14, .external_lex_state = 2}, [185] = {.lex_state = 14, .external_lex_state = 2}, [186] = {.lex_state = 51, .external_lex_state = 2}, - [187] = {.lex_state = 14, .external_lex_state = 2}, + [187] = {.lex_state = 51, .external_lex_state = 2}, [188] = {.lex_state = 51, .external_lex_state = 2}, [189] = {.lex_state = 51, .external_lex_state = 2}, [190] = {.lex_state = 51, .external_lex_state = 2}, [191] = {.lex_state = 51, .external_lex_state = 2}, - [192] = {.lex_state = 51, .external_lex_state = 2}, + [192] = {.lex_state = 51, .external_lex_state = 4}, [193] = {.lex_state = 51, .external_lex_state = 2}, [194] = {.lex_state = 51, .external_lex_state = 2}, [195] = {.lex_state = 51, .external_lex_state = 2}, [196] = {.lex_state = 51, .external_lex_state = 2}, - [197] = {.lex_state = 51, .external_lex_state = 4}, + [197] = {.lex_state = 51, .external_lex_state = 2}, [198] = {.lex_state = 51, .external_lex_state = 2}, [199] = {.lex_state = 51, .external_lex_state = 2}, - [200] = {.lex_state = 51, .external_lex_state = 2}, + [200] = {.lex_state = 51, .external_lex_state = 4}, [201] = {.lex_state = 51, .external_lex_state = 2}, [202] = {.lex_state = 51, .external_lex_state = 2}, [203] = {.lex_state = 51, .external_lex_state = 4}, @@ -6679,7 +6685,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [208] = {.lex_state = 51, .external_lex_state = 2}, [209] = {.lex_state = 51, .external_lex_state = 2}, [210] = {.lex_state = 51, .external_lex_state = 2}, - [211] = {.lex_state = 51, .external_lex_state = 4}, + [211] = {.lex_state = 51, .external_lex_state = 2}, [212] = {.lex_state = 51, .external_lex_state = 2}, [213] = {.lex_state = 51, .external_lex_state = 2}, [214] = {.lex_state = 51, .external_lex_state = 2}, @@ -6691,7 +6697,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [220] = {.lex_state = 51, .external_lex_state = 2}, [221] = {.lex_state = 51, .external_lex_state = 2}, [222] = {.lex_state = 51, .external_lex_state = 2}, - [223] = {.lex_state = 51, .external_lex_state = 2}, + [223] = {.lex_state = 51, .external_lex_state = 4}, [224] = {.lex_state = 51, .external_lex_state = 2}, [225] = {.lex_state = 51, .external_lex_state = 2}, [226] = {.lex_state = 51, .external_lex_state = 2}, @@ -6701,7 +6707,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [230] = {.lex_state = 51, .external_lex_state = 2}, [231] = {.lex_state = 51, .external_lex_state = 2}, [232] = {.lex_state = 51, .external_lex_state = 2}, - [233] = {.lex_state = 51, .external_lex_state = 4}, + [233] = {.lex_state = 51, .external_lex_state = 2}, [234] = {.lex_state = 51, .external_lex_state = 2}, [235] = {.lex_state = 51, .external_lex_state = 2}, [236] = {.lex_state = 51, .external_lex_state = 2}, @@ -6734,8 +6740,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [263] = {.lex_state = 51, .external_lex_state = 2}, [264] = {.lex_state = 51, .external_lex_state = 2}, [265] = {.lex_state = 51, .external_lex_state = 2}, - [266] = {.lex_state = 51, .external_lex_state = 3}, - [267] = {.lex_state = 51, .external_lex_state = 3}, + [266] = {.lex_state = 51, .external_lex_state = 2}, + [267] = {.lex_state = 51, .external_lex_state = 2}, [268] = {.lex_state = 51, .external_lex_state = 2}, [269] = {.lex_state = 51, .external_lex_state = 2}, [270] = {.lex_state = 51, .external_lex_state = 2}, @@ -6743,32 +6749,32 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [272] = {.lex_state = 51, .external_lex_state = 2}, [273] = {.lex_state = 51, .external_lex_state = 2}, [274] = {.lex_state = 51, .external_lex_state = 2}, - [275] = {.lex_state = 51, .external_lex_state = 3}, - [276] = {.lex_state = 51, .external_lex_state = 2}, - [277] = {.lex_state = 51, .external_lex_state = 2}, + [275] = {.lex_state = 51, .external_lex_state = 2}, + [276] = {.lex_state = 51, .external_lex_state = 3}, + [277] = {.lex_state = 51, .external_lex_state = 3}, [278] = {.lex_state = 51, .external_lex_state = 2}, [279] = {.lex_state = 51, .external_lex_state = 2}, [280] = {.lex_state = 51, .external_lex_state = 2}, [281] = {.lex_state = 51, .external_lex_state = 2}, [282] = {.lex_state = 51, .external_lex_state = 2}, - [283] = {.lex_state = 51, .external_lex_state = 3}, - [284] = {.lex_state = 51, .external_lex_state = 2}, - [285] = {.lex_state = 51, .external_lex_state = 2}, + [283] = {.lex_state = 51, .external_lex_state = 2}, + [284] = {.lex_state = 51, .external_lex_state = 3}, + [285] = {.lex_state = 51, .external_lex_state = 3}, [286] = {.lex_state = 51, .external_lex_state = 2}, [287] = {.lex_state = 51, .external_lex_state = 2}, [288] = {.lex_state = 51, .external_lex_state = 2}, - [289] = {.lex_state = 51, .external_lex_state = 2}, + [289] = {.lex_state = 51, .external_lex_state = 4}, [290] = {.lex_state = 51, .external_lex_state = 2}, - [291] = {.lex_state = 51, .external_lex_state = 4}, + [291] = {.lex_state = 51, .external_lex_state = 2}, [292] = {.lex_state = 51, .external_lex_state = 2}, [293] = {.lex_state = 51, .external_lex_state = 2}, - [294] = {.lex_state = 51, .external_lex_state = 2}, + [294] = {.lex_state = 51, .external_lex_state = 4}, [295] = {.lex_state = 51, .external_lex_state = 2}, - [296] = {.lex_state = 51, .external_lex_state = 4}, + [296] = {.lex_state = 51, .external_lex_state = 2}, [297] = {.lex_state = 51, .external_lex_state = 2}, [298] = {.lex_state = 51, .external_lex_state = 2}, [299] = {.lex_state = 51, .external_lex_state = 2}, - [300] = {.lex_state = 51, .external_lex_state = 4}, + [300] = {.lex_state = 51, .external_lex_state = 2}, [301] = {.lex_state = 51, .external_lex_state = 4}, [302] = {.lex_state = 51, .external_lex_state = 2}, [303] = {.lex_state = 51, .external_lex_state = 2}, @@ -6778,34 +6784,34 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [307] = {.lex_state = 51, .external_lex_state = 2}, [308] = {.lex_state = 51, .external_lex_state = 2}, [309] = {.lex_state = 51, .external_lex_state = 2}, - [310] = {.lex_state = 51, .external_lex_state = 2}, + [310] = {.lex_state = 51, .external_lex_state = 4}, [311] = {.lex_state = 51, .external_lex_state = 2}, [312] = {.lex_state = 51, .external_lex_state = 2}, - [313] = {.lex_state = 16}, + [313] = {.lex_state = 51, .external_lex_state = 2}, [314] = {.lex_state = 51, .external_lex_state = 2}, - [315] = {.lex_state = 51, .external_lex_state = 2}, + [315] = {.lex_state = 51, .external_lex_state = 3}, [316] = {.lex_state = 51, .external_lex_state = 3}, - [317] = {.lex_state = 16}, + [317] = {.lex_state = 51, .external_lex_state = 3}, [318] = {.lex_state = 51, .external_lex_state = 3}, - [319] = {.lex_state = 51, .external_lex_state = 2}, - [320] = {.lex_state = 51, .external_lex_state = 3}, - [321] = {.lex_state = 51, .external_lex_state = 3}, - [322] = {.lex_state = 51, .external_lex_state = 3}, - [323] = {.lex_state = 51, .external_lex_state = 2}, + [319] = {.lex_state = 16}, + [320] = {.lex_state = 51, .external_lex_state = 2}, + [321] = {.lex_state = 51, .external_lex_state = 2}, + [322] = {.lex_state = 51, .external_lex_state = 2}, + [323] = {.lex_state = 51, .external_lex_state = 3}, [324] = {.lex_state = 51, .external_lex_state = 3}, [325] = {.lex_state = 51, .external_lex_state = 3}, - [326] = {.lex_state = 51, .external_lex_state = 2}, - [327] = {.lex_state = 51, .external_lex_state = 2}, - [328] = {.lex_state = 51, .external_lex_state = 2}, + [326] = {.lex_state = 51, .external_lex_state = 3}, + [327] = {.lex_state = 16}, + [328] = {.lex_state = 51, .external_lex_state = 3}, [329] = {.lex_state = 51, .external_lex_state = 2}, - [330] = {.lex_state = 51, .external_lex_state = 3}, + [330] = {.lex_state = 51, .external_lex_state = 2}, [331] = {.lex_state = 51, .external_lex_state = 3}, - [332] = {.lex_state = 51, .external_lex_state = 2}, - [333] = {.lex_state = 51, .external_lex_state = 3}, + [332] = {.lex_state = 51, .external_lex_state = 3}, + [333] = {.lex_state = 51, .external_lex_state = 2}, [334] = {.lex_state = 51, .external_lex_state = 2}, [335] = {.lex_state = 51, .external_lex_state = 2}, [336] = {.lex_state = 51, .external_lex_state = 2}, - [337] = {.lex_state = 51, .external_lex_state = 3}, + [337] = {.lex_state = 51, .external_lex_state = 2}, [338] = {.lex_state = 51, .external_lex_state = 2}, [339] = {.lex_state = 51, .external_lex_state = 2}, [340] = {.lex_state = 51, .external_lex_state = 2}, @@ -6815,10 +6821,10 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [344] = {.lex_state = 51, .external_lex_state = 2}, [345] = {.lex_state = 51, .external_lex_state = 2}, [346] = {.lex_state = 51, .external_lex_state = 2}, - [347] = {.lex_state = 16, .external_lex_state = 6}, + [347] = {.lex_state = 51, .external_lex_state = 2}, [348] = {.lex_state = 51, .external_lex_state = 2}, [349] = {.lex_state = 51, .external_lex_state = 2}, - [350] = {.lex_state = 51, .external_lex_state = 3}, + [350] = {.lex_state = 51, .external_lex_state = 2}, [351] = {.lex_state = 51, .external_lex_state = 2}, [352] = {.lex_state = 51, .external_lex_state = 2}, [353] = {.lex_state = 51, .external_lex_state = 2}, @@ -6848,7 +6854,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [377] = {.lex_state = 51, .external_lex_state = 2}, [378] = {.lex_state = 51, .external_lex_state = 2}, [379] = {.lex_state = 51, .external_lex_state = 2}, - [380] = {.lex_state = 51, .external_lex_state = 2}, + [380] = {.lex_state = 16, .external_lex_state = 6}, [381] = {.lex_state = 51, .external_lex_state = 2}, [382] = {.lex_state = 51, .external_lex_state = 2}, [383] = {.lex_state = 51, .external_lex_state = 2}, @@ -6864,7 +6870,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [393] = {.lex_state = 51, .external_lex_state = 2}, [394] = {.lex_state = 51, .external_lex_state = 2}, [395] = {.lex_state = 51, .external_lex_state = 2}, - [396] = {.lex_state = 51, .external_lex_state = 2}, + [396] = {.lex_state = 51, .external_lex_state = 3}, [397] = {.lex_state = 51, .external_lex_state = 2}, [398] = {.lex_state = 51, .external_lex_state = 2}, [399] = {.lex_state = 51, .external_lex_state = 2}, @@ -6907,171 +6913,171 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [436] = {.lex_state = 51, .external_lex_state = 2}, [437] = {.lex_state = 16, .external_lex_state = 6}, [438] = {.lex_state = 51, .external_lex_state = 2}, - [439] = {.lex_state = 51, .external_lex_state = 3}, + [439] = {.lex_state = 51, .external_lex_state = 2}, [440] = {.lex_state = 51, .external_lex_state = 3}, - [441] = {.lex_state = 51, .external_lex_state = 2}, - [442] = {.lex_state = 51, .external_lex_state = 2}, - [443] = {.lex_state = 51, .external_lex_state = 2}, - [444] = {.lex_state = 51, .external_lex_state = 3}, - [445] = {.lex_state = 51, .external_lex_state = 2}, - [446] = {.lex_state = 51, .external_lex_state = 2}, - [447] = {.lex_state = 51, .external_lex_state = 2}, + [441] = {.lex_state = 51, .external_lex_state = 3}, + [442] = {.lex_state = 51, .external_lex_state = 3}, + [443] = {.lex_state = 51, .external_lex_state = 3}, + [444] = {.lex_state = 16, .external_lex_state = 6}, + [445] = {.lex_state = 51, .external_lex_state = 3}, + [446] = {.lex_state = 51, .external_lex_state = 3}, + [447] = {.lex_state = 51, .external_lex_state = 3}, [448] = {.lex_state = 51, .external_lex_state = 3}, - [449] = {.lex_state = 51, .external_lex_state = 2}, - [450] = {.lex_state = 51, .external_lex_state = 2}, + [449] = {.lex_state = 51, .external_lex_state = 3}, + [450] = {.lex_state = 51, .external_lex_state = 3}, [451] = {.lex_state = 51, .external_lex_state = 2}, - [452] = {.lex_state = 16, .external_lex_state = 7}, - [453] = {.lex_state = 16, .external_lex_state = 6}, - [454] = {.lex_state = 51, .external_lex_state = 3}, + [452] = {.lex_state = 51, .external_lex_state = 2}, + [453] = {.lex_state = 51, .external_lex_state = 2}, + [454] = {.lex_state = 51, .external_lex_state = 2}, [455] = {.lex_state = 51, .external_lex_state = 2}, [456] = {.lex_state = 51, .external_lex_state = 3}, [457] = {.lex_state = 51, .external_lex_state = 2}, - [458] = {.lex_state = 51, .external_lex_state = 3}, - [459] = {.lex_state = 51, .external_lex_state = 3}, - [460] = {.lex_state = 51, .external_lex_state = 3}, + [458] = {.lex_state = 16, .external_lex_state = 7}, + [459] = {.lex_state = 51, .external_lex_state = 2}, + [460] = {.lex_state = 51, .external_lex_state = 2}, [461] = {.lex_state = 51, .external_lex_state = 2}, [462] = {.lex_state = 51, .external_lex_state = 3}, - [463] = {.lex_state = 51, .external_lex_state = 3}, - [464] = {.lex_state = 51, .external_lex_state = 3}, + [463] = {.lex_state = 51, .external_lex_state = 2}, + [464] = {.lex_state = 51, .external_lex_state = 2}, [465] = {.lex_state = 51, .external_lex_state = 2}, [466] = {.lex_state = 51, .external_lex_state = 2}, [467] = {.lex_state = 51, .external_lex_state = 2}, [468] = {.lex_state = 51, .external_lex_state = 2}, - [469] = {.lex_state = 16, .external_lex_state = 6}, - [470] = {.lex_state = 16}, - [471] = {.lex_state = 51, .external_lex_state = 2}, + [469] = {.lex_state = 51, .external_lex_state = 2}, + [470] = {.lex_state = 51, .external_lex_state = 3}, + [471] = {.lex_state = 51, .external_lex_state = 3}, [472] = {.lex_state = 51, .external_lex_state = 2}, - [473] = {.lex_state = 51, .external_lex_state = 2}, - [474] = {.lex_state = 51, .external_lex_state = 2}, + [473] = {.lex_state = 51, .external_lex_state = 3}, + [474] = {.lex_state = 51, .external_lex_state = 3}, [475] = {.lex_state = 51, .external_lex_state = 2}, [476] = {.lex_state = 51, .external_lex_state = 2}, - [477] = {.lex_state = 51, .external_lex_state = 3}, + [477] = {.lex_state = 51, .external_lex_state = 2}, [478] = {.lex_state = 51, .external_lex_state = 2}, - [479] = {.lex_state = 51, .external_lex_state = 3}, - [480] = {.lex_state = 51, .external_lex_state = 3}, - [481] = {.lex_state = 51, .external_lex_state = 2}, - [482] = {.lex_state = 51, .external_lex_state = 3}, - [483] = {.lex_state = 51, .external_lex_state = 2}, + [479] = {.lex_state = 51, .external_lex_state = 2}, + [480] = {.lex_state = 51, .external_lex_state = 2}, + [481] = {.lex_state = 51, .external_lex_state = 3}, + [482] = {.lex_state = 16}, + [483] = {.lex_state = 16, .external_lex_state = 6}, [484] = {.lex_state = 51, .external_lex_state = 3}, [485] = {.lex_state = 51, .external_lex_state = 3}, [486] = {.lex_state = 51, .external_lex_state = 3}, [487] = {.lex_state = 51, .external_lex_state = 3}, [488] = {.lex_state = 51, .external_lex_state = 3}, - [489] = {.lex_state = 51, .external_lex_state = 3}, - [490] = {.lex_state = 51, .external_lex_state = 2}, - [491] = {.lex_state = 51, .external_lex_state = 3}, - [492] = {.lex_state = 16, .external_lex_state = 6}, - [493] = {.lex_state = 51, .external_lex_state = 2}, - [494] = {.lex_state = 16, .external_lex_state = 6}, - [495] = {.lex_state = 51, .external_lex_state = 2}, + [489] = {.lex_state = 51, .external_lex_state = 2}, + [490] = {.lex_state = 51, .external_lex_state = 3}, + [491] = {.lex_state = 51, .external_lex_state = 2}, + [492] = {.lex_state = 51, .external_lex_state = 2}, + [493] = {.lex_state = 51, .external_lex_state = 3}, + [494] = {.lex_state = 51, .external_lex_state = 2}, + [495] = {.lex_state = 51, .external_lex_state = 3}, [496] = {.lex_state = 51, .external_lex_state = 2}, [497] = {.lex_state = 51, .external_lex_state = 3}, [498] = {.lex_state = 51, .external_lex_state = 2}, - [499] = {.lex_state = 16, .external_lex_state = 6}, - [500] = {.lex_state = 51, .external_lex_state = 3}, + [499] = {.lex_state = 51, .external_lex_state = 2}, + [500] = {.lex_state = 51, .external_lex_state = 2}, [501] = {.lex_state = 51, .external_lex_state = 2}, - [502] = {.lex_state = 51, .external_lex_state = 3}, - [503] = {.lex_state = 16, .external_lex_state = 6}, - [504] = {.lex_state = 51, .external_lex_state = 3}, - [505] = {.lex_state = 51, .external_lex_state = 3}, - [506] = {.lex_state = 51, .external_lex_state = 2}, - [507] = {.lex_state = 51, .external_lex_state = 3}, + [502] = {.lex_state = 16, .external_lex_state = 6}, + [503] = {.lex_state = 51, .external_lex_state = 2}, + [504] = {.lex_state = 16, .external_lex_state = 6}, + [505] = {.lex_state = 16, .external_lex_state = 6}, + [506] = {.lex_state = 51, .external_lex_state = 3}, + [507] = {.lex_state = 16, .external_lex_state = 6}, [508] = {.lex_state = 51, .external_lex_state = 2}, - [509] = {.lex_state = 51, .external_lex_state = 2}, + [509] = {.lex_state = 51, .external_lex_state = 3}, [510] = {.lex_state = 51, .external_lex_state = 2}, - [511] = {.lex_state = 51, .external_lex_state = 2}, + [511] = {.lex_state = 51, .external_lex_state = 3}, [512] = {.lex_state = 51, .external_lex_state = 2}, [513] = {.lex_state = 51, .external_lex_state = 2}, [514] = {.lex_state = 51, .external_lex_state = 3}, - [515] = {.lex_state = 16, .external_lex_state = 6}, - [516] = {.lex_state = 51, .external_lex_state = 2}, + [515] = {.lex_state = 51, .external_lex_state = 2}, + [516] = {.lex_state = 51, .external_lex_state = 3}, [517] = {.lex_state = 51, .external_lex_state = 2}, [518] = {.lex_state = 51, .external_lex_state = 2}, - [519] = {.lex_state = 51, .external_lex_state = 2}, - [520] = {.lex_state = 51, .external_lex_state = 2}, + [519] = {.lex_state = 51, .external_lex_state = 3}, + [520] = {.lex_state = 16, .external_lex_state = 6}, [521] = {.lex_state = 51, .external_lex_state = 2}, - [522] = {.lex_state = 51, .external_lex_state = 2}, - [523] = {.lex_state = 51, .external_lex_state = 2}, - [524] = {.lex_state = 16, .external_lex_state = 6}, + [522] = {.lex_state = 51, .external_lex_state = 3}, + [523] = {.lex_state = 51, .external_lex_state = 3}, + [524] = {.lex_state = 51, .external_lex_state = 3}, [525] = {.lex_state = 51, .external_lex_state = 2}, - [526] = {.lex_state = 51, .external_lex_state = 2}, - [527] = {.lex_state = 51, .external_lex_state = 2}, - [528] = {.lex_state = 51, .external_lex_state = 2}, + [526] = {.lex_state = 51, .external_lex_state = 3}, + [527] = {.lex_state = 51, .external_lex_state = 3}, + [528] = {.lex_state = 51, .external_lex_state = 3}, [529] = {.lex_state = 51, .external_lex_state = 2}, - [530] = {.lex_state = 51, .external_lex_state = 2}, + [530] = {.lex_state = 51, .external_lex_state = 3}, [531] = {.lex_state = 51, .external_lex_state = 2}, - [532] = {.lex_state = 51, .external_lex_state = 2}, - [533] = {.lex_state = 51, .external_lex_state = 2}, - [534] = {.lex_state = 51, .external_lex_state = 3}, - [535] = {.lex_state = 51, .external_lex_state = 2}, - [536] = {.lex_state = 51, .external_lex_state = 2}, - [537] = {.lex_state = 51, .external_lex_state = 2}, - [538] = {.lex_state = 51, .external_lex_state = 2}, - [539] = {.lex_state = 51, .external_lex_state = 2}, + [532] = {.lex_state = 51, .external_lex_state = 3}, + [533] = {.lex_state = 51, .external_lex_state = 3}, + [534] = {.lex_state = 51, .external_lex_state = 2}, + [535] = {.lex_state = 51, .external_lex_state = 3}, + [536] = {.lex_state = 51, .external_lex_state = 3}, + [537] = {.lex_state = 51, .external_lex_state = 3}, + [538] = {.lex_state = 51, .external_lex_state = 3}, + [539] = {.lex_state = 51, .external_lex_state = 3}, [540] = {.lex_state = 51, .external_lex_state = 3}, - [541] = {.lex_state = 51, .external_lex_state = 2}, - [542] = {.lex_state = 51, .external_lex_state = 2}, - [543] = {.lex_state = 51, .external_lex_state = 2}, + [541] = {.lex_state = 51, .external_lex_state = 3}, + [542] = {.lex_state = 51, .external_lex_state = 3}, + [543] = {.lex_state = 51, .external_lex_state = 3}, [544] = {.lex_state = 51, .external_lex_state = 3}, [545] = {.lex_state = 51, .external_lex_state = 3}, [546] = {.lex_state = 51, .external_lex_state = 3}, - [547] = {.lex_state = 51, .external_lex_state = 2}, - [548] = {.lex_state = 51, .external_lex_state = 2}, + [547] = {.lex_state = 51, .external_lex_state = 3}, + [548] = {.lex_state = 51, .external_lex_state = 3}, [549] = {.lex_state = 51, .external_lex_state = 3}, - [550] = {.lex_state = 51, .external_lex_state = 2}, + [550] = {.lex_state = 51, .external_lex_state = 3}, [551] = {.lex_state = 51, .external_lex_state = 3}, [552] = {.lex_state = 51, .external_lex_state = 3}, - [553] = {.lex_state = 51, .external_lex_state = 2}, + [553] = {.lex_state = 51, .external_lex_state = 3}, [554] = {.lex_state = 51, .external_lex_state = 3}, - [555] = {.lex_state = 51, .external_lex_state = 2}, + [555] = {.lex_state = 51, .external_lex_state = 3}, [556] = {.lex_state = 51, .external_lex_state = 3}, - [557] = {.lex_state = 51, .external_lex_state = 2}, - [558] = {.lex_state = 51, .external_lex_state = 2}, + [557] = {.lex_state = 51, .external_lex_state = 3}, + [558] = {.lex_state = 51, .external_lex_state = 3}, [559] = {.lex_state = 51, .external_lex_state = 3}, [560] = {.lex_state = 51, .external_lex_state = 3}, [561] = {.lex_state = 51, .external_lex_state = 3}, [562] = {.lex_state = 51, .external_lex_state = 3}, [563] = {.lex_state = 51, .external_lex_state = 3}, - [564] = {.lex_state = 51, .external_lex_state = 2}, - [565] = {.lex_state = 51, .external_lex_state = 3}, - [566] = {.lex_state = 51, .external_lex_state = 2}, + [564] = {.lex_state = 51, .external_lex_state = 3}, + [565] = {.lex_state = 51, .external_lex_state = 2}, + [566] = {.lex_state = 51, .external_lex_state = 3}, [567] = {.lex_state = 51, .external_lex_state = 3}, [568] = {.lex_state = 51, .external_lex_state = 3}, - [569] = {.lex_state = 51, .external_lex_state = 3}, + [569] = {.lex_state = 51, .external_lex_state = 2}, [570] = {.lex_state = 51, .external_lex_state = 3}, - [571] = {.lex_state = 51, .external_lex_state = 3}, - [572] = {.lex_state = 51, .external_lex_state = 3}, + [571] = {.lex_state = 51, .external_lex_state = 2}, + [572] = {.lex_state = 51, .external_lex_state = 2}, [573] = {.lex_state = 51, .external_lex_state = 3}, [574] = {.lex_state = 51, .external_lex_state = 3}, - [575] = {.lex_state = 51, .external_lex_state = 3}, - [576] = {.lex_state = 51, .external_lex_state = 3}, - [577] = {.lex_state = 51, .external_lex_state = 3}, - [578] = {.lex_state = 51, .external_lex_state = 3}, - [579] = {.lex_state = 51, .external_lex_state = 3}, - [580] = {.lex_state = 51, .external_lex_state = 3}, - [581] = {.lex_state = 51, .external_lex_state = 3}, + [575] = {.lex_state = 51, .external_lex_state = 2}, + [576] = {.lex_state = 16, .external_lex_state = 6}, + [577] = {.lex_state = 51, .external_lex_state = 2}, + [578] = {.lex_state = 51, .external_lex_state = 2}, + [579] = {.lex_state = 51, .external_lex_state = 2}, + [580] = {.lex_state = 51, .external_lex_state = 2}, + [581] = {.lex_state = 51, .external_lex_state = 2}, [582] = {.lex_state = 51, .external_lex_state = 2}, - [583] = {.lex_state = 51, .external_lex_state = 3}, - [584] = {.lex_state = 51, .external_lex_state = 3}, - [585] = {.lex_state = 51, .external_lex_state = 3}, - [586] = {.lex_state = 51, .external_lex_state = 3}, - [587] = {.lex_state = 51, .external_lex_state = 3}, - [588] = {.lex_state = 51, .external_lex_state = 3}, + [583] = {.lex_state = 51, .external_lex_state = 2}, + [584] = {.lex_state = 51, .external_lex_state = 2}, + [585] = {.lex_state = 51, .external_lex_state = 2}, + [586] = {.lex_state = 51, .external_lex_state = 2}, + [587] = {.lex_state = 51, .external_lex_state = 2}, + [588] = {.lex_state = 51, .external_lex_state = 2}, [589] = {.lex_state = 51, .external_lex_state = 2}, - [590] = {.lex_state = 51, .external_lex_state = 3}, - [591] = {.lex_state = 51, .external_lex_state = 3}, - [592] = {.lex_state = 51, .external_lex_state = 3}, + [590] = {.lex_state = 51, .external_lex_state = 2}, + [591] = {.lex_state = 51, .external_lex_state = 2}, + [592] = {.lex_state = 51, .external_lex_state = 2}, [593] = {.lex_state = 51, .external_lex_state = 2}, - [594] = {.lex_state = 51, .external_lex_state = 2}, - [595] = {.lex_state = 51, .external_lex_state = 3}, - [596] = {.lex_state = 51, .external_lex_state = 3}, - [597] = {.lex_state = 51, .external_lex_state = 3}, - [598] = {.lex_state = 51, .external_lex_state = 3}, - [599] = {.lex_state = 51, .external_lex_state = 3}, + [594] = {.lex_state = 16, .external_lex_state = 6}, + [595] = {.lex_state = 51, .external_lex_state = 2}, + [596] = {.lex_state = 51, .external_lex_state = 2}, + [597] = {.lex_state = 51, .external_lex_state = 2}, + [598] = {.lex_state = 51, .external_lex_state = 2}, + [599] = {.lex_state = 51, .external_lex_state = 2}, [600] = {.lex_state = 51, .external_lex_state = 2}, [601] = {.lex_state = 51, .external_lex_state = 2}, - [602] = {.lex_state = 51, .external_lex_state = 3}, - [603] = {.lex_state = 51, .external_lex_state = 3}, + [602] = {.lex_state = 51, .external_lex_state = 2}, + [603] = {.lex_state = 51, .external_lex_state = 2}, [604] = {.lex_state = 51, .external_lex_state = 2}, [605] = {.lex_state = 51, .external_lex_state = 2}, [606] = {.lex_state = 51, .external_lex_state = 2}, @@ -7082,7 +7088,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [611] = {.lex_state = 51, .external_lex_state = 2}, [612] = {.lex_state = 51, .external_lex_state = 2}, [613] = {.lex_state = 51, .external_lex_state = 2}, - [614] = {.lex_state = 16, .external_lex_state = 6}, + [614] = {.lex_state = 51, .external_lex_state = 2}, [615] = {.lex_state = 51, .external_lex_state = 2}, [616] = {.lex_state = 51, .external_lex_state = 3}, [617] = {.lex_state = 16}, @@ -7098,8 +7104,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [627] = {.lex_state = 16, .external_lex_state = 8}, [628] = {.lex_state = 51, .external_lex_state = 2}, [629] = {.lex_state = 51, .external_lex_state = 2}, - [630] = {.lex_state = 51, .external_lex_state = 2}, - [631] = {.lex_state = 51, .external_lex_state = 2}, + [630] = {.lex_state = 16, .external_lex_state = 9}, + [631] = {.lex_state = 16, .external_lex_state = 8}, [632] = {.lex_state = 51, .external_lex_state = 2}, [633] = {.lex_state = 51, .external_lex_state = 2}, [634] = {.lex_state = 51, .external_lex_state = 2}, @@ -7143,8 +7149,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [672] = {.lex_state = 51, .external_lex_state = 2}, [673] = {.lex_state = 51, .external_lex_state = 2}, [674] = {.lex_state = 51, .external_lex_state = 2}, - [675] = {.lex_state = 51, .external_lex_state = 2}, - [676] = {.lex_state = 51, .external_lex_state = 2}, + [675] = {.lex_state = 16, .external_lex_state = 9}, + [676] = {.lex_state = 16, .external_lex_state = 8}, [677] = {.lex_state = 51, .external_lex_state = 2}, [678] = {.lex_state = 51, .external_lex_state = 2}, [679] = {.lex_state = 51, .external_lex_state = 2}, @@ -7153,30 +7159,30 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [682] = {.lex_state = 51, .external_lex_state = 2}, [683] = {.lex_state = 51, .external_lex_state = 2}, [684] = {.lex_state = 51, .external_lex_state = 2}, - [685] = {.lex_state = 16, .external_lex_state = 9}, + [685] = {.lex_state = 51, .external_lex_state = 2}, [686] = {.lex_state = 51, .external_lex_state = 2}, [687] = {.lex_state = 51, .external_lex_state = 2}, [688] = {.lex_state = 51, .external_lex_state = 2}, [689] = {.lex_state = 51, .external_lex_state = 2}, - [690] = {.lex_state = 16, .external_lex_state = 9}, + [690] = {.lex_state = 51, .external_lex_state = 2}, [691] = {.lex_state = 51, .external_lex_state = 2}, [692] = {.lex_state = 51, .external_lex_state = 2}, - [693] = {.lex_state = 16, .external_lex_state = 8}, - [694] = {.lex_state = 16, .external_lex_state = 9}, + [693] = {.lex_state = 51, .external_lex_state = 2}, + [694] = {.lex_state = 51, .external_lex_state = 2}, [695] = {.lex_state = 51, .external_lex_state = 2}, [696] = {.lex_state = 51, .external_lex_state = 2}, [697] = {.lex_state = 51, .external_lex_state = 2}, - [698] = {.lex_state = 16, .external_lex_state = 8}, + [698] = {.lex_state = 16, .external_lex_state = 9}, [699] = {.lex_state = 51, .external_lex_state = 2}, - [700] = {.lex_state = 16, .external_lex_state = 8}, - [701] = {.lex_state = 16, .external_lex_state = 8}, - [702] = {.lex_state = 16, .external_lex_state = 9}, - [703] = {.lex_state = 16, .external_lex_state = 9}, + [700] = {.lex_state = 16, .external_lex_state = 9}, + [701] = {.lex_state = 16, .external_lex_state = 9}, + [702] = {.lex_state = 16, .external_lex_state = 8}, + [703] = {.lex_state = 16, .external_lex_state = 8}, [704] = {.lex_state = 16}, [705] = {.lex_state = 16}, [706] = {.lex_state = 16}, - [707] = {.lex_state = 16}, - [708] = {.lex_state = 16}, + [707] = {.lex_state = 15}, + [708] = {.lex_state = 15}, [709] = {.lex_state = 16}, [710] = {.lex_state = 16}, [711] = {.lex_state = 16}, @@ -7204,8 +7210,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [733] = {.lex_state = 16}, [734] = {.lex_state = 16}, [735] = {.lex_state = 16}, - [736] = {.lex_state = 15}, - [737] = {.lex_state = 15}, + [736] = {.lex_state = 16}, + [737] = {.lex_state = 16}, [738] = {.lex_state = 16}, [739] = {.lex_state = 16}, [740] = {.lex_state = 16}, @@ -7213,83 +7219,83 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [742] = {.lex_state = 16}, [743] = {.lex_state = 16}, [744] = {.lex_state = 16}, - [745] = {.lex_state = 16}, + [745] = {.lex_state = 16, .external_lex_state = 8}, [746] = {.lex_state = 16}, [747] = {.lex_state = 16}, [748] = {.lex_state = 16}, - [749] = {.lex_state = 16, .external_lex_state = 9}, - [750] = {.lex_state = 16, .external_lex_state = 8}, + [749] = {.lex_state = 16}, + [750] = {.lex_state = 16}, [751] = {.lex_state = 16}, [752] = {.lex_state = 16}, - [753] = {.lex_state = 16, .external_lex_state = 9}, - [754] = {.lex_state = 16, .external_lex_state = 8}, + [753] = {.lex_state = 16}, + [754] = {.lex_state = 16}, [755] = {.lex_state = 16}, [756] = {.lex_state = 16}, - [757] = {.lex_state = 16}, + [757] = {.lex_state = 16, .external_lex_state = 9}, [758] = {.lex_state = 16}, [759] = {.lex_state = 16}, [760] = {.lex_state = 16}, [761] = {.lex_state = 16}, - [762] = {.lex_state = 16}, + [762] = {.lex_state = 16, .external_lex_state = 8}, [763] = {.lex_state = 16}, [764] = {.lex_state = 16}, [765] = {.lex_state = 16}, - [766] = {.lex_state = 16}, + [766] = {.lex_state = 16, .external_lex_state = 9}, [767] = {.lex_state = 16}, - [768] = {.lex_state = 15, .external_lex_state = 9}, - [769] = {.lex_state = 15, .external_lex_state = 8}, - [770] = {.lex_state = 16, .external_lex_state = 7}, - [771] = {.lex_state = 16, .external_lex_state = 10}, - [772] = {.lex_state = 16, .external_lex_state = 10}, - [773] = {.lex_state = 16, .external_lex_state = 6}, - [774] = {.lex_state = 16}, - [775] = {.lex_state = 16}, - [776] = {.lex_state = 16, .external_lex_state = 7}, - [777] = {.lex_state = 16, .external_lex_state = 10}, - [778] = {.lex_state = 16}, - [779] = {.lex_state = 16, .external_lex_state = 7}, - [780] = {.lex_state = 15}, - [781] = {.lex_state = 15, .external_lex_state = 9}, - [782] = {.lex_state = 15, .external_lex_state = 8}, - [783] = {.lex_state = 16}, - [784] = {.lex_state = 15, .external_lex_state = 9}, - [785] = {.lex_state = 15, .external_lex_state = 8}, + [768] = {.lex_state = 16}, + [769] = {.lex_state = 16}, + [770] = {.lex_state = 15}, + [771] = {.lex_state = 15, .external_lex_state = 9}, + [772] = {.lex_state = 15, .external_lex_state = 8}, + [773] = {.lex_state = 16}, + [774] = {.lex_state = 15, .external_lex_state = 9}, + [775] = {.lex_state = 15, .external_lex_state = 8}, + [776] = {.lex_state = 15, .external_lex_state = 9}, + [777] = {.lex_state = 15, .external_lex_state = 8}, + [778] = {.lex_state = 16, .external_lex_state = 7}, + [779] = {.lex_state = 16, .external_lex_state = 10}, + [780] = {.lex_state = 16, .external_lex_state = 6}, + [781] = {.lex_state = 16, .external_lex_state = 7}, + [782] = {.lex_state = 16, .external_lex_state = 10}, + [783] = {.lex_state = 16, .external_lex_state = 7}, + [784] = {.lex_state = 16, .external_lex_state = 10}, + [785] = {.lex_state = 16}, [786] = {.lex_state = 16}, [787] = {.lex_state = 16}, [788] = {.lex_state = 16, .external_lex_state = 6}, - [789] = {.lex_state = 16}, - [790] = {.lex_state = 16, .external_lex_state = 9}, - [791] = {.lex_state = 16, .external_lex_state = 8}, - [792] = {.lex_state = 16, .external_lex_state = 9}, - [793] = {.lex_state = 16, .external_lex_state = 8}, - [794] = {.lex_state = 16, .external_lex_state = 9}, - [795] = {.lex_state = 16, .external_lex_state = 8}, - [796] = {.lex_state = 16, .external_lex_state = 6}, - [797] = {.lex_state = 16, .external_lex_state = 6}, - [798] = {.lex_state = 16, .external_lex_state = 6}, + [789] = {.lex_state = 15}, + [790] = {.lex_state = 15}, + [791] = {.lex_state = 15}, + [792] = {.lex_state = 15}, + [793] = {.lex_state = 15}, + [794] = {.lex_state = 15}, + [795] = {.lex_state = 15}, + [796] = {.lex_state = 15}, + [797] = {.lex_state = 15}, + [798] = {.lex_state = 15}, [799] = {.lex_state = 16, .external_lex_state = 6}, [800] = {.lex_state = 16, .external_lex_state = 6}, [801] = {.lex_state = 16, .external_lex_state = 6}, [802] = {.lex_state = 16, .external_lex_state = 6}, [803] = {.lex_state = 16, .external_lex_state = 6}, - [804] = {.lex_state = 15}, - [805] = {.lex_state = 15}, + [804] = {.lex_state = 16, .external_lex_state = 6}, + [805] = {.lex_state = 16, .external_lex_state = 6}, [806] = {.lex_state = 16, .external_lex_state = 6}, [807] = {.lex_state = 16, .external_lex_state = 6}, [808] = {.lex_state = 16}, - [809] = {.lex_state = 15}, - [810] = {.lex_state = 15}, - [811] = {.lex_state = 15}, + [809] = {.lex_state = 16, .external_lex_state = 6}, + [810] = {.lex_state = 51, .external_lex_state = 2}, + [811] = {.lex_state = 16}, [812] = {.lex_state = 15}, - [813] = {.lex_state = 15}, - [814] = {.lex_state = 15}, - [815] = {.lex_state = 15}, - [816] = {.lex_state = 15}, - [817] = {.lex_state = 15}, + [813] = {.lex_state = 51, .external_lex_state = 2}, + [814] = {.lex_state = 16, .external_lex_state = 9}, + [815] = {.lex_state = 16, .external_lex_state = 8}, + [816] = {.lex_state = 16, .external_lex_state = 9}, + [817] = {.lex_state = 16, .external_lex_state = 8}, [818] = {.lex_state = 16, .external_lex_state = 6}, - [819] = {.lex_state = 16}, - [820] = {.lex_state = 16}, - [821] = {.lex_state = 16}, + [819] = {.lex_state = 15}, + [820] = {.lex_state = 16, .external_lex_state = 9}, + [821] = {.lex_state = 16, .external_lex_state = 8}, [822] = {.lex_state = 16}, [823] = {.lex_state = 16}, [824] = {.lex_state = 16}, @@ -7298,55 +7304,55 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [827] = {.lex_state = 16}, [828] = {.lex_state = 16}, [829] = {.lex_state = 16}, - [830] = {.lex_state = 15}, - [831] = {.lex_state = 16, .external_lex_state = 6}, - [832] = {.lex_state = 15}, + [830] = {.lex_state = 16}, + [831] = {.lex_state = 16}, + [832] = {.lex_state = 51, .external_lex_state = 2}, [833] = {.lex_state = 16}, - [834] = {.lex_state = 15, .external_lex_state = 8}, - [835] = {.lex_state = 16, .external_lex_state = 6}, - [836] = {.lex_state = 15}, + [834] = {.lex_state = 51, .external_lex_state = 2}, + [835] = {.lex_state = 16}, + [836] = {.lex_state = 16}, [837] = {.lex_state = 16}, - [838] = {.lex_state = 16}, + [838] = {.lex_state = 15, .external_lex_state = 9}, [839] = {.lex_state = 16}, - [840] = {.lex_state = 15, .external_lex_state = 8}, - [841] = {.lex_state = 51, .external_lex_state = 2}, - [842] = {.lex_state = 16}, - [843] = {.lex_state = 16, .external_lex_state = 7}, + [840] = {.lex_state = 16}, + [841] = {.lex_state = 16}, + [842] = {.lex_state = 15}, + [843] = {.lex_state = 16}, [844] = {.lex_state = 16}, [845] = {.lex_state = 16}, - [846] = {.lex_state = 15, .external_lex_state = 9}, - [847] = {.lex_state = 16, .external_lex_state = 10}, - [848] = {.lex_state = 15, .external_lex_state = 9}, - [849] = {.lex_state = 16}, - [850] = {.lex_state = 16}, - [851] = {.lex_state = 16}, - [852] = {.lex_state = 16, .external_lex_state = 7}, - [853] = {.lex_state = 16, .external_lex_state = 10}, + [846] = {.lex_state = 15, .external_lex_state = 8}, + [847] = {.lex_state = 16, .external_lex_state = 7}, + [848] = {.lex_state = 51, .external_lex_state = 2}, + [849] = {.lex_state = 51, .external_lex_state = 2}, + [850] = {.lex_state = 51, .external_lex_state = 2}, + [851] = {.lex_state = 51, .external_lex_state = 2}, + [852] = {.lex_state = 16, .external_lex_state = 10}, + [853] = {.lex_state = 15}, [854] = {.lex_state = 16}, [855] = {.lex_state = 16}, - [856] = {.lex_state = 16}, + [856] = {.lex_state = 16, .external_lex_state = 6}, [857] = {.lex_state = 16}, [858] = {.lex_state = 16}, - [859] = {.lex_state = 16}, - [860] = {.lex_state = 16}, + [859] = {.lex_state = 16, .external_lex_state = 7}, + [860] = {.lex_state = 51, .external_lex_state = 2}, [861] = {.lex_state = 51, .external_lex_state = 2}, - [862] = {.lex_state = 16}, + [862] = {.lex_state = 15, .external_lex_state = 8}, [863] = {.lex_state = 16}, [864] = {.lex_state = 16}, - [865] = {.lex_state = 16}, + [865] = {.lex_state = 15, .external_lex_state = 9}, [866] = {.lex_state = 16}, [867] = {.lex_state = 16}, [868] = {.lex_state = 16}, - [869] = {.lex_state = 51, .external_lex_state = 2}, - [870] = {.lex_state = 51, .external_lex_state = 2}, + [869] = {.lex_state = 16, .external_lex_state = 10}, + [870] = {.lex_state = 16}, [871] = {.lex_state = 16}, [872] = {.lex_state = 16}, - [873] = {.lex_state = 16, .external_lex_state = 6}, - [874] = {.lex_state = 15}, - [875] = {.lex_state = 15}, - [876] = {.lex_state = 15}, - [877] = {.lex_state = 16, .external_lex_state = 6}, - [878] = {.lex_state = 15}, + [873] = {.lex_state = 16}, + [874] = {.lex_state = 16}, + [875] = {.lex_state = 16}, + [876] = {.lex_state = 16}, + [877] = {.lex_state = 16}, + [878] = {.lex_state = 16, .external_lex_state = 6}, [879] = {.lex_state = 15}, [880] = {.lex_state = 15}, [881] = {.lex_state = 15}, @@ -7358,72 +7364,72 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [887] = {.lex_state = 15}, [888] = {.lex_state = 15}, [889] = {.lex_state = 15}, - [890] = {.lex_state = 15}, - [891] = {.lex_state = 15}, - [892] = {.lex_state = 16}, - [893] = {.lex_state = 16}, - [894] = {.lex_state = 15}, + [890] = {.lex_state = 16, .external_lex_state = 6}, + [891] = {.lex_state = 16, .external_lex_state = 6}, + [892] = {.lex_state = 51, .external_lex_state = 2}, + [893] = {.lex_state = 15}, + [894] = {.lex_state = 16, .external_lex_state = 6}, [895] = {.lex_state = 16, .external_lex_state = 6}, - [896] = {.lex_state = 51, .external_lex_state = 2}, - [897] = {.lex_state = 51, .external_lex_state = 2}, + [896] = {.lex_state = 16, .external_lex_state = 6}, + [897] = {.lex_state = 16, .external_lex_state = 6}, [898] = {.lex_state = 16, .external_lex_state = 6}, - [899] = {.lex_state = 15}, + [899] = {.lex_state = 16, .external_lex_state = 6}, [900] = {.lex_state = 16, .external_lex_state = 6}, [901] = {.lex_state = 15}, - [902] = {.lex_state = 15}, + [902] = {.lex_state = 16, .external_lex_state = 6}, [903] = {.lex_state = 16, .external_lex_state = 6}, [904] = {.lex_state = 16, .external_lex_state = 6}, [905] = {.lex_state = 16, .external_lex_state = 6}, - [906] = {.lex_state = 15}, + [906] = {.lex_state = 16, .external_lex_state = 6}, [907] = {.lex_state = 16}, [908] = {.lex_state = 16, .external_lex_state = 6}, - [909] = {.lex_state = 16, .external_lex_state = 6}, - [910] = {.lex_state = 16, .external_lex_state = 6}, - [911] = {.lex_state = 16, .external_lex_state = 6}, + [909] = {.lex_state = 16}, + [910] = {.lex_state = 15}, + [911] = {.lex_state = 16}, [912] = {.lex_state = 15}, - [913] = {.lex_state = 16}, + [913] = {.lex_state = 15}, [914] = {.lex_state = 16}, [915] = {.lex_state = 16, .external_lex_state = 6}, [916] = {.lex_state = 16, .external_lex_state = 6}, [917] = {.lex_state = 16}, - [918] = {.lex_state = 15}, - [919] = {.lex_state = 16, .external_lex_state = 6}, + [918] = {.lex_state = 16, .external_lex_state = 6}, + [919] = {.lex_state = 15}, [920] = {.lex_state = 16, .external_lex_state = 6}, [921] = {.lex_state = 16, .external_lex_state = 6}, [922] = {.lex_state = 16, .external_lex_state = 6}, [923] = {.lex_state = 16, .external_lex_state = 6}, - [924] = {.lex_state = 16}, - [925] = {.lex_state = 15}, + [924] = {.lex_state = 16, .external_lex_state = 6}, + [925] = {.lex_state = 16, .external_lex_state = 6}, [926] = {.lex_state = 16, .external_lex_state = 6}, - [927] = {.lex_state = 16, .external_lex_state = 6}, - [928] = {.lex_state = 16, .external_lex_state = 6}, - [929] = {.lex_state = 16, .external_lex_state = 6}, + [927] = {.lex_state = 15}, + [928] = {.lex_state = 15}, + [929] = {.lex_state = 15}, [930] = {.lex_state = 16, .external_lex_state = 6}, [931] = {.lex_state = 51, .external_lex_state = 2}, - [932] = {.lex_state = 16, .external_lex_state = 6}, + [932] = {.lex_state = 51, .external_lex_state = 2}, [933] = {.lex_state = 15}, - [934] = {.lex_state = 51, .external_lex_state = 2}, + [934] = {.lex_state = 15}, [935] = {.lex_state = 51, .external_lex_state = 2}, [936] = {.lex_state = 16, .external_lex_state = 6}, - [937] = {.lex_state = 15}, - [938] = {.lex_state = 15}, - [939] = {.lex_state = 51, .external_lex_state = 2}, + [937] = {.lex_state = 16, .external_lex_state = 6}, + [938] = {.lex_state = 16, .external_lex_state = 6}, + [939] = {.lex_state = 15}, [940] = {.lex_state = 15}, [941] = {.lex_state = 16, .external_lex_state = 6}, - [942] = {.lex_state = 16, .external_lex_state = 6}, + [942] = {.lex_state = 15}, [943] = {.lex_state = 16, .external_lex_state = 6}, - [944] = {.lex_state = 15}, - [945] = {.lex_state = 16, .external_lex_state = 6}, + [944] = {.lex_state = 16, .external_lex_state = 6}, + [945] = {.lex_state = 15}, [946] = {.lex_state = 15}, [947] = {.lex_state = 16, .external_lex_state = 6}, [948] = {.lex_state = 15}, - [949] = {.lex_state = 15}, - [950] = {.lex_state = 16, .external_lex_state = 6}, - [951] = {.lex_state = 16, .external_lex_state = 6}, - [952] = {.lex_state = 16}, - [953] = {.lex_state = 16}, + [949] = {.lex_state = 16}, + [950] = {.lex_state = 15}, + [951] = {.lex_state = 15}, + [952] = {.lex_state = 15}, + [953] = {.lex_state = 15}, [954] = {.lex_state = 16}, - [955] = {.lex_state = 16}, + [955] = {.lex_state = 15}, [956] = {.lex_state = 16}, [957] = {.lex_state = 16}, [958] = {.lex_state = 16}, @@ -7449,13 +7455,13 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [978] = {.lex_state = 16}, [979] = {.lex_state = 16}, [980] = {.lex_state = 16}, - [981] = {.lex_state = 51, .external_lex_state = 2}, - [982] = {.lex_state = 51, .external_lex_state = 2}, - [983] = {.lex_state = 51, .external_lex_state = 2}, + [981] = {.lex_state = 16}, + [982] = {.lex_state = 16}, + [983] = {.lex_state = 16}, [984] = {.lex_state = 16}, [985] = {.lex_state = 16}, [986] = {.lex_state = 16}, - [987] = {.lex_state = 51, .external_lex_state = 2}, + [987] = {.lex_state = 16}, [988] = {.lex_state = 16}, [989] = {.lex_state = 16}, [990] = {.lex_state = 16}, @@ -7464,67 +7470,67 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [993] = {.lex_state = 51, .external_lex_state = 2}, [994] = {.lex_state = 51, .external_lex_state = 2}, [995] = {.lex_state = 51, .external_lex_state = 2}, - [996] = {.lex_state = 0}, - [997] = {.lex_state = 51}, + [996] = {.lex_state = 51}, + [997] = {.lex_state = 0}, [998] = {.lex_state = 0}, [999] = {.lex_state = 51}, - [1000] = {.lex_state = 51}, - [1001] = {.lex_state = 0, .external_lex_state = 6}, - [1002] = {.lex_state = 51}, - [1003] = {.lex_state = 14}, + [1000] = {.lex_state = 51, .external_lex_state = 2}, + [1001] = {.lex_state = 51}, + [1002] = {.lex_state = 51, .external_lex_state = 2}, + [1003] = {.lex_state = 51, .external_lex_state = 2}, [1004] = {.lex_state = 14}, [1005] = {.lex_state = 51}, - [1006] = {.lex_state = 51, .external_lex_state = 2}, - [1007] = {.lex_state = 51, .external_lex_state = 2}, + [1006] = {.lex_state = 16}, + [1007] = {.lex_state = 0, .external_lex_state = 6}, [1008] = {.lex_state = 0, .external_lex_state = 6}, [1009] = {.lex_state = 51}, - [1010] = {.lex_state = 51, .external_lex_state = 2}, + [1010] = {.lex_state = 51}, [1011] = {.lex_state = 16}, [1012] = {.lex_state = 51}, - [1013] = {.lex_state = 16}, + [1013] = {.lex_state = 14}, [1014] = {.lex_state = 51}, [1015] = {.lex_state = 51}, - [1016] = {.lex_state = 51}, - [1017] = {.lex_state = 16}, + [1016] = {.lex_state = 16}, + [1017] = {.lex_state = 51}, [1018] = {.lex_state = 51}, [1019] = {.lex_state = 51}, [1020] = {.lex_state = 51}, [1021] = {.lex_state = 51}, [1022] = {.lex_state = 51}, - [1023] = {.lex_state = 51}, + [1023] = {.lex_state = 51, .external_lex_state = 2}, [1024] = {.lex_state = 51}, [1025] = {.lex_state = 51}, [1026] = {.lex_state = 51}, [1027] = {.lex_state = 51}, - [1028] = {.lex_state = 0}, - [1029] = {.lex_state = 51, .external_lex_state = 2}, + [1028] = {.lex_state = 51}, + [1029] = {.lex_state = 0}, [1030] = {.lex_state = 51}, - [1031] = {.lex_state = 0}, + [1031] = {.lex_state = 51}, [1032] = {.lex_state = 51}, [1033] = {.lex_state = 0}, - [1034] = {.lex_state = 51}, + [1034] = {.lex_state = 0}, [1035] = {.lex_state = 0}, [1036] = {.lex_state = 0}, [1037] = {.lex_state = 51}, [1038] = {.lex_state = 51}, [1039] = {.lex_state = 16}, [1040] = {.lex_state = 18, .external_lex_state = 11}, - [1041] = {.lex_state = 51}, - [1042] = {.lex_state = 16}, - [1043] = {.lex_state = 51, .external_lex_state = 8}, + [1041] = {.lex_state = 18, .external_lex_state = 11}, + [1042] = {.lex_state = 18, .external_lex_state = 11}, + [1043] = {.lex_state = 16}, [1044] = {.lex_state = 18, .external_lex_state = 11}, [1045] = {.lex_state = 18, .external_lex_state = 11}, [1046] = {.lex_state = 18, .external_lex_state = 11}, - [1047] = {.lex_state = 51}, - [1048] = {.lex_state = 0}, - [1049] = {.lex_state = 18, .external_lex_state = 11}, + [1047] = {.lex_state = 18, .external_lex_state = 11}, + [1048] = {.lex_state = 18, .external_lex_state = 11}, + [1049] = {.lex_state = 0}, [1050] = {.lex_state = 18, .external_lex_state = 11}, - [1051] = {.lex_state = 18, .external_lex_state = 11}, - [1052] = {.lex_state = 18, .external_lex_state = 11}, - [1053] = {.lex_state = 16}, - [1054] = {.lex_state = 18, .external_lex_state = 11}, - [1055] = {.lex_state = 18, .external_lex_state = 11}, - [1056] = {.lex_state = 18, .external_lex_state = 11}, + [1051] = {.lex_state = 51}, + [1052] = {.lex_state = 16}, + [1053] = {.lex_state = 18, .external_lex_state = 11}, + [1054] = {.lex_state = 51}, + [1055] = {.lex_state = 16}, + [1056] = {.lex_state = 51, .external_lex_state = 9}, [1057] = {.lex_state = 18, .external_lex_state = 11}, [1058] = {.lex_state = 18, .external_lex_state = 11}, [1059] = {.lex_state = 18, .external_lex_state = 11}, @@ -7532,394 +7538,394 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1061] = {.lex_state = 18, .external_lex_state = 11}, [1062] = {.lex_state = 18, .external_lex_state = 11}, [1063] = {.lex_state = 51}, - [1064] = {.lex_state = 16}, + [1064] = {.lex_state = 51}, [1065] = {.lex_state = 18, .external_lex_state = 11}, [1066] = {.lex_state = 18, .external_lex_state = 11}, - [1067] = {.lex_state = 51}, - [1068] = {.lex_state = 51, .external_lex_state = 9}, - [1069] = {.lex_state = 0}, + [1067] = {.lex_state = 51, .external_lex_state = 8}, + [1068] = {.lex_state = 18, .external_lex_state = 11}, + [1069] = {.lex_state = 51}, [1070] = {.lex_state = 0}, - [1071] = {.lex_state = 51}, + [1071] = {.lex_state = 0}, [1072] = {.lex_state = 0}, [1073] = {.lex_state = 0}, [1074] = {.lex_state = 0}, [1075] = {.lex_state = 0}, - [1076] = {.lex_state = 51}, + [1076] = {.lex_state = 0}, [1077] = {.lex_state = 0}, - [1078] = {.lex_state = 51}, + [1078] = {.lex_state = 0}, [1079] = {.lex_state = 51}, - [1080] = {.lex_state = 0}, + [1080] = {.lex_state = 51}, [1081] = {.lex_state = 51}, - [1082] = {.lex_state = 0}, + [1082] = {.lex_state = 51}, [1083] = {.lex_state = 0}, - [1084] = {.lex_state = 0}, - [1085] = {.lex_state = 51}, - [1086] = {.lex_state = 0}, + [1084] = {.lex_state = 51}, + [1085] = {.lex_state = 0}, + [1086] = {.lex_state = 51}, [1087] = {.lex_state = 0}, - [1088] = {.lex_state = 51}, - [1089] = {.lex_state = 51}, - [1090] = {.lex_state = 0}, + [1088] = {.lex_state = 0}, + [1089] = {.lex_state = 0}, + [1090] = {.lex_state = 51}, [1091] = {.lex_state = 0}, [1092] = {.lex_state = 0}, [1093] = {.lex_state = 0}, - [1094] = {.lex_state = 0}, + [1094] = {.lex_state = 51}, [1095] = {.lex_state = 0}, - [1096] = {.lex_state = 51}, - [1097] = {.lex_state = 0}, + [1096] = {.lex_state = 0}, + [1097] = {.lex_state = 14}, [1098] = {.lex_state = 0}, - [1099] = {.lex_state = 0}, - [1100] = {.lex_state = 0}, - [1101] = {.lex_state = 51}, - [1102] = {.lex_state = 51}, - [1103] = {.lex_state = 14}, + [1099] = {.lex_state = 51}, + [1100] = {.lex_state = 14}, + [1101] = {.lex_state = 0}, + [1102] = {.lex_state = 0}, + [1103] = {.lex_state = 0}, [1104] = {.lex_state = 0}, [1105] = {.lex_state = 51}, [1106] = {.lex_state = 0}, - [1107] = {.lex_state = 14}, - [1108] = {.lex_state = 0}, - [1109] = {.lex_state = 51}, - [1110] = {.lex_state = 51}, + [1107] = {.lex_state = 51}, + [1108] = {.lex_state = 51}, + [1109] = {.lex_state = 0}, + [1110] = {.lex_state = 0, .external_lex_state = 6}, [1111] = {.lex_state = 51}, - [1112] = {.lex_state = 0, .external_lex_state = 6}, - [1113] = {.lex_state = 0}, + [1112] = {.lex_state = 14}, + [1113] = {.lex_state = 51}, [1114] = {.lex_state = 51}, - [1115] = {.lex_state = 0, .external_lex_state = 6}, + [1115] = {.lex_state = 14}, [1116] = {.lex_state = 51}, - [1117] = {.lex_state = 51}, - [1118] = {.lex_state = 0, .external_lex_state = 6}, - [1119] = {.lex_state = 18, .external_lex_state = 11}, - [1120] = {.lex_state = 14}, - [1121] = {.lex_state = 0, .external_lex_state = 6}, - [1122] = {.lex_state = 0}, - [1123] = {.lex_state = 0, .external_lex_state = 6}, - [1124] = {.lex_state = 51}, + [1117] = {.lex_state = 0, .external_lex_state = 6}, + [1118] = {.lex_state = 51}, + [1119] = {.lex_state = 51}, + [1120] = {.lex_state = 51}, + [1121] = {.lex_state = 51}, + [1122] = {.lex_state = 51}, + [1123] = {.lex_state = 51}, + [1124] = {.lex_state = 0}, [1125] = {.lex_state = 51}, - [1126] = {.lex_state = 0, .external_lex_state = 6}, - [1127] = {.lex_state = 51}, - [1128] = {.lex_state = 51}, - [1129] = {.lex_state = 0, .external_lex_state = 6}, - [1130] = {.lex_state = 51}, - [1131] = {.lex_state = 14}, + [1126] = {.lex_state = 0}, + [1127] = {.lex_state = 0, .external_lex_state = 6}, + [1128] = {.lex_state = 14}, + [1129] = {.lex_state = 0}, + [1130] = {.lex_state = 14}, + [1131] = {.lex_state = 51}, [1132] = {.lex_state = 51}, [1133] = {.lex_state = 51}, [1134] = {.lex_state = 51}, - [1135] = {.lex_state = 0}, - [1136] = {.lex_state = 51}, + [1135] = {.lex_state = 51}, + [1136] = {.lex_state = 14}, [1137] = {.lex_state = 0, .external_lex_state = 6}, - [1138] = {.lex_state = 51}, - [1139] = {.lex_state = 0, .external_lex_state = 6}, - [1140] = {.lex_state = 51}, + [1138] = {.lex_state = 0}, + [1139] = {.lex_state = 51}, + [1140] = {.lex_state = 0, .external_lex_state = 6}, [1141] = {.lex_state = 51}, - [1142] = {.lex_state = 51}, - [1143] = {.lex_state = 51}, + [1142] = {.lex_state = 0, .external_lex_state = 6}, + [1143] = {.lex_state = 18, .external_lex_state = 11}, [1144] = {.lex_state = 51}, - [1145] = {.lex_state = 14}, - [1146] = {.lex_state = 0}, - [1147] = {.lex_state = 0, .external_lex_state = 6}, + [1145] = {.lex_state = 0, .external_lex_state = 6}, + [1146] = {.lex_state = 0, .external_lex_state = 6}, + [1147] = {.lex_state = 0}, [1148] = {.lex_state = 51}, - [1149] = {.lex_state = 18, .external_lex_state = 11}, + [1149] = {.lex_state = 51}, [1150] = {.lex_state = 51}, - [1151] = {.lex_state = 51}, - [1152] = {.lex_state = 14}, - [1153] = {.lex_state = 51}, + [1151] = {.lex_state = 0}, + [1152] = {.lex_state = 51}, + [1153] = {.lex_state = 0, .external_lex_state = 6}, [1154] = {.lex_state = 51}, [1155] = {.lex_state = 51}, [1156] = {.lex_state = 51}, [1157] = {.lex_state = 51}, - [1158] = {.lex_state = 51}, - [1159] = {.lex_state = 14}, - [1160] = {.lex_state = 16}, - [1161] = {.lex_state = 0, .external_lex_state = 6}, - [1162] = {.lex_state = 14}, - [1163] = {.lex_state = 51}, - [1164] = {.lex_state = 14}, + [1158] = {.lex_state = 14}, + [1159] = {.lex_state = 0}, + [1160] = {.lex_state = 14}, + [1161] = {.lex_state = 14}, + [1162] = {.lex_state = 0}, + [1163] = {.lex_state = 14}, + [1164] = {.lex_state = 51}, [1165] = {.lex_state = 14}, [1166] = {.lex_state = 51}, - [1167] = {.lex_state = 14}, + [1167] = {.lex_state = 51}, [1168] = {.lex_state = 14}, [1169] = {.lex_state = 14}, - [1170] = {.lex_state = 14}, + [1170] = {.lex_state = 18, .external_lex_state = 11}, [1171] = {.lex_state = 0}, - [1172] = {.lex_state = 0}, + [1172] = {.lex_state = 0, .external_lex_state = 6}, [1173] = {.lex_state = 0}, - [1174] = {.lex_state = 0}, - [1175] = {.lex_state = 0}, - [1176] = {.lex_state = 51}, - [1177] = {.lex_state = 51}, + [1174] = {.lex_state = 51}, + [1175] = {.lex_state = 51}, + [1176] = {.lex_state = 0, .external_lex_state = 6}, + [1177] = {.lex_state = 16}, [1178] = {.lex_state = 0}, [1179] = {.lex_state = 0}, [1180] = {.lex_state = 0}, [1181] = {.lex_state = 0, .external_lex_state = 6}, - [1182] = {.lex_state = 51}, + [1182] = {.lex_state = 0}, [1183] = {.lex_state = 0}, [1184] = {.lex_state = 0}, [1185] = {.lex_state = 0}, - [1186] = {.lex_state = 0}, - [1187] = {.lex_state = 0}, + [1186] = {.lex_state = 51}, + [1187] = {.lex_state = 51}, [1188] = {.lex_state = 51}, [1189] = {.lex_state = 51}, [1190] = {.lex_state = 51}, - [1191] = {.lex_state = 0, .external_lex_state = 6}, + [1191] = {.lex_state = 51}, [1192] = {.lex_state = 51}, - [1193] = {.lex_state = 51}, - [1194] = {.lex_state = 0}, - [1195] = {.lex_state = 0}, - [1196] = {.lex_state = 0}, - [1197] = {.lex_state = 51}, + [1193] = {.lex_state = 0}, + [1194] = {.lex_state = 51}, + [1195] = {.lex_state = 0, .external_lex_state = 6}, + [1196] = {.lex_state = 14}, + [1197] = {.lex_state = 0, .external_lex_state = 6}, [1198] = {.lex_state = 51}, [1199] = {.lex_state = 0}, [1200] = {.lex_state = 0}, - [1201] = {.lex_state = 51}, + [1201] = {.lex_state = 0}, [1202] = {.lex_state = 0}, [1203] = {.lex_state = 0}, - [1204] = {.lex_state = 0}, + [1204] = {.lex_state = 0, .external_lex_state = 6}, [1205] = {.lex_state = 0}, - [1206] = {.lex_state = 0}, - [1207] = {.lex_state = 0}, - [1208] = {.lex_state = 51}, - [1209] = {.lex_state = 51}, + [1206] = {.lex_state = 51}, + [1207] = {.lex_state = 0, .external_lex_state = 6}, + [1208] = {.lex_state = 0, .external_lex_state = 6}, + [1209] = {.lex_state = 16}, [1210] = {.lex_state = 0, .external_lex_state = 6}, - [1211] = {.lex_state = 0}, - [1212] = {.lex_state = 0}, - [1213] = {.lex_state = 16}, - [1214] = {.lex_state = 51}, - [1215] = {.lex_state = 0}, + [1211] = {.lex_state = 0, .external_lex_state = 6}, + [1212] = {.lex_state = 0, .external_lex_state = 6}, + [1213] = {.lex_state = 0}, + [1214] = {.lex_state = 14}, + [1215] = {.lex_state = 51}, [1216] = {.lex_state = 0}, [1217] = {.lex_state = 0}, [1218] = {.lex_state = 0}, - [1219] = {.lex_state = 0, .external_lex_state = 6}, - [1220] = {.lex_state = 0, .external_lex_state = 6}, - [1221] = {.lex_state = 14}, + [1219] = {.lex_state = 0}, + [1220] = {.lex_state = 0}, + [1221] = {.lex_state = 0}, [1222] = {.lex_state = 0}, - [1223] = {.lex_state = 0, .external_lex_state = 6}, + [1223] = {.lex_state = 51}, [1224] = {.lex_state = 0}, - [1225] = {.lex_state = 0, .external_lex_state = 6}, - [1226] = {.lex_state = 0}, - [1227] = {.lex_state = 0}, - [1228] = {.lex_state = 0}, + [1225] = {.lex_state = 0}, + [1226] = {.lex_state = 51}, + [1227] = {.lex_state = 51}, + [1228] = {.lex_state = 51}, [1229] = {.lex_state = 0}, - [1230] = {.lex_state = 0}, - [1231] = {.lex_state = 51}, + [1230] = {.lex_state = 51}, + [1231] = {.lex_state = 0}, [1232] = {.lex_state = 0}, - [1233] = {.lex_state = 51}, + [1233] = {.lex_state = 0, .external_lex_state = 6}, [1234] = {.lex_state = 0}, - [1235] = {.lex_state = 0, .external_lex_state = 6}, + [1235] = {.lex_state = 0}, [1236] = {.lex_state = 0}, - [1237] = {.lex_state = 14}, + [1237] = {.lex_state = 0}, [1238] = {.lex_state = 0}, - [1239] = {.lex_state = 0, .external_lex_state = 6}, - [1240] = {.lex_state = 51}, - [1241] = {.lex_state = 0, .external_lex_state = 6}, - [1242] = {.lex_state = 16, .external_lex_state = 6}, - [1243] = {.lex_state = 51}, - [1244] = {.lex_state = 51}, - [1245] = {.lex_state = 16, .external_lex_state = 6}, - [1246] = {.lex_state = 51}, - [1247] = {.lex_state = 0, .external_lex_state = 6}, - [1248] = {.lex_state = 18, .external_lex_state = 11}, + [1239] = {.lex_state = 0}, + [1240] = {.lex_state = 0}, + [1241] = {.lex_state = 0}, + [1242] = {.lex_state = 0}, + [1243] = {.lex_state = 0}, + [1244] = {.lex_state = 18, .external_lex_state = 11}, + [1245] = {.lex_state = 18, .external_lex_state = 11}, + [1246] = {.lex_state = 16, .external_lex_state = 6}, + [1247] = {.lex_state = 51}, + [1248] = {.lex_state = 0}, [1249] = {.lex_state = 51}, - [1250] = {.lex_state = 51}, - [1251] = {.lex_state = 16}, - [1252] = {.lex_state = 18, .external_lex_state = 11}, + [1250] = {.lex_state = 18, .external_lex_state = 11}, + [1251] = {.lex_state = 16, .external_lex_state = 6}, + [1252] = {.lex_state = 16}, [1253] = {.lex_state = 51}, [1254] = {.lex_state = 51}, - [1255] = {.lex_state = 0, .external_lex_state = 6}, + [1255] = {.lex_state = 0}, [1256] = {.lex_state = 16}, - [1257] = {.lex_state = 0}, - [1258] = {.lex_state = 0}, - [1259] = {.lex_state = 18, .external_lex_state = 11}, - [1260] = {.lex_state = 18, .external_lex_state = 11}, + [1257] = {.lex_state = 51}, + [1258] = {.lex_state = 18, .external_lex_state = 11}, + [1259] = {.lex_state = 51}, + [1260] = {.lex_state = 51}, [1261] = {.lex_state = 51}, - [1262] = {.lex_state = 16, .external_lex_state = 6}, - [1263] = {.lex_state = 51}, + [1262] = {.lex_state = 51}, + [1263] = {.lex_state = 0}, [1264] = {.lex_state = 51}, [1265] = {.lex_state = 51}, - [1266] = {.lex_state = 51}, - [1267] = {.lex_state = 51}, - [1268] = {.lex_state = 0}, - [1269] = {.lex_state = 16}, - [1270] = {.lex_state = 14}, - [1271] = {.lex_state = 0, .external_lex_state = 6}, - [1272] = {.lex_state = 14}, - [1273] = {.lex_state = 51}, + [1266] = {.lex_state = 0, .external_lex_state = 6}, + [1267] = {.lex_state = 16, .external_lex_state = 6}, + [1268] = {.lex_state = 0, .external_lex_state = 6}, + [1269] = {.lex_state = 51}, + [1270] = {.lex_state = 0, .external_lex_state = 6}, + [1271] = {.lex_state = 51}, + [1272] = {.lex_state = 51}, + [1273] = {.lex_state = 14}, [1274] = {.lex_state = 14}, - [1275] = {.lex_state = 18, .external_lex_state = 11}, - [1276] = {.lex_state = 51}, - [1277] = {.lex_state = 51}, - [1278] = {.lex_state = 0, .external_lex_state = 6}, + [1275] = {.lex_state = 51}, + [1276] = {.lex_state = 0, .external_lex_state = 6}, + [1277] = {.lex_state = 18, .external_lex_state = 11}, + [1278] = {.lex_state = 51}, [1279] = {.lex_state = 51}, - [1280] = {.lex_state = 51}, - [1281] = {.lex_state = 18, .external_lex_state = 11}, + [1280] = {.lex_state = 18, .external_lex_state = 11}, + [1281] = {.lex_state = 14}, [1282] = {.lex_state = 51}, - [1283] = {.lex_state = 0}, - [1284] = {.lex_state = 0, .external_lex_state = 6}, - [1285] = {.lex_state = 51}, - [1286] = {.lex_state = 0, .external_lex_state = 6}, - [1287] = {.lex_state = 10}, - [1288] = {.lex_state = 0, .external_lex_state = 6}, - [1289] = {.lex_state = 14}, - [1290] = {.lex_state = 0, .external_lex_state = 6}, - [1291] = {.lex_state = 51}, - [1292] = {.lex_state = 0}, - [1293] = {.lex_state = 16, .external_lex_state = 6}, + [1283] = {.lex_state = 16}, + [1284] = {.lex_state = 51}, + [1285] = {.lex_state = 0}, + [1286] = {.lex_state = 14}, + [1287] = {.lex_state = 0, .external_lex_state = 6}, + [1288] = {.lex_state = 10}, + [1289] = {.lex_state = 0}, + [1290] = {.lex_state = 16, .external_lex_state = 6}, + [1291] = {.lex_state = 0, .external_lex_state = 6}, + [1292] = {.lex_state = 0, .external_lex_state = 6}, + [1293] = {.lex_state = 14}, [1294] = {.lex_state = 0}, - [1295] = {.lex_state = 0, .external_lex_state = 6}, - [1296] = {.lex_state = 14}, - [1297] = {.lex_state = 0}, - [1298] = {.lex_state = 0}, + [1295] = {.lex_state = 51}, + [1296] = {.lex_state = 0, .external_lex_state = 6}, + [1297] = {.lex_state = 0, .external_lex_state = 6}, + [1298] = {.lex_state = 0, .external_lex_state = 6}, [1299] = {.lex_state = 0, .external_lex_state = 6}, [1300] = {.lex_state = 0, .external_lex_state = 6}, - [1301] = {.lex_state = 14}, - [1302] = {.lex_state = 0, .external_lex_state = 6}, + [1301] = {.lex_state = 51}, + [1302] = {.lex_state = 0}, [1303] = {.lex_state = 0}, [1304] = {.lex_state = 0, .external_lex_state = 6}, [1305] = {.lex_state = 10}, [1306] = {.lex_state = 0}, - [1307] = {.lex_state = 51}, + [1307] = {.lex_state = 0}, [1308] = {.lex_state = 0}, - [1309] = {.lex_state = 0}, - [1310] = {.lex_state = 0}, + [1309] = {.lex_state = 51}, + [1310] = {.lex_state = 51}, [1311] = {.lex_state = 0}, - [1312] = {.lex_state = 51}, - [1313] = {.lex_state = 0, .external_lex_state = 6}, - [1314] = {.lex_state = 51}, - [1315] = {.lex_state = 10}, - [1316] = {.lex_state = 0, .external_lex_state = 6}, - [1317] = {.lex_state = 0}, + [1312] = {.lex_state = 0}, + [1313] = {.lex_state = 0}, + [1314] = {.lex_state = 0, .external_lex_state = 6}, + [1315] = {.lex_state = 14}, + [1316] = {.lex_state = 0}, + [1317] = {.lex_state = 10}, [1318] = {.lex_state = 0}, - [1319] = {.lex_state = 0, .external_lex_state = 6}, - [1320] = {.lex_state = 0}, - [1321] = {.lex_state = 0}, - [1322] = {.lex_state = 0, .external_lex_state = 6}, - [1323] = {.lex_state = 0, .external_lex_state = 6}, - [1324] = {.lex_state = 0}, - [1325] = {.lex_state = 51}, + [1319] = {.lex_state = 0}, + [1320] = {.lex_state = 0, .external_lex_state = 6}, + [1321] = {.lex_state = 0, .external_lex_state = 6}, + [1322] = {.lex_state = 0}, + [1323] = {.lex_state = 51}, + [1324] = {.lex_state = 0, .external_lex_state = 6}, + [1325] = {.lex_state = 0, .external_lex_state = 6}, [1326] = {.lex_state = 0, .external_lex_state = 6}, [1327] = {.lex_state = 0, .external_lex_state = 6}, [1328] = {.lex_state = 0, .external_lex_state = 6}, [1329] = {.lex_state = 0, .external_lex_state = 6}, - [1330] = {.lex_state = 14}, - [1331] = {.lex_state = 51}, - [1332] = {.lex_state = 0, .external_lex_state = 6}, - [1333] = {.lex_state = 51}, + [1330] = {.lex_state = 0}, + [1331] = {.lex_state = 0}, + [1332] = {.lex_state = 0}, + [1333] = {.lex_state = 0}, [1334] = {.lex_state = 0}, [1335] = {.lex_state = 0, .external_lex_state = 6}, - [1336] = {.lex_state = 0, .external_lex_state = 6}, - [1337] = {.lex_state = 0}, + [1336] = {.lex_state = 51}, + [1337] = {.lex_state = 14}, [1338] = {.lex_state = 0}, - [1339] = {.lex_state = 0, .external_lex_state = 6}, + [1339] = {.lex_state = 0}, [1340] = {.lex_state = 0}, [1341] = {.lex_state = 0}, - [1342] = {.lex_state = 0}, - [1343] = {.lex_state = 16}, - [1344] = {.lex_state = 0}, - [1345] = {.lex_state = 0, .external_lex_state = 6}, + [1342] = {.lex_state = 0, .external_lex_state = 6}, + [1343] = {.lex_state = 0, .external_lex_state = 6}, + [1344] = {.lex_state = 0, .external_lex_state = 6}, + [1345] = {.lex_state = 51}, [1346] = {.lex_state = 0, .external_lex_state = 6}, - [1347] = {.lex_state = 0}, - [1348] = {.lex_state = 51}, - [1349] = {.lex_state = 0}, - [1350] = {.lex_state = 51}, - [1351] = {.lex_state = 0, .external_lex_state = 6}, - [1352] = {.lex_state = 16}, + [1347] = {.lex_state = 51, .external_lex_state = 9}, + [1348] = {.lex_state = 51, .external_lex_state = 8}, + [1349] = {.lex_state = 0, .external_lex_state = 6}, + [1350] = {.lex_state = 0, .external_lex_state = 6}, + [1351] = {.lex_state = 0}, + [1352] = {.lex_state = 0}, [1353] = {.lex_state = 0}, [1354] = {.lex_state = 0}, - [1355] = {.lex_state = 0}, - [1356] = {.lex_state = 14}, - [1357] = {.lex_state = 0}, - [1358] = {.lex_state = 51}, + [1355] = {.lex_state = 51}, + [1356] = {.lex_state = 51}, + [1357] = {.lex_state = 0, .external_lex_state = 6}, + [1358] = {.lex_state = 0}, [1359] = {.lex_state = 51}, - [1360] = {.lex_state = 0}, - [1361] = {.lex_state = 0}, - [1362] = {.lex_state = 0}, - [1363] = {.lex_state = 51}, - [1364] = {.lex_state = 51}, - [1365] = {.lex_state = 0}, - [1366] = {.lex_state = 0, .external_lex_state = 6}, - [1367] = {.lex_state = 0}, - [1368] = {.lex_state = 0, .external_lex_state = 6}, - [1369] = {.lex_state = 51, .external_lex_state = 9}, - [1370] = {.lex_state = 51}, + [1360] = {.lex_state = 14}, + [1361] = {.lex_state = 51}, + [1362] = {.lex_state = 0, .external_lex_state = 6}, + [1363] = {.lex_state = 0, .external_lex_state = 6}, + [1364] = {.lex_state = 0}, + [1365] = {.lex_state = 0, .external_lex_state = 6}, + [1366] = {.lex_state = 0}, + [1367] = {.lex_state = 0, .external_lex_state = 6}, + [1368] = {.lex_state = 0}, + [1369] = {.lex_state = 0}, + [1370] = {.lex_state = 0}, [1371] = {.lex_state = 51}, - [1372] = {.lex_state = 0, .external_lex_state = 6}, - [1373] = {.lex_state = 51, .external_lex_state = 8}, + [1372] = {.lex_state = 0}, + [1373] = {.lex_state = 0}, [1374] = {.lex_state = 0}, [1375] = {.lex_state = 0}, - [1376] = {.lex_state = 51}, + [1376] = {.lex_state = 0}, [1377] = {.lex_state = 51}, [1378] = {.lex_state = 51}, [1379] = {.lex_state = 0}, - [1380] = {.lex_state = 0, .external_lex_state = 6}, - [1381] = {.lex_state = 0}, + [1380] = {.lex_state = 0}, + [1381] = {.lex_state = 51}, [1382] = {.lex_state = 51}, [1383] = {.lex_state = 51}, - [1384] = {.lex_state = 0}, - [1385] = {.lex_state = 0}, - [1386] = {.lex_state = 51}, - [1387] = {.lex_state = 0}, + [1384] = {.lex_state = 16}, + [1385] = {.lex_state = 0, .external_lex_state = 6}, + [1386] = {.lex_state = 0, .external_lex_state = 6}, + [1387] = {.lex_state = 51}, [1388] = {.lex_state = 0, .external_lex_state = 6}, - [1389] = {.lex_state = 0}, - [1390] = {.lex_state = 0, .external_lex_state = 6}, - [1391] = {.lex_state = 0}, - [1392] = {.lex_state = 0, .external_lex_state = 6}, - [1393] = {.lex_state = 0, .external_lex_state = 6}, - [1394] = {.lex_state = 0, .external_lex_state = 6}, - [1395] = {.lex_state = 51}, - [1396] = {.lex_state = 0}, - [1397] = {.lex_state = 0}, - [1398] = {.lex_state = 0}, + [1389] = {.lex_state = 0, .external_lex_state = 6}, + [1390] = {.lex_state = 0}, + [1391] = {.lex_state = 51}, + [1392] = {.lex_state = 16}, + [1393] = {.lex_state = 51}, + [1394] = {.lex_state = 0}, + [1395] = {.lex_state = 0}, + [1396] = {.lex_state = 0, .external_lex_state = 6}, + [1397] = {.lex_state = 51}, + [1398] = {.lex_state = 51}, [1399] = {.lex_state = 0, .external_lex_state = 6}, [1400] = {.lex_state = 51}, [1401] = {.lex_state = 0, .external_lex_state = 6}, - [1402] = {.lex_state = 0, .external_lex_state = 6}, + [1402] = {.lex_state = 0}, [1403] = {.lex_state = 0}, - [1404] = {.lex_state = 0, .external_lex_state = 6}, - [1405] = {.lex_state = 0}, - [1406] = {.lex_state = 51}, - [1407] = {.lex_state = 51}, - [1408] = {.lex_state = 51}, - [1409] = {.lex_state = 0}, - [1410] = {.lex_state = 51}, - [1411] = {.lex_state = 0, .external_lex_state = 6}, + [1404] = {.lex_state = 0}, + [1405] = {.lex_state = 51}, + [1406] = {.lex_state = 0, .external_lex_state = 6}, + [1407] = {.lex_state = 0}, + [1408] = {.lex_state = 0}, + [1409] = {.lex_state = 0, .external_lex_state = 6}, + [1410] = {.lex_state = 14}, + [1411] = {.lex_state = 0}, [1412] = {.lex_state = 0}, [1413] = {.lex_state = 0}, [1414] = {.lex_state = 0}, [1415] = {.lex_state = 0}, [1416] = {.lex_state = 0}, - [1417] = {.lex_state = 51}, + [1417] = {.lex_state = 0}, [1418] = {.lex_state = 0}, - [1419] = {.lex_state = 0}, + [1419] = {.lex_state = 14}, [1420] = {.lex_state = 0}, - [1421] = {.lex_state = 0}, - [1422] = {.lex_state = 51}, - [1423] = {.lex_state = 0}, - [1424] = {.lex_state = 0}, - [1425] = {.lex_state = 0, .external_lex_state = 6}, + [1421] = {.lex_state = 10}, + [1422] = {.lex_state = 14}, + [1423] = {.lex_state = 51}, + [1424] = {.lex_state = 51}, + [1425] = {.lex_state = 0}, [1426] = {.lex_state = 0}, - [1427] = {.lex_state = 0}, - [1428] = {.lex_state = 0, .external_lex_state = 6}, - [1429] = {.lex_state = 0}, + [1427] = {.lex_state = 10}, + [1428] = {.lex_state = 0}, + [1429] = {.lex_state = 0, .external_lex_state = 6}, [1430] = {.lex_state = 0}, - [1431] = {.lex_state = 10}, + [1431] = {.lex_state = 0}, [1432] = {.lex_state = 0}, [1433] = {.lex_state = 0}, [1434] = {.lex_state = 0}, - [1435] = {.lex_state = 14}, - [1436] = {.lex_state = 0, .external_lex_state = 6}, - [1437] = {.lex_state = 51}, + [1435] = {.lex_state = 51}, + [1436] = {.lex_state = 0}, + [1437] = {.lex_state = 0}, [1438] = {.lex_state = 0}, - [1439] = {.lex_state = 0}, - [1440] = {.lex_state = 0}, + [1439] = {.lex_state = 0, .external_lex_state = 6}, + [1440] = {.lex_state = 51}, [1441] = {.lex_state = 0}, - [1442] = {.lex_state = 0, .external_lex_state = 6}, + [1442] = {.lex_state = 0}, [1443] = {.lex_state = 0}, [1444] = {.lex_state = 0}, [1445] = {.lex_state = 0}, - [1446] = {.lex_state = 0, .external_lex_state = 6}, + [1446] = {.lex_state = 10}, [1447] = {.lex_state = 0}, [1448] = {.lex_state = 0}, [1449] = {.lex_state = 0}, [1450] = {.lex_state = 0}, - [1451] = {.lex_state = 16}, + [1451] = {.lex_state = 0}, [1452] = {.lex_state = 0}, [1453] = {.lex_state = 0}, [1454] = {.lex_state = 0}, @@ -7929,97 +7935,97 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1458] = {.lex_state = 0}, [1459] = {.lex_state = 0}, [1460] = {.lex_state = 0}, - [1461] = {.lex_state = 0}, + [1461] = {.lex_state = 51}, [1462] = {.lex_state = 0}, - [1463] = {.lex_state = 10}, - [1464] = {.lex_state = 0}, + [1463] = {.lex_state = 0}, + [1464] = {.lex_state = 51}, [1465] = {.lex_state = 0}, - [1466] = {.lex_state = 0}, - [1467] = {.lex_state = 0}, + [1466] = {.lex_state = 14}, + [1467] = {.lex_state = 51}, [1468] = {.lex_state = 0}, [1469] = {.lex_state = 0}, - [1470] = {.lex_state = 0}, + [1470] = {.lex_state = 0, .external_lex_state = 6}, [1471] = {.lex_state = 0}, [1472] = {.lex_state = 0}, - [1473] = {.lex_state = 0}, - [1474] = {.lex_state = 51}, - [1475] = {.lex_state = 0}, + [1473] = {.lex_state = 51}, + [1474] = {.lex_state = 0}, + [1475] = {.lex_state = 0, .external_lex_state = 6}, [1476] = {.lex_state = 0}, [1477] = {.lex_state = 0}, - [1478] = {.lex_state = 51}, - [1479] = {.lex_state = 0}, + [1478] = {.lex_state = 0}, + [1479] = {.lex_state = 51}, [1480] = {.lex_state = 0}, [1481] = {.lex_state = 51}, - [1482] = {.lex_state = 0}, + [1482] = {.lex_state = 51}, [1483] = {.lex_state = 0}, [1484] = {.lex_state = 0}, - [1485] = {.lex_state = 0, .external_lex_state = 6}, - [1486] = {.lex_state = 0}, + [1485] = {.lex_state = 0}, + [1486] = {.lex_state = 0, .external_lex_state = 6}, [1487] = {.lex_state = 51}, - [1488] = {.lex_state = 0}, + [1488] = {.lex_state = 0, .external_lex_state = 6}, [1489] = {.lex_state = 0}, - [1490] = {.lex_state = 0}, - [1491] = {.lex_state = 51}, - [1492] = {.lex_state = 14}, + [1490] = {.lex_state = 10}, + [1491] = {.lex_state = 0}, + [1492] = {.lex_state = 0}, [1493] = {.lex_state = 0}, - [1494] = {.lex_state = 51}, - [1495] = {.lex_state = 51}, + [1494] = {.lex_state = 0}, + [1495] = {.lex_state = 0}, [1496] = {.lex_state = 0}, [1497] = {.lex_state = 0}, - [1498] = {.lex_state = 0}, - [1499] = {.lex_state = 10}, + [1498] = {.lex_state = 51}, + [1499] = {.lex_state = 0}, [1500] = {.lex_state = 0}, [1501] = {.lex_state = 0}, - [1502] = {.lex_state = 14}, + [1502] = {.lex_state = 0}, [1503] = {.lex_state = 0}, - [1504] = {.lex_state = 0}, + [1504] = {.lex_state = 16}, [1505] = {.lex_state = 0}, [1506] = {.lex_state = 0}, - [1507] = {.lex_state = 51}, - [1508] = {.lex_state = 10}, - [1509] = {.lex_state = 0, .external_lex_state = 6}, - [1510] = {.lex_state = 51}, - [1511] = {.lex_state = 0}, - [1512] = {.lex_state = 51}, - [1513] = {.lex_state = 0}, - [1514] = {.lex_state = 0}, - [1515] = {.lex_state = 0}, + [1507] = {.lex_state = 0}, + [1508] = {.lex_state = 0}, + [1509] = {.lex_state = 51}, + [1510] = {.lex_state = 0}, + [1511] = {.lex_state = 51}, + [1512] = {.lex_state = 0}, + [1513] = {.lex_state = 0, .external_lex_state = 6}, + [1514] = {.lex_state = 0, .external_lex_state = 6}, + [1515] = {.lex_state = 51}, [1516] = {.lex_state = 51}, - [1517] = {.lex_state = 10}, - [1518] = {.lex_state = 0}, + [1517] = {.lex_state = 51}, + [1518] = {.lex_state = 51}, [1519] = {.lex_state = 0}, [1520] = {.lex_state = 51}, [1521] = {.lex_state = 0}, - [1522] = {.lex_state = 51}, + [1522] = {.lex_state = 0}, [1523] = {.lex_state = 0}, - [1524] = {.lex_state = 51}, + [1524] = {.lex_state = 0}, [1525] = {.lex_state = 0}, - [1526] = {.lex_state = 0}, - [1527] = {.lex_state = 14}, + [1526] = {.lex_state = 51}, + [1527] = {.lex_state = 0}, [1528] = {.lex_state = 0}, - [1529] = {.lex_state = 0, .external_lex_state = 6}, - [1530] = {.lex_state = 0}, + [1529] = {.lex_state = 51}, + [1530] = {.lex_state = 51}, [1531] = {.lex_state = 0}, [1532] = {.lex_state = 0}, [1533] = {.lex_state = 0}, [1534] = {.lex_state = 0}, - [1535] = {.lex_state = 0}, - [1536] = {.lex_state = 17}, + [1535] = {.lex_state = 10}, + [1536] = {.lex_state = 0}, [1537] = {.lex_state = 0}, - [1538] = {.lex_state = 17}, - [1539] = {.lex_state = 0}, - [1540] = {.lex_state = 0}, - [1541] = {.lex_state = 17}, + [1538] = {.lex_state = 0}, + [1539] = {.lex_state = 0, .external_lex_state = 6}, + [1540] = {.lex_state = 0, .external_lex_state = 6}, + [1541] = {.lex_state = 0}, [1542] = {.lex_state = 0}, - [1543] = {.lex_state = 16}, - [1544] = {.lex_state = 17}, - [1545] = {.lex_state = 0, .external_lex_state = 6}, - [1546] = {.lex_state = 17}, - [1547] = {.lex_state = 51}, - [1548] = {.lex_state = 17}, - [1549] = {.lex_state = 0}, - [1550] = {.lex_state = 17}, - [1551] = {.lex_state = 51}, + [1543] = {.lex_state = 0}, + [1544] = {.lex_state = 16}, + [1545] = {.lex_state = 0}, + [1546] = {.lex_state = 0}, + [1547] = {.lex_state = 0}, + [1548] = {.lex_state = 0, .external_lex_state = 6}, + [1549] = {.lex_state = 0, .external_lex_state = 6}, + [1550] = {.lex_state = 0, .external_lex_state = 6}, + [1551] = {.lex_state = 0}, [1552] = {.lex_state = 0, .external_lex_state = 6}, [1553] = {.lex_state = 0}, [1554] = {.lex_state = 0, .external_lex_state = 6}, @@ -8027,72 +8033,72 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1556] = {.lex_state = 0}, [1557] = {.lex_state = 0}, [1558] = {.lex_state = 0}, - [1559] = {.lex_state = 0, .external_lex_state = 6}, - [1560] = {.lex_state = 17}, - [1561] = {.lex_state = 0, .external_lex_state = 6}, + [1559] = {.lex_state = 0}, + [1560] = {.lex_state = 0}, + [1561] = {.lex_state = 0}, [1562] = {.lex_state = 0}, [1563] = {.lex_state = 0}, - [1564] = {.lex_state = 51}, + [1564] = {.lex_state = 0, .external_lex_state = 6}, [1565] = {.lex_state = 0, .external_lex_state = 6}, - [1566] = {.lex_state = 0}, + [1566] = {.lex_state = 0, .external_lex_state = 6}, [1567] = {.lex_state = 0}, - [1568] = {.lex_state = 0}, - [1569] = {.lex_state = 0, .external_lex_state = 6}, - [1570] = {.lex_state = 0}, - [1571] = {.lex_state = 0, .external_lex_state = 6}, - [1572] = {.lex_state = 0}, - [1573] = {.lex_state = 0}, - [1574] = {.lex_state = 0}, - [1575] = {.lex_state = 0}, + [1568] = {.lex_state = 0, .external_lex_state = 6}, + [1569] = {.lex_state = 0}, + [1570] = {.lex_state = 0, .external_lex_state = 6}, + [1571] = {.lex_state = 0}, + [1572] = {.lex_state = 0, .external_lex_state = 6}, + [1573] = {.lex_state = 17}, + [1574] = {.lex_state = 17}, + [1575] = {.lex_state = 17}, [1576] = {.lex_state = 17}, [1577] = {.lex_state = 0}, - [1578] = {.lex_state = 0, .external_lex_state = 6}, + [1578] = {.lex_state = 0}, [1579] = {.lex_state = 0, .external_lex_state = 6}, - [1580] = {.lex_state = 0, .external_lex_state = 6}, + [1580] = {.lex_state = 51}, [1581] = {.lex_state = 0, .external_lex_state = 6}, [1582] = {.lex_state = 0}, - [1583] = {.lex_state = 0}, - [1584] = {.lex_state = 0, .external_lex_state = 6}, - [1585] = {.lex_state = 0, .external_lex_state = 6}, - [1586] = {.lex_state = 0, .external_lex_state = 6}, + [1583] = {.lex_state = 17}, + [1584] = {.lex_state = 51}, + [1585] = {.lex_state = 17}, + [1586] = {.lex_state = 0}, [1587] = {.lex_state = 0}, - [1588] = {.lex_state = 0}, - [1589] = {.lex_state = 0, .external_lex_state = 6}, - [1590] = {.lex_state = 0}, - [1591] = {.lex_state = 0, .external_lex_state = 6}, + [1588] = {.lex_state = 17}, + [1589] = {.lex_state = 0}, + [1590] = {.lex_state = 17}, + [1591] = {.lex_state = 17}, [1592] = {.lex_state = 0}, [1593] = {.lex_state = 0}, - [1594] = {.lex_state = 51}, - [1595] = {.lex_state = 0}, + [1594] = {.lex_state = 0}, + [1595] = {.lex_state = 0, .external_lex_state = 6}, [1596] = {.lex_state = 0, .external_lex_state = 6}, - [1597] = {.lex_state = 0}, - [1598] = {.lex_state = 0}, - [1599] = {.lex_state = 0}, - [1600] = {.lex_state = 0}, - [1601] = {.lex_state = 0}, - [1602] = {.lex_state = 0}, - [1603] = {.lex_state = 0, .external_lex_state = 6}, + [1597] = {.lex_state = 0, .external_lex_state = 6}, + [1598] = {.lex_state = 0, .external_lex_state = 6}, + [1599] = {.lex_state = 17}, + [1600] = {.lex_state = 51}, + [1601] = {.lex_state = 0, .external_lex_state = 6}, + [1602] = {.lex_state = 0, .external_lex_state = 6}, + [1603] = {.lex_state = 0}, [1604] = {.lex_state = 0}, - [1605] = {.lex_state = 0, .external_lex_state = 6}, - [1606] = {.lex_state = 51}, + [1605] = {.lex_state = 0}, + [1606] = {.lex_state = 0}, [1607] = {.lex_state = 0}, - [1608] = {.lex_state = 0, .external_lex_state = 6}, + [1608] = {.lex_state = 51}, [1609] = {.lex_state = 0}, - [1610] = {.lex_state = 0, .external_lex_state = 6}, + [1610] = {.lex_state = 0}, [1611] = {.lex_state = 0}, - [1612] = {.lex_state = 17}, - [1613] = {.lex_state = 51}, - [1614] = {.lex_state = 0}, + [1612] = {.lex_state = 0}, + [1613] = {.lex_state = 0}, + [1614] = {.lex_state = 0, .external_lex_state = 6}, [1615] = {.lex_state = 0}, - [1616] = {.lex_state = 0}, - [1617] = {.lex_state = 0}, + [1616] = {.lex_state = 51}, + [1617] = {.lex_state = 51}, [1618] = {.lex_state = 0}, [1619] = {.lex_state = 0}, [1620] = {.lex_state = 0}, [1621] = {.lex_state = 0}, - [1622] = {.lex_state = 51}, + [1622] = {.lex_state = 0}, [1623] = {.lex_state = 0}, - [1624] = {.lex_state = 0}, + [1624] = {.lex_state = 51}, [1625] = {.lex_state = 0}, [1626] = {.lex_state = 51}, [1627] = {.lex_state = 0}, @@ -8100,72 +8106,72 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1629] = {.lex_state = 51}, [1630] = {.lex_state = 51}, [1631] = {.lex_state = 0}, - [1632] = {.lex_state = 51}, - [1633] = {.lex_state = 0}, - [1634] = {.lex_state = 51}, + [1632] = {.lex_state = 0}, + [1633] = {.lex_state = 51}, + [1634] = {.lex_state = 0}, [1635] = {.lex_state = 51}, [1636] = {.lex_state = 51}, - [1637] = {.lex_state = 51}, - [1638] = {.lex_state = 0}, + [1637] = {.lex_state = 0}, + [1638] = {.lex_state = 51}, [1639] = {.lex_state = 51}, - [1640] = {.lex_state = 0}, + [1640] = {.lex_state = 51}, [1641] = {.lex_state = 0}, - [1642] = {.lex_state = 51}, - [1643] = {.lex_state = 51}, - [1644] = {.lex_state = 51}, - [1645] = {.lex_state = 51}, - [1646] = {.lex_state = 0}, + [1642] = {.lex_state = 0}, + [1643] = {.lex_state = 0}, + [1644] = {.lex_state = 0}, + [1645] = {.lex_state = 0}, + [1646] = {.lex_state = 51}, [1647] = {.lex_state = 51}, [1648] = {.lex_state = 51}, - [1649] = {.lex_state = 51}, + [1649] = {.lex_state = 0}, [1650] = {.lex_state = 0}, - [1651] = {.lex_state = 0}, + [1651] = {.lex_state = 51}, [1652] = {.lex_state = 51}, - [1653] = {.lex_state = 0}, + [1653] = {.lex_state = 51}, [1654] = {.lex_state = 0}, [1655] = {.lex_state = 0}, [1656] = {.lex_state = 0}, - [1657] = {.lex_state = 0}, + [1657] = {.lex_state = 51}, [1658] = {.lex_state = 0}, - [1659] = {.lex_state = 0}, + [1659] = {.lex_state = 51}, [1660] = {.lex_state = 0}, - [1661] = {.lex_state = 51}, + [1661] = {.lex_state = 0}, [1662] = {.lex_state = 0}, [1663] = {.lex_state = 51}, [1664] = {.lex_state = 0}, [1665] = {.lex_state = 0}, [1666] = {.lex_state = 0}, - [1667] = {.lex_state = 51}, + [1667] = {.lex_state = 0}, [1668] = {.lex_state = 0}, [1669] = {.lex_state = 0}, [1670] = {.lex_state = 0}, [1671] = {.lex_state = 0}, [1672] = {.lex_state = 0}, - [1673] = {.lex_state = 0}, - [1674] = {.lex_state = 0}, + [1673] = {.lex_state = 51}, + [1674] = {.lex_state = 51}, [1675] = {.lex_state = 0}, [1676] = {.lex_state = 0}, [1677] = {.lex_state = 0}, [1678] = {.lex_state = 0}, - [1679] = {.lex_state = 0}, + [1679] = {.lex_state = 51}, [1680] = {.lex_state = 0}, - [1681] = {.lex_state = 0}, + [1681] = {.lex_state = 51}, [1682] = {.lex_state = 0}, [1683] = {.lex_state = 51}, [1684] = {.lex_state = 0}, - [1685] = {.lex_state = 0}, + [1685] = {.lex_state = 51}, [1686] = {.lex_state = 0}, - [1687] = {.lex_state = 51}, + [1687] = {.lex_state = 0}, [1688] = {.lex_state = 0}, - [1689] = {.lex_state = 51}, + [1689] = {.lex_state = 0}, [1690] = {.lex_state = 0}, - [1691] = {.lex_state = 51}, + [1691] = {.lex_state = 0}, [1692] = {.lex_state = 0}, [1693] = {.lex_state = 51}, - [1694] = {.lex_state = 0}, + [1694] = {.lex_state = 51}, [1695] = {.lex_state = 0}, [1696] = {.lex_state = 0}, - [1697] = {.lex_state = 51}, + [1697] = {.lex_state = 0}, [1698] = {.lex_state = 0}, [1699] = {.lex_state = 0}, [1700] = {.lex_state = 0}, @@ -8174,33 +8180,33 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1703] = {.lex_state = 0}, [1704] = {.lex_state = 51}, [1705] = {.lex_state = 0}, - [1706] = {.lex_state = 51}, - [1707] = {.lex_state = 0}, + [1706] = {.lex_state = 0}, + [1707] = {.lex_state = 51}, [1708] = {.lex_state = 0}, - [1709] = {.lex_state = 0}, + [1709] = {.lex_state = 51}, [1710] = {.lex_state = 0}, - [1711] = {.lex_state = 0}, + [1711] = {.lex_state = 51}, [1712] = {.lex_state = 0}, [1713] = {.lex_state = 0}, [1714] = {.lex_state = 0}, [1715] = {.lex_state = 51}, - [1716] = {.lex_state = 51}, - [1717] = {.lex_state = 0}, - [1718] = {.lex_state = 0}, - [1719] = {.lex_state = 51}, - [1720] = {.lex_state = 51}, + [1716] = {.lex_state = 0}, + [1717] = {.lex_state = 51}, + [1718] = {.lex_state = 51}, + [1719] = {.lex_state = 0}, + [1720] = {.lex_state = 0}, [1721] = {.lex_state = 0}, [1722] = {.lex_state = 0}, [1723] = {.lex_state = 0}, - [1724] = {.lex_state = 0}, - [1725] = {.lex_state = 51}, - [1726] = {.lex_state = 51}, + [1724] = {.lex_state = 51}, + [1725] = {.lex_state = 0}, + [1726] = {.lex_state = 0}, [1727] = {.lex_state = 0}, [1728] = {.lex_state = 0}, - [1729] = {.lex_state = 51}, + [1729] = {.lex_state = 0}, [1730] = {.lex_state = 0}, [1731] = {.lex_state = 0}, - [1732] = {.lex_state = 51}, + [1732] = {.lex_state = 0}, [1733] = {.lex_state = 0}, [1734] = {.lex_state = 0}, [1735] = {.lex_state = 0}, @@ -8212,17 +8218,21 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [1741] = {.lex_state = 0}, [1742] = {.lex_state = 0}, [1743] = {.lex_state = 0}, - [1744] = {.lex_state = 0}, + [1744] = {.lex_state = 51}, [1745] = {.lex_state = 0}, - [1746] = {.lex_state = 0}, - [1747] = {.lex_state = 51}, - [1748] = {.lex_state = 0}, + [1746] = {.lex_state = 51}, + [1747] = {.lex_state = 0}, + [1748] = {.lex_state = 51}, [1749] = {.lex_state = 0}, [1750] = {.lex_state = 0}, - [1751] = {.lex_state = 0}, - [1752] = {.lex_state = 51}, - [1753] = {.lex_state = 51}, + [1751] = {.lex_state = 51}, + [1752] = {.lex_state = 0}, + [1753] = {.lex_state = 0}, [1754] = {.lex_state = 0}, + [1755] = {.lex_state = 0}, + [1756] = {.lex_state = 0}, + [1757] = {.lex_state = 51}, + [1758] = {.lex_state = 0}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -8335,75 +8345,75 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(1), }, [STATE(1)] = { - [sym_module] = STATE(1708), - [sym__statement] = STATE(64), - [sym__simple_statements] = STATE(64), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_class_definition] = STATE(64), - [sym_decorated_definition] = STATE(64), - [sym_decorator] = STATE(1172), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_module] = STATE(1737), + [sym__statement] = STATE(62), + [sym__simple_statements] = STATE(62), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_class_definition] = STATE(62), + [sym_decorated_definition] = STATE(62), + [sym_decorator] = STATE(1171), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(64), - [aux_sym_decorated_definition_repeat1] = STATE(1172), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(62), + [aux_sym_decorated_definition_repeat1] = STATE(1171), [ts_builtin_sym_end] = ACTIONS(5), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), @@ -8454,75 +8464,75 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(2)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(491), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(316), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -8575,19 +8585,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(3)] = { [sym__statement] = STATE(60), [sym__simple_statements] = STATE(60), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(60), [sym_for_statement] = STATE(60), [sym_while_statement] = STATE(60), @@ -8595,53 +8605,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(60), [sym_match_statement] = STATE(60), [sym_function_definition] = STATE(60), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(60), [sym_decorated_definition] = STATE(60), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(1195), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(1232), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(60), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -8694,19 +8704,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(4)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -8714,53 +8724,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(329), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(337), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -8813,19 +8823,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(5)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -8833,53 +8843,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(478), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(472), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -8932,19 +8942,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(6)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -8952,53 +8962,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(604), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(534), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -9051,19 +9061,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(7)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -9071,53 +9081,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(615), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(571), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -9170,19 +9180,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(8)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -9190,53 +9200,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(525), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(579), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -9289,19 +9299,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(9)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -9309,53 +9319,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(541), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(585), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -9408,19 +9418,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(10)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -9428,53 +9438,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(547), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(587), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -9527,19 +9537,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(11)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -9547,53 +9557,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(550), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(589), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -9646,19 +9656,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(12)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -9666,53 +9676,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(582), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(591), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -9765,19 +9775,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(13)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -9785,53 +9795,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(490), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(466), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -9884,19 +9894,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(14)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -9904,53 +9914,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(447), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(453), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -10003,19 +10013,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(15)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -10023,53 +10033,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(609), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(596), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -10122,19 +10132,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(16)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -10142,53 +10152,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(601), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(599), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -10241,19 +10251,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(17)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -10261,53 +10271,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(612), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(601), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -10360,19 +10370,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(18)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -10380,53 +10390,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(512), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(510), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -10479,19 +10489,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(19)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -10499,53 +10509,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(468), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(469), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -10598,138 +10608,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(20)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(542), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), - [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), - [sym_identifier] = ACTIONS(7), - [anon_sym_lazy] = ACTIONS(9), - [anon_sym_import] = ACTIONS(11), - [anon_sym_from] = ACTIONS(13), - [anon_sym_LPAREN] = ACTIONS(15), - [anon_sym_STAR] = ACTIONS(17), - [anon_sym_print] = ACTIONS(19), - [anon_sym_assert] = ACTIONS(21), - [anon_sym_return] = ACTIONS(23), - [anon_sym_del] = ACTIONS(25), - [anon_sym_raise] = ACTIONS(27), - [anon_sym_pass] = ACTIONS(29), - [anon_sym_break] = ACTIONS(31), - [anon_sym_continue] = ACTIONS(33), - [anon_sym_if] = ACTIONS(87), - [anon_sym_async] = ACTIONS(89), - [anon_sym_for] = ACTIONS(91), - [anon_sym_while] = ACTIONS(93), - [anon_sym_try] = ACTIONS(95), - [anon_sym_with] = ACTIONS(97), - [anon_sym_match] = ACTIONS(99), - [anon_sym_DASH] = ACTIONS(49), - [anon_sym_PLUS] = ACTIONS(49), - [anon_sym_LBRACK] = ACTIONS(51), - [anon_sym_LBRACE] = ACTIONS(53), - [anon_sym_STAR_STAR] = ACTIONS(55), - [anon_sym_def] = ACTIONS(101), - [anon_sym_global] = ACTIONS(59), - [anon_sym_nonlocal] = ACTIONS(61), - [anon_sym_exec] = ACTIONS(63), - [anon_sym_type] = ACTIONS(65), - [anon_sym_class] = ACTIONS(103), - [anon_sym_AT] = ACTIONS(69), - [anon_sym_not] = ACTIONS(71), - [anon_sym_TILDE] = ACTIONS(49), - [anon_sym_lambda] = ACTIONS(73), - [anon_sym_yield] = ACTIONS(75), - [sym_ellipsis] = ACTIONS(77), - [sym_integer] = ACTIONS(79), - [sym_float] = ACTIONS(77), - [anon_sym_await] = ACTIONS(81), - [sym_true] = ACTIONS(79), - [sym_false] = ACTIONS(79), - [sym_none] = ACTIONS(79), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(109), - [sym__string_start] = ACTIONS(83), - [sym__template_string_start] = ACTIONS(85), - }, - [STATE(21)] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -10737,291 +10628,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(455), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), - [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), - [sym_identifier] = ACTIONS(7), - [anon_sym_lazy] = ACTIONS(9), - [anon_sym_import] = ACTIONS(11), - [anon_sym_from] = ACTIONS(13), - [anon_sym_LPAREN] = ACTIONS(15), - [anon_sym_STAR] = ACTIONS(17), - [anon_sym_print] = ACTIONS(19), - [anon_sym_assert] = ACTIONS(21), - [anon_sym_return] = ACTIONS(23), - [anon_sym_del] = ACTIONS(25), - [anon_sym_raise] = ACTIONS(27), - [anon_sym_pass] = ACTIONS(29), - [anon_sym_break] = ACTIONS(31), - [anon_sym_continue] = ACTIONS(33), - [anon_sym_if] = ACTIONS(87), - [anon_sym_async] = ACTIONS(89), - [anon_sym_for] = ACTIONS(91), - [anon_sym_while] = ACTIONS(93), - [anon_sym_try] = ACTIONS(95), - [anon_sym_with] = ACTIONS(97), - [anon_sym_match] = ACTIONS(99), - [anon_sym_DASH] = ACTIONS(49), - [anon_sym_PLUS] = ACTIONS(49), - [anon_sym_LBRACK] = ACTIONS(51), - [anon_sym_LBRACE] = ACTIONS(53), - [anon_sym_STAR_STAR] = ACTIONS(55), - [anon_sym_def] = ACTIONS(101), - [anon_sym_global] = ACTIONS(59), - [anon_sym_nonlocal] = ACTIONS(61), - [anon_sym_exec] = ACTIONS(63), - [anon_sym_type] = ACTIONS(65), - [anon_sym_class] = ACTIONS(103), - [anon_sym_AT] = ACTIONS(69), - [anon_sym_not] = ACTIONS(71), - [anon_sym_TILDE] = ACTIONS(49), - [anon_sym_lambda] = ACTIONS(73), - [anon_sym_yield] = ACTIONS(75), - [sym_ellipsis] = ACTIONS(77), - [sym_integer] = ACTIONS(79), - [sym_float] = ACTIONS(77), - [anon_sym_await] = ACTIONS(81), - [sym_true] = ACTIONS(79), - [sym_false] = ACTIONS(79), - [sym_none] = ACTIONS(79), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(109), - [sym__string_start] = ACTIONS(83), - [sym__template_string_start] = ACTIONS(85), - }, - [STATE(22)] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(496), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), - [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), - [sym_identifier] = ACTIONS(7), - [anon_sym_lazy] = ACTIONS(9), - [anon_sym_import] = ACTIONS(11), - [anon_sym_from] = ACTIONS(13), - [anon_sym_LPAREN] = ACTIONS(15), - [anon_sym_STAR] = ACTIONS(17), - [anon_sym_print] = ACTIONS(19), - [anon_sym_assert] = ACTIONS(21), - [anon_sym_return] = ACTIONS(23), - [anon_sym_del] = ACTIONS(25), - [anon_sym_raise] = ACTIONS(27), - [anon_sym_pass] = ACTIONS(29), - [anon_sym_break] = ACTIONS(31), - [anon_sym_continue] = ACTIONS(33), - [anon_sym_if] = ACTIONS(87), - [anon_sym_async] = ACTIONS(89), - [anon_sym_for] = ACTIONS(91), - [anon_sym_while] = ACTIONS(93), - [anon_sym_try] = ACTIONS(95), - [anon_sym_with] = ACTIONS(97), - [anon_sym_match] = ACTIONS(99), - [anon_sym_DASH] = ACTIONS(49), - [anon_sym_PLUS] = ACTIONS(49), - [anon_sym_LBRACK] = ACTIONS(51), - [anon_sym_LBRACE] = ACTIONS(53), - [anon_sym_STAR_STAR] = ACTIONS(55), - [anon_sym_def] = ACTIONS(101), - [anon_sym_global] = ACTIONS(59), - [anon_sym_nonlocal] = ACTIONS(61), - [anon_sym_exec] = ACTIONS(63), - [anon_sym_type] = ACTIONS(65), - [anon_sym_class] = ACTIONS(103), - [anon_sym_AT] = ACTIONS(69), - [anon_sym_not] = ACTIONS(71), - [anon_sym_TILDE] = ACTIONS(49), - [anon_sym_lambda] = ACTIONS(73), - [anon_sym_yield] = ACTIONS(75), - [sym_ellipsis] = ACTIONS(77), - [sym_integer] = ACTIONS(79), - [sym_float] = ACTIONS(77), - [anon_sym_await] = ACTIONS(81), - [sym_true] = ACTIONS(79), - [sym_false] = ACTIONS(79), - [sym_none] = ACTIONS(79), - [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(109), - [sym__string_start] = ACTIONS(83), - [sym__template_string_start] = ACTIONS(85), - }, - [STATE(23)] = { - [sym__statement] = STATE(61), - [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(61), - [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), + [sym_decorator] = STATE(1126), [sym_block] = STATE(606), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -11071,22 +10724,22 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(24)] = { + [STATE(21)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -11094,53 +10747,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(472), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(455), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -11190,22 +10843,22 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(25)] = { + [STATE(22)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -11213,53 +10866,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(517), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(496), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -11309,22 +10962,22 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(26)] = { + [STATE(23)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -11332,53 +10985,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(442), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(610), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -11428,22 +11081,22 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(27)] = { + [STATE(24)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -11451,53 +11104,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(508), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(477), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -11547,22 +11200,22 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(28)] = { + [STATE(25)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -11570,53 +11223,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(522), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(613), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -11666,22 +11319,22 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(29)] = { + [STATE(26)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -11689,53 +11342,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(523), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(460), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -11785,22 +11438,22 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(30)] = { + [STATE(27)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -11808,53 +11461,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(450), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(492), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -11904,22 +11557,22 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(31)] = { + [STATE(28)] = { [sym__statement] = STATE(61), [sym__simple_statements] = STATE(61), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), [sym_if_statement] = STATE(61), [sym_for_statement] = STATE(61), [sym_while_statement] = STATE(61), @@ -11927,53 +11580,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(61), [sym_match_statement] = STATE(61), [sym_function_definition] = STATE(61), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), [sym_class_definition] = STATE(61), [sym_decorated_definition] = STATE(61), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(451), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(515), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(61), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -12023,76 +11676,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(32)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(322), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(29)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(569), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -12138,80 +11791,80 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(79), [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(105), + [sym__dedent] = ACTIONS(109), [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(33)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(559), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(30)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(464), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -12257,80 +11910,80 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(79), [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(105), + [sym__dedent] = ACTIONS(109), [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(34)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(567), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(31)] = { + [sym__statement] = STATE(61), + [sym__simple_statements] = STATE(61), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(61), + [sym_decorated_definition] = STATE(61), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(439), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(61), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -12376,80 +12029,80 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(79), [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(105), + [sym__dedent] = ACTIONS(109), [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(35)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(573), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(32)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(484), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -12499,76 +12152,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(36)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(575), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(33)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(536), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -12618,76 +12271,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(37)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(577), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(34)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(541), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -12737,76 +12390,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(38)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(579), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(35)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(547), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -12856,76 +12509,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(39)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(486), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(36)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(549), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -12975,76 +12628,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(40)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(454), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(37)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(551), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -13094,76 +12747,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(41)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(583), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(38)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(553), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -13213,76 +12866,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(42)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(586), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(39)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(488), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -13332,76 +12985,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(43)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(587), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(40)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(441), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -13451,76 +13104,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(44)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(502), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(41)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(556), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -13570,76 +13223,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(45)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(488), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(42)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(559), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -13689,76 +13342,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(46)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(591), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(43)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(560), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -13808,76 +13461,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(47)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(459), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(44)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(506), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -13927,76 +13580,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(48)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(504), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(45)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(471), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -14046,76 +13699,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(49)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(595), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(46)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(563), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -14165,76 +13818,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(50)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(489), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(47)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(445), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -14284,76 +13937,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(51)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(598), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(48)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(495), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -14403,76 +14056,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(52)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(460), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(49)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(566), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -14522,76 +14175,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(53)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(507), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(50)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(486), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -14641,76 +14294,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(54)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(602), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(51)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(616), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -14760,76 +14413,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(55)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(603), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(52)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(446), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -14879,76 +14532,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(56)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(464), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(53)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(509), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -14998,76 +14651,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(57)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(439), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(54)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(573), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -15117,76 +14770,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(58)] = { - [sym__statement] = STATE(60), - [sym__simple_statements] = STATE(60), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(60), - [sym_decorated_definition] = STATE(60), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(1215), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(55)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(574), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(60), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -15232,80 +14885,80 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(79), [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(107), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(59)] = { - [sym__statement] = STATE(63), - [sym__simple_statements] = STATE(63), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(63), - [sym_decorated_definition] = STATE(63), - [sym_decorator] = STATE(1146), - [sym_block] = STATE(560), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(56)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(449), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(63), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -15355,75 +15008,76 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(60)] = { - [sym__statement] = STATE(62), - [sym__simple_statements] = STATE(62), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(62), - [sym_decorated_definition] = STATE(62), - [sym_decorator] = STATE(1146), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(57)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(450), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(62), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -15469,79 +15123,80 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(79), [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(111), + [sym__dedent] = ACTIONS(105), [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(61)] = { - [sym__statement] = STATE(62), - [sym__simple_statements] = STATE(62), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(62), - [sym_decorated_definition] = STATE(62), - [sym_decorator] = STATE(1146), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(58)] = { + [sym__statement] = STATE(60), + [sym__simple_statements] = STATE(60), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(60), + [sym_decorated_definition] = STATE(60), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(1203), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(62), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(60), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -15587,197 +15242,198 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(79), [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(113), + [sym__dedent] = ACTIONS(107), [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(62)] = { - [sym__statement] = STATE(62), - [sym__simple_statements] = STATE(62), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(62), - [sym_decorated_definition] = STATE(62), - [sym_decorator] = STATE(1146), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(59)] = { + [sym__statement] = STATE(64), + [sym__simple_statements] = STATE(64), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(64), + [sym_decorated_definition] = STATE(64), + [sym_decorator] = STATE(1126), + [sym_block] = STATE(533), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(62), - [aux_sym_decorated_definition_repeat1] = STATE(1146), - [sym_identifier] = ACTIONS(115), - [anon_sym_lazy] = ACTIONS(118), - [anon_sym_import] = ACTIONS(121), - [anon_sym_from] = ACTIONS(124), - [anon_sym_LPAREN] = ACTIONS(127), - [anon_sym_STAR] = ACTIONS(130), - [anon_sym_print] = ACTIONS(133), - [anon_sym_assert] = ACTIONS(136), - [anon_sym_return] = ACTIONS(139), - [anon_sym_del] = ACTIONS(142), - [anon_sym_raise] = ACTIONS(145), - [anon_sym_pass] = ACTIONS(148), - [anon_sym_break] = ACTIONS(151), - [anon_sym_continue] = ACTIONS(154), - [anon_sym_if] = ACTIONS(157), - [anon_sym_async] = ACTIONS(160), - [anon_sym_for] = ACTIONS(163), - [anon_sym_while] = ACTIONS(166), - [anon_sym_try] = ACTIONS(169), - [anon_sym_with] = ACTIONS(172), - [anon_sym_match] = ACTIONS(175), - [anon_sym_DASH] = ACTIONS(178), - [anon_sym_PLUS] = ACTIONS(178), - [anon_sym_LBRACK] = ACTIONS(181), - [anon_sym_LBRACE] = ACTIONS(184), - [anon_sym_STAR_STAR] = ACTIONS(187), - [anon_sym_def] = ACTIONS(190), - [anon_sym_global] = ACTIONS(193), - [anon_sym_nonlocal] = ACTIONS(196), - [anon_sym_exec] = ACTIONS(199), - [anon_sym_type] = ACTIONS(202), - [anon_sym_class] = ACTIONS(205), - [anon_sym_AT] = ACTIONS(208), - [anon_sym_not] = ACTIONS(211), - [anon_sym_TILDE] = ACTIONS(178), - [anon_sym_lambda] = ACTIONS(214), - [anon_sym_yield] = ACTIONS(217), - [sym_ellipsis] = ACTIONS(220), - [sym_integer] = ACTIONS(223), - [sym_float] = ACTIONS(220), - [anon_sym_await] = ACTIONS(226), - [sym_true] = ACTIONS(223), - [sym_false] = ACTIONS(223), - [sym_none] = ACTIONS(223), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(64), + [aux_sym_decorated_definition_repeat1] = STATE(1126), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(229), - [sym__string_start] = ACTIONS(231), - [sym__template_string_start] = ACTIONS(234), + [sym__dedent] = ACTIONS(105), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), }, - [STATE(63)] = { - [sym__statement] = STATE(62), - [sym__simple_statements] = STATE(62), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [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(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_class_definition] = STATE(62), - [sym_decorated_definition] = STATE(62), - [sym_decorator] = STATE(1146), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [STATE(60)] = { + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1126), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [aux_sym_module_repeat1] = STATE(62), - [aux_sym_decorated_definition_repeat1] = STATE(1146), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1126), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -15823,26 +15479,144 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_false] = ACTIONS(79), [sym_none] = ACTIONS(79), [sym_comment] = ACTIONS(3), - [sym__dedent] = ACTIONS(237), + [sym__dedent] = ACTIONS(111), [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, - [STATE(64)] = { + [STATE(61)] = { + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1126), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1126), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(113), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(62)] = { [sym__statement] = STATE(65), [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), [sym_if_statement] = STATE(65), [sym_for_statement] = STATE(65), [sym_while_statement] = STATE(65), @@ -15850,53 +15624,53 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(65), [sym_match_statement] = STATE(65), [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), [sym_class_definition] = STATE(65), [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1172), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1171), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1172), - [ts_builtin_sym_end] = ACTIONS(239), + [aux_sym_decorated_definition_repeat1] = STATE(1171), + [ts_builtin_sym_end] = ACTIONS(115), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -15945,22 +15719,258 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, + [STATE(63)] = { + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1126), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1126), + [sym_identifier] = ACTIONS(117), + [anon_sym_lazy] = ACTIONS(120), + [anon_sym_import] = ACTIONS(123), + [anon_sym_from] = ACTIONS(126), + [anon_sym_LPAREN] = ACTIONS(129), + [anon_sym_STAR] = ACTIONS(132), + [anon_sym_print] = ACTIONS(135), + [anon_sym_assert] = ACTIONS(138), + [anon_sym_return] = ACTIONS(141), + [anon_sym_del] = ACTIONS(144), + [anon_sym_raise] = ACTIONS(147), + [anon_sym_pass] = ACTIONS(150), + [anon_sym_break] = ACTIONS(153), + [anon_sym_continue] = ACTIONS(156), + [anon_sym_if] = ACTIONS(159), + [anon_sym_async] = ACTIONS(162), + [anon_sym_for] = ACTIONS(165), + [anon_sym_while] = ACTIONS(168), + [anon_sym_try] = ACTIONS(171), + [anon_sym_with] = ACTIONS(174), + [anon_sym_match] = ACTIONS(177), + [anon_sym_DASH] = ACTIONS(180), + [anon_sym_PLUS] = ACTIONS(180), + [anon_sym_LBRACK] = ACTIONS(183), + [anon_sym_LBRACE] = ACTIONS(186), + [anon_sym_STAR_STAR] = ACTIONS(189), + [anon_sym_def] = ACTIONS(192), + [anon_sym_global] = ACTIONS(195), + [anon_sym_nonlocal] = ACTIONS(198), + [anon_sym_exec] = ACTIONS(201), + [anon_sym_type] = ACTIONS(204), + [anon_sym_class] = ACTIONS(207), + [anon_sym_AT] = ACTIONS(210), + [anon_sym_not] = ACTIONS(213), + [anon_sym_TILDE] = ACTIONS(180), + [anon_sym_lambda] = ACTIONS(216), + [anon_sym_yield] = ACTIONS(219), + [sym_ellipsis] = ACTIONS(222), + [sym_integer] = ACTIONS(225), + [sym_float] = ACTIONS(222), + [anon_sym_await] = ACTIONS(228), + [sym_true] = ACTIONS(225), + [sym_false] = ACTIONS(225), + [sym_none] = ACTIONS(225), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(231), + [sym__string_start] = ACTIONS(233), + [sym__template_string_start] = ACTIONS(236), + }, + [STATE(64)] = { + [sym__statement] = STATE(63), + [sym__simple_statements] = STATE(63), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [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(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_class_definition] = STATE(63), + [sym_decorated_definition] = STATE(63), + [sym_decorator] = STATE(1126), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [aux_sym_module_repeat1] = STATE(63), + [aux_sym_decorated_definition_repeat1] = STATE(1126), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_if] = ACTIONS(87), + [anon_sym_async] = ACTIONS(89), + [anon_sym_for] = ACTIONS(91), + [anon_sym_while] = ACTIONS(93), + [anon_sym_try] = ACTIONS(95), + [anon_sym_with] = ACTIONS(97), + [anon_sym_match] = ACTIONS(99), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_def] = ACTIONS(101), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_class] = ACTIONS(103), + [anon_sym_AT] = ACTIONS(69), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__dedent] = ACTIONS(239), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, [STATE(65)] = { [sym__statement] = STATE(65), [sym__simple_statements] = STATE(65), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), [sym_if_statement] = STATE(65), [sym_for_statement] = STATE(65), [sym_while_statement] = STATE(65), @@ -15968,67 +15978,67 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_with_statement] = STATE(65), [sym_match_statement] = STATE(65), [sym_function_definition] = STATE(65), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), [sym_class_definition] = STATE(65), [sym_decorated_definition] = STATE(65), - [sym_decorator] = STATE(1172), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_decorator] = STATE(1171), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [aux_sym_module_repeat1] = STATE(65), - [aux_sym_decorated_definition_repeat1] = STATE(1172), - [ts_builtin_sym_end] = ACTIONS(229), - [sym_identifier] = ACTIONS(115), - [anon_sym_lazy] = ACTIONS(118), - [anon_sym_import] = ACTIONS(121), - [anon_sym_from] = ACTIONS(124), - [anon_sym_LPAREN] = ACTIONS(127), - [anon_sym_STAR] = ACTIONS(130), - [anon_sym_print] = ACTIONS(133), - [anon_sym_assert] = ACTIONS(136), - [anon_sym_return] = ACTIONS(139), - [anon_sym_del] = ACTIONS(142), - [anon_sym_raise] = ACTIONS(145), - [anon_sym_pass] = ACTIONS(148), - [anon_sym_break] = ACTIONS(151), - [anon_sym_continue] = ACTIONS(154), + [aux_sym_decorated_definition_repeat1] = STATE(1171), + [ts_builtin_sym_end] = ACTIONS(231), + [sym_identifier] = ACTIONS(117), + [anon_sym_lazy] = ACTIONS(120), + [anon_sym_import] = ACTIONS(123), + [anon_sym_from] = ACTIONS(126), + [anon_sym_LPAREN] = ACTIONS(129), + [anon_sym_STAR] = ACTIONS(132), + [anon_sym_print] = ACTIONS(135), + [anon_sym_assert] = ACTIONS(138), + [anon_sym_return] = ACTIONS(141), + [anon_sym_del] = ACTIONS(144), + [anon_sym_raise] = ACTIONS(147), + [anon_sym_pass] = ACTIONS(150), + [anon_sym_break] = ACTIONS(153), + [anon_sym_continue] = ACTIONS(156), [anon_sym_if] = ACTIONS(241), [anon_sym_async] = ACTIONS(244), [anon_sym_for] = ACTIONS(247), @@ -16036,64 +16046,64 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_try] = ACTIONS(253), [anon_sym_with] = ACTIONS(256), [anon_sym_match] = ACTIONS(259), - [anon_sym_DASH] = ACTIONS(178), - [anon_sym_PLUS] = ACTIONS(178), - [anon_sym_LBRACK] = ACTIONS(181), - [anon_sym_LBRACE] = ACTIONS(184), - [anon_sym_STAR_STAR] = ACTIONS(187), + [anon_sym_DASH] = ACTIONS(180), + [anon_sym_PLUS] = ACTIONS(180), + [anon_sym_LBRACK] = ACTIONS(183), + [anon_sym_LBRACE] = ACTIONS(186), + [anon_sym_STAR_STAR] = ACTIONS(189), [anon_sym_def] = ACTIONS(262), - [anon_sym_global] = ACTIONS(193), - [anon_sym_nonlocal] = ACTIONS(196), - [anon_sym_exec] = ACTIONS(199), - [anon_sym_type] = ACTIONS(202), + [anon_sym_global] = ACTIONS(195), + [anon_sym_nonlocal] = ACTIONS(198), + [anon_sym_exec] = ACTIONS(201), + [anon_sym_type] = ACTIONS(204), [anon_sym_class] = ACTIONS(265), - [anon_sym_AT] = ACTIONS(208), - [anon_sym_not] = ACTIONS(211), - [anon_sym_TILDE] = ACTIONS(178), - [anon_sym_lambda] = ACTIONS(214), - [anon_sym_yield] = ACTIONS(217), - [sym_ellipsis] = ACTIONS(220), - [sym_integer] = ACTIONS(223), - [sym_float] = ACTIONS(220), - [anon_sym_await] = ACTIONS(226), - [sym_true] = ACTIONS(223), - [sym_false] = ACTIONS(223), - [sym_none] = ACTIONS(223), + [anon_sym_AT] = ACTIONS(210), + [anon_sym_not] = ACTIONS(213), + [anon_sym_TILDE] = ACTIONS(180), + [anon_sym_lambda] = ACTIONS(216), + [anon_sym_yield] = ACTIONS(219), + [sym_ellipsis] = ACTIONS(222), + [sym_integer] = ACTIONS(225), + [sym_float] = ACTIONS(222), + [anon_sym_await] = ACTIONS(228), + [sym_true] = ACTIONS(225), + [sym_false] = ACTIONS(225), + [sym_none] = ACTIONS(225), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(231), - [sym__template_string_start] = ACTIONS(234), + [sym__string_start] = ACTIONS(233), + [sym__template_string_start] = ACTIONS(236), }, [STATE(66)] = { - [sym_named_expression] = STATE(1037), - [sym_list_splat] = STATE(1573), - [sym_dictionary_splat] = STATE(1573), - [sym_expression_list] = STATE(1725), - [sym_expression] = STATE(1277), - [sym_primary_expression] = STATE(704), - [sym_not_operator] = STATE(1037), - [sym_boolean_operator] = STATE(1037), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_comparison_operator] = STATE(1037), - [sym_lambda] = STATE(1037), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_conditional_expression] = STATE(1037), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_named_expression] = STATE(1038), + [sym_list_splat] = STATE(1562), + [sym_dictionary_splat] = STATE(1562), + [sym_expression_list] = STATE(1748), + [sym_expression] = STATE(1261), + [sym_primary_expression] = STATE(728), + [sym_not_operator] = STATE(1038), + [sym_boolean_operator] = STATE(1038), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_comparison_operator] = STATE(1038), + [sym_lambda] = STATE(1038), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_conditional_expression] = STATE(1038), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(268), [anon_sym_lazy] = ACTIONS(270), [anon_sym_DOT] = ACTIONS(272), @@ -16164,36 +16174,36 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(67)] = { - [sym_named_expression] = STATE(1037), - [sym_list_splat] = STATE(1573), - [sym_dictionary_splat] = STATE(1573), - [sym_expression_list] = STATE(1753), - [sym_expression] = STATE(1276), - [sym_primary_expression] = STATE(704), - [sym_not_operator] = STATE(1037), - [sym_boolean_operator] = STATE(1037), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_comparison_operator] = STATE(1037), - [sym_lambda] = STATE(1037), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_conditional_expression] = STATE(1037), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_named_expression] = STATE(1038), + [sym_list_splat] = STATE(1562), + [sym_dictionary_splat] = STATE(1562), + [sym_expression_list] = STATE(1757), + [sym_expression] = STATE(1259), + [sym_primary_expression] = STATE(728), + [sym_not_operator] = STATE(1038), + [sym_boolean_operator] = STATE(1038), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_comparison_operator] = STATE(1038), + [sym_lambda] = STATE(1038), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_conditional_expression] = STATE(1038), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(268), [anon_sym_lazy] = ACTIONS(270), [anon_sym_DOT] = ACTIONS(272), @@ -16264,61 +16274,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(68)] = { - [sym__simple_statements] = STATE(616), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(522), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -16362,61 +16372,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(69)] = { - [sym__simple_statements] = STATE(493), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(461), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -16460,61 +16470,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(70)] = { - [sym__simple_statements] = STATE(320), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(575), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -16558,61 +16568,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(71)] = { - [sym__simple_statements] = STATE(477), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(463), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -16656,61 +16666,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(72)] = { - [sym__simple_statements] = STATE(544), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(580), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -16754,61 +16764,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(73)] = { - [sym__simple_statements] = STATE(514), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(479), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -16852,61 +16862,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(74)] = { - [sym__simple_statements] = STATE(483), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(459), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -16950,61 +16960,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(75)] = { - [sym__simple_statements] = STATE(551), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(328), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -17048,61 +17058,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(76)] = { - [sym__simple_statements] = STATE(594), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(474), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -17146,146 +17156,48 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(77)] = { - [sym__simple_statements] = STATE(531), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), - [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [sym_identifier] = ACTIONS(7), - [anon_sym_lazy] = ACTIONS(9), - [anon_sym_import] = ACTIONS(11), - [anon_sym_from] = ACTIONS(13), - [anon_sym_LPAREN] = ACTIONS(15), - [anon_sym_STAR] = ACTIONS(17), - [anon_sym_print] = ACTIONS(19), - [anon_sym_assert] = ACTIONS(21), - [anon_sym_return] = ACTIONS(23), - [anon_sym_del] = ACTIONS(25), - [anon_sym_raise] = ACTIONS(27), - [anon_sym_pass] = ACTIONS(29), - [anon_sym_break] = ACTIONS(31), - [anon_sym_continue] = ACTIONS(33), - [anon_sym_async] = ACTIONS(319), - [anon_sym_match] = ACTIONS(319), - [anon_sym_DASH] = ACTIONS(49), - [anon_sym_PLUS] = ACTIONS(49), - [anon_sym_LBRACK] = ACTIONS(51), - [anon_sym_LBRACE] = ACTIONS(53), - [anon_sym_STAR_STAR] = ACTIONS(55), - [anon_sym_global] = ACTIONS(59), - [anon_sym_nonlocal] = ACTIONS(61), - [anon_sym_exec] = ACTIONS(63), - [anon_sym_type] = ACTIONS(65), - [anon_sym_not] = ACTIONS(71), - [anon_sym_TILDE] = ACTIONS(49), - [anon_sym_lambda] = ACTIONS(73), - [anon_sym_yield] = ACTIONS(75), - [sym_ellipsis] = ACTIONS(77), - [sym_integer] = ACTIONS(79), - [sym_float] = ACTIONS(77), - [anon_sym_await] = ACTIONS(81), - [sym_true] = ACTIONS(79), - [sym_false] = ACTIONS(79), - [sym_none] = ACTIONS(79), - [sym_comment] = ACTIONS(3), - [sym__newline] = ACTIONS(357), - [sym__indent] = ACTIONS(359), - [sym__string_start] = ACTIONS(83), - [sym__template_string_start] = ACTIONS(85), - }, - [STATE(78)] = { - [sym_chevron] = STATE(1323), - [sym_named_expression] = STATE(1126), - [sym_expression] = STATE(1223), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_attribute] = STATE(950), - [sym_subscript] = STATE(950), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [sym_identifier] = ACTIONS(361), - [anon_sym_lazy] = ACTIONS(363), + [sym_chevron] = STATE(1335), + [sym_named_expression] = STATE(1145), + [sym_expression] = STATE(1204), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_attribute] = STATE(905), + [sym_subscript] = STATE(905), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [sym_identifier] = ACTIONS(357), + [anon_sym_lazy] = ACTIONS(359), [anon_sym_DOT] = ACTIONS(272), [anon_sym_LPAREN] = ACTIONS(303), [anon_sym_COMMA] = ACTIONS(277), [anon_sym_STAR] = ACTIONS(272), - [anon_sym_print] = ACTIONS(363), - [anon_sym_GT_GT] = ACTIONS(365), + [anon_sym_print] = ACTIONS(359), + [anon_sym_GT_GT] = ACTIONS(361), [anon_sym_COLON_EQ] = ACTIONS(283), [anon_sym_if] = ACTIONS(272), [anon_sym_COLON] = ACTIONS(285), - [anon_sym_async] = ACTIONS(363), + [anon_sym_async] = ACTIONS(359), [anon_sym_in] = ACTIONS(272), - [anon_sym_match] = ACTIONS(363), + [anon_sym_match] = ACTIONS(359), [anon_sym_PIPE] = ACTIONS(272), [anon_sym_DASH] = ACTIONS(272), [anon_sym_PLUS] = ACTIONS(272), @@ -17293,8 +17205,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_LBRACE] = ACTIONS(53), [anon_sym_STAR_STAR] = ACTIONS(272), [anon_sym_EQ] = ACTIONS(285), - [anon_sym_exec] = ACTIONS(363), - [anon_sym_type] = ACTIONS(363), + [anon_sym_exec] = ACTIONS(359), + [anon_sym_type] = ACTIONS(359), [anon_sym_AT] = ACTIONS(272), [anon_sym_not] = ACTIONS(272), [anon_sym_and] = ACTIONS(272), @@ -17331,7 +17243,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_ellipsis] = ACTIONS(77), [sym_integer] = ACTIONS(79), [sym_float] = ACTIONS(77), - [anon_sym_await] = ACTIONS(367), + [anon_sym_await] = ACTIONS(363), [sym_true] = ACTIONS(79), [sym_false] = ACTIONS(79), [sym_none] = ACTIONS(79), @@ -17341,62 +17253,160 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(83), [sym__template_string_start] = ACTIONS(85), }, + [STATE(78)] = { + [sym__simple_statements] = STATE(514), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), + [sym_pattern_list] = STATE(1030), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [sym_identifier] = ACTIONS(7), + [anon_sym_lazy] = ACTIONS(9), + [anon_sym_import] = ACTIONS(11), + [anon_sym_from] = ACTIONS(13), + [anon_sym_LPAREN] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(17), + [anon_sym_print] = ACTIONS(19), + [anon_sym_assert] = ACTIONS(21), + [anon_sym_return] = ACTIONS(23), + [anon_sym_del] = ACTIONS(25), + [anon_sym_raise] = ACTIONS(27), + [anon_sym_pass] = ACTIONS(29), + [anon_sym_break] = ACTIONS(31), + [anon_sym_continue] = ACTIONS(33), + [anon_sym_async] = ACTIONS(319), + [anon_sym_match] = ACTIONS(319), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(51), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(55), + [anon_sym_global] = ACTIONS(59), + [anon_sym_nonlocal] = ACTIONS(61), + [anon_sym_exec] = ACTIONS(63), + [anon_sym_type] = ACTIONS(65), + [anon_sym_not] = ACTIONS(71), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_lambda] = ACTIONS(73), + [anon_sym_yield] = ACTIONS(75), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(81), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [sym__newline] = ACTIONS(365), + [sym__indent] = ACTIONS(367), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, [STATE(79)] = { - [sym__simple_statements] = STATE(561), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(582), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -17440,61 +17450,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(80)] = { - [sym__simple_statements] = STATE(562), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(527), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -17538,61 +17548,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(81)] = { - [sym__simple_statements] = STATE(441), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(586), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -17636,61 +17646,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(82)] = { - [sym__simple_statements] = STATE(568), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(535), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -17734,61 +17744,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(83)] = { - [sym__simple_statements] = STATE(482), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(588), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -17832,61 +17842,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(84)] = { - [sym__simple_statements] = STATE(448), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(537), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -17930,61 +17940,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(85)] = { - [sym__simple_statements] = STATE(570), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(538), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18028,61 +18038,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(86)] = { - [sym__simple_statements] = STATE(574), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(312), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18126,61 +18136,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(87)] = { - [sym__simple_statements] = STATE(511), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(542), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18224,61 +18234,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(88)] = { - [sym__simple_statements] = STATE(576), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(490), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18322,61 +18332,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(89)] = { - [sym__simple_statements] = STATE(613), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(440), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18420,61 +18430,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(90)] = { - [sym__simple_statements] = STATE(497), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(544), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18518,61 +18528,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(91)] = { - [sym__simple_statements] = STATE(485), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(503), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18616,61 +18626,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(92)] = { - [sym__simple_statements] = STATE(332), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(548), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18714,61 +18724,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(93)] = { - [sym__simple_statements] = STATE(580), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(489), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18812,61 +18822,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(94)] = { - [sym__simple_statements] = STATE(611), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(550), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -18910,61 +18920,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(95)] = { - [sym__simple_statements] = STATE(467), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(511), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19008,61 +19018,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(96)] = { - [sym__simple_statements] = STATE(456), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(487), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19106,61 +19116,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(97)] = { - [sym__simple_statements] = STATE(475), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(592), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19204,61 +19214,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(98)] = { - [sym__simple_statements] = STATE(500), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(554), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19302,61 +19312,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(99)] = { - [sym__simple_statements] = STATE(519), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(468), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19400,61 +19410,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(100)] = { - [sym__simple_statements] = STATE(536), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(442), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19498,61 +19508,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(101)] = { - [sym__simple_statements] = STATE(487), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(454), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19596,61 +19606,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(102)] = { - [sym__simple_statements] = STATE(539), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(493), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19694,61 +19704,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(103)] = { - [sym__simple_statements] = STATE(457), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(558), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19792,61 +19802,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(104)] = { - [sym__simple_statements] = STATE(590), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(600), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19890,61 +19900,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(105)] = { - [sym__simple_statements] = STATE(458), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(501), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -19988,61 +19998,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(106)] = { - [sym__simple_statements] = STATE(1216), - [sym_import_statement] = STATE(1402), - [sym_future_import_statement] = STATE(1402), - [sym_import_from_statement] = STATE(1402), - [sym_print_statement] = STATE(1402), - [sym_assert_statement] = STATE(1402), - [sym_expression_statement] = STATE(1402), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1402), - [sym_delete_statement] = STATE(1402), - [sym_raise_statement] = STATE(1402), - [sym_pass_statement] = STATE(1402), - [sym_break_statement] = STATE(1402), - [sym_continue_statement] = STATE(1402), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1402), - [sym_nonlocal_statement] = STATE(1402), - [sym_exec_statement] = STATE(1402), - [sym_type_alias_statement] = STATE(1402), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(470), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20086,61 +20096,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(107)] = { - [sym__simple_statements] = STATE(498), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(598), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20184,61 +20194,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(108)] = { - [sym__simple_statements] = STATE(505), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(609), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20282,61 +20292,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(109)] = { - [sym__simple_statements] = STATE(526), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(562), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20380,61 +20390,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(110)] = { - [sym__simple_statements] = STATE(596), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(443), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20478,61 +20488,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(111)] = { - [sym__simple_statements] = STATE(607), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(467), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20576,61 +20586,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(112)] = { - [sym__simple_statements] = STATE(474), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(497), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20674,61 +20684,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(113)] = { - [sym__simple_statements] = STATE(599), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(567), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20772,61 +20782,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(114)] = { - [sym__simple_statements] = STATE(449), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(605), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20870,61 +20880,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(115)] = { - [sym__simple_statements] = STATE(462), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(518), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -20968,61 +20978,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(116)] = { - [sym__simple_statements] = STATE(518), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(570), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21066,61 +21076,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(117)] = { - [sym__simple_statements] = STATE(532), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(452), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21164,61 +21174,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(118)] = { - [sym__simple_statements] = STATE(443), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(447), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21262,61 +21272,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(119)] = { - [sym__simple_statements] = STATE(463), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(1185), + [sym_import_statement] = STATE(1326), + [sym_future_import_statement] = STATE(1326), + [sym_import_from_statement] = STATE(1326), + [sym_print_statement] = STATE(1326), + [sym_assert_statement] = STATE(1326), + [sym_expression_statement] = STATE(1326), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1326), + [sym_delete_statement] = STATE(1326), + [sym_raise_statement] = STATE(1326), + [sym_pass_statement] = STATE(1326), + [sym_break_statement] = STATE(1326), + [sym_continue_statement] = STATE(1326), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1326), + [sym_nonlocal_statement] = STATE(1326), + [sym_exec_statement] = STATE(1326), + [sym_type_alias_statement] = STATE(1326), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21360,61 +21370,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(120)] = { - [sym__simple_statements] = STATE(555), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(498), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21458,61 +21468,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(121)] = { - [sym__simple_statements] = STATE(543), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(448), + [sym_import_statement] = STATE(1362), + [sym_future_import_statement] = STATE(1362), + [sym_import_from_statement] = STATE(1362), + [sym_print_statement] = STATE(1362), + [sym_assert_statement] = STATE(1362), + [sym_expression_statement] = STATE(1362), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1362), + [sym_delete_statement] = STATE(1362), + [sym_raise_statement] = STATE(1362), + [sym_pass_statement] = STATE(1362), + [sym_break_statement] = STATE(1362), + [sym_continue_statement] = STATE(1362), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1362), + [sym_nonlocal_statement] = STATE(1362), + [sym_exec_statement] = STATE(1362), + [sym_type_alias_statement] = STATE(1362), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21556,61 +21566,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(122)] = { - [sym__simple_statements] = STATE(608), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(611), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21654,61 +21664,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(123)] = { - [sym__simple_statements] = STATE(1183), - [sym_import_statement] = STATE(1402), - [sym_future_import_statement] = STATE(1402), - [sym_import_from_statement] = STATE(1402), - [sym_print_statement] = STATE(1402), - [sym_assert_statement] = STATE(1402), - [sym_expression_statement] = STATE(1402), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1402), - [sym_delete_statement] = STATE(1402), - [sym_raise_statement] = STATE(1402), - [sym_pass_statement] = STATE(1402), - [sym_break_statement] = STATE(1402), - [sym_continue_statement] = STATE(1402), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1402), - [sym_nonlocal_statement] = STATE(1402), - [sym_exec_statement] = STATE(1402), - [sym_type_alias_statement] = STATE(1402), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(565), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21752,61 +21762,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(124)] = { - [sym__simple_statements] = STATE(446), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(1201), + [sym_import_statement] = STATE(1326), + [sym_future_import_statement] = STATE(1326), + [sym_import_from_statement] = STATE(1326), + [sym_print_statement] = STATE(1326), + [sym_assert_statement] = STATE(1326), + [sym_expression_statement] = STATE(1326), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1326), + [sym_delete_statement] = STATE(1326), + [sym_raise_statement] = STATE(1326), + [sym_pass_statement] = STATE(1326), + [sym_break_statement] = STATE(1326), + [sym_continue_statement] = STATE(1326), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1326), + [sym_nonlocal_statement] = STATE(1326), + [sym_exec_statement] = STATE(1326), + [sym_type_alias_statement] = STATE(1326), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21850,61 +21860,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(125)] = { - [sym__simple_statements] = STATE(548), - [sym_import_statement] = STATE(1346), - [sym_future_import_statement] = STATE(1346), - [sym_import_from_statement] = STATE(1346), - [sym_print_statement] = STATE(1346), - [sym_assert_statement] = STATE(1346), - [sym_expression_statement] = STATE(1346), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1346), - [sym_delete_statement] = STATE(1346), - [sym_raise_statement] = STATE(1346), - [sym_pass_statement] = STATE(1346), - [sym_break_statement] = STATE(1346), - [sym_continue_statement] = STATE(1346), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1346), - [sym_nonlocal_statement] = STATE(1346), - [sym_exec_statement] = STATE(1346), - [sym_type_alias_statement] = STATE(1346), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(614), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -21948,61 +21958,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(126)] = { - [sym__simple_statements] = STATE(585), - [sym_import_statement] = STATE(1345), - [sym_future_import_statement] = STATE(1345), - [sym_import_from_statement] = STATE(1345), - [sym_print_statement] = STATE(1345), - [sym_assert_statement] = STATE(1345), - [sym_expression_statement] = STATE(1345), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1345), - [sym_delete_statement] = STATE(1345), - [sym_raise_statement] = STATE(1345), - [sym_pass_statement] = STATE(1345), - [sym_break_statement] = STATE(1345), - [sym_continue_statement] = STATE(1345), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1345), - [sym_nonlocal_statement] = STATE(1345), - [sym_exec_statement] = STATE(1345), - [sym_type_alias_statement] = STATE(1345), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym__simple_statements] = STATE(572), + [sym_import_statement] = STATE(1327), + [sym_future_import_statement] = STATE(1327), + [sym_import_from_statement] = STATE(1327), + [sym_print_statement] = STATE(1327), + [sym_assert_statement] = STATE(1327), + [sym_expression_statement] = STATE(1327), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1327), + [sym_delete_statement] = STATE(1327), + [sym_raise_statement] = STATE(1327), + [sym_pass_statement] = STATE(1327), + [sym_break_statement] = STATE(1327), + [sym_continue_statement] = STATE(1327), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1327), + [sym_nonlocal_statement] = STATE(1327), + [sym_exec_statement] = STATE(1327), + [sym_type_alias_statement] = STATE(1327), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -22046,60 +22056,60 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(127)] = { - [sym_import_statement] = STATE(1578), - [sym_future_import_statement] = STATE(1578), - [sym_import_from_statement] = STATE(1578), - [sym_print_statement] = STATE(1578), - [sym_assert_statement] = STATE(1578), - [sym_expression_statement] = STATE(1578), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1578), - [sym_delete_statement] = STATE(1578), - [sym_raise_statement] = STATE(1578), - [sym_pass_statement] = STATE(1578), - [sym_break_statement] = STATE(1578), - [sym_continue_statement] = STATE(1578), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1578), - [sym_nonlocal_statement] = STATE(1578), - [sym_exec_statement] = STATE(1578), - [sym_type_alias_statement] = STATE(1578), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_import_statement] = STATE(1614), + [sym_future_import_statement] = STATE(1614), + [sym_import_from_statement] = STATE(1614), + [sym_print_statement] = STATE(1614), + [sym_assert_statement] = STATE(1614), + [sym_expression_statement] = STATE(1614), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1614), + [sym_delete_statement] = STATE(1614), + [sym_raise_statement] = STATE(1614), + [sym_pass_statement] = STATE(1614), + [sym_break_statement] = STATE(1614), + [sym_continue_statement] = STATE(1614), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1614), + [sym_nonlocal_statement] = STATE(1614), + [sym_exec_statement] = STATE(1614), + [sym_type_alias_statement] = STATE(1614), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -22142,60 +22152,60 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(128)] = { - [sym_import_statement] = STATE(1578), - [sym_future_import_statement] = STATE(1578), - [sym_import_from_statement] = STATE(1578), - [sym_print_statement] = STATE(1578), - [sym_assert_statement] = STATE(1578), - [sym_expression_statement] = STATE(1578), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1578), - [sym_delete_statement] = STATE(1578), - [sym_raise_statement] = STATE(1578), - [sym_pass_statement] = STATE(1578), - [sym_break_statement] = STATE(1578), - [sym_continue_statement] = STATE(1578), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1578), - [sym_nonlocal_statement] = STATE(1578), - [sym_exec_statement] = STATE(1578), - [sym_type_alias_statement] = STATE(1578), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_import_statement] = STATE(1614), + [sym_future_import_statement] = STATE(1614), + [sym_import_from_statement] = STATE(1614), + [sym_print_statement] = STATE(1614), + [sym_assert_statement] = STATE(1614), + [sym_expression_statement] = STATE(1614), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1614), + [sym_delete_statement] = STATE(1614), + [sym_raise_statement] = STATE(1614), + [sym_pass_statement] = STATE(1614), + [sym_break_statement] = STATE(1614), + [sym_continue_statement] = STATE(1614), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1614), + [sym_nonlocal_statement] = STATE(1614), + [sym_exec_statement] = STATE(1614), + [sym_type_alias_statement] = STATE(1614), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -22238,60 +22248,60 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(129)] = { - [sym_import_statement] = STATE(1578), - [sym_future_import_statement] = STATE(1578), - [sym_import_from_statement] = STATE(1578), - [sym_print_statement] = STATE(1578), - [sym_assert_statement] = STATE(1578), - [sym_expression_statement] = STATE(1578), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1578), - [sym_delete_statement] = STATE(1578), - [sym_raise_statement] = STATE(1578), - [sym_pass_statement] = STATE(1578), - [sym_break_statement] = STATE(1578), - [sym_continue_statement] = STATE(1578), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1578), - [sym_nonlocal_statement] = STATE(1578), - [sym_exec_statement] = STATE(1578), - [sym_type_alias_statement] = STATE(1578), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_import_statement] = STATE(1614), + [sym_future_import_statement] = STATE(1614), + [sym_import_from_statement] = STATE(1614), + [sym_print_statement] = STATE(1614), + [sym_assert_statement] = STATE(1614), + [sym_expression_statement] = STATE(1614), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1614), + [sym_delete_statement] = STATE(1614), + [sym_raise_statement] = STATE(1614), + [sym_pass_statement] = STATE(1614), + [sym_break_statement] = STATE(1614), + [sym_continue_statement] = STATE(1614), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1614), + [sym_nonlocal_statement] = STATE(1614), + [sym_exec_statement] = STATE(1614), + [sym_type_alias_statement] = STATE(1614), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -22334,60 +22344,60 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(130)] = { - [sym_import_statement] = STATE(1578), - [sym_future_import_statement] = STATE(1578), - [sym_import_from_statement] = STATE(1578), - [sym_print_statement] = STATE(1578), - [sym_assert_statement] = STATE(1578), - [sym_expression_statement] = STATE(1578), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1578), - [sym_delete_statement] = STATE(1578), - [sym_raise_statement] = STATE(1578), - [sym_pass_statement] = STATE(1578), - [sym_break_statement] = STATE(1578), - [sym_continue_statement] = STATE(1578), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1578), - [sym_nonlocal_statement] = STATE(1578), - [sym_exec_statement] = STATE(1578), - [sym_type_alias_statement] = STATE(1578), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_import_statement] = STATE(1614), + [sym_future_import_statement] = STATE(1614), + [sym_import_from_statement] = STATE(1614), + [sym_print_statement] = STATE(1614), + [sym_assert_statement] = STATE(1614), + [sym_expression_statement] = STATE(1614), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1614), + [sym_delete_statement] = STATE(1614), + [sym_raise_statement] = STATE(1614), + [sym_pass_statement] = STATE(1614), + [sym_break_statement] = STATE(1614), + [sym_continue_statement] = STATE(1614), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1614), + [sym_nonlocal_statement] = STATE(1614), + [sym_exec_statement] = STATE(1614), + [sym_type_alias_statement] = STATE(1614), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -22430,60 +22440,60 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(131)] = { - [sym_import_statement] = STATE(1578), - [sym_future_import_statement] = STATE(1578), - [sym_import_from_statement] = STATE(1578), - [sym_print_statement] = STATE(1578), - [sym_assert_statement] = STATE(1578), - [sym_expression_statement] = STATE(1578), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1578), - [sym_delete_statement] = STATE(1578), - [sym_raise_statement] = STATE(1578), - [sym_pass_statement] = STATE(1578), - [sym_break_statement] = STATE(1578), - [sym_continue_statement] = STATE(1578), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1578), - [sym_nonlocal_statement] = STATE(1578), - [sym_exec_statement] = STATE(1578), - [sym_type_alias_statement] = STATE(1578), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_import_statement] = STATE(1614), + [sym_future_import_statement] = STATE(1614), + [sym_import_from_statement] = STATE(1614), + [sym_print_statement] = STATE(1614), + [sym_assert_statement] = STATE(1614), + [sym_expression_statement] = STATE(1614), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1614), + [sym_delete_statement] = STATE(1614), + [sym_raise_statement] = STATE(1614), + [sym_pass_statement] = STATE(1614), + [sym_break_statement] = STATE(1614), + [sym_continue_statement] = STATE(1614), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1614), + [sym_nonlocal_statement] = STATE(1614), + [sym_exec_statement] = STATE(1614), + [sym_type_alias_statement] = STATE(1614), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -22526,60 +22536,60 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(132)] = { - [sym_import_statement] = STATE(1578), - [sym_future_import_statement] = STATE(1578), - [sym_import_from_statement] = STATE(1578), - [sym_print_statement] = STATE(1578), - [sym_assert_statement] = STATE(1578), - [sym_expression_statement] = STATE(1578), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1578), - [sym_delete_statement] = STATE(1578), - [sym_raise_statement] = STATE(1578), - [sym_pass_statement] = STATE(1578), - [sym_break_statement] = STATE(1578), - [sym_continue_statement] = STATE(1578), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1578), - [sym_nonlocal_statement] = STATE(1578), - [sym_exec_statement] = STATE(1578), - [sym_type_alias_statement] = STATE(1578), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_import_statement] = STATE(1614), + [sym_future_import_statement] = STATE(1614), + [sym_import_from_statement] = STATE(1614), + [sym_print_statement] = STATE(1614), + [sym_assert_statement] = STATE(1614), + [sym_expression_statement] = STATE(1614), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1614), + [sym_delete_statement] = STATE(1614), + [sym_raise_statement] = STATE(1614), + [sym_pass_statement] = STATE(1614), + [sym_break_statement] = STATE(1614), + [sym_continue_statement] = STATE(1614), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1614), + [sym_nonlocal_statement] = STATE(1614), + [sym_exec_statement] = STATE(1614), + [sym_type_alias_statement] = STATE(1614), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -22622,60 +22632,60 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(133)] = { - [sym_import_statement] = STATE(1578), - [sym_future_import_statement] = STATE(1578), - [sym_import_from_statement] = STATE(1578), - [sym_print_statement] = STATE(1578), - [sym_assert_statement] = STATE(1578), - [sym_expression_statement] = STATE(1578), - [sym_named_expression] = STATE(1126), - [sym_return_statement] = STATE(1578), - [sym_delete_statement] = STATE(1578), - [sym_raise_statement] = STATE(1578), - [sym_pass_statement] = STATE(1578), - [sym_break_statement] = STATE(1578), - [sym_continue_statement] = STATE(1578), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_global_statement] = STATE(1578), - [sym_nonlocal_statement] = STATE(1578), - [sym_exec_statement] = STATE(1578), - [sym_type_alias_statement] = STATE(1578), - [sym_expression_list] = STATE(1545), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1191), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1545), - [sym_augmented_assignment] = STATE(1545), + [sym_import_statement] = STATE(1614), + [sym_future_import_statement] = STATE(1614), + [sym_import_from_statement] = STATE(1614), + [sym_print_statement] = STATE(1614), + [sym_assert_statement] = STATE(1614), + [sym_expression_statement] = STATE(1614), + [sym_named_expression] = STATE(1145), + [sym_return_statement] = STATE(1614), + [sym_delete_statement] = STATE(1614), + [sym_raise_statement] = STATE(1614), + [sym_pass_statement] = STATE(1614), + [sym_break_statement] = STATE(1614), + [sym_continue_statement] = STATE(1614), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_global_statement] = STATE(1614), + [sym_nonlocal_statement] = STATE(1614), + [sym_exec_statement] = STATE(1614), + [sym_type_alias_statement] = STATE(1614), + [sym_expression_list] = STATE(1570), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1233), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1570), + [sym_augmented_assignment] = STATE(1570), [sym_pattern_list] = STATE(1030), - [sym_yield] = STATE(1545), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_yield] = STATE(1570), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(9), [anon_sym_import] = ACTIONS(11), @@ -22717,26 +22727,26 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(134)] = { - [sym_primary_expression] = STATE(799), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_attribute] = STATE(950), - [sym_subscript] = STATE(950), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym_primary_expression] = STATE(818), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_attribute] = STATE(905), + [sym_subscript] = STATE(905), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(79), [anon_sym_lazy] = ACTIONS(573), [anon_sym_DOT] = ACTIONS(272), @@ -22806,26 +22816,26 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(135)] = { - [sym_primary_expression] = STATE(766), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), @@ -22893,26 +22903,26 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(136)] = { - [sym_primary_expression] = STATE(766), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), @@ -22971,26 +22981,26 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(137)] = { - [sym_primary_expression] = STATE(766), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), @@ -23048,26 +23058,26 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(138)] = { - [sym_primary_expression] = STATE(747), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_primary_expression] = STATE(753), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), @@ -23125,26 +23135,178 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(139)] = { - [sym_primary_expression] = STATE(805), - [sym_binary_operator] = STATE(949), - [sym_unary_operator] = STATE(949), - [sym_attribute] = STATE(949), - [sym_subscript] = STATE(949), - [sym_call] = STATE(949), - [sym_list] = STATE(949), - [sym_set] = STATE(949), - [sym_tuple] = STATE(949), - [sym_dictionary] = STATE(949), - [sym_list_comprehension] = STATE(949), - [sym_dictionary_comprehension] = STATE(949), - [sym_set_comprehension] = STATE(949), - [sym_generator_expression] = STATE(949), - [sym_parenthesized_expression] = STATE(949), - [sym_concatenated_string] = STATE(949), - [sym_string] = STATE(781), - [sym_concatenated_template_string] = STATE(949), - [sym_template_string] = STATE(782), - [sym_await] = STATE(949), + [sym_primary_expression] = STATE(818), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_attribute] = STATE(905), + [sym_subscript] = STATE(905), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [sym_identifier] = ACTIONS(79), + [anon_sym_lazy] = ACTIONS(573), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_from] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(575), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(573), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(283), + [anon_sym_if] = ACTIONS(272), + [anon_sym_async] = ACTIONS(573), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(573), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(579), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(272), + [anon_sym_exec] = ACTIONS(573), + [anon_sym_type] = ACTIONS(573), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(581), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [anon_sym_SEMI] = ACTIONS(303), + [sym__newline] = ACTIONS(303), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, + [STATE(140)] = { + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(585), + [anon_sym_RPAREN] = ACTIONS(307), + [anon_sym_COMMA] = ACTIONS(307), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(583), + [anon_sym_GT_GT] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(307), + [anon_sym_async] = ACTIONS(583), + [anon_sym_in] = ACTIONS(285), + [anon_sym_match] = ACTIONS(583), + [anon_sym_PIPE] = ACTIONS(272), + [anon_sym_DASH] = ACTIONS(594), + [anon_sym_PLUS] = ACTIONS(594), + [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_RBRACK] = ACTIONS(307), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_STAR_STAR] = ACTIONS(272), + [anon_sym_EQ] = ACTIONS(307), + [anon_sym_exec] = ACTIONS(583), + [anon_sym_type] = ACTIONS(583), + [anon_sym_AT] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(272), + [anon_sym_SLASH_SLASH] = ACTIONS(272), + [anon_sym_AMP] = ACTIONS(272), + [anon_sym_CARET] = ACTIONS(272), + [anon_sym_LT_LT] = ACTIONS(272), + [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_PLUS_EQ] = ACTIONS(307), + [anon_sym_DASH_EQ] = ACTIONS(307), + [anon_sym_STAR_EQ] = ACTIONS(307), + [anon_sym_SLASH_EQ] = ACTIONS(307), + [anon_sym_AT_EQ] = ACTIONS(307), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(307), + [anon_sym_PERCENT_EQ] = ACTIONS(307), + [anon_sym_STAR_STAR_EQ] = ACTIONS(307), + [anon_sym_GT_GT_EQ] = ACTIONS(307), + [anon_sym_LT_LT_EQ] = ACTIONS(307), + [anon_sym_AMP_EQ] = ACTIONS(307), + [anon_sym_CARET_EQ] = ACTIONS(307), + [anon_sym_PIPE_EQ] = ACTIONS(307), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(600), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), + [sym_comment] = ACTIONS(3), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), + }, + [STATE(141)] = { + [sym_primary_expression] = STATE(819), + [sym_binary_operator] = STATE(879), + [sym_unary_operator] = STATE(879), + [sym_attribute] = STATE(879), + [sym_subscript] = STATE(879), + [sym_call] = STATE(879), + [sym_list] = STATE(879), + [sym_set] = STATE(879), + [sym_tuple] = STATE(879), + [sym_dictionary] = STATE(879), + [sym_list_comprehension] = STATE(879), + [sym_dictionary_comprehension] = STATE(879), + [sym_set_comprehension] = STATE(879), + [sym_generator_expression] = STATE(879), + [sym_parenthesized_expression] = STATE(879), + [sym_concatenated_string] = STATE(879), + [sym_string] = STATE(771), + [sym_concatenated_template_string] = STATE(879), + [sym_template_string] = STATE(772), + [sym_await] = STATE(879), [sym_identifier] = ACTIONS(612), [anon_sym_lazy] = ACTIONS(614), [anon_sym_DOT] = ACTIONS(272), @@ -23200,124 +23362,48 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(630), [sym__template_string_start] = ACTIONS(632), }, - [STATE(140)] = { - [sym_primary_expression] = STATE(799), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_attribute] = STATE(950), - [sym_subscript] = STATE(950), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [sym_identifier] = ACTIONS(79), - [anon_sym_lazy] = ACTIONS(573), - [anon_sym_DOT] = ACTIONS(272), - [anon_sym_from] = ACTIONS(272), - [anon_sym_LPAREN] = ACTIONS(575), - [anon_sym_COMMA] = ACTIONS(303), - [anon_sym_STAR] = ACTIONS(272), - [anon_sym_print] = ACTIONS(573), - [anon_sym_GT_GT] = ACTIONS(303), - [anon_sym_COLON_EQ] = ACTIONS(283), - [anon_sym_if] = ACTIONS(272), - [anon_sym_async] = ACTIONS(573), - [anon_sym_in] = ACTIONS(272), - [anon_sym_match] = ACTIONS(573), - [anon_sym_PIPE] = ACTIONS(303), - [anon_sym_DASH] = ACTIONS(49), - [anon_sym_PLUS] = ACTIONS(49), - [anon_sym_LBRACK] = ACTIONS(579), - [anon_sym_LBRACE] = ACTIONS(53), - [anon_sym_STAR_STAR] = ACTIONS(303), - [anon_sym_EQ] = ACTIONS(272), - [anon_sym_exec] = ACTIONS(573), - [anon_sym_type] = ACTIONS(573), - [anon_sym_AT] = ACTIONS(303), - [anon_sym_not] = ACTIONS(272), - [anon_sym_and] = ACTIONS(272), - [anon_sym_or] = ACTIONS(272), - [anon_sym_SLASH] = ACTIONS(272), - [anon_sym_PERCENT] = ACTIONS(303), - [anon_sym_SLASH_SLASH] = ACTIONS(303), - [anon_sym_AMP] = ACTIONS(303), - [anon_sym_CARET] = ACTIONS(303), - [anon_sym_LT_LT] = ACTIONS(303), - [anon_sym_TILDE] = ACTIONS(49), - [anon_sym_LT] = ACTIONS(272), - [anon_sym_LT_EQ] = ACTIONS(303), - [anon_sym_EQ_EQ] = ACTIONS(303), - [anon_sym_BANG_EQ] = ACTIONS(303), - [anon_sym_GT_EQ] = ACTIONS(303), - [anon_sym_GT] = ACTIONS(272), - [anon_sym_LT_GT] = ACTIONS(303), - [anon_sym_is] = ACTIONS(272), - [sym_ellipsis] = ACTIONS(77), - [sym_integer] = ACTIONS(79), - [sym_float] = ACTIONS(77), - [anon_sym_await] = ACTIONS(581), - [sym_true] = ACTIONS(79), - [sym_false] = ACTIONS(79), - [sym_none] = ACTIONS(79), - [sym_comment] = ACTIONS(3), - [anon_sym_SEMI] = ACTIONS(303), - [sym__newline] = ACTIONS(303), - [sym__string_start] = ACTIONS(83), - [sym__template_string_start] = ACTIONS(85), - }, - [STATE(141)] = { - [sym_primary_expression] = STATE(766), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [STATE(142)] = { + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), [anon_sym_LPAREN] = ACTIONS(585), - [anon_sym_RPAREN] = ACTIONS(307), - [anon_sym_COMMA] = ACTIONS(307), + [anon_sym_RPAREN] = ACTIONS(598), + [anon_sym_COMMA] = ACTIONS(598), [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), [anon_sym_GT_GT] = ACTIONS(272), - [anon_sym_COLON] = ACTIONS(307), + [anon_sym_COLON] = ACTIONS(598), [anon_sym_async] = ACTIONS(583), - [anon_sym_in] = ACTIONS(285), + [anon_sym_in] = ACTIONS(592), [anon_sym_match] = ACTIONS(583), [anon_sym_PIPE] = ACTIONS(272), [anon_sym_DASH] = ACTIONS(594), [anon_sym_PLUS] = ACTIONS(594), [anon_sym_LBRACK] = ACTIONS(596), - [anon_sym_RBRACK] = ACTIONS(307), + [anon_sym_RBRACK] = ACTIONS(598), [anon_sym_LBRACE] = ACTIONS(293), [anon_sym_STAR_STAR] = ACTIONS(272), - [anon_sym_EQ] = ACTIONS(307), + [anon_sym_EQ] = ACTIONS(598), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), [anon_sym_AT] = ACTIONS(272), @@ -23328,19 +23414,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_CARET] = ACTIONS(272), [anon_sym_LT_LT] = ACTIONS(272), [anon_sym_TILDE] = ACTIONS(301), - [anon_sym_PLUS_EQ] = ACTIONS(307), - [anon_sym_DASH_EQ] = ACTIONS(307), - [anon_sym_STAR_EQ] = ACTIONS(307), - [anon_sym_SLASH_EQ] = ACTIONS(307), - [anon_sym_AT_EQ] = ACTIONS(307), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(307), - [anon_sym_PERCENT_EQ] = ACTIONS(307), - [anon_sym_STAR_STAR_EQ] = ACTIONS(307), - [anon_sym_GT_GT_EQ] = ACTIONS(307), - [anon_sym_LT_LT_EQ] = ACTIONS(307), - [anon_sym_AMP_EQ] = ACTIONS(307), - [anon_sym_CARET_EQ] = ACTIONS(307), - [anon_sym_PIPE_EQ] = ACTIONS(307), + [anon_sym_PLUS_EQ] = ACTIONS(598), + [anon_sym_DASH_EQ] = ACTIONS(598), + [anon_sym_STAR_EQ] = ACTIONS(598), + [anon_sym_SLASH_EQ] = ACTIONS(598), + [anon_sym_AT_EQ] = ACTIONS(598), + [anon_sym_SLASH_SLASH_EQ] = ACTIONS(598), + [anon_sym_PERCENT_EQ] = ACTIONS(598), + [anon_sym_STAR_STAR_EQ] = ACTIONS(598), + [anon_sym_GT_GT_EQ] = ACTIONS(598), + [anon_sym_LT_LT_EQ] = ACTIONS(598), + [anon_sym_AMP_EQ] = ACTIONS(598), + [anon_sym_CARET_EQ] = ACTIONS(598), + [anon_sym_PIPE_EQ] = ACTIONS(598), [sym_ellipsis] = ACTIONS(309), [sym_integer] = ACTIONS(311), [sym_float] = ACTIONS(309), @@ -23352,27 +23438,27 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(315), [sym__template_string_start] = ACTIONS(317), }, - [STATE(142)] = { - [sym_primary_expression] = STATE(747), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [STATE(143)] = { + [sym_primary_expression] = STATE(753), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), @@ -23428,127 +23514,51 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(315), [sym__template_string_start] = ACTIONS(317), }, - [STATE(143)] = { - [sym_primary_expression] = STATE(766), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), - [sym_identifier] = ACTIONS(311), - [anon_sym_lazy] = ACTIONS(583), - [anon_sym_DOT] = ACTIONS(272), - [anon_sym_LPAREN] = ACTIONS(585), - [anon_sym_RPAREN] = ACTIONS(598), - [anon_sym_COMMA] = ACTIONS(598), - [anon_sym_STAR] = ACTIONS(272), - [anon_sym_print] = ACTIONS(583), - [anon_sym_GT_GT] = ACTIONS(272), - [anon_sym_COLON] = ACTIONS(598), - [anon_sym_async] = ACTIONS(583), - [anon_sym_in] = ACTIONS(592), - [anon_sym_match] = ACTIONS(583), - [anon_sym_PIPE] = ACTIONS(272), - [anon_sym_DASH] = ACTIONS(594), - [anon_sym_PLUS] = ACTIONS(594), - [anon_sym_LBRACK] = ACTIONS(596), - [anon_sym_RBRACK] = ACTIONS(598), - [anon_sym_LBRACE] = ACTIONS(293), - [anon_sym_STAR_STAR] = ACTIONS(272), - [anon_sym_EQ] = ACTIONS(598), - [anon_sym_exec] = ACTIONS(583), - [anon_sym_type] = ACTIONS(583), - [anon_sym_AT] = ACTIONS(272), - [anon_sym_SLASH] = ACTIONS(272), - [anon_sym_PERCENT] = ACTIONS(272), - [anon_sym_SLASH_SLASH] = ACTIONS(272), - [anon_sym_AMP] = ACTIONS(272), - [anon_sym_CARET] = ACTIONS(272), - [anon_sym_LT_LT] = ACTIONS(272), - [anon_sym_TILDE] = ACTIONS(301), - [anon_sym_PLUS_EQ] = ACTIONS(598), - [anon_sym_DASH_EQ] = ACTIONS(598), - [anon_sym_STAR_EQ] = ACTIONS(598), - [anon_sym_SLASH_EQ] = ACTIONS(598), - [anon_sym_AT_EQ] = ACTIONS(598), - [anon_sym_SLASH_SLASH_EQ] = ACTIONS(598), - [anon_sym_PERCENT_EQ] = ACTIONS(598), - [anon_sym_STAR_STAR_EQ] = ACTIONS(598), - [anon_sym_GT_GT_EQ] = ACTIONS(598), - [anon_sym_LT_LT_EQ] = ACTIONS(598), - [anon_sym_AMP_EQ] = ACTIONS(598), - [anon_sym_CARET_EQ] = ACTIONS(598), - [anon_sym_PIPE_EQ] = ACTIONS(598), - [sym_ellipsis] = ACTIONS(309), - [sym_integer] = ACTIONS(311), - [sym_float] = ACTIONS(309), - [anon_sym_await] = ACTIONS(600), - [sym_true] = ACTIONS(311), - [sym_false] = ACTIONS(311), - [sym_none] = ACTIONS(311), - [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(315), - [sym__template_string_start] = ACTIONS(317), - }, [STATE(144)] = { - [sym_primary_expression] = STATE(747), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), - [sym_identifier] = ACTIONS(311), - [anon_sym_lazy] = ACTIONS(583), + [sym_primary_expression] = STATE(845), + [sym_binary_operator] = STATE(960), + [sym_unary_operator] = STATE(960), + [sym_attribute] = STATE(960), + [sym_subscript] = STATE(960), + [sym_call] = STATE(960), + [sym_list] = STATE(960), + [sym_set] = STATE(960), + [sym_tuple] = STATE(960), + [sym_dictionary] = STATE(960), + [sym_list_comprehension] = STATE(960), + [sym_dictionary_comprehension] = STATE(960), + [sym_set_comprehension] = STATE(960), + [sym_generator_expression] = STATE(960), + [sym_parenthesized_expression] = STATE(960), + [sym_concatenated_string] = STATE(960), + [sym_string] = STATE(814), + [sym_concatenated_template_string] = STATE(960), + [sym_template_string] = STATE(815), + [sym_await] = STATE(960), + [sym_identifier] = ACTIONS(634), + [anon_sym_lazy] = ACTIONS(636), [anon_sym_DOT] = ACTIONS(272), - [anon_sym_LPAREN] = ACTIONS(602), + [anon_sym_LPAREN] = ACTIONS(638), [anon_sym_RPAREN] = ACTIONS(303), [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_as] = ACTIONS(272), [anon_sym_STAR] = ACTIONS(272), - [anon_sym_print] = ACTIONS(583), + [anon_sym_print] = ACTIONS(636), [anon_sym_GT_GT] = ACTIONS(303), - [anon_sym_COLON_EQ] = ACTIONS(604), + [anon_sym_COLON_EQ] = ACTIONS(640), [anon_sym_if] = ACTIONS(272), - [anon_sym_async] = ACTIONS(583), - [anon_sym_for] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(272), + [anon_sym_async] = ACTIONS(636), [anon_sym_in] = ACTIONS(272), - [anon_sym_match] = ACTIONS(583), + [anon_sym_match] = ACTIONS(636), [anon_sym_PIPE] = ACTIONS(303), - [anon_sym_DASH] = ACTIONS(606), - [anon_sym_PLUS] = ACTIONS(606), - [anon_sym_LBRACK] = ACTIONS(608), - [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_DASH] = ACTIONS(642), + [anon_sym_PLUS] = ACTIONS(642), + [anon_sym_LBRACK] = ACTIONS(644), + [anon_sym_LBRACE] = ACTIONS(646), [anon_sym_STAR_STAR] = ACTIONS(303), - [anon_sym_EQ] = ACTIONS(634), - [anon_sym_exec] = ACTIONS(583), - [anon_sym_type] = ACTIONS(583), + [anon_sym_exec] = ACTIONS(636), + [anon_sym_type] = ACTIONS(636), [anon_sym_AT] = ACTIONS(303), [anon_sym_not] = ACTIONS(272), [anon_sym_and] = ACTIONS(272), @@ -23559,7 +23569,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(303), [anon_sym_CARET] = ACTIONS(303), [anon_sym_LT_LT] = ACTIONS(303), - [anon_sym_TILDE] = ACTIONS(606), + [anon_sym_TILDE] = ACTIONS(642), [anon_sym_LT] = ACTIONS(272), [anon_sym_LT_EQ] = ACTIONS(303), [anon_sym_EQ_EQ] = ACTIONS(303), @@ -23568,60 +23578,60 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_GT] = ACTIONS(272), [anon_sym_LT_GT] = ACTIONS(303), [anon_sym_is] = ACTIONS(272), - [sym_ellipsis] = ACTIONS(309), - [sym_integer] = ACTIONS(311), - [sym_float] = ACTIONS(309), - [anon_sym_await] = ACTIONS(610), - [sym_true] = ACTIONS(311), - [sym_false] = ACTIONS(311), - [sym_none] = ACTIONS(311), + [sym_ellipsis] = ACTIONS(648), + [sym_integer] = ACTIONS(634), + [sym_float] = ACTIONS(648), + [anon_sym_await] = ACTIONS(650), + [sym_true] = ACTIONS(634), + [sym_false] = ACTIONS(634), + [sym_none] = ACTIONS(634), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(315), - [sym__template_string_start] = ACTIONS(317), + [sym__string_start] = ACTIONS(652), + [sym__template_string_start] = ACTIONS(654), }, [STATE(145)] = { - [sym_primary_expression] = STATE(808), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_primary_expression] = STATE(753), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), - [anon_sym_LPAREN] = ACTIONS(636), + [anon_sym_LPAREN] = ACTIONS(602), + [anon_sym_RPAREN] = ACTIONS(303), [anon_sym_COMMA] = ACTIONS(303), [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), [anon_sym_GT_GT] = ACTIONS(303), - [anon_sym_COLON_EQ] = ACTIONS(638), + [anon_sym_COLON_EQ] = ACTIONS(604), [anon_sym_if] = ACTIONS(272), - [anon_sym_COLON] = ACTIONS(272), [anon_sym_async] = ACTIONS(583), [anon_sym_for] = ACTIONS(272), [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), [anon_sym_PIPE] = ACTIONS(303), - [anon_sym_DASH] = ACTIONS(640), - [anon_sym_PLUS] = ACTIONS(640), - [anon_sym_LBRACK] = ACTIONS(642), + [anon_sym_DASH] = ACTIONS(606), + [anon_sym_PLUS] = ACTIONS(606), + [anon_sym_LBRACK] = ACTIONS(608), [anon_sym_LBRACE] = ACTIONS(293), - [anon_sym_RBRACE] = ACTIONS(303), [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(656), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), [anon_sym_AT] = ACTIONS(303), @@ -23634,7 +23644,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(303), [anon_sym_CARET] = ACTIONS(303), [anon_sym_LT_LT] = ACTIONS(303), - [anon_sym_TILDE] = ACTIONS(640), + [anon_sym_TILDE] = ACTIONS(606), [anon_sym_LT] = ACTIONS(272), [anon_sym_LT_EQ] = ACTIONS(303), [anon_sym_EQ_EQ] = ACTIONS(303), @@ -23646,7 +23656,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_ellipsis] = ACTIONS(309), [sym_integer] = ACTIONS(311), [sym_float] = ACTIONS(309), - [anon_sym_await] = ACTIONS(644), + [anon_sym_await] = ACTIONS(610), [sym_true] = ACTIONS(311), [sym_false] = ACTIONS(311), [sym_none] = ACTIONS(311), @@ -23655,101 +23665,26 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(146)] = { - [sym_primary_expression] = STATE(839), - [sym_binary_operator] = STATE(985), - [sym_unary_operator] = STATE(985), - [sym_attribute] = STATE(985), - [sym_subscript] = STATE(985), - [sym_call] = STATE(985), - [sym_list] = STATE(985), - [sym_set] = STATE(985), - [sym_tuple] = STATE(985), - [sym_dictionary] = STATE(985), - [sym_list_comprehension] = STATE(985), - [sym_dictionary_comprehension] = STATE(985), - [sym_set_comprehension] = STATE(985), - [sym_generator_expression] = STATE(985), - [sym_parenthesized_expression] = STATE(985), - [sym_concatenated_string] = STATE(985), - [sym_string] = STATE(790), - [sym_concatenated_template_string] = STATE(985), - [sym_template_string] = STATE(791), - [sym_await] = STATE(985), - [sym_identifier] = ACTIONS(646), - [anon_sym_lazy] = ACTIONS(648), - [anon_sym_DOT] = ACTIONS(272), - [anon_sym_LPAREN] = ACTIONS(650), - [anon_sym_RPAREN] = ACTIONS(303), - [anon_sym_COMMA] = ACTIONS(303), - [anon_sym_as] = ACTIONS(272), - [anon_sym_STAR] = ACTIONS(272), - [anon_sym_print] = ACTIONS(648), - [anon_sym_GT_GT] = ACTIONS(303), - [anon_sym_COLON_EQ] = ACTIONS(652), - [anon_sym_if] = ACTIONS(272), - [anon_sym_COLON] = ACTIONS(272), - [anon_sym_async] = ACTIONS(648), - [anon_sym_in] = ACTIONS(272), - [anon_sym_match] = ACTIONS(648), - [anon_sym_PIPE] = ACTIONS(303), - [anon_sym_DASH] = ACTIONS(654), - [anon_sym_PLUS] = ACTIONS(654), - [anon_sym_LBRACK] = ACTIONS(656), - [anon_sym_LBRACE] = ACTIONS(658), - [anon_sym_STAR_STAR] = ACTIONS(303), - [anon_sym_exec] = ACTIONS(648), - [anon_sym_type] = ACTIONS(648), - [anon_sym_AT] = ACTIONS(303), - [anon_sym_not] = ACTIONS(272), - [anon_sym_and] = ACTIONS(272), - [anon_sym_or] = ACTIONS(272), - [anon_sym_SLASH] = ACTIONS(272), - [anon_sym_PERCENT] = ACTIONS(303), - [anon_sym_SLASH_SLASH] = ACTIONS(303), - [anon_sym_AMP] = ACTIONS(303), - [anon_sym_CARET] = ACTIONS(303), - [anon_sym_LT_LT] = ACTIONS(303), - [anon_sym_TILDE] = ACTIONS(654), - [anon_sym_LT] = ACTIONS(272), - [anon_sym_LT_EQ] = ACTIONS(303), - [anon_sym_EQ_EQ] = ACTIONS(303), - [anon_sym_BANG_EQ] = ACTIONS(303), - [anon_sym_GT_EQ] = ACTIONS(303), - [anon_sym_GT] = ACTIONS(272), - [anon_sym_LT_GT] = ACTIONS(303), - [anon_sym_is] = ACTIONS(272), - [sym_ellipsis] = ACTIONS(660), - [sym_integer] = ACTIONS(646), - [sym_float] = ACTIONS(660), - [anon_sym_await] = ACTIONS(662), - [sym_true] = ACTIONS(646), - [sym_false] = ACTIONS(646), - [sym_none] = ACTIONS(646), - [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(664), - [sym__template_string_start] = ACTIONS(666), - }, - [STATE(147)] = { - [sym_primary_expression] = STATE(805), - [sym_binary_operator] = STATE(949), - [sym_unary_operator] = STATE(949), - [sym_attribute] = STATE(949), - [sym_subscript] = STATE(949), - [sym_call] = STATE(949), - [sym_list] = STATE(949), - [sym_set] = STATE(949), - [sym_tuple] = STATE(949), - [sym_dictionary] = STATE(949), - [sym_list_comprehension] = STATE(949), - [sym_dictionary_comprehension] = STATE(949), - [sym_set_comprehension] = STATE(949), - [sym_generator_expression] = STATE(949), - [sym_parenthesized_expression] = STATE(949), - [sym_concatenated_string] = STATE(949), - [sym_string] = STATE(781), - [sym_concatenated_template_string] = STATE(949), - [sym_template_string] = STATE(782), - [sym_await] = STATE(949), + [sym_primary_expression] = STATE(819), + [sym_binary_operator] = STATE(879), + [sym_unary_operator] = STATE(879), + [sym_attribute] = STATE(879), + [sym_subscript] = STATE(879), + [sym_call] = STATE(879), + [sym_list] = STATE(879), + [sym_set] = STATE(879), + [sym_tuple] = STATE(879), + [sym_dictionary] = STATE(879), + [sym_list_comprehension] = STATE(879), + [sym_dictionary_comprehension] = STATE(879), + [sym_set_comprehension] = STATE(879), + [sym_generator_expression] = STATE(879), + [sym_parenthesized_expression] = STATE(879), + [sym_concatenated_string] = STATE(879), + [sym_string] = STATE(771), + [sym_concatenated_template_string] = STATE(879), + [sym_template_string] = STATE(772), + [sym_await] = STATE(879), [sym_identifier] = ACTIONS(612), [anon_sym_lazy] = ACTIONS(614), [anon_sym_DOT] = ACTIONS(272), @@ -23804,27 +23739,27 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(630), [sym__template_string_start] = ACTIONS(632), }, - [STATE(148)] = { - [sym_primary_expression] = STATE(747), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [STATE(147)] = { + [sym_primary_expression] = STATE(753), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), @@ -23879,27 +23814,102 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__string_start] = ACTIONS(315), [sym__template_string_start] = ACTIONS(317), }, + [STATE(148)] = { + [sym_primary_expression] = STATE(818), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_attribute] = STATE(905), + [sym_subscript] = STATE(905), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), + [sym_identifier] = ACTIONS(79), + [anon_sym_lazy] = ACTIONS(573), + [anon_sym_DOT] = ACTIONS(272), + [anon_sym_from] = ACTIONS(272), + [anon_sym_LPAREN] = ACTIONS(575), + [anon_sym_COMMA] = ACTIONS(303), + [anon_sym_STAR] = ACTIONS(272), + [anon_sym_print] = ACTIONS(573), + [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_if] = ACTIONS(272), + [anon_sym_async] = ACTIONS(573), + [anon_sym_in] = ACTIONS(272), + [anon_sym_match] = ACTIONS(573), + [anon_sym_PIPE] = ACTIONS(303), + [anon_sym_DASH] = ACTIONS(49), + [anon_sym_PLUS] = ACTIONS(49), + [anon_sym_LBRACK] = ACTIONS(579), + [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(272), + [anon_sym_exec] = ACTIONS(573), + [anon_sym_type] = ACTIONS(573), + [anon_sym_AT] = ACTIONS(303), + [anon_sym_not] = ACTIONS(272), + [anon_sym_and] = ACTIONS(272), + [anon_sym_or] = ACTIONS(272), + [anon_sym_SLASH] = ACTIONS(272), + [anon_sym_PERCENT] = ACTIONS(303), + [anon_sym_SLASH_SLASH] = ACTIONS(303), + [anon_sym_AMP] = ACTIONS(303), + [anon_sym_CARET] = ACTIONS(303), + [anon_sym_LT_LT] = ACTIONS(303), + [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_LT] = ACTIONS(272), + [anon_sym_LT_EQ] = ACTIONS(303), + [anon_sym_EQ_EQ] = ACTIONS(303), + [anon_sym_BANG_EQ] = ACTIONS(303), + [anon_sym_GT_EQ] = ACTIONS(303), + [anon_sym_GT] = ACTIONS(272), + [anon_sym_LT_GT] = ACTIONS(303), + [anon_sym_is] = ACTIONS(272), + [sym_ellipsis] = ACTIONS(77), + [sym_integer] = ACTIONS(79), + [sym_float] = ACTIONS(77), + [anon_sym_await] = ACTIONS(581), + [sym_true] = ACTIONS(79), + [sym_false] = ACTIONS(79), + [sym_none] = ACTIONS(79), + [sym_comment] = ACTIONS(3), + [anon_sym_SEMI] = ACTIONS(303), + [sym__newline] = ACTIONS(303), + [sym__string_start] = ACTIONS(83), + [sym__template_string_start] = ACTIONS(85), + }, [STATE(149)] = { - [sym_primary_expression] = STATE(747), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_primary_expression] = STATE(753), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), @@ -23955,48 +23965,50 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(150)] = { - [sym_primary_expression] = STATE(799), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_attribute] = STATE(950), - [sym_subscript] = STATE(950), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), - [sym_identifier] = ACTIONS(79), - [anon_sym_lazy] = ACTIONS(573), + [sym_primary_expression] = STATE(808), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), + [sym_identifier] = ACTIONS(311), + [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), - [anon_sym_from] = ACTIONS(272), - [anon_sym_LPAREN] = ACTIONS(575), + [anon_sym_LPAREN] = ACTIONS(658), [anon_sym_COMMA] = ACTIONS(303), [anon_sym_STAR] = ACTIONS(272), - [anon_sym_print] = ACTIONS(573), + [anon_sym_print] = ACTIONS(583), [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(660), [anon_sym_if] = ACTIONS(272), - [anon_sym_async] = ACTIONS(573), + [anon_sym_COLON] = ACTIONS(272), + [anon_sym_async] = ACTIONS(583), + [anon_sym_for] = ACTIONS(272), [anon_sym_in] = ACTIONS(272), - [anon_sym_match] = ACTIONS(573), + [anon_sym_match] = ACTIONS(583), [anon_sym_PIPE] = ACTIONS(303), - [anon_sym_DASH] = ACTIONS(49), - [anon_sym_PLUS] = ACTIONS(49), - [anon_sym_LBRACK] = ACTIONS(579), - [anon_sym_LBRACE] = ACTIONS(53), + [anon_sym_DASH] = ACTIONS(662), + [anon_sym_PLUS] = ACTIONS(662), + [anon_sym_LBRACK] = ACTIONS(664), + [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_RBRACE] = ACTIONS(303), [anon_sym_STAR_STAR] = ACTIONS(303), - [anon_sym_EQ] = ACTIONS(272), - [anon_sym_exec] = ACTIONS(573), - [anon_sym_type] = ACTIONS(573), + [anon_sym_exec] = ACTIONS(583), + [anon_sym_type] = ACTIONS(583), [anon_sym_AT] = ACTIONS(303), [anon_sym_not] = ACTIONS(272), [anon_sym_and] = ACTIONS(272), @@ -24007,7 +24019,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(303), [anon_sym_CARET] = ACTIONS(303), [anon_sym_LT_LT] = ACTIONS(303), - [anon_sym_TILDE] = ACTIONS(49), + [anon_sym_TILDE] = ACTIONS(662), [anon_sym_LT] = ACTIONS(272), [anon_sym_LT_EQ] = ACTIONS(303), [anon_sym_EQ_EQ] = ACTIONS(303), @@ -24016,61 +24028,59 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_GT] = ACTIONS(272), [anon_sym_LT_GT] = ACTIONS(303), [anon_sym_is] = ACTIONS(272), - [sym_ellipsis] = ACTIONS(77), - [sym_integer] = ACTIONS(79), - [sym_float] = ACTIONS(77), - [anon_sym_await] = ACTIONS(581), - [sym_true] = ACTIONS(79), - [sym_false] = ACTIONS(79), - [sym_none] = ACTIONS(79), + [sym_ellipsis] = ACTIONS(309), + [sym_integer] = ACTIONS(311), + [sym_float] = ACTIONS(309), + [anon_sym_await] = ACTIONS(666), + [sym_true] = ACTIONS(311), + [sym_false] = ACTIONS(311), + [sym_none] = ACTIONS(311), [sym_comment] = ACTIONS(3), - [anon_sym_SEMI] = ACTIONS(303), - [sym__newline] = ACTIONS(303), - [sym__string_start] = ACTIONS(83), - [sym__template_string_start] = ACTIONS(85), + [sym__string_start] = ACTIONS(315), + [sym__template_string_start] = ACTIONS(317), }, [STATE(151)] = { - [sym_primary_expression] = STATE(808), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_primary_expression] = STATE(747), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), - [anon_sym_LPAREN] = ACTIONS(636), + [anon_sym_LPAREN] = ACTIONS(585), + [anon_sym_RPAREN] = ACTIONS(303), [anon_sym_COMMA] = ACTIONS(303), [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), [anon_sym_GT_GT] = ACTIONS(303), + [anon_sym_COLON_EQ] = ACTIONS(590), [anon_sym_if] = ACTIONS(272), - [anon_sym_COLON] = ACTIONS(303), [anon_sym_async] = ACTIONS(583), - [anon_sym_for] = ACTIONS(272), [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), [anon_sym_PIPE] = ACTIONS(303), - [anon_sym_DASH] = ACTIONS(640), - [anon_sym_PLUS] = ACTIONS(640), - [anon_sym_LBRACK] = ACTIONS(642), + [anon_sym_DASH] = ACTIONS(301), + [anon_sym_PLUS] = ACTIONS(301), + [anon_sym_LBRACK] = ACTIONS(596), [anon_sym_LBRACE] = ACTIONS(293), - [anon_sym_RBRACE] = ACTIONS(303), [anon_sym_STAR_STAR] = ACTIONS(303), + [anon_sym_EQ] = ACTIONS(656), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), [anon_sym_AT] = ACTIONS(303), @@ -24083,7 +24093,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(303), [anon_sym_CARET] = ACTIONS(303), [anon_sym_LT_LT] = ACTIONS(303), - [anon_sym_TILDE] = ACTIONS(640), + [anon_sym_TILDE] = ACTIONS(301), [anon_sym_LT] = ACTIONS(272), [anon_sym_LT_EQ] = ACTIONS(303), [anon_sym_EQ_EQ] = ACTIONS(303), @@ -24095,7 +24105,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_ellipsis] = ACTIONS(309), [sym_integer] = ACTIONS(311), [sym_float] = ACTIONS(309), - [anon_sym_await] = ACTIONS(644), + [anon_sym_await] = ACTIONS(600), [sym_true] = ACTIONS(311), [sym_false] = ACTIONS(311), [sym_none] = ACTIONS(311), @@ -24104,49 +24114,49 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(152)] = { - [sym_primary_expression] = STATE(839), - [sym_binary_operator] = STATE(985), - [sym_unary_operator] = STATE(985), - [sym_attribute] = STATE(985), - [sym_subscript] = STATE(985), - [sym_call] = STATE(985), - [sym_list] = STATE(985), - [sym_set] = STATE(985), - [sym_tuple] = STATE(985), - [sym_dictionary] = STATE(985), - [sym_list_comprehension] = STATE(985), - [sym_dictionary_comprehension] = STATE(985), - [sym_set_comprehension] = STATE(985), - [sym_generator_expression] = STATE(985), - [sym_parenthesized_expression] = STATE(985), - [sym_concatenated_string] = STATE(985), - [sym_string] = STATE(790), - [sym_concatenated_template_string] = STATE(985), - [sym_template_string] = STATE(791), - [sym_await] = STATE(985), - [sym_identifier] = ACTIONS(646), - [anon_sym_lazy] = ACTIONS(648), + [sym_primary_expression] = STATE(845), + [sym_binary_operator] = STATE(960), + [sym_unary_operator] = STATE(960), + [sym_attribute] = STATE(960), + [sym_subscript] = STATE(960), + [sym_call] = STATE(960), + [sym_list] = STATE(960), + [sym_set] = STATE(960), + [sym_tuple] = STATE(960), + [sym_dictionary] = STATE(960), + [sym_list_comprehension] = STATE(960), + [sym_dictionary_comprehension] = STATE(960), + [sym_set_comprehension] = STATE(960), + [sym_generator_expression] = STATE(960), + [sym_parenthesized_expression] = STATE(960), + [sym_concatenated_string] = STATE(960), + [sym_string] = STATE(814), + [sym_concatenated_template_string] = STATE(960), + [sym_template_string] = STATE(815), + [sym_await] = STATE(960), + [sym_identifier] = ACTIONS(634), + [anon_sym_lazy] = ACTIONS(636), [anon_sym_DOT] = ACTIONS(272), - [anon_sym_LPAREN] = ACTIONS(650), + [anon_sym_LPAREN] = ACTIONS(638), [anon_sym_RPAREN] = ACTIONS(303), [anon_sym_COMMA] = ACTIONS(303), [anon_sym_as] = ACTIONS(272), [anon_sym_STAR] = ACTIONS(272), - [anon_sym_print] = ACTIONS(648), + [anon_sym_print] = ACTIONS(636), [anon_sym_GT_GT] = ACTIONS(303), [anon_sym_if] = ACTIONS(272), [anon_sym_COLON] = ACTIONS(303), - [anon_sym_async] = ACTIONS(648), + [anon_sym_async] = ACTIONS(636), [anon_sym_in] = ACTIONS(272), - [anon_sym_match] = ACTIONS(648), + [anon_sym_match] = ACTIONS(636), [anon_sym_PIPE] = ACTIONS(303), - [anon_sym_DASH] = ACTIONS(654), - [anon_sym_PLUS] = ACTIONS(654), - [anon_sym_LBRACK] = ACTIONS(656), - [anon_sym_LBRACE] = ACTIONS(658), + [anon_sym_DASH] = ACTIONS(642), + [anon_sym_PLUS] = ACTIONS(642), + [anon_sym_LBRACK] = ACTIONS(644), + [anon_sym_LBRACE] = ACTIONS(646), [anon_sym_STAR_STAR] = ACTIONS(303), - [anon_sym_exec] = ACTIONS(648), - [anon_sym_type] = ACTIONS(648), + [anon_sym_exec] = ACTIONS(636), + [anon_sym_type] = ACTIONS(636), [anon_sym_AT] = ACTIONS(303), [anon_sym_not] = ACTIONS(272), [anon_sym_and] = ACTIONS(272), @@ -24157,7 +24167,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(303), [anon_sym_CARET] = ACTIONS(303), [anon_sym_LT_LT] = ACTIONS(303), - [anon_sym_TILDE] = ACTIONS(654), + [anon_sym_TILDE] = ACTIONS(642), [anon_sym_LT] = ACTIONS(272), [anon_sym_LT_EQ] = ACTIONS(303), [anon_sym_EQ_EQ] = ACTIONS(303), @@ -24166,59 +24176,59 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_GT] = ACTIONS(272), [anon_sym_LT_GT] = ACTIONS(303), [anon_sym_is] = ACTIONS(272), - [sym_ellipsis] = ACTIONS(660), - [sym_integer] = ACTIONS(646), - [sym_float] = ACTIONS(660), - [anon_sym_await] = ACTIONS(662), - [sym_true] = ACTIONS(646), - [sym_false] = ACTIONS(646), - [sym_none] = ACTIONS(646), + [sym_ellipsis] = ACTIONS(648), + [sym_integer] = ACTIONS(634), + [sym_float] = ACTIONS(648), + [anon_sym_await] = ACTIONS(650), + [sym_true] = ACTIONS(634), + [sym_false] = ACTIONS(634), + [sym_none] = ACTIONS(634), [sym_comment] = ACTIONS(3), - [sym__string_start] = ACTIONS(664), - [sym__template_string_start] = ACTIONS(666), + [sym__string_start] = ACTIONS(652), + [sym__template_string_start] = ACTIONS(654), }, [STATE(153)] = { - [sym_primary_expression] = STATE(766), - [sym_binary_operator] = STATE(720), - [sym_unary_operator] = STATE(720), - [sym_attribute] = STATE(720), - [sym_subscript] = STATE(720), - [sym_call] = STATE(720), - [sym_list] = STATE(720), - [sym_set] = STATE(720), - [sym_tuple] = STATE(720), - [sym_dictionary] = STATE(720), - [sym_list_comprehension] = STATE(720), - [sym_dictionary_comprehension] = STATE(720), - [sym_set_comprehension] = STATE(720), - [sym_generator_expression] = STATE(720), - [sym_parenthesized_expression] = STATE(720), - [sym_concatenated_string] = STATE(720), - [sym_string] = STATE(694), - [sym_concatenated_template_string] = STATE(720), - [sym_template_string] = STATE(698), - [sym_await] = STATE(720), + [sym_primary_expression] = STATE(808), + [sym_binary_operator] = STATE(734), + [sym_unary_operator] = STATE(734), + [sym_attribute] = STATE(734), + [sym_subscript] = STATE(734), + [sym_call] = STATE(734), + [sym_list] = STATE(734), + [sym_set] = STATE(734), + [sym_tuple] = STATE(734), + [sym_dictionary] = STATE(734), + [sym_list_comprehension] = STATE(734), + [sym_dictionary_comprehension] = STATE(734), + [sym_set_comprehension] = STATE(734), + [sym_generator_expression] = STATE(734), + [sym_parenthesized_expression] = STATE(734), + [sym_concatenated_string] = STATE(734), + [sym_string] = STATE(698), + [sym_concatenated_template_string] = STATE(734), + [sym_template_string] = STATE(627), + [sym_await] = STATE(734), [sym_identifier] = ACTIONS(311), [anon_sym_lazy] = ACTIONS(583), [anon_sym_DOT] = ACTIONS(272), - [anon_sym_LPAREN] = ACTIONS(585), - [anon_sym_RPAREN] = ACTIONS(303), + [anon_sym_LPAREN] = ACTIONS(658), [anon_sym_COMMA] = ACTIONS(303), [anon_sym_STAR] = ACTIONS(272), [anon_sym_print] = ACTIONS(583), [anon_sym_GT_GT] = ACTIONS(303), - [anon_sym_COLON_EQ] = ACTIONS(590), [anon_sym_if] = ACTIONS(272), + [anon_sym_COLON] = ACTIONS(303), [anon_sym_async] = ACTIONS(583), + [anon_sym_for] = ACTIONS(272), [anon_sym_in] = ACTIONS(272), [anon_sym_match] = ACTIONS(583), [anon_sym_PIPE] = ACTIONS(303), - [anon_sym_DASH] = ACTIONS(301), - [anon_sym_PLUS] = ACTIONS(301), - [anon_sym_LBRACK] = ACTIONS(596), + [anon_sym_DASH] = ACTIONS(662), + [anon_sym_PLUS] = ACTIONS(662), + [anon_sym_LBRACK] = ACTIONS(664), [anon_sym_LBRACE] = ACTIONS(293), + [anon_sym_RBRACE] = ACTIONS(303), [anon_sym_STAR_STAR] = ACTIONS(303), - [anon_sym_EQ] = ACTIONS(634), [anon_sym_exec] = ACTIONS(583), [anon_sym_type] = ACTIONS(583), [anon_sym_AT] = ACTIONS(303), @@ -24231,7 +24241,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_AMP] = ACTIONS(303), [anon_sym_CARET] = ACTIONS(303), [anon_sym_LT_LT] = ACTIONS(303), - [anon_sym_TILDE] = ACTIONS(301), + [anon_sym_TILDE] = ACTIONS(662), [anon_sym_LT] = ACTIONS(272), [anon_sym_LT_EQ] = ACTIONS(303), [anon_sym_EQ_EQ] = ACTIONS(303), @@ -24243,7 +24253,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_ellipsis] = ACTIONS(309), [sym_integer] = ACTIONS(311), [sym_float] = ACTIONS(309), - [anon_sym_await] = ACTIONS(600), + [anon_sym_await] = ACTIONS(666), [sym_true] = ACTIONS(311), [sym_false] = ACTIONS(311), [sym_none] = ACTIONS(311), @@ -24252,45 +24262,45 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(317), }, [STATE(154)] = { - [sym_named_expression] = STATE(1126), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_expression_list] = STATE(1586), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1181), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1586), - [sym_augmented_assignment] = STATE(1586), + [sym_named_expression] = STATE(1145), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_expression_list] = STATE(1595), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1210), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1595), + [sym_augmented_assignment] = STATE(1595), [sym_pattern_list] = STATE(1030), - [sym__right_hand_side] = STATE(1586), - [sym_yield] = STATE(1586), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym__right_hand_side] = STATE(1595), + [sym_yield] = STATE(1595), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(319), [anon_sym_LPAREN] = ACTIONS(15), @@ -24321,45 +24331,45 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(155)] = { - [sym_named_expression] = STATE(1126), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_expression_list] = STATE(1608), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1181), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1608), - [sym_augmented_assignment] = STATE(1608), + [sym_named_expression] = STATE(1145), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_expression_list] = STATE(1596), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1210), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1596), + [sym_augmented_assignment] = STATE(1596), [sym_pattern_list] = STATE(1030), - [sym__right_hand_side] = STATE(1608), - [sym_yield] = STATE(1608), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym__right_hand_side] = STATE(1596), + [sym_yield] = STATE(1596), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(319), [anon_sym_LPAREN] = ACTIONS(15), @@ -24390,45 +24400,45 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym__template_string_start] = ACTIONS(85), }, [STATE(156)] = { - [sym_named_expression] = STATE(1126), - [sym_list_splat] = STATE(1590), - [sym_dictionary_splat] = STATE(1590), - [sym_expression_list] = STATE(1610), - [sym_pattern] = STATE(1020), - [sym_tuple_pattern] = STATE(1005), - [sym_list_pattern] = STATE(1005), - [sym_list_splat_pattern] = STATE(1005), - [sym_expression] = STATE(1181), - [sym_primary_expression] = STATE(773), - [sym_not_operator] = STATE(1126), - [sym_boolean_operator] = STATE(1126), - [sym_binary_operator] = STATE(950), - [sym_unary_operator] = STATE(950), - [sym_comparison_operator] = STATE(1126), - [sym_lambda] = STATE(1126), - [sym_assignment] = STATE(1610), - [sym_augmented_assignment] = STATE(1610), + [sym_named_expression] = STATE(1145), + [sym_list_splat] = STATE(1557), + [sym_dictionary_splat] = STATE(1557), + [sym_expression_list] = STATE(1601), + [sym_pattern] = STATE(1022), + [sym_tuple_pattern] = STATE(1014), + [sym_list_pattern] = STATE(1014), + [sym_list_splat_pattern] = STATE(1014), + [sym_expression] = STATE(1210), + [sym_primary_expression] = STATE(780), + [sym_not_operator] = STATE(1145), + [sym_boolean_operator] = STATE(1145), + [sym_binary_operator] = STATE(905), + [sym_unary_operator] = STATE(905), + [sym_comparison_operator] = STATE(1145), + [sym_lambda] = STATE(1145), + [sym_assignment] = STATE(1601), + [sym_augmented_assignment] = STATE(1601), [sym_pattern_list] = STATE(1030), - [sym__right_hand_side] = STATE(1610), - [sym_yield] = STATE(1610), - [sym_attribute] = STATE(614), - [sym_subscript] = STATE(614), - [sym_call] = STATE(950), - [sym_list] = STATE(950), - [sym_set] = STATE(950), - [sym_tuple] = STATE(950), - [sym_dictionary] = STATE(950), - [sym_list_comprehension] = STATE(950), - [sym_dictionary_comprehension] = STATE(950), - [sym_set_comprehension] = STATE(950), - [sym_generator_expression] = STATE(950), - [sym_parenthesized_expression] = STATE(950), - [sym_conditional_expression] = STATE(1126), - [sym_concatenated_string] = STATE(950), - [sym_string] = STATE(779), - [sym_concatenated_template_string] = STATE(950), - [sym_template_string] = STATE(772), - [sym_await] = STATE(950), + [sym__right_hand_side] = STATE(1601), + [sym_yield] = STATE(1601), + [sym_attribute] = STATE(594), + [sym_subscript] = STATE(594), + [sym_call] = STATE(905), + [sym_list] = STATE(905), + [sym_set] = STATE(905), + [sym_tuple] = STATE(905), + [sym_dictionary] = STATE(905), + [sym_list_comprehension] = STATE(905), + [sym_dictionary_comprehension] = STATE(905), + [sym_set_comprehension] = STATE(905), + [sym_generator_expression] = STATE(905), + [sym_parenthesized_expression] = STATE(905), + [sym_conditional_expression] = STATE(1145), + [sym_concatenated_string] = STATE(905), + [sym_string] = STATE(783), + [sym_concatenated_template_string] = STATE(905), + [sym_template_string] = STATE(784), + [sym_await] = STATE(905), [sym_identifier] = ACTIONS(7), [anon_sym_lazy] = ACTIONS(319), [anon_sym_LPAREN] = ACTIONS(15), @@ -24488,37 +24498,37 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_yield, ACTIONS(686), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1070), 1, + STATE(1089), 1, sym_expression, - STATE(1217), 1, + STATE(1231), 1, sym_list_splat, - STATE(1294), 1, - sym_parenthesized_list_splat, - STATE(1355), 1, + STATE(1358), 1, sym_pattern, - STATE(1461), 1, + STATE(1501), 1, + sym_parenthesized_list_splat, + STATE(1519), 1, sym_yield, - STATE(1721), 1, - sym__collection_elements, - STATE(1742), 1, + STATE(1668), 1, sym__patterns, + STATE(1689), 1, + sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(917), 2, + STATE(949), 2, sym_attribute, sym_subscript, ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1005), 3, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -24534,14 +24544,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24557,7 +24567,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [127] = 31, + [127] = 30, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -24583,38 +24593,37 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(686), 1, anon_sym_await, ACTIONS(688), 1, - anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + anon_sym_RBRACK, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1086), 1, + STATE(1088), 1, sym_expression, - STATE(1202), 1, + STATE(1179), 1, sym_list_splat, - STATE(1294), 1, - sym_parenthesized_list_splat, - STATE(1355), 1, + STATE(1358), 1, sym_pattern, - STATE(1432), 1, - sym_yield, - STATE(1686), 1, - sym__collection_elements, - STATE(1742), 1, + STATE(1736), 1, sym__patterns, + STATE(1747), 1, + sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(917), 2, + STATE(949), 2, sym_attribute, sym_subscript, + STATE(1318), 2, + sym_parenthesized_list_splat, + sym_yield, ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1005), 3, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -24630,14 +24639,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24653,63 +24662,47 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [254] = 30, + [252] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(301), 1, + anon_sym_TILDE, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(668), 1, + ACTIONS(690), 1, sym_identifier, - ACTIONS(672), 1, + ACTIONS(694), 1, anon_sym_LPAREN, - ACTIONS(676), 1, + ACTIONS(696), 1, anon_sym_STAR, - ACTIONS(678), 1, + ACTIONS(700), 1, + anon_sym_in, + ACTIONS(702), 1, anon_sym_LBRACK, - ACTIONS(680), 1, - anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(684), 1, - anon_sym_yield, - ACTIONS(686), 1, + ACTIONS(704), 1, anon_sym_await, - ACTIONS(690), 1, - anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1080), 1, - sym_expression, - STATE(1204), 1, - sym_list_splat, - STATE(1355), 1, + STATE(698), 1, + sym_string, + STATE(1009), 1, sym_pattern, - STATE(1657), 1, - sym__collection_elements, - STATE(1690), 1, - sym__patterns, + STATE(1016), 1, + sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(917), 2, - sym_attribute, - sym_subscript, - STATE(1294), 2, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(606), 3, + ACTIONS(594), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_TILDE, - STATE(1005), 3, + STATE(875), 2, + sym_attribute, + sym_subscript, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -24718,21 +24711,30 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(670), 6, + ACTIONS(692), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(720), 15, + ACTIONS(698), 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, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24748,63 +24750,47 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [379] = 30, + [363] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(301), 1, + anon_sym_TILDE, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(668), 1, + ACTIONS(690), 1, sym_identifier, - ACTIONS(672), 1, + ACTIONS(694), 1, anon_sym_LPAREN, - ACTIONS(676), 1, + ACTIONS(696), 1, anon_sym_STAR, - ACTIONS(678), 1, + ACTIONS(702), 1, anon_sym_LBRACK, - ACTIONS(680), 1, - anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(684), 1, - anon_sym_yield, - ACTIONS(686), 1, + ACTIONS(704), 1, anon_sym_await, - ACTIONS(692), 1, - anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(708), 1, + anon_sym_in, + STATE(627), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1095), 1, - sym_expression, - STATE(1218), 1, - sym_list_splat, - STATE(1355), 1, + STATE(698), 1, + sym_string, + STATE(1009), 1, sym_pattern, - STATE(1690), 1, - sym__patterns, - STATE(1692), 1, - sym__collection_elements, + STATE(1016), 1, + sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(917), 2, - sym_attribute, - sym_subscript, - STATE(1294), 2, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(606), 3, + ACTIONS(594), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_TILDE, - STATE(1005), 3, + STATE(875), 2, + sym_attribute, + sym_subscript, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -24813,21 +24799,30 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(670), 6, + ACTIONS(692), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(720), 15, + ACTIONS(706), 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, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24843,47 +24838,64 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [504] = 23, + [474] = 31, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(301), 1, - anon_sym_TILDE, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, + ACTIONS(668), 1, sym_identifier, - ACTIONS(698), 1, + ACTIONS(672), 1, anon_sym_LPAREN, - ACTIONS(700), 1, + ACTIONS(676), 1, anon_sym_STAR, - ACTIONS(704), 1, - anon_sym_in, - ACTIONS(706), 1, + ACTIONS(678), 1, anon_sym_LBRACK, - ACTIONS(708), 1, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(686), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(710), 1, + anon_sym_RPAREN, + STATE(627), 1, sym_template_string, - STATE(1002), 1, - sym_pattern, - STATE(1017), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, + STATE(1089), 1, + sym_expression, + STATE(1222), 1, + sym_list_splat, + STATE(1318), 1, + sym_parenthesized_list_splat, + STATE(1358), 1, + sym_pattern, + STATE(1519), 1, + sym_yield, + STATE(1668), 1, + sym__patterns, + STATE(1689), 1, + sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(594), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(842), 2, + STATE(949), 2, sym_attribute, sym_subscript, - STATE(1005), 3, + ACTIONS(606), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -24892,30 +24904,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(696), 6, + ACTIONS(670), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - ACTIONS(702), 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, - STATE(720), 15, + STATE(1038), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -24931,47 +24934,63 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [615] = 23, + [601] = 30, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(301), 1, - anon_sym_TILDE, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, + ACTIONS(668), 1, sym_identifier, - ACTIONS(698), 1, + ACTIONS(672), 1, anon_sym_LPAREN, - ACTIONS(700), 1, + ACTIONS(676), 1, anon_sym_STAR, - ACTIONS(706), 1, + ACTIONS(678), 1, anon_sym_LBRACK, - ACTIONS(708), 1, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(686), 1, anon_sym_await, ACTIONS(712), 1, - anon_sym_in, - STATE(694), 1, - sym_string, - STATE(698), 1, + anon_sym_RBRACK, + STATE(627), 1, sym_template_string, - STATE(1002), 1, - sym_pattern, - STATE(1017), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, + STATE(1077), 1, + sym_expression, + STATE(1224), 1, + sym_list_splat, + STATE(1358), 1, + sym_pattern, + STATE(1686), 1, + sym__collection_elements, + STATE(1736), 1, + sym__patterns, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(594), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(842), 2, + STATE(949), 2, sym_attribute, sym_subscript, - STATE(1005), 3, + STATE(1318), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(606), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -24980,30 +24999,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(696), 6, + ACTIONS(670), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - ACTIONS(710), 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, - STATE(720), 15, + STATE(1038), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -25019,7 +25029,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [726] = 30, + [726] = 31, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -25045,37 +25055,38 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(686), 1, anon_sym_await, ACTIONS(714), 1, - anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + anon_sym_RPAREN, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1080), 1, + STATE(1087), 1, sym_expression, - STATE(1204), 1, + STATE(1240), 1, sym_list_splat, - STATE(1355), 1, + STATE(1318), 1, + sym_parenthesized_list_splat, + STATE(1358), 1, sym_pattern, - STATE(1657), 1, + STATE(1416), 1, + sym_yield, + STATE(1642), 1, sym__collection_elements, - STATE(1690), 1, + STATE(1668), 1, sym__patterns, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(917), 2, + STATE(949), 2, sym_attribute, sym_subscript, - STATE(1294), 2, - sym_parenthesized_list_splat, - sym_yield, ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1005), 3, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -25091,14 +25102,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -25114,7 +25125,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [851] = 31, + [853] = 30, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -25140,38 +25151,37 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(686), 1, anon_sym_await, ACTIONS(716), 1, - anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + anon_sym_RBRACK, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1086), 1, + STATE(1077), 1, sym_expression, - STATE(1187), 1, + STATE(1224), 1, sym_list_splat, - STATE(1355), 1, + STATE(1358), 1, sym_pattern, - STATE(1432), 1, - sym_yield, - STATE(1455), 1, - sym_parenthesized_list_splat, STATE(1686), 1, sym__collection_elements, - STATE(1742), 1, + STATE(1736), 1, sym__patterns, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(917), 2, + STATE(949), 2, sym_attribute, sym_subscript, + STATE(1318), 2, + sym_parenthesized_list_splat, + sym_yield, ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1005), 3, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -25187,14 +25197,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -25219,7 +25229,7 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(642), 1, + ACTIONS(664), 1, anon_sym_LBRACK, ACTIONS(684), 1, anon_sym_yield, @@ -25241,28 +25251,28 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(736), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1047), 1, + STATE(1054), 1, sym_expression, - STATE(1203), 1, + STATE(1225), 1, sym_list_splat, - STATE(1727), 1, + STATE(1688), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1207), 2, + STATE(1199), 2, sym_dictionary_splat, sym_pair, - STATE(1294), 2, + STATE(1318), 2, sym_parenthesized_list_splat, sym_yield, - ACTIONS(640), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -25278,14 +25288,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25312,7 +25322,7 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(642), 1, + ACTIONS(664), 1, anon_sym_LBRACK, ACTIONS(684), 1, anon_sym_yield, @@ -25334,28 +25344,28 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, ACTIONS(740), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1063), 1, + STATE(1051), 1, sym_expression, - STATE(1206), 1, + STATE(1182), 1, sym_list_splat, - STATE(1624), 1, + STATE(1734), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1236), 2, + STATE(1183), 2, sym_dictionary_splat, sym_pair, - STATE(1294), 2, + STATE(1318), 2, sym_parenthesized_list_splat, sym_yield, - ACTIONS(640), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -25371,14 +25381,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25405,7 +25415,7 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(642), 1, + ACTIONS(664), 1, anon_sym_LBRACK, ACTIONS(684), 1, anon_sym_yield, @@ -25427,28 +25437,28 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, ACTIONS(744), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1041), 1, + STATE(1063), 1, sym_expression, - STATE(1232), 1, + STATE(1236), 1, sym_list_splat, - STATE(1666), 1, + STATE(1714), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1194), 2, + STATE(1217), 2, sym_dictionary_splat, sym_pair, - STATE(1294), 2, + STATE(1318), 2, sym_parenthesized_list_splat, sym_yield, - ACTIONS(640), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -25464,14 +25474,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25498,7 +25508,7 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(642), 1, + ACTIONS(664), 1, anon_sym_LBRACK, ACTIONS(684), 1, anon_sym_yield, @@ -25520,28 +25530,28 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, ACTIONS(748), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1067), 1, + STATE(1064), 1, sym_expression, - STATE(1228), 1, + STATE(1239), 1, sym_list_splat, - STATE(1688), 1, + STATE(1700), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1184), 2, + STATE(1219), 2, sym_dictionary_splat, sym_pair, - STATE(1294), 2, + STATE(1318), 2, sym_parenthesized_list_splat, sym_yield, - ACTIONS(640), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -25557,14 +25567,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25609,20 +25619,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(764), 1, anon_sym_await, - STATE(780), 1, + STATE(770), 1, sym_primary_expression, - STATE(781), 1, + STATE(771), 1, sym_string, - STATE(782), 1, + STATE(772), 1, sym_template_string, - STATE(1107), 1, + STATE(1100), 1, sym_expression, - STATE(1237), 1, + STATE(1196), 1, sym_expression_list, ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(1588), 2, + STATE(1587), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(620), 3, @@ -25646,14 +25656,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25698,20 +25708,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_from, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1175), 1, + STATE(1138), 1, sym_expression, - STATE(1237), 1, + STATE(1196), 1, sym_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1573), 2, + STATE(1562), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(301), 3, @@ -25735,14 +25745,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25785,18 +25795,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1144), 1, + STATE(1131), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1291), 2, + STATE(1301), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(301), 3, @@ -25821,14 +25831,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25871,18 +25881,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1144), 1, + STATE(1131), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1291), 2, + STATE(1301), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(301), 3, @@ -25894,7 +25904,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(770), 5, + ACTIONS(772), 5, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -25907,14 +25917,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -25957,18 +25967,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1144), 1, + STATE(1131), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1291), 2, + STATE(1301), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(301), 3, @@ -25980,7 +25990,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(772), 5, + ACTIONS(770), 5, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -25993,14 +26003,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26043,18 +26053,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(776), 1, anon_sym_STAR_STAR, - STATE(780), 1, + STATE(770), 1, sym_primary_expression, - STATE(781), 1, + STATE(771), 1, sym_string, - STATE(782), 1, + STATE(772), 1, sym_template_string, - STATE(1120), 1, + STATE(1130), 1, sym_expression, ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(1301), 2, + STATE(1315), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(620), 3, @@ -26066,7 +26076,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(772), 4, + ACTIONS(770), 4, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COLON2, @@ -26078,14 +26088,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26128,13 +26138,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(782), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1179), 1, + STATE(1221), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -26147,7 +26157,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(1354), 3, + STATE(1375), 3, sym_list_splat, sym_parenthesized_list_splat, sym_yield, @@ -26163,14 +26173,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26188,74 +26198,78 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2244] = 24, + [2244] = 28, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(682), 1, + anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, - ACTIONS(768), 1, - anon_sym_not, - ACTIONS(778), 1, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(782), 1, + ACTIONS(790), 1, + anon_sym_RPAREN, + ACTIONS(792), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(794), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1179), 1, + STATE(1049), 1, sym_expression, + STATE(1234), 1, + sym_list_splat, + STATE(1318), 1, + sym_parenthesized_list_splat, + STATE(1428), 1, + sym_yield, + STATE(1485), 1, + sym_with_item, + STATE(1703), 1, + sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(780), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1354), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26273,39 +26287,45 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2353] = 24, + [2361] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, + ACTIONS(55), 1, + anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(684), 1, - anon_sym_yield, + ACTIONS(756), 1, + anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(782), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(796), 1, + sym_identifier, + ACTIONS(800), 1, + anon_sym_RPAREN, + ACTIONS(802), 1, + anon_sym_COMMA, + ACTIONS(804), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1179), 1, + STATE(1263), 1, sym_expression, + STATE(1506), 1, + sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, @@ -26313,34 +26333,30 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(780), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1354), 3, + STATE(1455), 3, sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, + sym_dictionary_splat, + sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26358,77 +26374,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2462] = 27, + [2474] = 26, ACTIONS(3), 1, sym_comment, + ACTIONS(53), 1, + anon_sym_LBRACE, ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(71), 1, anon_sym_not, - ACTIONS(682), 1, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(726), 1, - anon_sym_STAR, - ACTIONS(784), 1, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(357), 1, sym_identifier, - ACTIONS(788), 1, - anon_sym_LPAREN, - ACTIONS(790), 1, - anon_sym_RPAREN, - ACTIONS(792), 1, - anon_sym_COMMA, - ACTIONS(794), 1, + ACTIONS(363), 1, anon_sym_await, - STATE(694), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(806), 1, + anon_sym_from, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1087), 1, + STATE(1137), 1, sym_expression, - STATE(1212), 1, - sym_list_splat, - STATE(1490), 1, - sym_parenthesized_list_splat, - ACTIONS(309), 2, + STATE(1514), 1, + sym_expression_list, + ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(1486), 2, + ACTIONS(808), 2, + sym__newline, + anon_sym_SEMI, + STATE(1557), 2, + sym_list_splat, sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(606), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(786), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26446,76 +26461,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2577] = 26, + [2587] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(630), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, ACTIONS(756), 1, anon_sym_STAR, - ACTIONS(796), 1, - anon_sym_from, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + ACTIONS(810), 1, + anon_sym_yield, + STATE(770), 1, sym_primary_expression, - STATE(779), 1, + STATE(771), 1, sym_string, - STATE(1210), 1, + STATE(772), 1, + sym_template_string, + STATE(1097), 1, sym_expression, - STATE(1569), 1, - sym_expression_list, - ACTIONS(77), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(758), 2, - sym__newline, - anon_sym_SEMI, - STATE(1590), 2, + STATE(1587), 2, sym_list_splat, sym_dictionary_splat, - ACTIONS(49), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + STATE(1293), 3, + sym_expression_list, + sym_yield, + sym__f_expression, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26533,74 +26547,77 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2690] = 24, + [2698] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, + ACTIONS(55), 1, + anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(684), 1, - anon_sym_yield, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(778), 1, - anon_sym_LPAREN, - ACTIONS(782), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(726), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(800), 1, + anon_sym_RPAREN, + ACTIONS(802), 1, + anon_sym_COMMA, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(816), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1179), 1, + STATE(1083), 1, sym_expression, + STATE(1202), 1, + sym_list_splat, + STATE(1506), 1, + sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + STATE(1500), 2, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(798), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1354), 3, - sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(814), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26618,77 +26635,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2799] = 27, + [2813] = 26, ACTIONS(3), 1, sym_comment, + ACTIONS(53), 1, + anon_sym_LBRACE, ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(71), 1, anon_sym_not, - ACTIONS(682), 1, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(726), 1, - anon_sym_STAR, - ACTIONS(784), 1, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(357), 1, sym_identifier, - ACTIONS(788), 1, - anon_sym_LPAREN, - ACTIONS(794), 1, + ACTIONS(363), 1, anon_sym_await, - ACTIONS(800), 1, - anon_sym_RPAREN, - ACTIONS(802), 1, - anon_sym_COMMA, - STATE(694), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(818), 1, + anon_sym_from, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1094), 1, + STATE(1197), 1, sym_expression, - STATE(1211), 1, - sym_list_splat, - STATE(1497), 1, - sym_parenthesized_list_splat, - ACTIONS(309), 2, + STATE(1539), 1, + sym_expression_list, + ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(1496), 2, + ACTIONS(758), 2, + sym__newline, + anon_sym_SEMI, + STATE(1557), 2, + sym_list_splat, sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(606), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(786), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26706,76 +26722,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [2914] = 26, + [2926] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(55), 1, - anon_sym_STAR_STAR, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(756), 1, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(782), 1, anon_sym_STAR, - ACTIONS(804), 1, - anon_sym_from, - STATE(772), 1, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1137), 1, + STATE(728), 1, + sym_primary_expression, + STATE(1221), 1, sym_expression, - STATE(1446), 1, - sym_expression_list, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(806), 2, - sym__newline, - anon_sym_SEMI, - STATE(1590), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(49), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(780), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1375), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26793,78 +26807,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3027] = 28, + [3035] = 24, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, - anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, - ACTIONS(788), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(812), 1, - anon_sym_RPAREN, - ACTIONS(814), 1, + ACTIONS(782), 1, anon_sym_STAR, - ACTIONS(816), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1048), 1, + STATE(1221), 1, sym_expression, - STATE(1226), 1, - sym_list_splat, - STATE(1294), 1, - sym_parenthesized_list_splat, - STATE(1447), 1, - sym_yield, - STATE(1484), 1, - sym_with_item, - STATE(1654), 1, - sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, + ACTIONS(780), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1375), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26882,11 +26892,9 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3144] = 25, + [3144] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, ACTIONS(616), 1, anon_sym_LPAREN, ACTIONS(622), 1, @@ -26899,43 +26907,44 @@ static const uint16_t ts_small_parse_table[] = { sym__template_string_start, ACTIONS(750), 1, sym_identifier, - ACTIONS(756), 1, - anon_sym_STAR, ACTIONS(760), 1, anon_sym_not, ACTIONS(762), 1, anon_sym_lambda, ACTIONS(764), 1, anon_sym_await, - ACTIONS(818), 1, - anon_sym_yield, - STATE(780), 1, + ACTIONS(774), 1, + anon_sym_STAR, + ACTIONS(776), 1, + anon_sym_STAR_STAR, + STATE(770), 1, sym_primary_expression, - STATE(781), 1, + STATE(771), 1, sym_string, - STATE(782), 1, + STATE(772), 1, sym_template_string, - STATE(1103), 1, + STATE(1130), 1, sym_expression, ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(1588), 2, + STATE(1315), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1296), 3, - sym_expression_list, - sym_yield, - sym__f_expression, ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, + ACTIONS(772), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, @@ -26943,14 +26952,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -26968,7 +26977,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3255] = 24, + [3253] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(616), 1, @@ -26993,18 +27002,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(776), 1, anon_sym_STAR_STAR, - STATE(780), 1, + STATE(770), 1, sym_primary_expression, - STATE(781), 1, + STATE(771), 1, sym_string, - STATE(782), 1, + STATE(772), 1, sym_template_string, - STATE(1120), 1, + STATE(1130), 1, sym_expression, ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(1301), 2, + STATE(1315), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(620), 3, @@ -27028,14 +27037,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27053,7 +27062,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3364] = 27, + [3362] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -27072,32 +27081,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(726), 1, anon_sym_STAR, - ACTIONS(784), 1, - sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(794), 1, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, ACTIONS(820), 1, anon_sym_RPAREN, ACTIONS(822), 1, anon_sym_COMMA, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1093), 1, + STATE(1075), 1, sym_expression, - STATE(1186), 1, + STATE(1218), 1, sym_list_splat, - STATE(1453), 1, + STATE(1434), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1452), 2, + STATE(1433), 2, sym_dictionary_splat, sym_keyword_argument, ACTIONS(606), 3, @@ -27109,21 +27118,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(786), 6, + ACTIONS(814), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27141,74 +27150,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3479] = 24, + [3477] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(630), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(750), 1, - sym_identifier, - ACTIONS(760), 1, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(762), 1, - anon_sym_lambda, - ACTIONS(764), 1, - anon_sym_await, - ACTIONS(774), 1, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(782), 1, anon_sym_STAR, - ACTIONS(776), 1, - anon_sym_STAR_STAR, - STATE(780), 1, - sym_primary_expression, - STATE(781), 1, - sym_string, - STATE(782), 1, + STATE(627), 1, sym_template_string, - STATE(1120), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1221), 1, sym_expression, - ACTIONS(626), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1301), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(620), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 4, + ACTIONS(824), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + STATE(1375), 3, + sym_list_splat, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(770), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - ACTIONS(752), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27226,7 +27235,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3588] = 27, + [3586] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -27245,32 +27254,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(726), 1, anon_sym_STAR, - ACTIONS(784), 1, - sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(794), 1, + ACTIONS(812), 1, + sym_identifier, + ACTIONS(816), 1, anon_sym_await, - ACTIONS(824), 1, - anon_sym_RPAREN, ACTIONS(826), 1, + anon_sym_RPAREN, + ACTIONS(828), 1, anon_sym_COMMA, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1075), 1, + STATE(1071), 1, sym_expression, - STATE(1196), 1, + STATE(1220), 1, sym_list_splat, - STATE(1469), 1, + STATE(1456), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1482), 2, + STATE(1471), 2, sym_dictionary_splat, sym_keyword_argument, ACTIONS(606), 3, @@ -27282,21 +27291,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(786), 6, + ACTIONS(814), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27314,7 +27323,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3703] = 25, + [3701] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -27339,27 +27348,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(764), 1, anon_sym_await, - ACTIONS(818), 1, + ACTIONS(810), 1, anon_sym_yield, - STATE(780), 1, + STATE(770), 1, sym_primary_expression, - STATE(781), 1, + STATE(771), 1, sym_string, - STATE(782), 1, + STATE(772), 1, sym_template_string, - STATE(1103), 1, + STATE(1097), 1, sym_expression, ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(1588), 2, + STATE(1587), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1289), 3, + STATE(1286), 3, sym_expression_list, sym_yield, sym__f_expression, @@ -27375,14 +27384,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27400,76 +27409,77 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [3814] = 26, + [3812] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(756), 1, - anon_sym_STAR, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(778), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(726), 1, + anon_sym_STAR, + ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(800), 1, - anon_sym_RPAREN, - ACTIONS(802), 1, - anon_sym_COMMA, - ACTIONS(828), 1, + ACTIONS(812), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(816), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(830), 1, + anon_sym_RPAREN, + ACTIONS(832), 1, + anon_sym_COMMA, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1258), 1, + STATE(1072), 1, sym_expression, - STATE(1497), 1, + STATE(1213), 1, + sym_list_splat, + STATE(1525), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + STATE(1524), 2, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1468), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(814), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27508,21 +27518,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(834), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -27531,7 +27541,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -27540,21 +27550,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27572,76 +27582,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4037] = 27, + [4037] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(71), 1, anon_sym_not, - ACTIONS(682), 1, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(684), 1, - anon_sym_yield, - ACTIONS(788), 1, - anon_sym_LPAREN, - ACTIONS(808), 1, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(357), 1, sym_identifier, - ACTIONS(814), 1, - anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(363), 1, anon_sym_await, - ACTIONS(836), 1, - anon_sym_RPAREN, - STATE(694), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_STAR, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1086), 1, + STATE(1211), 1, sym_expression, - STATE(1187), 1, - sym_list_splat, - STATE(1432), 1, - sym_yield, - STATE(1455), 1, - sym_parenthesized_list_splat, - STATE(1686), 1, - sym__collection_elements, - ACTIONS(309), 2, + STATE(1598), 1, + sym_expression_list, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(836), 2, + sym__newline, + anon_sym_SEMI, + STATE(1557), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27659,7 +27667,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4151] = 25, + [4147] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -27680,21 +27688,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(838), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -27703,7 +27711,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -27712,21 +27720,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27744,7 +27752,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4261] = 25, + [4257] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -27765,21 +27773,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(840), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -27788,7 +27796,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -27797,21 +27805,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27829,7 +27837,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4371] = 25, + [4367] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -27850,21 +27858,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(842), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -27873,7 +27881,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -27882,21 +27890,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27914,7 +27922,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4481] = 25, + [4477] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -27935,21 +27943,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(844), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -27958,7 +27966,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -27967,21 +27975,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -27999,74 +28007,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4591] = 25, + [4587] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(846), 1, - anon_sym_from, - ACTIONS(848), 1, - anon_sym_STAR, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, + anon_sym_await, ACTIONS(850), 1, - anon_sym_STAR_STAR, - STATE(772), 1, + anon_sym_lambda, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1219), 1, + STATE(735), 1, + sym_primary_expression, + STATE(1102), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(772), 2, - sym__newline, - anon_sym_SEMI, - STATE(1393), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(49), 3, + STATE(1180), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(846), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(848), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(786), 5, anon_sym_lazy, anon_sym_print, - anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28084,74 +28090,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4701] = 25, + [4693] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(756), 1, - anon_sym_STAR, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(778), 1, - anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(784), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(792), 1, + anon_sym_STAR, + ACTIONS(794), 1, anon_sym_await, ACTIONS(852), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1087), 1, sym_expression, - STATE(1540), 1, + STATE(1240), 1, + sym_list_splat, + STATE(1318), 1, sym_parenthesized_list_splat, + STATE(1416), 1, + sym_yield, + STATE(1642), 1, + sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28169,74 +28177,75 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4811] = 25, + [4807] = 26, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(756), 1, - anon_sym_STAR, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(778), 1, - anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(784), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(792), 1, + anon_sym_STAR, + ACTIONS(794), 1, anon_sym_await, ACTIONS(854), 1, - anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + anon_sym_RBRACK, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1088), 1, sym_expression, - STATE(1540), 1, - sym_parenthesized_list_splat, + STATE(1179), 1, + sym_list_splat, + STATE(1747), 1, + sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + STATE(1318), 2, + sym_parenthesized_list_splat, + sym_yield, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28254,74 +28263,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [4921] = 25, + [4919] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(305), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(756), 1, - anon_sym_STAR, - ACTIONS(768), 1, - anon_sym_not, - ACTIONS(778), 1, - anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(363), 1, anon_sym_await, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, ACTIONS(856), 1, - anon_sym_RPAREN, - STATE(694), 1, + anon_sym_from, + ACTIONS(858), 1, + anon_sym_STAR, + ACTIONS(860), 1, + anon_sym_STAR_STAR, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1321), 1, + STATE(1207), 1, sym_expression, - STATE(1540), 1, - sym_parenthesized_list_splat, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(770), 2, + sym__newline, + anon_sym_SEMI, + STATE(1346), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28339,74 +28348,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5031] = 25, + [5029] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(756), 1, - anon_sym_STAR, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(778), 1, - anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(784), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(792), 1, + anon_sym_STAR, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(858), 1, + ACTIONS(862), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1089), 1, sym_expression, - STATE(1540), 1, + STATE(1231), 1, + sym_list_splat, + STATE(1501), 1, sym_parenthesized_list_splat, + STATE(1519), 1, + sym_yield, + STATE(1689), 1, + sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28424,7 +28435,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5141] = 23, + [5143] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -28439,35 +28450,35 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(680), 1, anon_sym_not, - ACTIONS(808), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(864), 1, + ACTIONS(850), 1, anon_sym_lambda, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1097), 1, + STATE(1102), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1222), 2, + STATE(1180), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(860), 3, + ACTIONS(864), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - ACTIONS(862), 3, + ACTIONS(866), 3, anon_sym_if, anon_sym_async, anon_sym_for, @@ -28476,20 +28487,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 5, + ACTIONS(786), 5, anon_sym_lazy, anon_sym_print, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28507,7 +28518,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5247] = 25, + [5249] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -28520,35 +28531,35 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(848), 1, + ACTIONS(858), 1, anon_sym_STAR, - ACTIONS(850), 1, + ACTIONS(860), 1, anon_sym_STAR_STAR, - ACTIONS(866), 1, + ACTIONS(868), 1, anon_sym_from, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1219), 1, + STATE(784), 1, + sym_template_string, + STATE(1207), 1, sym_expression, ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(770), 2, + ACTIONS(772), 2, sym__newline, anon_sym_SEMI, - STATE(1393), 2, + STATE(1346), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(49), 3, @@ -28560,21 +28571,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28592,7 +28603,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5357] = 25, + [5359] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -28613,21 +28624,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(868), 1, + ACTIONS(870), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -28636,7 +28647,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -28645,21 +28656,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28677,7 +28688,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5467] = 25, + [5469] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -28698,21 +28709,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(870), 1, + ACTIONS(872), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -28721,7 +28732,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -28730,21 +28741,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28762,74 +28773,72 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5577] = 25, + [5579] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(596), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(756), 1, - anon_sym_STAR, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(778), 1, - anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(872), 1, - anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(850), 1, + anon_sym_lambda, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1102), 1, sym_expression, - STATE(1540), 1, - sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + STATE(1180), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, + ACTIONS(874), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + ACTIONS(876), 3, + anon_sym_if, + anon_sym_async, + anon_sym_for, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(786), 5, anon_sym_lazy, anon_sym_print, - anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28847,74 +28856,76 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5687] = 25, + [5685] = 27, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(756), 1, - anon_sym_STAR, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(778), 1, - anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(684), 1, + anon_sym_yield, + ACTIONS(784), 1, sym_identifier, - ACTIONS(832), 1, - anon_sym_await, - ACTIONS(874), 1, + ACTIONS(788), 1, + anon_sym_LPAREN, + ACTIONS(790), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(792), 1, + anon_sym_STAR, + ACTIONS(794), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1089), 1, sym_expression, - STATE(1540), 1, + STATE(1222), 1, + sym_list_splat, + STATE(1318), 1, sym_parenthesized_list_splat, + STATE(1519), 1, + sym_yield, + STATE(1689), 1, + sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -28932,75 +28943,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5797] = 26, + [5799] = 25, ACTIONS(3), 1, sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(684), 1, - anon_sym_yield, - ACTIONS(788), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(808), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(814), 1, - anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(876), 1, - anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(878), 1, + anon_sym_RPAREN, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1080), 1, + STATE(1308), 1, sym_expression, - STATE(1204), 1, - sym_list_splat, - STATE(1657), 1, - sym__collection_elements, + STATE(1543), 1, + sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1294), 2, - sym_parenthesized_list_splat, - sym_yield, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, + STATE(1542), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29018,76 +29028,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [5909] = 27, + [5909] = 25, ACTIONS(3), 1, sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(684), 1, - anon_sym_yield, - ACTIONS(788), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(808), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(814), 1, - anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(878), 1, + ACTIONS(880), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1070), 1, + STATE(1308), 1, sym_expression, - STATE(1217), 1, - sym_list_splat, - STATE(1294), 1, + STATE(1543), 1, sym_parenthesized_list_splat, - STATE(1461), 1, - sym_yield, - STATE(1721), 1, - sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, + STATE(1542), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29105,7 +29113,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6023] = 26, + [6019] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -29122,34 +29130,35 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(880), 1, - anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(862), 1, + anon_sym_RPAREN, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1095), 1, + STATE(1070), 1, sym_expression, - STATE(1218), 1, + STATE(1237), 1, sym_list_splat, - STATE(1692), 1, + STATE(1318), 1, + sym_parenthesized_list_splat, + STATE(1449), 1, + sym_yield, + STATE(1671), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1294), 2, - sym_parenthesized_list_splat, - sym_yield, ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, @@ -29159,106 +29168,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1037), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(720), 17, - 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_concatenated_template_string, - sym_await, - [6135] = 25, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - ACTIONS(848), 1, - anon_sym_STAR, - ACTIONS(850), 1, - anon_sym_STAR_STAR, - ACTIONS(866), 1, - anon_sym_from, - STATE(772), 1, - sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, - sym_string, - STATE(1219), 1, - sym_expression, - ACTIONS(77), 2, - sym_ellipsis, - sym_float, - ACTIONS(770), 2, - sym__newline, - anon_sym_SEMI, - STATE(1393), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(49), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(79), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(363), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29276,7 +29200,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6245] = 26, + [6133] = 26, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -29293,32 +29217,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, ACTIONS(882), 1, anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1080), 1, + STATE(1077), 1, sym_expression, - STATE(1204), 1, + STATE(1224), 1, sym_list_splat, - STATE(1657), 1, + STATE(1686), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1294), 2, + STATE(1318), 2, sym_parenthesized_list_splat, sym_yield, ACTIONS(606), 3, @@ -29330,21 +29254,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29362,7 +29286,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6357] = 27, + [6245] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -29379,31 +29303,31 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(812), 1, + ACTIONS(790), 1, anon_sym_RPAREN, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1086), 1, + STATE(1089), 1, sym_expression, - STATE(1187), 1, + STATE(1231), 1, sym_list_splat, - STATE(1432), 1, - sym_yield, - STATE(1455), 1, + STATE(1501), 1, sym_parenthesized_list_splat, - STATE(1686), 1, + STATE(1519), 1, + sym_yield, + STATE(1689), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, @@ -29417,21 +29341,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29449,7 +29373,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6471] = 23, + [6359] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -29464,24 +29388,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(680), 1, anon_sym_not, - ACTIONS(808), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(864), 1, + ACTIONS(850), 1, anon_sym_lambda, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1097), 1, + STATE(1102), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1222), 2, + STATE(1180), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, ACTIONS(606), 3, @@ -29501,20 +29425,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 5, + ACTIONS(786), 5, anon_sym_lazy, anon_sym_print, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29532,76 +29456,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6577] = 27, + [6465] = 25, ACTIONS(3), 1, sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(684), 1, - anon_sym_yield, - ACTIONS(788), 1, + ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(808), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(814), 1, - anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(888), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1086), 1, + STATE(1308), 1, sym_expression, - STATE(1187), 1, - sym_list_splat, - STATE(1432), 1, - sym_yield, - STATE(1455), 1, + STATE(1543), 1, sym_parenthesized_list_splat, - STATE(1686), 1, - sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, + STATE(1542), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29619,7 +29541,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6691] = 25, + [6575] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -29640,21 +29562,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(890), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -29663,7 +29585,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -29672,21 +29594,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29704,7 +29626,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6801] = 25, + [6685] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -29725,21 +29647,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(892), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -29748,7 +29670,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -29757,21 +29679,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29789,7 +29711,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [6911] = 25, + [6795] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -29810,21 +29732,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(894), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -29833,7 +29755,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -29842,21 +29764,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29874,7 +29796,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7021] = 25, + [6905] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -29895,21 +29817,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(896), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -29918,7 +29840,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -29927,21 +29849,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -29959,7 +29881,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7131] = 25, + [7015] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -29980,21 +29902,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(898), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -30003,7 +29925,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -30012,21 +29934,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30044,7 +29966,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7241] = 25, + [7125] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -30065,21 +29987,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, ACTIONS(900), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -30088,7 +30010,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -30097,21 +30019,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30129,7 +30051,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7351] = 27, + [7235] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -30146,31 +30068,31 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(888), 1, + ACTIONS(862), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1086), 1, + STATE(1089), 1, sym_expression, - STATE(1202), 1, + STATE(1222), 1, sym_list_splat, - STATE(1294), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - STATE(1432), 1, + STATE(1519), 1, sym_yield, - STATE(1686), 1, + STATE(1689), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, @@ -30184,21 +30106,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30216,7 +30138,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7465] = 26, + [7349] = 26, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -30233,32 +30155,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, ACTIONS(902), 1, anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1092), 1, + STATE(1093), 1, sym_expression, - STATE(1230), 1, + STATE(1238), 1, sym_list_splat, - STATE(1658), 1, + STATE(1687), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1294), 2, + STATE(1318), 2, sym_parenthesized_list_splat, sym_yield, ACTIONS(606), 3, @@ -30270,21 +30192,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30302,72 +30224,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7577] = 23, + [7461] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(602), 1, - anon_sym_LPAREN, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, - anon_sym_not, - ACTIONS(808), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(363), 1, anon_sym_await, - ACTIONS(864), 1, - anon_sym_lambda, - STATE(694), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(856), 1, + anon_sym_from, + ACTIONS(858), 1, + anon_sym_STAR, + ACTIONS(860), 1, + anon_sym_STAR_STAR, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1097), 1, + STATE(1207), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(1222), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(606), 3, + ACTIONS(770), 2, + sym__newline, + anon_sym_SEMI, + STATE(1346), 2, + sym_list_splat, + sym_dictionary_splat, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(904), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(906), 3, - anon_sym_if, - anon_sym_async, - anon_sym_for, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 5, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, + anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30385,7 +30309,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7683] = 25, + [7571] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -30406,21 +30330,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(908), 1, + ACTIONS(904), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -30429,7 +30353,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -30438,21 +30362,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30470,7 +30394,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7793] = 25, + [7681] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -30491,21 +30415,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(910), 1, + ACTIONS(906), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -30514,7 +30438,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -30523,21 +30447,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30555,7 +30479,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [7903] = 25, + [7791] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -30576,21 +30500,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(912), 1, + ACTIONS(908), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -30599,7 +30523,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -30608,21 +30532,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30640,72 +30564,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8013] = 23, + [7901] = 25, ACTIONS(3), 1, sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, - anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(808), 1, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(796), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(864), 1, - anon_sym_lambda, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(910), 1, + anon_sym_RPAREN, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1097), 1, + STATE(1308), 1, sym_expression, + STATE(1543), 1, + sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1222), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(914), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - ACTIONS(916), 3, - anon_sym_if, - anon_sym_async, - anon_sym_for, + STATE(1542), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 5, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, + anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30723,7 +30649,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8119] = 25, + [8011] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -30744,21 +30670,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(918), 1, + ACTIONS(912), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -30767,7 +30693,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -30776,21 +30702,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30808,7 +30734,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8229] = 25, + [8121] = 25, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -30829,21 +30755,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(778), 1, anon_sym_LPAREN, - ACTIONS(828), 1, + ACTIONS(796), 1, sym_identifier, - ACTIONS(832), 1, + ACTIONS(804), 1, anon_sym_await, - ACTIONS(920), 1, + ACTIONS(914), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1308), 1, sym_expression, - STATE(1540), 1, + STATE(1543), 1, sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, @@ -30852,7 +30778,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, + STATE(1542), 3, sym_list_splat, sym_dictionary_splat, sym_keyword_argument, @@ -30861,21 +30787,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30893,7 +30819,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8339] = 27, + [8231] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -30910,31 +30836,31 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(836), 1, + ACTIONS(916), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1086), 1, + STATE(1089), 1, sym_expression, - STATE(1202), 1, + STATE(1222), 1, sym_list_splat, - STATE(1294), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - STATE(1432), 1, + STATE(1519), 1, sym_yield, - STATE(1686), 1, + STATE(1689), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, @@ -30948,21 +30874,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -30980,7 +30906,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8453] = 26, + [8345] = 26, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -30997,32 +30923,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, ACTIONS(902), 1, anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1080), 1, + STATE(1077), 1, sym_expression, - STATE(1204), 1, + STATE(1224), 1, sym_list_splat, - STATE(1657), 1, + STATE(1686), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1294), 2, + STATE(1318), 2, sym_parenthesized_list_splat, sym_yield, ACTIONS(606), 3, @@ -31034,21 +30960,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31066,74 +30992,74 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8565] = 25, + [8457] = 25, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, ACTIONS(55), 1, anon_sym_STAR_STAR, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(596), 1, anon_sym_LBRACK, ACTIONS(756), 1, anon_sym_STAR, - STATE(772), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(796), 1, + sym_identifier, + ACTIONS(804), 1, + anon_sym_await, + ACTIONS(918), 1, + anon_sym_RPAREN, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1235), 1, + STATE(728), 1, + sym_primary_expression, + STATE(1308), 1, sym_expression, - STATE(1591), 1, - sym_expression_list, - ACTIONS(77), 2, + STATE(1543), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(922), 2, - sym__newline, - anon_sym_SEMI, - STATE(1590), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(49), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + STATE(1542), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31151,7 +31077,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8675] = 27, + [8567] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -31168,31 +31094,31 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(812), 1, + ACTIONS(790), 1, anon_sym_RPAREN, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1074), 1, + STATE(1096), 1, sym_expression, - STATE(1226), 1, + STATE(1234), 1, sym_list_splat, - STATE(1294), 1, + STATE(1318), 1, sym_parenthesized_list_splat, - STATE(1447), 1, + STATE(1428), 1, sym_yield, - STATE(1654), 1, + STATE(1703), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, @@ -31206,21 +31132,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31238,7 +31164,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8789] = 26, + [8681] = 26, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -31255,32 +31181,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(876), 1, + ACTIONS(920), 1, anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1090), 1, + STATE(1092), 1, sym_expression, - STATE(1227), 1, + STATE(1235), 1, sym_list_splat, - STATE(1669), 1, + STATE(1710), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1294), 2, + STATE(1318), 2, sym_parenthesized_list_splat, sym_yield, ACTIONS(606), 3, @@ -31292,21 +31218,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31324,7 +31250,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [8901] = 27, + [8793] = 26, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -31341,35 +31267,34 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(812), 1, - anon_sym_RPAREN, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(920), 1, + anon_sym_RBRACK, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1086), 1, + STATE(1077), 1, sym_expression, - STATE(1202), 1, + STATE(1224), 1, sym_list_splat, - STATE(1294), 1, - sym_parenthesized_list_splat, - STATE(1432), 1, - sym_yield, STATE(1686), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, sym_float, + STATE(1318), 2, + sym_parenthesized_list_splat, + sym_yield, ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, @@ -31379,21 +31304,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31411,7 +31336,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9015] = 27, + [8905] = 27, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -31428,31 +31353,31 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(684), 1, anon_sym_yield, + ACTIONS(784), 1, + sym_identifier, ACTIONS(788), 1, anon_sym_LPAREN, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(814), 1, + ACTIONS(792), 1, anon_sym_STAR, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(888), 1, + ACTIONS(916), 1, anon_sym_RPAREN, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1084), 1, + STATE(1089), 1, sym_expression, - STATE(1229), 1, + STATE(1231), 1, sym_list_splat, - STATE(1294), 1, + STATE(1501), 1, sym_parenthesized_list_splat, - STATE(1464), 1, + STATE(1519), 1, sym_yield, - STATE(1655), 1, + STATE(1689), 1, sym__collection_elements, ACTIONS(309), 2, sym_ellipsis, @@ -31466,21 +31391,106 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, + 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_concatenated_template_string, + sym_await, + [9019] = 25, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_STAR, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(796), 1, + sym_identifier, + ACTIONS(804), 1, + anon_sym_await, + ACTIONS(922), 1, + anon_sym_RPAREN, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1308), 1, + sym_expression, + STATE(1543), 1, + sym_parenthesized_list_splat, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1542), 3, + sym_list_splat, + sym_dictionary_splat, + sym_keyword_argument, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(798), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1038), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31523,15 +31533,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(924), 1, anon_sym_COLON, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1247), 1, sym_expression, - STATE(1614), 1, + STATE(1667), 1, sym_index_expression_list, ACTIONS(309), 2, sym_ellipsis, @@ -31540,7 +31550,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1454), 3, + STATE(1457), 3, sym_list_splat, sym__index_expression, sym_slice, @@ -31556,14 +31566,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31606,16 +31616,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(924), 1, anon_sym_COLON, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(926), 1, + anon_sym_RBRACK, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1247), 1, sym_expression, - STATE(1694), 1, - sym_index_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, @@ -31623,7 +31633,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1470), 3, + STATE(1560), 3, sym_list_splat, sym__index_expression, sym_slice, @@ -31639,14 +31649,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31679,25 +31689,25 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, + ACTIONS(585), 1, + anon_sym_LPAREN, ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(684), 1, - anon_sym_yield, ACTIONS(768), 1, anon_sym_not, - ACTIONS(778), 1, - anon_sym_LPAREN, - ACTIONS(780), 1, - anon_sym_RPAREN, ACTIONS(782), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(924), 1, + anon_sym_COLON, + ACTIONS(928), 1, + anon_sym_RBRACK, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1179), 1, + STATE(1247), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -31706,10 +31716,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1354), 3, + STATE(1560), 3, sym_list_splat, - sym_parenthesized_list_splat, - sym_yield, + sym__index_expression, + sym_slice, ACTIONS(311), 4, sym_integer, sym_true, @@ -31722,14 +31732,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31772,15 +31782,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(924), 1, anon_sym_COLON, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1247), 1, sym_expression, - STATE(1660), 1, + STATE(1676), 1, sym_index_expression_list, ACTIONS(309), 2, sym_ellipsis, @@ -31789,7 +31799,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1501), 3, + STATE(1512), 3, sym_list_splat, sym__index_expression, sym_slice, @@ -31805,14 +31815,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31845,26 +31855,26 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, ACTIONS(596), 1, anon_sym_LBRACK, + ACTIONS(684), 1, + anon_sym_yield, ACTIONS(768), 1, anon_sym_not, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(780), 1, + anon_sym_RPAREN, ACTIONS(782), 1, anon_sym_STAR, - ACTIONS(924), 1, - anon_sym_COLON, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1221), 1, sym_expression, - STATE(1735), 1, - sym_index_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, @@ -31872,10 +31882,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1518), 3, + STATE(1375), 3, sym_list_splat, - sym__index_expression, - sym_slice, + sym_parenthesized_list_splat, + sym_yield, ACTIONS(311), 4, sym_integer, sym_true, @@ -31888,14 +31898,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31916,38 +31926,38 @@ static const uint16_t ts_small_parse_table[] = { [9664] = 24, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, + ACTIONS(55), 1, + anon_sym_STAR_STAR, ACTIONS(293), 1, anon_sym_LBRACE, ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, ACTIONS(596), 1, anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - ACTIONS(782), 1, - anon_sym_STAR, - ACTIONS(924), 1, - anon_sym_COLON, - ACTIONS(926), 1, - anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(778), 1, + anon_sym_LPAREN, + ACTIONS(796), 1, + sym_identifier, + ACTIONS(804), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1308), 1, sym_expression, + STATE(1543), 1, + sym_parenthesized_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, @@ -31955,30 +31965,30 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1535), 3, + STATE(1542), 3, sym_list_splat, - sym__index_expression, - sym_slice, + sym_dictionary_splat, + sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(798), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -31996,11 +32006,17 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9771] = 18, + [9771] = 24, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, @@ -32009,53 +32025,53 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(600), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(782), 1, + anon_sym_STAR, + ACTIONS(924), 1, + anon_sym_COLON, + STATE(627), 1, sym_template_string, - STATE(766), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, + STATE(1247), 1, + sym_expression, + STATE(1756), 1, + sym_index_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(272), 3, - anon_sym_DOT, - anon_sym_STAR, - anon_sym_SLASH, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(928), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - ACTIONS(311), 5, + STATE(1436), 3, + sym_list_splat, + sym__index_expression, + sym_slice, + ACTIONS(311), 4, sym_integer, - sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - ACTIONS(303), 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(720), 17, + STATE(1038), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32073,7 +32089,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9866] = 24, + [9878] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -32098,16 +32114,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(924), 1, anon_sym_COLON, - ACTIONS(930), 1, - anon_sym_RBRACK, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1247), 1, sym_expression, + STATE(1645), 1, + sym_index_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, @@ -32115,7 +32131,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1535), 3, + STATE(1414), 3, sym_list_splat, sym__index_expression, sym_slice, @@ -32131,14 +32147,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32156,72 +32172,148 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [9973] = 24, + [9985] = 18, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(600), 1, + anon_sym_await, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(747), 1, + sym_primary_expression, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(272), 3, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(930), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(311), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(583), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + ACTIONS(303), 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(734), 17, + 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_concatenated_template_string, + sym_await, + [10080] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, anon_sym_STAR_STAR, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, ACTIONS(305), 1, anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, + ACTIONS(585), 1, + anon_sym_LPAREN, ACTIONS(596), 1, anon_sym_LBRACK, ACTIONS(756), 1, anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - ACTIONS(778), 1, - anon_sym_LPAREN, - ACTIONS(828), 1, - sym_identifier, - ACTIONS(832), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1321), 1, + STATE(1269), 1, sym_expression, - STATE(1540), 1, - sym_parenthesized_list_splat, + STATE(1674), 1, + sym_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, + STATE(1562), 2, + sym_list_splat, + sym_dictionary_splat, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1539), 3, - sym_list_splat, - sym_dictionary_splat, - sym_keyword_argument, ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(830), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32239,7 +32331,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10080] = 24, + [10186] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -32254,9 +32346,9 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, @@ -32264,20 +32356,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(756), 1, anon_sym_STAR, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1239), 1, + STATE(784), 1, + sym_template_string, + STATE(1212), 1, sym_expression, - STATE(1554), 1, + STATE(1549), 1, sym_expression_list, ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(1590), 2, + STATE(1557), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(49), 3, @@ -32289,21 +32381,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32321,11 +32413,9 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10186] = 24, + [10292] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, ACTIONS(268), 1, sym_identifier, ACTIONS(293), 1, @@ -32342,30 +32432,31 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(756), 1, - anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(782), 1, + anon_sym_STAR, + ACTIONS(924), 1, + anon_sym_COLON, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1265), 1, + STATE(1247), 1, sym_expression, - STATE(1645), 1, - sym_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1573), 2, - sym_list_splat, - sym_dictionary_splat, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, + STATE(1560), 3, + sym_list_splat, + sym__index_expression, + sym_slice, ACTIONS(311), 4, sym_integer, sym_true, @@ -32378,14 +32469,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32403,7 +32494,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10292] = 24, + [10396] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -32428,20 +32519,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1279), 1, + STATE(1253), 1, sym_expression, - STATE(1687), 1, + STATE(1663), 1, sym_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1573), 2, + STATE(1562), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(301), 3, @@ -32460,14 +32551,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32485,7 +32576,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10398] = 23, + [10502] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -32510,13 +32601,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(782), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1179), 1, + STATE(1221), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -32525,7 +32616,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1354), 3, + STATE(1375), 3, sym_list_splat, sym_parenthesized_list_splat, sym_yield, @@ -32541,14 +32632,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32566,7 +32657,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10502] = 24, + [10606] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -32591,20 +32682,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1253), 1, + STATE(1262), 1, sym_expression, - STATE(1636), 1, + STATE(1633), 1, sym_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1573), 2, + STATE(1562), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(301), 3, @@ -32623,14 +32714,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32648,9 +32739,11 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10608] = 23, + [10712] = 24, ACTIONS(3), 1, sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, ACTIONS(268), 1, sym_identifier, ACTIONS(293), 1, @@ -32667,31 +32760,30 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(596), 1, anon_sym_LBRACK, + ACTIONS(756), 1, + anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - ACTIONS(782), 1, - anon_sym_STAR, - ACTIONS(924), 1, - anon_sym_COLON, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1246), 1, + STATE(1284), 1, sym_expression, + STATE(1640), 1, + sym_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, + STATE(1562), 2, + sym_list_splat, + sym_dictionary_splat, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1535), 3, - sym_list_splat, - sym__index_expression, - sym_slice, ACTIONS(311), 4, sym_integer, sym_true, @@ -32704,14 +32796,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32729,7 +32821,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [10712] = 24, + [10818] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -32750,26 +32842,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(756), 1, - anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(932), 1, + anon_sym_RBRACE, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1250), 1, + STATE(1405), 1, sym_expression, - STATE(1629), 1, - sym_expression_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1573), 2, - sym_list_splat, + STATE(1612), 2, sym_dictionary_splat, + sym_pair, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, @@ -32786,94 +32876,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(720), 17, - 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_concatenated_template_string, - sym_await, - [10818] = 23, - ACTIONS(3), 1, - sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, - anon_sym_LBRACE, - ACTIONS(630), 1, - sym__string_start, - ACTIONS(632), 1, - sym__template_string_start, - ACTIONS(750), 1, - sym_identifier, - ACTIONS(760), 1, - anon_sym_not, - ACTIONS(762), 1, - anon_sym_lambda, - ACTIONS(764), 1, - anon_sym_await, - ACTIONS(774), 1, - anon_sym_STAR, - ACTIONS(776), 1, - anon_sym_STAR_STAR, - STATE(780), 1, - sym_primary_expression, - STATE(781), 1, - sym_string, - STATE(782), 1, - sym_template_string, - STATE(1120), 1, - sym_expression, - ACTIONS(626), 2, - sym_ellipsis, - sym_float, - STATE(1301), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(620), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(612), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(752), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1131), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -32892,86 +32902,6 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_template_string, sym_await, [10921] = 23, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - ACTIONS(848), 1, - anon_sym_STAR, - ACTIONS(850), 1, - anon_sym_STAR_STAR, - STATE(772), 1, - sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, - sym_string, - STATE(1219), 1, - sym_expression, - ACTIONS(77), 2, - sym_ellipsis, - sym_float, - STATE(1393), 2, - sym_list_splat, - sym_dictionary_splat, - ACTIONS(49), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(79), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(363), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1126), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(950), 17, - 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_concatenated_template_string, - sym_await, - [11024] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -32996,18 +32926,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_STAR, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1144), 1, + STATE(1131), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1291), 2, + STATE(1301), 2, sym_list_splat, sym_dictionary_splat, ACTIONS(301), 3, @@ -33026,14 +32956,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33051,69 +32981,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11127] = 23, + [11024] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(932), 1, - anon_sym_RBRACE, - STATE(694), 1, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + ACTIONS(774), 1, + anon_sym_STAR, + ACTIONS(776), 1, + anon_sym_STAR_STAR, + STATE(770), 1, + sym_primary_expression, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1395), 1, + STATE(1130), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1315), 2, + sym_list_splat, sym_dictionary_splat, - sym_pair, - ACTIONS(301), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33131,7 +33061,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11230] = 23, + [11127] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -33156,18 +33086,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(934), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1395), 1, + STATE(1405), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1612), 2, sym_dictionary_splat, sym_pair, ACTIONS(301), 3, @@ -33186,14 +33116,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33211,7 +33141,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11333] = 23, + [11230] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -33236,18 +33166,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(936), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1395), 1, + STATE(1405), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1612), 2, sym_dictionary_splat, sym_pair, ACTIONS(301), 3, @@ -33266,14 +33196,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33291,7 +33221,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11436] = 23, + [11333] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -33316,18 +33246,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(938), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1395), 1, + STATE(1405), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1612), 2, sym_dictionary_splat, sym_pair, ACTIONS(301), 3, @@ -33346,14 +33276,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33371,7 +33301,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11539] = 23, + [11436] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -33396,18 +33326,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(940), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1395), 1, + STATE(1405), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1612), 2, sym_dictionary_splat, sym_pair, ACTIONS(301), 3, @@ -33426,14 +33356,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33451,7 +33381,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11642] = 23, + [11539] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -33476,18 +33406,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(942), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1395), 1, + STATE(1405), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1612), 2, sym_dictionary_splat, sym_pair, ACTIONS(301), 3, @@ -33506,14 +33436,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33531,7 +33461,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11745] = 23, + [11642] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -33556,18 +33486,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(944), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1395), 1, + STATE(1405), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1612), 2, sym_dictionary_splat, sym_pair, ACTIONS(301), 3, @@ -33586,14 +33516,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33611,7 +33541,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11848] = 23, + [11745] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(55), 1, @@ -33636,18 +33566,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(946), 1, anon_sym_RBRACE, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1395), 1, + STATE(1405), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1612), 2, sym_dictionary_splat, sym_pair, ACTIONS(301), 3, @@ -33666,14 +33596,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33691,67 +33621,69 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [11951] = 22, + [11848] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_STAR_STAR, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(305), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - STATE(694), 1, + ACTIONS(858), 1, + anon_sym_STAR, + ACTIONS(860), 1, + anon_sym_STAR_STAR, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1395), 1, + STATE(1207), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(1567), 2, + STATE(1346), 2, + sym_list_splat, sym_dictionary_splat, - sym_pair, - ACTIONS(301), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33769,7 +33701,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12051] = 9, + [11951] = 9, ACTIONS(3), 1, sym_comment, ACTIONS(952), 1, @@ -33778,17 +33710,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_except, ACTIONS(956), 1, anon_sym_finally, - STATE(480), 1, + STATE(491), 1, sym_else_clause, - STATE(554), 1, + STATE(584), 1, sym_finally_clause, - STATE(331), 2, + STATE(334), 2, sym_except_group_clause, aux_sym_try_statement_repeat2, - ACTIONS(950), 13, - sym__dedent, + ACTIONS(948), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -33799,7 +33731,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(948), 34, + ACTIONS(950), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -33834,72 +33766,85 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [12125] = 9, + [12025] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(952), 1, - anon_sym_else, - ACTIONS(954), 1, - anon_sym_except, - ACTIONS(956), 1, - anon_sym_finally, - STATE(484), 1, - sym_else_clause, - STATE(572), 1, - sym_finally_clause, - STATE(331), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(960), 13, - sym__dedent, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, + ACTIONS(317), 1, sym__template_string_start, + ACTIONS(585), 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, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(960), 1, + anon_sym_COLON, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1264), 1, + sym_expression, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(958), 34, + ACTIONS(958), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(270), 6, anon_sym_lazy, - 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, - [12199] = 23, + STATE(1038), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(734), 17, + 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_concatenated_template_string, + sym_await, + [12125] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -33922,18 +33867,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(782), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1231), 1, + STATE(1206), 1, sym_expression, - STATE(1333), 1, - sym_type, - STATE(1358), 1, + STATE(1345), 1, sym_list_splat, + STATE(1440), 1, + sym_type, ACTIONS(309), 2, sym_ellipsis, sym_float, @@ -33953,14 +33898,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -33978,68 +33923,68 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12301] = 23, + [12227] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(962), 1, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(782), 1, anon_sym_STAR, - STATE(772), 1, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1271), 1, + STATE(728), 1, + sym_primary_expression, + STATE(1206), 1, sym_expression, - STATE(1436), 1, - sym_type, - STATE(1529), 1, + STATE(1345), 1, sym_list_splat, - ACTIONS(77), 2, + STATE(1657), 1, + sym_type, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34057,68 +34002,68 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12403] = 23, + [12329] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(968), 1, + ACTIONS(966), 1, anon_sym_STAR, - ACTIONS(970), 1, + ACTIONS(968), 1, anon_sym_COLON, - ACTIONS(972), 1, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(974), 1, anon_sym_await, - STATE(789), 1, + STATE(811), 1, sym_primary_expression, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(1177), 1, + STATE(1194), 1, sym_expression, - STATE(1594), 1, + STATE(1600), 1, sym_exception_list, - ACTIONS(660), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34136,102 +34081,88 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12505] = 23, + [12431] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(952), 1, + anon_sym_else, + ACTIONS(956), 1, + anon_sym_finally, + ACTIONS(980), 1, + anon_sym_except, + STATE(465), 1, + sym_else_clause, + STATE(529), 1, + sym_finally_clause, + STATE(330), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(976), 13, sym__string_start, - ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - ACTIONS(782), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, - sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1231), 1, - sym_expression, - STATE(1358), 1, - sym_list_splat, - STATE(1643), 1, - sym_type, - ACTIONS(309), 2, - sym_ellipsis, - sym_float, - ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - ACTIONS(311), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(270), 6, + sym_ellipsis, + sym_float, + ACTIONS(978), 34, anon_sym_lazy, + 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(1037), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(720), 17, - 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_concatenated_template_string, - sym_await, - [12607] = 9, + 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, + [12505] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, + ACTIONS(952), 1, anon_sym_else, + ACTIONS(956), 1, + anon_sym_finally, ACTIONS(980), 1, anon_sym_except, - ACTIONS(982), 1, - anon_sym_finally, - STATE(481), 1, + STATE(491), 1, sym_else_clause, - STATE(557), 1, + STATE(584), 1, sym_finally_clause, - STATE(315), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(950), 13, + STATE(330), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(948), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -34245,7 +34176,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(948), 34, + ACTIONS(950), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -34280,7 +34211,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [12681] = 23, + [12579] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -34303,17 +34234,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(782), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1231), 1, + STATE(1206), 1, sym_expression, - STATE(1358), 1, + STATE(1345), 1, sym_list_splat, - STATE(1494), 1, + STATE(1653), 1, sym_type, ACTIONS(309), 2, sym_ellipsis, @@ -34334,14 +34265,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34359,9 +34290,11 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12783] = 23, + [12681] = 22, ACTIONS(3), 1, sym_comment, + ACTIONS(55), 1, + anon_sym_STAR_STAR, ACTIONS(268), 1, sym_identifier, ACTIONS(293), 1, @@ -34380,23 +34313,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - ACTIONS(782), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1231), 1, + STATE(1405), 1, sym_expression, - STATE(1358), 1, - sym_list_splat, - STATE(1715), 1, - sym_type, ACTIONS(309), 2, sym_ellipsis, sym_float, + STATE(1612), 2, + sym_dictionary_splat, + sym_pair, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, @@ -34413,14 +34343,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34438,26 +34368,26 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [12885] = 9, + [12781] = 9, ACTIONS(3), 1, sym_comment, ACTIONS(952), 1, anon_sym_else, + ACTIONS(954), 1, + anon_sym_except, ACTIONS(956), 1, anon_sym_finally, - ACTIONS(984), 1, - anon_sym_except, - STATE(484), 1, + STATE(465), 1, sym_else_clause, - STATE(572), 1, + STATE(529), 1, sym_finally_clause, - STATE(324), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(960), 13, - sym__dedent, + STATE(334), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(976), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -34468,7 +34398,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(958), 34, + ACTIONS(978), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -34503,7 +34433,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [12959] = 22, + [12855] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -34524,22 +34454,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - ACTIONS(988), 1, - anon_sym_COLON, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1264), 1, + STATE(1206), 1, sym_expression, + STATE(1345), 1, + sym_list_splat, + STATE(1707), 1, + sym_type, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(986), 2, - anon_sym_COMMA, - anon_sym_RBRACK, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, @@ -34556,14 +34487,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34581,105 +34512,91 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13059] = 23, + [12957] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, - anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(982), 1, + anon_sym_else, + ACTIONS(984), 1, + anon_sym_except, + ACTIONS(986), 1, + anon_sym_finally, + STATE(473), 1, + sym_else_clause, + STATE(546), 1, + sym_finally_clause, + STATE(324), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(948), 13, + sym__dedent, sym__string_start, - ACTIONS(666), 1, sym__template_string_start, - ACTIONS(964), 1, - sym_identifier, - ACTIONS(972), 1, - anon_sym_not, - ACTIONS(974), 1, - anon_sym_lambda, - ACTIONS(976), 1, - anon_sym_await, - ACTIONS(990), 1, - anon_sym_STAR, - ACTIONS(992), 1, - anon_sym_COLON, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, - sym_template_string, - STATE(1208), 1, - sym_expression, - STATE(1547), 1, - sym_exception_list, - ACTIONS(660), 2, - sym_ellipsis, - sym_float, - ACTIONS(654), 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(646), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(966), 6, + sym_ellipsis, + sym_float, + ACTIONS(950), 34, anon_sym_lazy, + 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(1198), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(985), 17, - 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_concatenated_template_string, - sym_await, - [13161] = 9, + 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, + [13031] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, - anon_sym_else, ACTIONS(982), 1, + anon_sym_else, + ACTIONS(986), 1, anon_sym_finally, - ACTIONS(994), 1, + ACTIONS(988), 1, anon_sym_except, - STATE(481), 1, + STATE(473), 1, sym_else_clause, - STATE(557), 1, + STATE(546), 1, sym_finally_clause, - STATE(314), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(950), 13, + STATE(331), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(948), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -34690,7 +34607,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(948), 34, + ACTIONS(950), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -34725,7 +34642,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [13235] = 22, + [13105] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -34746,22 +34663,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - ACTIONS(998), 1, - anon_sym_COLON, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1244), 1, + STATE(1206), 1, sym_expression, + STATE(1345), 1, + sym_list_splat, + STATE(1629), 1, + sym_type, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(996), 2, - anon_sym_COMMA, - anon_sym_RBRACK, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, @@ -34778,14 +34696,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34803,7 +34721,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13335] = 23, + [13207] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -34824,23 +34742,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - ACTIONS(782), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(992), 1, + anon_sym_COLON, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1231), 1, + STATE(1249), 1, sym_expression, - STATE(1358), 1, - sym_list_splat, - STATE(1630), 1, - sym_type, ACTIONS(309), 2, sym_ellipsis, sym_float, + ACTIONS(990), 2, + anon_sym_COMMA, + anon_sym_RBRACK, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, @@ -34857,14 +34774,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -34882,91 +34799,342 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13437] = 9, + [13307] = 23, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, - anon_sym_else, - ACTIONS(982), 1, - anon_sym_finally, - ACTIONS(994), 1, - anon_sym_except, - STATE(476), 1, - sym_else_clause, - STATE(537), 1, - sym_finally_clause, - STATE(314), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(960), 13, + ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, + ACTIONS(85), 1, sym__template_string_start, - ts_builtin_sym_end, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(994), 1, + anon_sym_STAR, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, + sym_string, + STATE(784), 1, + sym_template_string, + STATE(1276), 1, + sym_expression, + STATE(1486), 1, + sym_list_splat, + STATE(1488), 1, + sym_type, + ACTIONS(77), 2, + sym_ellipsis, + sym_float, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(79), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(359), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1145), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(905), 17, + 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_concatenated_template_string, + sym_await, + [13409] = 23, + ACTIONS(3), 1, + sym_comment, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(962), 1, + sym_identifier, + ACTIONS(970), 1, + anon_sym_not, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(996), 1, + anon_sym_STAR, + ACTIONS(998), 1, + anon_sym_COLON, + STATE(811), 1, + sym_primary_expression, + STATE(814), 1, + sym_string, + STATE(815), 1, + sym_template_string, + STATE(1226), 1, + sym_expression, + STATE(1616), 1, + sym_exception_list, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(958), 34, + ACTIONS(642), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(634), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(964), 6, anon_sym_lazy, - 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, + STATE(1228), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(960), 17, + 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_concatenated_template_string, + sym_await, + [13511] = 23, + ACTIONS(3), 1, + sym_comment, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - anon_sym_yield, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1206), 1, + sym_expression, + STATE(1345), 1, + sym_list_splat, + STATE(1387), 1, + sym_type, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 4, sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(270), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1038), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(734), 17, + 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_concatenated_template_string, + sym_await, + [13613] = 23, + ACTIONS(3), 1, + sym_comment, + ACTIONS(268), 1, sym_identifier, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, anon_sym_await, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, + anon_sym_not, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1206), 1, + sym_expression, + STATE(1345), 1, + sym_list_splat, + STATE(1673), 1, + sym_type, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 4, + sym_integer, sym_true, sym_false, sym_none, - [13511] = 9, + ACTIONS(270), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1038), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(734), 17, + 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_concatenated_template_string, + sym_await, + [13715] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, + ACTIONS(982), 1, anon_sym_else, - ACTIONS(980), 1, + ACTIONS(984), 1, anon_sym_except, - ACTIONS(982), 1, + ACTIONS(986), 1, anon_sym_finally, - STATE(476), 1, + STATE(485), 1, sym_else_clause, - STATE(537), 1, + STATE(530), 1, sym_finally_clause, - STATE(315), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(960), 13, + STATE(324), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(976), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -34977,7 +35145,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(958), 34, + ACTIONS(978), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -35012,23 +35180,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [13585] = 9, + [13789] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(952), 1, + ACTIONS(982), 1, anon_sym_else, - ACTIONS(956), 1, + ACTIONS(986), 1, anon_sym_finally, - ACTIONS(984), 1, + ACTIONS(988), 1, anon_sym_except, - STATE(480), 1, + STATE(485), 1, sym_else_clause, - STATE(554), 1, + STATE(530), 1, sym_finally_clause, - STATE(324), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(950), 13, + STATE(331), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(976), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -35042,7 +35210,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(948), 34, + ACTIONS(978), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -35077,7 +35245,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [13659] = 23, + [13863] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -35100,17 +35268,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(782), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1231), 1, + STATE(1206), 1, sym_expression, - STATE(1358), 1, + STATE(1345), 1, sym_list_splat, - STATE(1747), 1, + STATE(1646), 1, sym_type, ACTIONS(309), 2, sym_ellipsis, @@ -35131,14 +35299,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35156,7 +35324,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13761] = 23, + [13965] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -35179,17 +35347,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(782), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1231), 1, + STATE(1206), 1, sym_expression, - STATE(1358), 1, + STATE(1345), 1, sym_list_splat, - STATE(1642), 1, + STATE(1648), 1, sym_type, ACTIONS(309), 2, sym_ellipsis, @@ -35210,14 +35378,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35235,7 +35403,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13863] = 23, + [14067] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -35258,17 +35426,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(782), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1231), 1, + STATE(1206), 1, sym_expression, - STATE(1358), 1, + STATE(1345), 1, sym_list_splat, - STATE(1644), 1, + STATE(1652), 1, sym_type, ACTIONS(309), 2, sym_ellipsis, @@ -35289,14 +35457,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35314,68 +35482,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [13965] = 23, + [14169] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(305), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - ACTIONS(782), 1, - anon_sym_STAR, - STATE(694), 1, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1231), 1, + STATE(1266), 1, sym_expression, - STATE(1358), 1, - sym_list_splat, - STATE(1648), 1, - sym_type, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(1000), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35393,68 +35558,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14067] = 23, + [14266] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(962), 1, + sym_identifier, + ACTIONS(968), 1, + anon_sym_COLON, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(782), 1, - anon_sym_STAR, - STATE(694), 1, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, + anon_sym_await, + STATE(811), 1, + sym_primary_expression, + STATE(814), 1, sym_string, - STATE(698), 1, + STATE(815), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1231), 1, + STATE(1194), 1, sym_expression, - STATE(1358), 1, - sym_list_splat, - STATE(1649), 1, - sym_type, - ACTIONS(309), 2, + STATE(1600), 1, + sym_exception_list, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35472,66 +35635,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14169] = 22, + [14365] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(972), 1, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(974), 1, anon_sym_await, - ACTIONS(1000), 1, - anon_sym_RPAREN, - STATE(789), 1, + ACTIONS(1002), 1, + anon_sym_LPAREN, + STATE(811), 1, sym_primary_expression, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(1192), 1, + STATE(1223), 1, sym_expression, - STATE(1522), 1, + STATE(1473), 1, sym_with_item, - ACTIONS(660), 2, + STATE(1693), 1, + sym_with_clause, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35549,66 +35712,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14268] = 22, + [14464] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(964), 1, - sym_identifier, - ACTIONS(972), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(974), 1, - anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(1002), 1, - anon_sym_LPAREN, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, + ACTIONS(850), 1, + anon_sym_lambda, + STATE(627), 1, sym_template_string, - STATE(1192), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, + sym_primary_expression, + STATE(1102), 1, sym_expression, - STATE(1478), 1, - sym_with_item, - STATE(1719), 1, - sym_with_clause, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + STATE(1178), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35626,65 +35788,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14367] = 21, + [14561] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - STATE(772), 1, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, + anon_sym_await, + ACTIONS(850), 1, + anon_sym_lambda, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1278), 1, + STATE(735), 1, + sym_primary_expression, + STATE(1102), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(1004), 2, - sym__newline, - anon_sym_SEMI, - ACTIONS(49), 3, + STATE(1180), 2, + sym__expression_within_for_in_clause, + sym_lambda_within_for_in_clause, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35702,142 +35864,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14464] = 22, + [14658] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(964), 1, - sym_identifier, - ACTIONS(970), 1, - anon_sym_COLON, - ACTIONS(972), 1, + ACTIONS(71), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(976), 1, - anon_sym_await, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, - sym_template_string, - STATE(1177), 1, - sym_expression, - STATE(1594), 1, - sym_exception_list, - ACTIONS(660), 2, - sym_ellipsis, - sym_float, - ACTIONS(654), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(646), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(966), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1198), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(985), 17, - 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_concatenated_template_string, - sym_await, - [14563] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(602), 1, - anon_sym_LPAREN, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, - anon_sym_not, - ACTIONS(808), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(363), 1, anon_sym_await, - ACTIONS(864), 1, - anon_sym_lambda, - STATE(694), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1104), 1, + STATE(1266), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - STATE(1178), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(606), 3, + ACTIONS(1004), 2, + sym__newline, + anon_sym_SEMI, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35855,7 +35940,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14660] = 22, + [14755] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -35876,21 +35961,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - ACTIONS(782), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1317), 1, + STATE(1312), 1, sym_expression, - STATE(1566), 1, - sym_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, + ACTIONS(1006), 2, + anon_sym_COMMA, + anon_sym_RBRACK, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, @@ -35907,14 +35991,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -35932,142 +36016,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14759] = 22, + [14852] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(656), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(972), 1, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(974), 1, anon_sym_await, - ACTIONS(1002), 1, - anon_sym_LPAREN, - STATE(789), 1, + ACTIONS(998), 1, + anon_sym_COLON, + STATE(811), 1, sym_primary_expression, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, - sym_template_string, - STATE(1192), 1, - sym_expression, - STATE(1478), 1, - sym_with_item, - STATE(1716), 1, - sym_with_clause, - ACTIONS(660), 2, - sym_ellipsis, - sym_float, - ACTIONS(654), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(646), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(966), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1198), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(985), 17, - 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_concatenated_template_string, - sym_await, - [14858] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, + STATE(815), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, - sym_string, - STATE(1278), 1, + STATE(1226), 1, sym_expression, - ACTIONS(77), 2, + STATE(1616), 1, + sym_exception_list, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(1006), 2, - sym__newline, - anon_sym_SEMI, - ACTIONS(49), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36085,7 +36093,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [14955] = 21, + [14951] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -36106,13 +36114,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1320), 1, + STATE(1316), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -36136,14 +36144,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36161,65 +36169,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15052] = 21, + [15048] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(962), 1, + sym_identifier, + ACTIONS(970), 1, anon_sym_not, - STATE(694), 1, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, + anon_sym_await, + ACTIONS(1010), 1, + anon_sym_RPAREN, + STATE(811), 1, + sym_primary_expression, + STATE(814), 1, sym_string, - STATE(698), 1, + STATE(815), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1303), 1, + STATE(1223), 1, sym_expression, - ACTIONS(309), 2, + STATE(1511), 1, + sym_with_item, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(1010), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(301), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36237,7 +36246,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15149] = 21, + [15147] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -36252,24 +36261,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(680), 1, anon_sym_not, - ACTIONS(808), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(864), 1, + ACTIONS(850), 1, anon_sym_lambda, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1097), 1, + STATE(1102), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1174), 2, + STATE(1173), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, ACTIONS(606), 3, @@ -36281,21 +36290,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36313,65 +36322,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15246] = 21, + [15244] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(970), 1, + anon_sym_not, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, anon_sym_await, - ACTIONS(575), 1, + ACTIONS(1002), 1, anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(811), 1, sym_primary_expression, - STATE(779), 1, + STATE(814), 1, sym_string, - STATE(1278), 1, + STATE(815), 1, + sym_template_string, + STATE(1223), 1, sym_expression, - ACTIONS(77), 2, + STATE(1473), 1, + sym_with_item, + STATE(1709), 1, + sym_with_clause, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(1012), 2, - sym__newline, - anon_sym_SEMI, - ACTIONS(49), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36402,26 +36412,26 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, ACTIONS(579), 1, anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1278), 1, + STATE(784), 1, + sym_template_string, + STATE(1266), 1, sym_expression, ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(1014), 2, + ACTIONS(1012), 2, sym__newline, anon_sym_SEMI, ACTIONS(49), 3, @@ -36433,21 +36443,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36480,24 +36490,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(680), 1, anon_sym_not, - ACTIONS(808), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(864), 1, + ACTIONS(850), 1, anon_sym_lambda, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1097), 1, + STATE(1103), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1135), 2, + STATE(1184), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, ACTIONS(606), 3, @@ -36509,21 +36519,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36541,7 +36551,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15537] = 21, + [15537] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -36562,20 +36572,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(782), 1, + anon_sym_STAR, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1318), 1, + STATE(1289), 1, sym_expression, + STATE(1537), 1, + sym_list_splat, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(1016), 2, - anon_sym_COMMA, - anon_sym_RBRACK, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, @@ -36592,14 +36603,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36617,66 +36628,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15634] = 22, + [15636] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(972), 1, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(974), 1, anon_sym_await, - ACTIONS(992), 1, - anon_sym_COLON, - STATE(789), 1, + ACTIONS(1002), 1, + anon_sym_LPAREN, + STATE(811), 1, sym_primary_expression, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(1208), 1, + STATE(1223), 1, sym_expression, - STATE(1547), 1, - sym_exception_list, - ACTIONS(660), 2, + STATE(1473), 1, + sym_with_item, + STATE(1751), 1, + sym_with_clause, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36694,66 +36705,65 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [15733] = 22, + [15735] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, - anon_sym_LBRACE, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(268), 1, sym_identifier, - ACTIONS(972), 1, - anon_sym_not, - ACTIONS(974), 1, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(313), 1, anon_sym_await, - ACTIONS(1002), 1, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, anon_sym_LPAREN, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, + anon_sym_not, + STATE(627), 1, sym_template_string, - STATE(1192), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1319), 1, sym_expression, - STATE(1478), 1, - sym_with_item, - STATE(1613), 1, - sym_with_clause, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(1014), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36774,63 +36784,63 @@ static const uint16_t ts_small_parse_table[] = { [15832] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(972), 1, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(974), 1, anon_sym_await, ACTIONS(1002), 1, anon_sym_LPAREN, - STATE(789), 1, + STATE(811), 1, sym_primary_expression, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(1192), 1, + STATE(1223), 1, sym_expression, - STATE(1478), 1, + STATE(1473), 1, sym_with_item, - STATE(1622), 1, + STATE(1626), 1, sym_with_clause, - ACTIONS(660), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36851,39 +36861,39 @@ static const uint16_t ts_small_parse_table[] = { [15931] = 21, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, - anon_sym_await, - ACTIONS(864), 1, - anon_sym_lambda, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1097), 1, + STATE(1322), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1222), 2, - sym__expression_within_for_in_clause, - sym_lambda_within_for_in_clause, - ACTIONS(606), 3, + ACTIONS(1016), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -36892,21 +36902,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -36939,24 +36949,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(680), 1, anon_sym_not, - ACTIONS(808), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - ACTIONS(864), 1, + ACTIONS(850), 1, anon_sym_lambda, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1099), 1, + STATE(1098), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(1205), 2, + STATE(1242), 2, sym__expression_within_for_in_clause, sym_lambda_within_for_in_clause, ACTIONS(606), 3, @@ -36968,21 +36978,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37003,63 +37013,63 @@ static const uint16_t ts_small_parse_table[] = { [16125] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(972), 1, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(974), 1, anon_sym_await, ACTIONS(1018), 1, anon_sym_RPAREN, - STATE(789), 1, + STATE(811), 1, sym_primary_expression, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(1192), 1, + STATE(1223), 1, sym_expression, - STATE(1522), 1, + STATE(1511), 1, sym_with_item, - ACTIONS(660), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37080,62 +37090,62 @@ static const uint16_t ts_small_parse_table[] = { [16224] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(305), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - STATE(694), 1, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1283), 1, + STATE(1266), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, ACTIONS(1020), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(301), 3, + sym__newline, + anon_sym_SEMI, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37153,9 +37163,94 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [16321] = 3, + [16321] = 21, ACTIONS(3), 1, sym_comment, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, + anon_sym_LBRACE, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(962), 1, + sym_identifier, + ACTIONS(970), 1, + anon_sym_not, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, + anon_sym_await, + STATE(811), 1, + sym_primary_expression, + STATE(814), 1, + sym_string, + STATE(815), 1, + sym_template_string, + STATE(1223), 1, + sym_expression, + STATE(1511), 1, + sym_with_item, + ACTIONS(648), 2, + sym_ellipsis, + sym_float, + ACTIONS(642), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(634), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(964), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1228), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(960), 17, + 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_concatenated_template_string, + sym_await, + [16417] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(952), 1, + anon_sym_else, + ACTIONS(1026), 1, + anon_sym_elif, + STATE(329), 1, + aux_sym_if_statement_repeat1, + STATE(480), 1, + sym_elif_clause, + STATE(517), 1, + sym_else_clause, ACTIONS(1022), 13, sym__string_start, sym__template_string_start, @@ -37170,7 +37265,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1024), 39, + ACTIONS(1024), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37184,17 +37279,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, @@ -37210,10 +37300,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16381] = 3, + [16487] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1026), 13, + ACTIONS(1028), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -37227,7 +37317,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1028), 39, + ACTIONS(1030), 39, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37267,72 +37357,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16441] = 3, + [16547] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1032), 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(1030), 35, - 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, - [16501] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1038), 1, - anon_sym_except, - STATE(314), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(1034), 13, + ACTIONS(1032), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -37346,7 +37374,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1036), 36, + ACTIONS(1034), 39, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37360,14 +37388,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, @@ -37383,18 +37414,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16565] = 5, + [16607] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1045), 1, - anon_sym_except, - STATE(315), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - ACTIONS(1041), 13, + ACTIONS(1032), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37405,7 +37431,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1043), 36, + ACTIONS(1034), 39, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37419,14 +37445,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, @@ -37442,10 +37471,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16629] = 3, + [16667] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1026), 13, + ACTIONS(982), 1, + anon_sym_else, + ACTIONS(1040), 1, + anon_sym_elif, + STATE(323), 1, + aux_sym_if_statement_repeat1, + STATE(481), 1, + sym_elif_clause, + STATE(540), 1, + sym_else_clause, + ACTIONS(1038), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -37459,7 +37498,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1028), 39, + ACTIONS(1036), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37473,17 +37512,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, @@ -37499,67 +37533,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16689] = 3, + [16737] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1050), 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(1048), 35, - 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, - [16749] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1054), 13, + ACTIONS(1044), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -37573,7 +37550,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1052), 39, + ACTIONS(1042), 39, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37613,23 +37590,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16809] = 8, + [16797] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, - anon_sym_else, - ACTIONS(1060), 1, - anon_sym_elif, - STATE(392), 1, - aux_sym_if_statement_repeat1, - STATE(473), 1, - sym_elif_clause, - STATE(566), 1, - sym_else_clause, - ACTIONS(1056), 13, + ACTIONS(1048), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37640,7 +37607,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1058), 34, + ACTIONS(1046), 39, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37654,12 +37621,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, @@ -37675,85 +37647,70 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [16879] = 8, + [16857] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(952), 1, - anon_sym_else, - ACTIONS(1066), 1, - anon_sym_elif, - STATE(321), 1, - aux_sym_if_statement_repeat1, - STATE(479), 1, - sym_elif_clause, - STATE(549), 1, - sym_else_clause, - ACTIONS(1064), 13, - sym__dedent, - sym__string_start, - sym__template_string_start, - anon_sym_LPAREN, + ACTIONS(1052), 17, + anon_sym_as, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_LBRACE, anon_sym_STAR_STAR, + anon_sym_EQ, anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1062), 34, - anon_sym_lazy, - 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_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(1050), 35, + 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_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_in, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_RBRACE, anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [16949] = 8, + 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, + [16917] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(952), 1, - anon_sym_else, - ACTIONS(1066), 1, - anon_sym_elif, - STATE(350), 1, - aux_sym_if_statement_repeat1, - STATE(479), 1, - sym_elif_clause, - STATE(563), 1, - sym_else_clause, - ACTIONS(1070), 13, - sym__dedent, + ACTIONS(1048), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37764,7 +37721,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1068), 34, + ACTIONS(1046), 39, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37778,12 +37735,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, @@ -37799,23 +37761,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17019] = 8, + [16977] = 8, ACTIONS(3), 1, sym_comment, ACTIONS(952), 1, anon_sym_else, - ACTIONS(1066), 1, + ACTIONS(1026), 1, anon_sym_elif, - STATE(337), 1, + STATE(382), 1, aux_sym_if_statement_repeat1, - STATE(479), 1, + STATE(480), 1, sym_elif_clause, - STATE(565), 1, + STATE(590), 1, sym_else_clause, - ACTIONS(1074), 13, - sym__dedent, + ACTIONS(1054), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -37826,7 +37788,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1072), 34, + ACTIONS(1056), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37861,64 +37823,64 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17089] = 21, + [17047] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(972), 1, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(974), 1, anon_sym_await, - STATE(789), 1, + STATE(811), 1, sym_primary_expression, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(1193), 1, + STATE(1215), 1, sym_expression, - STATE(1564), 1, + STATE(1584), 1, sym_exception_list, - ACTIONS(660), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -37936,15 +37898,20 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [17185] = 5, + [17143] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1076), 1, - anon_sym_except, - STATE(324), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - ACTIONS(1034), 13, + ACTIONS(982), 1, + anon_sym_else, + ACTIONS(1040), 1, + anon_sym_elif, + STATE(396), 1, + aux_sym_if_statement_repeat1, + STATE(481), 1, + sym_elif_clause, + STATE(552), 1, + sym_else_clause, + ACTIONS(1054), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -37958,7 +37925,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1036), 36, + ACTIONS(1056), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -37972,12 +37939,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, @@ -37995,10 +37960,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17249] = 3, + [17213] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1022), 13, + ACTIONS(1062), 1, + anon_sym_except, + STATE(324), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1060), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -38012,7 +37982,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1024), 39, + ACTIONS(1058), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38026,17 +37996,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, @@ -38052,13 +38019,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17309] = 3, + [17277] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1079), 13, + ACTIONS(1067), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38069,7 +38036,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1081), 39, + ACTIONS(1065), 39, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38109,23 +38076,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17369] = 8, + [17337] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, - anon_sym_else, - ACTIONS(1060), 1, - anon_sym_elif, - STATE(392), 1, - aux_sym_if_statement_repeat1, - STATE(473), 1, - sym_elif_clause, - STATE(520), 1, - sym_else_clause, - ACTIONS(1070), 13, + ACTIONS(1028), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38136,7 +38093,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1068), 34, + ACTIONS(1030), 39, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38150,12 +38107,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, @@ -38171,13 +38133,80 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17439] = 3, + [17397] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1054), 13, + ACTIONS(1071), 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(1069), 35, + 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, + [17457] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(982), 1, + anon_sym_else, + ACTIONS(1040), 1, + anon_sym_elif, + STATE(332), 1, + aux_sym_if_statement_repeat1, + STATE(481), 1, + sym_elif_clause, + STATE(526), 1, + sym_else_clause, + ACTIONS(1022), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38188,7 +38217,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1052), 39, + ACTIONS(1024), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38202,17 +38231,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, @@ -38228,20 +38252,20 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17499] = 8, + [17527] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, + ACTIONS(952), 1, anon_sym_else, - ACTIONS(1060), 1, + ACTIONS(1026), 1, anon_sym_elif, - STATE(319), 1, + STATE(382), 1, aux_sym_if_statement_repeat1, - STATE(473), 1, + STATE(480), 1, sym_elif_clause, - STATE(521), 1, + STATE(577), 1, sym_else_clause, - ACTIONS(1074), 13, + ACTIONS(1073), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -38255,7 +38279,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1072), 34, + ACTIONS(1075), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38290,13 +38314,18 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17569] = 3, + [17597] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1079), 13, - sym__dedent, + ACTIONS(1077), 1, + anon_sym_except, + STATE(330), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + ACTIONS(1060), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38307,7 +38336,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1081), 39, + ACTIONS(1058), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38321,17 +38350,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, @@ -38347,15 +38373,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17629] = 5, + [17661] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1083), 1, + ACTIONS(1084), 1, anon_sym_except, STATE(331), 2, sym_except_group_clause, aux_sym_try_statement_repeat2, - ACTIONS(1041), 13, + ACTIONS(1082), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -38369,7 +38395,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1043), 36, + ACTIONS(1080), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38406,23 +38432,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17693] = 8, + [17725] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, + ACTIONS(982), 1, anon_sym_else, - ACTIONS(1060), 1, + ACTIONS(1040), 1, anon_sym_elif, - STATE(327), 1, + STATE(396), 1, aux_sym_if_statement_repeat1, - STATE(473), 1, + STATE(481), 1, sym_elif_clause, - STATE(529), 1, + STATE(539), 1, sym_else_clause, - ACTIONS(1064), 13, + ACTIONS(1073), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38433,7 +38459,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1062), 34, + ACTIONS(1075), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38468,13 +38494,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17763] = 3, + [17795] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1088), 13, - sym__dedent, + ACTIONS(1044), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38485,7 +38511,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1086), 39, + ACTIONS(1042), 39, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38525,10 +38551,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17823] = 3, + [17855] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1088), 13, + ACTIONS(1087), 1, + anon_sym_except, + STATE(334), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + ACTIONS(1082), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -38542,7 +38573,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1086), 39, + ACTIONS(1080), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38556,17 +38587,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, @@ -38582,139 +38610,121 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [17883] = 21, + [17919] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, - anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(1067), 13, sym__string_start, - ACTIONS(666), 1, sym__template_string_start, - ACTIONS(964), 1, - sym_identifier, - ACTIONS(972), 1, - anon_sym_not, - ACTIONS(974), 1, - anon_sym_lambda, - ACTIONS(976), 1, - anon_sym_await, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, - sym_template_string, - STATE(1209), 1, - sym_expression, - STATE(1551), 1, - sym_exception_list, - ACTIONS(660), 2, - sym_ellipsis, - sym_float, - ACTIONS(654), 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(646), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(966), 6, + sym_ellipsis, + sym_float, + ACTIONS(1065), 39, anon_sym_lazy, + 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(1198), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(985), 17, - 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_concatenated_template_string, - sym_await, + 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, [17979] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(972), 1, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(974), 1, anon_sym_await, - STATE(789), 1, + STATE(811), 1, sym_primary_expression, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(1192), 1, + STATE(1227), 1, sym_expression, - STATE(1522), 1, - sym_with_item, - ACTIONS(660), 2, + STATE(1580), 1, + sym_exception_list, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38737,18 +38747,18 @@ static const uint16_t ts_small_parse_table[] = { sym_comment, ACTIONS(952), 1, anon_sym_else, - ACTIONS(1066), 1, + ACTIONS(1026), 1, anon_sym_elif, - STATE(350), 1, + STATE(321), 1, aux_sym_if_statement_repeat1, - STATE(479), 1, + STATE(480), 1, sym_elif_clause, STATE(578), 1, sym_else_clause, - ACTIONS(1056), 13, - sym__dedent, + ACTIONS(1038), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -38759,7 +38769,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1058), 34, + ACTIONS(1036), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -38797,59 +38807,59 @@ static const uint16_t ts_small_parse_table[] = { [18145] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(602), 1, - anon_sym_LPAREN, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(962), 1, + sym_identifier, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(682), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, + ACTIONS(974), 1, anon_sym_await, - STATE(694), 1, + STATE(811), 1, + sym_primary_expression, + STATE(814), 1, sym_string, - STATE(698), 1, + STATE(815), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1069), 1, + STATE(1186), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38870,59 +38880,59 @@ static const uint16_t ts_small_parse_table[] = { [18238] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(970), 1, + anon_sym_not, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(811), 1, sym_primary_expression, - STATE(779), 1, + STATE(814), 1, sym_string, - STATE(1112), 1, + STATE(815), 1, + sym_template_string, + STATE(1189), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -38943,59 +38953,59 @@ static const uint16_t ts_small_parse_table[] = { [18331] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(970), 1, + anon_sym_not, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(811), 1, sym_primary_expression, - STATE(779), 1, + STATE(814), 1, sym_string, - STATE(1241), 1, + STATE(815), 1, + sym_template_string, + STATE(1190), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39016,59 +39026,59 @@ static const uint16_t ts_small_parse_table[] = { [18424] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(970), 1, + anon_sym_not, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(811), 1, sym_primary_expression, - STATE(779), 1, + STATE(814), 1, sym_string, - STATE(1295), 1, + STATE(815), 1, + sym_template_string, + STATE(1191), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39089,59 +39099,59 @@ static const uint16_t ts_small_parse_table[] = { [18517] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(602), 1, - anon_sym_LPAREN, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(962), 1, + sym_identifier, + ACTIONS(970), 1, anon_sym_not, - ACTIONS(682), 1, + ACTIONS(972), 1, anon_sym_lambda, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, + ACTIONS(974), 1, anon_sym_await, - STATE(694), 1, + STATE(811), 1, + sym_primary_expression, + STATE(814), 1, sym_string, - STATE(698), 1, + STATE(815), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1072), 1, + STATE(1192), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39159,67 +39169,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18610] = 21, + [18610] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(315), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - ACTIONS(1090), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(1094), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, anon_sym_await, - STATE(694), 1, + STATE(770), 1, + sym_primary_expression, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1109), 1, + STATE(1160), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(470), 2, - sym_attribute, - sym_subscript, - ACTIONS(301), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(1092), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 15, + STATE(879), 17, sym_binary_operator, sym_unary_operator, + sym_attribute, + sym_subscript, sym_call, sym_list, sym_set, @@ -39233,62 +39242,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18705] = 20, + [18703] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - STATE(694), 1, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + STATE(770), 1, + sym_primary_expression, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1268), 1, + STATE(1163), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39306,62 +39315,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18798] = 20, + [18796] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - STATE(694), 1, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + STATE(770), 1, + sym_primary_expression, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1386), 1, + STATE(1165), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39379,62 +39388,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18891] = 20, + [18889] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(770), 1, sym_primary_expression, - STATE(779), 1, + STATE(771), 1, sym_string, - STATE(1123), 1, + STATE(772), 1, + sym_template_string, + STATE(1115), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39452,125 +39461,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [18984] = 10, + [18982] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(277), 1, - anon_sym_COMMA, - ACTIONS(283), 1, - anon_sym_COLON_EQ, - ACTIONS(1096), 1, - anon_sym_for, - ACTIONS(1098), 1, - anon_sym_with, - ACTIONS(1100), 1, - anon_sym_def, - ACTIONS(285), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(307), 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(272), 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(303), 16, - sym__newline, - anon_sym_DOT, + ACTIONS(616), 1, anon_sym_LPAREN, - anon_sym_if, - anon_sym_in, + ACTIONS(622), 1, 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_SEMI, - [19057] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - STATE(694), 1, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + STATE(770), 1, + sym_primary_expression, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1331), 1, + STATE(1136), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39588,62 +39534,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19150] = 20, + [19075] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(305), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - STATE(694), 1, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1125), 1, + STATE(1304), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39661,121 +39607,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19243] = 6, + [19168] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1106), 1, - anon_sym_elif, - STATE(350), 1, - aux_sym_if_statement_repeat1, - STATE(479), 1, - sym_elif_clause, - ACTIONS(1104), 13, - sym__dedent, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, sym__string_start, + ACTIONS(317), 1, sym__template_string_start, + ACTIONS(602), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(608), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, - sym_ellipsis, - sym_float, - ACTIONS(1102), 35, - anon_sym_lazy, - 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(680), 1, anon_sym_not, + ACTIONS(682), 1, anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [19308] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, - anon_sym_LBRACE, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(972), 1, - anon_sym_not, - ACTIONS(974), 1, - anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(794), 1, anon_sym_await, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, + STATE(627), 1, sym_template_string, - STATE(1214), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, + sym_primary_expression, + STATE(1200), 1, sym_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39793,62 +39680,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19401] = 20, + [19261] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - STATE(772), 1, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1255), 1, + STATE(735), 1, + sym_primary_expression, + STATE(1037), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39866,7 +39753,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19494] = 20, + [19354] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -39887,13 +39774,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1085), 1, + STATE(1336), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -39914,14 +39801,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -39939,62 +39826,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19587] = 20, + [19447] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(630), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(750), 1, - sym_identifier, - ACTIONS(760), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(762), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(764), 1, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, anon_sym_await, - STATE(780), 1, - sym_primary_expression, - STATE(781), 1, - sym_string, - STATE(782), 1, + STATE(627), 1, sym_template_string, - STATE(1221), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, + sym_primary_expression, + STATE(1106), 1, sym_expression, - ACTIONS(626), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(752), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40012,62 +39899,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19680] = 20, + [19540] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(305), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - STATE(694), 1, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1088), 1, + STATE(1350), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40085,39 +39972,39 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19773] = 20, + [19633] = 20, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1171), 1, + STATE(1303), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -40126,21 +40013,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40158,7 +40045,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19866] = 20, + [19726] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -40171,21 +40058,21 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, ACTIONS(579), 1, anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1121), 1, + STATE(784), 1, + sym_template_string, + STATE(1142), 1, sym_expression, ACTIONS(77), 2, sym_ellipsis, @@ -40199,21 +40086,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40231,62 +40118,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [19959] = 20, + [19819] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(305), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - STATE(694), 1, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1096), 1, + STATE(1268), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40304,62 +40191,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20052] = 20, + [19912] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(305), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - STATE(694), 1, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1071), 1, + STATE(1291), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40377,7 +40264,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20145] = 20, + [20005] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -40398,13 +40285,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1089), 1, + STATE(1255), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -40425,14 +40312,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40450,7 +40337,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20238] = 20, + [20098] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -40471,13 +40358,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1267), 1, + STATE(1359), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -40498,14 +40385,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40523,62 +40410,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20331] = 20, + [20191] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(305), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(768), 1, - anon_sym_not, - STATE(694), 1, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1297), 1, + STATE(1208), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40596,17 +40483,13 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20424] = 20, + [20284] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, @@ -40617,17 +40500,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(1090), 1, + sym_identifier, + ACTIONS(1094), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1298), 1, + STATE(1108), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, + STATE(482), 2, + sym_attribute, + sym_subscript, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, @@ -40637,25 +40527,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(1092), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 15, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -40669,7 +40557,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20517] = 20, + [20379] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -40682,94 +40570,21 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, ACTIONS(579), 1, anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1313), 1, - sym_expression, - ACTIONS(77), 2, - sym_ellipsis, - sym_float, - ACTIONS(49), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(79), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(363), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1126), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(950), 17, - 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_concatenated_template_string, - sym_await, - [20610] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, + STATE(784), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, - sym_string, - STATE(1118), 1, + STATE(1153), 1, sym_expression, ACTIONS(77), 2, sym_ellipsis, @@ -40783,21 +40598,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40815,7 +40630,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20703] = 20, + [20472] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -40828,21 +40643,21 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, ACTIONS(579), 1, anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1316), 1, + STATE(784), 1, + sym_template_string, + STATE(1287), 1, sym_expression, ACTIONS(77), 2, sym_ellipsis, @@ -40856,21 +40671,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40888,7 +40703,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20796] = 20, + [20565] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -40909,13 +40724,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1081), 1, + STATE(1257), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -40936,14 +40751,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -40961,39 +40776,39 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20889] = 20, + [20658] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1076), 1, + STATE(1243), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -41002,21 +40817,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41034,7 +40849,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [20982] = 20, + [20751] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -41047,21 +40862,21 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, ACTIONS(579), 1, anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1115), 1, + STATE(784), 1, + sym_template_string, + STATE(1181), 1, sym_expression, ACTIONS(77), 2, sym_ellipsis, @@ -41075,94 +40890,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(1126), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(950), 17, - 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_concatenated_template_string, - sym_await, - [21075] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, - anon_sym_LBRACE, - ACTIONS(630), 1, - sym__string_start, - ACTIONS(632), 1, - sym__template_string_start, - ACTIONS(750), 1, - sym_identifier, - ACTIONS(760), 1, - anon_sym_not, - ACTIONS(762), 1, - anon_sym_lambda, - ACTIONS(764), 1, - anon_sym_await, - STATE(780), 1, - sym_primary_expression, - STATE(781), 1, - sym_string, - STATE(782), 1, - sym_template_string, - STATE(1152), 1, - sym_expression, - ACTIONS(626), 2, - sym_ellipsis, - sym_float, - ACTIONS(620), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(612), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(752), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41180,7 +40922,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21168] = 20, + [20844] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -41193,21 +40935,21 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, ACTIONS(579), 1, anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1220), 1, + STATE(784), 1, + sym_template_string, + STATE(1296), 1, sym_expression, ACTIONS(77), 2, sym_ellipsis, @@ -41221,21 +40963,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41253,39 +40995,39 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21261] = 20, + [20937] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1038), 1, + STATE(1074), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -41294,21 +41036,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41326,62 +41068,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21354] = 20, + [21030] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(972), 1, - anon_sym_not, - ACTIONS(974), 1, - anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(363), 1, anon_sym_await, - STATE(789), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(780), 1, sym_primary_expression, - STATE(790), 1, + STATE(783), 1, sym_string, - STATE(791), 1, + STATE(784), 1, sym_template_string, - STATE(1182), 1, + STATE(1300), 1, sym_expression, - ACTIONS(660), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41399,62 +41141,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21447] = 20, + [21123] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(630), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(750), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(760), 1, - anon_sym_not, - ACTIONS(762), 1, - anon_sym_lambda, - ACTIONS(764), 1, + ACTIONS(363), 1, anon_sym_await, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, STATE(780), 1, sym_primary_expression, - STATE(781), 1, + STATE(783), 1, sym_string, - STATE(782), 1, + STATE(784), 1, sym_template_string, - STATE(1159), 1, + STATE(1176), 1, sym_expression, - ACTIONS(626), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(752), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41472,62 +41214,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21540] = 20, + [21216] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(972), 1, - anon_sym_not, - ACTIONS(974), 1, - anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(363), 1, anon_sym_await, - STATE(789), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(780), 1, sym_primary_expression, - STATE(790), 1, + STATE(783), 1, sym_string, - STATE(791), 1, + STATE(784), 1, sym_template_string, - STATE(1189), 1, + STATE(1110), 1, sym_expression, - ACTIONS(660), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41545,62 +41287,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21633] = 20, + [21309] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(964), 1, - sym_identifier, - ACTIONS(972), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, anon_sym_await, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, + STATE(627), 1, sym_template_string, - STATE(1190), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, + sym_primary_expression, + STATE(1095), 1, sym_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41618,62 +41360,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21726] = 20, + [21402] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(964), 1, - sym_identifier, - ACTIONS(972), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(974), 1, - anon_sym_lambda, - ACTIONS(976), 1, - anon_sym_await, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, + STATE(627), 1, sym_template_string, - STATE(1201), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1205), 1, sym_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41691,62 +41433,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21819] = 20, + [21495] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(964), 1, - sym_identifier, - ACTIONS(972), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, anon_sym_await, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, + STATE(627), 1, sym_template_string, - STATE(1188), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, + sym_primary_expression, + STATE(1085), 1, sym_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41764,62 +41506,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [21912] = 20, + [21588] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(972), 1, - anon_sym_not, - ACTIONS(974), 1, - anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(363), 1, anon_sym_await, - STATE(789), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(780), 1, sym_primary_expression, - STATE(790), 1, + STATE(783), 1, sym_string, - STATE(791), 1, + STATE(784), 1, sym_template_string, - STATE(1197), 1, + STATE(1172), 1, sym_expression, - ACTIONS(660), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41837,62 +41579,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22005] = 20, + [21681] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(630), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(750), 1, - sym_identifier, - ACTIONS(760), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(762), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(764), 1, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, anon_sym_await, - STATE(780), 1, - sym_primary_expression, - STATE(781), 1, - sym_string, - STATE(782), 1, + STATE(627), 1, sym_template_string, - STATE(1162), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, + sym_primary_expression, + STATE(1073), 1, sym_expression, - ACTIONS(626), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(752), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41910,62 +41652,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22098] = 20, + [21774] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - STATE(772), 1, + ACTIONS(680), 1, + anon_sym_not, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1161), 1, + STATE(735), 1, + sym_primary_expression, + STATE(1076), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -41983,62 +41725,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22191] = 20, + [21867] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(630), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(750), 1, - sym_identifier, - ACTIONS(760), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(762), 1, - anon_sym_lambda, - ACTIONS(764), 1, - anon_sym_await, - STATE(780), 1, - sym_primary_expression, - STATE(781), 1, - sym_string, - STATE(782), 1, + STATE(627), 1, sym_template_string, - STATE(1165), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1355), 1, sym_expression, - ACTIONS(626), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(752), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42056,62 +41798,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22284] = 20, + [21960] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(630), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(750), 1, - sym_identifier, - ACTIONS(760), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(680), 1, anon_sym_not, - ACTIONS(762), 1, + ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(764), 1, + ACTIONS(784), 1, + sym_identifier, + ACTIONS(794), 1, anon_sym_await, - STATE(780), 1, - sym_primary_expression, - STATE(781), 1, - sym_string, - STATE(782), 1, + STATE(627), 1, sym_template_string, - STATE(1167), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, + sym_primary_expression, + STATE(1091), 1, sym_expression, - ACTIONS(626), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(752), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42129,62 +41871,125 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22377] = 20, + [22053] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(1096), 1, + anon_sym_for, + ACTIONS(1098), 1, + anon_sym_with, + ACTIONS(1100), 1, + anon_sym_def, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(307), 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(272), 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(303), 16, + sym__newline, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(622), 1, + anon_sym_if, + anon_sym_in, anon_sym_LBRACK, - ACTIONS(624), 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, + anon_sym_SEMI, + [22126] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(630), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(750), 1, - sym_identifier, - ACTIONS(760), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(762), 1, - anon_sym_lambda, - ACTIONS(764), 1, - anon_sym_await, - STATE(780), 1, - sym_primary_expression, - STATE(781), 1, - sym_string, - STATE(782), 1, + STATE(627), 1, sym_template_string, - STATE(1168), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1260), 1, sym_expression, - ACTIONS(626), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(752), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42202,80 +42007,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22470] = 20, + [22219] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, - anon_sym_LBRACE, - ACTIONS(630), 1, + ACTIONS(1106), 1, + anon_sym_elif, + STATE(382), 1, + aux_sym_if_statement_repeat1, + STATE(480), 1, + sym_elif_clause, + ACTIONS(1102), 13, sym__string_start, - ACTIONS(632), 1, sym__template_string_start, - ACTIONS(750), 1, - sym_identifier, - ACTIONS(760), 1, - anon_sym_not, - ACTIONS(762), 1, - anon_sym_lambda, - ACTIONS(764), 1, - anon_sym_await, - STATE(780), 1, - sym_primary_expression, - STATE(781), 1, - sym_string, - STATE(782), 1, - sym_template_string, - STATE(1170), 1, - sym_expression, - ACTIONS(626), 2, - sym_ellipsis, - sym_float, - ACTIONS(620), 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(612), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(752), 6, + sym_ellipsis, + sym_float, + ACTIONS(1104), 35, anon_sym_lazy, + anon_sym_import, + anon_sym_from, + anon_sym_STAR, anon_sym_print, - anon_sym_async, + 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, - STATE(1131), 6, - sym_named_expression, - sym_not_operator, - sym_boolean_operator, - sym_comparison_operator, - sym_lambda, - sym_conditional_expression, - STATE(949), 17, - 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_concatenated_template_string, - sym_await, - [22563] = 20, + 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, + [22284] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -42288,21 +42079,21 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, ACTIONS(579), 1, anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1326), 1, + STATE(784), 1, + sym_template_string, + STATE(1146), 1, sym_expression, ACTIONS(77), 2, sym_ellipsis, @@ -42316,21 +42107,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42348,62 +42139,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22656] = 20, + [22377] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(772), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1247), 1, + STATE(728), 1, + sym_primary_expression, + STATE(1175), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42421,62 +42212,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22749] = 20, + [22470] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(630), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(750), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(760), 1, - anon_sym_not, - ACTIONS(762), 1, - anon_sym_lambda, - ACTIONS(764), 1, + ACTIONS(363), 1, anon_sym_await, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, STATE(780), 1, sym_primary_expression, - STATE(781), 1, + STATE(783), 1, sym_string, - STATE(782), 1, + STATE(784), 1, sym_template_string, - STATE(1169), 1, + STATE(1117), 1, sym_expression, - ACTIONS(626), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(752), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42494,62 +42285,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22842] = 20, + [22563] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(964), 1, - sym_identifier, - ACTIONS(972), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(974), 1, - anon_sym_lambda, - ACTIONS(976), 1, - anon_sym_await, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, + STATE(627), 1, sym_template_string, - STATE(1233), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1306), 1, sym_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42567,39 +42358,39 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [22935] = 20, + [22656] = 20, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1238), 1, + STATE(1307), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -42608,21 +42399,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42640,7 +42431,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23028] = 20, + [22749] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -42657,17 +42448,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(808), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1038), 1, + STATE(1078), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -42681,21 +42472,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42713,121 +42504,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23121] = 6, + [22842] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1109), 1, - anon_sym_elif, - STATE(392), 1, - aux_sym_if_statement_repeat1, - STATE(473), 1, - sym_elif_clause, - ACTIONS(1104), 13, - sym__string_start, - sym__template_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(1102), 35, - anon_sym_lazy, - 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, - anon_sym_lambda, - anon_sym_yield, - sym_integer, + ACTIONS(268), 1, sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [23186] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(772), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1278), 1, + STATE(728), 1, + sym_primary_expression, + STATE(1391), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42845,7 +42577,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23279] = 20, + [22935] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -42866,13 +42598,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1350), 1, + STATE(1079), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -42893,14 +42625,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42918,62 +42650,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23372] = 20, + [23028] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(602), 1, - anon_sym_LPAREN, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(71), 1, anon_sym_not, - ACTIONS(682), 1, + ACTIONS(73), 1, anon_sym_lambda, - ACTIONS(808), 1, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(357), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(363), 1, anon_sym_await, - STATE(694), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1098), 1, + STATE(1270), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -42991,62 +42723,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23465] = 20, + [23121] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(970), 1, + anon_sym_not, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(811), 1, sym_primary_expression, - STATE(779), 1, + STATE(814), 1, sym_string, - STATE(1129), 1, + STATE(815), 1, + sym_template_string, + STATE(1272), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43064,7 +42796,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23558] = 20, + [23214] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(268), 1, @@ -43085,13 +42817,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1109), 1, + STATE(1353), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -43112,14 +42844,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43137,39 +42869,112 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23651] = 20, + [23307] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, + sym_string, + STATE(784), 1, + sym_template_string, + STATE(1195), 1, + sym_expression, + ACTIONS(77), 2, + sym_ellipsis, + sym_float, + ACTIONS(49), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(79), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(359), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1145), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(905), 17, + 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_concatenated_template_string, + sym_await, + [23400] = 20, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1224), 1, + STATE(1037), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -43178,21 +42983,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43210,7 +43015,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23744] = 20, + [23493] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1109), 1, + anon_sym_elif, + STATE(396), 1, + aux_sym_if_statement_repeat1, + STATE(481), 1, + sym_elif_clause, + ACTIONS(1102), 13, + sym__dedent, + sym__string_start, + sym__template_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(1104), 35, + anon_sym_lazy, + 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, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [23558] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(616), 1, @@ -43231,13 +43095,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(764), 1, anon_sym_await, - STATE(780), 1, + STATE(770), 1, sym_primary_expression, - STATE(781), 1, + STATE(771), 1, sym_string, - STATE(782), 1, + STATE(772), 1, sym_template_string, - STATE(1145), 1, + STATE(1168), 1, sym_expression, ACTIONS(626), 2, sym_ellipsis, @@ -43258,14 +43122,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43283,62 +43147,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23837] = 20, + [23651] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(772), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1225), 1, + STATE(728), 1, + sym_primary_expression, + STATE(1397), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43356,67 +43220,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [23930] = 21, + [23744] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(602), 1, - anon_sym_LPAREN, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(682), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(1112), 1, - sym_identifier, - ACTIONS(1116), 1, + ACTIONS(764), 1, anon_sym_await, - STATE(694), 1, + STATE(770), 1, + sym_primary_expression, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1098), 1, + STATE(1128), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - STATE(470), 2, - sym_attribute, - sym_subscript, - ACTIONS(606), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(1114), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 15, + STATE(879), 17, sym_binary_operator, sym_unary_operator, + sym_attribute, + sym_subscript, sym_call, sym_list, sym_set, @@ -43430,62 +43293,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24025] = 20, + [23837] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(962), 1, + sym_identifier, + ACTIONS(970), 1, anon_sym_not, - STATE(694), 1, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, + anon_sym_await, + STATE(811), 1, + sym_primary_expression, + STATE(814), 1, sym_string, - STATE(698), 1, + STATE(815), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1292), 1, + STATE(1230), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43503,62 +43366,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24118] = 20, + [23930] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - STATE(694), 1, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, + anon_sym_await, + STATE(770), 1, + sym_primary_expression, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1347), 1, + STATE(1112), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43576,7 +43439,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24211] = 20, + [24023] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -43589,21 +43452,21 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(85), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(363), 1, anon_sym_await, ACTIONS(575), 1, anon_sym_LPAREN, ACTIONS(579), 1, anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(780), 1, sym_primary_expression, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(1284), 1, + STATE(784), 1, + sym_template_string, + STATE(1140), 1, sym_expression, ACTIONS(77), 2, sym_ellipsis, @@ -43617,21 +43480,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43649,39 +43512,42 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24304] = 20, + [24116] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(680), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(682), 1, + anon_sym_lambda, + ACTIONS(1112), 1, + sym_identifier, + ACTIONS(1116), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1363), 1, + STATE(1106), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + STATE(482), 2, + sym_attribute, + sym_subscript, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -43690,25 +43556,23 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(1114), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 15, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -43722,39 +43586,39 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24397] = 20, + [24211] = 20, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1091), 1, + STATE(1081), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -43763,21 +43627,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43795,62 +43659,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24490] = 20, + [24304] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(750), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(760), 1, + anon_sym_not, + ACTIONS(762), 1, + anon_sym_lambda, + ACTIONS(764), 1, anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(770), 1, sym_primary_expression, - STATE(779), 1, + STATE(771), 1, sym_string, - STATE(1319), 1, + STATE(772), 1, + sym_template_string, + STATE(1214), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43868,39 +43732,39 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24583] = 20, + [24397] = 20, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(718), 1, - sym_identifier, - ACTIONS(732), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(734), 1, - anon_sym_lambda, - ACTIONS(736), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1153), 1, + STATE(1082), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -43909,21 +43773,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(720), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -43941,62 +43805,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24676] = 20, + [24490] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(313), 1, + anon_sym_await, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(361), 1, - sym_identifier, - ACTIONS(367), 1, - anon_sym_await, - ACTIONS(575), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - STATE(772), 1, + ACTIONS(768), 1, + anon_sym_not, + STATE(627), 1, sym_template_string, - STATE(773), 1, - sym_primary_expression, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(1139), 1, + STATE(728), 1, + sym_primary_expression, + STATE(1334), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44014,62 +43878,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24769] = 20, + [24583] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(636), 1, - anon_sym_LPAREN, - ACTIONS(642), 1, - anon_sym_LBRACK, - ACTIONS(718), 1, + ACTIONS(357), 1, sym_identifier, - ACTIONS(732), 1, - anon_sym_not, - ACTIONS(734), 1, - anon_sym_lambda, - ACTIONS(736), 1, + ACTIONS(363), 1, anon_sym_await, - STATE(694), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(775), 1, - sym_primary_expression, - STATE(1154), 1, + STATE(1127), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(79), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(720), 6, + ACTIONS(359), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1145), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44087,39 +43951,112 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24862] = 20, + [24676] = 20, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(718), 1, - sym_identifier, - ACTIONS(732), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(734), 1, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(728), 1, + sym_primary_expression, + STATE(1090), 1, + sym_expression, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(270), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1038), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(734), 17, + 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_concatenated_template_string, + sym_await, + [24769] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(268), 1, + sym_identifier, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(305), 1, anon_sym_lambda, - ACTIONS(736), 1, + ACTIONS(313), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(768), 1, + anon_sym_not, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1155), 1, + STATE(1094), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -44128,21 +44065,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(720), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44160,7 +44097,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [24955] = 20, + [24862] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -44169,9 +44106,9 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(664), 1, anon_sym_LBRACK, ACTIONS(718), 1, sym_identifier, @@ -44181,18 +44118,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(736), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1156), 1, + STATE(1118), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -44208,14 +44145,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44233,39 +44170,39 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25048] = 20, + [24955] = 20, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(718), 1, - sym_identifier, - ACTIONS(732), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(734), 1, - anon_sym_lambda, - ACTIONS(736), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1157), 1, + STATE(1080), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -44274,21 +44211,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(720), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44306,7 +44243,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25141] = 20, + [25048] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -44315,9 +44252,9 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(664), 1, anon_sym_LBRACK, ACTIONS(718), 1, sym_identifier, @@ -44327,18 +44264,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(736), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1163), 1, + STATE(1119), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -44354,14 +44291,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44379,7 +44316,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25234] = 20, + [25141] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -44388,9 +44325,9 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(664), 1, anon_sym_LBRACK, ACTIONS(718), 1, sym_identifier, @@ -44400,18 +44337,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(736), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1166), 1, + STATE(1121), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -44427,14 +44364,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44452,7 +44389,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25327] = 20, + [25234] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -44461,9 +44398,9 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(664), 1, anon_sym_LBRACK, ACTIONS(718), 1, sym_identifier, @@ -44473,18 +44410,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(736), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(775), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1038), 1, + STATE(1122), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -44500,14 +44437,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44525,62 +44462,62 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25420] = 20, + [25327] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(664), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(964), 1, + ACTIONS(658), 1, + anon_sym_LPAREN, + ACTIONS(664), 1, + anon_sym_LBRACK, + ACTIONS(718), 1, sym_identifier, - ACTIONS(972), 1, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(974), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(976), 1, + ACTIONS(736), 1, anon_sym_await, - STATE(789), 1, - sym_primary_expression, - STATE(790), 1, - sym_string, - STATE(791), 1, + STATE(627), 1, sym_template_string, - STATE(1266), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, + sym_primary_expression, + STATE(1123), 1, sym_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 4, + ACTIONS(311), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(966), 6, + ACTIONS(720), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1198), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44598,39 +44535,39 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25513] = 20, + [25420] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(718), 1, + sym_identifier, + ACTIONS(732), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(734), 1, + anon_sym_lambda, + ACTIONS(736), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1353), 1, + STATE(1135), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -44639,21 +44576,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(720), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44671,7 +44608,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25606] = 20, + [25513] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -44680,30 +44617,30 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(718), 1, + sym_identifier, + ACTIONS(732), 1, anon_sym_not, - ACTIONS(682), 1, + ACTIONS(734), 1, anon_sym_lambda, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, + ACTIONS(736), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1077), 1, + STATE(1139), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -44712,21 +44649,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(720), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44744,39 +44681,39 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [25699] = 20, + [25606] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(718), 1, + sym_identifier, + ACTIONS(732), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + ACTIONS(734), 1, + anon_sym_lambda, + ACTIONS(736), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(767), 1, sym_primary_expression, - STATE(1361), 1, + STATE(1037), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -44785,21 +44722,94 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(720), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, + 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_concatenated_template_string, + sym_await, + [25699] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(53), 1, + anon_sym_LBRACE, + ACTIONS(71), 1, + anon_sym_not, + ACTIONS(73), 1, + anon_sym_lambda, + ACTIONS(83), 1, + sym__string_start, + ACTIONS(85), 1, + sym__template_string_start, + ACTIONS(357), 1, + sym_identifier, + ACTIONS(363), 1, + anon_sym_await, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + STATE(780), 1, + sym_primary_expression, + STATE(783), 1, + sym_string, + STATE(784), 1, + sym_template_string, + STATE(1266), 1, + sym_expression, + ACTIONS(77), 2, + sym_ellipsis, + sym_float, + ACTIONS(49), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(79), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(359), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(1145), 6, + sym_named_expression, + sym_not_operator, + sym_boolean_operator, + sym_comparison_operator, + sym_lambda, + sym_conditional_expression, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44838,13 +44848,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1199), 1, + STATE(1366), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -44865,14 +44875,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44911,13 +44921,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1387), 1, + STATE(1356), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -44938,14 +44948,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -44984,13 +44994,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1367), 1, + STATE(1372), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45011,14 +45021,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45057,13 +45067,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1370), 1, + STATE(1394), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45084,14 +45094,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45130,13 +45140,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1371), 1, + STATE(1376), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45157,14 +45167,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45185,36 +45195,36 @@ static const uint16_t ts_small_parse_table[] = { [26257] = 20, ACTIONS(3), 1, sym_comment, + ACTIONS(268), 1, + sym_identifier, ACTIONS(293), 1, anon_sym_LBRACE, + ACTIONS(305), 1, + anon_sym_lambda, + ACTIONS(313), 1, + anon_sym_await, ACTIONS(315), 1, sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(768), 1, anon_sym_not, - ACTIONS(682), 1, - anon_sym_lambda, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1073), 1, + STATE(1377), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -45223,21 +45233,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(270), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45276,13 +45286,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1359), 1, + STATE(1378), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45303,14 +45313,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45345,17 +45355,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_not, ACTIONS(682), 1, anon_sym_lambda, - ACTIONS(808), 1, + ACTIONS(784), 1, sym_identifier, - ACTIONS(816), 1, + ACTIONS(794), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(705), 1, + STATE(698), 1, + sym_string, + STATE(735), 1, sym_primary_expression, - STATE(1083), 1, + STATE(1159), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45369,21 +45379,21 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(786), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45422,13 +45432,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1325), 1, + STATE(1084), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45449,14 +45459,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45477,59 +45487,59 @@ static const uint16_t ts_small_parse_table[] = { [26629] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(616), 1, + anon_sym_LPAREN, + ACTIONS(622), 1, + anon_sym_LBRACK, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(602), 1, - anon_sym_LPAREN, - ACTIONS(608), 1, - anon_sym_LBRACK, - ACTIONS(680), 1, + ACTIONS(750), 1, + sym_identifier, + ACTIONS(760), 1, anon_sym_not, - ACTIONS(682), 1, + ACTIONS(762), 1, anon_sym_lambda, - ACTIONS(808), 1, - sym_identifier, - ACTIONS(816), 1, + ACTIONS(764), 1, anon_sym_await, - STATE(694), 1, + STATE(770), 1, + sym_primary_expression, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(705), 1, - sym_primary_expression, - STATE(1082), 1, + STATE(1158), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(612), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(810), 6, + ACTIONS(752), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45568,13 +45578,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1376), 1, + STATE(1381), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45595,14 +45605,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45641,13 +45651,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1365), 1, + STATE(1108), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45668,14 +45678,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45696,59 +45706,59 @@ static const uint16_t ts_small_parse_table[] = { [26908] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(71), 1, - anon_sym_not, - ACTIONS(73), 1, - anon_sym_lambda, - ACTIONS(83), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(361), 1, + ACTIONS(962), 1, sym_identifier, - ACTIONS(367), 1, + ACTIONS(970), 1, + anon_sym_not, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, anon_sym_await, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - STATE(772), 1, - sym_template_string, - STATE(773), 1, + STATE(811), 1, sym_primary_expression, - STATE(779), 1, + STATE(814), 1, sym_string, - STATE(1147), 1, + STATE(815), 1, + sym_template_string, + STATE(1187), 1, sym_expression, - ACTIONS(77), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(363), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1126), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(950), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45769,59 +45779,59 @@ static const uint16_t ts_small_parse_table[] = { [27001] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, - sym_identifier, - ACTIONS(293), 1, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(305), 1, - anon_sym_lambda, - ACTIONS(313), 1, - anon_sym_await, - ACTIONS(315), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(585), 1, - anon_sym_LPAREN, - ACTIONS(596), 1, - anon_sym_LBRACK, - ACTIONS(768), 1, + ACTIONS(962), 1, + sym_identifier, + ACTIONS(970), 1, anon_sym_not, - STATE(694), 1, + ACTIONS(972), 1, + anon_sym_lambda, + ACTIONS(974), 1, + anon_sym_await, + STATE(811), 1, + sym_primary_expression, + STATE(814), 1, sym_string, - STATE(698), 1, + STATE(815), 1, sym_template_string, - STATE(704), 1, - sym_primary_expression, - STATE(1261), 1, + STATE(1188), 1, sym_expression, - ACTIONS(309), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(634), 4, sym_integer, sym_true, sym_false, sym_none, - ACTIONS(270), 6, + ACTIONS(964), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1228), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45860,13 +45870,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1377), 1, + STATE(1382), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45887,14 +45897,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -45933,13 +45943,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(768), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(704), 1, + STATE(698), 1, + sym_string, + STATE(728), 1, sym_primary_expression, - STATE(1378), 1, + STATE(1383), 1, sym_expression, ACTIONS(309), 2, sym_ellipsis, @@ -45960,14 +45970,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1037), 6, + STATE(1038), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -46069,13 +46079,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_lambda, ACTIONS(764), 1, anon_sym_await, - STATE(780), 1, + STATE(770), 1, sym_primary_expression, - STATE(781), 1, + STATE(771), 1, sym_string, - STATE(782), 1, + STATE(772), 1, sym_template_string, - STATE(1164), 1, + STATE(1169), 1, sym_expression, ACTIONS(626), 2, sym_ellipsis, @@ -46096,14 +46106,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(1131), 6, + STATE(1161), 6, sym_named_expression, sym_not_operator, sym_boolean_operator, sym_comparison_operator, sym_lambda, sym_conditional_expression, - STATE(949), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -46124,10 +46134,10 @@ static const uint16_t ts_small_parse_table[] = { [27446] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1126), 13, - sym__dedent, + ACTIONS(1124), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46138,7 +46148,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1124), 37, + ACTIONS(1126), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46176,14 +46186,9 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27504] = 5, + [27504] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1132), 1, - anon_sym_case, - STATE(444), 2, - sym_case_block, - aux_sym_cases_repeat1, ACTIONS(1130), 13, sym__dedent, sym__string_start, @@ -46198,7 +46203,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1128), 34, + ACTIONS(1128), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46212,10 +46217,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, @@ -46233,13 +46241,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27566] = 3, + [27562] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(1134), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46250,7 +46258,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1136), 37, + ACTIONS(1132), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46288,13 +46296,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27624] = 3, + [27620] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(1138), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46305,7 +46313,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1140), 37, + ACTIONS(1136), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46343,13 +46351,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27682] = 3, + [27678] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(1142), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46360,7 +46368,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1144), 37, + ACTIONS(1140), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46398,15 +46406,71 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27740] = 5, + [27736] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(1150), 1, - anon_sym_case, - STATE(444), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(1148), 13, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(1144), 1, + anon_sym_import, + ACTIONS(1146), 1, + anon_sym_from, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(307), 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(272), 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(303), 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, + anon_sym_SEMI, + [27806] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1150), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -46420,7 +46484,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1146), 34, + ACTIONS(1148), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46434,10 +46498,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, @@ -46455,18 +46522,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27802] = 5, + [27864] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1153), 1, - anon_sym_case, - STATE(445), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(1148), 13, + ACTIONS(1154), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46477,7 +46539,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1146), 34, + ACTIONS(1152), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46491,10 +46553,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, @@ -46512,13 +46577,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27864] = 3, + [27922] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1156), 13, + ACTIONS(1158), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46529,7 +46594,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1158), 37, + ACTIONS(1156), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46567,13 +46632,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27922] = 3, + [27980] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1160), 13, + ACTIONS(1162), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46584,7 +46649,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1162), 37, + ACTIONS(1160), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46622,7 +46687,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [27980] = 3, + [28038] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(1166), 13, @@ -46677,13 +46742,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28038] = 3, + [28096] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1166), 13, + ACTIONS(1124), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46694,7 +46759,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1164), 37, + ACTIONS(1126), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46732,9 +46797,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28096] = 3, + [28154] = 5, ACTIONS(3), 1, sym_comment, + ACTIONS(1172), 1, + anon_sym_case, + STATE(451), 2, + sym_case_block, + aux_sym_cases_repeat1, ACTIONS(1168), 13, sym__string_start, sym__template_string_start, @@ -46749,7 +46819,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1170), 37, + ACTIONS(1170), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46763,13 +46833,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, @@ -46787,10 +46854,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28154] = 3, + [28216] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1126), 13, + ACTIONS(1142), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -46804,7 +46871,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1124), 37, + ACTIONS(1140), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -46842,135 +46909,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28212] = 9, + [28274] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(277), 1, - anon_sym_COMMA, - ACTIONS(283), 1, - anon_sym_COLON_EQ, - ACTIONS(1172), 1, - sym__string_start, - STATE(1411), 1, - sym_string, - ACTIONS(285), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(307), 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(272), 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(303), 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, - anon_sym_SEMI, - [28282] = 9, - ACTIONS(3), 1, - sym_comment, - ACTIONS(277), 1, - anon_sym_COMMA, - ACTIONS(283), 1, - anon_sym_COLON_EQ, - ACTIONS(1174), 1, - anon_sym_import, - ACTIONS(1176), 1, - anon_sym_from, - ACTIONS(285), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(307), 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(272), 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(303), 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, - anon_sym_SEMI, - [28352] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1160), 13, - sym__dedent, + ACTIONS(1134), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -46981,7 +46926,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1162), 37, + ACTIONS(1132), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47019,10 +46964,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28410] = 3, + [28332] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1178), 13, + ACTIONS(1138), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -47036,7 +46981,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1180), 37, + ACTIONS(1136), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47074,13 +47019,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28468] = 3, + [28390] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1134), 13, - sym__dedent, + ACTIONS(1150), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47091,7 +47036,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1136), 37, + ACTIONS(1148), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47129,13 +47074,18 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28526] = 3, + [28448] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1182), 13, + ACTIONS(1179), 1, + anon_sym_case, + STATE(462), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1177), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47146,7 +47096,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1184), 37, + ACTIONS(1175), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47160,13 +47110,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, @@ -47184,13 +47131,18 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28584] = 3, + [28510] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1182), 13, - sym__dedent, + ACTIONS(1181), 1, + anon_sym_case, + STATE(451), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1177), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47201,7 +47153,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1184), 37, + ACTIONS(1175), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47215,13 +47167,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, @@ -47239,13 +47188,74 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, + [28572] = 9, + ACTIONS(3), 1, + sym_comment, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(1183), 1, + sym__string_start, + STATE(1475), 1, + sym_string, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(307), 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(272), 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(303), 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, + anon_sym_SEMI, [28642] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1178), 13, - sym__dedent, + ACTIONS(1130), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47256,7 +47266,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1180), 37, + ACTIONS(1128), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47297,10 +47307,10 @@ static const uint16_t ts_small_parse_table[] = { [28700] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1138), 13, - sym__dedent, + ACTIONS(1154), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47311,7 +47321,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1140), 37, + ACTIONS(1152), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47349,15 +47359,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28758] = 5, + [28758] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1186), 1, - anon_sym_case, - STATE(445), 2, - sym_case_block, - aux_sym_cases_repeat1, - ACTIONS(1130), 13, + ACTIONS(1158), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -47371,7 +47376,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1128), 34, + ACTIONS(1156), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47385,10 +47390,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, @@ -47406,10 +47414,15 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28820] = 3, + [28816] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1142), 13, + ACTIONS(1185), 1, + anon_sym_case, + STATE(462), 2, + sym_case_block, + aux_sym_cases_repeat1, + ACTIONS(1168), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -47423,7 +47436,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1144), 37, + ACTIONS(1170), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47437,13 +47450,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, @@ -47464,10 +47474,10 @@ static const uint16_t ts_small_parse_table[] = { [28878] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1156), 13, - sym__dedent, + ACTIONS(1162), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47478,7 +47488,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1158), 37, + ACTIONS(1160), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47519,10 +47529,10 @@ static const uint16_t ts_small_parse_table[] = { [28936] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1168), 13, - sym__dedent, + ACTIONS(1166), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -47533,7 +47543,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1170), 37, + ACTIONS(1164), 37, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47571,155 +47581,122 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [28994] = 22, + [28994] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(956), 1, + anon_sym_finally, + STATE(583), 1, + sym_finally_clause, + ACTIONS(1188), 13, sym__string_start, - ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, - sym_identifier, - ACTIONS(698), 1, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(706), 1, - anon_sym_LBRACK, - ACTIONS(708), 1, - anon_sym_await, - ACTIONS(1188), 1, - anon_sym_RPAREN, - ACTIONS(1190), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, - sym_template_string, - STATE(1017), 1, - sym_primary_expression, - STATE(1355), 1, - sym_pattern, - STATE(1742), 1, - sym__patterns, - ACTIONS(309), 2, - sym_ellipsis, - sym_float, - STATE(842), 2, - sym_attribute, - sym_subscript, - ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - STATE(1005), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(311), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(696), 6, + sym_ellipsis, + sym_float, + ACTIONS(1190), 34, anon_sym_lazy, + 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(720), 15, - 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_concatenated_template_string, - sym_await, - [29089] = 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, + [29055] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(952), 1, + anon_sym_else, + STATE(607), 1, + sym_else_clause, + ACTIONS(1192), 13, sym__string_start, - ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, - sym_identifier, - ACTIONS(698), 1, + ts_builtin_sym_end, anon_sym_LPAREN, - ACTIONS(706), 1, - anon_sym_LBRACK, - ACTIONS(708), 1, - anon_sym_await, - ACTIONS(1190), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, - sym_template_string, - STATE(1002), 1, - sym_pattern, - STATE(1017), 1, - sym_primary_expression, - ACTIONS(309), 2, - sym_ellipsis, - sym_float, - ACTIONS(1192), 2, - anon_sym_RPAREN, - anon_sym_RBRACK, - STATE(842), 2, - sym_attribute, - sym_subscript, - ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - STATE(1005), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(311), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(696), 6, + sym_ellipsis, + sym_float, + ACTIONS(1194), 34, anon_sym_lazy, + 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(720), 15, - 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_concatenated_template_string, - sym_await, - [29182] = 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, + [29116] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1194), 13, + ACTIONS(1196), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -47733,7 +47710,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1196), 36, + ACTIONS(1198), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47770,14 +47747,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29239] = 5, + [29173] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, + ACTIONS(952), 1, anon_sym_else, - STATE(516), 1, + STATE(525), 1, sym_else_clause, - ACTIONS(1198), 13, + ACTIONS(1200), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -47791,7 +47768,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1200), 34, + ACTIONS(1202), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -47826,198 +47803,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29300] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(277), 1, - anon_sym_COMMA, - ACTIONS(283), 1, - anon_sym_COLON_EQ, - ACTIONS(1202), 1, - sym_identifier, - ACTIONS(285), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(303), 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, - anon_sym_SEMI, - ACTIONS(307), 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(272), 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, - [29367] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1213), 1, - anon_sym_EQ, - ACTIONS(1206), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1211), 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(1209), 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(1204), 16, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_async, - anon_sym_for, - 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, - [29430] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(694), 1, - sym_identifier, - ACTIONS(698), 1, - anon_sym_LPAREN, - ACTIONS(706), 1, - anon_sym_LBRACK, - ACTIONS(708), 1, - anon_sym_await, - ACTIONS(1190), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, - sym_template_string, - STATE(1002), 1, - sym_pattern, - STATE(1017), 1, - sym_primary_expression, - ACTIONS(309), 2, - sym_ellipsis, - sym_float, - ACTIONS(1215), 2, - anon_sym_RPAREN, - anon_sym_RBRACK, - STATE(842), 2, - sym_attribute, - sym_subscript, - ACTIONS(301), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(1005), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(311), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(696), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(720), 15, - 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_concatenated_template_string, - sym_await, - [29523] = 3, + [29234] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1217), 13, + ACTIONS(952), 1, + anon_sym_else, + STATE(612), 1, + sym_else_clause, + ACTIONS(1204), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -48031,7 +47824,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1219), 36, + ACTIONS(1206), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48045,8 +47838,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, @@ -48068,13 +47859,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29580] = 3, + [29295] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1221), 13, + ACTIONS(1196), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48085,7 +47876,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1223), 36, + ACTIONS(1198), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48122,17 +47913,17 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29637] = 5, + [29352] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, + ACTIONS(982), 1, anon_sym_else, - STATE(600), 1, + STATE(568), 1, sym_else_clause, - ACTIONS(1225), 13, + ACTIONS(1204), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48143,7 +47934,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1227), 34, + ACTIONS(1206), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48178,14 +47969,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29698] = 5, + [29413] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, + ACTIONS(952), 1, anon_sym_else, - STATE(538), 1, + STATE(581), 1, sym_else_clause, - ACTIONS(1229), 13, + ACTIONS(1208), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -48199,7 +47990,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1231), 34, + ACTIONS(1210), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48234,17 +48025,17 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29759] = 5, + [29474] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(982), 1, + ACTIONS(986), 1, anon_sym_finally, - STATE(610), 1, + STATE(557), 1, sym_finally_clause, - ACTIONS(1233), 13, + ACTIONS(1214), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48255,7 +48046,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1235), 34, + ACTIONS(1212), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48290,14 +48081,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29820] = 5, + [29535] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(952), 1, + ACTIONS(982), 1, anon_sym_else, - STATE(552), 1, + STATE(528), 1, sym_else_clause, - ACTIONS(1229), 13, + ACTIONS(1200), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48311,7 +48102,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1231), 34, + ACTIONS(1202), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48346,127 +48137,158 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [29881] = 5, + [29596] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, - anon_sym_else, - STATE(530), 1, - sym_else_clause, - ACTIONS(1237), 13, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, sym__string_start, + ACTIONS(317), 1, sym__template_string_start, - ts_builtin_sym_end, + ACTIONS(690), 1, + sym_identifier, + ACTIONS(694), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(702), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(704), 1, + anon_sym_await, + ACTIONS(1216), 1, + anon_sym_RPAREN, + ACTIONS(1218), 1, + anon_sym_STAR, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(1016), 1, + sym_primary_expression, + STATE(1358), 1, + sym_pattern, + STATE(1668), 1, + sym__patterns, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(1239), 34, + STATE(875), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1014), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(692), 6, anon_sym_lazy, - 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, - [29942] = 3, + STATE(734), 15, + 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_concatenated_template_string, + sym_await, + [29691] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(1221), 13, - sym__dedent, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, sym__string_start, + ACTIONS(317), 1, sym__template_string_start, + ACTIONS(690), 1, + sym_identifier, + ACTIONS(694), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(702), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(704), 1, + anon_sym_await, + ACTIONS(1218), 1, + anon_sym_STAR, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(1009), 1, + sym_pattern, + STATE(1016), 1, + sym_primary_expression, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(1223), 36, + ACTIONS(1220), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(875), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1014), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(692), 6, anon_sym_lazy, - 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, - [29999] = 5, + STATE(734), 15, + 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_concatenated_template_string, + sym_await, + [29784] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(956), 1, - anon_sym_finally, - STATE(571), 1, - sym_finally_clause, - ACTIONS(1243), 13, - sym__dedent, + ACTIONS(1222), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48477,7 +48299,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1241), 34, + ACTIONS(1224), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48491,6 +48313,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, @@ -48512,73 +48336,89 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30060] = 5, + [29841] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(982), 1, - anon_sym_finally, - STATE(535), 1, - sym_finally_clause, - ACTIONS(1243), 13, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, sym__string_start, + ACTIONS(317), 1, sym__template_string_start, - ts_builtin_sym_end, + ACTIONS(690), 1, + sym_identifier, + ACTIONS(694), 1, anon_sym_LPAREN, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(702), 1, anon_sym_LBRACK, - anon_sym_LBRACE, - anon_sym_STAR_STAR, - anon_sym_AT, - anon_sym_TILDE, + ACTIONS(704), 1, + anon_sym_await, + ACTIONS(1218), 1, + anon_sym_STAR, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(1009), 1, + sym_pattern, + STATE(1016), 1, + sym_primary_expression, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(1241), 34, + ACTIONS(1226), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + STATE(875), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1014), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(692), 6, anon_sym_lazy, - 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, - [30121] = 5, + STATE(734), 15, + 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_concatenated_template_string, + sym_await, + [29934] = 5, ACTIONS(3), 1, sym_comment, ACTIONS(952), 1, anon_sym_else, - STATE(581), 1, + STATE(593), 1, sym_else_clause, - ACTIONS(1225), 13, - sym__dedent, + ACTIONS(1228), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -48589,7 +48429,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1227), 34, + ACTIONS(1230), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48624,14 +48464,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30182] = 5, + [29995] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, - anon_sym_else, - STATE(528), 1, - sym_else_clause, - ACTIONS(1245), 13, + ACTIONS(1232), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -48645,7 +48481,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1247), 34, + ACTIONS(1234), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48659,6 +48495,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, @@ -48680,14 +48518,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30243] = 5, + [30052] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(956), 1, - anon_sym_finally, - STATE(584), 1, - sym_finally_clause, - ACTIONS(1233), 13, + ACTIONS(1232), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48701,7 +48535,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1235), 34, + ACTIONS(1234), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48715,6 +48549,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, @@ -48736,35 +48572,151 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30304] = 5, + [30109] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(952), 1, - anon_sym_else, - STATE(588), 1, - sym_else_clause, - ACTIONS(1245), 13, - sym__dedent, - sym__string_start, - sym__template_string_start, - anon_sym_LPAREN, + ACTIONS(1245), 1, + anon_sym_EQ, + ACTIONS(1238), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1243), 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(1241), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, 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(1247), 34, - anon_sym_lazy, - anon_sym_import, - anon_sym_from, - anon_sym_STAR, - anon_sym_print, - anon_sym_assert, - anon_sym_return, + 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(1236), 16, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + 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, + [30172] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(1247), 1, + sym_identifier, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(303), 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, + anon_sym_SEMI, + ACTIONS(307), 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(272), 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, + [30239] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(982), 1, + anon_sym_else, + STATE(543), 1, + sym_else_clause, + ACTIONS(1208), 13, + sym__dedent, + sym__string_start, + sym__template_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(1210), 34, + anon_sym_lazy, + 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, @@ -48792,14 +48744,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30365] = 5, + [30300] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(952), 1, - anon_sym_else, - STATE(592), 1, - sym_else_clause, - ACTIONS(1251), 13, + ACTIONS(986), 1, + anon_sym_finally, + STATE(545), 1, + sym_finally_clause, + ACTIONS(1188), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48813,7 +48765,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1249), 34, + ACTIONS(1190), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48848,10 +48800,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30426] = 3, + [30361] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1194), 13, + ACTIONS(1222), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48865,7 +48817,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1196), 36, + ACTIONS(1224), 36, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48902,14 +48854,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30483] = 5, + [30418] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(952), 1, + ACTIONS(982), 1, anon_sym_else, - STATE(597), 1, + STATE(561), 1, sym_else_clause, - ACTIONS(1198), 13, + ACTIONS(1251), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48923,7 +48875,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1200), 34, + ACTIONS(1249), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48958,10 +48910,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30544] = 3, + [30479] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1217), 13, + ACTIONS(982), 1, + anon_sym_else, + STATE(564), 1, + sym_else_clause, + ACTIONS(1192), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -48975,7 +48931,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1219), 36, + ACTIONS(1194), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -48989,8 +48945,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, @@ -49012,12 +48966,12 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30601] = 5, + [30540] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(978), 1, + ACTIONS(952), 1, anon_sym_else, - STATE(553), 1, + STATE(604), 1, sym_else_clause, ACTIONS(1251), 13, sym__string_start, @@ -49068,14 +49022,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30662] = 5, + [30601] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(952), 1, + ACTIONS(982), 1, anon_sym_else, - STATE(569), 1, + STATE(555), 1, sym_else_clause, - ACTIONS(1237), 13, + ACTIONS(1228), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -49089,7 +49043,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1239), 34, + ACTIONS(1230), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -49124,60 +49078,63 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30723] = 3, + [30662] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1050), 16, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, + ACTIONS(956), 1, + anon_sym_finally, + STATE(597), 1, + sym_finally_clause, + ACTIONS(1214), 13, + sym__string_start, + sym__template_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_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(1048), 32, - sym__newline, - anon_sym_DOT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1212), 34, + anon_sym_lazy, + anon_sym_import, anon_sym_from, - anon_sym_LPAREN, - anon_sym_COMMA, + 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_COLON, - anon_sym_in, - anon_sym_LBRACK, + 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_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, - anon_sym_SEMI, - [30779] = 3, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [30723] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(1253), 13, @@ -49212,9 +49169,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, @@ -49230,64 +49187,60 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [30835] = 7, + [30779] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(277), 1, - anon_sym_COMMA, - ACTIONS(283), 1, - anon_sym_COLON_EQ, - ACTIONS(285), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(307), 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(272), 15, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, + ACTIONS(1259), 13, + sym__dedent, + sym__string_start, + sym__template_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, - ACTIONS(303), 16, - sym__newline, - anon_sym_DOT, - anon_sym_LPAREN, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1257), 35, + anon_sym_lazy, + 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_in, - anon_sym_LBRACK, + 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_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_SEMI, - [30899] = 21, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [30835] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -49296,37 +49249,37 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, + ACTIONS(690), 1, sym_identifier, - ACTIONS(698), 1, + ACTIONS(694), 1, anon_sym_LPAREN, - ACTIONS(706), 1, + ACTIONS(702), 1, anon_sym_LBRACK, - ACTIONS(708), 1, + ACTIONS(704), 1, anon_sym_await, - ACTIONS(1190), 1, + ACTIONS(1218), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(1017), 1, + STATE(698), 1, + sym_string, + STATE(1016), 1, sym_primary_expression, - STATE(1504), 1, + STATE(1534), 1, sym_pattern, - STATE(1674), 1, + STATE(1755), 1, sym_pattern_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(842), 2, + STATE(875), 2, sym_attribute, sym_subscript, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1005), 3, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -49335,14 +49288,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(696), 6, + ACTIONS(692), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -49358,13 +49311,13 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [30991] = 3, + [30927] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1257), 13, + ACTIONS(1263), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -49375,7 +49328,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1259), 35, + ACTIONS(1261), 35, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -49411,13 +49364,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31047] = 3, + [30983] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1253), 13, - sym__dedent, + ACTIONS(1263), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -49428,7 +49381,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1255), 35, + ACTIONS(1261), 35, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -49446,9 +49399,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, @@ -49464,13 +49417,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31103] = 3, + [31039] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1261), 13, + ACTIONS(1267), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -49481,7 +49434,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1263), 35, + ACTIONS(1265), 35, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -49517,70 +49470,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31159] = 7, + [31095] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1265), 1, - anon_sym_COMMA, - ACTIONS(1268), 1, - anon_sym_COLON_EQ, - ACTIONS(1270), 2, - anon_sym_COLON, - anon_sym_EQ, - ACTIONS(1272), 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(1209), 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(1204), 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, - anon_sym_SEMI, - [31223] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1276), 13, - sym__dedent, + ACTIONS(1267), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -49591,7 +49487,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1274), 35, + ACTIONS(1265), 35, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -49627,7 +49523,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31279] = 21, + [31151] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -49636,37 +49532,108 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, + ACTIONS(690), 1, sym_identifier, - ACTIONS(698), 1, + ACTIONS(694), 1, anon_sym_LPAREN, - ACTIONS(706), 1, + ACTIONS(702), 1, anon_sym_LBRACK, - ACTIONS(708), 1, + ACTIONS(704), 1, anon_sym_await, - ACTIONS(1190), 1, + ACTIONS(1218), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, + STATE(627), 1, + sym_template_string, STATE(698), 1, + sym_string, + STATE(1016), 1, + sym_primary_expression, + STATE(1469), 1, + sym_pattern, + STATE(1731), 1, + sym_pattern_list, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + STATE(875), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1014), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(692), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(734), 15, + 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_concatenated_template_string, + sym_await, + [31243] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(690), 1, + sym_identifier, + ACTIONS(694), 1, + anon_sym_LPAREN, + ACTIONS(702), 1, + anon_sym_LBRACK, + ACTIONS(704), 1, + anon_sym_await, + ACTIONS(1218), 1, + anon_sym_STAR, + STATE(627), 1, sym_template_string, - STATE(1017), 1, + STATE(698), 1, + sym_string, + STATE(1016), 1, sym_primary_expression, - STATE(1515), 1, + STATE(1472), 1, sym_pattern, - STATE(1750), 1, + STATE(1619), 1, sym_pattern_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(842), 2, + STATE(875), 2, sym_attribute, sym_subscript, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1005), 3, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -49675,14 +49642,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(696), 6, + ACTIONS(692), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -49698,13 +49665,13 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [31371] = 3, + [31335] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1280), 13, - sym__dedent, + ACTIONS(1259), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -49715,7 +49682,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1278), 35, + ACTIONS(1257), 35, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -49733,9 +49700,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, @@ -49751,10 +49718,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31427] = 3, + [31391] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1032), 16, + ACTIONS(1052), 16, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -49771,7 +49738,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_LT, anon_sym_LT, anon_sym_GT, - ACTIONS(1030), 32, + ACTIONS(1050), 32, sym__newline, anon_sym_DOT, anon_sym_from, @@ -49804,13 +49771,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_CARET_EQ, anon_sym_PIPE_EQ, anon_sym_SEMI, - [31483] = 3, + [31447] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1257), 13, - sym__dedent, + ACTIONS(1269), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -49821,7 +49788,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1259), 35, + ACTIONS(1271), 35, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -49839,9 +49806,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, @@ -49857,10 +49824,120 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31539] = 3, + [31503] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1071), 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(1069), 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, + anon_sym_SEMI, + [31559] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1273), 1, + anon_sym_COMMA, + ACTIONS(1276), 1, + anon_sym_COLON_EQ, + ACTIONS(1278), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(1280), 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(1241), 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(1236), 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, + anon_sym_SEMI, + [31623] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1261), 13, + ACTIONS(1284), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -49874,7 +49951,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1263), 35, + ACTIONS(1282), 35, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -49892,9 +49969,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, @@ -49910,7 +49987,64 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31595] = 21, + [31679] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(277), 1, + anon_sym_COMMA, + ACTIONS(283), 1, + anon_sym_COLON_EQ, + ACTIONS(285), 2, + anon_sym_COLON, + anon_sym_EQ, + ACTIONS(307), 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(272), 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(303), 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, + anon_sym_SEMI, + [31743] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -49919,37 +50053,37 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, + ACTIONS(690), 1, sym_identifier, - ACTIONS(698), 1, + ACTIONS(694), 1, anon_sym_LPAREN, - ACTIONS(706), 1, + ACTIONS(702), 1, anon_sym_LBRACK, - ACTIONS(708), 1, + ACTIONS(704), 1, anon_sym_await, - ACTIONS(1190), 1, + ACTIONS(1218), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(1017), 1, + STATE(698), 1, + sym_string, + STATE(1016), 1, sym_primary_expression, - STATE(1531), 1, + STATE(1415), 1, sym_pattern, - STATE(1751), 1, + STATE(1655), 1, sym_pattern_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(842), 2, + STATE(875), 2, sym_attribute, sym_subscript, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1005), 3, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -49958,14 +50092,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(696), 6, + ACTIONS(692), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -49981,10 +50115,10 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [31687] = 3, + [31835] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1284), 13, + ACTIONS(1253), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -49998,7 +50132,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1282), 35, + ACTIONS(1255), 35, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50034,7 +50168,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31743] = 3, + [31891] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(1284), 13, @@ -50069,9 +50203,62 @@ 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_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, + [31947] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1269), 13, + sym__dedent, + sym__string_start, + sym__template_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(1271), 35, + anon_sym_lazy, + 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_finally, anon_sym_with, anon_sym_match, - anon_sym_case, anon_sym_def, anon_sym_global, anon_sym_nonlocal, @@ -50087,7 +50274,7 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [31799] = 21, + [32003] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -50096,37 +50283,37 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, + ACTIONS(690), 1, sym_identifier, - ACTIONS(698), 1, + ACTIONS(694), 1, anon_sym_LPAREN, - ACTIONS(706), 1, + ACTIONS(702), 1, anon_sym_LBRACK, - ACTIONS(708), 1, + ACTIONS(704), 1, anon_sym_await, - ACTIONS(1190), 1, + ACTIONS(1218), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(1017), 1, + STATE(698), 1, + sym_string, + STATE(1016), 1, sym_primary_expression, - STATE(1405), 1, + STATE(1411), 1, sym_pattern, - STATE(1718), 1, + STATE(1754), 1, sym_pattern_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(842), 2, + STATE(875), 2, sym_attribute, sym_subscript, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1005), 3, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -50135,14 +50322,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(696), 6, + ACTIONS(692), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -50158,7 +50345,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [31891] = 21, + [32095] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -50167,37 +50354,37 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, + ACTIONS(690), 1, sym_identifier, - ACTIONS(698), 1, + ACTIONS(694), 1, anon_sym_LPAREN, - ACTIONS(706), 1, + ACTIONS(702), 1, anon_sym_LBRACK, - ACTIONS(708), 1, + ACTIONS(704), 1, anon_sym_await, - ACTIONS(1190), 1, + ACTIONS(1218), 1, anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(1017), 1, + STATE(698), 1, + sym_string, + STATE(1016), 1, sym_primary_expression, - STATE(1532), 1, + STATE(1533), 1, sym_pattern, - STATE(1678), 1, + STATE(1752), 1, sym_pattern_list, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(842), 2, + STATE(875), 2, sym_attribute, sym_subscript, ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - STATE(1005), 3, + STATE(1014), 3, sym_tuple_pattern, sym_list_pattern, sym_list_splat_pattern, @@ -50206,14 +50393,14 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - ACTIONS(696), 6, + ACTIONS(692), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -50229,13 +50416,13 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [31983] = 3, + [32187] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1276), 13, + ACTIONS(1288), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50246,7 +50433,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1274), 35, + ACTIONS(1286), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50266,7 +50453,6 @@ 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, @@ -50282,10 +50468,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32039] = 3, + [32242] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1280), 13, + ACTIONS(1290), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50299,7 +50485,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1278), 35, + ACTIONS(1292), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50317,7 +50503,6 @@ 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_def, @@ -50335,84 +50520,65 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32095] = 21, + [32297] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(1296), 13, + sym__dedent, sym__string_start, - ACTIONS(317), 1, sym__template_string_start, - ACTIONS(694), 1, - sym_identifier, - ACTIONS(698), 1, anon_sym_LPAREN, - ACTIONS(706), 1, - anon_sym_LBRACK, - ACTIONS(708), 1, - anon_sym_await, - ACTIONS(1190), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, - sym_template_string, - STATE(1017), 1, - sym_primary_expression, - STATE(1530), 1, - sym_pattern, - STATE(1748), 1, - sym_pattern_list, - ACTIONS(309), 2, - sym_ellipsis, - sym_float, - STATE(842), 2, - sym_attribute, - sym_subscript, - ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, + anon_sym_LBRACK, + anon_sym_LBRACE, + anon_sym_STAR_STAR, + anon_sym_AT, anon_sym_TILDE, - STATE(1005), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(311), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(696), 6, + sym_ellipsis, + sym_float, + ACTIONS(1294), 34, anon_sym_lazy, + 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(720), 15, - 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_concatenated_template_string, - sym_await, - [32187] = 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, + [32352] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1288), 13, - sym__dedent, + ACTIONS(1298), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50423,7 +50589,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1286), 34, + ACTIONS(1300), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50458,65 +50624,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32242] = 6, + [32407] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1292), 1, - anon_sym_COMMA, - ACTIONS(1299), 1, - anon_sym_EQ, - ACTIONS(1297), 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(1295), 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(1290), 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, - anon_sym_SEMI, - [32303] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1301), 13, + ACTIONS(1302), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50530,7 +50641,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1303), 34, + ACTIONS(1304), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50565,13 +50676,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32358] = 3, + [32462] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1305), 13, + ACTIONS(976), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50582,7 +50693,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1307), 34, + ACTIONS(978), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50617,13 +50728,137 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32413] = 3, + [32517] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1308), 1, + anon_sym_COMMA, + ACTIONS(1315), 1, + anon_sym_EQ, + ACTIONS(1313), 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(1311), 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(1306), 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, + anon_sym_SEMI, + [32578] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1309), 13, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(690), 1, + sym_identifier, + ACTIONS(694), 1, + anon_sym_LPAREN, + ACTIONS(702), 1, + anon_sym_LBRACK, + ACTIONS(704), 1, + anon_sym_await, + ACTIONS(1218), 1, + anon_sym_STAR, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(1016), 1, + sym_primary_expression, + STATE(1515), 1, + sym_pattern, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + STATE(875), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1014), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(692), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(734), 15, + 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_concatenated_template_string, + sym_await, + [32667] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1319), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50634,7 +50869,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1311), 34, + ACTIONS(1317), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50669,13 +50904,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32468] = 3, + [32722] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1313), 13, + ACTIONS(1323), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50686,7 +50921,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1315), 34, + ACTIONS(1321), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50721,13 +50956,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32523] = 3, + [32777] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1317), 13, + ACTIONS(1327), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50738,7 +50973,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1319), 34, + ACTIONS(1325), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50773,10 +51008,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32578] = 3, + [32832] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1321), 13, + ACTIONS(1329), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -50790,7 +51025,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1323), 34, + ACTIONS(1331), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50825,13 +51060,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32633] = 3, + [32887] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1325), 13, + ACTIONS(1298), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50842,7 +51077,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1327), 34, + ACTIONS(1300), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50877,13 +51112,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32688] = 3, + [32942] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1329), 13, + ACTIONS(1302), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -50894,7 +51129,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1331), 34, + ACTIONS(1304), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -50929,68 +51164,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32743] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1335), 1, - anon_sym_COMMA, - ACTIONS(1342), 1, - anon_sym_EQ, - ACTIONS(1340), 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(1338), 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(1333), 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, - anon_sym_SEMI, - [32804] = 3, + [32997] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1344), 13, + ACTIONS(1329), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51001,7 +51181,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1346), 34, + ACTIONS(1331), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51036,10 +51216,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32859] = 3, + [33052] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1348), 13, + ACTIONS(1188), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -51053,7 +51233,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1350), 34, + ACTIONS(1190), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51088,82 +51268,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [32914] = 20, + [33107] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(694), 1, - sym_identifier, - ACTIONS(698), 1, - anon_sym_LPAREN, - ACTIONS(706), 1, - anon_sym_LBRACK, - ACTIONS(708), 1, - anon_sym_await, - ACTIONS(1190), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, - sym_template_string, - STATE(1017), 1, - sym_primary_expression, - STATE(1524), 1, - sym_pattern, - ACTIONS(309), 2, - sym_ellipsis, - sym_float, - STATE(842), 2, - sym_attribute, - sym_subscript, - ACTIONS(301), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(1005), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(311), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(696), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(720), 15, - 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_concatenated_template_string, - sym_await, - [33003] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1352), 13, + ACTIONS(1188), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51174,7 +51285,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1354), 34, + ACTIONS(1190), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51209,10 +51320,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33058] = 3, + [33162] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1356), 13, + ACTIONS(948), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -51226,7 +51337,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1358), 34, + ACTIONS(950), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51261,218 +51372,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33113] = 3, + [33217] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1360), 13, - sym__string_start, - sym__template_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(1362), 34, - anon_sym_lazy, - 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, - [33168] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1364), 13, - sym__string_start, - sym__template_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(1366), 34, - anon_sym_lazy, - 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, - [33223] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1368), 13, - sym__string_start, - sym__template_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(1370), 34, - anon_sym_lazy, - 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, - [33278] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(950), 13, - sym__string_start, - sym__template_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(948), 34, - anon_sym_lazy, - 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, - [33333] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1374), 13, + ACTIONS(948), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -51486,59 +51389,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1372), 34, - anon_sym_lazy, - 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, - [33388] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1376), 13, - sym__string_start, - sym__template_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(1378), 34, + ACTIONS(950), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51573,13 +51424,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33443] = 3, + [33272] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1380), 13, + ACTIONS(1335), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51590,7 +51441,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1382), 34, + ACTIONS(1333), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51625,10 +51476,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33498] = 3, + [33327] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1233), 13, + ACTIONS(1335), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -51642,7 +51493,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1235), 34, + ACTIONS(1333), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51677,13 +51528,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33553] = 3, + [33382] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1384), 13, + ACTIONS(1339), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51694,7 +51545,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1386), 34, + ACTIONS(1337), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51729,13 +51580,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33608] = 3, + [33437] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1388), 13, + ACTIONS(1343), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51746,7 +51597,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1390), 34, + ACTIONS(1341), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51781,10 +51632,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33663] = 3, + [33492] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(950), 13, + ACTIONS(1347), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -51798,7 +51649,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(948), 34, + ACTIONS(1345), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51833,13 +51684,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33718] = 3, + [33547] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1392), 13, + ACTIONS(1351), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51850,7 +51701,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1394), 34, + ACTIONS(1349), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51885,13 +51736,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33773] = 3, + [33602] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1396), 13, + ACTIONS(1355), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51902,7 +51753,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1398), 34, + ACTIONS(1353), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51937,13 +51788,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33828] = 3, + [33657] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1400), 13, + ACTIONS(1359), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -51954,7 +51805,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1402), 34, + ACTIONS(1357), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -51989,10 +51840,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33883] = 3, + [33712] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1406), 13, + ACTIONS(1363), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52006,7 +51857,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1404), 34, + ACTIONS(1361), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52041,10 +51892,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33938] = 3, + [33767] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1410), 13, + ACTIONS(1367), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52058,7 +51909,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1408), 34, + ACTIONS(1365), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52093,10 +51944,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [33993] = 3, + [33822] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1414), 13, + ACTIONS(1371), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52110,7 +51961,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1412), 34, + ACTIONS(1369), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52145,114 +51996,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34048] = 3, + [33877] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1416), 13, - sym__string_start, - sym__template_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(1418), 34, - anon_sym_lazy, - 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, - [34103] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1420), 13, - sym__string_start, - sym__template_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(1422), 34, - anon_sym_lazy, - 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, - [34158] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1356), 13, + ACTIONS(1375), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52266,7 +52013,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1358), 34, + ACTIONS(1373), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52301,62 +52048,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34213] = 3, + [33932] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1424), 13, - sym__string_start, - sym__template_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(1426), 34, - anon_sym_lazy, - 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, - [34268] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1364), 13, + ACTIONS(1379), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52370,7 +52065,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1366), 34, + ACTIONS(1377), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52405,10 +52100,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34323] = 3, + [33987] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1384), 13, + ACTIONS(1214), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52422,59 +52117,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1386), 34, - anon_sym_lazy, - 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, - [34378] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1428), 13, - sym__string_start, - sym__template_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(1430), 34, + ACTIONS(1212), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52509,10 +52152,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34433] = 3, + [34042] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1243), 13, + ACTIONS(1383), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52526,59 +52169,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1241), 34, - anon_sym_lazy, - 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, - [34488] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1406), 13, - sym__string_start, - sym__template_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(1404), 34, + ACTIONS(1381), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52613,10 +52204,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34543] = 3, + [34097] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(960), 13, + ACTIONS(1387), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52630,7 +52221,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(958), 34, + ACTIONS(1385), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52665,13 +52256,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34598] = 3, + [34152] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1243), 13, + ACTIONS(1391), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -52682,7 +52273,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1241), 34, + ACTIONS(1389), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52717,13 +52308,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34653] = 3, + [34207] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1410), 13, + ACTIONS(1395), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -52734,7 +52325,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1408), 34, + ACTIONS(1393), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52769,10 +52360,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34708] = 3, + [34262] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1434), 13, + ACTIONS(1399), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52786,7 +52377,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1432), 34, + ACTIONS(1397), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52821,10 +52412,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34763] = 3, + [34317] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1438), 13, + ACTIONS(1403), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52838,7 +52429,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1436), 34, + ACTIONS(1401), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52873,10 +52464,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34818] = 3, + [34372] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1313), 13, + ACTIONS(1407), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52890,7 +52481,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1315), 34, + ACTIONS(1405), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52925,10 +52516,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34873] = 3, + [34427] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1388), 13, + ACTIONS(1411), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52942,7 +52533,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1390), 34, + ACTIONS(1409), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -52977,10 +52568,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34928] = 3, + [34482] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1317), 13, + ACTIONS(1415), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -52994,7 +52585,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1319), 34, + ACTIONS(1413), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53029,13 +52620,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [34983] = 3, + [34537] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(960), 13, + ACTIONS(1419), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53046,7 +52637,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(958), 34, + ACTIONS(1417), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53081,10 +52672,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35038] = 3, + [34592] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1321), 13, + ACTIONS(1423), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53098,7 +52689,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1323), 34, + ACTIONS(1421), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53133,13 +52724,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35093] = 3, + [34647] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1440), 13, + ACTIONS(1427), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53150,7 +52741,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1442), 34, + ACTIONS(1425), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53185,10 +52776,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35148] = 3, + [34702] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1344), 13, + ACTIONS(1431), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53202,7 +52793,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1346), 34, + ACTIONS(1429), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53237,10 +52828,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35203] = 3, + [34757] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1348), 13, + ACTIONS(1435), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53254,7 +52845,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1350), 34, + ACTIONS(1433), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53289,10 +52880,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35258] = 3, + [34812] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1360), 13, + ACTIONS(1439), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53306,7 +52897,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1362), 34, + ACTIONS(1437), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53341,10 +52932,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35313] = 3, + [34867] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1368), 13, + ACTIONS(1443), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53358,7 +52949,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1370), 34, + ACTIONS(1441), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53393,10 +52984,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35368] = 3, + [34922] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1376), 13, + ACTIONS(1447), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53410,7 +53001,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1378), 34, + ACTIONS(1445), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53445,10 +53036,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35423] = 3, + [34977] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1233), 13, + ACTIONS(1451), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53462,7 +53053,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1235), 34, + ACTIONS(1449), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53497,13 +53088,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35478] = 3, + [35032] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1392), 13, - sym__dedent, + ACTIONS(1339), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53514,7 +53105,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1394), 34, + ACTIONS(1337), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53549,10 +53140,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35533] = 3, + [35087] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1400), 13, + ACTIONS(1455), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53566,7 +53157,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1402), 34, + ACTIONS(1453), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53601,10 +53192,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35588] = 3, + [35142] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1416), 13, + ACTIONS(1459), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53618,7 +53209,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1418), 34, + ACTIONS(1457), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53653,10 +53244,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35643] = 3, + [35197] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1420), 13, + ACTIONS(1463), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53670,7 +53261,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1422), 34, + ACTIONS(1461), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53705,13 +53296,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35698] = 3, + [35252] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1424), 13, - sym__dedent, + ACTIONS(1465), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53722,7 +53313,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1426), 34, + ACTIONS(1467), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53757,10 +53348,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35753] = 3, + [35307] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1440), 13, + ACTIONS(1471), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53774,7 +53365,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1442), 34, + ACTIONS(1469), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53809,13 +53400,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35808] = 3, + [35362] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1446), 13, - sym__dedent, + ACTIONS(1343), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53826,7 +53417,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1444), 34, + ACTIONS(1341), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53861,13 +53452,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35863] = 3, + [35417] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1450), 13, - sym__dedent, + ACTIONS(1347), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53878,7 +53469,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1448), 34, + ACTIONS(1345), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53913,10 +53504,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35918] = 3, + [35472] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1454), 13, + ACTIONS(1290), 13, sym__dedent, sym__string_start, sym__template_string_start, @@ -53930,7 +53521,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1452), 34, + ACTIONS(1292), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -53965,13 +53556,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [35973] = 3, + [35527] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1446), 13, + ACTIONS(1465), 13, + sym__dedent, sym__string_start, sym__template_string_start, - ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -53982,7 +53573,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1444), 34, + ACTIONS(1467), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54017,13 +53608,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36028] = 3, + [35582] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1458), 13, - sym__dedent, + ACTIONS(1351), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54034,7 +53625,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1456), 34, + ACTIONS(1349), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54069,65 +53660,68 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36083] = 3, + [35637] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1462), 13, - sym__dedent, - sym__string_start, - sym__template_string_start, - anon_sym_LPAREN, + ACTIONS(1475), 1, + anon_sym_COMMA, + ACTIONS(1482), 1, + anon_sym_EQ, + ACTIONS(1480), 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(1478), 15, + anon_sym_STAR, + anon_sym_GT_GT, + anon_sym_PIPE, 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(1460), 34, - anon_sym_lazy, - 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_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(1473), 16, + sym__newline, + anon_sym_DOT, + anon_sym_LPAREN, 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_in, + anon_sym_LBRACK, anon_sym_not, - anon_sym_lambda, - anon_sym_yield, - sym_integer, - sym_identifier, - anon_sym_await, - sym_true, - sym_false, - sym_none, - [36138] = 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, + anon_sym_SEMI, + [35698] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1466), 13, - sym__dedent, + ACTIONS(1355), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54138,7 +53732,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1464), 34, + ACTIONS(1353), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54173,13 +53767,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36193] = 3, + [35753] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1470), 13, - sym__dedent, + ACTIONS(1359), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54190,7 +53784,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1468), 34, + ACTIONS(1357), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54225,13 +53819,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36248] = 3, + [35808] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1474), 13, - sym__dedent, + ACTIONS(1363), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54242,7 +53836,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1472), 34, + ACTIONS(1361), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54277,13 +53871,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36303] = 3, + [35863] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1352), 13, - sym__dedent, + ACTIONS(1367), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54294,7 +53888,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1354), 34, + ACTIONS(1365), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54329,82 +53923,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36358] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(694), 1, - sym_identifier, - ACTIONS(698), 1, - anon_sym_LPAREN, - ACTIONS(706), 1, - anon_sym_LBRACK, - ACTIONS(708), 1, - anon_sym_await, - ACTIONS(1190), 1, - anon_sym_STAR, - STATE(694), 1, - sym_string, - STATE(698), 1, - sym_template_string, - STATE(1002), 1, - sym_pattern, - STATE(1017), 1, - sym_primary_expression, - ACTIONS(309), 2, - sym_ellipsis, - sym_float, - STATE(842), 2, - sym_attribute, - sym_subscript, - ACTIONS(301), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - STATE(1005), 3, - sym_tuple_pattern, - sym_list_pattern, - sym_list_splat_pattern, - ACTIONS(311), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(696), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(720), 15, - 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_concatenated_template_string, - sym_await, - [36447] = 3, + [35918] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1380), 13, - sym__dedent, + ACTIONS(1371), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54415,7 +53940,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1382), 34, + ACTIONS(1369), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54450,13 +53975,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36502] = 3, + [35973] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1396), 13, - sym__dedent, + ACTIONS(1375), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54467,7 +53992,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1398), 34, + ACTIONS(1373), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54502,13 +54027,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36557] = 3, + [36028] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1428), 13, - sym__dedent, + ACTIONS(1379), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54519,7 +54044,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1430), 34, + ACTIONS(1377), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54554,10 +54079,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36612] = 3, + [36083] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1414), 13, + ACTIONS(1214), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -54571,7 +54096,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1412), 34, + ACTIONS(1212), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54606,10 +54131,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36667] = 3, + [36138] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1450), 13, + ACTIONS(1383), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -54623,7 +54148,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1448), 34, + ACTIONS(1381), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54658,13 +54183,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36722] = 3, + [36193] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1478), 13, - sym__dedent, + ACTIONS(1387), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54675,7 +54200,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1476), 34, + ACTIONS(1385), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54710,13 +54235,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36777] = 3, + [36248] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1482), 13, - sym__dedent, + ACTIONS(1391), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54727,7 +54252,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1480), 34, + ACTIONS(1389), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54762,13 +54287,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36832] = 3, + [36303] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1301), 13, - sym__dedent, + ACTIONS(1395), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54779,7 +54304,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1303), 34, + ACTIONS(1393), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54814,13 +54339,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36887] = 3, + [36358] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1305), 13, - sym__dedent, + ACTIONS(1399), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54831,7 +54356,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1307), 34, + ACTIONS(1397), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54866,13 +54391,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36942] = 3, + [36413] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1309), 13, - sym__dedent, + ACTIONS(1403), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -54883,7 +54408,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1311), 34, + ACTIONS(1401), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54918,10 +54443,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [36997] = 3, + [36468] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1454), 13, + ACTIONS(1407), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -54935,7 +54460,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1452), 34, + ACTIONS(1405), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -54970,10 +54495,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37052] = 3, + [36523] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1470), 13, + ACTIONS(1411), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -54987,7 +54512,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1468), 34, + ACTIONS(1409), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55022,13 +54547,13 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37107] = 3, + [36578] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1325), 13, - sym__dedent, + ACTIONS(1415), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -55039,7 +54564,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1327), 34, + ACTIONS(1413), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55074,13 +54599,68 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37162] = 3, + [36633] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(1329), 13, - sym__dedent, + ACTIONS(1273), 1, + anon_sym_COMMA, + ACTIONS(1278), 1, + anon_sym_EQ, + ACTIONS(1280), 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(1241), 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(1236), 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, + anon_sym_SEMI, + [36694] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(976), 13, sym__string_start, sym__template_string_start, + ts_builtin_sym_end, anon_sym_LPAREN, anon_sym_DASH, anon_sym_PLUS, @@ -55091,7 +54671,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1331), 34, + ACTIONS(978), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55126,10 +54706,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37217] = 3, + [36749] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1434), 13, + ACTIONS(1419), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55143,7 +54723,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1432), 34, + ACTIONS(1417), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55178,10 +54758,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37272] = 3, + [36804] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1374), 13, + ACTIONS(1423), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55195,7 +54775,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1372), 34, + ACTIONS(1421), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55230,10 +54810,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37327] = 3, + [36859] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1478), 13, + ACTIONS(1427), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55247,7 +54827,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1476), 34, + ACTIONS(1425), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55282,10 +54862,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37382] = 3, + [36914] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1482), 13, + ACTIONS(1431), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55299,7 +54879,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1480), 34, + ACTIONS(1429), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55334,10 +54914,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37437] = 3, + [36969] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1288), 13, + ACTIONS(1319), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55351,7 +54931,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1286), 34, + ACTIONS(1317), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55386,10 +54966,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37492] = 3, + [37024] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1458), 13, + ACTIONS(1435), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55403,7 +54983,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1456), 34, + ACTIONS(1433), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55438,10 +55018,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37547] = 3, + [37079] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1462), 13, + ACTIONS(1323), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55455,7 +55035,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1460), 34, + ACTIONS(1321), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55490,10 +55070,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37602] = 3, + [37134] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1484), 13, + ACTIONS(1327), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55507,7 +55087,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1486), 34, + ACTIONS(1325), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55542,10 +55122,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37657] = 3, + [37189] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1474), 13, + ACTIONS(1439), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55559,7 +55139,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1472), 34, + ACTIONS(1437), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55594,10 +55174,10 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37712] = 3, + [37244] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1466), 13, + ACTIONS(1443), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55611,7 +55191,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1464), 34, + ACTIONS(1441), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55646,65 +55226,426 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, - [37767] = 6, + [37299] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1265), 1, - anon_sym_COMMA, - ACTIONS(1270), 1, - anon_sym_EQ, - ACTIONS(1272), 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(1209), 15, + ACTIONS(1447), 13, + sym__string_start, + sym__template_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(1445), 34, + anon_sym_lazy, + 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, + [37354] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1451), 13, + sym__string_start, + sym__template_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_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(1204), 16, - sym__newline, - anon_sym_DOT, + anon_sym_TILDE, + sym_ellipsis, + sym_float, + ACTIONS(1449), 34, + anon_sym_lazy, + 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, + [37409] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1296), 13, + sym__string_start, + sym__template_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), 34, + anon_sym_lazy, + 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_in, + 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, + [37464] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1288), 13, + sym__string_start, + sym__template_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(1286), 34, + anon_sym_lazy, + 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_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_SEMI, - [37828] = 3, + anon_sym_lambda, + anon_sym_yield, + sym_integer, + sym_identifier, + anon_sym_await, + sym_true, + sym_false, + sym_none, + [37519] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1455), 13, + sym__string_start, + sym__template_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(1453), 34, + anon_sym_lazy, + 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, + [37574] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1459), 13, + sym__string_start, + sym__template_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(1457), 34, + anon_sym_lazy, + 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, + [37629] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1463), 13, + sym__string_start, + sym__template_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(1461), 34, + anon_sym_lazy, + 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, + [37684] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1484), 13, + sym__string_start, + sym__template_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(1486), 34, + anon_sym_lazy, + 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, + [37739] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1438), 13, + ACTIONS(1471), 13, sym__string_start, sym__template_string_start, ts_builtin_sym_end, @@ -55718,7 +55659,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_TILDE, sym_ellipsis, sym_float, - ACTIONS(1436), 34, + ACTIONS(1469), 34, anon_sym_lazy, anon_sym_import, anon_sym_from, @@ -55753,6 +55694,75 @@ static const uint16_t ts_small_parse_table[] = { sym_true, sym_false, sym_none, + [37794] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(690), 1, + sym_identifier, + ACTIONS(694), 1, + anon_sym_LPAREN, + ACTIONS(702), 1, + anon_sym_LBRACK, + ACTIONS(704), 1, + anon_sym_await, + ACTIONS(1218), 1, + anon_sym_STAR, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(1009), 1, + sym_pattern, + STATE(1016), 1, + sym_primary_expression, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + STATE(875), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + STATE(1014), 3, + sym_tuple_pattern, + sym_list_pattern, + sym_list_splat_pattern, + ACTIONS(311), 4, + sym_integer, + sym_true, + sym_false, + sym_none, + ACTIONS(692), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(734), 15, + 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_concatenated_template_string, + sym_await, [37883] = 3, ACTIONS(3), 1, sym_comment, @@ -55808,14 +55818,14 @@ static const uint16_t ts_small_parse_table[] = { [37938] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1206), 1, + ACTIONS(587), 1, anon_sym_COMMA, - ACTIONS(1488), 1, + ACTIONS(590), 1, anon_sym_COLON_EQ, - ACTIONS(1213), 2, + ACTIONS(592), 2, anon_sym_COLON, anon_sym_EQ, - ACTIONS(1211), 13, + ACTIONS(598), 13, anon_sym_PLUS_EQ, anon_sym_DASH_EQ, anon_sym_STAR_EQ, @@ -55829,7 +55839,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - ACTIONS(1204), 14, + ACTIONS(303), 14, anon_sym_DOT, anon_sym_LPAREN, anon_sym_if, @@ -55844,7 +55854,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - ACTIONS(1209), 15, + ACTIONS(272), 15, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -55863,14 +55873,14 @@ static const uint16_t ts_small_parse_table[] = { [38000] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(587), 1, + ACTIONS(1238), 1, anon_sym_COMMA, - ACTIONS(590), 1, + ACTIONS(1488), 1, anon_sym_COLON_EQ, - ACTIONS(592), 2, + ACTIONS(1245), 2, anon_sym_COLON, anon_sym_EQ, - ACTIONS(598), 13, + ACTIONS(1243), 13, anon_sym_PLUS_EQ, anon_sym_DASH_EQ, anon_sym_STAR_EQ, @@ -55884,7 +55894,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - ACTIONS(303), 14, + ACTIONS(1236), 14, anon_sym_DOT, anon_sym_LPAREN, anon_sym_if, @@ -55899,7 +55909,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - ACTIONS(272), 15, + ACTIONS(1241), 15, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -55932,16 +55942,16 @@ static const uint16_t ts_small_parse_table[] = { sym_identifier, ACTIONS(1496), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(1017), 1, + STATE(698), 1, + sym_string, + STATE(1016), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - STATE(860), 2, + STATE(877), 2, sym_attribute, sym_subscript, ACTIONS(301), 3, @@ -55964,7 +55974,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 15, + STATE(734), 15, sym_binary_operator, sym_unary_operator, sym_call, @@ -55983,47 +55993,47 @@ static const uint16_t ts_small_parse_table[] = { [38145] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(83), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(610), 1, anon_sym_await, ACTIONS(1498), 1, anon_sym_not, - STATE(772), 1, + STATE(627), 1, sym_template_string, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(798), 1, + STATE(739), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56044,47 +56054,47 @@ static const uint16_t ts_small_parse_table[] = { [38222] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(581), 1, anon_sym_await, ACTIONS(1500), 1, anon_sym_not, - STATE(694), 1, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(821), 1, + STATE(801), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56105,47 +56115,47 @@ static const uint16_t ts_small_parse_table[] = { [38299] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(622), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(628), 1, + ACTIONS(650), 1, anon_sym_await, - ACTIONS(630), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(654), 1, sym__template_string_start, ACTIONS(1502), 1, anon_sym_not, - STATE(781), 1, + STATE(814), 1, sym_string, - STATE(782), 1, + STATE(815), 1, sym_template_string, - STATE(810), 1, + STATE(857), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56166,47 +56176,47 @@ static const uint16_t ts_small_parse_table[] = { [38376] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(662), 1, + ACTIONS(628), 1, anon_sym_await, - ACTIONS(664), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(632), 1, sym__template_string_start, ACTIONS(1504), 1, anon_sym_not, - STATE(790), 1, + STATE(771), 1, sym_string, - STATE(791), 1, + STATE(772), 1, sym_template_string, - STATE(856), 1, + STATE(791), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56233,24 +56243,24 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(610), 1, + ACTIONS(600), 1, anon_sym_await, ACTIONS(1506), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(764), 1, + STATE(698), 1, + sym_string, + STATE(744), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -56267,7 +56277,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56294,24 +56304,24 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(666), 1, anon_sym_await, ACTIONS(1508), 1, anon_sym_not, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(757), 1, + STATE(698), 1, + sym_string, + STATE(824), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -56328,7 +56338,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56349,45 +56359,45 @@ static const uint16_t ts_small_parse_table[] = { [38607] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(610), 1, + ACTIONS(646), 1, + anon_sym_LBRACE, + ACTIONS(650), 1, anon_sym_await, - STATE(694), 1, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + STATE(814), 1, sym_string, - STATE(698), 1, + STATE(815), 1, sym_template_string, - STATE(745), 1, + STATE(835), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56408,19 +56418,19 @@ static const uint16_t ts_small_parse_table[] = { [38681] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1514), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(627), 2, + STATE(631), 2, sym_template_string, aux_sym_concatenated_template_string_repeat1, - ACTIONS(1512), 6, + ACTIONS(1241), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1510), 33, + ACTIONS(1236), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -56457,45 +56467,45 @@ static const uint16_t ts_small_parse_table[] = { [38735] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(662), 1, - anon_sym_await, - ACTIONS(664), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(790), 1, - sym_string, - STATE(791), 1, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(610), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(833), 1, + STATE(698), 1, + sym_string, + STATE(749), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56513,52 +56523,54 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38809] = 15, + [38809] = 17, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(662), 1, - anon_sym_await, - ACTIONS(664), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(790), 1, - sym_string, - STATE(791), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(1510), 1, + sym_identifier, + ACTIONS(1514), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(864), 1, + STATE(698), 1, + sym_string, + STATE(1016), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + STATE(1011), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(311), 4, sym_integer, - sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(1512), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(734), 15, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -56572,48 +56584,146 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38883] = 15, + [38887] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, + ACTIONS(315), 1, + sym__string_start, + STATE(675), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1518), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1516), 33, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(622), 1, + 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, - ACTIONS(624), 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, + [38941] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(317), 1, + sym__template_string_start, + STATE(676), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1522), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1520), 33, + 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, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [38995] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(638), 1, + anon_sym_LPAREN, + ACTIONS(644), 1, + anon_sym_LBRACK, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(628), 1, + ACTIONS(650), 1, anon_sym_await, - ACTIONS(630), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(654), 1, sym__template_string_start, - STATE(781), 1, + STATE(814), 1, sym_string, - STATE(782), 1, + STATE(815), 1, sym_template_string, - STATE(813), 1, + STATE(873), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56631,48 +56741,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [38957] = 15, + [39069] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(662), 1, + ACTIONS(650), 1, anon_sym_await, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(863), 1, + STATE(857), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56690,54 +56800,52 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39031] = 17, + [39143] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(1490), 1, - sym_identifier, - ACTIONS(1496), 1, + ACTIONS(646), 1, + anon_sym_LBRACE, + ACTIONS(650), 1, anon_sym_await, - STATE(694), 1, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + STATE(814), 1, sym_string, - STATE(698), 1, + STATE(815), 1, sym_template_string, - STATE(1017), 1, + STATE(872), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - STATE(860), 2, - sym_attribute, - sym_subscript, - ACTIONS(301), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 4, + ACTIONS(634), 5, sym_integer, + sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(1492), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 15, + STATE(960), 17, sym_binary_operator, sym_unary_operator, + sym_attribute, + sym_subscript, sym_call, sym_list, sym_set, @@ -56751,48 +56859,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39109] = 15, + [39217] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(662), 1, + ACTIONS(650), 1, anon_sym_await, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(868), 1, + STATE(866), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56810,48 +56918,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39183] = 15, + [39291] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(646), 1, + anon_sym_LBRACE, + ACTIONS(650), 1, anon_sym_await, - STATE(772), 1, - sym_template_string, - STATE(779), 1, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + STATE(814), 1, sym_string, - STATE(797), 1, + STATE(815), 1, + sym_template_string, + STATE(871), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56869,48 +56977,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39257] = 15, + [39365] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(662), 1, + ACTIONS(650), 1, anon_sym_await, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - STATE(790), 1, + STATE(814), 1, sym_string, - STATE(791), 1, + STATE(815), 1, sym_template_string, - STATE(865), 1, + STATE(839), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56928,48 +57036,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39331] = 15, + [39439] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(622), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(628), 1, + ACTIONS(650), 1, anon_sym_await, - ACTIONS(630), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(654), 1, sym__template_string_start, - STATE(781), 1, + STATE(814), 1, sym_string, - STATE(782), 1, + STATE(815), 1, sym_template_string, - STATE(814), 1, + STATE(840), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -56987,48 +57095,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39405] = 15, + [39513] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(646), 1, + anon_sym_LBRACE, + ACTIONS(650), 1, anon_sym_await, - STATE(772), 1, - sym_template_string, - STATE(779), 1, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + STATE(814), 1, sym_string, - STATE(798), 1, + STATE(815), 1, + sym_template_string, + STATE(874), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57046,48 +57154,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39479] = 15, + [39587] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(622), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(646), 1, anon_sym_LBRACE, - ACTIONS(628), 1, + ACTIONS(650), 1, anon_sym_await, - ACTIONS(630), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(654), 1, sym__template_string_start, - STATE(781), 1, + STATE(814), 1, sym_string, - STATE(782), 1, - sym_template_string, STATE(815), 1, + sym_template_string, + STATE(863), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57105,109 +57213,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39553] = 17, + [39661] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(1517), 1, - sym_identifier, - ACTIONS(1521), 1, - anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, - sym_template_string, - STATE(1017), 1, - sym_primary_expression, - ACTIONS(309), 2, - sym_ellipsis, - sym_float, - STATE(1013), 2, - sym_attribute, - sym_subscript, - ACTIONS(301), 3, - anon_sym_DASH, - anon_sym_PLUS, - anon_sym_TILDE, - ACTIONS(311), 4, - sym_integer, - sym_true, - sym_false, - sym_none, - ACTIONS(1519), 6, - anon_sym_lazy, - anon_sym_print, - anon_sym_async, - anon_sym_match, - anon_sym_exec, - anon_sym_type, - STATE(720), 15, - 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_concatenated_template_string, - sym_await, - [39631] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(83), 1, + ACTIONS(628), 1, + anon_sym_await, + ACTIONS(630), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(632), 1, sym__template_string_start, - ACTIONS(575), 1, - anon_sym_LPAREN, - ACTIONS(579), 1, - anon_sym_LBRACK, - ACTIONS(581), 1, - anon_sym_await, + STATE(771), 1, + sym_string, STATE(772), 1, sym_template_string, - STATE(779), 1, - sym_string, - STATE(801), 1, + STATE(789), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57225,48 +57272,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39705] = 15, + [39735] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(656), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(624), 1, anon_sym_LBRACE, - ACTIONS(662), 1, + ACTIONS(628), 1, anon_sym_await, - ACTIONS(664), 1, + ACTIONS(630), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(632), 1, sym__template_string_start, - STATE(790), 1, + STATE(771), 1, sym_string, - STATE(791), 1, + STATE(772), 1, sym_template_string, - STATE(845), 1, + STATE(790), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57284,7 +57331,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39779] = 15, + [39809] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(616), 1, @@ -57299,11 +57346,11 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(632), 1, sym__template_string_start, - STATE(781), 1, + STATE(771), 1, sym_string, - STATE(782), 1, + STATE(772), 1, sym_template_string, - STATE(804), 1, + STATE(791), 1, sym_primary_expression, ACTIONS(626), 2, sym_ellipsis, @@ -57325,7 +57372,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57343,48 +57390,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39853] = 15, + [39883] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(771), 1, + sym_string, STATE(772), 1, sym_template_string, - STATE(779), 1, - sym_string, - STATE(818), 1, + STATE(792), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57402,48 +57449,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [39927] = 15, + [39957] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(771), 1, + sym_string, STATE(772), 1, sym_template_string, - STATE(779), 1, - sym_string, - STATE(796), 1, + STATE(793), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57461,48 +57508,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40001] = 15, + [40031] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(610), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, - STATE(694), 1, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(751), 1, + STATE(794), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57520,48 +57567,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40075] = 15, + [40105] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(771), 1, + sym_string, STATE(772), 1, sym_template_string, - STATE(779), 1, - sym_string, - STATE(803), 1, + STATE(795), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57579,48 +57626,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40149] = 15, + [40179] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(771), 1, + sym_string, STATE(772), 1, sym_template_string, - STATE(779), 1, - sym_string, - STATE(788), 1, + STATE(796), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57638,48 +57685,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40223] = 15, + [40253] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, - anon_sym_LBRACE, - ACTIONS(83), 1, - sym__string_start, - ACTIONS(85), 1, - sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(771), 1, + sym_string, STATE(772), 1, sym_template_string, - STATE(779), 1, - sym_string, - STATE(800), 1, + STATE(797), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57697,48 +57744,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40297] = 15, + [40327] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(616), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(622), 1, anon_sym_LBRACK, - ACTIONS(610), 1, + ACTIONS(624), 1, + anon_sym_LBRACE, + ACTIONS(628), 1, anon_sym_await, - STATE(694), 1, + ACTIONS(630), 1, + sym__string_start, + ACTIONS(632), 1, + sym__template_string_start, + STATE(771), 1, sym_string, - STATE(698), 1, + STATE(772), 1, sym_template_string, - STATE(752), 1, + STATE(798), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(626), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(620), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(612), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(614), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57756,7 +57803,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40371] = 15, + [40401] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -57771,11 +57818,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(610), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(764), 1, + STATE(698), 1, + sym_string, + STATE(751), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, @@ -57797,7 +57844,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57815,48 +57862,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40445] = 15, + [40475] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(628), 1, - anon_sym_await, - ACTIONS(630), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(781), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(783), 1, sym_string, - STATE(782), 1, + STATE(784), 1, sym_template_string, - STATE(816), 1, + STATE(805), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57874,48 +57921,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40519] = 15, + [40549] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(628), 1, - anon_sym_await, - ACTIONS(630), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(781), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(783), 1, sym_string, - STATE(782), 1, + STATE(784), 1, sym_template_string, - STATE(817), 1, + STATE(788), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57933,7 +57980,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40593] = 15, + [40623] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(53), 1, @@ -57948,11 +57995,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(581), 1, anon_sym_await, - STATE(772), 1, - sym_template_string, - STATE(779), 1, + STATE(783), 1, sym_string, - STATE(806), 1, + STATE(784), 1, + sym_template_string, + STATE(799), 1, sym_primary_expression, ACTIONS(77), 2, sym_ellipsis, @@ -57974,7 +58021,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -57992,48 +58039,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40667] = 15, + [40697] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(610), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(694), 1, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(742), 1, + STATE(800), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58051,48 +58098,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40741] = 15, + [40771] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(610), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(694), 1, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(743), 1, + STATE(801), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58110,48 +58157,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40815] = 15, + [40845] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(610), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(694), 1, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(744), 1, + STATE(802), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58169,48 +58216,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40889] = 15, + [40919] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(628), 1, - anon_sym_await, - ACTIONS(630), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(781), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(783), 1, sym_string, - STATE(782), 1, + STATE(784), 1, sym_template_string, - STATE(830), 1, + STATE(803), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58228,48 +58275,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [40963] = 15, + [40993] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(662), 1, - anon_sym_await, - ACTIONS(664), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(790), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(783), 1, sym_string, - STATE(791), 1, + STATE(784), 1, sym_template_string, - STATE(867), 1, + STATE(804), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58287,48 +58334,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41037] = 15, + [41067] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(610), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(694), 1, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(746), 1, + STATE(806), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58346,48 +58393,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41111] = 15, + [41141] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(662), 1, - anon_sym_await, - ACTIONS(664), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(790), 1, + ACTIONS(575), 1, + anon_sym_LPAREN, + ACTIONS(579), 1, + anon_sym_LBRACK, + ACTIONS(581), 1, + anon_sym_await, + STATE(783), 1, sym_string, - STATE(791), 1, + STATE(784), 1, sym_template_string, - STATE(866), 1, + STATE(807), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58405,7 +58452,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41185] = 15, + [41215] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -58414,22 +58461,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(819), 1, + STATE(698), 1, + sym_string, + STATE(759), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -58446,7 +58493,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58464,7 +58511,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41259] = 15, + [41289] = 17, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -58473,43 +58520,45 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(1490), 1, + sym_identifier, + ACTIONS(1496), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(820), 1, + STATE(698), 1, + sym_string, + STATE(1016), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + STATE(877), 2, + sym_attribute, + sym_subscript, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(311), 4, sym_integer, - sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(1492), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 15, sym_binary_operator, sym_unary_operator, - sym_attribute, - sym_subscript, sym_call, sym_list, sym_set, @@ -58523,7 +58572,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41333] = 15, + [41367] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -58532,22 +58581,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(821), 1, + STATE(698), 1, + sym_string, + STATE(742), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -58564,7 +58613,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58582,7 +58631,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41407] = 15, + [41441] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -58591,22 +58640,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(823), 1, + STATE(698), 1, + sym_string, + STATE(743), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -58623,7 +58672,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58641,7 +58690,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41481] = 15, + [41515] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -58650,22 +58699,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(824), 1, + STATE(698), 1, + sym_string, + STATE(744), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -58682,7 +58731,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58700,7 +58749,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41555] = 15, + [41589] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -58709,22 +58758,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(825), 1, + STATE(698), 1, + sym_string, + STATE(748), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -58741,7 +58790,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58759,7 +58808,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41629] = 15, + [41663] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -58768,22 +58817,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(826), 1, + STATE(698), 1, + sym_string, + STATE(755), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -58800,7 +58849,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58818,48 +58867,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41703] = 15, + [41737] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(53), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(83), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(772), 1, + STATE(627), 1, sym_template_string, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(802), 1, + STATE(758), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58877,7 +58926,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41777] = 15, + [41811] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -58886,22 +58935,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(602), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(608), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(610), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(740), 1, + STATE(698), 1, + sym_string, + STATE(763), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(606), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -58918,7 +58967,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58936,7 +58985,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41851] = 15, + [41885] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -58945,22 +58994,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(827), 1, + STATE(698), 1, + sym_string, + STATE(765), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -58977,7 +59026,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -58995,7 +59044,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41925] = 15, + [41959] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59004,22 +59053,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(828), 1, + STATE(698), 1, + sym_string, + STATE(740), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59036,7 +59085,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59054,48 +59103,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [41999] = 15, + [42033] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(628), 1, - anon_sym_await, - ACTIONS(630), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(781), 1, - sym_string, - STATE(782), 1, + ACTIONS(585), 1, + anon_sym_LPAREN, + ACTIONS(596), 1, + anon_sym_LBRACK, + ACTIONS(600), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(809), 1, + STATE(698), 1, + sym_string, + STATE(741), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59113,7 +59162,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42073] = 15, + [42107] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59122,22 +59171,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(585), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(596), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(600), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(829), 1, + STATE(698), 1, + sym_string, + STATE(746), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(301), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59154,7 +59203,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59172,7 +59221,105 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42147] = 15, + [42181] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1528), 1, + sym__string_start, + STATE(675), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1526), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1524), 33, + 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, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [42235] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1535), 1, + sym__template_string_start, + STATE(676), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1533), 6, + anon_sym_as, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1531), 33, + 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, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [42289] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59181,22 +59328,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(755), 1, + STATE(698), 1, + sym_string, + STATE(750), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59213,7 +59360,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59231,7 +59378,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42221] = 15, + [42363] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59246,11 +59393,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(610), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(741), 1, + STATE(698), 1, + sym_string, + STATE(752), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, @@ -59272,7 +59419,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59290,48 +59437,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42295] = 15, + [42437] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, - anon_sym_LBRACE, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(638), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(644), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(646), 1, + anon_sym_LBRACE, + ACTIONS(650), 1, anon_sym_await, - STATE(694), 1, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + STATE(814), 1, sym_string, - STATE(698), 1, + STATE(815), 1, sym_template_string, - STATE(756), 1, + STATE(843), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(648), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(642), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(634), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(636), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(960), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59349,7 +59496,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42369] = 15, + [42511] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59358,22 +59505,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(757), 1, + STATE(698), 1, + sym_string, + STATE(739), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59390,7 +59537,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59408,7 +59555,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42443] = 15, + [42585] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59417,22 +59564,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(739), 1, + STATE(698), 1, + sym_string, + STATE(756), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59449,7 +59596,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59467,7 +59614,66 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42517] = 15, + [42659] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, + anon_sym_LBRACE, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(602), 1, + anon_sym_LPAREN, + ACTIONS(608), 1, + anon_sym_LBRACK, + ACTIONS(610), 1, + anon_sym_await, + STATE(627), 1, + sym_template_string, + STATE(698), 1, + sym_string, + STATE(761), 1, + sym_primary_expression, + ACTIONS(309), 2, + sym_ellipsis, + sym_float, + ACTIONS(606), 3, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_TILDE, + ACTIONS(311), 5, + sym_integer, + sym_identifier, + sym_true, + sym_false, + sym_none, + ACTIONS(583), 6, + anon_sym_lazy, + anon_sym_print, + anon_sym_async, + anon_sym_match, + anon_sym_exec, + anon_sym_type, + STATE(734), 17, + 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_concatenated_template_string, + sym_await, + [42733] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(616), 1, @@ -59482,11 +59688,11 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(632), 1, sym__template_string_start, - STATE(781), 1, + STATE(771), 1, sym_string, - STATE(782), 1, + STATE(772), 1, sym_template_string, - STATE(811), 1, + STATE(812), 1, sym_primary_expression, ACTIONS(626), 2, sym_ellipsis, @@ -59508,7 +59714,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(879), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59526,7 +59732,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42591] = 15, + [42807] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59535,22 +59741,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(758), 1, + STATE(698), 1, + sym_string, + STATE(764), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59567,7 +59773,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59585,48 +59791,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42665] = 15, + [42881] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(53), 1, anon_sym_LBRACE, - ACTIONS(315), 1, + ACTIONS(83), 1, sym__string_start, - ACTIONS(317), 1, + ACTIONS(85), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(575), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(579), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(581), 1, anon_sym_await, - STATE(694), 1, + STATE(783), 1, sym_string, - STATE(698), 1, + STATE(784), 1, sym_template_string, - STATE(759), 1, + STATE(809), 1, sym_primary_expression, - ACTIONS(309), 2, + ACTIONS(77), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(49), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(311), 5, + ACTIONS(79), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(583), 6, + ACTIONS(573), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(905), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59644,7 +59850,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42739] = 15, + [42955] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59653,22 +59859,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(666), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(760), 1, + STATE(698), 1, + sym_string, + STATE(822), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59685,7 +59891,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59703,7 +59909,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42813] = 15, + [43029] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59712,22 +59918,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(666), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(761), 1, + STATE(698), 1, + sym_string, + STATE(823), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59744,7 +59950,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59762,48 +59968,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42887] = 15, + [43103] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(662), 1, - anon_sym_await, - ACTIONS(664), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(790), 1, - sym_string, - STATE(791), 1, + ACTIONS(658), 1, + anon_sym_LPAREN, + ACTIONS(664), 1, + anon_sym_LBRACK, + ACTIONS(666), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(862), 1, + STATE(698), 1, + sym_string, + STATE(824), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59821,56 +60027,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [42961] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1527), 1, - sym__string_start, - STATE(685), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1525), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1523), 33, - 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, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [43015] = 15, + [43177] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59879,22 +60036,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(666), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(762), 1, + STATE(698), 1, + sym_string, + STATE(825), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59911,7 +60068,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59929,7 +60086,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [43089] = 15, + [43251] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59938,22 +60095,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(666), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(763), 1, + STATE(698), 1, + sym_string, + STATE(826), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -59970,7 +60127,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -59988,7 +60145,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [43163] = 15, + [43325] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -59997,22 +60154,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(585), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(596), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(600), 1, + ACTIONS(666), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(765), 1, + STATE(698), 1, + sym_string, + STATE(827), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(301), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -60029,7 +60186,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -60047,48 +60204,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [43237] = 15, + [43399] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(616), 1, - anon_sym_LPAREN, - ACTIONS(622), 1, - anon_sym_LBRACK, - ACTIONS(624), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(628), 1, - anon_sym_await, - ACTIONS(630), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(632), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(781), 1, - sym_string, - STATE(782), 1, + ACTIONS(658), 1, + anon_sym_LPAREN, + ACTIONS(664), 1, + anon_sym_LBRACK, + ACTIONS(666), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(812), 1, + STATE(698), 1, + sym_string, + STATE(828), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -60106,97 +60263,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [43311] = 5, + [43473] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(315), 1, - sym__string_start, - STATE(685), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1532), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1530), 33, - 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, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [43365] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(53), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(83), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(85), 1, + ACTIONS(317), 1, sym__template_string_start, - ACTIONS(575), 1, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(579), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(581), 1, + ACTIONS(666), 1, anon_sym_await, - STATE(772), 1, + STATE(627), 1, sym_template_string, - STATE(779), 1, + STATE(698), 1, sym_string, - STATE(807), 1, + STATE(829), 1, sym_primary_expression, - ACTIONS(77), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(49), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(79), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(573), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(950), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -60214,7 +60322,7 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [43439] = 15, + [43547] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(293), 1, @@ -60229,11 +60337,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(610), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(748), 1, + STATE(698), 1, + sym_string, + STATE(754), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, @@ -60255,7 +60363,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -60273,146 +60381,48 @@ static const uint16_t ts_small_parse_table[] = { sym_concatenated_string, sym_concatenated_template_string, sym_await, - [43513] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(317), 1, - sym__template_string_start, - STATE(627), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1536), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1534), 33, - 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, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [43567] = 5, + [43621] = 15, ACTIONS(3), 1, sym_comment, + ACTIONS(293), 1, + anon_sym_LBRACE, ACTIONS(315), 1, sym__string_start, - STATE(690), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1209), 6, - anon_sym_as, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1204), 33, - 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, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [43621] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(616), 1, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(658), 1, anon_sym_LPAREN, - ACTIONS(622), 1, + ACTIONS(664), 1, anon_sym_LBRACK, - ACTIONS(624), 1, - anon_sym_LBRACE, - ACTIONS(628), 1, + ACTIONS(666), 1, anon_sym_await, - ACTIONS(630), 1, - sym__string_start, - ACTIONS(632), 1, - sym__template_string_start, - STATE(781), 1, - sym_string, - STATE(782), 1, + STATE(627), 1, sym_template_string, - STATE(810), 1, + STATE(698), 1, + sym_string, + STATE(830), 1, sym_primary_expression, - ACTIONS(626), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(620), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(612), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(614), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(949), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -60433,45 +60443,45 @@ static const uint16_t ts_small_parse_table[] = { [43695] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(662), 1, - anon_sym_await, - ACTIONS(664), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(790), 1, - sym_string, - STATE(791), 1, + ACTIONS(658), 1, + anon_sym_LPAREN, + ACTIONS(664), 1, + anon_sym_LBRACK, + ACTIONS(666), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(856), 1, + STATE(698), 1, + sym_string, + STATE(831), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -60492,45 +60502,45 @@ static const uint16_t ts_small_parse_table[] = { [43769] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(650), 1, - anon_sym_LPAREN, - ACTIONS(656), 1, - anon_sym_LBRACK, - ACTIONS(658), 1, + ACTIONS(293), 1, anon_sym_LBRACE, - ACTIONS(662), 1, - anon_sym_await, - ACTIONS(664), 1, + ACTIONS(315), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(317), 1, sym__template_string_start, - STATE(790), 1, - sym_string, - STATE(791), 1, + ACTIONS(658), 1, + anon_sym_LPAREN, + ACTIONS(664), 1, + anon_sym_LBRACK, + ACTIONS(666), 1, + anon_sym_await, + STATE(627), 1, sym_template_string, - STATE(844), 1, + STATE(698), 1, + sym_string, + STATE(833), 1, sym_primary_expression, - ACTIONS(660), 2, + ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(654), 3, + ACTIONS(662), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, - ACTIONS(646), 5, + ACTIONS(311), 5, sym_integer, sym_identifier, sym_true, sym_false, sym_none, - ACTIONS(648), 6, + ACTIONS(583), 6, anon_sym_lazy, anon_sym_print, anon_sym_async, anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(985), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -60551,19 +60561,19 @@ static const uint16_t ts_small_parse_table[] = { [43843] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(317), 1, - sym__template_string_start, - STATE(693), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1209), 6, + ACTIONS(315), 1, + sym__string_start, + STATE(630), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1241), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 33, + ACTIONS(1236), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60606,22 +60616,22 @@ static const uint16_t ts_small_parse_table[] = { sym__string_start, ACTIONS(317), 1, sym__template_string_start, - ACTIONS(636), 1, + ACTIONS(602), 1, anon_sym_LPAREN, - ACTIONS(642), 1, + ACTIONS(608), 1, anon_sym_LBRACK, - ACTIONS(644), 1, + ACTIONS(610), 1, anon_sym_await, - STATE(694), 1, - sym_string, - STATE(698), 1, + STATE(627), 1, sym_template_string, - STATE(822), 1, + STATE(698), 1, + sym_string, + STATE(760), 1, sym_primary_expression, ACTIONS(309), 2, sym_ellipsis, sym_float, - ACTIONS(640), 3, + ACTIONS(606), 3, anon_sym_DASH, anon_sym_PLUS, anon_sym_TILDE, @@ -60638,7 +60648,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_match, anon_sym_exec, anon_sym_type, - STATE(720), 17, + STATE(734), 17, sym_binary_operator, sym_unary_operator, sym_attribute, @@ -60667,7 +60677,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT, anon_sym_GT, ACTIONS(1538), 34, - sym__template_string_start, + sym__string_start, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60712,7 +60722,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT, anon_sym_GT, ACTIONS(1542), 34, - sym__template_string_start, + sym__string_start, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60757,7 +60767,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT, anon_sym_GT, ACTIONS(1546), 34, - sym__string_start, + sym__template_string_start, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60802,7 +60812,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT, anon_sym_GT, ACTIONS(1550), 34, - sym__string_start, + sym__template_string_start, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -60836,139 +60846,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44163] = 20, + [44163] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, - anon_sym_DOT, - ACTIONS(1556), 1, - anon_sym_LPAREN, - ACTIONS(1566), 1, - anon_sym_PIPE, - ACTIONS(1570), 1, - anon_sym_LBRACK, - ACTIONS(1572), 1, - anon_sym_STAR_STAR, - ACTIONS(1574), 1, - anon_sym_EQ, - ACTIONS(1578), 1, - anon_sym_not, - ACTIONS(1580), 1, - anon_sym_AMP, - ACTIONS(1582), 1, - anon_sym_CARET, - ACTIONS(1586), 1, - anon_sym_is, - STATE(997), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1560), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1562), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1568), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1584), 2, - anon_sym_LT, - anon_sym_GT, - STATE(708), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1576), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1564), 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(1558), 9, - 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, - [44244] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1554), 1, - anon_sym_DOT, - ACTIONS(1556), 1, - anon_sym_LPAREN, - ACTIONS(1570), 1, - anon_sym_LBRACK, - ACTIONS(1574), 1, - anon_sym_as, - ACTIONS(1594), 1, - anon_sym_PIPE, - ACTIONS(1598), 1, - anon_sym_STAR_STAR, - ACTIONS(1602), 1, - anon_sym_not, - ACTIONS(1604), 1, - anon_sym_AMP, - ACTIONS(1606), 1, - anon_sym_CARET, - ACTIONS(1610), 1, - anon_sym_is, - STATE(998), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1588), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1590), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1596), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1608), 2, - anon_sym_LT, - anon_sym_GT, - STATE(708), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1600), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1592), 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(1558), 9, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_and, - anon_sym_or, - [44325] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(272), 6, + ACTIONS(1556), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 33, + ACTIONS(1554), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61002,17 +60890,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44372] = 3, + [44210] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1614), 6, + ACTIONS(1560), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1612), 33, + ACTIONS(1558), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61046,17 +60934,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44419] = 3, + [44257] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1618), 6, + ACTIONS(1564), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1616), 33, + ACTIONS(1562), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61090,25 +60978,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44466] = 3, + [44304] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1622), 6, + ACTIONS(1478), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1620), 33, + ACTIONS(1473), 33, 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, @@ -61134,25 +61020,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44513] = 3, + anon_sym_COLON2, + sym_type_conversion, + [44351] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1626), 6, + ACTIONS(1311), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1624), 33, + ACTIONS(1306), 33, 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, @@ -61178,17 +61064,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44560] = 3, + anon_sym_COLON2, + sym_type_conversion, + [44398] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1630), 6, + ACTIONS(1568), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1628), 33, + ACTIONS(1566), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61222,17 +61110,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44607] = 3, + [44445] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1634), 6, + ACTIONS(1572), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1632), 33, + ACTIONS(1570), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61266,17 +61154,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44654] = 3, + [44492] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1638), 6, + ACTIONS(1576), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1636), 33, + ACTIONS(1574), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61310,17 +61198,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44701] = 3, + [44539] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1642), 6, + ACTIONS(1580), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1640), 33, + ACTIONS(1578), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61354,17 +61242,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44748] = 3, + [44586] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1646), 6, + ACTIONS(1584), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1644), 33, + ACTIONS(1582), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61398,17 +61286,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44795] = 3, + [44633] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1650), 6, + ACTIONS(272), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1648), 33, + ACTIONS(303), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61442,17 +61330,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44842] = 3, + [44680] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1654), 6, + ACTIONS(1588), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1652), 33, + ACTIONS(1586), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61486,17 +61374,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44889] = 3, + [44727] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1658), 6, + ACTIONS(1592), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1656), 33, + ACTIONS(1590), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61530,17 +61418,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44936] = 3, + [44774] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1662), 6, + ACTIONS(1596), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1660), 33, + ACTIONS(1594), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61574,17 +61462,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [44983] = 3, + [44821] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1209), 6, + ACTIONS(1592), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 33, + ACTIONS(1590), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61618,17 +61506,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45030] = 3, + [44868] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1666), 6, + ACTIONS(1600), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1664), 33, + ACTIONS(1598), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61662,17 +61550,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45077] = 3, + [44915] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1670), 6, + ACTIONS(1604), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1668), 33, + ACTIONS(1602), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61706,17 +61594,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45124] = 3, + [44962] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1674), 6, + ACTIONS(1592), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1672), 33, + ACTIONS(1590), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61750,17 +61638,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45171] = 3, + [45009] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1678), 6, + ACTIONS(1608), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1676), 33, + ACTIONS(1606), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61794,17 +61682,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45218] = 3, + [45056] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1682), 6, + ACTIONS(1612), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1680), 33, + ACTIONS(1610), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61838,17 +61726,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45265] = 3, + [45103] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1686), 6, + ACTIONS(1616), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1684), 33, + ACTIONS(1614), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61882,17 +61770,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45312] = 3, + [45150] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 6, + ACTIONS(1620), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 33, + ACTIONS(1618), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61926,17 +61814,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45359] = 3, + [45197] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 6, + ACTIONS(1624), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 33, + ACTIONS(1622), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -61970,17 +61858,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45406] = 3, + [45244] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1694), 6, + ACTIONS(1628), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1692), 33, + ACTIONS(1626), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -62014,17 +61902,78 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45453] = 3, + [45291] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1698), 6, + ACTIONS(1630), 1, + anon_sym_DOT, + ACTIONS(1632), 1, + anon_sym_LPAREN, + ACTIONS(1642), 1, + anon_sym_PIPE, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1648), 1, + anon_sym_STAR_STAR, + ACTIONS(1650), 1, + anon_sym_EQ, + ACTIONS(1654), 1, + anon_sym_not, + ACTIONS(1656), 1, + anon_sym_AMP, + ACTIONS(1658), 1, + anon_sym_CARET, + ACTIONS(1662), 1, + anon_sym_is, + STATE(999), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1636), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1638), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1644), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1660), 2, + anon_sym_LT, + anon_sym_GT, + STATE(731), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1652), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1640), 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(1634), 9, + 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, + [45372] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1666), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1696), 33, + ACTIONS(1664), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -62058,17 +62007,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45500] = 3, + [45419] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 6, + ACTIONS(1670), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 33, + ACTIONS(1668), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -62102,17 +62051,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45547] = 3, + [45466] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 6, + ACTIONS(1674), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 33, + ACTIONS(1672), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -62146,17 +62095,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45594] = 3, + [45513] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 6, + ACTIONS(1678), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 33, + ACTIONS(1676), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -62190,17 +62139,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45641] = 3, + [45560] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1706), 6, + ACTIONS(1682), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1704), 33, + ACTIONS(1680), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -62234,17 +62183,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45688] = 3, + [45607] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 6, + ACTIONS(1241), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 33, + ACTIONS(1236), 33, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -62278,23 +62227,86 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, + [45654] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1630), 1, + anon_sym_DOT, + ACTIONS(1632), 1, + anon_sym_LPAREN, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1650), 1, + anon_sym_as, + ACTIONS(1690), 1, + anon_sym_PIPE, + ACTIONS(1694), 1, + anon_sym_STAR_STAR, + ACTIONS(1698), 1, + anon_sym_not, + ACTIONS(1700), 1, + anon_sym_AMP, + ACTIONS(1702), 1, + anon_sym_CARET, + ACTIONS(1706), 1, + anon_sym_is, + STATE(998), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1684), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1686), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1692), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1704), 2, + anon_sym_LT, + anon_sym_GT, + STATE(731), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1696), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1688), 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(1634), 9, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, [45735] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1338), 6, + ACTIONS(1576), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1333), 33, + ACTIONS(1574), 33, 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, @@ -62320,25 +62332,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, [45782] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1295), 6, + ACTIONS(1576), 6, anon_sym_as, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1290), 33, + ACTIONS(1574), 33, 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, @@ -62364,8 +62376,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, [45829] = 3, ACTIONS(3), 1, sym_comment, @@ -62410,98 +62420,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [45876] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1554), 1, - anon_sym_DOT, - ACTIONS(1556), 1, - anon_sym_LPAREN, - ACTIONS(1570), 1, - anon_sym_LBRACK, - ACTIONS(1572), 1, - anon_sym_STAR_STAR, - ACTIONS(1580), 1, - anon_sym_AMP, - ACTIONS(1582), 1, - anon_sym_CARET, - ACTIONS(1560), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1562), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1568), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(708), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1576), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1714), 3, - anon_sym_EQ, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1712), 18, - 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, - [45944] = 15, + [45876] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1594), 1, + ACTIONS(1690), 1, anon_sym_PIPE, - ACTIONS(1598), 1, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - ACTIONS(1604), 1, + ACTIONS(1700), 1, anon_sym_AMP, - ACTIONS(1606), 1, + ACTIONS(1702), 1, anon_sym_CARET, - ACTIONS(1588), 2, + ACTIONS(1684), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1590), 2, + ACTIONS(1686), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1596), 2, + ACTIONS(1692), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1600), 3, + ACTIONS(1696), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1718), 3, + ACTIONS(1714), 3, anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1716), 17, + ACTIONS(1712), 17, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -62519,49 +62475,49 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46014] = 15, + [45946] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, - anon_sym_LBRACK, - ACTIONS(1594), 1, + ACTIONS(1642), 1, anon_sym_PIPE, - ACTIONS(1598), 1, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - ACTIONS(1604), 1, + ACTIONS(1656), 1, anon_sym_AMP, - ACTIONS(1606), 1, + ACTIONS(1658), 1, anon_sym_CARET, - ACTIONS(1588), 2, + ACTIONS(1636), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1590), 2, + ACTIONS(1638), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1596), 2, + ACTIONS(1644), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1600), 3, + ACTIONS(1652), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1722), 3, - anon_sym_as, + ACTIONS(1718), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1720), 17, + ACTIONS(1716), 17, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_in, anon_sym_RBRACK, anon_sym_RBRACE, @@ -62574,137 +62530,88 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46084] = 14, + [46016] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1642), 1, + anon_sym_PIPE, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1598), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - ACTIONS(1604), 1, + ACTIONS(1656), 1, anon_sym_AMP, - ACTIONS(1606), 1, + ACTIONS(1658), 1, anon_sym_CARET, - ACTIONS(1588), 2, + ACTIONS(1636), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1590), 2, + ACTIONS(1638), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1596), 2, + ACTIONS(1644), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1600), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1714), 3, - anon_sym_as, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1712), 18, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - 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_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - anon_sym_is, - [46152] = 10, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1554), 1, - anon_sym_DOT, - ACTIONS(1556), 1, - anon_sym_LPAREN, - ACTIONS(1570), 1, - anon_sym_LBRACK, - ACTIONS(1598), 1, - anon_sym_STAR_STAR, - ACTIONS(1588), 2, - anon_sym_STAR, - anon_sym_SLASH, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1600), 3, + ACTIONS(1652), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1714), 3, - anon_sym_as, + ACTIONS(1722), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 24, + ACTIONS(1720), 17, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, + 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_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, - [46212] = 8, + [46086] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1598), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 5, - anon_sym_as, + ACTIONS(1726), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 27, + ACTIONS(1724), 27, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -62726,45 +62633,41 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46268] = 13, + [46142] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1598), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - ACTIONS(1606), 1, - anon_sym_CARET, - ACTIONS(1588), 2, + ACTIONS(1636), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1590), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1596), 2, + ACTIONS(1644), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1600), 3, + ACTIONS(1652), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1714), 3, - anon_sym_as, + ACTIONS(1726), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 19, + ACTIONS(1724), 22, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_in, anon_sym_PIPE, anon_sym_RBRACK, @@ -62773,97 +62676,99 @@ 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, - [46334] = 12, + [46204] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1642), 1, + anon_sym_PIPE, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1598), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - ACTIONS(1588), 2, + ACTIONS(1656), 1, + anon_sym_AMP, + ACTIONS(1658), 1, + anon_sym_CARET, + ACTIONS(1636), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1590), 2, + ACTIONS(1638), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1596), 2, + ACTIONS(1644), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1600), 3, + ACTIONS(1652), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, ACTIONS(1714), 3, - anon_sym_as, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 20, + ACTIONS(1712), 17, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_async, - anon_sym_for, + 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, - [46398] = 8, + [46274] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, - anon_sym_DOT, - ACTIONS(1556), 1, - anon_sym_LPAREN, - ACTIONS(1570), 1, - anon_sym_LBRACK, - ACTIONS(1598), 1, - anon_sym_STAR_STAR, - STATE(708), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1726), 5, - anon_sym_as, + ACTIONS(1728), 1, + sym__template_string_start, + STATE(745), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1533), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1724), 27, + ACTIONS(1531), 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_async, - anon_sym_for, + 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, @@ -62879,33 +62784,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46454] = 8, + [46324] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1598), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1730), 5, - anon_sym_as, + ACTIONS(1733), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1728), 27, + ACTIONS(1731), 27, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -62927,36 +62832,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46510] = 5, + [46380] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, - sym__string_start, - STATE(753), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1532), 4, + ACTIONS(1630), 1, + anon_sym_DOT, + ACTIONS(1632), 1, + anon_sym_LPAREN, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1648), 1, + anon_sym_STAR_STAR, + STATE(731), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1737), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1530), 31, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1735), 27, 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, @@ -62972,128 +62880,133 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46560] = 5, + [46436] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(666), 1, - sym__template_string_start, - STATE(754), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1536), 4, + ACTIONS(1630), 1, + anon_sym_DOT, + ACTIONS(1632), 1, + anon_sym_LPAREN, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1648), 1, + anon_sym_STAR_STAR, + ACTIONS(1656), 1, + anon_sym_AMP, + ACTIONS(1658), 1, + anon_sym_CARET, + ACTIONS(1636), 2, anon_sym_STAR, anon_sym_SLASH, + ACTIONS(1638), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1644), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(731), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1652), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1726), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1534), 31, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1724), 18, 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, - [46610] = 8, + [46504] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1598), 1, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - STATE(708), 2, + ACTIONS(1684), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1686), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1692), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 5, + ACTIONS(1696), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1726), 3, anon_sym_as, - anon_sym_STAR, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 27, + ACTIONS(1724), 20, 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_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, - [46666] = 11, + [46568] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1598), 1, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - ACTIONS(1588), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1596), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1600), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1714), 3, + ACTIONS(1726), 5, anon_sym_as, + anon_sym_STAR, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 22, + ACTIONS(1724), 27, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -63102,11 +63015,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, @@ -63116,36 +63034,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46728] = 5, + [46624] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1732), 1, - sym__string_start, - STATE(753), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1525), 4, + ACTIONS(1630), 1, + anon_sym_DOT, + ACTIONS(1632), 1, + anon_sym_LPAREN, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1694), 1, + anon_sym_STAR_STAR, + STATE(731), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1733), 5, + anon_sym_as, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1523), 31, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1731), 27, 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, 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, @@ -63161,42 +63082,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46778] = 5, + [46680] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1735), 1, - sym__template_string_start, - STATE(754), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1512), 4, + ACTIONS(1630), 1, + anon_sym_DOT, + ACTIONS(1632), 1, + anon_sym_LPAREN, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1694), 1, + anon_sym_STAR_STAR, + ACTIONS(1684), 2, anon_sym_STAR, anon_sym_SLASH, + ACTIONS(1692), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(731), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1696), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1726), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1510), 31, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1724), 22, 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, - 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, @@ -63206,33 +63133,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46828] = 8, + [46742] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 5, + ACTIONS(1737), 5, + anon_sym_as, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 27, + ACTIONS(1735), 27, 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, @@ -63254,41 +63181,45 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [46884] = 11, + [46798] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - ACTIONS(1560), 2, + ACTIONS(1702), 1, + anon_sym_CARET, + ACTIONS(1684), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1568), 2, + ACTIONS(1686), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1692), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1576), 3, + ACTIONS(1696), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1714), 3, - anon_sym_EQ, + ACTIONS(1726), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 22, + ACTIONS(1724), 19, 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_RBRACK, @@ -63297,110 +63228,152 @@ 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, - [46946] = 15, + [46864] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1566), 1, - anon_sym_PIPE, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - ACTIONS(1580), 1, - anon_sym_AMP, - ACTIONS(1582), 1, - anon_sym_CARET, - ACTIONS(1560), 2, + ACTIONS(1636), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1562), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1568), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1576), 3, + ACTIONS(1652), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1740), 3, + ACTIONS(1726), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1738), 17, + ACTIONS(1724), 24, 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_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, - [47016] = 10, + [46924] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - ACTIONS(1560), 2, + ACTIONS(1700), 1, + anon_sym_AMP, + ACTIONS(1702), 1, + anon_sym_CARET, + ACTIONS(1684), 2, anon_sym_STAR, anon_sym_SLASH, - STATE(708), 2, + ACTIONS(1686), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1692), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1576), 3, + ACTIONS(1696), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1714), 3, - anon_sym_EQ, + ACTIONS(1726), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 24, + ACTIONS(1724), 18, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_if, + 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_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_GT_EQ, + anon_sym_LT_GT, + anon_sym_is, + [46992] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1739), 1, + sym__string_start, + STATE(757), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1526), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1524), 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, 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, @@ -63410,27 +63383,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47076] = 8, + [47042] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 5, + ACTIONS(1726), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 27, + ACTIONS(1724), 27, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -63458,303 +63431,291 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47132] = 13, + [47098] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1690), 1, + anon_sym_PIPE, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - ACTIONS(1582), 1, + ACTIONS(1700), 1, + anon_sym_AMP, + ACTIONS(1702), 1, anon_sym_CARET, - ACTIONS(1560), 2, + ACTIONS(1684), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1562), 2, + ACTIONS(1686), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1568), 2, + ACTIONS(1692), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1576), 3, + ACTIONS(1696), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1714), 3, - anon_sym_EQ, + ACTIONS(1718), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 19, + ACTIONS(1716), 17, 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, - [47198] = 12, + [47168] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1690), 1, + anon_sym_PIPE, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - ACTIONS(1560), 2, + ACTIONS(1700), 1, + anon_sym_AMP, + ACTIONS(1702), 1, + anon_sym_CARET, + ACTIONS(1684), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1562), 2, + ACTIONS(1686), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1568), 2, + ACTIONS(1692), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1576), 3, + ACTIONS(1696), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1714), 3, - anon_sym_EQ, + ACTIONS(1722), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 20, + ACTIONS(1720), 17, 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_CARET, anon_sym_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47262] = 15, + [47238] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1566), 1, - anon_sym_PIPE, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - ACTIONS(1580), 1, - anon_sym_AMP, - ACTIONS(1582), 1, - anon_sym_CARET, - ACTIONS(1560), 2, + ACTIONS(1684), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1562), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1568), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1576), 3, + ACTIONS(1696), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1718), 3, - anon_sym_EQ, + ACTIONS(1726), 3, + anon_sym_as, anon_sym_LT, anon_sym_GT, - ACTIONS(1716), 17, + ACTIONS(1724), 24, 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_RBRACK, anon_sym_RBRACE, 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, - [47332] = 15, + [47298] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, - anon_sym_DOT, - ACTIONS(1556), 1, - anon_sym_LPAREN, - ACTIONS(1566), 1, - anon_sym_PIPE, - ACTIONS(1570), 1, - anon_sym_LBRACK, - ACTIONS(1572), 1, - anon_sym_STAR_STAR, - ACTIONS(1580), 1, - anon_sym_AMP, - ACTIONS(1582), 1, - anon_sym_CARET, - ACTIONS(1560), 2, + ACTIONS(654), 1, + sym__template_string_start, + STATE(745), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1522), 4, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1562), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1568), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(708), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1576), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1722), 3, - anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1720), 17, + ACTIONS(1520), 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, + 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, - [47402] = 15, + [47348] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1594), 1, - anon_sym_PIPE, - ACTIONS(1598), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - ACTIONS(1604), 1, - anon_sym_AMP, - ACTIONS(1606), 1, + ACTIONS(1658), 1, anon_sym_CARET, - ACTIONS(1588), 2, + ACTIONS(1636), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1590), 2, + ACTIONS(1638), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1596), 2, + ACTIONS(1644), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1600), 3, + ACTIONS(1652), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1740), 3, - anon_sym_as, + ACTIONS(1726), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1738), 17, + ACTIONS(1724), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_async, - anon_sym_for, + 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_LT_EQ, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47472] = 8, + [47414] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1694), 1, anon_sym_STAR_STAR, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1730), 5, + ACTIONS(1726), 5, + anon_sym_as, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1728), 27, + ACTIONS(1724), 27, 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, @@ -63776,64 +63737,72 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47528] = 8, + [47470] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - STATE(708), 2, + ACTIONS(1636), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1638), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1644), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1726), 5, - anon_sym_STAR, + ACTIONS(1652), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1726), 3, anon_sym_EQ, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1724), 27, + ACTIONS(1724), 20, 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, anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47584] = 3, + [47534] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1338), 5, + ACTIONS(652), 1, + sym__string_start, + STATE(757), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1518), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1333), 32, + ACTIONS(1516), 31, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -63842,7 +63811,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, - anon_sym_else, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -63866,31 +63834,89 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [47629] = 5, + [47584] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(1742), 1, - sym__string_start, - STATE(768), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1525), 5, + ACTIONS(1630), 1, + anon_sym_DOT, + ACTIONS(1632), 1, + anon_sym_LPAREN, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1748), 1, + anon_sym_PIPE, + ACTIONS(1752), 1, + anon_sym_STAR_STAR, + ACTIONS(1756), 1, + anon_sym_not, + ACTIONS(1758), 1, + anon_sym_AMP, + ACTIONS(1760), 1, + anon_sym_CARET, + ACTIONS(1764), 1, + anon_sym_is, + STATE(1010), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1742), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1744), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1750), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1762), 2, + anon_sym_LT, + anon_sym_GT, + STATE(731), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1754), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1746), 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(1634), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, + [47661] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1311), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1523), 29, + ACTIONS(1306), 32, 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, anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, @@ -63908,33 +63934,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [47678] = 5, + [47706] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1745), 1, - sym__template_string_start, - STATE(769), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1512), 5, + ACTIONS(590), 1, + anon_sym_COLON_EQ, + ACTIONS(272), 6, anon_sym_STAR, + anon_sym_COLON, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1510), 29, + ACTIONS(303), 30, anon_sym_DOT, 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, @@ -63952,26 +63977,81 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, + [47753] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1650), 1, + anon_sym_EQ, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1768), 1, + anon_sym_LPAREN, + ACTIONS(1776), 1, + anon_sym_PIPE, + ACTIONS(1780), 1, + anon_sym_LBRACK, + ACTIONS(1782), 1, + anon_sym_STAR_STAR, + ACTIONS(1786), 1, + anon_sym_not, + ACTIONS(1788), 1, + anon_sym_AMP, + ACTIONS(1790), 1, + anon_sym_CARET, + ACTIONS(1794), 1, + anon_sym_is, + STATE(1004), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1770), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1772), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1778), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(1792), 2, + anon_sym_LT, + anon_sym_GT, + STATE(910), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1784), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1774), 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(1634), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_RBRACE, + anon_sym_and, + anon_sym_or, anon_sym_COLON2, sym_type_conversion, - [47727] = 5, + [47832] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(83), 1, + ACTIONS(630), 1, sym__string_start, - STATE(776), 2, + STATE(774), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1532), 5, + ACTIONS(1241), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1530), 29, - sym__newline, + ACTIONS(1236), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -63981,6 +64061,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -63997,25 +64078,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [47776] = 5, + anon_sym_COLON2, + sym_type_conversion, + [47881] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(85), 1, + ACTIONS(632), 1, sym__template_string_start, - STATE(777), 2, + STATE(775), 2, sym_template_string, aux_sym_concatenated_template_string_repeat1, - ACTIONS(1536), 5, + ACTIONS(1241), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1534), 29, - sym__newline, + ACTIONS(1236), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -64025,6 +64105,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -64041,34 +64122,35 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [47825] = 5, + anon_sym_COLON2, + sym_type_conversion, + [47930] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(85), 1, - sym__template_string_start, - STATE(771), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1209), 5, + ACTIONS(1488), 1, + anon_sym_COLON_EQ, + ACTIONS(1241), 6, anon_sym_STAR, + anon_sym_COLON, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, - sym__newline, + ACTIONS(1236), 30, 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, @@ -64085,92 +64167,75 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [47874] = 20, + [47977] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1574), 1, + ACTIONS(630), 1, + sym__string_start, + STATE(776), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1518), 5, + anon_sym_STAR, anon_sym_EQ, - ACTIONS(1748), 1, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1516), 29, anon_sym_DOT, - ACTIONS(1750), 1, anon_sym_LPAREN, - ACTIONS(1758), 1, + anon_sym_COMMA, + anon_sym_GT_GT, + anon_sym_if, + anon_sym_in, anon_sym_PIPE, - ACTIONS(1762), 1, + anon_sym_DASH, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1764), 1, + anon_sym_RBRACE, anon_sym_STAR_STAR, - ACTIONS(1768), 1, + anon_sym_AT, anon_sym_not, - ACTIONS(1770), 1, + anon_sym_and, + anon_sym_or, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, anon_sym_AMP, - ACTIONS(1772), 1, anon_sym_CARET, - ACTIONS(1776), 1, - anon_sym_is, - STATE(1008), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1752), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1754), 2, - anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1760), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1774), 2, - anon_sym_LT, - anon_sym_GT, - STATE(895), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1766), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1756), 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(1558), 7, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_if, - anon_sym_and, - anon_sym_or, - anon_sym_SEMI, - [47953] = 4, + anon_sym_is, + anon_sym_COLON2, + sym_type_conversion, + [48026] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_COLON_EQ, - ACTIONS(272), 6, + ACTIONS(632), 1, + sym__template_string_start, + STATE(777), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1522), 5, anon_sym_STAR, - anon_sym_COLON, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 30, + ACTIONS(1520), 29, anon_sym_DOT, 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, @@ -64188,82 +64253,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [48000] = 19, + anon_sym_COLON2, + sym_type_conversion, + [48075] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, - anon_sym_DOT, - ACTIONS(1556), 1, - anon_sym_LPAREN, - ACTIONS(1570), 1, - anon_sym_LBRACK, - ACTIONS(1784), 1, - anon_sym_PIPE, - ACTIONS(1788), 1, - anon_sym_STAR_STAR, - ACTIONS(1792), 1, - anon_sym_not, - ACTIONS(1794), 1, - anon_sym_AMP, ACTIONS(1796), 1, - anon_sym_CARET, - ACTIONS(1800), 1, - anon_sym_is, - STATE(1014), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1778), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1780), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1786), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(1798), 2, - anon_sym_LT, - anon_sym_GT, - STATE(708), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1790), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1782), 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(1558), 8, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACE, - anon_sym_and, - anon_sym_or, - [48077] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1802), 1, sym__string_start, STATE(776), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1525), 5, + ACTIONS(1526), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1523), 29, - sym__newline, + ACTIONS(1524), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -64273,6 +64280,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -64289,25 +64297,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [48126] = 5, + anon_sym_COLON2, + sym_type_conversion, + [48124] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1805), 1, + ACTIONS(1799), 1, sym__template_string_start, STATE(777), 2, sym_template_string, aux_sym_concatenated_template_string_repeat1, - ACTIONS(1512), 5, + ACTIONS(1533), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1510), 29, - sym__newline, + ACTIONS(1531), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -64317,6 +64324,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -64333,34 +64341,35 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [48175] = 4, + anon_sym_COLON2, + sym_type_conversion, + [48173] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1488), 1, - anon_sym_COLON_EQ, - ACTIONS(1209), 6, + ACTIONS(1802), 1, + sym__string_start, + STATE(778), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1526), 5, anon_sym_STAR, - anon_sym_COLON, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 30, + ACTIONS(1524), 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, @@ -64377,21 +64386,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, + anon_sym_SEMI, [48222] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(83), 1, - sym__string_start, - STATE(770), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1209), 5, + ACTIONS(1805), 1, + sym__template_string_start, + STATE(779), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1533), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, + ACTIONS(1531), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -64424,7 +64434,7 @@ static const uint16_t ts_small_parse_table[] = { [48271] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1574), 1, + ACTIONS(1650), 1, anon_sym_EQ, ACTIONS(1808), 1, anon_sym_DOT, @@ -64444,7 +64454,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_CARET, ACTIONS(1836), 1, anon_sym_is, - STATE(1004), 1, + STATE(1007), 1, aux_sym_comparison_operator_repeat1, ACTIONS(1812), 2, anon_sym_STAR, @@ -64458,7 +64468,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(1834), 2, anon_sym_LT, anon_sym_GT, - STATE(925), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, ACTIONS(1826), 3, @@ -64472,30 +64482,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_GT_EQ, anon_sym_LT_GT, - ACTIONS(1558), 7, + ACTIONS(1634), 7, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_if, - anon_sym_RBRACE, anon_sym_and, anon_sym_or, - anon_sym_COLON2, - sym_type_conversion, + anon_sym_SEMI, [48350] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(630), 1, + ACTIONS(83), 1, sym__string_start, - STATE(784), 2, + STATE(778), 2, sym_string, aux_sym_concatenated_string_repeat1, - ACTIONS(1209), 5, + ACTIONS(1518), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, + ACTIONS(1516), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -64505,7 +64517,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -64522,24 +64533,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, + anon_sym_SEMI, [48399] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(632), 1, + ACTIONS(85), 1, sym__template_string_start, - STATE(785), 2, + STATE(779), 2, sym_template_string, aux_sym_concatenated_template_string_repeat1, - ACTIONS(1209), 5, + ACTIONS(1522), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, + ACTIONS(1520), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -64549,7 +64561,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -64566,34 +64577,34 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48448] = 3, + anon_sym_SEMI, + [48448] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1295), 5, + ACTIONS(83), 1, + sym__string_start, + STATE(781), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1241), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1290), 32, + ACTIONS(1236), 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_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, @@ -64610,22 +64621,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [48493] = 5, + anon_sym_SEMI, + [48497] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(630), 1, - sym__string_start, - STATE(768), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1532), 5, + ACTIONS(85), 1, + sym__template_string_start, + STATE(782), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1241), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1530), 29, + ACTIONS(1236), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -64635,7 +64649,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -64652,33 +64665,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48542] = 5, + anon_sym_SEMI, + [48546] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(632), 1, - sym__template_string_start, - STATE(769), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1536), 5, + ACTIONS(1838), 1, + anon_sym_COLON_EQ, + ACTIONS(1241), 5, + anon_sym_as, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1534), 29, + ACTIONS(1236), 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, @@ -64696,20 +64709,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [48591] = 4, + [48593] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1838), 1, + ACTIONS(604), 1, anon_sym_COLON_EQ, - ACTIONS(1209), 5, + ACTIONS(272), 5, anon_sym_as, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 31, + ACTIONS(303), 31, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -64741,26 +64752,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [48638] = 4, + [48640] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(604), 1, - anon_sym_COLON_EQ, - ACTIONS(272), 5, - anon_sym_as, + ACTIONS(1478), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 31, + ACTIONS(1473), 32, anon_sym_DOT, anon_sym_LPAREN, 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_else, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -64787,37 +64797,37 @@ static const uint16_t ts_small_parse_table[] = { [48685] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1758), 1, + ACTIONS(1818), 1, anon_sym_PIPE, - ACTIONS(1762), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1770), 1, + ACTIONS(1830), 1, anon_sym_AMP, - ACTIONS(1772), 1, + ACTIONS(1832), 1, anon_sym_CARET, - ACTIONS(1752), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1754), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1760), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(895), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, ACTIONS(1722), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1766), 3, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, @@ -64837,97 +64847,90 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [48753] = 19, + [48753] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1840), 1, + ACTIONS(1766), 1, anon_sym_DOT, - ACTIONS(1842), 1, + ACTIONS(1768), 1, anon_sym_LPAREN, - ACTIONS(1850), 1, - anon_sym_PIPE, - ACTIONS(1854), 1, + ACTIONS(1780), 1, anon_sym_LBRACK, - ACTIONS(1856), 1, + ACTIONS(1782), 1, anon_sym_STAR_STAR, - ACTIONS(1860), 1, - anon_sym_not, - ACTIONS(1862), 1, - anon_sym_AMP, - ACTIONS(1864), 1, - anon_sym_CARET, - ACTIONS(1868), 1, - anon_sym_is, - STATE(1016), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1844), 2, + STATE(910), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1726), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, - ACTIONS(1846), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1724), 25, + anon_sym_COMMA, anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1852), 2, + anon_sym_if, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(1866), 2, - anon_sym_LT, - anon_sym_GT, - STATE(953), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1858), 3, + anon_sym_RBRACE, anon_sym_AT, + anon_sym_not, + anon_sym_and, + anon_sym_or, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1848), 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(1558), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_and, - anon_sym_or, - [48829] = 5, + anon_sym_is, + anon_sym_COLON2, + sym_type_conversion, + [48807] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, - sym__string_start, - STATE(749), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(1209), 4, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1768), 1, + anon_sym_LPAREN, + ACTIONS(1780), 1, + anon_sym_LBRACK, + ACTIONS(1782), 1, + anon_sym_STAR_STAR, + ACTIONS(1770), 2, anon_sym_STAR, anon_sym_SLASH, + ACTIONS(1778), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(910), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1726), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1784), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1724), 20, 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_RBRACE, 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, @@ -64937,122 +64940,150 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [48877] = 5, + anon_sym_COLON2, + sym_type_conversion, + [48867] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(666), 1, - sym__template_string_start, - STATE(750), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(1209), 4, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1768), 1, + anon_sym_LPAREN, + ACTIONS(1776), 1, + anon_sym_PIPE, + ACTIONS(1780), 1, + anon_sym_LBRACK, + ACTIONS(1782), 1, + anon_sym_STAR_STAR, + ACTIONS(1788), 1, + anon_sym_AMP, + ACTIONS(1790), 1, + anon_sym_CARET, + ACTIONS(1770), 2, anon_sym_STAR, anon_sym_SLASH, + ACTIONS(1772), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1778), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(910), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1714), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1784), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 15, 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_RBRACE, 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, - [48925] = 3, + anon_sym_COLON2, + sym_type_conversion, + [48935] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1548), 4, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1768), 1, + anon_sym_LPAREN, + ACTIONS(1780), 1, + anon_sym_LBRACK, + ACTIONS(1782), 1, + anon_sym_STAR_STAR, + ACTIONS(1788), 1, + anon_sym_AMP, + ACTIONS(1790), 1, + anon_sym_CARET, + ACTIONS(1770), 2, anon_sym_STAR, anon_sym_SLASH, + ACTIONS(1772), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1778), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(910), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1726), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1546), 32, - sym__string_start, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1784), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1724), 16, 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, - [48969] = 3, + anon_sym_COLON2, + sym_type_conversion, + [49001] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1544), 4, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1768), 1, + anon_sym_LPAREN, + ACTIONS(1780), 1, + anon_sym_LBRACK, + ACTIONS(1782), 1, + anon_sym_STAR_STAR, + ACTIONS(1770), 2, anon_sym_STAR, anon_sym_SLASH, + STATE(910), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1726), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1542), 32, - sym__template_string_start, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1784), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1724), 22, 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, @@ -65062,32 +65093,37 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49013] = 3, + anon_sym_COLON2, + sym_type_conversion, + [49059] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1552), 4, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1768), 1, + anon_sym_LPAREN, + ACTIONS(1780), 1, + anon_sym_LBRACK, + ACTIONS(1782), 1, + anon_sym_STAR_STAR, + STATE(910), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1726), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1550), 32, - sym__string_start, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1724), 25, 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, @@ -65103,185 +65139,204 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49057] = 3, + anon_sym_COLON2, + sym_type_conversion, + [49113] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1540), 4, + ACTIONS(1766), 1, + anon_sym_DOT, + ACTIONS(1768), 1, + anon_sym_LPAREN, + ACTIONS(1780), 1, + anon_sym_LBRACK, + ACTIONS(1782), 1, + anon_sym_STAR_STAR, + ACTIONS(1790), 1, + anon_sym_CARET, + ACTIONS(1770), 2, anon_sym_STAR, anon_sym_SLASH, + ACTIONS(1772), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1778), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(910), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1726), 3, + anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1538), 32, - sym__template_string_start, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, + ACTIONS(1784), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1724), 17, 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, - [49101] = 8, + anon_sym_COLON2, + sym_type_conversion, + [49177] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1766), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1768), 1, anon_sym_LPAREN, - ACTIONS(1762), 1, + ACTIONS(1780), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1782), 1, anon_sym_STAR_STAR, - STATE(895), 2, + ACTIONS(1770), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1772), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1778), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(910), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 5, - anon_sym_STAR, + ACTIONS(1726), 3, anon_sym_EQ, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 25, - sym__newline, - anon_sym_from, + ACTIONS(1784), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1724), 18, 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_RBRACE, 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, - anon_sym_SEMI, - [49155] = 11, + anon_sym_COLON2, + sym_type_conversion, + [49239] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1766), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1768), 1, anon_sym_LPAREN, - ACTIONS(1762), 1, + ACTIONS(1776), 1, + anon_sym_PIPE, + ACTIONS(1780), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1782), 1, anon_sym_STAR_STAR, - ACTIONS(1752), 2, + ACTIONS(1788), 1, + anon_sym_AMP, + ACTIONS(1790), 1, + anon_sym_CARET, + ACTIONS(1770), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1760), 2, + ACTIONS(1772), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1778), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(895), 2, + STATE(910), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 3, + ACTIONS(1718), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1766), 3, + ACTIONS(1784), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 20, - sym__newline, - anon_sym_from, + ACTIONS(1716), 15, anon_sym_COMMA, - anon_sym_GT_GT, anon_sym_if, anon_sym_in, - anon_sym_PIPE, + anon_sym_RBRACE, 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, - anon_sym_SEMI, - [49215] = 15, + anon_sym_COLON2, + sym_type_conversion, + [49307] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1766), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1768), 1, anon_sym_LPAREN, - ACTIONS(1758), 1, + ACTIONS(1776), 1, anon_sym_PIPE, - ACTIONS(1762), 1, + ACTIONS(1780), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1782), 1, anon_sym_STAR_STAR, - ACTIONS(1770), 1, + ACTIONS(1788), 1, anon_sym_AMP, - ACTIONS(1772), 1, + ACTIONS(1790), 1, anon_sym_CARET, - ACTIONS(1752), 2, + ACTIONS(1770), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1754), 2, + ACTIONS(1772), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1760), 2, + ACTIONS(1778), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(895), 2, + STATE(910), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1740), 3, + ACTIONS(1722), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1766), 3, + ACTIONS(1784), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1738), 15, - sym__newline, - anon_sym_from, + ACTIONS(1720), 15, anon_sym_COMMA, anon_sym_if, anon_sym_in, + anon_sym_RBRACE, anon_sym_not, anon_sym_and, anon_sym_or, @@ -65291,19 +65346,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [49283] = 8, + anon_sym_COLON2, + sym_type_conversion, + [49375] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1762), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - STATE(895), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, ACTIONS(1726), 5, @@ -65338,52 +65394,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49337] = 15, + [49429] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1758), 1, - anon_sym_PIPE, - ACTIONS(1762), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1770), 1, - anon_sym_AMP, - ACTIONS(1772), 1, - anon_sym_CARET, - ACTIONS(1752), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1754), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1760), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(895), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1718), 3, + ACTIONS(1726), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1766), 3, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1716), 15, + ACTIONS(1724), 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, @@ -65391,48 +65443,49 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49405] = 14, + [49489] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1762), 1, + ACTIONS(1818), 1, + anon_sym_PIPE, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1770), 1, + ACTIONS(1830), 1, anon_sym_AMP, - ACTIONS(1772), 1, + ACTIONS(1832), 1, anon_sym_CARET, - ACTIONS(1752), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1754), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1760), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(895), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, ACTIONS(1714), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1766), 3, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 16, + ACTIONS(1712), 15, 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, @@ -65443,47 +65496,51 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49471] = 10, + [49557] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1762), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1752), 2, + ACTIONS(1830), 1, + anon_sym_AMP, + ACTIONS(1832), 1, + anon_sym_CARET, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - STATE(895), 2, + ACTIONS(1814), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1820), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(904), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 3, + ACTIONS(1726), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1766), 3, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 22, + ACTIONS(1724), 16, 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, @@ -65491,27 +65548,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49529] = 8, + [49623] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1762), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - STATE(895), 2, + ACTIONS(1812), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(904), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 5, - anon_sym_STAR, + ACTIONS(1726), 3, anon_sym_EQ, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 25, + ACTIONS(1826), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1724), 22, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -65521,12 +65583,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, @@ -65537,7 +65596,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49583] = 8, + [49681] = 8, ACTIONS(3), 1, sym_comment, ACTIONS(1808), 1, @@ -65548,16 +65607,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(1824), 1, anon_sym_STAR_STAR, - STATE(925), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1730), 5, + ACTIONS(1726), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1728), 25, + ACTIONS(1724), 25, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -65565,7 +65626,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - anon_sym_RBRACE, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -65581,88 +65641,94 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [49637] = 8, + anon_sym_SEMI, + [49735] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(1808), 1, anon_sym_DOT, ACTIONS(1810), 1, anon_sym_LPAREN, + ACTIONS(1818), 1, + anon_sym_PIPE, ACTIONS(1822), 1, anon_sym_LBRACK, ACTIONS(1824), 1, anon_sym_STAR_STAR, - STATE(925), 2, + ACTIONS(1830), 1, + anon_sym_AMP, + ACTIONS(1832), 1, + anon_sym_CARET, + ACTIONS(1812), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1814), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1820), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(904), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1726), 5, - anon_sym_STAR, + ACTIONS(1718), 3, anon_sym_EQ, - anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1724), 25, + ACTIONS(1826), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1716), 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_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, - anon_sym_COLON2, - sym_type_conversion, - [49691] = 13, + anon_sym_SEMI, + [49803] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1762), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1772), 1, + ACTIONS(1832), 1, anon_sym_CARET, - ACTIONS(1752), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1754), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1760), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(895), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 3, + ACTIONS(1726), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1766), 3, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 17, + ACTIONS(1724), 17, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -65680,38 +65746,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49755] = 12, + [49867] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1748), 1, + ACTIONS(1808), 1, anon_sym_DOT, - ACTIONS(1750), 1, + ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1762), 1, + ACTIONS(1822), 1, anon_sym_LBRACK, - ACTIONS(1764), 1, + ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1752), 2, + ACTIONS(1812), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1754), 2, + ACTIONS(1814), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1760), 2, + ACTIONS(1820), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(895), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 3, + ACTIONS(1726), 3, anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1766), 3, + ACTIONS(1826), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 18, + ACTIONS(1724), 18, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -65730,26 +65796,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [49817] = 8, + [49929] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1726), 4, + ACTIONS(1737), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1724), 26, + ACTIONS(1735), 26, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -65776,7 +65842,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [49871] = 11, + [49983] = 8, ACTIONS(3), 1, sym_comment, ACTIONS(1808), 1, @@ -65787,33 +65853,31 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1812), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1820), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(925), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 3, + ACTIONS(1733), 5, + anon_sym_STAR, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1826), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1712), 20, + ACTIONS(1731), 25, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, anon_sym_in, anon_sym_PIPE, - anon_sym_RBRACE, + 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, @@ -65823,139 +65887,145 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [49931] = 15, + anon_sym_SEMI, + [50037] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(1808), 1, - anon_sym_DOT, - ACTIONS(1810), 1, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1840), 1, + sym_identifier, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1818), 1, - anon_sym_PIPE, - ACTIONS(1822), 1, - anon_sym_LBRACK, - ACTIONS(1824), 1, - anon_sym_STAR_STAR, - ACTIONS(1830), 1, - anon_sym_AMP, - ACTIONS(1832), 1, - anon_sym_CARET, - ACTIONS(1812), 2, + ACTIONS(1844), 1, anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1814), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1820), 2, + ACTIONS(1846), 1, + anon_sym_if, + ACTIONS(1848), 1, + anon_sym_COLON, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(925), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1740), 3, - anon_sym_EQ, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1826), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1738), 15, - anon_sym_COMMA, - anon_sym_if, - anon_sym_in, - 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_COLON2, - sym_type_conversion, - [49999] = 14, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1310), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [50119] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(1808), 1, + ACTIONS(1864), 1, anon_sym_DOT, - ACTIONS(1810), 1, + ACTIONS(1866), 1, anon_sym_LPAREN, - ACTIONS(1822), 1, + ACTIONS(1874), 1, + anon_sym_PIPE, + ACTIONS(1878), 1, anon_sym_LBRACK, - ACTIONS(1824), 1, + ACTIONS(1880), 1, anon_sym_STAR_STAR, - ACTIONS(1830), 1, + ACTIONS(1884), 1, + anon_sym_not, + ACTIONS(1886), 1, anon_sym_AMP, - ACTIONS(1832), 1, + ACTIONS(1888), 1, anon_sym_CARET, - ACTIONS(1812), 2, + ACTIONS(1892), 1, + anon_sym_is, + STATE(1017), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1868), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1814), 2, + ACTIONS(1870), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1820), 2, + ACTIONS(1876), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(925), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1714), 3, - anon_sym_EQ, + ACTIONS(1890), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1826), 3, + STATE(972), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1882), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 16, - anon_sym_COMMA, - anon_sym_if, + ACTIONS(1872), 6, anon_sym_in, - anon_sym_PIPE, - 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_COLON2, - sym_type_conversion, - [50065] = 10, + ACTIONS(1634), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_and, + anon_sym_or, + [50195] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1808), 1, + ACTIONS(1766), 1, anon_sym_DOT, - ACTIONS(1810), 1, + ACTIONS(1768), 1, anon_sym_LPAREN, - ACTIONS(1822), 1, + ACTIONS(1780), 1, anon_sym_LBRACK, - ACTIONS(1824), 1, + ACTIONS(1782), 1, anon_sym_STAR_STAR, - ACTIONS(1812), 2, - anon_sym_STAR, - anon_sym_SLASH, - STATE(925), 2, + STATE(910), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 3, + ACTIONS(1733), 5, + anon_sym_STAR, anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1826), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1712), 22, + ACTIONS(1731), 25, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -65964,9 +66034,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, 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, @@ -65978,35 +66051,94 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [50123] = 8, + [50249] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(1808), 1, - anon_sym_DOT, - ACTIONS(1810), 1, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1840), 1, + sym_identifier, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1822), 1, + ACTIONS(1844), 1, + anon_sym_STAR, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1824), 1, - anon_sym_STAR_STAR, - STATE(925), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1714), 5, + ACTIONS(1856), 1, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1423), 2, + sym__match_patterns, + sym_open_sequence_match_pattern, + STATE(1424), 2, + sym__match_pattern, + sym_match_as_pattern, + STATE(1571), 2, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [50331] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(652), 1, + sym__string_start, + STATE(766), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(1241), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 25, + ACTIONS(1236), 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_RBRACE, + anon_sym_LBRACK, + anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -66022,236 +66154,152 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [50177] = 13, + [50379] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1808), 1, - anon_sym_DOT, - ACTIONS(1810), 1, - anon_sym_LPAREN, - ACTIONS(1822), 1, - anon_sym_LBRACK, - ACTIONS(1824), 1, - anon_sym_STAR_STAR, - ACTIONS(1832), 1, - anon_sym_CARET, - ACTIONS(1812), 2, + ACTIONS(654), 1, + sym__template_string_start, + STATE(762), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(1241), 4, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1814), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1820), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(925), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1714), 3, - anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1826), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1712), 17, + ACTIONS(1236), 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_RBRACE, + 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, - anon_sym_COLON2, - sym_type_conversion, - [50241] = 12, + [50427] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1808), 1, - anon_sym_DOT, - ACTIONS(1810), 1, - anon_sym_LPAREN, - ACTIONS(1822), 1, - anon_sym_LBRACK, - ACTIONS(1824), 1, - anon_sym_STAR_STAR, - ACTIONS(1812), 2, + ACTIONS(1540), 4, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1814), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1820), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(925), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1714), 3, - anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1826), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1712), 18, + ACTIONS(1538), 32, + sym__string_start, + 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, - anon_sym_COLON2, - sym_type_conversion, - [50303] = 15, + [50471] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1808), 1, - anon_sym_DOT, - ACTIONS(1810), 1, - anon_sym_LPAREN, - ACTIONS(1818), 1, - anon_sym_PIPE, - ACTIONS(1822), 1, - anon_sym_LBRACK, - ACTIONS(1824), 1, - anon_sym_STAR_STAR, - ACTIONS(1830), 1, - anon_sym_AMP, - ACTIONS(1832), 1, - anon_sym_CARET, - ACTIONS(1812), 2, + ACTIONS(1552), 4, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1814), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1820), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(925), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1718), 3, - anon_sym_EQ, anon_sym_LT, anon_sym_GT, - ACTIONS(1826), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1716), 15, + ACTIONS(1550), 32, + sym__template_string_start, + 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, - anon_sym_COLON2, - sym_type_conversion, - [50371] = 15, + [50515] = 8, ACTIONS(3), 1, sym_comment, ACTIONS(1808), 1, anon_sym_DOT, ACTIONS(1810), 1, anon_sym_LPAREN, - ACTIONS(1818), 1, - anon_sym_PIPE, ACTIONS(1822), 1, anon_sym_LBRACK, ACTIONS(1824), 1, anon_sym_STAR_STAR, - ACTIONS(1830), 1, - anon_sym_AMP, - ACTIONS(1832), 1, - anon_sym_CARET, - ACTIONS(1812), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1814), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1820), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(925), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1722), 3, - anon_sym_EQ, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1826), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1720), 15, - anon_sym_COMMA, - anon_sym_if, - anon_sym_in, - 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_COLON2, - sym_type_conversion, - [50439] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1748), 1, - anon_sym_DOT, - ACTIONS(1750), 1, - anon_sym_LPAREN, - ACTIONS(1762), 1, - anon_sym_LBRACK, - ACTIONS(1764), 1, - anon_sym_STAR_STAR, - STATE(895), 2, + STATE(904), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1730), 5, + ACTIONS(1737), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1728), 25, + ACTIONS(1735), 25, sym__newline, anon_sym_from, anon_sym_COMMA, @@ -66277,32 +66325,30 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [50493] = 8, + [50569] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1766), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1768), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1780), 1, anon_sym_LBRACK, - ACTIONS(1788), 1, + ACTIONS(1782), 1, anon_sym_STAR_STAR, - STATE(708), 2, + STATE(910), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 4, + ACTIONS(1737), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 26, + ACTIONS(1735), 25, anon_sym_COMMA, 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, @@ -66323,34 +66369,164 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50547] = 11, + anon_sym_COLON2, + sym_type_conversion, + [50623] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, - anon_sym_DOT, - ACTIONS(1556), 1, - anon_sym_LPAREN, - ACTIONS(1570), 1, - anon_sym_LBRACK, - ACTIONS(1788), 1, + ACTIONS(1544), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1542), 32, + sym__string_start, + 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, - ACTIONS(1714), 2, + 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, + [50667] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1548), 4, + anon_sym_STAR, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1778), 2, + ACTIONS(1546), 32, + sym__template_string_start, + 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, + [50711] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1630), 1, + anon_sym_DOT, + ACTIONS(1632), 1, + anon_sym_LPAREN, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym_STAR_STAR, + STATE(731), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1726), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1724), 26, + anon_sym_COMMA, + 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, + anon_sym_PLUS, + 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, + [50765] = 11, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1630), 1, + anon_sym_DOT, + ACTIONS(1632), 1, + anon_sym_LPAREN, + ACTIONS(1646), 1, + anon_sym_LBRACK, + ACTIONS(1752), 1, + anon_sym_STAR_STAR, + ACTIONS(1726), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1742), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1786), 2, + ACTIONS(1750), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1790), 3, + ACTIONS(1754), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 21, + ACTIONS(1724), 21, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -66372,43 +66548,43 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50607] = 15, + [50825] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1784), 1, + ACTIONS(1748), 1, anon_sym_PIPE, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - ACTIONS(1794), 1, + ACTIONS(1758), 1, anon_sym_AMP, - ACTIONS(1796), 1, + ACTIONS(1760), 1, anon_sym_CARET, - ACTIONS(1740), 2, + ACTIONS(1714), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1778), 2, + ACTIONS(1742), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1780), 2, + ACTIONS(1744), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1786), 2, + ACTIONS(1750), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1790), 3, + ACTIONS(1754), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1738), 16, + ACTIONS(1712), 16, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, @@ -66425,41 +66601,41 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50675] = 14, + [50893] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - ACTIONS(1794), 1, + ACTIONS(1758), 1, anon_sym_AMP, - ACTIONS(1796), 1, + ACTIONS(1760), 1, anon_sym_CARET, - ACTIONS(1714), 2, + ACTIONS(1726), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1778), 2, + ACTIONS(1742), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1780), 2, + ACTIONS(1744), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1786), 2, + ACTIONS(1750), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1790), 3, + ACTIONS(1754), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 17, + ACTIONS(1724), 17, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, @@ -66477,31 +66653,31 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50741] = 10, + [50959] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - ACTIONS(1714), 2, + ACTIONS(1726), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1778), 2, + ACTIONS(1742), 2, anon_sym_STAR, anon_sym_SLASH, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1790), 3, + ACTIONS(1754), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 23, + ACTIONS(1724), 23, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -66525,26 +66701,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50799] = 8, + [51017] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 4, + ACTIONS(1726), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 26, + ACTIONS(1724), 26, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -66571,39 +66747,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50853] = 13, + [51071] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - ACTIONS(1796), 1, + ACTIONS(1760), 1, anon_sym_CARET, - ACTIONS(1714), 2, + ACTIONS(1726), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1778), 2, + ACTIONS(1742), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1780), 2, + ACTIONS(1744), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1786), 2, + ACTIONS(1750), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1790), 3, + ACTIONS(1754), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 18, + ACTIONS(1724), 18, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, @@ -66622,37 +66798,37 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50917] = 12, + [51135] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - ACTIONS(1714), 2, + ACTIONS(1726), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1778), 2, + ACTIONS(1742), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1780), 2, + ACTIONS(1744), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1786), 2, + ACTIONS(1750), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1790), 3, + ACTIONS(1754), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 19, + ACTIONS(1724), 19, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, @@ -66672,39 +66848,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [50979] = 15, + [51197] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1784), 1, + ACTIONS(1748), 1, anon_sym_PIPE, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - ACTIONS(1794), 1, + ACTIONS(1758), 1, anon_sym_AMP, - ACTIONS(1796), 1, + ACTIONS(1760), 1, anon_sym_CARET, ACTIONS(1718), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1778), 2, + ACTIONS(1742), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1780), 2, + ACTIONS(1744), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1786), 2, + ACTIONS(1750), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1790), 3, + ACTIONS(1754), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, @@ -66725,39 +66901,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51047] = 15, + [51265] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1784), 1, + ACTIONS(1748), 1, anon_sym_PIPE, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - ACTIONS(1794), 1, + ACTIONS(1758), 1, anon_sym_AMP, - ACTIONS(1796), 1, + ACTIONS(1760), 1, anon_sym_CARET, ACTIONS(1722), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1778), 2, + ACTIONS(1742), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1780), 2, + ACTIONS(1744), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1786), 2, + ACTIONS(1750), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1790), 3, + ACTIONS(1754), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, @@ -66778,26 +66954,86 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51115] = 8, + [51333] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1840), 1, + sym_identifier, + ACTIONS(1842), 1, + anon_sym_LPAREN, + ACTIONS(1844), 1, + anon_sym_STAR, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1424), 2, + sym__match_pattern, + sym_match_as_pattern, + STATE(1482), 2, + sym__match_patterns, + sym_open_sequence_match_pattern, + STATE(1571), 2, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [51415] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1788), 1, + ACTIONS(1752), 1, anon_sym_STAR_STAR, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1730), 4, + ACTIONS(1733), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1728), 26, + ACTIONS(1731), 26, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -66824,35 +67060,96 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51169] = 8, + [51469] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(1808), 1, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1840), 1, + sym_identifier, + ACTIONS(1842), 1, + anon_sym_LPAREN, + ACTIONS(1844), 1, + anon_sym_STAR, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1894), 1, + anon_sym_if, + ACTIONS(1896), 1, + anon_sym_COLON, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1310), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [51551] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1864), 1, anon_sym_DOT, - ACTIONS(1810), 1, + ACTIONS(1866), 1, anon_sym_LPAREN, - ACTIONS(1822), 1, + ACTIONS(1878), 1, anon_sym_LBRACK, - ACTIONS(1824), 1, + ACTIONS(1880), 1, anon_sym_STAR_STAR, - STATE(925), 2, + STATE(972), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 5, + ACTIONS(1726), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 25, + ACTIONS(1724), 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_RBRACE, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -66868,27 +67165,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [51223] = 4, + [51604] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1268), 1, + ACTIONS(604), 1, anon_sym_COLON_EQ, - ACTIONS(1209), 5, - anon_sym_STAR, + ACTIONS(656), 1, anon_sym_EQ, + ACTIONS(272), 4, + anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, - sym__newline, + ACTIONS(303), 29, 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, @@ -66910,30 +67207,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [51268] = 4, + [51651] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1870), 1, + ACTIONS(1838), 1, anon_sym_COLON_EQ, - ACTIONS(1209), 5, + ACTIONS(1238), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1241), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, + ACTIONS(1236), 27, anon_sym_DOT, 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, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -66950,38 +67249,29 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [51313] = 8, + [51698] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1840), 1, - anon_sym_DOT, - ACTIONS(1842), 1, - anon_sym_LPAREN, - ACTIONS(1854), 1, - anon_sym_LBRACK, - ACTIONS(1856), 1, - anon_sym_STAR_STAR, - STATE(953), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1730), 4, + ACTIONS(1544), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1728), 25, - anon_sym_RPAREN, + ACTIONS(1542), 30, + sym__string_start, + anon_sym_DOT, + 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_RBRACE, + anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -66997,99 +67287,160 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51366] = 3, + anon_sym_COLON2, + sym_type_conversion, + [51741] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1544), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1542), 30, - sym__template_string_start, + ACTIONS(1864), 1, anon_sym_DOT, + ACTIONS(1866), 1, anon_sym_LPAREN, - anon_sym_COMMA, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1880), 1, + anon_sym_STAR_STAR, + ACTIONS(1888), 1, + anon_sym_CARET, + ACTIONS(1726), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1868), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1870), 2, anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, + anon_sym_LT_LT, + ACTIONS(1876), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_RBRACE, - anon_sym_STAR_STAR, + STATE(972), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1882), 3, anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1724), 17, + 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_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, - anon_sym_COLON2, - sym_type_conversion, - [51409] = 4, + [51804] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(283), 1, - anon_sym_COLON_EQ, - ACTIONS(272), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(303), 29, - sym__newline, + ACTIONS(1864), 1, anon_sym_DOT, - anon_sym_from, + ACTIONS(1866), 1, anon_sym_LPAREN, - anon_sym_COMMA, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1880), 1, + anon_sym_STAR_STAR, + ACTIONS(1726), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1868), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1870), 2, anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, + anon_sym_LT_LT, + ACTIONS(1876), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - anon_sym_STAR_STAR, + STATE(972), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1882), 3, anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1724), 18, + 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_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, - anon_sym_SEMI, - [51454] = 4, + [51865] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(618), 1, + ACTIONS(1473), 3, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_LBRACK, + ACTIONS(1478), 13, + 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, + ACTIONS(1480), 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, + [51910] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1898), 1, anon_sym_COLON_EQ, - ACTIONS(272), 5, + ACTIONS(1241), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 29, + ACTIONS(1236), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -67119,32 +67470,36 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [51499] = 4, + [51955] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1872), 1, - anon_sym_COLON_EQ, - ACTIONS(1209), 5, + ACTIONS(1864), 1, + anon_sym_DOT, + ACTIONS(1866), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1880), 1, + anon_sym_STAR_STAR, + STATE(972), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1733), 4, anon_sym_STAR, - anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, - anon_sym_DOT, - anon_sym_LPAREN, + ACTIONS(1731), 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_RBRACE, - anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, anon_sym_and, @@ -67160,14 +67515,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51544] = 4, + [52008] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1290), 3, + ACTIONS(1306), 3, anon_sym_DOT, anon_sym_LPAREN, anon_sym_LBRACK, - ACTIONS(1295), 13, + ACTIONS(1311), 13, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -67181,7 +67536,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(1297), 19, + ACTIONS(1313), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -67201,26 +67556,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [51589] = 8, + [52053] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1840), 1, + ACTIONS(1864), 1, anon_sym_DOT, - ACTIONS(1842), 1, + ACTIONS(1866), 1, anon_sym_LPAREN, - ACTIONS(1854), 1, + ACTIONS(1878), 1, anon_sym_LBRACK, - ACTIONS(1856), 1, + ACTIONS(1880), 1, anon_sym_STAR_STAR, - STATE(953), 2, + STATE(972), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1726), 4, + ACTIONS(1737), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1724), 25, + ACTIONS(1735), 25, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -67246,16 +67601,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [51642] = 3, + [52106] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1540), 5, + ACTIONS(1552), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1538), 30, + ACTIONS(1550), 30, sym__template_string_start, anon_sym_DOT, anon_sym_LPAREN, @@ -67286,57 +67641,96 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [51685] = 22, + [52149] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, + ACTIONS(1544), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1542), 30, + sym__newline, sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, + anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - ACTIONS(1878), 1, - anon_sym_STAR, - ACTIONS(1880), 1, + anon_sym_COMMA, + anon_sym_GT_GT, anon_sym_if, - ACTIONS(1882), 1, - anon_sym_COLON, - ACTIONS(1884), 1, + anon_sym_in, + anon_sym_PIPE, anon_sym_DASH, - ACTIONS(1886), 1, + 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, + anon_sym_SEMI, + [52192] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1840), 1, + sym_identifier, + ACTIONS(1842), 1, + anon_sym_LPAREN, + ACTIONS(1844), 1, + anon_sym_STAR, + ACTIONS(1852), 1, sym_match_wildcard_pattern, - ACTIONS(1888), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1890), 1, + ACTIONS(1856), 1, anon_sym_LBRACE, - ACTIONS(1892), 1, + ACTIONS(1858), 1, sym_integer, - ACTIONS(1894), 1, + ACTIONS(1860), 1, sym_float, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, + ACTIONS(1900), 1, + anon_sym_RPAREN, + STATE(1056), 1, sym_string, - STATE(1650), 1, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, sym_pattern_class_name, - STATE(1116), 2, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1240), 2, + STATE(1198), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1896), 3, + ACTIONS(1862), 3, sym_true, sym_false, sym_none, - STATE(1307), 4, + STATE(1310), 4, sym__match_pattern, sym_match_as_pattern, sym__match_maybe_star_pattern, sym_match_star_pattern, - STATE(1117), 8, + STATE(1114), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -67345,181 +67739,182 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [51766] = 4, + [52271] = 21, ACTIONS(3), 1, sym_comment, - ACTIONS(1204), 3, - anon_sym_DOT, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1840), 1, + sym_identifier, + ACTIONS(1842), 1, anon_sym_LPAREN, - anon_sym_LBRACK, - ACTIONS(1209), 13, + ACTIONS(1844), 1, 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, - ACTIONS(1272), 19, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_in, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1900), 1, 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, - [51811] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1548), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1546), 30, - sym__newline, - sym__string_start, - 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, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, 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, - anon_sym_SEMI, - [51854] = 8, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1310), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [52350] = 22, ACTIONS(3), 1, sym_comment, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, ACTIONS(1840), 1, - anon_sym_DOT, + sym_identifier, ACTIONS(1842), 1, anon_sym_LPAREN, + ACTIONS(1844), 1, + anon_sym_STAR, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, ACTIONS(1854), 1, anon_sym_LBRACK, ACTIONS(1856), 1, - anon_sym_STAR_STAR, - STATE(953), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1714), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1712), 25, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1902), 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, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, 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, - [51907] = 11, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1603), 2, + sym__match_pattern, + sym_match_as_pattern, + STATE(1605), 2, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [52431] = 21, ACTIONS(3), 1, sym_comment, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, ACTIONS(1840), 1, - anon_sym_DOT, + sym_identifier, ACTIONS(1842), 1, anon_sym_LPAREN, + ACTIONS(1844), 1, + anon_sym_STAR, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, ACTIONS(1854), 1, anon_sym_LBRACK, ACTIONS(1856), 1, - anon_sym_STAR_STAR, - ACTIONS(1714), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1844), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1852), 2, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1902), 1, + anon_sym_RBRACK, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(953), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1858), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1712), 20, - 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_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, - [51966] = 3, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1438), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [52510] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(1548), 5, @@ -67529,46 +67924,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT, anon_sym_GT, ACTIONS(1546), 30, - sym__string_start, - anon_sym_DOT, - 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_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, - anon_sym_COLON2, - sym_type_conversion, - [52009] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1544), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1542), 30, sym__newline, sym__template_string_start, anon_sym_DOT, @@ -67599,17 +67954,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [52052] = 3, + [52553] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1552), 5, + ACTIONS(618), 1, + anon_sym_COLON_EQ, + ACTIONS(272), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1550), 30, - sym__string_start, + ACTIONS(303), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -67639,54 +67995,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [52095] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1838), 1, - anon_sym_COLON_EQ, - ACTIONS(1206), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1209), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1204), 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, - [52142] = 5, + [52598] = 5, ACTIONS(3), 1, sym_comment, ACTIONS(604), 1, anon_sym_COLON_EQ, - ACTIONS(277), 3, + ACTIONS(587), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACK, @@ -67723,14 +68037,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52189] = 4, + [52645] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1333), 3, + ACTIONS(303), 3, anon_sym_DOT, anon_sym_LPAREN, anon_sym_LBRACK, - ACTIONS(1338), 13, + ACTIONS(272), 13, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -67744,7 +68058,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(1340), 19, + ACTIONS(307), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -67764,18 +68078,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [52234] = 3, + [52690] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1552), 5, + ACTIONS(1276), 1, + anon_sym_COLON_EQ, + ACTIONS(1241), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1550), 30, + ACTIONS(1236), 29, sym__newline, - sym__string_start, anon_sym_DOT, anon_sym_from, anon_sym_LPAREN, @@ -67804,61 +68119,75 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [52277] = 3, + [52735] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1540), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1538), 30, - sym__newline, - sym__template_string_start, + ACTIONS(1864), 1, anon_sym_DOT, - anon_sym_from, + ACTIONS(1866), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, + ACTIONS(1874), 1, anon_sym_PIPE, - anon_sym_DASH, - anon_sym_PLUS, + ACTIONS(1878), 1, anon_sym_LBRACK, + ACTIONS(1880), 1, anon_sym_STAR_STAR, + ACTIONS(1886), 1, + anon_sym_AMP, + ACTIONS(1888), 1, + anon_sym_CARET, + ACTIONS(1714), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1868), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1870), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1876), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(972), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1882), 3, anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1712), 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, - anon_sym_SEMI, - [52320] = 4, + [52802] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(638), 1, + ACTIONS(604), 1, anon_sym_COLON_EQ, - ACTIONS(272), 5, + ACTIONS(277), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(272), 4, anon_sym_STAR, - anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 29, + ACTIONS(303), 27, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, anon_sym_async, @@ -67868,7 +68197,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -67885,84 +68213,239 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52365] = 4, + [52849] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(303), 3, + ACTIONS(1540), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1538), 30, + sym__newline, + sym__string_start, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, - anon_sym_LBRACK, - ACTIONS(272), 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(307), 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, - [52410] = 15, + 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_SEMI, + [52892] = 21, ACTIONS(3), 1, sym_comment, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, ACTIONS(1840), 1, - anon_sym_DOT, + sym_identifier, ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1850), 1, - anon_sym_PIPE, + ACTIONS(1844), 1, + anon_sym_STAR, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, ACTIONS(1854), 1, anon_sym_LBRACK, ACTIONS(1856), 1, - anon_sym_STAR_STAR, - ACTIONS(1862), 1, - anon_sym_AMP, - ACTIONS(1864), 1, - anon_sym_CARET, - ACTIONS(1740), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1844), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1846), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1852), 2, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1904), 1, + anon_sym_RPAREN, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1310), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [52971] = 21, + ACTIONS(3), 1, + sym_comment, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1840), 1, + sym_identifier, + ACTIONS(1842), 1, + anon_sym_LPAREN, + ACTIONS(1844), 1, + anon_sym_STAR, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1904), 1, + anon_sym_RBRACK, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1310), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [53050] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1548), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1546), 30, + sym__template_string_start, + anon_sym_DOT, + 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_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, + anon_sym_COLON2, + sym_type_conversion, + [53093] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1864), 1, + anon_sym_DOT, + ACTIONS(1866), 1, + anon_sym_LPAREN, + ACTIONS(1874), 1, + anon_sym_PIPE, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1880), 1, + anon_sym_STAR_STAR, + ACTIONS(1886), 1, + anon_sym_AMP, + ACTIONS(1888), 1, + anon_sym_CARET, + ACTIONS(1722), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1868), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1870), 2, + anon_sym_GT_GT, + anon_sym_LT_LT, + ACTIONS(1876), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(953), 2, + STATE(972), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1858), 3, + ACTIONS(1882), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1738), 15, + ACTIONS(1720), 15, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -67978,22 +68461,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52477] = 5, + [53160] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(604), 1, + ACTIONS(1906), 1, anon_sym_COLON_EQ, - ACTIONS(634), 1, - anon_sym_EQ, - ACTIONS(272), 4, + ACTIONS(1241), 5, anon_sym_STAR, + anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 29, + ACTIONS(1236), 29, anon_sym_DOT, anon_sym_LPAREN, - anon_sym_RPAREN, anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, @@ -68004,6 +68485,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -68020,32 +68502,28 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52524] = 5, + [53205] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1838), 1, - anon_sym_COLON_EQ, - ACTIONS(1898), 1, - anon_sym_EQ, - ACTIONS(1209), 4, + ACTIONS(1540), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, + ACTIONS(1538), 30, + sym__string_start, 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_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -68062,23 +68540,72 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52571] = 5, + anon_sym_COLON2, + sym_type_conversion, + [53248] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(604), 1, - anon_sym_COLON_EQ, - ACTIONS(587), 3, + ACTIONS(1864), 1, + anon_sym_DOT, + ACTIONS(1866), 1, + anon_sym_LPAREN, + ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1880), 1, + anon_sym_STAR_STAR, + ACTIONS(1726), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1868), 2, + anon_sym_STAR, + anon_sym_SLASH, + STATE(972), 2, + sym_argument_list, + sym_generator_expression, + ACTIONS(1882), 3, + anon_sym_AT, + anon_sym_PERCENT, + anon_sym_SLASH_SLASH, + ACTIONS(1724), 22, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(272), 4, + 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_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, + [53305] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1838), 1, + anon_sym_COLON_EQ, + ACTIONS(1908), 1, + anon_sym_EQ, + ACTIONS(1241), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 27, + ACTIONS(1236), 29, anon_sym_DOT, anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, anon_sym_async, @@ -68104,14 +68631,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52618] = 4, + [53352] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1204), 3, + ACTIONS(303), 3, anon_sym_DOT, anon_sym_LPAREN, anon_sym_LBRACK, - ACTIONS(1209), 13, + ACTIONS(272), 13, anon_sym_STAR, anon_sym_GT_GT, anon_sym_PIPE, @@ -68125,7 +68652,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(1211), 19, + ACTIONS(598), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -68145,154 +68672,79 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [52663] = 22, + [53397] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, - anon_sym_LPAREN, - ACTIONS(1878), 1, + ACTIONS(1552), 5, anon_sym_STAR, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, - anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1900), 1, - anon_sym_if, - ACTIONS(1902), 1, - anon_sym_COLON, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1307), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [52744] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1840), 1, - anon_sym_DOT, - ACTIONS(1842), 1, - anon_sym_LPAREN, - ACTIONS(1854), 1, - anon_sym_LBRACK, - ACTIONS(1856), 1, - anon_sym_STAR_STAR, - ACTIONS(1862), 1, - anon_sym_AMP, - ACTIONS(1864), 1, - anon_sym_CARET, - ACTIONS(1714), 2, + anon_sym_EQ, + anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1844), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1846), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1852), 2, - anon_sym_DASH, - anon_sym_PLUS, - STATE(953), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1858), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1712), 16, - anon_sym_RPAREN, + ACTIONS(1550), 30, + sym__newline, + sym__template_string_start, + 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, - [52809] = 10, + anon_sym_SEMI, + [53440] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1840), 1, - anon_sym_DOT, - ACTIONS(1842), 1, - anon_sym_LPAREN, - ACTIONS(1854), 1, - anon_sym_LBRACK, - ACTIONS(1856), 1, - anon_sym_STAR_STAR, - ACTIONS(1714), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1844), 2, - anon_sym_STAR, - anon_sym_SLASH, - STATE(953), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1858), 3, - anon_sym_AT, - anon_sym_PERCENT, - anon_sym_SLASH_SLASH, - ACTIONS(1712), 22, + ACTIONS(1838), 1, + anon_sym_COLON_EQ, + ACTIONS(1273), 3, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, + anon_sym_RBRACK, + ACTIONS(1241), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1236), 27, + anon_sym_DOT, + anon_sym_LPAREN, 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, 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, @@ -68302,26 +68754,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52866] = 8, + [53487] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1840), 1, + ACTIONS(1864), 1, anon_sym_DOT, - ACTIONS(1842), 1, + ACTIONS(1866), 1, anon_sym_LPAREN, - ACTIONS(1854), 1, + ACTIONS(1878), 1, anon_sym_LBRACK, - ACTIONS(1856), 1, + ACTIONS(1880), 1, anon_sym_STAR_STAR, - STATE(953), 2, + STATE(972), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1714), 4, + ACTIONS(1726), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1712), 25, + ACTIONS(1724), 25, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -68347,39 +68799,41 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [52919] = 13, + [53540] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(1840), 1, + ACTIONS(1864), 1, anon_sym_DOT, - ACTIONS(1842), 1, + ACTIONS(1866), 1, anon_sym_LPAREN, - ACTIONS(1854), 1, + ACTIONS(1878), 1, anon_sym_LBRACK, - ACTIONS(1856), 1, + ACTIONS(1880), 1, anon_sym_STAR_STAR, - ACTIONS(1864), 1, + ACTIONS(1886), 1, + anon_sym_AMP, + ACTIONS(1888), 1, anon_sym_CARET, - ACTIONS(1714), 2, + ACTIONS(1726), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1844), 2, + ACTIONS(1868), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1846), 2, + ACTIONS(1870), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1852), 2, + ACTIONS(1876), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(953), 2, + STATE(972), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1858), 3, + ACTIONS(1882), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 17, + ACTIONS(1724), 16, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -68390,47 +68844,44 @@ static const uint16_t ts_small_parse_table[] = { 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, - [52982] = 12, + [53605] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(1840), 1, + ACTIONS(1864), 1, anon_sym_DOT, - ACTIONS(1842), 1, + ACTIONS(1866), 1, anon_sym_LPAREN, - ACTIONS(1854), 1, + ACTIONS(1878), 1, anon_sym_LBRACK, - ACTIONS(1856), 1, + ACTIONS(1880), 1, anon_sym_STAR_STAR, - ACTIONS(1714), 2, + ACTIONS(1726), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1844), 2, + ACTIONS(1868), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1846), 2, - anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1852), 2, + ACTIONS(1876), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(953), 2, + STATE(972), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1858), 3, + ACTIONS(1882), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1712), 18, + ACTIONS(1724), 20, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, + anon_sym_GT_GT, anon_sym_if, anon_sym_COLON, anon_sym_in, @@ -68440,45 +68891,46 @@ 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, - [53043] = 15, + [53664] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(1840), 1, + ACTIONS(1864), 1, anon_sym_DOT, - ACTIONS(1842), 1, + ACTIONS(1866), 1, anon_sym_LPAREN, - ACTIONS(1850), 1, + ACTIONS(1874), 1, anon_sym_PIPE, - ACTIONS(1854), 1, + ACTIONS(1878), 1, anon_sym_LBRACK, - ACTIONS(1856), 1, + ACTIONS(1880), 1, anon_sym_STAR_STAR, - ACTIONS(1862), 1, + ACTIONS(1886), 1, anon_sym_AMP, - ACTIONS(1864), 1, + ACTIONS(1888), 1, anon_sym_CARET, ACTIONS(1718), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1844), 2, + ACTIONS(1868), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1846), 2, + ACTIONS(1870), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1852), 2, + ACTIONS(1876), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(953), 2, + STATE(972), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1858), 3, + ACTIONS(1882), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, @@ -68498,187 +68950,99 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [53110] = 15, + [53731] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1840), 1, + ACTIONS(1236), 3, anon_sym_DOT, - ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1850), 1, - anon_sym_PIPE, - ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1856), 1, - anon_sym_STAR_STAR, - ACTIONS(1862), 1, - anon_sym_AMP, - ACTIONS(1864), 1, - anon_sym_CARET, - ACTIONS(1722), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1844), 2, + ACTIONS(1241), 13, anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(1846), 2, anon_sym_GT_GT, - anon_sym_LT_LT, - ACTIONS(1852), 2, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, - STATE(953), 2, - sym_argument_list, - sym_generator_expression, - ACTIONS(1858), 3, + anon_sym_STAR_STAR, anon_sym_AT, + anon_sym_SLASH, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - ACTIONS(1720), 15, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LT_LT, + ACTIONS(1280), 19, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, 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, + [53776] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(660), 1, + anon_sym_COLON_EQ, + ACTIONS(272), 5, + anon_sym_STAR, + anon_sym_COLON, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(303), 29, + anon_sym_DOT, + 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, + anon_sym_PLUS, + anon_sym_LBRACK, + 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, - [53177] = 22, + [53821] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, + ACTIONS(1236), 3, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(1878), 1, + anon_sym_LBRACK, + ACTIONS(1241), 13, anon_sym_STAR, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, - anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1407), 2, - sym__match_patterns, - sym_open_sequence_match_pattern, - STATE(1408), 2, - sym__match_pattern, - sym_match_as_pattern, - STATE(1595), 2, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [53258] = 22, - ACTIONS(3), 1, - sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, - anon_sym_LPAREN, - ACTIONS(1878), 1, - anon_sym_STAR, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, - anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1408), 2, - sym__match_pattern, - sym_match_as_pattern, - STATE(1495), 2, - sym__match_patterns, - sym_open_sequence_match_pattern, - STATE(1595), 2, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [53339] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(303), 3, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_LBRACK, - ACTIONS(272), 13, - anon_sym_STAR, - anon_sym_GT_GT, - anon_sym_PIPE, + anon_sym_GT_GT, + anon_sym_PIPE, anon_sym_DASH, anon_sym_PLUS, anon_sym_STAR_STAR, @@ -68689,7 +69053,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - ACTIONS(598), 19, + ACTIONS(1243), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -68709,58 +69073,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [53384] = 5, + [53866] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1838), 1, + ACTIONS(283), 1, anon_sym_COLON_EQ, - ACTIONS(1265), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1209), 4, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1204), 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, - [53431] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1706), 5, + ACTIONS(272), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1704), 29, + ACTIONS(303), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -68790,16 +69114,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [53473] = 3, + [53911] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1674), 5, + ACTIONS(1241), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1672), 29, + ACTIONS(1236), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68829,16 +69153,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53515] = 3, + [53953] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1678), 5, + ACTIONS(1588), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1676), 29, + ACTIONS(1586), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68868,16 +69192,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53557] = 3, + [53995] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1032), 5, + ACTIONS(1592), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1030), 29, + ACTIONS(1590), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68907,55 +69231,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53599] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1674), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1672), 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, - anon_sym_SEMI, - [53641] = 3, + [54037] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1614), 5, + ACTIONS(1592), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1612), 29, + ACTIONS(1590), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -68985,16 +69270,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53683] = 3, + [54079] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1682), 5, + ACTIONS(1600), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1680), 29, + ACTIONS(1598), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -69024,16 +69309,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53725] = 3, + [54121] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1686), 5, + ACTIONS(1710), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1684), 29, + ACTIONS(1708), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -69063,16 +69348,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53767] = 3, + [54163] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 5, + ACTIONS(1592), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 29, + ACTIONS(1590), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -69102,16 +69387,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53809] = 3, + [54205] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 5, + ACTIONS(1576), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 29, + ACTIONS(1574), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -69141,16 +69426,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53851] = 3, + [54247] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1694), 5, + ACTIONS(1576), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1692), 29, + ACTIONS(1574), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -69180,16 +69465,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53893] = 3, + [54289] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1698), 5, + ACTIONS(1604), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1696), 29, + ACTIONS(1602), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -69219,16 +69504,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53935] = 3, + [54331] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 5, + ACTIONS(1576), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 29, + ACTIONS(1574), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -69258,17 +69543,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [53977] = 3, + [54373] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 5, + ACTIONS(1560), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 29, + ACTIONS(1558), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69278,7 +69565,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69295,19 +69581,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54019] = 3, + anon_sym_SEMI, + [54415] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 5, + ACTIONS(1478), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 29, + ACTIONS(1473), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69317,7 +69604,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69334,57 +69620,75 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54061] = 3, + anon_sym_SEMI, + [54457] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(1706), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1704), 29, - anon_sym_DOT, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1842), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1910), 1, + sym_identifier, + ACTIONS(1912), 1, + anon_sym_RPAREN, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1522), 1, + sym_match_positional_pattern, + STATE(1523), 1, + sym_match_keyword_pattern, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, anon_sym_DASH, anon_sym_PLUS, - anon_sym_LBRACK, - 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, - anon_sym_COLON2, - sym_type_conversion, - [54103] = 3, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1604), 2, + sym__match_pattern, + sym_match_as_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [54537] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 5, + ACTIONS(272), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 29, + ACTIONS(303), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -69414,17 +69718,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [54145] = 3, + [54579] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1622), 5, + ACTIONS(1572), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1620), 29, + ACTIONS(1570), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69434,7 +69740,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69451,19 +69756,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54187] = 3, + anon_sym_SEMI, + [54621] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1626), 5, + ACTIONS(1311), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1624), 29, + ACTIONS(1306), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69473,7 +69779,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69490,31 +69795,29 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54229] = 3, + anon_sym_SEMI, + [54663] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1338), 4, + ACTIONS(1576), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1333), 30, + ACTIONS(1574), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, 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, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69531,29 +69834,29 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [54271] = 3, + anon_sym_SEMI, + [54705] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1295), 4, + ACTIONS(1596), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1290), 30, + ACTIONS(1594), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, 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, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69570,17 +69873,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [54313] = 3, + anon_sym_SEMI, + [54747] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1630), 5, + ACTIONS(1576), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1628), 29, + ACTIONS(1574), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69590,7 +69896,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69607,18 +69912,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54355] = 3, + anon_sym_SEMI, + [54789] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1618), 5, + ACTIONS(1604), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1616), 29, + ACTIONS(1602), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69648,131 +69952,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54397] = 22, + [54831] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, - anon_sym_LPAREN, - ACTIONS(1878), 1, - anon_sym_STAR, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, - anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1904), 1, - anon_sym_RPAREN, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1601), 2, - sym__match_pattern, - sym_match_as_pattern, - STATE(1602), 2, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [54477] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, - anon_sym_LPAREN, - ACTIONS(1878), 1, - anon_sym_STAR, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, - anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1904), 1, - anon_sym_RBRACK, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1489), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [54555] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1682), 5, + ACTIONS(1576), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1680), 29, + ACTIONS(1574), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69802,16 +69991,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54597] = 3, + [54873] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1634), 5, + ACTIONS(1612), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1632), 29, + ACTIONS(1610), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -69841,16 +70030,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [54639] = 3, + [54915] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1650), 5, + ACTIONS(1612), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1648), 29, + ACTIONS(1610), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69880,17 +70069,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54681] = 3, + [54957] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1638), 5, + ACTIONS(1616), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1636), 29, + ACTIONS(1614), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69900,7 +70091,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69917,19 +70107,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54723] = 3, + anon_sym_SEMI, + [54999] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1642), 5, + ACTIONS(1674), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1640), 29, + ACTIONS(1672), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -69939,7 +70130,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -69956,18 +70146,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54765] = 3, + anon_sym_SEMI, + [55041] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1686), 5, + ACTIONS(1241), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1684), 29, + ACTIONS(1236), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -69997,16 +70186,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54807] = 3, + [55083] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 5, + ACTIONS(1568), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 29, + ACTIONS(1566), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70036,23 +70225,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [54849] = 3, + [55125] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 5, + ACTIONS(1308), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1311), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 29, - sym__newline, + ACTIONS(1306), 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, @@ -70074,18 +70265,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [54891] = 3, + [55169] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1050), 5, + ACTIONS(1584), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1048), 29, + ACTIONS(1582), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70095,7 +70287,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70112,20 +70303,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [54933] = 4, + anon_sym_SEMI, + [55211] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1906), 1, + ACTIONS(1914), 1, anon_sym_COLON_EQ, - ACTIONS(1209), 5, + ACTIONS(1241), 5, anon_sym_STAR, anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 28, + ACTIONS(1236), 28, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -70154,19 +70344,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [54977] = 3, + [55255] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1694), 5, + ACTIONS(1674), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1692), 29, - sym__newline, + ACTIONS(1672), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70176,6 +70364,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70192,22 +70381,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55019] = 3, + anon_sym_COLON2, + sym_type_conversion, + [55297] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1698), 5, + ACTIONS(640), 1, + anon_sym_COLON_EQ, + ACTIONS(272), 5, anon_sym_STAR, - anon_sym_EQ, + anon_sym_COLON, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1696), 29, - sym__newline, + ACTIONS(303), 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, @@ -70231,20 +70423,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55061] = 3, + [55341] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 5, + ACTIONS(1670), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 29, - sym__newline, + ACTIONS(1668), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70254,6 +70443,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70270,20 +70460,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55103] = 3, + anon_sym_COLON2, + sym_type_conversion, + [55383] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(272), 5, + ACTIONS(1564), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 29, - sym__newline, + ACTIONS(1562), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70293,6 +70482,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70309,22 +70499,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55145] = 3, + anon_sym_COLON2, + sym_type_conversion, + [55425] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1646), 5, + ACTIONS(1478), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1644), 29, + ACTIONS(1473), 30, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, 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, @@ -70347,25 +70540,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [55187] = 4, + [55467] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(652), 1, - anon_sym_COLON_EQ, - ACTIONS(272), 5, + ACTIONS(1588), 5, anon_sym_STAR, - anon_sym_COLON, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 28, + ACTIONS(1586), 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, @@ -70389,23 +70578,61 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [55231] = 4, + anon_sym_SEMI, + [55509] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1292), 3, - anon_sym_RPAREN, + ACTIONS(1592), 5, + anon_sym_STAR, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1590), 29, + sym__newline, + anon_sym_DOT, + anon_sym_from, + anon_sym_LPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1295), 4, + 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, + anon_sym_SEMI, + [55551] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1311), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1290), 27, + ACTIONS(1306), 30, anon_sym_DOT, anon_sym_LPAREN, + anon_sym_COMMA, anon_sym_GT_GT, anon_sym_if, + anon_sym_COLON, anon_sym_async, anon_sym_for, anon_sym_in, @@ -70413,6 +70640,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70429,16 +70657,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [55275] = 3, + [55593] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1338), 5, + ACTIONS(1592), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1333), 29, + ACTIONS(1590), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70468,19 +70696,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55317] = 3, + [55635] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1295), 5, + ACTIONS(1560), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1290), 29, - sym__newline, + ACTIONS(1558), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70490,6 +70716,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70506,26 +70733,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55359] = 4, + anon_sym_COLON2, + sym_type_conversion, + [55677] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1265), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1209), 4, + ACTIONS(1600), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 27, + ACTIONS(1598), 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, @@ -70547,17 +70773,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [55403] = 3, + anon_sym_SEMI, + [55719] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(272), 5, + ACTIONS(1620), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 29, + ACTIONS(1618), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70567,7 +70796,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70584,18 +70812,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [55445] = 3, + anon_sym_SEMI, + [55761] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1646), 5, + ACTIONS(1710), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1644), 29, + ACTIONS(1708), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70625,16 +70852,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55487] = 3, + [55803] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1662), 5, + ACTIONS(1624), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1660), 29, + ACTIONS(1622), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70664,16 +70891,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55529] = 3, + [55845] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1622), 5, + ACTIONS(1628), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1620), 29, + ACTIONS(1626), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70703,16 +70930,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55571] = 3, + [55887] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1626), 5, + ACTIONS(1666), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1624), 29, + ACTIONS(1664), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70742,16 +70969,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55613] = 3, + [55929] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1614), 5, + ACTIONS(1678), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1612), 29, + ACTIONS(1676), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70781,30 +71008,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55655] = 4, + [55971] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1335), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - ACTIONS(1338), 4, + ACTIONS(1572), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1333), 27, + ACTIONS(1570), 29, anon_sym_DOT, 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, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70821,16 +71045,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [55699] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56013] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1618), 5, + ACTIONS(1584), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1616), 29, + ACTIONS(1582), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -70860,19 +71086,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [55741] = 3, + [56055] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1710), 5, + ACTIONS(1608), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1708), 29, - sym__newline, + ACTIONS(1606), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70882,6 +71106,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -70898,17 +71123,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55783] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56097] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1638), 5, + ACTIONS(272), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1636), 29, + ACTIONS(303), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -70938,58 +71164,131 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [55825] = 3, + [56139] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(1666), 5, - anon_sym_STAR, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1664), 29, - sym__newline, - anon_sym_DOT, - anon_sym_from, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1840), 1, + sym_identifier, + ACTIONS(1842), 1, anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_GT_GT, - anon_sym_if, - anon_sym_in, - anon_sym_PIPE, + ACTIONS(1844), 1, + anon_sym_STAR, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, + ACTIONS(1854), 1, + anon_sym_LBRACK, + ACTIONS(1856), 1, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, anon_sym_DASH, anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1310), 4, + sym__match_pattern, + sym_match_as_pattern, + sym__match_maybe_star_pattern, + sym_match_star_pattern, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [56215] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(652), 1, + sym__string_start, + ACTIONS(654), 1, + sym__template_string_start, + ACTIONS(1842), 1, + anon_sym_LPAREN, + ACTIONS(1852), 1, + sym_match_wildcard_pattern, + ACTIONS(1854), 1, 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, - anon_sym_SEMI, - [55867] = 3, + ACTIONS(1856), 1, + anon_sym_LBRACE, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1910), 1, + sym_identifier, + ACTIONS(1916), 1, + anon_sym_RPAREN, + STATE(1056), 1, + sym_string, + STATE(1067), 1, + sym_template_string, + STATE(1521), 1, + sym_match_keyword_pattern, + STATE(1558), 1, + sym_match_positional_pattern, + STATE(1662), 1, + sym_pattern_class_name, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1198), 2, + sym__match_or_pattern, + sym_match_or_pattern, + STATE(1604), 2, + sym__match_pattern, + sym_match_as_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + STATE(1114), 8, + sym__closed_pattern, + sym_match_literal_pattern, + sym_match_capture_pattern, + sym_match_value_pattern, + sym_match_group_pattern, + sym_match_sequence_pattern, + sym_match_mapping_pattern, + sym_match_class_pattern, + [56295] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1678), 5, + ACTIONS(1071), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1676), 29, - sym__newline, + ACTIONS(1069), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -70999,6 +71298,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -71015,20 +71315,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55909] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56337] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1670), 5, + ACTIONS(1616), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1668), 29, - sym__newline, + ACTIONS(1614), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -71038,6 +71337,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -71054,56 +71354,58 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [55951] = 21, + anon_sym_COLON2, + sym_type_conversion, + [56379] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1878), 1, - anon_sym_STAR, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, + ACTIONS(1852), 1, sym_match_wildcard_pattern, - ACTIONS(1888), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1890), 1, + ACTIONS(1856), 1, anon_sym_LBRACE, - ACTIONS(1892), 1, + ACTIONS(1858), 1, sym_integer, - ACTIONS(1894), 1, + ACTIONS(1860), 1, sym_float, - ACTIONS(1908), 1, - anon_sym_RBRACK, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, + ACTIONS(1910), 1, + sym_identifier, + ACTIONS(1918), 1, + anon_sym_RPAREN, + STATE(1056), 1, sym_string, - STATE(1650), 1, + STATE(1067), 1, + sym_template_string, + STATE(1454), 1, + sym_match_keyword_pattern, + STATE(1558), 1, + sym_match_positional_pattern, + STATE(1662), 1, sym_pattern_class_name, - STATE(1116), 2, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1240), 2, + STATE(1198), 2, sym__match_or_pattern, sym_match_or_pattern, - ACTIONS(1896), 3, + STATE(1604), 2, + sym__match_pattern, + sym_match_as_pattern, + ACTIONS(1862), 3, sym_true, sym_false, sym_none, - STATE(1307), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1117), 8, + STATE(1114), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -71112,16 +71414,16 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [56029] = 3, + [56459] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1630), 5, + ACTIONS(1592), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1628), 29, + ACTIONS(1590), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -71151,17 +71453,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [56071] = 3, + [56501] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1650), 5, + ACTIONS(1608), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1648), 29, + ACTIONS(1606), 29, + sym__newline, anon_sym_DOT, + anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -71171,7 +71475,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, - anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -71188,132 +71491,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_COLON2, - sym_type_conversion, - [56113] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, - anon_sym_LPAREN, - ACTIONS(1878), 1, - anon_sym_STAR, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, - anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1908), 1, - anon_sym_RPAREN, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1307), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [56191] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, - anon_sym_LPAREN, - ACTIONS(1878), 1, - anon_sym_STAR, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, - anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1910), 1, - anon_sym_RBRACK, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1307), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [56269] = 3, + anon_sym_SEMI, + [56543] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1642), 5, + ACTIONS(1670), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1640), 29, + ACTIONS(1668), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -71343,16 +71531,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [56311] = 3, + [56585] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1654), 5, + ACTIONS(1596), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1652), 29, + ACTIONS(1594), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -71382,16 +71570,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [56353] = 3, + [56627] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1658), 5, + ACTIONS(1620), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1656), 29, + ACTIONS(1618), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -71421,73 +71609,55 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [56395] = 21, + [56669] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, - anon_sym_LPAREN, - ACTIONS(1878), 1, + ACTIONS(1556), 5, anon_sym_STAR, - ACTIONS(1884), 1, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1554), 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, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1910), 1, - anon_sym_RPAREN, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1307), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [56473] = 3, + 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, + anon_sym_SEMI, + [56711] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1662), 5, + ACTIONS(1624), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1660), 29, + ACTIONS(1622), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -71517,16 +71687,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [56515] = 3, + [56753] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 5, + ACTIONS(1564), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 29, + ACTIONS(1562), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -71556,16 +71726,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [56557] = 3, + [56795] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 5, + ACTIONS(1580), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 29, + ACTIONS(1578), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -71595,19 +71765,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [56599] = 3, + [56837] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1658), 5, + ACTIONS(1628), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1656), 29, - sym__newline, + ACTIONS(1626), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -71617,6 +71785,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -71633,17 +71802,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [56641] = 3, + anon_sym_COLON2, + sym_type_conversion, + [56879] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1710), 5, + ACTIONS(1666), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1708), 29, + ACTIONS(1664), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -71673,16 +71843,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [56683] = 3, + [56921] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 5, + ACTIONS(1682), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 29, + ACTIONS(1680), 29, sym__newline, anon_sym_DOT, anon_sym_from, @@ -71712,16 +71882,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LT_GT, anon_sym_is, anon_sym_SEMI, - [56725] = 3, + [56963] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1666), 5, + ACTIONS(1678), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1664), 29, + ACTIONS(1676), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -71751,23 +71921,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [56767] = 3, + [57005] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1654), 5, + ACTIONS(1273), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1241), 4, anon_sym_STAR, - anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1652), 29, - sym__newline, + ACTIONS(1236), 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, @@ -71789,17 +71961,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [56809] = 3, + [57049] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1670), 5, + ACTIONS(1556), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1668), 29, + ACTIONS(1554), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -71829,16 +72000,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [56851] = 3, + [57091] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1209), 5, + ACTIONS(1580), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, + ACTIONS(1578), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_COMMA, @@ -71868,19 +72039,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_is, anon_sym_COLON2, sym_type_conversion, - [56893] = 3, + [57133] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1209), 5, + ACTIONS(1682), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, - sym__newline, + ACTIONS(1680), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -71890,6 +72059,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -71906,20 +72076,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [56935] = 3, + anon_sym_COLON2, + sym_type_conversion, + [57175] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1634), 5, + ACTIONS(1052), 5, anon_sym_STAR, anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1632), 29, - sym__newline, + ACTIONS(1050), 29, anon_sym_DOT, - anon_sym_from, anon_sym_LPAREN, anon_sym_COMMA, anon_sym_GT_GT, @@ -71929,6 +72098,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH, anon_sym_PLUS, anon_sym_LBRACK, + anon_sym_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -71945,24 +72115,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - anon_sym_SEMI, - [56977] = 3, + anon_sym_COLON2, + sym_type_conversion, + [57217] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1670), 4, + ACTIONS(1475), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(1478), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1668), 29, + ACTIONS(1473), 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_async, + anon_sym_for, anon_sym_in, anon_sym_PIPE, anon_sym_DASH, @@ -71984,28 +72157,27 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57018] = 3, + [57261] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1618), 4, + ACTIONS(1568), 5, anon_sym_STAR, + anon_sym_EQ, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1616), 29, + ACTIONS(1566), 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_RBRACE, anon_sym_STAR_STAR, anon_sym_AT, anon_sym_not, @@ -72022,15 +72194,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57059] = 3, + anon_sym_COLON2, + sym_type_conversion, + [57303] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1622), 4, + ACTIONS(1071), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1620), 29, + ACTIONS(1069), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72060,15 +72234,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57100] = 3, + [57344] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1626), 4, + ACTIONS(1666), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1624), 29, + ACTIONS(1664), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72098,15 +72272,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57141] = 3, + [57385] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1630), 4, + ACTIONS(1592), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1628), 29, + ACTIONS(1590), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72136,15 +72310,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57182] = 3, + [57426] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1634), 4, + ACTIONS(1678), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1632), 29, + ACTIONS(1676), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72174,15 +72348,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57223] = 3, + [57467] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1638), 4, + ACTIONS(1241), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1636), 29, + ACTIONS(1236), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72212,15 +72386,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57264] = 3, + [57508] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1050), 4, + ACTIONS(1556), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1048), 29, + ACTIONS(1554), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72250,15 +72424,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57305] = 3, + [57549] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1646), 4, + ACTIONS(1580), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1644), 29, + ACTIONS(1578), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72288,15 +72462,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57346] = 3, + [57590] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1650), 4, + ACTIONS(1682), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1648), 29, + ACTIONS(1680), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72326,15 +72500,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57387] = 3, + [57631] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1654), 4, + ACTIONS(1052), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1652), 29, + ACTIONS(1050), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72364,15 +72538,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57428] = 3, + [57672] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1658), 4, + ACTIONS(1596), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1656), 29, + ACTIONS(1594), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72402,15 +72576,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57469] = 3, + [57713] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1662), 4, + ACTIONS(1576), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1660), 29, + ACTIONS(1574), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72440,15 +72614,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57510] = 3, + [57754] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1710), 4, + ACTIONS(272), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1708), 29, + ACTIONS(303), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72478,15 +72652,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57551] = 3, + [57795] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1666), 4, + ACTIONS(1612), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1664), 29, + ACTIONS(1610), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72516,15 +72690,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57592] = 3, + [57836] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1674), 4, + ACTIONS(1620), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1672), 29, + ACTIONS(1618), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72554,15 +72728,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57633] = 3, + [57877] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1678), 4, + ACTIONS(1624), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1676), 29, + ACTIONS(1622), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72592,23 +72766,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57674] = 3, + [57918] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1032), 4, + ACTIONS(1488), 1, + anon_sym_COLON_EQ, + ACTIONS(1908), 1, + anon_sym_EQ, + ACTIONS(1241), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1030), 29, + ACTIONS(1236), 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, @@ -72630,15 +72806,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57715] = 3, + [57963] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1682), 4, + ACTIONS(1674), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1680), 29, + ACTIONS(1672), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72668,23 +72844,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57756] = 3, + [58004] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1686), 4, + ACTIONS(590), 1, + anon_sym_COLON_EQ, + ACTIONS(656), 1, + anon_sym_EQ, + ACTIONS(272), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1684), 29, + ACTIONS(303), 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, @@ -72706,15 +72884,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57797] = 3, + [58049] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 4, + ACTIONS(1560), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 29, + ACTIONS(1558), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72744,15 +72922,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57838] = 3, + [58090] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 4, + ACTIONS(1670), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 29, + ACTIONS(1668), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72782,15 +72960,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57879] = 3, + [58131] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1694), 4, + ACTIONS(1564), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1692), 29, + ACTIONS(1562), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72820,15 +72998,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57920] = 3, + [58172] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1698), 4, + ACTIONS(1568), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1696), 29, + ACTIONS(1566), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72858,15 +73036,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [57961] = 3, + [58213] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1690), 4, + ACTIONS(1572), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1688), 29, + ACTIONS(1570), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72896,15 +73074,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58002] = 3, + [58254] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 4, + ACTIONS(1584), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 29, + ACTIONS(1582), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72934,15 +73112,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58043] = 3, + [58295] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 4, + ACTIONS(1608), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 29, + ACTIONS(1606), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -72972,15 +73150,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58084] = 3, + [58336] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1706), 4, + ACTIONS(1588), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1704), 29, + ACTIONS(1586), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -73010,15 +73188,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58125] = 3, + [58377] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1702), 4, + ACTIONS(1592), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1700), 29, + ACTIONS(1590), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -73048,194 +73226,99 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58166] = 20, + [58418] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1874), 1, - sym_identifier, - ACTIONS(1876), 1, - anon_sym_LPAREN, - ACTIONS(1878), 1, + ACTIONS(1592), 4, anon_sym_STAR, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, - anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1307), 4, - sym__match_pattern, - sym_match_as_pattern, - sym__match_maybe_star_pattern, - sym_match_star_pattern, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [58241] = 22, - ACTIONS(3), 1, - sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1876), 1, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1590), 29, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(1884), 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, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1912), 1, - sym_identifier, - ACTIONS(1914), 1, - anon_sym_RPAREN, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1424), 1, - sym_match_keyword_pattern, - STATE(1558), 1, - sym_match_positional_pattern, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1611), 2, - sym__match_pattern, - sym_match_as_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [58320] = 22, + 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, + [58459] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1876), 1, + ACTIONS(1600), 4, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1598), 29, + anon_sym_DOT, anon_sym_LPAREN, - ACTIONS(1884), 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, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, + anon_sym_PLUS, anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1912), 1, - sym_identifier, - ACTIONS(1916), 1, - anon_sym_RPAREN, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1421), 1, - sym_match_keyword_pattern, - STATE(1558), 1, - sym_match_positional_pattern, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1611), 2, - sym__match_pattern, - sym_match_as_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [58399] = 5, + 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, + [58500] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1488), 1, - anon_sym_COLON_EQ, - ACTIONS(1898), 1, - anon_sym_EQ, - ACTIONS(1209), 4, + ACTIONS(1604), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 27, + ACTIONS(1602), 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, @@ -73257,15 +73340,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58444] = 3, + [58541] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1209), 4, + ACTIONS(1710), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1204), 29, + ACTIONS(1708), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -73295,25 +73378,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58485] = 5, + [58582] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(590), 1, - anon_sym_COLON_EQ, - ACTIONS(634), 1, - anon_sym_EQ, - ACTIONS(272), 4, + ACTIONS(1576), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 27, + ACTIONS(1574), 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, @@ -73335,72 +73416,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58530] = 22, - ACTIONS(3), 1, - sym_comment, - ACTIONS(664), 1, - sym__string_start, - ACTIONS(666), 1, - sym__template_string_start, - ACTIONS(1876), 1, - anon_sym_LPAREN, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, - sym_match_wildcard_pattern, - ACTIONS(1888), 1, - anon_sym_LBRACK, - ACTIONS(1890), 1, - anon_sym_LBRACE, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1912), 1, - sym_identifier, - ACTIONS(1918), 1, - anon_sym_RPAREN, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, - sym_string, - STATE(1488), 1, - sym_match_positional_pattern, - STATE(1493), 1, - sym_match_keyword_pattern, - STATE(1650), 1, - sym_pattern_class_name, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1240), 2, - sym__match_or_pattern, - sym_match_or_pattern, - STATE(1611), 2, - sym__match_pattern, - sym_match_as_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - STATE(1117), 8, - sym__closed_pattern, - sym_match_literal_pattern, - sym_match_capture_pattern, - sym_match_value_pattern, - sym_match_group_pattern, - sym_match_sequence_pattern, - sym_match_mapping_pattern, - sym_match_class_pattern, - [58609] = 3, + [58623] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(272), 4, + ACTIONS(1576), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(303), 29, + ACTIONS(1574), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -73430,15 +73454,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58650] = 3, + [58664] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1614), 4, + ACTIONS(1616), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1612), 29, + ACTIONS(1614), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -73468,15 +73492,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58691] = 3, + [58705] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1642), 4, + ACTIONS(1628), 4, anon_sym_STAR, anon_sym_SLASH, anon_sym_LT, anon_sym_GT, - ACTIONS(1640), 29, + ACTIONS(1626), 29, anon_sym_DOT, anon_sym_LPAREN, anon_sym_RPAREN, @@ -73506,51 +73530,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_GT_EQ, anon_sym_LT_GT, anon_sym_is, - [58732] = 20, + [58746] = 20, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(1874), 1, + ACTIONS(1840), 1, sym_identifier, - ACTIONS(1876), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, + ACTIONS(1852), 1, sym_match_wildcard_pattern, - ACTIONS(1888), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1890), 1, + ACTIONS(1856), 1, anon_sym_LBRACE, - ACTIONS(1892), 1, + ACTIONS(1858), 1, sym_integer, - ACTIONS(1894), 1, + ACTIONS(1860), 1, sym_float, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, + STATE(1056), 1, sym_string, + STATE(1067), 1, + sym_template_string, STATE(1558), 1, sym_match_positional_pattern, - STATE(1650), 1, + STATE(1662), 1, sym_pattern_class_name, - STATE(1116), 2, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1240), 2, + STATE(1198), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1611), 2, + STATE(1604), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1896), 3, + ACTIONS(1862), 3, sym_true, sym_false, sym_none, - STATE(1117), 8, + STATE(1114), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -73559,49 +73584,50 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [58805] = 19, + [58820] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(1874), 1, + ACTIONS(1840), 1, sym_identifier, - ACTIONS(1876), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, + ACTIONS(1852), 1, sym_match_wildcard_pattern, - ACTIONS(1888), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1890), 1, + ACTIONS(1856), 1, anon_sym_LBRACE, - ACTIONS(1892), 1, + ACTIONS(1858), 1, sym_integer, - ACTIONS(1894), 1, + ACTIONS(1860), 1, sym_float, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, + STATE(1056), 1, sym_string, - STATE(1650), 1, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, sym_pattern_class_name, - STATE(1116), 2, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1240), 2, + STATE(1198), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1534), 2, + STATE(1553), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1896), 3, + ACTIONS(1862), 3, sym_true, sym_false, sym_none, - STATE(1117), 8, + STATE(1114), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -73610,49 +73636,50 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [58875] = 19, + [58891] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(1874), 1, + ACTIONS(1840), 1, sym_identifier, - ACTIONS(1876), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1886), 1, + ACTIONS(1852), 1, sym_match_wildcard_pattern, - ACTIONS(1888), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1890), 1, + ACTIONS(1856), 1, anon_sym_LBRACE, - ACTIONS(1892), 1, + ACTIONS(1858), 1, sym_integer, - ACTIONS(1894), 1, + ACTIONS(1860), 1, sym_float, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, + STATE(1056), 1, sym_string, - STATE(1650), 1, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, sym_pattern_class_name, - STATE(1116), 2, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, sym_concatenated_string, sym_concatenated_template_string, - STATE(1240), 2, + STATE(1198), 2, sym__match_or_pattern, sym_match_or_pattern, - STATE(1549), 2, + STATE(1613), 2, sym__match_pattern, sym_match_as_pattern, - ACTIONS(1896), 3, + ACTIONS(1862), 3, sym_true, sym_false, sym_none, - STATE(1117), 8, + STATE(1114), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -73661,43 +73688,44 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [58945] = 17, + [58962] = 17, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(1874), 1, + ACTIONS(1840), 1, sym_identifier, - ACTIONS(1876), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1888), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1890), 1, + ACTIONS(1856), 1, anon_sym_LBRACE, - ACTIONS(1892), 1, + ACTIONS(1858), 1, sym_integer, - ACTIONS(1894), 1, + ACTIONS(1860), 1, sym_float, ACTIONS(1920), 1, sym_match_wildcard_pattern, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, + STATE(1056), 1, sym_string, - STATE(1650), 1, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, sym_pattern_class_name, - STATE(1116), 2, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, sym_concatenated_string, sym_concatenated_template_string, - ACTIONS(1896), 3, + ACTIONS(1862), 3, sym_true, sym_false, sym_none, - STATE(1136), 8, + STATE(1141), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -73706,43 +73734,44 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [59007] = 17, + [59025] = 17, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, + ACTIONS(652), 1, sym__string_start, - ACTIONS(666), 1, + ACTIONS(654), 1, sym__template_string_start, - ACTIONS(1874), 1, + ACTIONS(1840), 1, sym_identifier, - ACTIONS(1876), 1, + ACTIONS(1842), 1, anon_sym_LPAREN, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1888), 1, + ACTIONS(1854), 1, anon_sym_LBRACK, - ACTIONS(1890), 1, + ACTIONS(1856), 1, anon_sym_LBRACE, - ACTIONS(1892), 1, + ACTIONS(1858), 1, sym_integer, - ACTIONS(1894), 1, + ACTIONS(1860), 1, sym_float, ACTIONS(1922), 1, sym_match_wildcard_pattern, - STATE(1043), 1, - sym_template_string, - STATE(1068), 1, + STATE(1056), 1, sym_string, - STATE(1650), 1, + STATE(1067), 1, + sym_template_string, + STATE(1662), 1, sym_pattern_class_name, - STATE(1116), 2, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, sym_concatenated_string, sym_concatenated_template_string, - ACTIONS(1896), 3, + ACTIONS(1862), 3, sym_true, sym_false, sym_none, - STATE(1101), 8, + STATE(1105), 8, sym__closed_pattern, sym_match_literal_pattern, sym_match_capture_pattern, @@ -73751,11 +73780,11 @@ static const uint16_t ts_small_parse_table[] = { sym_match_sequence_pattern, sym_match_mapping_pattern, sym_match_class_pattern, - [59069] = 8, + [59088] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1926), 1, - anon_sym_as, + ACTIONS(1929), 1, + anon_sym_EQ, ACTIONS(1931), 1, anon_sym_not, ACTIONS(1937), 1, @@ -73765,7 +73794,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(1934), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1928), 6, + ACTIONS(1926), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, @@ -73776,65 +73805,65 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [59108] = 8, + [59127] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1578), 1, + ACTIONS(1929), 1, + anon_sym_as, + ACTIONS(1943), 1, anon_sym_not, - ACTIONS(1586), 1, + ACTIONS(1949), 1, anon_sym_is, - ACTIONS(1942), 1, - anon_sym_EQ, - STATE(999), 1, + STATE(997), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1584), 2, + ACTIONS(1946), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1564), 6, + ACTIONS(1940), 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(1940), 9, + ACTIONS(1924), 9, 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, - [59147] = 8, + [59166] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1602), 1, + ACTIONS(1698), 1, anon_sym_not, - ACTIONS(1610), 1, + ACTIONS(1706), 1, anon_sym_is, - ACTIONS(1942), 1, + ACTIONS(1954), 1, anon_sym_as, - STATE(996), 1, + STATE(997), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1608), 2, + ACTIONS(1704), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1592), 6, + ACTIONS(1688), 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(1940), 9, + ACTIONS(1952), 9, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -73844,28 +73873,28 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [59186] = 8, + [59205] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1926), 1, - anon_sym_EQ, - ACTIONS(1947), 1, + ACTIONS(1654), 1, anon_sym_not, - ACTIONS(1953), 1, + ACTIONS(1662), 1, anon_sym_is, - STATE(999), 1, + ACTIONS(1954), 1, + anon_sym_EQ, + STATE(996), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1950), 2, + ACTIONS(1660), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1944), 6, + ACTIONS(1640), 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(1924), 9, + ACTIONS(1952), 9, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -73875,14 +73904,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [59225] = 4, + [59244] = 16, ACTIONS(3), 1, sym_comment, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1956), 1, + sym_identifier, ACTIONS(1958), 1, + anon_sym_RBRACE, + ACTIONS(1960), 1, + anon_sym_STAR_STAR, + STATE(1347), 1, + sym_string, + STATE(1348), 1, + sym_template_string, + STATE(1582), 1, + sym_match_key_value_pattern, + STATE(1606), 1, + sym_match_double_star_pattern, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1647), 2, + sym_match_literal_pattern, + sym_match_value_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + [59298] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1964), 1, anon_sym_COMMA, - STATE(1000), 1, + STATE(1001), 1, aux_sym__patterns_repeat1, - ACTIONS(1956), 18, + ACTIONS(1962), 18, anon_sym_RPAREN, anon_sym_COLON, anon_sym_in, @@ -73901,39 +73968,115 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [59255] = 8, + [59328] = 16, ACTIONS(3), 1, sym_comment, - ACTIONS(1926), 1, - anon_sym_EQ, - ACTIONS(1964), 1, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1956), 1, + sym_identifier, + ACTIONS(1960), 1, + anon_sym_STAR_STAR, + ACTIONS(1967), 1, + anon_sym_RBRACE, + STATE(1347), 1, + sym_string, + STATE(1348), 1, + sym_template_string, + STATE(1444), 1, + sym_match_key_value_pattern, + STATE(1545), 1, + sym_match_double_star_pattern, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1647), 2, + sym_match_literal_pattern, + sym_match_value_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + [59382] = 16, + ACTIONS(3), 1, + sym_comment, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1956), 1, + sym_identifier, + ACTIONS(1960), 1, + anon_sym_STAR_STAR, + ACTIONS(1969), 1, + anon_sym_RBRACE, + STATE(1347), 1, + sym_string, + STATE(1348), 1, + sym_template_string, + STATE(1578), 1, + sym_match_double_star_pattern, + STATE(1582), 1, + sym_match_key_value_pattern, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1647), 2, + sym_match_literal_pattern, + sym_match_value_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + [59436] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1786), 1, anon_sym_not, - ACTIONS(1970), 1, + ACTIONS(1794), 1, anon_sym_is, - STATE(1001), 1, + ACTIONS(1954), 1, + anon_sym_EQ, + STATE(1013), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1967), 2, + ACTIONS(1792), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1961), 6, + ACTIONS(1774), 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(1924), 7, - sym__newline, - anon_sym_from, + ACTIONS(1952), 7, anon_sym_COMMA, anon_sym_if, + anon_sym_RBRACE, anon_sym_and, anon_sym_or, - anon_sym_SEMI, - [59292] = 2, + anon_sym_COLON2, + sym_type_conversion, + [59473] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1973), 19, + ACTIONS(1971), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -73953,68 +74096,93 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [59317] = 8, + [59498] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1926), 1, - anon_sym_EQ, - ACTIONS(1978), 1, + ACTIONS(272), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(930), 3, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(303), 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, + [59527] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1828), 1, anon_sym_not, - ACTIONS(1984), 1, + ACTIONS(1836), 1, anon_sym_is, - STATE(1003), 1, + ACTIONS(1954), 1, + anon_sym_EQ, + STATE(1008), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1981), 2, + ACTIONS(1834), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1975), 6, + ACTIONS(1816), 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(1924), 7, + ACTIONS(1952), 7, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_if, - anon_sym_RBRACE, anon_sym_and, anon_sym_or, - anon_sym_COLON2, - sym_type_conversion, - [59354] = 8, + anon_sym_SEMI, + [59564] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(1828), 1, + ACTIONS(1929), 1, + anon_sym_EQ, + ACTIONS(1976), 1, anon_sym_not, - ACTIONS(1836), 1, + ACTIONS(1982), 1, anon_sym_is, - ACTIONS(1942), 1, - anon_sym_EQ, - STATE(1003), 1, + STATE(1008), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1834), 2, + ACTIONS(1979), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1816), 6, + ACTIONS(1973), 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(1940), 7, + ACTIONS(1924), 7, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_if, - anon_sym_RBRACE, anon_sym_and, anon_sym_or, - anon_sym_COLON2, - sym_type_conversion, - [59391] = 2, + anon_sym_SEMI, + [59601] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1272), 19, + ACTIONS(1985), 19, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, @@ -74034,228 +74202,45 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [59416] = 16, - ACTIONS(3), 1, - sym_comment, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1987), 1, - sym_identifier, - ACTIONS(1989), 1, - anon_sym_RBRACE, - ACTIONS(1991), 1, - anon_sym_STAR_STAR, - STATE(1369), 1, - sym_string, - STATE(1373), 1, - sym_template_string, - STATE(1557), 1, - sym_match_key_value_pattern, - STATE(1568), 1, - sym_match_double_star_pattern, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1652), 2, - sym_match_literal_pattern, - sym_match_value_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - [59469] = 16, - ACTIONS(3), 1, - sym_comment, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1987), 1, - sym_identifier, - ACTIONS(1991), 1, - anon_sym_STAR_STAR, - ACTIONS(1993), 1, - anon_sym_RBRACE, - STATE(1369), 1, - sym_string, - STATE(1373), 1, - sym_template_string, - STATE(1498), 1, - sym_match_key_value_pattern, - STATE(1553), 1, - sym_match_double_star_pattern, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1652), 2, - sym_match_literal_pattern, - sym_match_value_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - [59522] = 8, + [59626] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1768), 1, + ACTIONS(1756), 1, anon_sym_not, - ACTIONS(1776), 1, + ACTIONS(1764), 1, anon_sym_is, - ACTIONS(1942), 1, - anon_sym_EQ, - STATE(1001), 1, + STATE(1012), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1774), 2, + ACTIONS(1762), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1756), 6, + ACTIONS(1746), 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(1940), 7, - sym__newline, - anon_sym_from, + ACTIONS(1952), 8, anon_sym_COMMA, anon_sym_if, - anon_sym_and, - anon_sym_or, - anon_sym_SEMI, - [59559] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1995), 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, - [59584] = 16, - ACTIONS(3), 1, - sym_comment, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1987), 1, - sym_identifier, - ACTIONS(1991), 1, - anon_sym_STAR_STAR, - ACTIONS(1997), 1, + anon_sym_async, + anon_sym_for, anon_sym_RBRACE, - STATE(1369), 1, - sym_string, - STATE(1373), 1, - sym_template_string, - STATE(1555), 1, - sym_match_double_star_pattern, - STATE(1557), 1, - sym_match_key_value_pattern, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1652), 2, - sym_match_literal_pattern, - sym_match_value_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - [59637] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(272), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(928), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - ACTIONS(303), 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, - [59666] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1999), 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, - [59691] = 4, + anon_sym_and, + anon_sym_or, + [59661] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1209), 2, + ACTIONS(1241), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(2001), 3, + ACTIONS(1987), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - ACTIONS(1204), 14, + ACTIONS(1236), 14, anon_sym_DOT, anon_sym_LPAREN, anon_sym_GT_GT, @@ -74270,26 +74255,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, anon_sym_CARET, anon_sym_LT_LT, - [59720] = 7, + [59690] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(1792), 1, + ACTIONS(1992), 1, anon_sym_not, - ACTIONS(1800), 1, + ACTIONS(1998), 1, anon_sym_is, - STATE(1015), 1, + STATE(1012), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(1798), 2, + ACTIONS(1995), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(1782), 6, + ACTIONS(1989), 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(1940), 8, + ACTIONS(1924), 8, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, @@ -74298,131 +74283,154 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [59755] = 7, + [59725] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2006), 1, + ACTIONS(1929), 1, + anon_sym_EQ, + ACTIONS(2004), 1, anon_sym_not, - ACTIONS(2012), 1, + ACTIONS(2010), 1, anon_sym_is, - STATE(1015), 1, + STATE(1013), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(2009), 2, + ACTIONS(2007), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(2003), 6, + ACTIONS(2001), 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(1924), 8, + ACTIONS(1924), 7, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_RBRACE, anon_sym_and, anon_sym_or, - [59790] = 7, + anon_sym_COLON2, + sym_type_conversion, + [59762] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1860), 1, - anon_sym_not, - ACTIONS(1868), 1, - anon_sym_is, - STATE(1019), 1, - aux_sym_comparison_operator_repeat1, - ACTIONS(1866), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(1848), 6, + ACTIONS(1280), 19, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_COLON, anon_sym_in, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_GT_EQ, - anon_sym_LT_GT, - ACTIONS(1940), 7, + 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, + [59787] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2013), 19, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, anon_sym_COLON, - anon_sym_and, - anon_sym_or, - [59824] = 13, + 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, + [59812] = 13, ACTIONS(3), 1, sym_comment, - ACTIONS(1554), 1, + ACTIONS(1630), 1, anon_sym_DOT, - ACTIONS(1556), 1, + ACTIONS(1632), 1, anon_sym_LPAREN, - ACTIONS(1566), 1, + ACTIONS(1642), 1, anon_sym_PIPE, - ACTIONS(1570), 1, + ACTIONS(1646), 1, anon_sym_LBRACK, - ACTIONS(1572), 1, + ACTIONS(1648), 1, anon_sym_STAR_STAR, - ACTIONS(1580), 1, + ACTIONS(1656), 1, anon_sym_AMP, - ACTIONS(1582), 1, + ACTIONS(1658), 1, anon_sym_CARET, - ACTIONS(1560), 2, + ACTIONS(1636), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(1562), 2, + ACTIONS(1638), 2, anon_sym_GT_GT, anon_sym_LT_LT, - ACTIONS(1568), 2, + ACTIONS(1644), 2, anon_sym_DASH, anon_sym_PLUS, - STATE(708), 2, + STATE(731), 2, sym_argument_list, sym_generator_expression, - ACTIONS(1576), 3, + ACTIONS(1652), 3, anon_sym_AT, anon_sym_PERCENT, anon_sym_SLASH_SLASH, - [59870] = 4, + [59858] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2015), 1, + ACTIONS(1884), 1, + anon_sym_not, + ACTIONS(1892), 1, + anon_sym_is, + STATE(1018), 1, + aux_sym_comparison_operator_repeat1, + ACTIONS(1890), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1872), 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(1952), 7, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1000), 1, - aux_sym__patterns_repeat1, - ACTIONS(2017), 16, + anon_sym_as, + anon_sym_if, anon_sym_COLON, - anon_sym_in, - 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, - [59898] = 7, + anon_sym_and, + anon_sym_or, + [59892] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2022), 1, + ACTIONS(2018), 1, anon_sym_not, - ACTIONS(2028), 1, + ACTIONS(2024), 1, anon_sym_is, - STATE(1019), 1, + STATE(1018), 1, aux_sym_comparison_operator_repeat1, - ACTIONS(2025), 2, + ACTIONS(2021), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(2019), 6, + ACTIONS(2015), 6, anon_sym_in, anon_sym_LT_EQ, anon_sym_EQ_EQ, @@ -74437,18 +74445,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_and, anon_sym_or, - [59932] = 6, + [59926] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2031), 1, + ACTIONS(2027), 1, anon_sym_COMMA, - ACTIONS(2033), 1, + STATE(1001), 1, + aux_sym__patterns_repeat1, + ACTIONS(2029), 16, anon_sym_COLON, - ACTIONS(2035), 1, + anon_sym_in, anon_sym_EQ, - STATE(1018), 1, - aux_sym__patterns_repeat1, - ACTIONS(2037), 13, anon_sym_PLUS_EQ, anon_sym_DASH_EQ, anon_sym_STAR_EQ, @@ -74462,291 +74469,317 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [59963] = 12, + [59954] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2031), 1, sym_identifier, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2045), 1, + ACTIONS(2037), 1, anon_sym_COLON, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, - STATE(1406), 1, + STATE(1517), 1, sym_parameter, - STATE(1689), 1, + STATE(1685), 1, sym__parameters, - STATE(1691), 1, + STATE(1715), 1, sym_lambda_parameters, - STATE(1606), 2, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60006] = 12, + [59997] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2031), 1, sym_identifier, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, - ACTIONS(2051), 1, + ACTIONS(2043), 1, anon_sym_COLON, - STATE(1406), 1, + STATE(1517), 1, sym_parameter, - STATE(1689), 1, + STATE(1685), 1, sym__parameters, - STATE(1752), 1, + STATE(1718), 1, sym_lambda_parameters, - STATE(1606), 2, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60049] = 12, + [60040] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2045), 1, + anon_sym_COMMA, + ACTIONS(2047), 1, + anon_sym_COLON, + ACTIONS(2049), 1, + anon_sym_EQ, + STATE(1019), 1, + aux_sym__patterns_repeat1, + ACTIONS(2051), 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, + [60071] = 13, + ACTIONS(3), 1, + sym_comment, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(1858), 1, + sym_integer, + ACTIONS(1860), 1, + sym_float, + ACTIONS(1956), 1, sym_identifier, - ACTIONS(2041), 1, + STATE(1347), 1, + sym_string, + STATE(1348), 1, + sym_template_string, + STATE(1582), 1, + sym_match_key_value_pattern, + ACTIONS(1850), 2, + anon_sym_DASH, + anon_sym_PLUS, + STATE(1174), 2, + sym_concatenated_string, + sym_concatenated_template_string, + STATE(1647), 2, + sym_match_literal_pattern, + sym_match_value_pattern, + ACTIONS(1862), 3, + sym_true, + sym_false, + sym_none, + [60116] = 12, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2031), 1, + sym_identifier, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, ACTIONS(2053), 1, anon_sym_COLON, - STATE(1406), 1, + STATE(1517), 1, sym_parameter, - STATE(1639), 1, - sym_lambda_parameters, - STATE(1689), 1, + STATE(1685), 1, sym__parameters, - STATE(1606), 2, + STATE(1701), 1, + sym_lambda_parameters, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60092] = 12, + [60159] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2031), 1, sym_identifier, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, ACTIONS(2055), 1, anon_sym_COLON, - STATE(1406), 1, + STATE(1517), 1, sym_parameter, - STATE(1689), 1, + STATE(1685), 1, sym__parameters, - STATE(1729), 1, + STATE(1717), 1, sym_lambda_parameters, - STATE(1606), 2, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60135] = 12, + [60202] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2031), 1, sym_identifier, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, ACTIONS(2057), 1, anon_sym_COLON, - STATE(1406), 1, + STATE(1517), 1, sym_parameter, - STATE(1667), 1, - sym_lambda_parameters, - STATE(1689), 1, + STATE(1685), 1, sym__parameters, - STATE(1606), 2, + STATE(1704), 1, + sym_lambda_parameters, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60178] = 12, + [60245] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2031), 1, sym_identifier, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, ACTIONS(2059), 1, anon_sym_COLON, - STATE(1406), 1, + STATE(1517), 1, sym_parameter, - STATE(1689), 1, - sym__parameters, - STATE(1697), 1, + STATE(1659), 1, sym_lambda_parameters, - STATE(1606), 2, + STATE(1685), 1, + sym__parameters, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60221] = 12, + [60288] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2031), 1, sym_identifier, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, ACTIONS(2061), 1, anon_sym_COLON, - STATE(1406), 1, + STATE(1517), 1, sym_parameter, - STATE(1689), 1, - sym__parameters, - STATE(1732), 1, + STATE(1683), 1, sym_lambda_parameters, - STATE(1606), 2, + STATE(1685), 1, + sym__parameters, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60264] = 11, + [60331] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, ACTIONS(2063), 1, sym_identifier, ACTIONS(2065), 1, anon_sym_RPAREN, - STATE(1445), 1, + STATE(1497), 1, sym_parameter, - STATE(1682), 1, + STATE(1656), 1, sym__parameters, - STATE(1507), 2, + STATE(1520), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60304] = 13, - ACTIONS(3), 1, - sym_comment, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(1884), 1, - anon_sym_DASH, - ACTIONS(1892), 1, - sym_integer, - ACTIONS(1894), 1, - sym_float, - ACTIONS(1987), 1, - sym_identifier, - STATE(1369), 1, - sym_string, - STATE(1373), 1, - sym_template_string, - STATE(1557), 1, - sym_match_key_value_pattern, - STATE(1116), 2, - sym_concatenated_string, - sym_concatenated_template_string, - STATE(1652), 2, - sym_match_literal_pattern, - sym_match_value_pattern, - ACTIONS(1896), 3, - sym_true, - sym_false, - sym_none, - [60348] = 4, + [60371] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2033), 1, + ACTIONS(2047), 1, anon_sym_COLON, - ACTIONS(2035), 1, + ACTIONS(2049), 1, anon_sym_EQ, - ACTIONS(2037), 13, + ACTIONS(2051), 13, anon_sym_PLUS_EQ, anon_sym_DASH_EQ, anon_sym_STAR_EQ, @@ -74760,170 +74793,170 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP_EQ, anon_sym_CARET_EQ, anon_sym_PIPE_EQ, - [60373] = 10, + [60396] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(2041), 1, + ACTIONS(2031), 1, + sym_identifier, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, - ACTIONS(2063), 1, - sym_identifier, ACTIONS(2067), 1, - anon_sym_RPAREN, - STATE(1437), 1, + anon_sym_COLON, + STATE(1516), 1, sym_parameter, - STATE(1507), 2, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60410] = 10, + [60433] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2031), 1, sym_identifier, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, - ACTIONS(2067), 1, + ACTIONS(2069), 1, anon_sym_COLON, - STATE(1437), 1, + STATE(1516), 1, sym_parameter, - STATE(1606), 2, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60447] = 10, + [60470] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, ACTIONS(2063), 1, sym_identifier, - ACTIONS(2069), 1, + ACTIONS(2067), 1, anon_sym_RPAREN, - STATE(1437), 1, + STATE(1516), 1, sym_parameter, - STATE(1507), 2, + STATE(1520), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60484] = 10, + [60507] = 10, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, - sym_identifier, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, + ACTIONS(2063), 1, + sym_identifier, ACTIONS(2069), 1, - anon_sym_COLON, - STATE(1437), 1, + anon_sym_RPAREN, + STATE(1516), 1, sym_parameter, - STATE(1606), 2, + STATE(1520), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60521] = 9, + [60544] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, ACTIONS(2063), 1, sym_identifier, - STATE(1437), 1, + STATE(1516), 1, sym_parameter, - STATE(1507), 2, + STATE(1520), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60555] = 9, + [60578] = 9, ACTIONS(3), 1, sym_comment, - ACTIONS(2039), 1, + ACTIONS(2031), 1, sym_identifier, - ACTIONS(2041), 1, + ACTIONS(2033), 1, anon_sym_LPAREN, - ACTIONS(2043), 1, + ACTIONS(2035), 1, anon_sym_STAR, - ACTIONS(2047), 1, + ACTIONS(2039), 1, anon_sym_STAR_STAR, - ACTIONS(2049), 1, + ACTIONS(2041), 1, anon_sym_SLASH, - STATE(1437), 1, + STATE(1516), 1, sym_parameter, - STATE(1606), 2, + STATE(1608), 2, sym_list_splat_pattern, sym_dictionary_splat_pattern, - STATE(1410), 6, + STATE(1518), 6, sym_tuple_pattern, sym_default_parameter, sym_typed_default_parameter, sym_typed_parameter, sym_positional_separator, sym_keyword_separator, - [60589] = 3, + [60612] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1574), 1, + ACTIONS(2073), 1, anon_sym_as, - ACTIONS(1558), 12, + ACTIONS(2071), 12, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -74936,12 +74969,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ, anon_sym_and, anon_sym_or, - [60610] = 3, + [60633] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2073), 1, + ACTIONS(1650), 1, anon_sym_as, - ACTIONS(2071), 12, + ACTIONS(1634), 12, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -74954,7 +74987,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ, anon_sym_and, anon_sym_or, - [60631] = 4, + [60654] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(2077), 1, @@ -74972,7 +75005,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [60653] = 9, + [60676] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, @@ -74981,343 +75014,282 @@ static const uint16_t ts_small_parse_table[] = { sym_comment, ACTIONS(2088), 1, sym__string_end, - STATE(1056), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60684] = 12, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2092), 1, - anon_sym_if, - ACTIONS(2094), 1, - anon_sym_COLON, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2100), 1, - anon_sym_RBRACE, - ACTIONS(2102), 1, - anon_sym_and, - ACTIONS(2104), 1, - anon_sym_or, - STATE(1106), 1, - sym_for_in_clause, - STATE(1310), 1, - aux_sym__collection_elements_repeat1, - STATE(1676), 1, - sym__comprehension_clauses, - [60721] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2106), 1, - anon_sym_DOT, - ACTIONS(2108), 1, - anon_sym_LPAREN, - STATE(1064), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2110), 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, - [60744] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(666), 1, - sym__template_string_start, - STATE(750), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - ACTIONS(2112), 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, - [60765] = 9, + [60707] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2114), 1, + ACTIONS(2090), 1, sym__string_end, - STATE(1046), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60796] = 9, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(2116), 1, - anon_sym_LBRACE2, - ACTIONS(2122), 1, - anon_sym_BSLASH, - ACTIONS(2125), 1, - sym__string_end, - STATE(1045), 1, - aux_sym_string_repeat1, - STATE(1248), 1, - sym_string_content, - STATE(1252), 1, - sym_interpolation, - STATE(1149), 2, - sym__not_escape_sequence, - aux_sym_string_content_repeat1, - ACTIONS(2119), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [60827] = 9, + [60738] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2127), 1, + ACTIONS(2092), 1, sym__string_end, - STATE(1045), 1, + STATE(1058), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60858] = 12, + [60769] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2092), 1, - anon_sym_if, ACTIONS(2094), 1, - anon_sym_COLON, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2100), 1, - anon_sym_RBRACE, - ACTIONS(2102), 1, - anon_sym_and, - ACTIONS(2104), 1, - anon_sym_or, - STATE(1106), 1, - sym_for_in_clause, - STATE(1310), 1, - aux_sym__collection_elements_repeat1, - STATE(1728), 1, - sym__comprehension_clauses, - [60895] = 12, - ACTIONS(3), 1, - sym_comment, + anon_sym_DOT, ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2129), 1, + anon_sym_LPAREN, + STATE(1039), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2098), 8, anon_sym_RPAREN, - ACTIONS(2131), 1, anon_sym_COMMA, - ACTIONS(2134), 1, anon_sym_as, - ACTIONS(2136), 1, anon_sym_if, - ACTIONS(2138), 1, - anon_sym_and, - ACTIONS(2140), 1, - anon_sym_or, - STATE(1106), 1, - sym_for_in_clause, - STATE(1310), 1, - aux_sym__collection_elements_repeat1, - STATE(1711), 1, - sym__comprehension_clauses, - [60932] = 9, - ACTIONS(2080), 1, - anon_sym_LBRACE2, - ACTIONS(2084), 1, - anon_sym_BSLASH, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [60792] = 9, ACTIONS(2086), 1, sym_comment, - ACTIONS(2142), 1, + ACTIONS(2100), 1, + anon_sym_LBRACE2, + ACTIONS(2106), 1, + anon_sym_BSLASH, + ACTIONS(2109), 1, sym__string_end, - STATE(1051), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, - ACTIONS(2082), 3, + ACTIONS(2103), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60963] = 9, + [60823] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2144), 1, + ACTIONS(2111), 1, sym__string_end, - STATE(1052), 1, + STATE(1040), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [60994] = 9, + [60854] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2146), 1, + ACTIONS(2113), 1, sym__string_end, - STATE(1045), 1, + STATE(1047), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61025] = 9, + [60885] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2148), 1, + ACTIONS(2115), 1, sym__string_end, - STATE(1045), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61056] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2075), 11, - anon_sym_import, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [61073] = 9, + [60916] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2150), 1, + ACTIONS(2117), 1, sym__string_end, - STATE(1057), 1, + STATE(1050), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61104] = 9, + [60947] = 12, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2119), 1, + anon_sym_RPAREN, + ACTIONS(2121), 1, + anon_sym_COMMA, + ACTIONS(2124), 1, + anon_sym_as, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2132), 1, + anon_sym_and, + ACTIONS(2134), 1, + anon_sym_or, + STATE(1101), 1, + sym_for_in_clause, + STATE(1285), 1, + aux_sym__collection_elements_repeat1, + STATE(1723), 1, + sym__comprehension_clauses, + [60984] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2152), 1, + ACTIONS(2136), 1, sym__string_end, - STATE(1058), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61135] = 9, + [61015] = 12, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2140), 1, + anon_sym_if, + ACTIONS(2142), 1, + anon_sym_COLON, + ACTIONS(2144), 1, + anon_sym_RBRACE, + ACTIONS(2146), 1, + anon_sym_and, + ACTIONS(2148), 1, + anon_sym_or, + STATE(1101), 1, + sym_for_in_clause, + STATE(1285), 1, + aux_sym__collection_elements_repeat1, + STATE(1641), 1, + sym__comprehension_clauses, + [61052] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2094), 1, + anon_sym_DOT, + ACTIONS(2150), 1, + anon_sym_LPAREN, + STATE(1043), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2152), 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, + [61075] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, @@ -75326,272 +75298,311 @@ static const uint16_t ts_small_parse_table[] = { sym_comment, ACTIONS(2154), 1, sym__string_end, - STATE(1045), 1, + STATE(1060), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61166] = 9, + [61106] = 12, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2140), 1, + anon_sym_if, + ACTIONS(2142), 1, + anon_sym_COLON, + ACTIONS(2144), 1, + anon_sym_RBRACE, + ACTIONS(2146), 1, + anon_sym_and, + ACTIONS(2148), 1, + anon_sym_or, + STATE(1101), 1, + sym_for_in_clause, + STATE(1285), 1, + aux_sym__collection_elements_repeat1, + STATE(1628), 1, + sym__comprehension_clauses, + [61143] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2075), 11, + anon_sym_import, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, + anon_sym_if, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [61160] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(652), 1, + sym__string_start, + STATE(766), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + ACTIONS(2156), 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, + [61181] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2156), 1, + ACTIONS(2158), 1, sym__string_end, - STATE(1045), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61197] = 9, + [61212] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2158), 1, + ACTIONS(2160), 1, sym__string_end, - STATE(1045), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61228] = 9, + [61243] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2160), 1, + ACTIONS(2162), 1, sym__string_end, - STATE(1065), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61259] = 9, + [61274] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2162), 1, + ACTIONS(2164), 1, sym__string_end, - STATE(1062), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61290] = 9, + [61305] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2164), 1, + ACTIONS(2166), 1, sym__string_end, STATE(1066), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61321] = 9, + [61336] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2166), 1, + ACTIONS(2168), 1, sym__string_end, - STATE(1045), 1, + STATE(1041), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61352] = 12, + [61367] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2138), 1, anon_sym_COMMA, - ACTIONS(2092), 1, + ACTIONS(2140), 1, anon_sym_if, - ACTIONS(2094), 1, + ACTIONS(2142), 1, anon_sym_COLON, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2144), 1, anon_sym_RBRACE, - ACTIONS(2102), 1, + ACTIONS(2146), 1, anon_sym_and, - ACTIONS(2104), 1, + ACTIONS(2148), 1, anon_sym_or, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1310), 1, + STATE(1285), 1, aux_sym__collection_elements_repeat1, - STATE(1695), 1, + STATE(1728), 1, sym__comprehension_clauses, - [61389] = 5, + [61404] = 12, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, - anon_sym_DOT, - ACTIONS(2168), 1, - anon_sym_LPAREN, - STATE(1039), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2170), 8, - anon_sym_RPAREN, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2138), 1, anon_sym_COMMA, - anon_sym_as, + ACTIONS(2140), 1, anon_sym_if, + ACTIONS(2142), 1, anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, + ACTIONS(2144), 1, anon_sym_RBRACE, - [61412] = 9, + ACTIONS(2146), 1, + anon_sym_and, + ACTIONS(2148), 1, + anon_sym_or, + STATE(1101), 1, + sym_for_in_clause, + STATE(1285), 1, + aux_sym__collection_elements_repeat1, + STATE(1627), 1, + sym__comprehension_clauses, + [61441] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2172), 1, + ACTIONS(2170), 1, sym__string_end, - STATE(1045), 1, + STATE(1057), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61443] = 9, + [61472] = 9, ACTIONS(2080), 1, anon_sym_LBRACE2, ACTIONS(2084), 1, anon_sym_BSLASH, ACTIONS(2086), 1, sym_comment, - ACTIONS(2174), 1, + ACTIONS(2172), 1, sym__string_end, - STATE(1045), 1, + STATE(1044), 1, aux_sym_string_repeat1, - STATE(1248), 1, + STATE(1277), 1, sym_string_content, - STATE(1252), 1, + STATE(1280), 1, sym_interpolation, - STATE(1149), 2, + STATE(1170), 2, sym__not_escape_sequence, aux_sym_string_content_repeat1, ACTIONS(2082), 3, sym__string_content, sym__escape_interpolation, sym_escape_sequence, - [61474] = 12, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2092), 1, - anon_sym_if, - ACTIONS(2094), 1, - anon_sym_COLON, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2100), 1, - anon_sym_RBRACE, - ACTIONS(2102), 1, - anon_sym_and, - ACTIONS(2104), 1, - anon_sym_or, - STATE(1106), 1, - sym_for_in_clause, - STATE(1310), 1, - aux_sym__collection_elements_repeat1, - STATE(1717), 1, - sym__comprehension_clauses, - [61511] = 4, + [61503] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(664), 1, - sym__string_start, - STATE(749), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - ACTIONS(2112), 8, + ACTIONS(654), 1, + sym__template_string_start, + STATE(762), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + ACTIONS(2156), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -75600,89 +75611,120 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61532] = 4, + [61524] = 9, + ACTIONS(2080), 1, + anon_sym_LBRACE2, + ACTIONS(2084), 1, + anon_sym_BSLASH, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2174), 1, + sym__string_end, + STATE(1059), 1, + aux_sym_string_repeat1, + STATE(1277), 1, + sym_string_content, + STATE(1280), 1, + sym_interpolation, + STATE(1170), 2, + sym__not_escape_sequence, + aux_sym_string_content_repeat1, + ACTIONS(2082), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [61555] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2138), 1, - anon_sym_and, - ACTIONS(2178), 1, - anon_sym_as, + ACTIONS(2178), 2, + anon_sym_DASH, + anon_sym_PLUS, ACTIONS(2176), 8, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_or, - [61552] = 11, + [61573] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, + ACTIONS(2138), 1, + anon_sym_COMMA, ACTIONS(2180), 1, anon_sym_RPAREN, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1310), 1, + STATE(1285), 1, aux_sym__collection_elements_repeat1, - STATE(1628), 1, + STATE(1621), 1, sym__comprehension_clauses, - [61586] = 4, + [61607] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2176), 8, + ACTIONS(2182), 1, anon_sym_RPAREN, + ACTIONS(2184), 1, anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_else, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - [61606] = 6, + STATE(1101), 1, + sym_for_in_clause, + STATE(1463), 1, + aux_sym_argument_list_repeat1, + STATE(1621), 1, + sym__comprehension_clauses, + [61641] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2136), 1, + ACTIONS(2126), 1, anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2188), 1, - anon_sym_as, - ACTIONS(2186), 6, + ACTIONS(2186), 1, anon_sym_RPAREN, + ACTIONS(2188), 1, anon_sym_COMMA, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - [61630] = 5, + STATE(1101), 1, + sym_for_in_clause, + STATE(1483), 1, + aux_sym_argument_list_repeat1, + STATE(1708), 1, + sym__comprehension_clauses, + [61675] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, - anon_sym_or, ACTIONS(2192), 1, anon_sym_as, - ACTIONS(2190), 7, + ACTIONS(2190), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -75690,285 +75732,318 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [61652] = 11, + anon_sym_or, + [61695] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(2132), 1, + anon_sym_and, + ACTIONS(2134), 1, + anon_sym_or, + ACTIONS(2196), 1, + anon_sym_as, + ACTIONS(2194), 7, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2096), 1, + anon_sym_if, anon_sym_async, - ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2129), 1, - anon_sym_RPAREN, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, - anon_sym_and, - ACTIONS(2140), 1, - anon_sym_or, - STATE(1106), 1, - sym_for_in_clause, - STATE(1310), 1, - aux_sym__collection_elements_repeat1, - STATE(1711), 1, - sym__comprehension_clauses, - [61686] = 11, + anon_sym_RBRACK, + anon_sym_RBRACE, + [61717] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2194), 1, + ACTIONS(2198), 1, anon_sym_RPAREN, - ACTIONS(2196), 1, + ACTIONS(2200), 1, anon_sym_COMMA, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1476), 1, + STATE(1443), 1, aux_sym_argument_list_repeat1, - STATE(1673), 1, + STATE(1723), 1, sym__comprehension_clauses, - [61720] = 5, + [61751] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2186), 7, + ACTIONS(2192), 1, + anon_sym_as, + ACTIONS(2190), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_COLON, - anon_sym_else, + anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - [61742] = 6, + [61773] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2136), 1, + ACTIONS(2126), 1, anon_sym_if, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2132), 1, + anon_sym_and, + ACTIONS(2134), 1, + anon_sym_or, ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, + anon_sym_RBRACK, + STATE(1101), 1, + sym_for_in_clause, + STATE(1285), 1, + aux_sym__collection_elements_repeat1, + STATE(1692), 1, + sym__comprehension_clauses, + [61807] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2202), 1, + ACTIONS(2204), 1, anon_sym_as, - ACTIONS(2200), 6, + ACTIONS(2202), 6, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [61766] = 3, + [61831] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2206), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(2204), 8, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2194), 8, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_PIPE, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, - [61784] = 3, + anon_sym_EQ, + [61851] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2210), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(2208), 8, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2210), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, + anon_sym_COLON, + anon_sym_else, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + [61873] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, anon_sym_if, + ACTIONS(2214), 7, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_COLON, - anon_sym_PIPE, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, - [61802] = 11, + anon_sym_EQ, + [61895] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2216), 8, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2100), 1, + anon_sym_if, + anon_sym_COLON, + anon_sym_else, anon_sym_RBRACK, - ACTIONS(2136), 1, + anon_sym_RBRACE, + anon_sym_EQ, + [61915] = 11, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2126), 1, anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - STATE(1106), 1, + ACTIONS(2218), 1, + anon_sym_RPAREN, + ACTIONS(2220), 1, + anon_sym_COMMA, + STATE(1101), 1, sym_for_in_clause, - STATE(1310), 1, - aux_sym__collection_elements_repeat1, - STATE(1754), 1, + STATE(1453), 1, + aux_sym_argument_list_repeat1, + STATE(1745), 1, sym__comprehension_clauses, - [61836] = 4, + [61949] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2212), 8, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2202), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_if, anon_sym_COLON, anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_EQ, - [61856] = 6, + [61971] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2216), 1, + ACTIONS(2222), 1, anon_sym_as, - ACTIONS(2214), 6, + ACTIONS(2216), 7, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [61880] = 5, + [61993] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2138), 1, - anon_sym_and, - ACTIONS(2140), 1, - anon_sym_or, - ACTIONS(2178), 1, - anon_sym_as, - ACTIONS(2176), 7, + ACTIONS(2226), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(2224), 8, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [61902] = 11, + [62011] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2218), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2228), 1, anon_sym_RPAREN, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1310), 1, + STATE(1285), 1, aux_sym__collection_elements_repeat1, - STATE(1673), 1, + STATE(1708), 1, sym__comprehension_clauses, - [61936] = 5, + [62045] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2126), 1, anon_sym_if, - ACTIONS(2200), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_else, - anon_sym_RBRACK, - anon_sym_RBRACE, - anon_sym_EQ, - [61958] = 11, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2220), 1, - anon_sym_RPAREN, - STATE(1106), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, + anon_sym_RBRACK, + STATE(1101), 1, sym_for_in_clause, - STATE(1310), 1, + STATE(1285), 1, aux_sym__collection_elements_repeat1, - STATE(1618), 1, + STATE(1623), 1, sym__comprehension_clauses, - [61992] = 11, + [62079] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2222), 1, - anon_sym_RPAREN, - ACTIONS(2224), 1, + ACTIONS(2138), 1, anon_sym_COMMA, - STATE(1106), 1, + ACTIONS(2230), 1, + anon_sym_RPAREN, + STATE(1101), 1, sym_for_in_clause, - STATE(1441), 1, - aux_sym_argument_list_repeat1, - STATE(1628), 1, + STATE(1285), 1, + aux_sym__collection_elements_repeat1, + STATE(1745), 1, sym__comprehension_clauses, - [62026] = 4, + [62113] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2190), 8, + ACTIONS(2190), 9, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -75977,209 +76052,234 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_EQ, - [62046] = 5, + anon_sym_or, + [62131] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2214), 7, + ACTIONS(2232), 1, + anon_sym_as, + ACTIONS(2210), 6, 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, - [62068] = 11, + [62155] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2132), 1, + anon_sym_and, + ACTIONS(2134), 1, + anon_sym_or, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, anon_sym_RBRACK, - ACTIONS(2136), 1, + STATE(1101), 1, + sym_for_in_clause, + STATE(1285), 1, + aux_sym__collection_elements_repeat1, + STATE(1726), 1, + sym__comprehension_clauses, + [62189] = 11, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2126), 1, anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - STATE(1106), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, + anon_sym_RBRACK, + STATE(1101), 1, sym_for_in_clause, - STATE(1310), 1, + STATE(1285), 1, aux_sym__collection_elements_repeat1, - STATE(1713), 1, + STATE(1622), 1, sym__comprehension_clauses, - [62102] = 5, + [62223] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2138), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2226), 1, - anon_sym_as, - ACTIONS(2212), 7, + ACTIONS(2190), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, - [62124] = 11, + anon_sym_EQ, + [62243] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2132), 1, + anon_sym_and, + ACTIONS(2134), 1, + anon_sym_or, + ACTIONS(2234), 1, + anon_sym_as, + ACTIONS(2214), 6, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2096), 1, anon_sym_async, - ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2100), 1, anon_sym_RBRACK, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, - anon_sym_and, - ACTIONS(2140), 1, - anon_sym_or, - STATE(1106), 1, - sym_for_in_clause, - STATE(1310), 1, - aux_sym__collection_elements_repeat1, - STATE(1675), 1, - sym__comprehension_clauses, - [62158] = 11, + anon_sym_RBRACE, + [62267] = 11, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, + ACTIONS(2119), 1, + anon_sym_RPAREN, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2228), 1, - anon_sym_RPAREN, - ACTIONS(2230), 1, + ACTIONS(2138), 1, anon_sym_COMMA, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1459), 1, - aux_sym_argument_list_repeat1, - STATE(1711), 1, + STATE(1285), 1, + aux_sym__collection_elements_repeat1, + STATE(1723), 1, sym__comprehension_clauses, - [62192] = 11, + [62301] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2136), 1, + ACTIONS(2236), 1, + anon_sym_COMMA, + ACTIONS(2238), 1, anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2242), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2244), 1, anon_sym_or, - ACTIONS(2232), 1, - anon_sym_RPAREN, - ACTIONS(2234), 1, - anon_sym_COMMA, - STATE(1106), 1, - sym_for_in_clause, - STATE(1526), 1, - aux_sym_argument_list_repeat1, - STATE(1618), 1, - sym__comprehension_clauses, - [62226] = 11, + STATE(1274), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2240), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [62326] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(2132), 1, + anon_sym_and, + ACTIONS(2134), 1, + anon_sym_or, + ACTIONS(2246), 7, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2096), 1, + anon_sym_if, anon_sym_async, - ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2100), 1, anon_sym_RBRACK, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, - anon_sym_and, - ACTIONS(2140), 1, - anon_sym_or, - STATE(1106), 1, - sym_for_in_clause, - STATE(1310), 1, - aux_sym__collection_elements_repeat1, - STATE(1722), 1, - sym__comprehension_clauses, - [62260] = 3, + anon_sym_RBRACE, + [62345] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2176), 9, + ACTIONS(2250), 1, + anon_sym_PIPE, + STATE(1099), 1, + aux_sym_match_or_pattern_repeat1, + ACTIONS(2248), 7, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_else, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_or, - [62278] = 4, + [62364] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2138), 1, - anon_sym_and, - ACTIONS(2140), 1, - anon_sym_or, - ACTIONS(2236), 7, - anon_sym_RPAREN, + ACTIONS(2236), 1, anon_sym_COMMA, + ACTIONS(2238), 1, anon_sym_if, + ACTIONS(2242), 1, + anon_sym_and, + ACTIONS(2244), 1, + anon_sym_or, + STATE(1274), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2253), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [62389] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2128), 1, anon_sym_async, + ACTIONS(2130), 1, anon_sym_for, + ACTIONS(2257), 1, + anon_sym_if, + ACTIONS(2255), 3, + anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - [62297] = 5, + STATE(1109), 3, + sym_for_in_clause, + sym_if_clause, + aux_sym__comprehension_clauses_repeat1, + [62412] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2238), 6, + ACTIONS(2246), 7, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62318] = 4, + [62431] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2236), 7, + ACTIONS(2246), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, @@ -76187,46 +76287,31 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62337] = 6, + [62450] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2242), 1, + ACTIONS(2261), 1, anon_sym_if, - ACTIONS(2245), 1, + ACTIONS(2264), 1, anon_sym_async, - ACTIONS(2248), 1, + ACTIONS(2267), 1, anon_sym_for, - ACTIONS(2240), 3, + ACTIONS(2259), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(1100), 3, + STATE(1104), 3, sym_for_in_clause, sym_if_clause, aux_sym__comprehension_clauses_repeat1, - [62360] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2253), 1, - anon_sym_PIPE, - STATE(1105), 1, - aux_sym_match_or_pattern_repeat1, - ACTIONS(2251), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [62379] = 4, + [62473] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2257), 1, + ACTIONS(2272), 1, anon_sym_PIPE, - STATE(1102), 1, + STATE(1107), 1, aux_sym_match_or_pattern_repeat1, - ACTIONS(2255), 7, + ACTIONS(2270), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76234,47 +76319,30 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [62398] = 7, + [62492] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2260), 1, - anon_sym_COMMA, - ACTIONS(2262), 1, + ACTIONS(2126), 1, anon_sym_if, - ACTIONS(2266), 1, - anon_sym_and, - ACTIONS(2268), 1, - anon_sym_or, - STATE(1274), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2264), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [62423] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2236), 7, + ACTIONS(2274), 6, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62442] = 4, + [62513] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2253), 1, + ACTIONS(2272), 1, anon_sym_PIPE, - STATE(1102), 1, + STATE(1099), 1, aux_sym_match_or_pattern_repeat1, - ACTIONS(2270), 7, + ACTIONS(2276), 7, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76282,78 +76350,81 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [62461] = 6, + [62532] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2274), 1, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2272), 3, + ACTIONS(2274), 6, anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - STATE(1108), 3, - sym_for_in_clause, - sym_if_clause, - aux_sym__comprehension_clauses_repeat1, - [62484] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2260), 1, anon_sym_COMMA, - ACTIONS(2262), 1, - anon_sym_if, - ACTIONS(2266), 1, - anon_sym_and, - ACTIONS(2268), 1, - anon_sym_or, - STATE(1274), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2276), 4, + anon_sym_COLON, + anon_sym_RBRACK, anon_sym_RBRACE, anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [62509] = 6, + [62553] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2274), 1, + ACTIONS(2257), 1, anon_sym_if, ACTIONS(2278), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - STATE(1100), 3, + STATE(1104), 3, sym_for_in_clause, sym_if_clause, aux_sym__comprehension_clauses_repeat1, - [62532] = 5, + [62576] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2216), 6, + sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_if, - ACTIONS(2238), 6, + anon_sym_EQ, + anon_sym_SEMI, + [62594] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2284), 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, + [62608] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2071), 8, + anon_sym_COMMA, + anon_sym_if, + anon_sym_RBRACE, anon_sym_EQ, - [62553] = 2, + anon_sym_and, + anon_sym_or, + anon_sym_COLON2, + sym_type_conversion, + [62622] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2280), 8, + ACTIONS(2286), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76362,50 +76433,94 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62567] = 2, + [62636] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2282), 8, + ACTIONS(2290), 1, + anon_sym_PIPE, + ACTIONS(2288), 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, - [62581] = 4, + [62652] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2238), 1, + anon_sym_if, + ACTIONS(2242), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2244), 1, anon_sym_or, - ACTIONS(2176), 6, - sym__newline, - anon_sym_from, + ACTIONS(2210), 5, anon_sym_COMMA, - anon_sym_if, + anon_sym_RBRACE, anon_sym_EQ, - anon_sym_SEMI, - [62599] = 4, + anon_sym_COLON2, + sym_type_conversion, + [62672] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2290), 1, - anon_sym_COMMA, - STATE(1113), 1, - aux_sym_for_in_clause_repeat1, - ACTIONS(2288), 6, + ACTIONS(2292), 8, anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62617] = 2, + [62686] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2293), 8, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2202), 5, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_EQ, + anon_sym_SEMI, + [62706] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2146), 1, + anon_sym_and, + ACTIONS(2148), 1, + anon_sym_or, + ACTIONS(2194), 6, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [62724] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2140), 1, + anon_sym_if, + ACTIONS(2146), 1, + anon_sym_and, + ACTIONS(2148), 1, + anon_sym_or, + ACTIONS(2214), 5, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [62744] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2296), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76414,84 +76529,112 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62631] = 4, + [62758] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2146), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2148), 1, anon_sym_or, - ACTIONS(2190), 6, - sym__newline, - anon_sym_from, + ACTIONS(2216), 6, anon_sym_COMMA, anon_sym_if, - anon_sym_EQ, - anon_sym_SEMI, - [62649] = 2, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [62776] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2112), 8, - anon_sym_RPAREN, + ACTIONS(2146), 1, + anon_sym_and, + ACTIONS(2190), 7, anon_sym_COMMA, - anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_PIPE, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + anon_sym_or, + [62792] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2146), 1, + anon_sym_and, + ACTIONS(2148), 1, + anon_sym_or, + ACTIONS(2190), 6, + anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [62810] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2300), 1, + anon_sym_COMMA, + STATE(1124), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(2298), 6, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62663] = 3, + [62828] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2297), 1, - anon_sym_PIPE, - ACTIONS(2295), 7, + ACTIONS(2303), 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, - [62679] = 5, + [62842] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(69), 1, + anon_sym_AT, + ACTIONS(2305), 1, + anon_sym_async, + ACTIONS(2307), 1, + anon_sym_def, + ACTIONS(2309), 1, + anon_sym_class, + STATE(516), 2, + sym_function_definition, + sym_class_definition, + STATE(1248), 2, + sym_decorator, + aux_sym_decorated_definition_repeat1, + [62866] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2299), 1, - anon_sym_if, - ACTIONS(2200), 5, + ACTIONS(2190), 6, sym__newline, anon_sym_from, anon_sym_COMMA, + anon_sym_if, anon_sym_EQ, anon_sym_SEMI, - [62699] = 6, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(2301), 1, - anon_sym_LBRACE2, - ACTIONS(2306), 1, - anon_sym_BSLASH, - ACTIONS(2309), 1, - sym__string_end, - STATE(1119), 2, - sym__not_escape_sequence, - aux_sym_string_content_repeat1, - ACTIONS(2303), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [62721] = 5, + [62884] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2262), 1, + ACTIONS(2238), 1, anon_sym_if, - ACTIONS(2266), 1, + ACTIONS(2242), 1, anon_sym_and, - ACTIONS(2268), 1, + ACTIONS(2244), 1, anon_sym_or, ACTIONS(2311), 5, anon_sym_COMMA, @@ -76499,53 +76642,80 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ, anon_sym_COLON2, sym_type_conversion, - [62741] = 5, + [62904] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2313), 1, + sym_identifier, + ACTIONS(2315), 1, + anon_sym_STAR, + ACTIONS(2317), 1, + anon_sym_RBRACK, + ACTIONS(2319), 1, + anon_sym_STAR_STAR, + STATE(1563), 4, + sym_typevar_parameter, + sym_typevartuple_parameter, + sym_paramspec_parameter, + sym__type_parameter, + [62926] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2238), 1, + anon_sym_if, + ACTIONS(2242), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2244), 1, anon_sym_or, - ACTIONS(2299), 1, - anon_sym_if, - ACTIONS(2186), 5, - sym__newline, - anon_sym_from, + ACTIONS(2321), 5, anon_sym_COMMA, + anon_sym_RBRACE, anon_sym_EQ, - anon_sym_SEMI, - [62761] = 4, + anon_sym_COLON2, + sym_type_conversion, + [62946] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2315), 1, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2321), 5, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1113), 1, - aux_sym_for_in_clause_repeat1, - ACTIONS(2313), 6, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + [62966] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2323), 8, anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_async, - anon_sym_for, + anon_sym_COLON, + anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62779] = 4, + [62980] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, - anon_sym_and, - ACTIONS(2286), 1, - anon_sym_or, - ACTIONS(2212), 6, - sym__newline, - anon_sym_from, + ACTIONS(2325), 8, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_EQ, - anon_sym_SEMI, - [62797] = 2, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_RBRACK, + anon_sym_RBRACE, + [62994] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2317), 8, + ACTIONS(2327), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76554,49 +76724,103 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62811] = 5, + [63008] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2140), 1, + anon_sym_if, + ACTIONS(2146), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2148), 1, anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2319), 5, - anon_sym_RPAREN, + ACTIONS(2210), 5, anon_sym_COMMA, anon_sym_COLON, - anon_sym_RBRACK, + anon_sym_async, + anon_sym_for, anon_sym_RBRACE, - [62831] = 2, + [63028] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1558), 8, - sym__newline, - anon_sym_from, - anon_sym_COMMA, + ACTIONS(2238), 1, anon_sym_if, + ACTIONS(2242), 1, + anon_sym_and, + ACTIONS(2244), 1, + anon_sym_or, + ACTIONS(2202), 5, + anon_sym_COMMA, + anon_sym_RBRACE, anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63048] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2280), 1, anon_sym_and, + ACTIONS(2282), 1, anon_sym_or, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2329), 1, + anon_sym_from, + ACTIONS(2331), 1, + anon_sym_COMMA, + STATE(1314), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2333), 2, + sym__newline, anon_sym_SEMI, - [62845] = 2, + [63074] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2321), 8, - anon_sym_RPAREN, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2335), 1, anon_sym_COMMA, - anon_sym_as, + STATE(1275), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2253), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + [63098] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2140), 1, anon_sym_if, + ACTIONS(2146), 1, + anon_sym_and, + ACTIONS(2148), 1, + anon_sym_or, + ACTIONS(2202), 5, + anon_sym_COMMA, anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, + anon_sym_async, + anon_sym_for, anon_sym_RBRACE, - [62859] = 2, + [63118] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2323), 8, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2190), 7, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_if, + anon_sym_EQ, + anon_sym_or, + anon_sym_SEMI, + [63134] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2248), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76605,7 +76829,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62873] = 2, + [63148] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(2071), 8, @@ -76617,10 +76841,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_and, anon_sym_or, anon_sym_SEMI, - [62887] = 2, + [63162] = 6, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2337), 1, + anon_sym_LBRACE2, + ACTIONS(2342), 1, + anon_sym_BSLASH, + ACTIONS(2345), 1, + sym__string_end, + STATE(1143), 2, + sym__not_escape_sequence, + aux_sym_string_content_repeat1, + ACTIONS(2339), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [63184] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2325), 8, + ACTIONS(2347), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76629,22 +76869,51 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62901] = 2, + [63198] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1558), 8, + ACTIONS(1634), 8, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_if, - anon_sym_RBRACE, anon_sym_EQ, anon_sym_and, anon_sym_or, - anon_sym_COLON2, - sym_type_conversion, - [62915] = 2, + anon_sym_SEMI, + [63212] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2327), 8, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2210), 5, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_EQ, + anon_sym_SEMI, + [63232] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2351), 1, + anon_sym_COMMA, + STATE(1124), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(2349), 6, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_RBRACE, + [63250] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2353), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76653,10 +76922,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62929] = 2, + [63264] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2329), 8, + ACTIONS(2355), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76665,10 +76934,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62943] = 2, + [63278] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2331), 8, + ACTIONS(2357), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76677,24 +76946,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62957] = 4, + [63292] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2335), 1, + ACTIONS(2361), 1, anon_sym_COMMA, - STATE(1173), 1, + STATE(1124), 1, aux_sym_for_in_clause_repeat1, - ACTIONS(2333), 6, + ACTIONS(2359), 6, anon_sym_RPAREN, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [62975] = 2, + [63310] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2255), 8, + ACTIONS(2363), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76703,28 +76972,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [62989] = 8, + [63324] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2294), 1, anon_sym_if, - ACTIONS(2337), 1, + ACTIONS(2214), 5, + sym__newline, anon_sym_from, - ACTIONS(2339), 1, anon_sym_COMMA, - STATE(1288), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2341), 2, - sym__newline, + anon_sym_EQ, anon_sym_SEMI, - [63015] = 2, + [63344] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2343), 8, + ACTIONS(2365), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76733,25 +76999,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [63029] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2284), 1, - anon_sym_and, - ACTIONS(2286), 1, - anon_sym_or, - ACTIONS(2299), 1, - anon_sym_if, - ACTIONS(2238), 5, - sym__newline, - anon_sym_from, - anon_sym_COMMA, - anon_sym_EQ, - anon_sym_SEMI, - [63049] = 2, + [63358] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2345), 8, + ACTIONS(2367), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76760,10 +77011,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [63063] = 2, + [63372] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2347), 8, + ACTIONS(2369), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76772,10 +77023,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [63077] = 2, + [63386] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2349), 8, + ACTIONS(2371), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76784,37 +77035,53 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [63091] = 2, + [63400] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2351), 8, - anon_sym_RPAREN, + ACTIONS(2242), 1, + anon_sym_and, + ACTIONS(2244), 1, + anon_sym_or, + ACTIONS(2194), 6, anon_sym_COMMA, - anon_sym_as, anon_sym_if, - anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, anon_sym_RBRACE, - [63105] = 5, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63418] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2311), 5, + ACTIONS(2373), 6, anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, + anon_sym_if, + anon_sym_async, + anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [63125] = 2, + [63436] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2071), 8, + ACTIONS(2238), 1, + anon_sym_if, + ACTIONS(2242), 1, + anon_sym_and, + ACTIONS(2244), 1, + anon_sym_or, + ACTIONS(2214), 5, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63456] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1634), 8, anon_sym_COMMA, anon_sym_if, anon_sym_RBRACE, @@ -76823,40 +77090,40 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_or, anon_sym_COLON2, sym_type_conversion, - [63139] = 7, + [63470] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(69), 1, - anon_sym_AT, - ACTIONS(2353), 1, - anon_sym_async, - ACTIONS(2355), 1, - anon_sym_def, - ACTIONS(2357), 1, - anon_sym_class, - STATE(534), 2, - sym_function_definition, - sym_class_definition, - STATE(1257), 2, - sym_decorator, - aux_sym_decorated_definition_repeat1, - [63163] = 3, + ACTIONS(2313), 1, + sym_identifier, + ACTIONS(2315), 1, + anon_sym_STAR, + ACTIONS(2319), 1, + anon_sym_STAR_STAR, + ACTIONS(2375), 1, + anon_sym_RBRACK, + STATE(1563), 4, + sym_typevar_parameter, + sym_typevartuple_parameter, + sym_paramspec_parameter, + sym__type_parameter, + [63492] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2242), 1, anon_sym_and, - ACTIONS(2176), 7, - sym__newline, - anon_sym_from, + ACTIONS(2244), 1, + anon_sym_or, + ACTIONS(2216), 6, anon_sym_COMMA, anon_sym_if, + anon_sym_RBRACE, anon_sym_EQ, - anon_sym_or, - anon_sym_SEMI, - [63179] = 2, + anon_sym_COLON2, + sym_type_conversion, + [63510] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2359), 8, + ACTIONS(2377), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76865,26 +77132,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [63193] = 6, - ACTIONS(2086), 1, + [63524] = 3, + ACTIONS(3), 1, sym_comment, - ACTIONS(2361), 1, - anon_sym_LBRACE2, - ACTIONS(2365), 1, - anon_sym_BSLASH, - ACTIONS(2367), 1, - sym__string_end, - STATE(1119), 2, - sym__not_escape_sequence, - aux_sym_string_content_repeat1, - ACTIONS(2363), 3, - sym__string_content, - sym__escape_interpolation, - sym_escape_sequence, - [63215] = 2, + ACTIONS(2242), 1, + anon_sym_and, + ACTIONS(2190), 7, + anon_sym_COMMA, + anon_sym_if, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_or, + anon_sym_COLON2, + sym_type_conversion, + [63540] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2369), 8, + ACTIONS(2379), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76893,10 +77157,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [63229] = 2, + [63554] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2371), 8, + ACTIONS(2381), 8, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, @@ -76905,1996 +77169,1740 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [63243] = 4, + [63568] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2266), 1, + ACTIONS(2238), 1, + anon_sym_if, + ACTIONS(2242), 1, anon_sym_and, - ACTIONS(2268), 1, + ACTIONS(2244), 1, anon_sym_or, - ACTIONS(2212), 6, + ACTIONS(2274), 5, anon_sym_COMMA, - anon_sym_if, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COLON2, sym_type_conversion, - [63261] = 4, + [63588] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2102), 1, + ACTIONS(2242), 1, anon_sym_and, - ACTIONS(2104), 1, + ACTIONS(2244), 1, anon_sym_or, - ACTIONS(2212), 6, + ACTIONS(2190), 6, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, anon_sym_RBRACE, - [63279] = 5, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [63606] = 6, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2383), 1, + anon_sym_LBRACE2, + ACTIONS(2387), 1, + anon_sym_BSLASH, + ACTIONS(2389), 1, + sym__string_end, + STATE(1143), 2, + sym__not_escape_sequence, + aux_sym_string_content_repeat1, + ACTIONS(2385), 3, + sym__string_content, + sym__escape_interpolation, + sym_escape_sequence, + [63628] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2092), 1, - anon_sym_if, - ACTIONS(2102), 1, - anon_sym_and, - ACTIONS(2104), 1, - anon_sym_or, - ACTIONS(2200), 5, - anon_sym_COMMA, - anon_sym_COLON, + ACTIONS(69), 1, + anon_sym_AT, + ACTIONS(2391), 1, anon_sym_async, - anon_sym_for, - anon_sym_RBRACE, - [63299] = 4, + ACTIONS(2393), 1, + anon_sym_def, + ACTIONS(2395), 1, + anon_sym_class, + STATE(608), 2, + sym_function_definition, + sym_class_definition, + STATE(1248), 2, + sym_decorator, + aux_sym_decorated_definition_repeat1, + [63652] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2102), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2104), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2190), 6, + ACTIONS(2194), 6, + sym__newline, + anon_sym_from, anon_sym_COMMA, anon_sym_if, - anon_sym_COLON, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACE, - [63317] = 3, + anon_sym_EQ, + anon_sym_SEMI, + [63670] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2102), 1, - anon_sym_and, - ACTIONS(2176), 7, + ACTIONS(2399), 1, anon_sym_COMMA, + STATE(1147), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(2397), 6, + anon_sym_RPAREN, anon_sym_if, - anon_sym_COLON, anon_sym_async, anon_sym_for, + anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_or, - [63333] = 4, + [63688] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2102), 1, - anon_sym_and, - ACTIONS(2104), 1, - anon_sym_or, - ACTIONS(2176), 6, + ACTIONS(2156), 8, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, anon_sym_COLON, - anon_sym_async, - anon_sym_for, + anon_sym_PIPE, + anon_sym_RBRACK, anon_sym_RBRACE, - [63351] = 2, + [63702] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2373), 8, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2311), 5, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, anon_sym_COLON, - anon_sym_PIPE, anon_sym_RBRACK, anon_sym_RBRACE, - [63365] = 5, + [63722] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2262), 1, - anon_sym_if, - ACTIONS(2266), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2268), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2238), 5, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2274), 5, + sym__newline, + anon_sym_from, anon_sym_COMMA, - anon_sym_RBRACE, anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63385] = 6, + anon_sym_SEMI, + [63742] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, + ACTIONS(2094), 1, anon_sym_DOT, - ACTIONS(2108), 1, + ACTIONS(2150), 1, anon_sym_LPAREN, - ACTIONS(2375), 1, + ACTIONS(2401), 1, anon_sym_EQ, - STATE(1064), 1, + STATE(1043), 1, aux_sym_match_value_pattern_repeat1, - ACTIONS(2110), 4, + ACTIONS(2152), 4, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, anon_sym_PIPE, - [63407] = 5, + [63764] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, - anon_sym_and, - ACTIONS(2286), 1, - anon_sym_or, - ACTIONS(2299), 1, - anon_sym_if, - ACTIONS(2214), 5, - sym__newline, - anon_sym_from, + ACTIONS(2405), 1, anon_sym_COMMA, - anon_sym_EQ, - anon_sym_SEMI, - [63427] = 5, + STATE(1151), 1, + aux_sym_for_in_clause_repeat1, + ACTIONS(2403), 6, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACK, + anon_sym_RBRACE, + [63782] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2262), 1, - anon_sym_if, - ACTIONS(2266), 1, - anon_sym_and, - ACTIONS(2268), 1, - anon_sym_or, - ACTIONS(2200), 5, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2138), 1, anon_sym_COMMA, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63447] = 5, + ACTIONS(2144), 1, + anon_sym_RBRACK, + STATE(1101), 1, + sym_for_in_clause, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + STATE(1623), 1, + sym__comprehension_clauses, + [63807] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2092), 1, - anon_sym_if, - ACTIONS(2102), 1, - anon_sym_and, - ACTIONS(2104), 1, - anon_sym_or, - ACTIONS(2214), 5, + ACTIONS(2298), 7, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_COLON, + anon_sym_if, anon_sym_async, anon_sym_for, + anon_sym_RBRACK, anon_sym_RBRACE, - [63467] = 4, + [63820] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2266), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2268), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2190), 6, - anon_sym_COMMA, + ACTIONS(2294), 1, anon_sym_if, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63485] = 3, + ACTIONS(2407), 1, + anon_sym_COMMA, + STATE(1349), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2409), 2, + sym__newline, + anon_sym_SEMI, + [63843] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2266), 1, - anon_sym_and, - ACTIONS(2176), 7, - anon_sym_COMMA, - anon_sym_if, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_or, - anon_sym_COLON2, - sym_type_conversion, - [63501] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2092), 1, - anon_sym_if, - ACTIONS(2102), 1, - anon_sym_and, - ACTIONS(2104), 1, - anon_sym_or, - ACTIONS(2186), 5, - anon_sym_COMMA, - anon_sym_COLON, + ACTIONS(2128), 1, anon_sym_async, + ACTIONS(2130), 1, anon_sym_for, - anon_sym_RBRACE, - [63521] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2266), 1, - anon_sym_and, - ACTIONS(2268), 1, - anon_sym_or, - ACTIONS(2176), 6, - anon_sym_COMMA, - anon_sym_if, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63539] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2262), 1, - anon_sym_if, - ACTIONS(2266), 1, - anon_sym_and, - ACTIONS(2268), 1, - anon_sym_or, - ACTIONS(2214), 5, - anon_sym_COMMA, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63559] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2262), 1, - anon_sym_if, - ACTIONS(2266), 1, - anon_sym_and, - ACTIONS(2268), 1, - anon_sym_or, - ACTIONS(2319), 5, + ACTIONS(2138), 1, anon_sym_COMMA, + ACTIONS(2144), 1, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63579] = 5, + STATE(1101), 1, + sym_for_in_clause, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + STATE(1641), 1, + sym__comprehension_clauses, + [63868] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2262), 1, - anon_sym_if, - ACTIONS(2266), 1, - anon_sym_and, - ACTIONS(2268), 1, - anon_sym_or, - ACTIONS(2186), 5, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2411), 1, anon_sym_COMMA, + ACTIONS(2413), 1, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [63599] = 4, + STATE(1101), 1, + sym_for_in_clause, + STATE(1496), 1, + aux_sym_dictionary_repeat1, + STATE(1661), 1, + sym__comprehension_clauses, + [63893] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2138), 1, - anon_sym_and, - ACTIONS(2140), 1, - anon_sym_or, - ACTIONS(2377), 6, + ACTIONS(2415), 7, anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_if, anon_sym_async, anon_sym_for, anon_sym_RBRACK, anon_sym_RBRACE, - [63617] = 7, + [63906] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(69), 1, - anon_sym_AT, - ACTIONS(2379), 1, - anon_sym_async, - ACTIONS(2381), 1, - anon_sym_def, - ACTIONS(2383), 1, - anon_sym_class, - STATE(605), 2, - sym_function_definition, - sym_class_definition, - STATE(1257), 2, - sym_decorator, - aux_sym_decorated_definition_repeat1, - [63641] = 4, + ACTIONS(2417), 1, + anon_sym_except, + ACTIONS(2419), 1, + anon_sym_finally, + STATE(595), 1, + sym_finally_clause, + STATE(270), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + STATE(274), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + [63927] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2387), 1, - anon_sym_COMMA, - STATE(1113), 1, - aux_sym_for_in_clause_repeat1, - ACTIONS(2385), 6, + ACTIONS(2421), 1, + anon_sym_and, + ACTIONS(2423), 1, + anon_sym_or, + ACTIONS(2194), 5, anon_sym_RPAREN, - anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - [63659] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2391), 1, anon_sym_COMMA, - STATE(1122), 1, - aux_sym_for_in_clause_repeat1, - ACTIONS(2389), 6, - anon_sym_RPAREN, + anon_sym_as, anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - [63677] = 7, + anon_sym_COLON, + [63944] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2421), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2423), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2425), 1, anon_sym_if, - ACTIONS(2393), 1, - anon_sym_COMMA, - STATE(1243), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2276), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - [63701] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2395), 8, + ACTIONS(2214), 4, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - anon_sym_if, anon_sym_COLON, - anon_sym_PIPE, - anon_sym_RBRACK, - anon_sym_RBRACE, - [63715] = 8, + [63963] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2397), 1, + ACTIONS(2421), 1, + anon_sym_and, + ACTIONS(2423), 1, + anon_sym_or, + ACTIONS(2216), 5, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2399), 1, anon_sym_as, - ACTIONS(2401), 1, anon_sym_if, - ACTIONS(2403), 1, anon_sym_COLON, - ACTIONS(2405), 1, - anon_sym_and, - ACTIONS(2407), 1, - anon_sym_or, - STATE(1364), 1, - aux_sym_exception_list_repeat1, - [63740] = 2, + [63980] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2409), 7, + ACTIONS(2421), 1, + anon_sym_and, + ACTIONS(2190), 6, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - [63753] = 5, + anon_sym_COLON, + anon_sym_or, + [63995] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2421), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2423), 1, anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2411), 4, + ACTIONS(2190), 5, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [63772] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2413), 1, - sym_identifier, - ACTIONS(2415), 1, - anon_sym_LPAREN, - ACTIONS(2417), 1, - anon_sym_STAR, - STATE(1290), 1, - sym_dotted_name, - STATE(1327), 1, - sym_aliased_import, - STATE(1559), 1, - sym__import_list, - STATE(1561), 1, - sym_wildcard_import, - [63797] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2284), 1, - anon_sym_and, - ACTIONS(2286), 1, - anon_sym_or, - ACTIONS(2299), 1, + anon_sym_as, anon_sym_if, - ACTIONS(2339), 1, - anon_sym_COMMA, - STATE(1288), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2419), 2, - sym__newline, - anon_sym_SEMI, - [63820] = 5, + anon_sym_COLON, + [64012] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2401), 1, - anon_sym_if, - ACTIONS(2405), 1, + ACTIONS(2421), 1, anon_sym_and, - ACTIONS(2407), 1, + ACTIONS(2423), 1, anon_sym_or, - ACTIONS(2200), 4, + ACTIONS(2425), 1, + anon_sym_if, + ACTIONS(2210), 4, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, anon_sym_COLON, - [63839] = 6, + [64031] = 5, ACTIONS(3), 1, sym_comment, ACTIONS(2421), 1, - anon_sym_except, + anon_sym_and, ACTIONS(2423), 1, - anon_sym_finally, - STATE(540), 1, - sym_finally_clause, - STATE(266), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - STATE(283), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - [63860] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, + anon_sym_or, ACTIONS(2425), 1, + anon_sym_if, + ACTIONS(2202), 4, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2427), 1, - anon_sym_RBRACE, - STATE(1106), 1, - sym_for_in_clause, - STATE(1450), 1, - aux_sym_dictionary_repeat1, - STATE(1724), 1, - sym__comprehension_clauses, - [63885] = 8, + anon_sym_as, + anon_sym_COLON, + [64050] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2413), 1, + ACTIONS(2313), 1, sym_identifier, - ACTIONS(2417), 1, + ACTIONS(2315), 1, anon_sym_STAR, - ACTIONS(2429), 1, - anon_sym_LPAREN, - STATE(1290), 1, - sym_dotted_name, - STATE(1327), 1, - sym_aliased_import, - STATE(1579), 1, - sym__import_list, - STATE(1580), 1, - sym_wildcard_import, - [63910] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2228), 1, - anon_sym_RPAREN, - ACTIONS(2230), 1, - anon_sym_COMMA, - STATE(1106), 1, - sym_for_in_clause, - STATE(1456), 1, - aux_sym_argument_list_repeat1, - STATE(1711), 1, - sym__comprehension_clauses, - [63935] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2431), 1, - anon_sym_RPAREN, - STATE(1106), 1, - sym_for_in_clause, - STATE(1308), 1, - aux_sym__collection_elements_repeat1, - STATE(1618), 1, - sym__comprehension_clauses, - [63960] = 5, + ACTIONS(2319), 1, + anon_sym_STAR_STAR, + STATE(1492), 4, + sym_typevar_parameter, + sym_typevartuple_parameter, + sym_paramspec_parameter, + sym__type_parameter, + [64069] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2401), 1, - anon_sym_if, - ACTIONS(2405), 1, + ACTIONS(2421), 1, anon_sym_and, - ACTIONS(2407), 1, + ACTIONS(2423), 1, anon_sym_or, - ACTIONS(2214), 4, - anon_sym_RPAREN, + ACTIONS(2425), 1, + anon_sym_if, + ACTIONS(2427), 1, anon_sym_COMMA, + ACTIONS(2429), 1, anon_sym_as, + ACTIONS(2431), 1, anon_sym_COLON, - [63979] = 4, + STATE(1361), 1, + aux_sym_exception_list_repeat1, + [64094] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2405), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2407), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2190), 5, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_as, + ACTIONS(2294), 1, anon_sym_if, - anon_sym_COLON, - [63996] = 3, + ACTIONS(2311), 4, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_SEMI, + [64113] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2405), 1, - anon_sym_and, - ACTIONS(2176), 6, + ACTIONS(2253), 7, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_or, - [64011] = 7, + anon_sym_RBRACK, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [64126] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2294), 1, anon_sym_if, - ACTIONS(2339), 1, + ACTIONS(2331), 1, anon_sym_COMMA, - STATE(1288), 1, + STATE(1314), 1, aux_sym_expression_list_repeat1, - ACTIONS(2433), 2, + ACTIONS(2253), 2, sym__newline, anon_sym_SEMI, - [64034] = 6, + [64149] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2401), 1, - anon_sym_if, - ACTIONS(2405), 1, - anon_sym_and, - ACTIONS(2407), 1, - anon_sym_or, - ACTIONS(2437), 1, + ACTIONS(2435), 1, anon_sym_as, - ACTIONS(2435), 3, + ACTIONS(2433), 6, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_COLON, - [64055] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2397), 1, - anon_sym_COMMA, - ACTIONS(2401), 1, anon_sym_if, - ACTIONS(2405), 1, - anon_sym_and, - ACTIONS(2407), 1, - anon_sym_or, - ACTIONS(2439), 1, - anon_sym_as, - ACTIONS(2441), 1, anon_sym_COLON, - STATE(1364), 1, - aux_sym_exception_list_repeat1, - [64080] = 8, + anon_sym_RBRACK, + anon_sym_RBRACE, + [64164] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2443), 1, + ACTIONS(2437), 1, anon_sym_COMMA, - ACTIONS(2445), 1, + ACTIONS(2439), 1, anon_sym_RBRACE, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1466), 1, + STATE(1430), 1, aux_sym_dictionary_repeat1, - STATE(1680), 1, + STATE(1649), 1, sym__comprehension_clauses, - [64105] = 6, + [64189] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2447), 1, + ACTIONS(2126), 1, + anon_sym_if, + ACTIONS(2132), 1, + anon_sym_and, + ACTIONS(2134), 1, + anon_sym_or, + ACTIONS(2311), 4, + anon_sym_COMMA, + anon_sym_async, + anon_sym_for, + anon_sym_RBRACE, + [64208] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2441), 1, anon_sym_except, - ACTIONS(2449), 1, + ACTIONS(2443), 1, anon_sym_finally, - STATE(564), 1, + STATE(519), 1, sym_finally_clause, - STATE(281), 2, + STATE(284), 2, sym_except_clause, aux_sym_try_statement_repeat1, - STATE(282), 2, + STATE(285), 2, sym_except_group_clause, aux_sym_try_statement_repeat2, - [64126] = 8, + [64229] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2194), 1, + ACTIONS(2218), 1, anon_sym_RPAREN, - ACTIONS(2196), 1, + ACTIONS(2220), 1, anon_sym_COMMA, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1472), 1, + STATE(1437), 1, aux_sym_argument_list_repeat1, - STATE(1673), 1, + STATE(1745), 1, sym__comprehension_clauses, - [64151] = 5, + [64254] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2401), 1, + ACTIONS(2441), 1, + anon_sym_except, + ACTIONS(2443), 1, + anon_sym_finally, + STATE(532), 1, + sym_finally_clause, + STATE(276), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + STATE(277), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + [64275] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, anon_sym_if, - ACTIONS(2405), 1, + ACTIONS(2445), 1, + anon_sym_COMMA, + STATE(1367), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2447), 2, + sym__newline, + anon_sym_SEMI, + [64298] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2407), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2186), 4, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2449), 4, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_COLON, - [64170] = 2, + anon_sym_RBRACK, + anon_sym_RBRACE, + [64317] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(1558), 7, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2451), 4, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, anon_sym_COLON, + anon_sym_EQ, + [64336] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2280), 1, anon_sym_and, + ACTIONS(2282), 1, anon_sym_or, - [64183] = 5, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2321), 4, + sym__newline, + anon_sym_from, + anon_sym_COMMA, + anon_sym_SEMI, + [64355] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2294), 1, anon_sym_if, - ACTIONS(2451), 4, - anon_sym_RPAREN, + ACTIONS(2407), 1, anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [64202] = 5, + STATE(1401), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2453), 2, + sym__newline, + anon_sym_SEMI, + [64378] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2453), 1, - sym_identifier, ACTIONS(2455), 1, - anon_sym_STAR, + sym_identifier, ACTIONS(2457), 1, - anon_sym_STAR_STAR, - STATE(1577), 4, - sym_typevar_parameter, - sym_typevartuple_parameter, - sym_paramspec_parameter, - sym__type_parameter, - [64221] = 4, + anon_sym_DOT, + ACTIONS(2459), 1, + anon_sym___future__, + STATE(1384), 1, + aux_sym_import_prefix_repeat1, + STATE(1417), 1, + sym_import_prefix, + STATE(1666), 2, + sym_relative_import, + sym_dotted_name, + [64401] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2405), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2407), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2176), 5, - anon_sym_RPAREN, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2331), 1, anon_sym_COMMA, - anon_sym_as, + STATE(1314), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2461), 2, + sym__newline, + anon_sym_SEMI, + [64424] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, anon_sym_if, - anon_sym_COLON, - [64238] = 8, + ACTIONS(2331), 1, + anon_sym_COMMA, + STATE(1314), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2463), 2, + sym__newline, + anon_sym_SEMI, + [64447] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2331), 1, anon_sym_COMMA, - ACTIONS(2096), 1, + STATE(1314), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2465), 2, + sym__newline, + anon_sym_SEMI, + [64470] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2186), 1, anon_sym_RPAREN, - STATE(1106), 1, + ACTIONS(2188), 1, + anon_sym_COMMA, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, - aux_sym__collection_elements_repeat1, - STATE(1618), 1, + STATE(1426), 1, + aux_sym_argument_list_repeat1, + STATE(1708), 1, sym__comprehension_clauses, - [64263] = 8, + [64495] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2238), 1, + anon_sym_if, + ACTIONS(2242), 1, + anon_sym_and, + ACTIONS(2244), 1, + anon_sym_or, + ACTIONS(2449), 4, anon_sym_RBRACE, - STATE(1106), 1, - sym_for_in_clause, - STATE(1308), 1, - aux_sym__collection_elements_repeat1, - STATE(1728), 1, - sym__comprehension_clauses, - [64288] = 8, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [64514] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(2421), 1, + anon_sym_and, + ACTIONS(2423), 1, + anon_sym_or, + ACTIONS(2425), 1, + anon_sym_if, + ACTIONS(2427), 1, anon_sym_COMMA, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2100), 1, - anon_sym_RBRACK, - STATE(1106), 1, - sym_for_in_clause, - STATE(1308), 1, - aux_sym__collection_elements_repeat1, - STATE(1754), 1, - sym__comprehension_clauses, - [64313] = 2, + ACTIONS(2467), 1, + anon_sym_as, + ACTIONS(2469), 1, + anon_sym_COLON, + STATE(1361), 1, + aux_sym_exception_list_repeat1, + [64539] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2459), 7, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, + ACTIONS(2471), 1, + sym_identifier, + ACTIONS(2473), 1, + anon_sym_LPAREN, + ACTIONS(2475), 1, + anon_sym_STAR, + STATE(1297), 1, + sym_dotted_name, + STATE(1357), 1, + sym_aliased_import, + STATE(1548), 1, + sym_wildcard_import, + STATE(1597), 1, + sym__import_list, + [64564] = 8, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2128), 1, anon_sym_async, + ACTIONS(2130), 1, anon_sym_for, - anon_sym_RBRACK, + ACTIONS(2477), 1, + anon_sym_COMMA, + ACTIONS(2479), 1, anon_sym_RBRACE, - [64326] = 8, + STATE(1101), 1, + sym_for_in_clause, + STATE(1431), 1, + aux_sym_dictionary_repeat1, + STATE(1730), 1, + sym__comprehension_clauses, + [64589] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, - anon_sym_RBRACE, - STATE(1106), 1, + ACTIONS(2198), 1, + anon_sym_RPAREN, + ACTIONS(2200), 1, + anon_sym_COMMA, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, - aux_sym__collection_elements_repeat1, - STATE(1695), 1, + STATE(1407), 1, + aux_sym_argument_list_repeat1, + STATE(1723), 1, sym__comprehension_clauses, - [64351] = 8, + [64614] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2461), 1, + ACTIONS(2481), 1, anon_sym_COMMA, - ACTIONS(2463), 1, + ACTIONS(2483), 1, anon_sym_RBRACE, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1449), 1, + STATE(1452), 1, aux_sym_dictionary_repeat1, - STATE(1665), 1, + STATE(1632), 1, sym__comprehension_clauses, - [64376] = 8, + [64639] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2397), 1, - anon_sym_COMMA, - ACTIONS(2401), 1, - anon_sym_if, - ACTIONS(2405), 1, - anon_sym_and, - ACTIONS(2407), 1, - anon_sym_or, - ACTIONS(2465), 1, - anon_sym_as, - ACTIONS(2467), 1, - anon_sym_COLON, - STATE(1364), 1, - aux_sym_exception_list_repeat1, - [64401] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2397), 1, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2182), 1, + anon_sym_RPAREN, + ACTIONS(2184), 1, anon_sym_COMMA, - ACTIONS(2401), 1, - anon_sym_if, - ACTIONS(2405), 1, - anon_sym_and, - ACTIONS(2407), 1, - anon_sym_or, - ACTIONS(2469), 1, - anon_sym_as, - ACTIONS(2471), 1, - anon_sym_COLON, - STATE(1364), 1, - aux_sym_exception_list_repeat1, - [64426] = 7, + STATE(1101), 1, + sym_for_in_clause, + STATE(1459), 1, + aux_sym_argument_list_repeat1, + STATE(1621), 1, + sym__comprehension_clauses, + [64664] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2339), 1, - anon_sym_COMMA, - STATE(1288), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2276), 2, - sym__newline, - anon_sym_SEMI, - [64449] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2096), 1, - anon_sym_async, - ACTIONS(2098), 1, - anon_sym_for, - ACTIONS(2232), 1, + ACTIONS(2485), 4, anon_sym_RPAREN, - ACTIONS(2234), 1, anon_sym_COMMA, - STATE(1106), 1, - sym_for_in_clause, - STATE(1521), 1, - aux_sym_argument_list_repeat1, - STATE(1618), 1, - sym__comprehension_clauses, - [64474] = 8, + anon_sym_RBRACK, + anon_sym_RBRACE, + [64683] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2222), 1, - anon_sym_RPAREN, - ACTIONS(2224), 1, + ACTIONS(2138), 1, anon_sym_COMMA, - STATE(1106), 1, + ACTIONS(2144), 1, + anon_sym_RPAREN, + STATE(1101), 1, sym_for_in_clause, - STATE(1412), 1, - aux_sym_argument_list_repeat1, - STATE(1628), 1, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + STATE(1745), 1, sym__comprehension_clauses, - [64499] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2473), 1, - sym_identifier, - ACTIONS(2475), 1, - anon_sym_DOT, - ACTIONS(2477), 1, - anon_sym___future__, - STATE(1343), 1, - aux_sym_import_prefix_repeat1, - STATE(1462), 1, - sym_import_prefix, - STATE(1712), 2, - sym_relative_import, - sym_dotted_name, - [64522] = 4, + [64708] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2405), 1, + ACTIONS(2421), 1, anon_sym_and, - ACTIONS(2407), 1, + ACTIONS(2423), 1, anon_sym_or, - ACTIONS(2212), 5, + ACTIONS(2425), 1, + anon_sym_if, + ACTIONS(2489), 1, + anon_sym_as, + ACTIONS(2487), 3, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, anon_sym_COLON, - [64539] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2421), 1, - anon_sym_except, - ACTIONS(2423), 1, - anon_sym_finally, - STATE(556), 1, - sym_finally_clause, - STATE(267), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - STATE(275), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - [64560] = 6, + [64729] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2447), 1, - anon_sym_except, - ACTIONS(2449), 1, - anon_sym_finally, - STATE(533), 1, - sym_finally_clause, - STATE(272), 2, - sym_except_group_clause, - aux_sym_try_statement_repeat2, - STATE(278), 2, - sym_except_clause, - aux_sym_try_statement_repeat1, - [64581] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, - anon_sym_RPAREN, - STATE(1106), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, + anon_sym_RBRACK, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, + STATE(1311), 1, aux_sym__collection_elements_repeat1, - STATE(1628), 1, + STATE(1692), 1, sym__comprehension_clauses, - [64606] = 8, + [64754] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, - anon_sym_RBRACK, - STATE(1106), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, + anon_sym_RBRACE, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, + STATE(1311), 1, aux_sym__collection_elements_repeat1, - STATE(1722), 1, + STATE(1628), 1, sym__comprehension_clauses, - [64631] = 5, + [64779] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2421), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2423), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2425), 1, anon_sym_if, - ACTIONS(2311), 4, - sym__newline, - anon_sym_from, + ACTIONS(2427), 1, anon_sym_COMMA, - anon_sym_SEMI, - [64650] = 5, + ACTIONS(2491), 1, + anon_sym_as, + ACTIONS(2493), 1, + anon_sym_COLON, + STATE(1361), 1, + aux_sym_exception_list_repeat1, + [64804] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2421), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2423), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2425), 1, anon_sym_if, - ACTIONS(2319), 4, - sym__newline, - anon_sym_from, + ACTIONS(2427), 1, anon_sym_COMMA, - anon_sym_SEMI, - [64669] = 5, + ACTIONS(2495), 1, + anon_sym_as, + ACTIONS(2497), 1, + anon_sym_COLON, + STATE(1361), 1, + aux_sym_exception_list_repeat1, + [64829] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2262), 1, + ACTIONS(1634), 7, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_as, anon_sym_if, - ACTIONS(2266), 1, + anon_sym_COLON, anon_sym_and, - ACTIONS(2268), 1, anon_sym_or, - ACTIONS(2451), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [64688] = 2, + [64842] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2288), 7, + ACTIONS(2471), 1, + sym_identifier, + ACTIONS(2475), 1, + anon_sym_STAR, + ACTIONS(2499), 1, + anon_sym_LPAREN, + STATE(1297), 1, + sym_dotted_name, + STATE(1357), 1, + sym_aliased_import, + STATE(1554), 1, + sym__import_list, + STATE(1564), 1, + sym_wildcard_import, + [64867] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2071), 7, anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_as, anon_sym_if, - anon_sym_async, - anon_sym_for, - anon_sym_RBRACK, - anon_sym_RBRACE, - [64701] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2284), 1, + anon_sym_COLON, anon_sym_and, - ACTIONS(2286), 1, anon_sym_or, - ACTIONS(2299), 1, - anon_sym_if, - ACTIONS(2479), 1, - anon_sym_COMMA, - STATE(1380), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2481), 2, - sym__newline, - anon_sym_SEMI, - [64724] = 5, + [64880] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2136), 1, - anon_sym_if, - ACTIONS(2138), 1, - anon_sym_and, - ACTIONS(2140), 1, - anon_sym_or, - ACTIONS(2483), 4, - anon_sym_COMMA, + ACTIONS(2128), 1, anon_sym_async, + ACTIONS(2130), 1, anon_sym_for, - anon_sym_RBRACE, - [64743] = 7, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2501), 1, + anon_sym_RPAREN, + STATE(1101), 1, + sym_for_in_clause, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + STATE(1745), 1, + sym__comprehension_clauses, + [64905] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2417), 1, + anon_sym_except, + ACTIONS(2419), 1, + anon_sym_finally, + STATE(531), 1, + sym_finally_clause, + STATE(265), 2, + sym_except_group_clause, + aux_sym_try_statement_repeat2, + STATE(271), 2, + sym_except_clause, + aux_sym_try_statement_repeat1, + [64926] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2294), 1, anon_sym_if, - ACTIONS(2485), 1, + ACTIONS(2331), 1, anon_sym_COMMA, - STATE(1401), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2487), 2, + STATE(1314), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2503), 2, sym__newline, anon_sym_SEMI, - [64766] = 8, + [64949] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, anon_sym_RPAREN, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, + STATE(1311), 1, aux_sym__collection_elements_repeat1, - STATE(1711), 1, + STATE(1723), 1, sym__comprehension_clauses, - [64791] = 8, + [64974] = 8, ACTIONS(3), 1, - sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + sym_comment, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, anon_sym_RBRACK, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, + STATE(1311), 1, aux_sym__collection_elements_repeat1, - STATE(1713), 1, + STATE(1726), 1, sym__comprehension_clauses, - [64816] = 8, + [64999] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, anon_sym_RBRACE, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, + STATE(1311), 1, aux_sym__collection_elements_repeat1, - STATE(1717), 1, + STATE(1728), 1, sym__comprehension_clauses, - [64841] = 8, + [65024] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, anon_sym_RPAREN, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, + STATE(1311), 1, aux_sym__collection_elements_repeat1, - STATE(1673), 1, + STATE(1621), 1, sym__comprehension_clauses, - [64866] = 8, + [65049] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, anon_sym_RBRACK, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, + STATE(1311), 1, aux_sym__collection_elements_repeat1, - STATE(1675), 1, + STATE(1622), 1, sym__comprehension_clauses, - [64891] = 5, + [65074] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2489), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_EQ, - [64910] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2096), 1, + ACTIONS(2128), 1, anon_sym_async, - ACTIONS(2098), 1, + ACTIONS(2130), 1, anon_sym_for, - ACTIONS(2100), 1, + ACTIONS(2138), 1, + anon_sym_COMMA, + ACTIONS(2144), 1, anon_sym_RBRACE, - STATE(1106), 1, + STATE(1101), 1, sym_for_in_clause, - STATE(1308), 1, + STATE(1311), 1, aux_sym__collection_elements_repeat1, - STATE(1676), 1, + STATE(1627), 1, sym__comprehension_clauses, - [64935] = 2, + [65099] = 8, ACTIONS(3), 1, sym_comment, - ACTIONS(2071), 7, - anon_sym_RPAREN, + ACTIONS(2128), 1, + anon_sym_async, + ACTIONS(2130), 1, + anon_sym_for, + ACTIONS(2138), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_if, - anon_sym_COLON, - anon_sym_and, - anon_sym_or, - [64948] = 5, + ACTIONS(2144), 1, + anon_sym_RPAREN, + STATE(1101), 1, + sym_for_in_clause, + STATE(1311), 1, + aux_sym__collection_elements_repeat1, + STATE(1708), 1, + sym__comprehension_clauses, + [65124] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2453), 1, + ACTIONS(2313), 1, sym_identifier, - ACTIONS(2455), 1, + ACTIONS(2315), 1, anon_sym_STAR, - ACTIONS(2457), 1, + ACTIONS(2319), 1, anon_sym_STAR_STAR, - STATE(1409), 4, + STATE(1563), 4, sym_typevar_parameter, sym_typevartuple_parameter, sym_paramspec_parameter, sym__type_parameter, - [64967] = 7, + [65143] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, - anon_sym_and, - ACTIONS(2286), 1, - anon_sym_or, - ACTIONS(2299), 1, - anon_sym_if, - ACTIONS(2339), 1, + ACTIONS(2505), 7, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1288), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2491), 2, - sym__newline, - anon_sym_SEMI, - [64990] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2096), 1, + anon_sym_if, anon_sym_async, - ACTIONS(2098), 1, anon_sym_for, - ACTIONS(2493), 1, - anon_sym_COMMA, - ACTIONS(2495), 1, - anon_sym_RBRACE, - STATE(1106), 1, - sym_for_in_clause, - STATE(1479), 1, - aux_sym_dictionary_repeat1, - STATE(1714), 1, - sym__comprehension_clauses, - [65015] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2276), 7, - anon_sym_RPAREN, - anon_sym_COMMA, anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [65028] = 5, + [65156] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2136), 1, + ACTIONS(2126), 1, anon_sym_if, - ACTIONS(2138), 1, + ACTIONS(2132), 1, anon_sym_and, - ACTIONS(2140), 1, + ACTIONS(2134), 1, anon_sym_or, - ACTIONS(2319), 4, + ACTIONS(2507), 4, anon_sym_COMMA, anon_sym_async, anon_sym_for, anon_sym_RBRACE, - [65047] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2284), 1, - anon_sym_and, - ACTIONS(2286), 1, - anon_sym_or, - ACTIONS(2299), 1, - anon_sym_if, - ACTIONS(2339), 1, - anon_sym_COMMA, - STATE(1288), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2497), 2, - sym__newline, - anon_sym_SEMI, - [65070] = 3, - ACTIONS(3), 1, + [65175] = 3, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2501), 1, - anon_sym_as, - ACTIONS(2499), 6, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [65085] = 7, - ACTIONS(3), 1, + ACTIONS(2509), 2, + anon_sym_LBRACE2, + anon_sym_BSLASH, + ACTIONS(2511), 4, + sym__string_content, + sym__string_end, + sym__escape_interpolation, + sym_escape_sequence, + [65189] = 3, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2284), 1, - anon_sym_and, - ACTIONS(2286), 1, - anon_sym_or, - ACTIONS(2299), 1, - anon_sym_if, - ACTIONS(2485), 1, - anon_sym_COMMA, - STATE(1390), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2503), 2, - sym__newline, - anon_sym_SEMI, - [65108] = 4, + ACTIONS(2513), 2, + anon_sym_LBRACE2, + anon_sym_BSLASH, + ACTIONS(2515), 4, + sym__string_content, + sym__string_end, + sym__escape_interpolation, + sym_escape_sequence, + [65203] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2505), 1, + ACTIONS(2517), 1, anon_sym_DOT, - STATE(1242), 1, + STATE(1267), 1, aux_sym_match_value_pattern_repeat1, - ACTIONS(2075), 4, + ACTIONS(2519), 4, sym__newline, anon_sym_COMMA, anon_sym_as, anon_sym_SEMI, - [65124] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2510), 1, - anon_sym_COMMA, - STATE(1249), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2508), 4, - anon_sym_RPAREN, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [65140] = 6, + [65219] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2514), 1, + ACTIONS(2523), 1, anon_sym_COLON, - ACTIONS(2512), 2, + ACTIONS(2521), 2, anon_sym_COMMA, anon_sym_RBRACK, - [65160] = 4, + [65239] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2516), 1, - anon_sym_DOT, - STATE(1262), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2518), 4, - sym__newline, - anon_sym_COMMA, - anon_sym_as, - anon_sym_SEMI, - [65176] = 6, + ACTIONS(2527), 1, + anon_sym_AT, + STATE(1248), 2, + sym_decorator, + aux_sym_decorated_definition_repeat1, + ACTIONS(2525), 3, + anon_sym_async, + anon_sym_def, + anon_sym_class, + [65255] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2522), 1, + ACTIONS(2532), 1, anon_sym_COLON, - ACTIONS(2520), 2, + ACTIONS(2530), 2, anon_sym_COMMA, anon_sym_RBRACK, - [65196] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2284), 1, - anon_sym_and, - ACTIONS(2286), 1, - anon_sym_or, - ACTIONS(2299), 1, - anon_sym_if, - ACTIONS(2524), 3, - sym__newline, - anon_sym_COMMA, - anon_sym_SEMI, - [65214] = 3, + [65275] = 3, ACTIONS(2086), 1, sym_comment, - ACTIONS(2526), 2, + ACTIONS(2534), 2, anon_sym_LBRACE2, anon_sym_BSLASH, - ACTIONS(2528), 4, + ACTIONS(2536), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [65228] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2532), 1, - anon_sym_COMMA, - STATE(1249), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2530), 4, - anon_sym_RPAREN, - anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [65244] = 7, + [65289] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2393), 1, + ACTIONS(2538), 1, + anon_sym_DOT, + STATE(1251), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2075), 4, + sym__newline, anon_sym_COMMA, - ACTIONS(2535), 1, - anon_sym_COLON, - STATE(1243), 1, - aux_sym_expression_list_repeat1, - [65266] = 4, + anon_sym_as, + anon_sym_SEMI, + [65305] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, + ACTIONS(2094), 1, anon_sym_DOT, - STATE(1256), 1, + STATE(1039), 1, aux_sym_match_value_pattern_repeat1, - ACTIONS(2518), 4, + ACTIONS(2541), 4, anon_sym_import, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - [65282] = 3, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(2537), 2, - anon_sym_LBRACE2, - anon_sym_BSLASH, - ACTIONS(2539), 4, - sym__string_content, - sym__string_end, - sym__escape_interpolation, - sym_escape_sequence, - [65296] = 7, + [65321] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2393), 1, + ACTIONS(2335), 1, anon_sym_COMMA, - ACTIONS(2541), 1, + ACTIONS(2543), 1, anon_sym_COLON, - STATE(1243), 1, + STATE(1275), 1, aux_sym_expression_list_repeat1, - [65318] = 6, + [65343] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2545), 1, - anon_sym_COLON, - ACTIONS(2547), 1, - anon_sym_EQ, - STATE(1389), 1, - sym__type_bound, - STATE(1570), 1, - sym__type_param_default, - ACTIONS(2543), 2, + ACTIONS(2152), 6, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_if, + anon_sym_COLON, anon_sym_RBRACK, - [65338] = 5, + anon_sym_RBRACE, + [65355] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2549), 3, - sym__newline, + ACTIONS(2545), 3, anon_sym_COMMA, - anon_sym_SEMI, - [65356] = 4, + anon_sym_RBRACK, + anon_sym_EQ, + [65373] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, + ACTIONS(2094), 1, anon_sym_DOT, - STATE(1039), 1, + STATE(1252), 1, aux_sym_match_value_pattern_repeat1, - ACTIONS(2551), 4, + ACTIONS(2519), 4, anon_sym_import, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_as, - [65372] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2555), 1, - anon_sym_AT, - STATE(1257), 2, - sym_decorator, - aux_sym_decorated_definition_repeat1, - ACTIONS(2553), 3, - anon_sym_async, - anon_sym_def, - anon_sym_class, - [65388] = 7, + [65389] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2232), 1, + ACTIONS(2547), 3, anon_sym_RPAREN, - ACTIONS(2234), 1, anon_sym_COMMA, - STATE(1526), 1, - aux_sym_argument_list_repeat1, - [65410] = 3, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(2558), 2, - anon_sym_LBRACE2, - anon_sym_BSLASH, - ACTIONS(2560), 4, - sym__string_content, - sym__string_end, - sym__escape_interpolation, - sym_escape_sequence, - [65424] = 3, + anon_sym_COLON, + [65407] = 3, ACTIONS(2086), 1, sym_comment, - ACTIONS(2562), 2, + ACTIONS(2549), 2, anon_sym_LBRACE2, anon_sym_BSLASH, - ACTIONS(2564), 4, + ACTIONS(2551), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [65438] = 5, + [65421] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2566), 3, - anon_sym_RPAREN, + ACTIONS(2335), 1, anon_sym_COMMA, + ACTIONS(2553), 1, anon_sym_COLON, - [65456] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2516), 1, - anon_sym_DOT, - STATE(1242), 1, - aux_sym_match_value_pattern_repeat1, - ACTIONS(2551), 4, - sym__newline, - anon_sym_COMMA, - anon_sym_as, - anon_sym_SEMI, - [65472] = 2, + STATE(1275), 1, + aux_sym_expression_list_repeat1, + [65443] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2110), 6, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2555), 3, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_if, anon_sym_COLON, - anon_sym_RBRACK, - anon_sym_RBRACE, - [65484] = 6, + [65461] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2570), 1, - anon_sym_COLON, - ACTIONS(2568), 2, + ACTIONS(2335), 1, anon_sym_COMMA, - anon_sym_RBRACK, - [65504] = 7, + ACTIONS(2557), 1, + anon_sym_COLON, + STATE(1275), 1, + aux_sym_expression_list_repeat1, + [65483] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2393), 1, + ACTIONS(2335), 1, anon_sym_COMMA, - ACTIONS(2572), 1, + ACTIONS(2559), 1, anon_sym_COLON, - STATE(1243), 1, + STATE(1275), 1, aux_sym_expression_list_repeat1, - [65526] = 5, + [65505] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2401), 1, - anon_sym_if, - ACTIONS(2405), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2407), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2574), 3, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2218), 1, + anon_sym_RPAREN, + ACTIONS(2220), 1, anon_sym_COMMA, - anon_sym_as, - anon_sym_COLON, - [65544] = 5, + STATE(1453), 1, + aux_sym_argument_list_repeat1, + [65527] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2576), 3, - anon_sym_RPAREN, + ACTIONS(2563), 1, + anon_sym_COLON, + ACTIONS(2561), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [65547] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2567), 1, anon_sym_COMMA, + STATE(1265), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2565), 4, + anon_sym_RPAREN, anon_sym_COLON, - [65562] = 5, + anon_sym_RBRACK, + anon_sym_RBRACE, + [65563] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2294), 1, anon_sym_if, - ACTIONS(2578), 3, + ACTIONS(2570), 3, + sym__newline, anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_EQ, - [65580] = 6, + anon_sym_SEMI, + [65581] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2475), 1, + ACTIONS(2517), 1, anon_sym_DOT, - ACTIONS(2580), 1, - sym_identifier, - STATE(1343), 1, - aux_sym_import_prefix_repeat1, - STATE(1462), 1, - sym_import_prefix, - STATE(1620), 2, - sym_relative_import, - sym_dotted_name, - [65600] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2582), 1, + STATE(1251), 1, + aux_sym_match_value_pattern_repeat1, + ACTIONS(2541), 4, + sym__newline, anon_sym_COMMA, - STATE(1270), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2530), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [65616] = 5, + anon_sym_as, + anon_sym_SEMI, + [65597] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2294), 1, anon_sym_if, - ACTIONS(2489), 3, + ACTIONS(2572), 3, sym__newline, - anon_sym_EQ, + anon_sym_COMMA, anon_sym_SEMI, - [65634] = 4, + [65615] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2585), 1, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2335), 1, anon_sym_COMMA, - STATE(1270), 1, + ACTIONS(2574), 1, + anon_sym_COLON, + STATE(1275), 1, aux_sym_expression_list_repeat1, - ACTIONS(2508), 4, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [65650] = 4, + [65637] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2576), 3, + sym__newline, + anon_sym_COMMA, + anon_sym_SEMI, + [65655] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2587), 1, + ACTIONS(2580), 1, anon_sym_COMMA, - STATE(1249), 1, + STATE(1265), 1, aux_sym_expression_list_repeat1, - ACTIONS(2508), 4, + ACTIONS(2578), 4, anon_sym_RPAREN, anon_sym_COLON, anon_sym_RBRACK, anon_sym_RBRACE, - [65666] = 4, + [65671] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2589), 1, + ACTIONS(2421), 1, + anon_sym_and, + ACTIONS(2423), 1, + anon_sym_or, + ACTIONS(2425), 1, + anon_sym_if, + ACTIONS(2582), 3, anon_sym_COMMA, - STATE(1270), 1, + anon_sym_as, + anon_sym_COLON, + [65689] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2584), 1, + anon_sym_COMMA, + STATE(1281), 1, aux_sym_expression_list_repeat1, - ACTIONS(2508), 4, + ACTIONS(2578), 4, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COLON2, sym_type_conversion, - [65682] = 3, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(2591), 2, - anon_sym_LBRACE2, - anon_sym_BSLASH, - ACTIONS(2593), 4, - sym__string_content, - sym__string_end, - sym__escape_interpolation, - sym_escape_sequence, - [65696] = 7, + [65705] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2393), 1, + ACTIONS(2586), 1, anon_sym_COMMA, - ACTIONS(2595), 1, - anon_sym_COLON, - STATE(1243), 1, + STATE(1281), 1, aux_sym_expression_list_repeat1, - [65718] = 7, + ACTIONS(2578), 4, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [65721] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2393), 1, + ACTIONS(2588), 1, anon_sym_COMMA, - ACTIONS(2597), 1, - anon_sym_COLON, - STATE(1243), 1, + STATE(1265), 1, aux_sym_expression_list_repeat1, - [65740] = 5, + ACTIONS(2578), 4, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_RBRACK, + anon_sym_RBRACE, + [65737] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2294), 1, anon_sym_if, - ACTIONS(2599), 3, + ACTIONS(2451), 3, sym__newline, - anon_sym_COMMA, + anon_sym_EQ, anon_sym_SEMI, - [65758] = 7, + [65755] = 3, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2590), 2, + anon_sym_LBRACE2, + anon_sym_BSLASH, + ACTIONS(2592), 4, + sym__string_content, + sym__string_end, + sym__escape_interpolation, + sym_escape_sequence, + [65769] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2393), 1, + ACTIONS(2594), 6, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(2601), 1, + anon_sym_if, anon_sym_COLON, - STATE(1243), 1, - aux_sym_expression_list_repeat1, - [65780] = 4, + anon_sym_RBRACK, + anon_sym_RBRACE, + [65781] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2605), 1, + ACTIONS(2598), 1, anon_sym_COMMA, - STATE(1280), 1, + STATE(1279), 1, aux_sym_open_sequence_match_pattern_repeat1, - ACTIONS(2603), 4, + ACTIONS(2596), 4, anon_sym_RPAREN, anon_sym_if, anon_sym_COLON, anon_sym_RBRACK, - [65796] = 3, + [65797] = 3, ACTIONS(2086), 1, sym_comment, - ACTIONS(2608), 2, + ACTIONS(2601), 2, anon_sym_LBRACE2, anon_sym_BSLASH, - ACTIONS(2610), 4, + ACTIONS(2603), 4, sym__string_content, sym__string_end, sym__escape_interpolation, sym_escape_sequence, - [65810] = 2, + [65811] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2612), 6, - anon_sym_RPAREN, + ACTIONS(2605), 1, anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_RBRACK, + STATE(1281), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2565), 4, anon_sym_RBRACE, - [65822] = 5, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [65827] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2614), 2, + ACTIONS(2610), 1, + anon_sym_COLON, + ACTIONS(2612), 1, + anon_sym_EQ, + STATE(1341), 1, + sym__type_bound, + STATE(1546), 1, + sym__type_param_default, + ACTIONS(2608), 2, anon_sym_COMMA, anon_sym_RBRACK, - [65839] = 5, + [65847] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2457), 1, + anon_sym_DOT, + ACTIONS(2614), 1, + sym_identifier, + STATE(1384), 1, + aux_sym_import_prefix_repeat1, + STATE(1417), 1, + sym_import_prefix, + STATE(1631), 2, + sym_relative_import, + sym_dotted_name, + [65867] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2616), 2, - sym__newline, - anon_sym_SEMI, - [65856] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2618), 1, - anon_sym_LPAREN, - ACTIONS(2620), 1, - anon_sym_COLON, - ACTIONS(2622), 1, - anon_sym_LBRACK, - STATE(1520), 1, - sym_type_parameters, - STATE(1701), 1, - sym_argument_list, - [65875] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2624), 1, + ACTIONS(2335), 1, anon_sym_COMMA, - STATE(1299), 1, + ACTIONS(2616), 1, + anon_sym_COLON, + STATE(1275), 1, aux_sym_expression_list_repeat1, - ACTIONS(2508), 3, - sym__newline, - anon_sym_from, - anon_sym_SEMI, - [65890] = 6, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(2626), 1, - anon_sym_RBRACE, - ACTIONS(2628), 1, - anon_sym_LBRACE2, - ACTIONS(2630), 1, - aux_sym_format_specifier_token1, - STATE(1315), 1, - aux_sym_format_specifier_repeat1, - STATE(1499), 1, - sym_interpolation, - [65909] = 4, + [65889] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2632), 1, + ACTIONS(2620), 1, anon_sym_COMMA, - STATE(1299), 1, - aux_sym_expression_list_repeat1, - ACTIONS(2508), 3, - sym__newline, - anon_sym_from, - anon_sym_SEMI, - [65924] = 6, + STATE(1302), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2618), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + [65904] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2634), 1, + ACTIONS(2622), 1, anon_sym_RBRACE, - ACTIONS(2636), 1, + ACTIONS(2624), 1, anon_sym_EQ, - ACTIONS(2638), 1, + ACTIONS(2626), 1, anon_sym_COLON2, - ACTIONS(2640), 1, + ACTIONS(2628), 1, sym_type_conversion, - STATE(1677), 1, + STATE(1691), 1, sym_format_specifier, - [65943] = 5, + [65923] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2642), 1, - anon_sym_COMMA, - ACTIONS(2644), 1, - anon_sym_as, - STATE(1336), 1, - aux_sym__import_list_repeat1, - ACTIONS(2646), 2, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2449), 2, sym__newline, anon_sym_SEMI, - [65960] = 2, - ACTIONS(3), 1, + [65940] = 6, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2311), 5, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - anon_sym_RBRACK, + ACTIONS(2630), 1, anon_sym_RBRACE, - [65971] = 5, + ACTIONS(2632), 1, + anon_sym_LBRACE2, + ACTIONS(2634), 1, + aux_sym_format_specifier_token1, + STATE(1305), 1, + aux_sym_format_specifier_repeat1, + STATE(1421), 1, + sym_interpolation, + [65959] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2483), 2, + ACTIONS(2636), 2, anon_sym_COMMA, - anon_sym_RBRACE, - [65988] = 2, + anon_sym_RBRACK, + [65976] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(2075), 5, @@ -78903,3531 +78911,3602 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_as, anon_sym_SEMI, - [65999] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - STATE(1309), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2100), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - [66014] = 5, + [65987] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2294), 1, anon_sym_if, - ACTIONS(2648), 2, + ACTIONS(2638), 2, + sym__newline, + anon_sym_SEMI, + [66004] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2471), 1, + sym_identifier, + STATE(1324), 1, + sym_dotted_name, + STATE(1429), 1, + sym_aliased_import, + ACTIONS(2640), 2, sym__newline, anon_sym_SEMI, - [66031] = 6, + [66021] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2638), 1, + ACTIONS(2626), 1, anon_sym_COLON2, - ACTIONS(2650), 1, + ACTIONS(2642), 1, anon_sym_RBRACE, - ACTIONS(2652), 1, + ACTIONS(2644), 1, anon_sym_EQ, - ACTIONS(2654), 1, + ACTIONS(2646), 1, sym_type_conversion, - STATE(1651), 1, + STATE(1680), 1, sym_format_specifier, - [66050] = 5, + [66040] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2471), 1, + sym_identifier, + ACTIONS(2648), 1, + anon_sym_LPAREN, + STATE(1297), 1, + sym_dotted_name, + STATE(1357), 1, + sym_aliased_import, + STATE(1550), 1, + sym__import_list, + [66059] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2650), 1, + anon_sym_LPAREN, + ACTIONS(2652), 1, + anon_sym_COLON, + ACTIONS(2654), 1, + anon_sym_LBRACK, + STATE(1529), 1, + sym_type_parameters, + STATE(1746), 1, + sym_argument_list, + [66078] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2280), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2282), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2294), 1, anon_sym_if, ACTIONS(2656), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [66067] = 5, + sym__newline, + anon_sym_SEMI, + [66095] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2658), 2, - anon_sym_RPAREN, + ACTIONS(2658), 1, anon_sym_COMMA, - [66084] = 4, + ACTIONS(2660), 1, + anon_sym_as, + STATE(1389), 1, + aux_sym__import_list_repeat1, + ACTIONS(2662), 2, + sym__newline, + anon_sym_SEMI, + [66112] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2660), 1, + ACTIONS(2664), 1, anon_sym_COMMA, - STATE(1299), 1, + STATE(1298), 1, aux_sym_expression_list_repeat1, - ACTIONS(2530), 3, + ACTIONS(2565), 3, sym__newline, anon_sym_from, anon_sym_SEMI, - [66099] = 5, + [66127] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2413), 1, + ACTIONS(2471), 1, sym_identifier, - STATE(1329), 1, + STATE(1324), 1, sym_dotted_name, - STATE(1428), 1, + STATE(1429), 1, sym_aliased_import, - ACTIONS(2663), 2, + ACTIONS(2667), 2, sym__newline, anon_sym_SEMI, - [66116] = 2, + [66144] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2311), 5, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2669), 2, + sym__newline, + anon_sym_SEMI, + [66161] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2321), 5, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RBRACK, anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_COLON2, - sym_type_conversion, - [66127] = 5, + [66172] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2413), 1, - sym_identifier, - STATE(1329), 1, - sym_dotted_name, - STATE(1428), 1, - sym_aliased_import, - ACTIONS(2665), 2, - sym__newline, - anon_sym_SEMI, - [66144] = 5, + ACTIONS(2673), 1, + anon_sym_COMMA, + STATE(1302), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2671), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + [66187] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2667), 2, + ACTIONS(2507), 2, anon_sym_COMMA, - anon_sym_RBRACK, - [66161] = 5, + anon_sym_RBRACE, + [66204] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2413), 1, - sym_identifier, - STATE(1329), 1, - sym_dotted_name, - STATE(1428), 1, - sym_aliased_import, - ACTIONS(2663), 2, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2676), 2, sym__newline, anon_sym_SEMI, - [66178] = 6, + [66221] = 6, ACTIONS(2086), 1, sym_comment, - ACTIONS(2669), 1, + ACTIONS(2678), 1, anon_sym_RBRACE, - ACTIONS(2671), 1, + ACTIONS(2680), 1, anon_sym_LBRACE2, - ACTIONS(2674), 1, + ACTIONS(2683), 1, aux_sym_format_specifier_token1, STATE(1305), 1, aux_sym_format_specifier_repeat1, - STATE(1499), 1, + STATE(1421), 1, sym_interpolation, - [66197] = 6, + [66240] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2413), 1, - sym_identifier, - ACTIONS(2677), 1, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2686), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [66257] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2688), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [66274] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2690), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [66291] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2650), 1, anon_sym_LPAREN, - STATE(1290), 1, - sym_dotted_name, - STATE(1327), 1, - sym_aliased_import, - STATE(1565), 1, - sym__import_list, - [66216] = 2, + ACTIONS(2654), 1, + anon_sym_LBRACK, + ACTIONS(2692), 1, + anon_sym_COLON, + STATE(1481), 1, + sym_type_parameters, + STATE(1630), 1, + sym_argument_list, + [66310] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2603), 5, + ACTIONS(2596), 5, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_if, anon_sym_COLON, anon_sym_RBRACK, - [66227] = 4, + [66321] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2681), 1, + ACTIONS(2694), 1, anon_sym_COMMA, - STATE(1311), 1, + STATE(1302), 1, aux_sym__collection_elements_repeat1, - ACTIONS(2679), 3, + ACTIONS(2618), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - [66242] = 4, + [66336] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2683), 1, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2696), 2, anon_sym_COMMA, - STATE(1311), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2679), 3, - anon_sym_RPAREN, anon_sym_RBRACK, - anon_sym_RBRACE, - [66257] = 4, + [66353] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2685), 1, + ACTIONS(2698), 1, anon_sym_COMMA, - STATE(1311), 1, + STATE(1302), 1, aux_sym__collection_elements_repeat1, - ACTIONS(2679), 3, + ACTIONS(2618), 3, anon_sym_RPAREN, anon_sym_RBRACK, anon_sym_RBRACE, - [66272] = 4, + [66368] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2689), 1, + ACTIONS(2700), 1, anon_sym_COMMA, - STATE(1311), 1, - aux_sym__collection_elements_repeat1, - ACTIONS(2687), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - anon_sym_RBRACE, - [66287] = 2, + STATE(1298), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2578), 3, + sym__newline, + anon_sym_from, + anon_sym_SEMI, + [66383] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2692), 5, - anon_sym_RPAREN, + ACTIONS(2321), 5, anon_sym_COMMA, - anon_sym_if, - anon_sym_COLON, - anon_sym_RBRACK, - [66298] = 5, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON2, + sym_type_conversion, + [66394] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2694), 2, - sym__newline, - anon_sym_SEMI, - [66315] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2618), 1, - anon_sym_LPAREN, - ACTIONS(2622), 1, - anon_sym_LBRACK, - ACTIONS(2696), 1, - anon_sym_COLON, - STATE(1491), 1, - sym_type_parameters, - STATE(1626), 1, - sym_argument_list, - [66334] = 6, + ACTIONS(2702), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [66411] = 6, ACTIONS(2086), 1, sym_comment, - ACTIONS(2628), 1, + ACTIONS(2632), 1, anon_sym_LBRACE2, - ACTIONS(2698), 1, + ACTIONS(2704), 1, anon_sym_RBRACE, - ACTIONS(2700), 1, + ACTIONS(2706), 1, aux_sym_format_specifier_token1, - STATE(1305), 1, + STATE(1288), 1, aux_sym_format_specifier_repeat1, - STATE(1499), 1, + STATE(1421), 1, sym_interpolation, - [66353] = 5, + [66430] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2138), 1, + anon_sym_COMMA, + STATE(1313), 1, + aux_sym__collection_elements_repeat1, + ACTIONS(2144), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_RBRACE, + [66445] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2451), 2, + ACTIONS(2708), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [66462] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2471), 1, + sym_identifier, + STATE(1324), 1, + sym_dotted_name, + STATE(1429), 1, + sym_aliased_import, + ACTIONS(2667), 2, sym__newline, anon_sym_SEMI, - [66370] = 5, + [66479] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2702), 2, + ACTIONS(2710), 1, anon_sym_COMMA, - anon_sym_RBRACK, - [66387] = 5, + STATE(1298), 1, + aux_sym_expression_list_repeat1, + ACTIONS(2578), 3, + sym__newline, + anon_sym_from, + anon_sym_SEMI, + [66494] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2704), 2, + ACTIONS(2712), 2, anon_sym_COMMA, anon_sym_RBRACK, - [66404] = 5, + [66511] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, - anon_sym_and, - ACTIONS(2286), 1, - anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2714), 5, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_if, - ACTIONS(2706), 2, + anon_sym_COLON, + anon_sym_RBRACK, + [66522] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2660), 1, + anon_sym_as, + ACTIONS(2716), 3, sym__newline, + anon_sym_COMMA, anon_sym_SEMI, - [66421] = 5, + [66534] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2708), 2, + ACTIONS(2718), 1, anon_sym_COMMA, - anon_sym_RBRACK, - [66438] = 5, + STATE(1325), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2721), 2, + sym__newline, + anon_sym_SEMI, + [66548] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2710), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [66455] = 5, + ACTIONS(2723), 1, + anon_sym_SEMI, + ACTIONS(2725), 1, + sym__newline, + STATE(129), 1, + sym__semicolon, + STATE(1329), 1, + aux_sym__simple_statements_repeat1, + [66564] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2712), 1, + ACTIONS(2727), 1, anon_sym_SEMI, - ACTIONS(2715), 1, + ACTIONS(2729), 1, sym__newline, - STATE(133), 1, + STATE(128), 1, sym__semicolon, - STATE(1322), 1, + STATE(1328), 1, aux_sym__simple_statements_repeat1, - [66471] = 4, + [66580] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2717), 1, - anon_sym_COMMA, - STATE(1404), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2719), 2, + ACTIONS(563), 1, + sym__newline, + ACTIONS(2731), 1, + anon_sym_SEMI, + STATE(127), 1, + sym__semicolon, + STATE(1344), 1, + aux_sym__simple_statements_repeat1, + [66596] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(565), 1, sym__newline, + ACTIONS(2733), 1, anon_sym_SEMI, - [66485] = 4, + STATE(132), 1, + sym__semicolon, + STATE(1344), 1, + aux_sym__simple_statements_repeat1, + [66612] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2614), 1, + sym_identifier, + ACTIONS(2640), 1, + anon_sym_RPAREN, + STATE(1494), 1, + sym_dotted_name, + STATE(1615), 1, + sym_aliased_import, + [66628] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2721), 1, + ACTIONS(2735), 1, anon_sym_case, - STATE(593), 1, + STATE(523), 1, sym_cases, - STATE(461), 2, + STATE(456), 2, sym_case_block, aux_sym_cases_repeat1, - [66499] = 5, + [66642] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2735), 1, + anon_sym_case, + STATE(524), 1, + sym_cases, + STATE(456), 2, + sym_case_block, + aux_sym_cases_repeat1, + [66656] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2654), 1, + anon_sym_LBRACK, + ACTIONS(2737), 1, + anon_sym_LPAREN, + STATE(1585), 1, + sym_parameters, + STATE(1586), 1, + sym_type_parameters, + [66672] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2723), 1, - anon_sym_COLON, - [66515] = 5, + ACTIONS(2739), 1, + anon_sym_else, + [66688] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2741), 1, + anon_sym_COMMA, + STATE(1363), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2743), 2, + sym__newline, + anon_sym_SEMI, + [66702] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2284), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2286), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2299), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2725), 1, - sym__newline, - [66531] = 4, + ACTIONS(2745), 1, + anon_sym_COLON, + [66718] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2642), 1, + ACTIONS(2626), 1, + anon_sym_COLON2, + ACTIONS(2747), 1, + anon_sym_RBRACE, + ACTIONS(2749), 1, + sym_type_conversion, + STATE(1725), 1, + sym_format_specifier, + [66734] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2612), 1, + anon_sym_EQ, + STATE(1555), 1, + sym__type_param_default, + ACTIONS(2751), 2, anon_sym_COMMA, - STATE(1335), 1, - aux_sym__import_list_repeat1, - ACTIONS(2646), 2, - sym__newline, - anon_sym_SEMI, - [66545] = 5, + anon_sym_RBRACK, + [66748] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(567), 1, + ACTIONS(2612), 1, + anon_sym_EQ, + STATE(1556), 1, + sym__type_param_default, + ACTIONS(2753), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [66762] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2654), 1, + anon_sym_LBRACK, + ACTIONS(2737), 1, + anon_sym_LPAREN, + STATE(1591), 1, + sym_parameters, + STATE(1593), 1, + sym_type_parameters, + [66778] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2612), 1, + anon_sym_EQ, + STATE(1559), 1, + sym__type_param_default, + ACTIONS(2755), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [66792] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2757), 1, + anon_sym_COMMA, + STATE(1396), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2759), 2, sym__newline, - ACTIONS(2727), 1, anon_sym_SEMI, - STATE(128), 1, - sym__semicolon, - STATE(1322), 1, - aux_sym__simple_statements_repeat1, - [66561] = 3, + [66806] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2644), 1, - anon_sym_as, - ACTIONS(2729), 3, - sym__newline, + ACTIONS(2757), 1, anon_sym_COMMA, + STATE(1399), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2761), 2, + sym__newline, anon_sym_SEMI, - [66573] = 5, + [66820] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2638), 1, - anon_sym_COLON2, - ACTIONS(2731), 1, - anon_sym_RBRACE, - ACTIONS(2733), 1, - sym_type_conversion, - STATE(1646), 1, - sym_format_specifier, - [66589] = 5, + ACTIONS(2763), 1, + anon_sym_SEMI, + ACTIONS(2766), 1, + sym__newline, + STATE(133), 1, + sym__semicolon, + STATE(1344), 1, + aux_sym__simple_statements_repeat1, + [66836] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2735), 1, + ACTIONS(2451), 4, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_COLON, - [66605] = 4, + anon_sym_EQ, + [66846] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2737), 1, - anon_sym_COMMA, - STATE(1332), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2740), 2, + ACTIONS(2321), 4, sym__newline, + anon_sym_from, + anon_sym_COMMA, anon_sym_SEMI, - [66619] = 3, + [66856] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2744), 1, - anon_sym_EQ, - ACTIONS(2742), 3, - anon_sym_RPAREN, - anon_sym_COMMA, + ACTIONS(315), 1, + sym__string_start, + ACTIONS(2156), 1, anon_sym_COLON, - [66631] = 4, + STATE(630), 2, + sym_string, + aux_sym_concatenated_string_repeat1, + [66870] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2746), 1, - anon_sym_case, - STATE(545), 1, - sym_cases, - STATE(440), 2, - sym_case_block, - aux_sym_cases_repeat1, - [66645] = 4, + ACTIONS(317), 1, + sym__template_string_start, + ACTIONS(2156), 1, + anon_sym_COLON, + STATE(631), 2, + sym_template_string, + aux_sym_concatenated_template_string_repeat1, + [66884] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2748), 1, + ACTIONS(2407), 1, anon_sym_COMMA, - STATE(1339), 1, - aux_sym__import_list_repeat1, - ACTIONS(2750), 2, + STATE(1386), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2768), 2, sym__newline, anon_sym_SEMI, - [66659] = 4, + [66898] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2752), 1, - anon_sym_COMMA, - STATE(1339), 1, - aux_sym__import_list_repeat1, - ACTIONS(2750), 2, + ACTIONS(2280), 1, + anon_sym_and, + ACTIONS(2282), 1, + anon_sym_or, + ACTIONS(2294), 1, + anon_sym_if, + ACTIONS(2770), 1, sym__newline, - anon_sym_SEMI, - [66673] = 5, + [66914] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2580), 1, + ACTIONS(2614), 1, sym_identifier, - ACTIONS(2663), 1, + ACTIONS(2667), 1, anon_sym_RPAREN, - STATE(1438), 1, + STATE(1494), 1, sym_dotted_name, - STATE(1600), 1, + STATE(1615), 1, sym_aliased_import, - [66689] = 5, + [66930] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2580), 1, + ACTIONS(2614), 1, sym_identifier, - ACTIONS(2663), 1, + ACTIONS(2667), 1, anon_sym_RPAREN, - STATE(1438), 1, + STATE(1494), 1, sym_dotted_name, - STATE(1600), 1, + STATE(1615), 1, sym_aliased_import, - [66705] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2754), 1, - anon_sym_COMMA, - STATE(1339), 1, - aux_sym__import_list_repeat1, - ACTIONS(2757), 2, - sym__newline, - anon_sym_SEMI, - [66719] = 4, + [66946] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2746), 1, - anon_sym_case, - STATE(546), 1, - sym_cases, - STATE(440), 2, - sym_case_block, - aux_sym_cases_repeat1, - [66733] = 5, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2772), 1, + anon_sym_else, + [66962] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2580), 1, + ACTIONS(2471), 1, sym_identifier, - STATE(1362), 1, + STATE(1297), 1, sym_dotted_name, - STATE(1467), 1, + STATE(1357), 1, sym_aliased_import, - STATE(1670), 1, + STATE(1572), 1, sym__import_list, - [66749] = 5, + [66978] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2580), 1, - sym_identifier, - STATE(1362), 1, - sym_dotted_name, - STATE(1467), 1, - sym_aliased_import, - STATE(1671), 1, - sym__import_list, - [66765] = 4, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2774), 1, + anon_sym_COLON, + [66994] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2761), 1, - anon_sym_DOT, - STATE(1352), 1, - aux_sym_import_prefix_repeat1, - ACTIONS(2759), 2, - anon_sym_import, - sym_identifier, - [66779] = 2, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2776), 1, + anon_sym_COLON, + [67010] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2763), 4, - anon_sym_RPAREN, + ACTIONS(2658), 1, anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [66789] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2765), 1, - anon_sym_SEMI, - ACTIONS(2767), 1, + STATE(1388), 1, + aux_sym__import_list_repeat1, + ACTIONS(2662), 2, sym__newline, - STATE(129), 1, - sym__semicolon, - STATE(1351), 1, - aux_sym__simple_statements_repeat1, - [66805] = 5, + anon_sym_SEMI, + [67024] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2769), 1, - anon_sym_SEMI, - ACTIONS(2771), 1, - sym__newline, - STATE(127), 1, - sym__semicolon, - STATE(1399), 1, - aux_sym__simple_statements_repeat1, - [66821] = 5, + ACTIONS(2780), 1, + anon_sym_COMMA, + STATE(1404), 1, + aux_sym__patterns_repeat1, + ACTIONS(2778), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [67038] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2773), 1, - anon_sym_else, - [66837] = 4, + ACTIONS(2782), 1, + anon_sym_COLON, + [67054] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2626), 1, + anon_sym_COLON2, + ACTIONS(2784), 1, + anon_sym_RBRACE, + ACTIONS(2786), 1, + sym_type_conversion, + STATE(1675), 1, + sym_format_specifier, + [67070] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2775), 1, + ACTIONS(2427), 1, anon_sym_COMMA, - STATE(1348), 1, + STATE(1393), 1, aux_sym_exception_list_repeat1, - ACTIONS(2778), 2, + ACTIONS(2788), 2, anon_sym_as, anon_sym_COLON, - [66851] = 2, + [67084] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2780), 4, - anon_sym_RPAREN, + ACTIONS(2790), 1, + anon_sym_SEMI, + ACTIONS(2792), 1, + sym__newline, + STATE(130), 1, + sym__semicolon, + STATE(1365), 1, + aux_sym__simple_statements_repeat1, + [67100] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2794), 1, anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [66861] = 5, + STATE(1385), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2796), 2, + sym__newline, + anon_sym_SEMI, + [67114] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2782), 1, - anon_sym_COLON, - [66877] = 5, + ACTIONS(2614), 1, + sym_identifier, + STATE(1390), 1, + sym_dotted_name, + STATE(1491), 1, + sym_aliased_import, + STATE(1697), 1, + sym__import_list, + [67130] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(565), 1, + ACTIONS(567), 1, sym__newline, - ACTIONS(2784), 1, + ACTIONS(2798), 1, anon_sym_SEMI, STATE(131), 1, sym__semicolon, - STATE(1322), 1, + STATE(1344), 1, aux_sym__simple_statements_repeat1, - [66893] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2788), 1, - anon_sym_DOT, - STATE(1352), 1, - aux_sym_import_prefix_repeat1, - ACTIONS(2786), 2, - anon_sym_import, - sym_identifier, - [66907] = 5, + [67146] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2791), 1, + ACTIONS(2800), 1, anon_sym_else, - [66923] = 2, + [67162] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2411), 4, - anon_sym_RPAREN, + ACTIONS(2802), 1, anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_RBRACE, - [66933] = 4, + STATE(1385), 1, + aux_sym_print_statement_repeat1, + ACTIONS(2804), 2, + sym__newline, + anon_sym_SEMI, + [67176] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2795), 1, - anon_sym_COMMA, - STATE(1360), 1, - aux_sym__patterns_repeat1, - ACTIONS(2793), 2, - anon_sym_RPAREN, - anon_sym_RBRACK, - [66947] = 5, + ACTIONS(2806), 4, + anon_sym_async, + anon_sym_def, + anon_sym_class, + anon_sym_AT, + [67186] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2638), 1, - anon_sym_COLON2, - ACTIONS(2797), 1, - anon_sym_RBRACE, - ACTIONS(2799), 1, - sym_type_conversion, - STATE(1741), 1, - sym_format_specifier, - [66963] = 5, + ACTIONS(2614), 1, + sym_identifier, + STATE(1390), 1, + sym_dotted_name, + STATE(1491), 1, + sym_aliased_import, + STATE(1732), 1, + sym__import_list, + [67202] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2413), 1, + ACTIONS(2614), 1, sym_identifier, - STATE(1290), 1, + STATE(1390), 1, sym_dotted_name, - STATE(1327), 1, + STATE(1491), 1, sym_aliased_import, - STATE(1552), 1, + STATE(1733), 1, sym__import_list, - [66979] = 2, + [67218] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2489), 4, - anon_sym_RPAREN, + ACTIONS(2808), 1, anon_sym_COMMA, - anon_sym_COLON, - anon_sym_EQ, - [66989] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, + STATE(1279), 1, + aux_sym_open_sequence_match_pattern_repeat1, + ACTIONS(1896), 2, anon_sym_if, - ACTIONS(2801), 1, anon_sym_COLON, - [67005] = 4, + [67232] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2805), 1, - anon_sym_COMMA, - STATE(1000), 1, - aux_sym__patterns_repeat1, - ACTIONS(2803), 2, - anon_sym_RPAREN, - anon_sym_RBRACK, - [67019] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2807), 1, + ACTIONS(2810), 1, anon_sym_else, - [67035] = 5, + [67248] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2646), 1, + ACTIONS(2812), 4, anon_sym_RPAREN, - ACTIONS(2809), 1, anon_sym_COMMA, - ACTIONS(2811), 1, - anon_sym_as, - STATE(1415), 1, - aux_sym__import_list_repeat1, - [67051] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2813), 1, - anon_sym_COLON, - [67067] = 4, + anon_sym_RBRACK, + anon_sym_RBRACE, + [67258] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2397), 1, + ACTIONS(2814), 4, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1348), 1, - aux_sym_exception_list_repeat1, - ACTIONS(2815), 2, - anon_sym_as, - anon_sym_COLON, - [67081] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2817), 1, - anon_sym_else, - [67097] = 4, + anon_sym_RBRACK, + anon_sym_RBRACE, + [67268] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2819), 1, + ACTIONS(2485), 4, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1394), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2821), 2, - sym__newline, - anon_sym_SEMI, - [67111] = 5, + anon_sym_RBRACK, + anon_sym_RBRACE, + [67278] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2823), 1, + ACTIONS(2816), 1, anon_sym_else, - [67127] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2825), 1, - anon_sym_COMMA, - STATE(1368), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2828), 2, - sym__newline, - anon_sym_SEMI, - [67141] = 4, + [67294] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(315), 1, - sym__string_start, - ACTIONS(2112), 1, - anon_sym_COLON, - STATE(690), 2, - sym_string, - aux_sym_concatenated_string_repeat1, - [67155] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2830), 1, + ACTIONS(2818), 1, anon_sym_COLON, - [67171] = 5, + [67310] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2832), 1, - anon_sym_COLON, - [67187] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2834), 1, - anon_sym_COMMA, - STATE(1372), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2549), 2, - sym__newline, - anon_sym_SEMI, - [67201] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(317), 1, - sym__template_string_start, - ACTIONS(2112), 1, + ACTIONS(2820), 1, anon_sym_COLON, - STATE(693), 2, - sym_template_string, - aux_sym_concatenated_template_string_repeat1, - [67215] = 4, + [67326] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2547), 1, - anon_sym_EQ, - STATE(1562), 1, - sym__type_param_default, - ACTIONS(2837), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [67229] = 4, + ACTIONS(2822), 1, + anon_sym_case, + STATE(602), 1, + sym_cases, + STATE(457), 2, + sym_case_block, + aux_sym_cases_repeat1, + [67340] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2721), 1, + ACTIONS(2822), 1, anon_sym_case, - STATE(558), 1, + STATE(603), 1, sym_cases, - STATE(461), 2, + STATE(457), 2, sym_case_block, aux_sym_cases_repeat1, - [67243] = 5, + [67354] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2839), 1, + ACTIONS(2824), 1, anon_sym_COLON, - [67259] = 5, + [67370] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2841), 1, + ACTIONS(2826), 1, anon_sym_COLON, - [67275] = 5, + [67386] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2843), 1, + ACTIONS(2828), 1, anon_sym_COLON, - [67291] = 4, + [67402] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2547), 1, - anon_sym_EQ, - STATE(1563), 1, - sym__type_param_default, - ACTIONS(2845), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [67305] = 4, + ACTIONS(2832), 1, + anon_sym_DOT, + STATE(1392), 1, + aux_sym_import_prefix_repeat1, + ACTIONS(2830), 2, + anon_sym_import, + sym_identifier, + [67416] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2847), 1, + ACTIONS(2834), 1, anon_sym_COMMA, - STATE(1368), 1, + STATE(1385), 1, aux_sym_print_statement_repeat1, - ACTIONS(2849), 2, + ACTIONS(2837), 2, sym__newline, anon_sym_SEMI, - [67319] = 5, + [67430] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2580), 1, - sym_identifier, - STATE(1362), 1, - sym_dotted_name, - STATE(1467), 1, - sym_aliased_import, - STATE(1625), 1, - sym__import_list, - [67335] = 4, + ACTIONS(2839), 1, + anon_sym_COMMA, + STATE(1386), 1, + aux_sym_assert_statement_repeat1, + ACTIONS(2572), 2, + sym__newline, + anon_sym_SEMI, + [67444] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2851), 1, + ACTIONS(2844), 1, + anon_sym_EQ, + ACTIONS(2842), 3, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(1280), 1, - aux_sym_open_sequence_match_pattern_repeat1, - ACTIONS(1902), 2, - anon_sym_if, anon_sym_COLON, - [67349] = 4, + [67456] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2855), 1, - anon_sym_COLON, - ACTIONS(2857), 1, - anon_sym_EQ, - ACTIONS(2853), 2, + ACTIONS(2846), 1, + anon_sym_COMMA, + STATE(1406), 1, + aux_sym__import_list_repeat1, + ACTIONS(2848), 2, + sym__newline, + anon_sym_SEMI, + [67470] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2850), 1, + anon_sym_COMMA, + STATE(1406), 1, + aux_sym__import_list_repeat1, + ACTIONS(2848), 2, + sym__newline, + anon_sym_SEMI, + [67484] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2662), 1, anon_sym_RPAREN, + ACTIONS(2852), 1, anon_sym_COMMA, - [67363] = 5, + ACTIONS(2854), 1, + anon_sym_as, + STATE(1425), 1, + aux_sym__import_list_repeat1, + [67500] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2580), 1, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2856), 1, + anon_sym_COLON, + [67516] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2860), 1, + anon_sym_DOT, + STATE(1392), 1, + aux_sym_import_prefix_repeat1, + ACTIONS(2858), 2, + anon_sym_import, sym_identifier, - ACTIONS(2665), 1, - anon_sym_RPAREN, - STATE(1438), 1, - sym_dotted_name, - STATE(1600), 1, - sym_aliased_import, - [67379] = 5, + [67530] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2413), 1, + ACTIONS(2863), 1, + anon_sym_COMMA, + STATE(1393), 1, + aux_sym_exception_list_repeat1, + ACTIONS(2866), 2, + anon_sym_as, + anon_sym_COLON, + [67544] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2868), 1, + anon_sym_else, + [67560] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2471), 1, sym_identifier, - STATE(1290), 1, + STATE(1297), 1, sym_dotted_name, - STATE(1327), 1, + STATE(1357), 1, sym_aliased_import, - STATE(1596), 1, + STATE(1568), 1, sym__import_list, - [67395] = 5, + [67576] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, + ACTIONS(2757), 1, + anon_sym_COMMA, + STATE(1325), 1, + aux_sym_global_statement_repeat1, + ACTIONS(2870), 2, + sym__newline, + anon_sym_SEMI, + [67590] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2206), 1, anon_sym_and, - ACTIONS(2184), 1, + ACTIONS(2208), 1, anon_sym_or, - ACTIONS(2198), 1, + ACTIONS(2212), 1, anon_sym_if, - ACTIONS(2859), 1, + ACTIONS(2872), 1, anon_sym_COLON, - [67411] = 5, + [67606] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2861), 1, - anon_sym_else, - [67427] = 4, + ACTIONS(2876), 1, + anon_sym_COMMA, + STATE(1398), 1, + aux_sym_with_clause_repeat1, + ACTIONS(2874), 2, + anon_sym_RPAREN, + anon_sym_COLON, + [67620] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2819), 1, + ACTIONS(2757), 1, anon_sym_COMMA, - STATE(1332), 1, + STATE(1325), 1, aux_sym_global_statement_repeat1, - ACTIONS(2863), 2, + ACTIONS(2879), 2, sym__newline, anon_sym_SEMI, - [67441] = 4, + [67634] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2547), 1, + ACTIONS(2883), 1, + anon_sym_COLON, + ACTIONS(2885), 1, anon_sym_EQ, - STATE(1575), 1, - sym__type_param_default, - ACTIONS(2865), 2, + ACTIONS(2881), 2, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - [67455] = 4, + [67648] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2485), 1, + ACTIONS(2407), 1, anon_sym_COMMA, - STATE(1372), 1, + STATE(1386), 1, aux_sym_assert_statement_repeat1, - ACTIONS(2867), 2, + ACTIONS(2887), 2, sym__newline, anon_sym_SEMI, - [67469] = 2, + [67662] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2869), 4, - anon_sym_async, - anon_sym_def, - anon_sym_class, - anon_sym_AT, - [67479] = 4, + ACTIONS(2654), 1, + anon_sym_LBRACK, + ACTIONS(2737), 1, + anon_sym_LPAREN, + STATE(1573), 1, + sym_parameters, + STATE(1607), 1, + sym_type_parameters, + [67678] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2654), 1, + anon_sym_LBRACK, + ACTIONS(2737), 1, + anon_sym_LPAREN, + STATE(1574), 1, + sym_parameters, + STATE(1609), 1, + sym_type_parameters, + [67694] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2819), 1, + ACTIONS(2891), 1, anon_sym_COMMA, - STATE(1388), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2871), 2, - sym__newline, - anon_sym_SEMI, - [67493] = 2, + STATE(1001), 1, + aux_sym__patterns_repeat1, + ACTIONS(2889), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [67708] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(2311), 4, - sym__newline, - anon_sym_from, + ACTIONS(2206), 1, + anon_sym_and, + ACTIONS(2208), 1, + anon_sym_or, + ACTIONS(2212), 1, + anon_sym_if, + ACTIONS(2893), 1, + anon_sym_COLON, + [67724] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2895), 1, anon_sym_COMMA, + STATE(1406), 1, + aux_sym__import_list_repeat1, + ACTIONS(2898), 2, + sym__newline, anon_sym_SEMI, - [67503] = 4, + [67738] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2819), 1, + ACTIONS(2900), 1, + anon_sym_RPAREN, + ACTIONS(2902), 1, anon_sym_COMMA, - STATE(1332), 1, - aux_sym_global_statement_repeat1, - ACTIONS(2873), 2, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [67751] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2614), 1, + sym_identifier, + STATE(1494), 1, + sym_dotted_name, + STATE(1615), 1, + sym_aliased_import, + [67764] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1542), 3, sym__newline, + anon_sym_in, anon_sym_SEMI, - [67517] = 5, + [67773] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2182), 1, - anon_sym_and, - ACTIONS(2184), 1, - anon_sym_or, - ACTIONS(2198), 1, - anon_sym_if, - ACTIONS(2875), 1, - anon_sym_COLON, - [67533] = 5, + ACTIONS(2626), 1, + anon_sym_COLON2, + ACTIONS(2747), 1, + anon_sym_RBRACE, + STATE(1725), 1, + sym_format_specifier, + [67786] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2622), 1, - anon_sym_LBRACK, - ACTIONS(2877), 1, - anon_sym_LPAREN, - STATE(1574), 1, - sym_type_parameters, - STATE(1612), 1, - sym_parameters, - [67549] = 5, + ACTIONS(2045), 1, + anon_sym_COMMA, + ACTIONS(2904), 1, + anon_sym_in, + STATE(1019), 1, + aux_sym__patterns_repeat1, + [67799] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2622), 1, - anon_sym_LBRACK, - ACTIONS(2877), 1, - anon_sym_LPAREN, - STATE(1538), 1, - sym_parameters, - STATE(1597), 1, - sym_type_parameters, - [67565] = 5, + ACTIONS(2906), 1, + sym_identifier, + ACTIONS(2908), 1, + sym_match_wildcard_pattern, + STATE(1323), 1, + sym_match_capture_pattern, + [67812] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2622), 1, - anon_sym_LBRACK, - ACTIONS(2877), 1, - anon_sym_LPAREN, - STATE(1541), 1, - sym_parameters, - STATE(1599), 1, - sym_type_parameters, - [67581] = 5, + ACTIONS(1918), 1, + anon_sym_RPAREN, + ACTIONS(2910), 1, + sym_identifier, + STATE(1569), 1, + sym_match_keyword_pattern, + [67825] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(561), 1, - sym__newline, - ACTIONS(2879), 1, - anon_sym_SEMI, - STATE(132), 1, - sym__semicolon, - STATE(1322), 1, - aux_sym__simple_statements_repeat1, - [67597] = 4, + ACTIONS(2912), 1, + anon_sym_COMMA, + ACTIONS(2914), 1, + anon_sym_RBRACK, + STATE(1507), 1, + aux_sym_index_expression_list_repeat1, + [67838] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2883), 1, + ACTIONS(2045), 1, anon_sym_COMMA, - STATE(1400), 1, - aux_sym_with_clause_repeat1, - ACTIONS(2881), 2, - anon_sym_RPAREN, - anon_sym_COLON, - [67611] = 4, + ACTIONS(2916), 1, + anon_sym_in, + STATE(1019), 1, + aux_sym__patterns_repeat1, + [67851] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2485), 1, + ACTIONS(2138), 1, anon_sym_COMMA, - STATE(1372), 1, - aux_sym_assert_statement_repeat1, - ACTIONS(2886), 2, - sym__newline, - anon_sym_SEMI, - [67625] = 5, + ACTIONS(2228), 1, + anon_sym_RPAREN, + STATE(1531), 1, + aux_sym__collection_elements_repeat1, + [67864] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2888), 1, - anon_sym_SEMI, - ACTIONS(2890), 1, - sym__newline, - STATE(130), 1, - sym__semicolon, - STATE(1328), 1, - aux_sym__simple_statements_repeat1, - [67641] = 5, + ACTIONS(2455), 1, + sym_identifier, + ACTIONS(2918), 1, + anon_sym_import, + STATE(1677), 1, + sym_dotted_name, + [67877] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2622), 1, - anon_sym_LBRACK, - ACTIONS(2877), 1, - anon_sym_LPAREN, - STATE(1548), 1, - sym_parameters, - STATE(1572), 1, - sym_type_parameters, - [67657] = 4, + ACTIONS(2920), 1, + anon_sym_RPAREN, + ACTIONS(2922), 1, + anon_sym_COMMA, + STATE(1418), 1, + aux_sym_match_class_pattern_repeat2, + [67890] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2892), 1, - anon_sym_COMMA, - STATE(1368), 1, - aux_sym_print_statement_repeat1, - ACTIONS(2894), 2, - sym__newline, - anon_sym_SEMI, - [67671] = 4, + ACTIONS(2626), 1, + anon_sym_COLON2, + ACTIONS(2925), 1, + anon_sym_RBRACE, + STATE(1758), 1, + sym_format_specifier, + [67903] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2031), 1, + ACTIONS(2848), 1, + anon_sym_RPAREN, + ACTIONS(2927), 1, anon_sym_COMMA, - ACTIONS(2896), 1, - anon_sym_in, - STATE(1018), 1, - aux_sym__patterns_repeat1, - [67684] = 4, + STATE(1499), 1, + aux_sym__import_list_repeat1, + [67916] = 3, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2929), 1, + anon_sym_RBRACE, + ACTIONS(2931), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [67927] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2898), 1, - anon_sym_COMMA, - ACTIONS(2900), 1, - anon_sym_COLON, - STATE(1481), 1, - aux_sym__parameters_repeat1, - [67697] = 4, + ACTIONS(2626), 1, + anon_sym_COLON2, + ACTIONS(2784), 1, + anon_sym_RBRACE, + STATE(1675), 1, + sym_format_specifier, + [67940] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2902), 1, + ACTIONS(2933), 1, anon_sym_if, - ACTIONS(2904), 1, + ACTIONS(2935), 1, anon_sym_COLON, - STATE(1661), 1, + STATE(1744), 1, sym_guard, - [67710] = 3, + [67953] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2906), 1, + ACTIONS(2937), 1, anon_sym_COMMA, - ACTIONS(2908), 2, + ACTIONS(2939), 2, anon_sym_if, anon_sym_COLON, - [67721] = 4, + [67964] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2910), 1, + ACTIONS(2848), 1, + anon_sym_RPAREN, + ACTIONS(2941), 1, anon_sym_COMMA, - ACTIONS(2912), 1, - anon_sym_RBRACK, - STATE(1418), 1, - aux_sym_type_parameters_repeat1, - [67734] = 2, + STATE(1499), 1, + aux_sym__import_list_repeat1, + [67977] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2853), 3, + ACTIONS(2943), 1, anon_sym_RPAREN, + ACTIONS(2945), 1, anon_sym_COMMA, - anon_sym_COLON, - [67743] = 3, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [67990] = 3, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2513), 1, + anon_sym_RBRACE, + ACTIONS(2515), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [68001] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2914), 1, - anon_sym_in, - ACTIONS(2916), 2, + ACTIONS(2119), 1, + anon_sym_RPAREN, + ACTIONS(2138), 1, + anon_sym_COMMA, + STATE(1531), 1, + aux_sym__collection_elements_repeat1, + [68014] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2716), 3, sym__newline, + anon_sym_COMMA, anon_sym_SEMI, - [67754] = 4, + [68023] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2918), 1, - anon_sym_RPAREN, - ACTIONS(2920), 1, + ACTIONS(2947), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [67767] = 4, + ACTIONS(2949), 1, + anon_sym_RBRACE, + STATE(1532), 1, + aux_sym_dictionary_repeat1, + [68036] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2922), 1, - anon_sym_RPAREN, - ACTIONS(2924), 1, + ACTIONS(2951), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [67780] = 4, + ACTIONS(2953), 1, + anon_sym_RBRACE, + STATE(1532), 1, + aux_sym_dictionary_repeat1, + [68049] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2750), 1, + ACTIONS(2955), 1, anon_sym_RPAREN, - ACTIONS(2926), 1, + ACTIONS(2957), 1, anon_sym_COMMA, - STATE(1440), 1, - aux_sym__import_list_repeat1, - [67793] = 4, + STATE(1432), 1, + aux_sym__parameters_repeat1, + [68062] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2750), 1, + ACTIONS(2198), 1, anon_sym_RPAREN, - ACTIONS(2928), 1, + ACTIONS(2200), 1, anon_sym_COMMA, - STATE(1440), 1, - aux_sym__import_list_repeat1, - [67806] = 4, + STATE(1441), 1, + aux_sym_argument_list_repeat1, + [68075] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2622), 1, - anon_sym_LBRACK, - ACTIONS(2930), 1, - anon_sym_EQ, - STATE(1738), 1, - sym_type_parameters, - [67819] = 2, + ACTIONS(2960), 1, + anon_sym_RPAREN, + ACTIONS(2962), 1, + anon_sym_COMMA, + STATE(1442), 1, + aux_sym_argument_list_repeat1, + [68088] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2932), 3, + ACTIONS(2964), 3, anon_sym_LPAREN, anon_sym_COLON, anon_sym_EQ, - [67828] = 4, + [68097] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2910), 1, + ACTIONS(2912), 1, anon_sym_COMMA, - ACTIONS(2934), 1, + ACTIONS(2966), 1, anon_sym_RBRACK, - STATE(1511), 1, - aux_sym_type_parameters_repeat1, - [67841] = 4, + STATE(1507), 1, + aux_sym_index_expression_list_repeat1, + [68110] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2936), 1, - sym_identifier, - ACTIONS(2938), 1, + ACTIONS(2968), 1, anon_sym_RPAREN, - STATE(1592), 1, - sym_match_keyword_pattern, - [67854] = 4, + ACTIONS(2970), 1, + anon_sym_COMMA, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68123] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2938), 1, - anon_sym_RPAREN, - ACTIONS(2940), 1, + ACTIONS(2972), 1, anon_sym_COMMA, - STATE(1444), 1, - aux_sym_match_class_pattern_repeat2, - [67867] = 4, + ACTIONS(2974), 1, + anon_sym_RBRACK, + STATE(1503), 1, + aux_sym_open_sequence_match_pattern_repeat1, + [68136] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2938), 1, - anon_sym_RPAREN, - ACTIONS(2940), 1, + ACTIONS(2976), 3, + sym__newline, anon_sym_COMMA, - STATE(1429), 1, - aux_sym_match_class_pattern_repeat2, - [67880] = 2, + anon_sym_SEMI, + [68145] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1340), 3, + ACTIONS(2842), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - [67889] = 4, + [68154] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1997), 1, - anon_sym_RBRACE, - ACTIONS(2942), 1, + ACTIONS(2978), 1, + anon_sym_RPAREN, + ACTIONS(2980), 1, anon_sym_COMMA, - STATE(1477), 1, - aux_sym_match_mapping_pattern_repeat1, - [67902] = 4, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68167] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1916), 1, + ACTIONS(2982), 1, anon_sym_RPAREN, - ACTIONS(2944), 1, + ACTIONS(2984), 1, anon_sym_COMMA, - STATE(1420), 1, - aux_sym_match_class_pattern_repeat2, - [67915] = 2, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68180] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2740), 3, - sym__newline, + ACTIONS(2986), 1, + anon_sym_RPAREN, + ACTIONS(2988), 1, anon_sym_COMMA, - anon_sym_SEMI, - [67924] = 4, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68193] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2936), 1, - sym_identifier, - ACTIONS(2946), 1, - anon_sym_RPAREN, - STATE(1592), 1, - sym_match_keyword_pattern, - [67937] = 4, + ACTIONS(2990), 1, + anon_sym_COMMA, + ACTIONS(2992), 1, + anon_sym_RBRACE, + STATE(1508), 1, + aux_sym_match_mapping_pattern_repeat1, + [68206] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2948), 1, + ACTIONS(2994), 1, anon_sym_RPAREN, - ACTIONS(2950), 1, + ACTIONS(2996), 1, anon_sym_COMMA, - STATE(1427), 1, - aux_sym_match_class_pattern_repeat1, - [67950] = 2, - ACTIONS(3), 1, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68219] = 3, + ACTIONS(2086), 1, sym_comment, - ACTIONS(2729), 3, - sym__newline, - anon_sym_COMMA, - anon_sym_SEMI, - [67959] = 4, + ACTIONS(2509), 1, + anon_sym_RBRACE, + ACTIONS(2511), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [68230] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2946), 1, + ACTIONS(2998), 1, anon_sym_RPAREN, - ACTIONS(2953), 1, + ACTIONS(3000), 1, anon_sym_COMMA, - STATE(1444), 1, - aux_sym_match_class_pattern_repeat2, - [67972] = 4, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68243] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2955), 1, + ACTIONS(3002), 1, anon_sym_RPAREN, - ACTIONS(2957), 1, + ACTIONS(3004), 1, anon_sym_COMMA, - STATE(1430), 1, + STATE(1510), 1, aux_sym_argument_list_repeat1, - [67985] = 3, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(2608), 1, - anon_sym_RBRACE, - ACTIONS(2610), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [67996] = 4, + [68256] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(2138), 1, anon_sym_COMMA, - ACTIONS(2220), 1, + ACTIONS(2180), 1, anon_sym_RPAREN, - STATE(1471), 1, + STATE(1531), 1, aux_sym__collection_elements_repeat1, - [68009] = 4, + [68269] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2936), 1, + ACTIONS(2910), 1, sym_identifier, - ACTIONS(2960), 1, + ACTIONS(3006), 1, anon_sym_RPAREN, - STATE(1592), 1, + STATE(1569), 1, sym_match_keyword_pattern, - [68022] = 4, + [68282] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2962), 1, + ACTIONS(3006), 1, anon_sym_RPAREN, - ACTIONS(2964), 1, + ACTIONS(3008), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [68035] = 4, + STATE(1418), 1, + aux_sym_match_class_pattern_repeat2, + [68295] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2638), 1, - anon_sym_COLON2, - ACTIONS(2731), 1, + ACTIONS(3010), 1, + anon_sym_COMMA, + ACTIONS(3012), 1, anon_sym_RBRACE, - STATE(1646), 1, - sym_format_specifier, - [68048] = 3, + STATE(1532), 1, + aux_sym_dictionary_repeat1, + [68308] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2966), 1, - anon_sym_EQ, - ACTIONS(2968), 2, - sym__newline, - anon_sym_SEMI, - [68059] = 2, + ACTIONS(3014), 1, + anon_sym_RPAREN, + ACTIONS(3016), 1, + anon_sym_COMMA, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68321] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2970), 3, + ACTIONS(3006), 1, anon_sym_RPAREN, + ACTIONS(3008), 1, anon_sym_COMMA, - anon_sym_COLON, - [68068] = 3, + STATE(1477), 1, + aux_sym_match_class_pattern_repeat2, + [68334] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2811), 1, - anon_sym_as, - ACTIONS(2729), 2, + ACTIONS(2218), 1, anon_sym_RPAREN, + ACTIONS(2220), 1, anon_sym_COMMA, - [68079] = 4, + STATE(1437), 1, + aux_sym_argument_list_repeat1, + [68347] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1916), 1, + ACTIONS(3018), 1, anon_sym_RPAREN, - ACTIONS(2936), 1, - sym_identifier, - STATE(1592), 1, - sym_match_keyword_pattern, - [68092] = 4, + ACTIONS(3020), 1, + anon_sym_COMMA, + STATE(1462), 1, + aux_sym_argument_list_repeat1, + [68360] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2757), 1, - anon_sym_RPAREN, - ACTIONS(2972), 1, + ACTIONS(2912), 1, anon_sym_COMMA, - STATE(1440), 1, - aux_sym__import_list_repeat1, - [68105] = 4, + ACTIONS(3022), 1, + anon_sym_RBRACK, + STATE(1507), 1, + aux_sym_index_expression_list_repeat1, + [68373] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2471), 1, + sym_identifier, + STATE(1324), 1, + sym_dotted_name, + STATE(1429), 1, + sym_aliased_import, + [68386] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2975), 1, + ACTIONS(3024), 1, anon_sym_RPAREN, - ACTIONS(2977), 1, + ACTIONS(3026), 1, anon_sym_COMMA, - STATE(1430), 1, + STATE(1510), 1, aux_sym_argument_list_repeat1, - [68118] = 2, + [68399] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2979), 3, - sym__newline, + ACTIONS(3028), 1, + anon_sym_RPAREN, + ACTIONS(3030), 1, anon_sym_COMMA, - anon_sym_SEMI, - [68127] = 4, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68412] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2981), 1, - anon_sym_COMMA, - ACTIONS(2984), 1, - anon_sym_RBRACK, - STATE(1443), 1, - aux_sym_index_expression_list_repeat1, - [68140] = 4, + ACTIONS(3032), 3, + anon_sym_LPAREN, + anon_sym_COLON, + anon_sym_EQ, + [68421] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2986), 1, + ACTIONS(3034), 1, anon_sym_RPAREN, - ACTIONS(2988), 1, + ACTIONS(3036), 1, anon_sym_COMMA, - STATE(1444), 1, - aux_sym_match_class_pattern_repeat2, - [68153] = 4, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68434] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2900), 1, + ACTIONS(3038), 1, anon_sym_RPAREN, - ACTIONS(2991), 1, + ACTIONS(3040), 1, anon_sym_COMMA, - STATE(1483), 1, - aux_sym__parameters_repeat1, - [68166] = 3, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68447] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2337), 1, - anon_sym_from, - ACTIONS(2341), 2, - sym__newline, - anon_sym_SEMI, - [68177] = 4, + ACTIONS(3042), 3, + anon_sym_LPAREN, + anon_sym_COLON, + anon_sym_EQ, + [68456] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(3044), 1, anon_sym_COMMA, - ACTIONS(2129), 1, - anon_sym_RPAREN, - STATE(1471), 1, - aux_sym__collection_elements_repeat1, - [68190] = 4, + ACTIONS(3047), 1, + anon_sym_RBRACK, + STATE(1465), 1, + aux_sym_type_parameters_repeat1, + [68469] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2993), 1, - anon_sym_COMMA, - ACTIONS(2996), 1, + ACTIONS(2626), 1, + anon_sym_COLON2, + ACTIONS(3049), 1, anon_sym_RBRACE, - STATE(1448), 1, - aux_sym_dictionary_repeat1, - [68203] = 4, + STATE(1695), 1, + sym_format_specifier, + [68482] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2998), 1, + ACTIONS(2069), 1, + anon_sym_COLON, + ACTIONS(3051), 1, anon_sym_COMMA, - ACTIONS(3000), 1, - anon_sym_RBRACE, - STATE(1448), 1, - aux_sym_dictionary_repeat1, - [68216] = 4, + STATE(1530), 1, + aux_sym__parameters_repeat1, + [68495] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3002), 1, + ACTIONS(3053), 1, anon_sym_COMMA, - ACTIONS(3004), 1, - anon_sym_RBRACE, - STATE(1448), 1, - aux_sym_dictionary_repeat1, - [68229] = 4, + ACTIONS(3055), 1, + anon_sym_RBRACK, + STATE(1465), 1, + aux_sym_type_parameters_repeat1, + [68508] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, - anon_sym_DOT, - ACTIONS(2170), 1, - anon_sym_COLON, - STATE(1039), 1, - aux_sym_match_value_pattern_repeat1, - [68242] = 4, + ACTIONS(2045), 1, + anon_sym_COMMA, + ACTIONS(3057), 1, + anon_sym_in, + STATE(1019), 1, + aux_sym__patterns_repeat1, + [68521] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2228), 1, - anon_sym_RPAREN, - ACTIONS(2230), 1, - anon_sym_COMMA, - STATE(1457), 1, - aux_sym_argument_list_repeat1, - [68255] = 4, + ACTIONS(1538), 3, + sym__newline, + anon_sym_in, + anon_sym_SEMI, + [68530] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3006), 1, + ACTIONS(2182), 1, anon_sym_RPAREN, - ACTIONS(3008), 1, + ACTIONS(2184), 1, anon_sym_COMMA, - STATE(1458), 1, + STATE(1460), 1, aux_sym_argument_list_repeat1, - [68268] = 4, + [68543] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3010), 1, + ACTIONS(2045), 1, anon_sym_COMMA, - ACTIONS(3012), 1, - anon_sym_RBRACK, - STATE(1460), 1, - aux_sym_index_expression_list_repeat1, - [68281] = 4, + ACTIONS(3059), 1, + anon_sym_in, + STATE(1019), 1, + aux_sym__patterns_repeat1, + [68556] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, + ACTIONS(3061), 1, anon_sym_COMMA, - ACTIONS(3014), 1, + ACTIONS(3063), 1, + anon_sym_COLON, + STATE(1509), 1, + aux_sym_with_clause_repeat1, + [68569] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2910), 1, + sym_identifier, + ACTIONS(3065), 1, anon_sym_RPAREN, - STATE(1309), 1, - aux_sym__collection_elements_repeat1, - [68294] = 4, + STATE(1569), 1, + sym_match_keyword_pattern, + [68582] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3016), 1, + ACTIONS(3067), 1, + anon_sym_in, + ACTIONS(3069), 2, + sym__newline, + anon_sym_SEMI, + [68593] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2069), 1, anon_sym_RPAREN, - ACTIONS(3018), 1, + ACTIONS(3071), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [68307] = 4, + STATE(1432), 1, + aux_sym__parameters_repeat1, + [68606] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3020), 1, + ACTIONS(3065), 1, anon_sym_RPAREN, - ACTIONS(3022), 1, + ACTIONS(3073), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [68320] = 4, + STATE(1418), 1, + aux_sym_match_class_pattern_repeat2, + [68619] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3024), 1, + ACTIONS(2910), 1, + sym_identifier, + ACTIONS(3075), 1, + anon_sym_RPAREN, + STATE(1569), 1, + sym_match_keyword_pattern, + [68632] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1480), 3, anon_sym_RPAREN, - ACTIONS(3026), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [68333] = 4, + anon_sym_COLON, + [68641] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3028), 1, + ACTIONS(3077), 1, anon_sym_RPAREN, - ACTIONS(3030), 1, + ACTIONS(3079), 1, anon_sym_COMMA, - STATE(1430), 1, + STATE(1510), 1, aux_sym_argument_list_repeat1, - [68346] = 4, + [68654] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3032), 1, - anon_sym_COMMA, - ACTIONS(3034), 1, - anon_sym_RBRACK, - STATE(1443), 1, - aux_sym_index_expression_list_repeat1, - [68359] = 4, + ACTIONS(2650), 1, + anon_sym_LPAREN, + ACTIONS(3081), 1, + anon_sym_COLON, + STATE(1638), 1, + sym_argument_list, + [68667] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2180), 1, + ACTIONS(2933), 1, + anon_sym_if, + ACTIONS(3083), 1, + anon_sym_COLON, + STATE(1651), 1, + sym_guard, + [68680] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3085), 1, anon_sym_RPAREN, - STATE(1471), 1, - aux_sym__collection_elements_repeat1, - [68372] = 4, + ACTIONS(3087), 1, + anon_sym_COMMA, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [68693] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2473), 1, + ACTIONS(1916), 1, + anon_sym_RPAREN, + ACTIONS(2910), 1, sym_identifier, - ACTIONS(3036), 1, - anon_sym_import, - STATE(1709), 1, - sym_dotted_name, - [68385] = 3, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(2558), 1, - anon_sym_RBRACE, - ACTIONS(2560), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [68396] = 4, + STATE(1569), 1, + sym_match_keyword_pattern, + [68706] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2090), 1, - anon_sym_COMMA, - ACTIONS(2218), 1, + ACTIONS(3089), 1, anon_sym_RPAREN, - STATE(1471), 1, - aux_sym__collection_elements_repeat1, - [68409] = 4, + ACTIONS(3091), 1, + anon_sym_COMMA, + STATE(1505), 1, + aux_sym_with_clause_repeat1, + [68719] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2580), 1, - sym_identifier, - STATE(1438), 1, - sym_dotted_name, - STATE(1600), 1, - sym_aliased_import, - [68422] = 4, + ACTIONS(2451), 3, + sym__newline, + anon_sym_EQ, + anon_sym_SEMI, + [68728] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3038), 1, + ACTIONS(3093), 3, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(3040), 1, + anon_sym_COLON, + [68737] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3095), 1, + anon_sym_EQ, + ACTIONS(3097), 2, + sym__newline, + anon_sym_SEMI, + [68748] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2654), 1, + anon_sym_LBRACK, + ACTIONS(3099), 1, + anon_sym_EQ, + STATE(1722), 1, + sym_type_parameters, + [68761] = 3, + ACTIONS(2086), 1, + sym_comment, + ACTIONS(2534), 1, anon_sym_RBRACE, - STATE(1448), 1, - aux_sym_dictionary_repeat1, - [68435] = 4, + ACTIONS(2536), 2, + anon_sym_LBRACE2, + aux_sym_format_specifier_token1, + [68772] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2646), 1, + ACTIONS(2662), 1, anon_sym_RPAREN, - ACTIONS(2809), 1, + ACTIONS(2852), 1, anon_sym_COMMA, - STATE(1414), 1, + STATE(1420), 1, aux_sym__import_list_repeat1, - [68448] = 4, + [68785] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2232), 1, - anon_sym_RPAREN, - ACTIONS(2234), 1, + ACTIONS(3101), 1, anon_sym_COMMA, - STATE(1521), 1, - aux_sym_argument_list_repeat1, - [68461] = 4, + ACTIONS(3103), 1, + anon_sym_RBRACK, + STATE(1468), 1, + aux_sym_type_parameters_repeat1, + [68798] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3042), 1, + ACTIONS(1916), 1, anon_sym_RPAREN, - ACTIONS(3044), 1, + ACTIONS(3105), 1, anon_sym_COMMA, - STATE(1475), 1, - aux_sym_argument_list_repeat1, - [68474] = 4, + STATE(1418), 1, + aux_sym_match_class_pattern_repeat2, + [68811] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3010), 1, + ACTIONS(2854), 1, + anon_sym_as, + ACTIONS(2716), 2, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(3046), 1, - anon_sym_RBRACK, - STATE(1460), 1, - aux_sym_index_expression_list_repeat1, - [68487] = 4, + [68822] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2679), 1, - anon_sym_RPAREN, - ACTIONS(3048), 1, + ACTIONS(3107), 1, anon_sym_COMMA, - STATE(1311), 1, - aux_sym__collection_elements_repeat1, - [68500] = 4, + ACTIONS(3110), 1, + anon_sym_RBRACE, + STATE(1495), 1, + aux_sym_match_mapping_pattern_repeat1, + [68835] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3050), 1, - anon_sym_RPAREN, - ACTIONS(3052), 1, + ACTIONS(3112), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [68513] = 4, + ACTIONS(3114), 1, + anon_sym_RBRACE, + STATE(1532), 1, + aux_sym_dictionary_repeat1, + [68848] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3054), 1, + ACTIONS(3116), 1, anon_sym_RPAREN, - ACTIONS(3056), 1, + ACTIONS(3118), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [68526] = 4, + STATE(1476), 1, + aux_sym__parameters_repeat1, + [68861] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3058), 1, + ACTIONS(2885), 1, + anon_sym_EQ, + ACTIONS(2881), 2, anon_sym_COMMA, - ACTIONS(3060), 1, anon_sym_COLON, - STATE(1400), 1, - aux_sym_with_clause_repeat1, - [68539] = 4, + [68872] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3062), 1, + ACTIONS(2898), 1, anon_sym_RPAREN, - ACTIONS(3064), 1, + ACTIONS(3120), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [68552] = 4, + STATE(1499), 1, + aux_sym__import_list_repeat1, + [68885] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3066), 1, + ACTIONS(2218), 1, anon_sym_RPAREN, - ACTIONS(3068), 1, + ACTIONS(2220), 1, anon_sym_COMMA, - STATE(1430), 1, + STATE(1445), 1, aux_sym_argument_list_repeat1, - [68565] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3070), 1, - anon_sym_COMMA, - ACTIONS(3073), 1, - anon_sym_RBRACE, - STATE(1477), 1, - aux_sym_match_mapping_pattern_repeat1, - [68578] = 4, + [68898] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3058), 1, + ACTIONS(2138), 1, anon_sym_COMMA, - ACTIONS(3075), 1, - anon_sym_COLON, - STATE(1474), 1, - aux_sym_with_clause_repeat1, - [68591] = 4, + ACTIONS(3123), 1, + anon_sym_RPAREN, + STATE(1313), 1, + aux_sym__collection_elements_repeat1, + [68911] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3077), 1, + ACTIONS(1904), 1, + anon_sym_RPAREN, + ACTIONS(3125), 1, anon_sym_COMMA, - ACTIONS(3079), 1, - anon_sym_RBRACE, - STATE(1448), 1, - aux_sym_dictionary_repeat1, - [68604] = 4, + STATE(1279), 1, + aux_sym_open_sequence_match_pattern_repeat1, + [68924] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1910), 1, - anon_sym_RPAREN, - ACTIONS(3081), 1, + ACTIONS(1904), 1, + anon_sym_RBRACK, + ACTIONS(3127), 1, anon_sym_COMMA, - STATE(1280), 1, + STATE(1279), 1, aux_sym_open_sequence_match_pattern_repeat1, - [68617] = 4, + [68937] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2067), 1, + ACTIONS(2094), 1, + anon_sym_DOT, + ACTIONS(2098), 1, anon_sym_COLON, - ACTIONS(3083), 1, - anon_sym_COMMA, - STATE(1487), 1, - aux_sym__parameters_repeat1, - [68630] = 4, + STATE(1039), 1, + aux_sym_match_value_pattern_repeat1, + [68950] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2194), 1, + ACTIONS(1018), 1, anon_sym_RPAREN, - ACTIONS(2196), 1, + ACTIONS(3129), 1, anon_sym_COMMA, - STATE(1473), 1, - aux_sym_argument_list_repeat1, - [68643] = 4, + STATE(1398), 1, + aux_sym_with_clause_repeat1, + [68963] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2067), 1, + ACTIONS(3131), 1, anon_sym_RPAREN, - ACTIONS(3085), 1, + ACTIONS(3133), 1, anon_sym_COMMA, - STATE(1519), 1, - aux_sym__parameters_repeat1, - [68656] = 4, + STATE(1448), 1, + aux_sym_argument_list_repeat1, + [68976] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3087), 1, - anon_sym_RPAREN, - ACTIONS(3089), 1, + ACTIONS(3135), 1, anon_sym_COMMA, - STATE(1513), 1, - aux_sym_with_clause_repeat1, - [68669] = 2, + ACTIONS(3137), 1, + anon_sym_RBRACK, + STATE(1527), 1, + aux_sym_index_expression_list_repeat1, + [68989] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1546), 3, - sym__newline, - anon_sym_in, - anon_sym_SEMI, - [68678] = 4, + ACTIONS(1969), 1, + anon_sym_RBRACE, + ACTIONS(3139), 1, + anon_sym_COMMA, + STATE(1495), 1, + aux_sym_match_mapping_pattern_repeat1, + [69002] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2222), 1, - anon_sym_RPAREN, - ACTIONS(2224), 1, + ACTIONS(3061), 1, anon_sym_COMMA, - STATE(1413), 1, - aux_sym_argument_list_repeat1, - [68691] = 4, + ACTIONS(3141), 1, + anon_sym_COLON, + STATE(1398), 1, + aux_sym_with_clause_repeat1, + [69015] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2970), 1, - anon_sym_COLON, - ACTIONS(3091), 1, + ACTIONS(3143), 1, + anon_sym_RPAREN, + ACTIONS(3145), 1, anon_sym_COMMA, - STATE(1487), 1, - aux_sym__parameters_repeat1, - [68704] = 4, + STATE(1510), 1, + aux_sym_argument_list_repeat1, + [69028] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3094), 1, + ACTIONS(2874), 3, anon_sym_RPAREN, - ACTIONS(3096), 1, anon_sym_COMMA, - STATE(1500), 1, - aux_sym_match_class_pattern_repeat1, - [68717] = 4, + anon_sym_COLON, + [69037] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3098), 1, + ACTIONS(2912), 1, anon_sym_COMMA, - ACTIONS(3100), 1, + ACTIONS(3148), 1, anon_sym_RBRACK, - STATE(1528), 1, - aux_sym_open_sequence_match_pattern_repeat1, - [68730] = 4, + STATE(1507), 1, + aux_sym_index_expression_list_repeat1, + [69050] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3102), 1, - anon_sym_RPAREN, - ACTIONS(3104), 1, + ACTIONS(2721), 3, + sym__newline, anon_sym_COMMA, - STATE(1434), 1, - aux_sym_argument_list_repeat1, - [68743] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2618), 1, - anon_sym_LPAREN, - ACTIONS(3106), 1, - anon_sym_COLON, - STATE(1634), 1, - sym_argument_list, - [68756] = 4, + anon_sym_SEMI, + [69059] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2638), 1, - anon_sym_COLON2, - ACTIONS(3108), 1, - anon_sym_RBRACE, - STATE(1621), 1, - sym_format_specifier, - [68769] = 4, + ACTIONS(2329), 1, + anon_sym_from, + ACTIONS(2333), 2, + sym__newline, + anon_sym_SEMI, + [69070] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3094), 1, + ACTIONS(3150), 3, anon_sym_RPAREN, - ACTIONS(3110), 1, anon_sym_COMMA, - STATE(1506), 1, - aux_sym_match_class_pattern_repeat2, - [68782] = 2, + anon_sym_COLON, + [69079] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2742), 3, + ACTIONS(2955), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_COLON, - [68791] = 4, + [69088] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2902), 1, - anon_sym_if, - ACTIONS(3112), 1, + ACTIONS(3116), 1, anon_sym_COLON, - STATE(1647), 1, - sym_guard, - [68804] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2232), 1, - anon_sym_RPAREN, - ACTIONS(2234), 1, + ACTIONS(3152), 1, anon_sym_COMMA, - STATE(1523), 1, - aux_sym_argument_list_repeat1, - [68817] = 4, + STATE(1467), 1, + aux_sym__parameters_repeat1, + [69101] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3114), 1, + ACTIONS(2881), 3, anon_sym_RPAREN, - ACTIONS(3116), 1, anon_sym_COMMA, - STATE(1525), 1, - aux_sym_argument_list_repeat1, - [68830] = 4, + anon_sym_COLON, + [69110] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3118), 1, + ACTIONS(2138), 1, anon_sym_COMMA, - ACTIONS(3120), 1, - anon_sym_RBRACE, - STATE(1423), 1, - aux_sym_match_mapping_pattern_repeat1, - [68843] = 3, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(3122), 1, - anon_sym_RBRACE, - ACTIONS(3124), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [68854] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1914), 1, + ACTIONS(2230), 1, anon_sym_RPAREN, - ACTIONS(3126), 1, - anon_sym_COMMA, - STATE(1427), 1, - aux_sym_match_class_pattern_repeat1, - [68867] = 4, + STATE(1531), 1, + aux_sym__collection_elements_repeat1, + [69123] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3010), 1, + ACTIONS(3154), 1, + anon_sym_COLON, + ACTIONS(2881), 2, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(3128), 1, - anon_sym_RBRACK, - STATE(1460), 1, - aux_sym_index_expression_list_repeat1, - [68880] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2638), 1, - anon_sym_COLON2, - ACTIONS(2797), 1, - anon_sym_RBRACE, - STATE(1741), 1, - sym_format_specifier, - [68893] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2413), 1, - sym_identifier, - STATE(1329), 1, - sym_dotted_name, - STATE(1428), 1, - sym_aliased_import, - [68906] = 4, + [69134] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2031), 1, + ACTIONS(1918), 1, + anon_sym_RPAREN, + ACTIONS(3156), 1, anon_sym_COMMA, - ACTIONS(3130), 1, - anon_sym_in, - STATE(1018), 1, - aux_sym__patterns_repeat1, - [68919] = 4, + STATE(1451), 1, + aux_sym_match_class_pattern_repeat2, + [69147] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1914), 1, + ACTIONS(3158), 1, anon_sym_RPAREN, - ACTIONS(2936), 1, - sym_identifier, - STATE(1592), 1, - sym_match_keyword_pattern, - [68932] = 4, + ACTIONS(3160), 1, + anon_sym_COMMA, + STATE(1536), 1, + aux_sym_match_class_pattern_repeat1, + [69160] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1914), 1, + ACTIONS(3158), 1, anon_sym_RPAREN, - ACTIONS(3132), 1, + ACTIONS(3162), 1, anon_sym_COMMA, - STATE(1444), 1, + STATE(1493), 1, aux_sym_match_class_pattern_repeat2, - [68945] = 3, + [69173] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3134), 1, - anon_sym_COLON, - ACTIONS(2853), 2, + ACTIONS(2186), 1, anon_sym_RPAREN, + ACTIONS(2188), 1, anon_sym_COMMA, - [68956] = 3, - ACTIONS(2086), 1, - sym_comment, - ACTIONS(2562), 1, - anon_sym_RBRACE, - ACTIONS(2564), 2, - anon_sym_LBRACE2, - aux_sym_format_specifier_token1, - [68967] = 2, + STATE(1447), 1, + aux_sym_argument_list_repeat1, + [69186] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1550), 3, - sym__newline, - anon_sym_in, - anon_sym_SEMI, - [68976] = 2, + ACTIONS(3164), 1, + anon_sym_RPAREN, + ACTIONS(3166), 1, + anon_sym_COMMA, + STATE(1480), 1, + aux_sym_argument_list_repeat1, + [69199] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3136), 3, + ACTIONS(3168), 3, anon_sym_LPAREN, anon_sym_COLON, anon_sym_EQ, - [68985] = 4, + [69208] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3138), 1, + ACTIONS(3170), 1, anon_sym_COMMA, - ACTIONS(3141), 1, + ACTIONS(3173), 1, anon_sym_RBRACK, - STATE(1511), 1, - aux_sym_type_parameters_repeat1, - [68998] = 2, + STATE(1527), 1, + aux_sym_index_expression_list_repeat1, + [69221] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3143), 3, + ACTIONS(3175), 1, anon_sym_RPAREN, + ACTIONS(3177), 1, anon_sym_COMMA, + STATE(1528), 1, + aux_sym_match_class_pattern_repeat1, + [69234] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2650), 1, + anon_sym_LPAREN, + ACTIONS(3180), 1, + anon_sym_COLON, + STATE(1617), 1, + sym_argument_list, + [69247] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2955), 1, anon_sym_COLON, - [69007] = 4, + ACTIONS(3182), 1, + anon_sym_COMMA, + STATE(1530), 1, + aux_sym__parameters_repeat1, + [69260] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(1018), 1, + ACTIONS(2618), 1, anon_sym_RPAREN, - ACTIONS(3145), 1, + ACTIONS(3185), 1, anon_sym_COMMA, - STATE(1400), 1, - aux_sym_with_clause_repeat1, - [69020] = 4, + STATE(1302), 1, + aux_sym__collection_elements_repeat1, + [69273] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3147), 1, - sym_identifier, - ACTIONS(3149), 1, - sym_match_wildcard_pattern, - STATE(1312), 1, - sym_match_capture_pattern, - [69033] = 4, + ACTIONS(3187), 1, + anon_sym_COMMA, + ACTIONS(3190), 1, + anon_sym_RBRACE, + STATE(1532), 1, + aux_sym_dictionary_repeat1, + [69286] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2031), 1, + ACTIONS(2045), 1, anon_sym_COMMA, - ACTIONS(3151), 1, + ACTIONS(3192), 1, anon_sym_in, - STATE(1018), 1, + STATE(1019), 1, aux_sym__patterns_repeat1, - [69046] = 3, + [69299] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(2857), 1, - anon_sym_EQ, - ACTIONS(2853), 2, + ACTIONS(2045), 1, anon_sym_COMMA, - anon_sym_COLON, - [69057] = 3, + ACTIONS(3194), 1, + anon_sym_in, + STATE(1019), 1, + aux_sym__patterns_repeat1, + [69312] = 3, ACTIONS(2086), 1, sym_comment, - ACTIONS(2591), 1, + ACTIONS(2549), 1, anon_sym_RBRACE, - ACTIONS(2593), 2, + ACTIONS(2551), 2, anon_sym_LBRACE2, aux_sym_format_specifier_token1, - [69068] = 4, + [69323] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(3010), 1, + ACTIONS(1916), 1, + anon_sym_RPAREN, + ACTIONS(3196), 1, + anon_sym_COMMA, + STATE(1528), 1, + aux_sym_match_class_pattern_repeat1, + [69336] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2636), 2, anon_sym_COMMA, - ACTIONS(3153), 1, anon_sym_RBRACK, - STATE(1460), 1, - aux_sym_index_expression_list_repeat1, - [69081] = 4, + [69344] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2970), 1, + ACTIONS(2976), 2, anon_sym_RPAREN, - ACTIONS(3155), 1, anon_sym_COMMA, - STATE(1519), 1, - aux_sym__parameters_repeat1, - [69094] = 4, + [69352] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2618), 1, - anon_sym_LPAREN, - ACTIONS(3158), 1, - anon_sym_COLON, - STATE(1663), 1, - sym_argument_list, - [69107] = 4, + ACTIONS(2253), 2, + sym__newline, + anon_sym_SEMI, + [69360] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3160), 1, - anon_sym_RPAREN, - ACTIONS(3162), 1, - anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [69120] = 2, + ACTIONS(3198), 2, + sym__newline, + anon_sym_SEMI, + [69368] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2881), 3, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_COLON, - [69129] = 4, + ACTIONS(3200), 1, + sym_identifier, + STATE(1594), 1, + sym_match_capture_pattern, + [69378] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3164), 1, + ACTIONS(2690), 2, anon_sym_RPAREN, - ACTIONS(3166), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [69142] = 2, + [69386] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3168), 3, + ACTIONS(3202), 2, anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_COLON, - [69151] = 4, + [69394] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3170), 1, - anon_sym_RPAREN, - ACTIONS(3172), 1, - anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [69164] = 4, + ACTIONS(2094), 1, + anon_sym_DOT, + STATE(1504), 1, + aux_sym_match_value_pattern_repeat1, + [69404] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3174), 1, - anon_sym_RPAREN, - ACTIONS(3176), 1, + ACTIONS(2992), 1, + anon_sym_RBRACE, + ACTIONS(3204), 1, anon_sym_COMMA, - STATE(1430), 1, - aux_sym_argument_list_repeat1, - [69177] = 4, + [69414] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2638), 1, - anon_sym_COLON2, - ACTIONS(3178), 1, - anon_sym_RBRACE, - STATE(1656), 1, - sym_format_specifier, - [69190] = 4, + ACTIONS(3206), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [69422] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1910), 1, - anon_sym_RBRACK, - ACTIONS(3180), 1, - anon_sym_COMMA, - STATE(1280), 1, - aux_sym_open_sequence_match_pattern_repeat1, - [69203] = 2, + ACTIONS(3208), 1, + sym_integer, + ACTIONS(3210), 1, + sym_float, + [69432] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2489), 3, + ACTIONS(3212), 2, sym__newline, - anon_sym_EQ, anon_sym_SEMI, - [69212] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2031), 1, - anon_sym_COMMA, - ACTIONS(3182), 1, - anon_sym_in, - STATE(1018), 1, - aux_sym__patterns_repeat1, - [69225] = 4, + [69440] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2031), 1, - anon_sym_COMMA, - ACTIONS(3184), 1, - anon_sym_in, - STATE(1018), 1, - aux_sym__patterns_repeat1, - [69238] = 4, + ACTIONS(2465), 2, + sym__newline, + anon_sym_SEMI, + [69448] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2031), 1, - anon_sym_COMMA, - ACTIONS(3186), 1, - anon_sym_in, - STATE(1018), 1, - aux_sym__patterns_repeat1, - [69251] = 2, + ACTIONS(3214), 2, + sym__newline, + anon_sym_SEMI, + [69456] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1088), 2, + ACTIONS(1028), 2, anon_sym_except, anon_sym_finally, - [69259] = 2, + [69464] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3188), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [69267] = 2, + ACTIONS(3216), 2, + sym__newline, + anon_sym_SEMI, + [69472] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3190), 2, + ACTIONS(3218), 2, + anon_sym_RPAREN, anon_sym_COMMA, - anon_sym_RBRACK, - [69275] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3192), 2, - anon_sym_COLON, - anon_sym_DASH_GT, - [69283] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3194), 1, - sym_identifier, - STATE(1609), 1, - sym_match_capture_pattern, - [69293] = 3, + [69480] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3196), 1, - anon_sym_COLON, - ACTIONS(3198), 1, - anon_sym_DASH_GT, - [69303] = 2, + ACTIONS(3220), 2, + sym__newline, + anon_sym_SEMI, + [69488] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2710), 2, - anon_sym_RPAREN, + ACTIONS(3222), 2, anon_sym_COMMA, - [69311] = 2, + anon_sym_RBRACK, + [69496] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3200), 2, - anon_sym_RPAREN, + ACTIONS(3224), 2, anon_sym_COMMA, - [69319] = 3, + anon_sym_RBRACK, + [69504] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3202), 1, - anon_sym_COLON, - ACTIONS(3204), 1, - anon_sym_DASH_GT, - [69329] = 2, + ACTIONS(2331), 1, + anon_sym_COMMA, + STATE(1321), 1, + aux_sym_expression_list_repeat1, + [69514] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2979), 2, + ACTIONS(3175), 2, anon_sym_RPAREN, anon_sym_COMMA, - [69337] = 3, + [69522] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2106), 1, - anon_sym_DOT, - STATE(1451), 1, - aux_sym_match_value_pattern_repeat1, - [69347] = 3, + ACTIONS(3226), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [69530] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3206), 1, - anon_sym_COLON, - ACTIONS(3208), 1, - anon_sym_DASH_GT, - [69357] = 2, + ACTIONS(3228), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [69538] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2433), 2, - sym__newline, - anon_sym_SEMI, - [69365] = 3, + ACTIONS(1048), 2, + anon_sym_except, + anon_sym_finally, + [69546] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3210), 1, - anon_sym_COLON, - ACTIONS(3212), 1, - anon_sym_DASH_GT, - [69375] = 3, + ACTIONS(2335), 1, + anon_sym_COMMA, + STATE(1271), 1, + aux_sym_expression_list_repeat1, + [69556] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2465), 1, - anon_sym_as, - ACTIONS(2467), 1, - anon_sym_COLON, - [69385] = 3, + ACTIONS(3230), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [69564] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3214), 1, - anon_sym_COLON, - ACTIONS(3216), 1, - anon_sym_DASH_GT, - [69395] = 2, + ACTIONS(3232), 2, + sym__newline, + anon_sym_SEMI, + [69572] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3218), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [69403] = 2, + ACTIONS(3234), 2, + sym__newline, + anon_sym_SEMI, + [69580] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3220), 2, - anon_sym_COLON, - anon_sym_DASH_GT, - [69411] = 3, + ACTIONS(3236), 2, + sym__newline, + anon_sym_SEMI, + [69588] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2469), 1, - anon_sym_as, - ACTIONS(2471), 1, - anon_sym_COLON, - [69421] = 2, + ACTIONS(2910), 1, + sym_identifier, + STATE(1569), 1, + sym_match_keyword_pattern, + [69598] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3222), 2, + ACTIONS(3238), 2, sym__newline, anon_sym_SEMI, - [69429] = 3, + [69606] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3120), 1, - anon_sym_RBRACE, - ACTIONS(3224), 1, + ACTIONS(2920), 2, + anon_sym_RPAREN, anon_sym_COMMA, - [69439] = 2, + [69614] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2497), 2, + ACTIONS(2503), 2, sym__newline, anon_sym_SEMI, - [69447] = 3, + [69622] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(1989), 1, - anon_sym_RBRACE, - ACTIONS(3226), 1, + ACTIONS(3240), 1, anon_sym_COMMA, - [69457] = 3, + STATE(1371), 1, + aux_sym_open_sequence_match_pattern_repeat1, + [69632] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3228), 1, - sym_integer, - ACTIONS(3230), 1, - sym_float, - [69467] = 2, + ACTIONS(3242), 2, + sym__newline, + anon_sym_SEMI, + [69640] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3073), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [69475] = 2, + ACTIONS(3244), 1, + anon_sym_COLON, + ACTIONS(3246), 1, + anon_sym_DASH_GT, + [69650] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2948), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [69483] = 2, + ACTIONS(3248), 1, + anon_sym_COLON, + ACTIONS(3250), 1, + anon_sym_DASH_GT, + [69660] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3232), 2, - sym__newline, - anon_sym_SEMI, - [69491] = 3, + ACTIONS(3252), 1, + anon_sym_COLON, + ACTIONS(3254), 1, + anon_sym_DASH_GT, + [69670] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3234), 1, + ACTIONS(3256), 1, anon_sym_COLON, - ACTIONS(3236), 1, + ACTIONS(3258), 1, anon_sym_DASH_GT, - [69501] = 2, + [69680] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3238), 2, - sym__newline, - anon_sym_SEMI, - [69509] = 2, + ACTIONS(3260), 1, + sym_integer, + ACTIONS(3262), 1, + sym_float, + [69690] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3240), 2, + ACTIONS(1958), 1, + anon_sym_RBRACE, + ACTIONS(3264), 1, anon_sym_COMMA, - anon_sym_RBRACK, - [69517] = 2, + [69700] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3242), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [69525] = 3, + ACTIONS(3266), 2, + sym__newline, + anon_sym_SEMI, + [69708] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2439), 1, + ACTIONS(2495), 1, anon_sym_as, - ACTIONS(2441), 1, + ACTIONS(2497), 1, anon_sym_COLON, - [69535] = 2, + [69718] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3244), 2, + ACTIONS(3268), 2, sym__newline, anon_sym_SEMI, - [69543] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2702), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [69551] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3246), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [69559] = 3, + [69726] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3248), 1, + ACTIONS(3110), 2, anon_sym_COMMA, - ACTIONS(3250), 1, anon_sym_RBRACE, - [69569] = 2, + [69734] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2276), 2, - sym__newline, - anon_sym_SEMI, - [69577] = 2, + ACTIONS(3270), 2, + anon_sym_COLON, + anon_sym_DASH_GT, + [69742] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3252), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [69585] = 2, + ACTIONS(2467), 1, + anon_sym_as, + ACTIONS(2469), 1, + anon_sym_COLON, + [69752] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3254), 2, - sym__newline, - anon_sym_SEMI, - [69593] = 3, + ACTIONS(3272), 1, + anon_sym_COLON, + ACTIONS(3274), 1, + anon_sym_DASH_GT, + [69762] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2877), 1, + ACTIONS(2737), 1, anon_sym_LPAREN, - STATE(1576), 1, + STATE(1588), 1, sym_parameters, - [69603] = 3, + [69772] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2393), 1, + ACTIONS(2236), 1, anon_sym_COMMA, STATE(1273), 1, aux_sym_expression_list_repeat1, - [69613] = 3, + [69782] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2877), 1, - anon_sym_LPAREN, - STATE(1560), 1, - sym_parameters, - [69623] = 2, + ACTIONS(3276), 1, + anon_sym_COLON, + ACTIONS(3278), 1, + anon_sym_DASH_GT, + [69792] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3256), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [69631] = 3, + ACTIONS(1044), 2, + anon_sym_except, + anon_sym_finally, + [69800] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3258), 1, + ACTIONS(3280), 1, anon_sym_COLON, - ACTIONS(3260), 1, + ACTIONS(3282), 1, anon_sym_DASH_GT, - [69641] = 2, + [69810] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3262), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [69649] = 2, + ACTIONS(3284), 1, + anon_sym_COLON, + ACTIONS(3286), 1, + anon_sym_DASH_GT, + [69820] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2715), 2, - sym__newline, - anon_sym_SEMI, - [69657] = 2, + ACTIONS(3288), 1, + sym_integer, + ACTIONS(3290), 1, + sym_float, + [69830] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3264), 2, - sym__newline, - anon_sym_SEMI, - [69665] = 2, + ACTIONS(2737), 1, + anon_sym_LPAREN, + STATE(1590), 1, + sym_parameters, + [69840] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3266), 2, - sym__newline, - anon_sym_SEMI, - [69673] = 2, + ACTIONS(3292), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [69848] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3268), 2, + ACTIONS(3294), 2, sym__newline, anon_sym_SEMI, - [69681] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(1054), 2, - anon_sym_except, - anon_sym_finally, - [69689] = 2, + [69856] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1022), 2, - anon_sym_except, - anon_sym_finally, - [69697] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3270), 2, + ACTIONS(3296), 2, sym__newline, anon_sym_SEMI, - [69705] = 2, + [69864] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3272), 2, + ACTIONS(3298), 2, sym__newline, anon_sym_SEMI, - [69713] = 2, + [69872] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3274), 2, + ACTIONS(2463), 2, sym__newline, anon_sym_SEMI, - [69721] = 3, + [69880] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3276), 1, - sym_integer, - ACTIONS(3278), 1, - sym_float, - [69731] = 3, + ACTIONS(3300), 2, + anon_sym_COLON, + anon_sym_DASH_GT, + [69888] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2260), 1, - anon_sym_COMMA, - STATE(1272), 1, - aux_sym_expression_list_repeat1, - [69741] = 2, + ACTIONS(2429), 1, + anon_sym_as, + ACTIONS(2431), 1, + anon_sym_COLON, + [69898] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3280), 2, + ACTIONS(3302), 2, sym__newline, anon_sym_SEMI, - [69749] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2339), 1, - anon_sym_COMMA, - STATE(1286), 1, - aux_sym_expression_list_repeat1, - [69759] = 2, + [69906] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2491), 2, + ACTIONS(3304), 2, sym__newline, anon_sym_SEMI, - [69767] = 2, + [69914] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2986), 2, - anon_sym_RPAREN, + ACTIONS(2937), 1, anon_sym_COMMA, - [69775] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2936), 1, - sym_identifier, - STATE(1592), 1, - sym_match_keyword_pattern, - [69785] = 3, + ACTIONS(3306), 1, + anon_sym_RPAREN, + [69924] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2399), 1, - anon_sym_as, - ACTIONS(2403), 1, - anon_sym_COLON, - [69795] = 3, + ACTIONS(3308), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [69932] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3282), 1, + ACTIONS(3310), 1, anon_sym_COMMA, - STATE(1382), 1, + STATE(1502), 1, aux_sym_open_sequence_match_pattern_repeat1, - [69805] = 2, + [69942] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3284), 2, - sym__newline, - anon_sym_SEMI, - [69813] = 3, + ACTIONS(3312), 1, + anon_sym_COMMA, + ACTIONS(3314), 1, + anon_sym_RBRACE, + [69952] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2877), 1, + ACTIONS(2737), 1, anon_sym_LPAREN, - STATE(1544), 1, + STATE(1575), 1, sym_parameters, - [69823] = 2, + [69962] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1026), 2, - anon_sym_except, - anon_sym_finally, - [69831] = 3, + ACTIONS(2881), 2, + anon_sym_COMMA, + anon_sym_COLON, + [69970] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(2877), 1, + ACTIONS(2737), 1, anon_sym_LPAREN, - STATE(1546), 1, + STATE(1576), 1, sym_parameters, - [69841] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2729), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [69849] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2906), 1, - anon_sym_COMMA, - ACTIONS(3286), 1, - anon_sym_RPAREN, - [69859] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3288), 1, - anon_sym_COMMA, - STATE(1480), 1, - aux_sym_open_sequence_match_pattern_repeat1, - [69869] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3290), 2, - sym__newline, - anon_sym_SEMI, - [69877] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3292), 1, - sym_integer, - ACTIONS(3294), 1, - sym_float, - [69887] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3296), 2, - sym__newline, - anon_sym_SEMI, - [69895] = 2, + [69980] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2853), 2, - anon_sym_COMMA, - anon_sym_COLON, - [69903] = 2, + ACTIONS(1067), 2, + anon_sym_except, + anon_sym_finally, + [69988] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1079), 2, + ACTIONS(1032), 2, anon_sym_except, anon_sym_finally, - [69911] = 2, + [69996] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3298), 2, - sym__newline, - anon_sym_SEMI, - [69919] = 2, + ACTIONS(3316), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [70004] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3300), 2, + ACTIONS(3318), 2, anon_sym_COMMA, anon_sym_RBRACE, - [69927] = 2, + [70012] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3302), 2, + ACTIONS(2766), 2, sym__newline, anon_sym_SEMI, - [69935] = 2, + [70020] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3304), 2, + ACTIONS(2716), 2, anon_sym_RPAREN, anon_sym_COMMA, - [69943] = 3, + [70028] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(3306), 1, + ACTIONS(2491), 1, + anon_sym_as, + ACTIONS(2493), 1, anon_sym_COLON, - ACTIONS(3308), 1, - anon_sym_DASH_GT, - [69953] = 2, + [70038] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3310), 1, + ACTIONS(3320), 1, anon_sym_COLON, - [69960] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3012), 1, - anon_sym_RBRACK, - [69967] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3312), 1, - anon_sym_RPAREN, - [69974] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3314), 1, - sym_identifier, - [69981] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3316), 1, - sym_identifier, - [69988] = 2, + [70045] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3318), 1, + ACTIONS(3322), 1, anon_sym_RPAREN, - [69995] = 2, + [70052] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3320), 1, + ACTIONS(3059), 1, anon_sym_in, - [70002] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3322), 1, - anon_sym_import, - [70009] = 2, + [70059] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3324), 1, - anon_sym_RBRACE, - [70016] = 2, + anon_sym_in, + [70066] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3326), 1, - anon_sym_COLON, - [70023] = 2, + anon_sym_RPAREN, + [70073] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3328), 1, - anon_sym_for, - [70030] = 2, + anon_sym_RBRACK, + [70080] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3330), 1, - anon_sym_RBRACE, - [70037] = 2, + anon_sym_RBRACK, + [70087] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3332), 1, - anon_sym_RPAREN, - [70044] = 2, + anon_sym_COLON, + [70094] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3334), 1, - anon_sym_COLON, - [70051] = 2, + sym_identifier, + [70101] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3336), 1, - anon_sym_RBRACE, - [70058] = 2, + anon_sym_COLON, + [70108] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3338), 1, - anon_sym_RPAREN, - [70065] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2535), 1, - anon_sym_COLON, - [70072] = 2, + anon_sym_RBRACE, + [70115] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3340), 1, - anon_sym_COLON, - [70079] = 2, + anon_sym_RBRACE, + [70122] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3342), 1, - sym_identifier, - [70086] = 2, + anon_sym_COLON, + [70129] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3344), 1, anon_sym_COLON, - [70093] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2375), 1, - anon_sym_EQ, - [70100] = 2, + [70136] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3346), 1, - anon_sym_COLON, - [70107] = 2, + anon_sym_import, + [70143] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3348), 1, - anon_sym_COLON, - [70114] = 2, + anon_sym_RBRACE, + [70150] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2541), 1, + ACTIONS(2559), 1, anon_sym_COLON, - [70121] = 2, + [70157] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3350), 1, - anon_sym_COLON, - [70128] = 2, + sym_identifier, + [70164] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3352), 1, - anon_sym_import, - [70135] = 2, + anon_sym_COLON, + [70171] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3354), 1, anon_sym_COLON, - [70142] = 2, + [70178] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3356), 1, anon_sym_RPAREN, - [70149] = 2, + [70185] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3358), 1, - sym_identifier, - [70156] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3360), 1, anon_sym_COLON, - [70163] = 2, + [70192] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3362), 1, + ACTIONS(3360), 1, anon_sym_COLON, - [70170] = 2, + [70199] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3364), 1, + ACTIONS(2616), 1, anon_sym_COLON, - [70177] = 2, + [70206] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2572), 1, - anon_sym_COLON, - [70184] = 2, + ACTIONS(3362), 1, + anon_sym_RBRACE, + [70213] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3108), 1, - anon_sym_RBRACE, - [70191] = 2, + ACTIONS(3364), 1, + anon_sym_RPAREN, + [70220] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3366), 1, - anon_sym_COLON, - [70198] = 2, + anon_sym_RPAREN, + [70227] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3368), 1, - anon_sym_COLON, - [70205] = 2, + sym_identifier, + [70234] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2914), 1, + anon_sym_RBRACK, + [70241] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3370), 1, anon_sym_COLON, - [70212] = 2, + [70248] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3372), 1, - anon_sym_LPAREN, - [70219] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2731), 1, - anon_sym_RBRACE, - [70226] = 2, + anon_sym_COLON, + [70255] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3374), 1, anon_sym_COLON, - [70233] = 2, + [70262] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3376), 1, - sym_identifier, - [70240] = 2, + anon_sym_RBRACE, + [70269] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3378), 1, - anon_sym_RPAREN, - [70247] = 2, + sym_identifier, + [70276] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3380), 1, - anon_sym_RPAREN, - [70254] = 2, + anon_sym_COLON, + [70283] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3382), 1, - anon_sym_RBRACE, - [70261] = 2, + anon_sym_COLON, + [70290] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3384), 1, - anon_sym_RBRACK, - [70268] = 2, + anon_sym_COLON, + [70297] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3386), 1, - anon_sym_RBRACK, - [70275] = 2, + anon_sym_import, + [70304] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3388), 1, - sym_identifier, - [70282] = 2, + ACTIONS(2916), 1, + anon_sym_in, + [70311] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3128), 1, - anon_sym_RBRACK, - [70289] = 2, + ACTIONS(3388), 1, + anon_sym_RPAREN, + [70318] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3390), 1, anon_sym_COLON, - [70296] = 2, + [70325] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3392), 1, sym_identifier, - [70303] = 2, + [70332] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3394), 1, anon_sym_COLON, - [70310] = 2, + [70339] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3396), 1, - anon_sym_RBRACE, - [70317] = 2, + sym_identifier, + [70346] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3398), 1, anon_sym_RBRACE, - [70324] = 2, + [70353] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3400), 1, - anon_sym_RBRACE, - [70331] = 2, + anon_sym_LPAREN, + [70360] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3402), 1, + ACTIONS(2543), 1, anon_sym_COLON, - [70338] = 2, + [70367] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3402), 1, + anon_sym_RBRACE, + [70374] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1100), 1, + anon_sym_def, + [70381] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3404), 1, - sym_identifier, - [70345] = 2, + anon_sym_import, + [70388] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3406), 1, + ACTIONS(3022), 1, anon_sym_RBRACK, - [70352] = 2, + [70395] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3408), 1, + ACTIONS(3406), 1, anon_sym_RPAREN, - [70359] = 2, + [70402] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3410), 1, - anon_sym_RPAREN, - [70366] = 2, + ACTIONS(3408), 1, + sym_identifier, + [70409] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3412), 1, + ACTIONS(3410), 1, anon_sym_in, - [70373] = 2, + [70416] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3414), 1, + ACTIONS(3412), 1, anon_sym_RPAREN, - [70380] = 2, + [70423] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3130), 1, - anon_sym_in, - [70387] = 2, + ACTIONS(3414), 1, + sym_identifier, + [70430] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3416), 1, - anon_sym_RBRACK, - [70394] = 2, + anon_sym_COLON, + [70437] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3418), 1, - anon_sym_RBRACE, - [70401] = 2, + ACTIONS(2574), 1, + anon_sym_COLON, + [70444] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(2797), 1, + ACTIONS(2925), 1, anon_sym_RBRACE, - [70408] = 2, + [70451] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3186), 1, - anon_sym_in, - [70415] = 2, + ACTIONS(3148), 1, + anon_sym_RBRACK, + [70458] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3418), 1, + anon_sym_import, + [70465] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3420), 1, sym_identifier, - [70422] = 2, + [70472] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3422), 1, + anon_sym_COLON, + [70479] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2784), 1, anon_sym_RBRACE, - [70429] = 2, + [70486] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3424), 1, - sym_identifier, - [70436] = 2, + anon_sym_COLON, + [70493] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3314), 1, + anon_sym_RBRACE, + [70500] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3426), 1, - anon_sym_RPAREN, - [70443] = 2, + anon_sym_COLON, + [70507] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3428), 1, - anon_sym_COLON, - [70450] = 2, + sym_identifier, + [70514] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3430), 1, - anon_sym_RPAREN, - [70457] = 2, + anon_sym_COLON, + [70521] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3432), 1, - anon_sym_RBRACE, - [70464] = 2, + anon_sym_RBRACK, + [70528] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3434), 1, - anon_sym_RPAREN, - [70471] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2601), 1, - anon_sym_COLON, - [70478] = 2, + anon_sym_RBRACK, + [70535] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3436), 1, anon_sym_RBRACE, - [70485] = 2, + [70542] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3438), 1, - anon_sym_COLON, - [70492] = 2, + anon_sym_RPAREN, + [70549] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3440), 1, - anon_sym_RBRACK, - [70499] = 2, + anon_sym_RBRACE, + [70556] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3442), 1, - anon_sym_COLON, - [70506] = 2, + ACTIONS(2747), 1, + anon_sym_RBRACE, + [70563] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3444), 1, + ACTIONS(3442), 1, anon_sym_RBRACK, - [70513] = 2, + [70570] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3446), 1, + ACTIONS(3444), 1, anon_sym_COLON, - [70520] = 2, + [70577] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3046), 1, - anon_sym_RBRACK, - [70527] = 2, + ACTIONS(3446), 1, + anon_sym_COLON, + [70584] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3448), 1, anon_sym_RBRACE, - [70534] = 2, + [70591] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(2401), 1, + anon_sym_EQ, + [70598] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3450), 1, - sym_identifier, - [70541] = 2, + anon_sym_RPAREN, + [70605] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3452), 1, - anon_sym_COLON, - [70548] = 2, + anon_sym_for, + [70612] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(1969), 1, + anon_sym_RBRACE, + [70619] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3454), 1, - anon_sym_in, - [70555] = 2, + anon_sym_RBRACE, + [70626] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3456), 1, - sym_identifier, - [70562] = 2, + anon_sym_COLON, + [70633] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3458), 1, - anon_sym_RBRACE, - [70569] = 2, + anon_sym_in, + [70640] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3460), 1, - anon_sym_COLON, - [70576] = 2, + anon_sym_RPAREN, + [70647] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3462), 1, - anon_sym_in, - [70583] = 2, + anon_sym_COLON, + [70654] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3464), 1, sym_identifier, - [70590] = 2, + [70661] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3466), 1, - anon_sym_COLON, - [70597] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(3468), 1, sym_identifier, - [70604] = 2, + [70668] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3470), 1, + ACTIONS(3468), 1, anon_sym_COLON, - [70611] = 2, + [70675] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3250), 1, - anon_sym_RBRACE, - [70618] = 2, + ACTIONS(3470), 1, + anon_sym_RPAREN, + [70682] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3472), 1, - ts_builtin_sym_end, - [70625] = 2, + anon_sym_COLON, + [70689] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3474), 1, - anon_sym_import, - [70632] = 2, + anon_sym_RBRACK, + [70696] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3476), 1, - anon_sym_in, - [70639] = 2, + anon_sym_COLON, + [70703] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3478), 1, - anon_sym_RPAREN, - [70646] = 2, + anon_sym_RBRACE, + [70710] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3480), 1, - anon_sym_import, - [70653] = 2, + anon_sym_RBRACE, + [70717] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3482), 1, - anon_sym_RBRACK, - [70660] = 2, + anon_sym_RBRACE, + [70724] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3484), 1, - anon_sym_RBRACE, - [70667] = 2, + anon_sym_COLON, + [70731] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3486), 1, - anon_sym_COLON, - [70674] = 2, + anon_sym_RBRACE, + [70738] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3488), 1, anon_sym_COLON, - [70681] = 2, + [70745] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3490), 1, - anon_sym_RBRACE, - [70688] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(2896), 1, - anon_sym_in, - [70695] = 2, + anon_sym_COLON, + [70752] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3492), 1, - anon_sym_COLON, - [70702] = 2, + sym_identifier, + [70759] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3494), 1, - anon_sym_COLON, - [70709] = 2, + anon_sym_in, + [70766] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3496), 1, - anon_sym_RPAREN, - [70716] = 2, + anon_sym_in, + [70773] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3498), 1, - anon_sym_RBRACK, - [70723] = 2, + anon_sym_EQ, + [70780] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3500), 1, - sym_identifier, - [70730] = 2, + anon_sym_RPAREN, + [70787] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3502), 1, + anon_sym_COLON, + [70794] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3049), 1, anon_sym_RBRACE, - [70737] = 2, + [70801] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3504), 1, - anon_sym_COLON, - [70744] = 2, + anon_sym_RBRACK, + [70808] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3506), 1, - anon_sym_COLON, - [70751] = 2, + sym_identifier, + [70815] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3508), 1, anon_sym_RBRACE, - [70758] = 2, + [70822] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3510), 1, - anon_sym_RBRACE, - [70765] = 2, + sym_identifier, + [70829] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3512), 1, - anon_sym_COLON, - [70772] = 2, + anon_sym_RBRACE, + [70836] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3514), 1, + ACTIONS(3057), 1, anon_sym_in, - [70779] = 2, + [70843] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1997), 1, - anon_sym_RBRACE, - [70786] = 2, + ACTIONS(3514), 1, + anon_sym_RPAREN, + [70850] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3516), 1, - anon_sym_COLON, - [70793] = 2, + anon_sym_RPAREN, + [70857] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3518), 1, anon_sym_RBRACE, - [70800] = 2, + [70864] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3520), 1, - sym_identifier, - [70807] = 2, + ACTIONS(966), 1, + anon_sym_STAR, + [70871] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3153), 1, + ACTIONS(3520), 1, anon_sym_RBRACK, - [70814] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(990), 1, - anon_sym_STAR, - [70821] = 2, + [70878] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3522), 1, - anon_sym_RPAREN, - [70828] = 2, + ts_builtin_sym_end, + [70885] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(3524), 1, - anon_sym_EQ, - [70835] = 2, + sym_identifier, + [70892] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(968), 1, + ACTIONS(3526), 1, + anon_sym_in, + [70899] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(996), 1, anon_sym_STAR, - [70842] = 2, + [70906] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(1100), 1, - anon_sym_def, - [70849] = 2, + ACTIONS(3528), 1, + sym_identifier, + [70913] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3178), 1, - anon_sym_RBRACE, - [70856] = 2, + ACTIONS(3530), 1, + sym_identifier, + [70920] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3526), 1, + ACTIONS(3532), 1, anon_sym_RPAREN, - [70863] = 2, + [70927] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3528), 1, - sym_identifier, - [70870] = 2, + ACTIONS(3534), 1, + anon_sym_COLON, + [70934] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3530), 1, - sym_identifier, - [70877] = 2, + ACTIONS(3536), 1, + anon_sym_RPAREN, + [70941] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3532), 1, + ACTIONS(3538), 1, + anon_sym_COLON, + [70948] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3540), 1, + anon_sym_RBRACK, + [70955] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3542), 1, + anon_sym_COLON, + [70962] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(3544), 1, sym_identifier, - [70884] = 2, + [70969] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3534), 1, + ACTIONS(3546), 1, sym_identifier, - [70891] = 2, + [70976] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3536), 1, + ACTIONS(3548), 1, anon_sym_COLON, - [70898] = 2, + [70983] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3182), 1, + ACTIONS(3192), 1, anon_sym_in, - [70905] = 2, + [70990] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(1122), 1, anon_sym_def, - [70912] = 2, + [70997] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3151), 1, + ACTIONS(2904), 1, anon_sym_in, - [70919] = 2, + [71004] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3184), 1, + ACTIONS(3194), 1, anon_sym_in, - [70926] = 2, + [71011] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3538), 1, - anon_sym_COLON, - [70933] = 2, + ACTIONS(2966), 1, + anon_sym_RBRACK, + [71018] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3540), 1, + ACTIONS(3550), 1, anon_sym_COLON, - [70940] = 2, + [71025] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(3542), 1, - anon_sym_RBRACK, + ACTIONS(3552), 1, + anon_sym_RBRACE, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(157)] = 0, [SMALL_STATE(158)] = 127, - [SMALL_STATE(159)] = 254, - [SMALL_STATE(160)] = 379, - [SMALL_STATE(161)] = 504, - [SMALL_STATE(162)] = 615, + [SMALL_STATE(159)] = 252, + [SMALL_STATE(160)] = 363, + [SMALL_STATE(161)] = 474, + [SMALL_STATE(162)] = 601, [SMALL_STATE(163)] = 726, - [SMALL_STATE(164)] = 851, + [SMALL_STATE(164)] = 853, [SMALL_STATE(165)] = 978, [SMALL_STATE(166)] = 1100, [SMALL_STATE(167)] = 1222, @@ -82440,67 +82519,67 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(174)] = 2026, [SMALL_STATE(175)] = 2135, [SMALL_STATE(176)] = 2244, - [SMALL_STATE(177)] = 2353, - [SMALL_STATE(178)] = 2462, - [SMALL_STATE(179)] = 2577, - [SMALL_STATE(180)] = 2690, - [SMALL_STATE(181)] = 2799, - [SMALL_STATE(182)] = 2914, - [SMALL_STATE(183)] = 3027, + [SMALL_STATE(177)] = 2361, + [SMALL_STATE(178)] = 2474, + [SMALL_STATE(179)] = 2587, + [SMALL_STATE(180)] = 2698, + [SMALL_STATE(181)] = 2813, + [SMALL_STATE(182)] = 2926, + [SMALL_STATE(183)] = 3035, [SMALL_STATE(184)] = 3144, - [SMALL_STATE(185)] = 3255, - [SMALL_STATE(186)] = 3364, - [SMALL_STATE(187)] = 3479, - [SMALL_STATE(188)] = 3588, - [SMALL_STATE(189)] = 3703, - [SMALL_STATE(190)] = 3814, + [SMALL_STATE(185)] = 3253, + [SMALL_STATE(186)] = 3362, + [SMALL_STATE(187)] = 3477, + [SMALL_STATE(188)] = 3586, + [SMALL_STATE(189)] = 3701, + [SMALL_STATE(190)] = 3812, [SMALL_STATE(191)] = 3927, [SMALL_STATE(192)] = 4037, - [SMALL_STATE(193)] = 4151, - [SMALL_STATE(194)] = 4261, - [SMALL_STATE(195)] = 4371, - [SMALL_STATE(196)] = 4481, - [SMALL_STATE(197)] = 4591, - [SMALL_STATE(198)] = 4701, - [SMALL_STATE(199)] = 4811, - [SMALL_STATE(200)] = 4921, - [SMALL_STATE(201)] = 5031, - [SMALL_STATE(202)] = 5141, - [SMALL_STATE(203)] = 5247, - [SMALL_STATE(204)] = 5357, - [SMALL_STATE(205)] = 5467, - [SMALL_STATE(206)] = 5577, - [SMALL_STATE(207)] = 5687, - [SMALL_STATE(208)] = 5797, + [SMALL_STATE(193)] = 4147, + [SMALL_STATE(194)] = 4257, + [SMALL_STATE(195)] = 4367, + [SMALL_STATE(196)] = 4477, + [SMALL_STATE(197)] = 4587, + [SMALL_STATE(198)] = 4693, + [SMALL_STATE(199)] = 4807, + [SMALL_STATE(200)] = 4919, + [SMALL_STATE(201)] = 5029, + [SMALL_STATE(202)] = 5143, + [SMALL_STATE(203)] = 5249, + [SMALL_STATE(204)] = 5359, + [SMALL_STATE(205)] = 5469, + [SMALL_STATE(206)] = 5579, + [SMALL_STATE(207)] = 5685, + [SMALL_STATE(208)] = 5799, [SMALL_STATE(209)] = 5909, - [SMALL_STATE(210)] = 6023, - [SMALL_STATE(211)] = 6135, + [SMALL_STATE(210)] = 6019, + [SMALL_STATE(211)] = 6133, [SMALL_STATE(212)] = 6245, - [SMALL_STATE(213)] = 6357, - [SMALL_STATE(214)] = 6471, - [SMALL_STATE(215)] = 6577, - [SMALL_STATE(216)] = 6691, - [SMALL_STATE(217)] = 6801, - [SMALL_STATE(218)] = 6911, - [SMALL_STATE(219)] = 7021, - [SMALL_STATE(220)] = 7131, - [SMALL_STATE(221)] = 7241, - [SMALL_STATE(222)] = 7351, - [SMALL_STATE(223)] = 7465, - [SMALL_STATE(224)] = 7577, - [SMALL_STATE(225)] = 7683, - [SMALL_STATE(226)] = 7793, - [SMALL_STATE(227)] = 7903, - [SMALL_STATE(228)] = 8013, - [SMALL_STATE(229)] = 8119, - [SMALL_STATE(230)] = 8229, - [SMALL_STATE(231)] = 8339, - [SMALL_STATE(232)] = 8453, - [SMALL_STATE(233)] = 8565, - [SMALL_STATE(234)] = 8675, - [SMALL_STATE(235)] = 8789, - [SMALL_STATE(236)] = 8901, - [SMALL_STATE(237)] = 9015, + [SMALL_STATE(213)] = 6359, + [SMALL_STATE(214)] = 6465, + [SMALL_STATE(215)] = 6575, + [SMALL_STATE(216)] = 6685, + [SMALL_STATE(217)] = 6795, + [SMALL_STATE(218)] = 6905, + [SMALL_STATE(219)] = 7015, + [SMALL_STATE(220)] = 7125, + [SMALL_STATE(221)] = 7235, + [SMALL_STATE(222)] = 7349, + [SMALL_STATE(223)] = 7461, + [SMALL_STATE(224)] = 7571, + [SMALL_STATE(225)] = 7681, + [SMALL_STATE(226)] = 7791, + [SMALL_STATE(227)] = 7901, + [SMALL_STATE(228)] = 8011, + [SMALL_STATE(229)] = 8121, + [SMALL_STATE(230)] = 8231, + [SMALL_STATE(231)] = 8345, + [SMALL_STATE(232)] = 8457, + [SMALL_STATE(233)] = 8567, + [SMALL_STATE(234)] = 8681, + [SMALL_STATE(235)] = 8793, + [SMALL_STATE(236)] = 8905, + [SMALL_STATE(237)] = 9019, [SMALL_STATE(238)] = 9129, [SMALL_STATE(239)] = 9236, [SMALL_STATE(240)] = 9343, @@ -82508,14 +82587,14 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(242)] = 9557, [SMALL_STATE(243)] = 9664, [SMALL_STATE(244)] = 9771, - [SMALL_STATE(245)] = 9866, - [SMALL_STATE(246)] = 9973, + [SMALL_STATE(245)] = 9878, + [SMALL_STATE(246)] = 9985, [SMALL_STATE(247)] = 10080, [SMALL_STATE(248)] = 10186, [SMALL_STATE(249)] = 10292, - [SMALL_STATE(250)] = 10398, + [SMALL_STATE(250)] = 10396, [SMALL_STATE(251)] = 10502, - [SMALL_STATE(252)] = 10608, + [SMALL_STATE(252)] = 10606, [SMALL_STATE(253)] = 10712, [SMALL_STATE(254)] = 10818, [SMALL_STATE(255)] = 10921, @@ -82529,76 +82608,76 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(263)] = 11745, [SMALL_STATE(264)] = 11848, [SMALL_STATE(265)] = 11951, - [SMALL_STATE(266)] = 12051, + [SMALL_STATE(266)] = 12025, [SMALL_STATE(267)] = 12125, - [SMALL_STATE(268)] = 12199, - [SMALL_STATE(269)] = 12301, - [SMALL_STATE(270)] = 12403, + [SMALL_STATE(268)] = 12227, + [SMALL_STATE(269)] = 12329, + [SMALL_STATE(270)] = 12431, [SMALL_STATE(271)] = 12505, - [SMALL_STATE(272)] = 12607, + [SMALL_STATE(272)] = 12579, [SMALL_STATE(273)] = 12681, - [SMALL_STATE(274)] = 12783, - [SMALL_STATE(275)] = 12885, - [SMALL_STATE(276)] = 12959, - [SMALL_STATE(277)] = 13059, - [SMALL_STATE(278)] = 13161, - [SMALL_STATE(279)] = 13235, - [SMALL_STATE(280)] = 13335, - [SMALL_STATE(281)] = 13437, + [SMALL_STATE(274)] = 12781, + [SMALL_STATE(275)] = 12855, + [SMALL_STATE(276)] = 12957, + [SMALL_STATE(277)] = 13031, + [SMALL_STATE(278)] = 13105, + [SMALL_STATE(279)] = 13207, + [SMALL_STATE(280)] = 13307, + [SMALL_STATE(281)] = 13409, [SMALL_STATE(282)] = 13511, - [SMALL_STATE(283)] = 13585, - [SMALL_STATE(284)] = 13659, - [SMALL_STATE(285)] = 13761, + [SMALL_STATE(283)] = 13613, + [SMALL_STATE(284)] = 13715, + [SMALL_STATE(285)] = 13789, [SMALL_STATE(286)] = 13863, [SMALL_STATE(287)] = 13965, [SMALL_STATE(288)] = 14067, [SMALL_STATE(289)] = 14169, - [SMALL_STATE(290)] = 14268, - [SMALL_STATE(291)] = 14367, + [SMALL_STATE(290)] = 14266, + [SMALL_STATE(291)] = 14365, [SMALL_STATE(292)] = 14464, - [SMALL_STATE(293)] = 14563, - [SMALL_STATE(294)] = 14660, - [SMALL_STATE(295)] = 14759, - [SMALL_STATE(296)] = 14858, - [SMALL_STATE(297)] = 14955, - [SMALL_STATE(298)] = 15052, - [SMALL_STATE(299)] = 15149, - [SMALL_STATE(300)] = 15246, + [SMALL_STATE(293)] = 14561, + [SMALL_STATE(294)] = 14658, + [SMALL_STATE(295)] = 14755, + [SMALL_STATE(296)] = 14852, + [SMALL_STATE(297)] = 14951, + [SMALL_STATE(298)] = 15048, + [SMALL_STATE(299)] = 15147, + [SMALL_STATE(300)] = 15244, [SMALL_STATE(301)] = 15343, [SMALL_STATE(302)] = 15440, [SMALL_STATE(303)] = 15537, - [SMALL_STATE(304)] = 15634, - [SMALL_STATE(305)] = 15733, + [SMALL_STATE(304)] = 15636, + [SMALL_STATE(305)] = 15735, [SMALL_STATE(306)] = 15832, [SMALL_STATE(307)] = 15931, [SMALL_STATE(308)] = 16028, [SMALL_STATE(309)] = 16125, [SMALL_STATE(310)] = 16224, [SMALL_STATE(311)] = 16321, - [SMALL_STATE(312)] = 16381, - [SMALL_STATE(313)] = 16441, - [SMALL_STATE(314)] = 16501, - [SMALL_STATE(315)] = 16565, - [SMALL_STATE(316)] = 16629, - [SMALL_STATE(317)] = 16689, - [SMALL_STATE(318)] = 16749, - [SMALL_STATE(319)] = 16809, - [SMALL_STATE(320)] = 16879, - [SMALL_STATE(321)] = 16949, - [SMALL_STATE(322)] = 17019, - [SMALL_STATE(323)] = 17089, - [SMALL_STATE(324)] = 17185, - [SMALL_STATE(325)] = 17249, - [SMALL_STATE(326)] = 17309, - [SMALL_STATE(327)] = 17369, - [SMALL_STATE(328)] = 17439, - [SMALL_STATE(329)] = 17499, - [SMALL_STATE(330)] = 17569, - [SMALL_STATE(331)] = 17629, - [SMALL_STATE(332)] = 17693, - [SMALL_STATE(333)] = 17763, - [SMALL_STATE(334)] = 17823, - [SMALL_STATE(335)] = 17883, + [SMALL_STATE(312)] = 16417, + [SMALL_STATE(313)] = 16487, + [SMALL_STATE(314)] = 16547, + [SMALL_STATE(315)] = 16607, + [SMALL_STATE(316)] = 16667, + [SMALL_STATE(317)] = 16737, + [SMALL_STATE(318)] = 16797, + [SMALL_STATE(319)] = 16857, + [SMALL_STATE(320)] = 16917, + [SMALL_STATE(321)] = 16977, + [SMALL_STATE(322)] = 17047, + [SMALL_STATE(323)] = 17143, + [SMALL_STATE(324)] = 17213, + [SMALL_STATE(325)] = 17277, + [SMALL_STATE(326)] = 17337, + [SMALL_STATE(327)] = 17397, + [SMALL_STATE(328)] = 17457, + [SMALL_STATE(329)] = 17527, + [SMALL_STATE(330)] = 17597, + [SMALL_STATE(331)] = 17661, + [SMALL_STATE(332)] = 17725, + [SMALL_STATE(333)] = 17795, + [SMALL_STATE(334)] = 17855, + [SMALL_STATE(335)] = 17919, [SMALL_STATE(336)] = 17979, [SMALL_STATE(337)] = 18075, [SMALL_STATE(338)] = 18145, @@ -82607,45 +82686,45 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(341)] = 18424, [SMALL_STATE(342)] = 18517, [SMALL_STATE(343)] = 18610, - [SMALL_STATE(344)] = 18705, - [SMALL_STATE(345)] = 18798, - [SMALL_STATE(346)] = 18891, - [SMALL_STATE(347)] = 18984, - [SMALL_STATE(348)] = 19057, - [SMALL_STATE(349)] = 19150, - [SMALL_STATE(350)] = 19243, - [SMALL_STATE(351)] = 19308, - [SMALL_STATE(352)] = 19401, - [SMALL_STATE(353)] = 19494, - [SMALL_STATE(354)] = 19587, - [SMALL_STATE(355)] = 19680, - [SMALL_STATE(356)] = 19773, - [SMALL_STATE(357)] = 19866, - [SMALL_STATE(358)] = 19959, - [SMALL_STATE(359)] = 20052, - [SMALL_STATE(360)] = 20145, - [SMALL_STATE(361)] = 20238, - [SMALL_STATE(362)] = 20331, - [SMALL_STATE(363)] = 20424, - [SMALL_STATE(364)] = 20517, - [SMALL_STATE(365)] = 20610, - [SMALL_STATE(366)] = 20703, - [SMALL_STATE(367)] = 20796, - [SMALL_STATE(368)] = 20889, - [SMALL_STATE(369)] = 20982, - [SMALL_STATE(370)] = 21075, - [SMALL_STATE(371)] = 21168, - [SMALL_STATE(372)] = 21261, - [SMALL_STATE(373)] = 21354, - [SMALL_STATE(374)] = 21447, - [SMALL_STATE(375)] = 21540, - [SMALL_STATE(376)] = 21633, - [SMALL_STATE(377)] = 21726, - [SMALL_STATE(378)] = 21819, - [SMALL_STATE(379)] = 21912, - [SMALL_STATE(380)] = 22005, - [SMALL_STATE(381)] = 22098, - [SMALL_STATE(382)] = 22191, + [SMALL_STATE(344)] = 18703, + [SMALL_STATE(345)] = 18796, + [SMALL_STATE(346)] = 18889, + [SMALL_STATE(347)] = 18982, + [SMALL_STATE(348)] = 19075, + [SMALL_STATE(349)] = 19168, + [SMALL_STATE(350)] = 19261, + [SMALL_STATE(351)] = 19354, + [SMALL_STATE(352)] = 19447, + [SMALL_STATE(353)] = 19540, + [SMALL_STATE(354)] = 19633, + [SMALL_STATE(355)] = 19726, + [SMALL_STATE(356)] = 19819, + [SMALL_STATE(357)] = 19912, + [SMALL_STATE(358)] = 20005, + [SMALL_STATE(359)] = 20098, + [SMALL_STATE(360)] = 20191, + [SMALL_STATE(361)] = 20284, + [SMALL_STATE(362)] = 20379, + [SMALL_STATE(363)] = 20472, + [SMALL_STATE(364)] = 20565, + [SMALL_STATE(365)] = 20658, + [SMALL_STATE(366)] = 20751, + [SMALL_STATE(367)] = 20844, + [SMALL_STATE(368)] = 20937, + [SMALL_STATE(369)] = 21030, + [SMALL_STATE(370)] = 21123, + [SMALL_STATE(371)] = 21216, + [SMALL_STATE(372)] = 21309, + [SMALL_STATE(373)] = 21402, + [SMALL_STATE(374)] = 21495, + [SMALL_STATE(375)] = 21588, + [SMALL_STATE(376)] = 21681, + [SMALL_STATE(377)] = 21774, + [SMALL_STATE(378)] = 21867, + [SMALL_STATE(379)] = 21960, + [SMALL_STATE(380)] = 22053, + [SMALL_STATE(381)] = 22126, + [SMALL_STATE(382)] = 22219, [SMALL_STATE(383)] = 22284, [SMALL_STATE(384)] = 22377, [SMALL_STATE(385)] = 22470, @@ -82656,17 +82735,17 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(390)] = 22935, [SMALL_STATE(391)] = 23028, [SMALL_STATE(392)] = 23121, - [SMALL_STATE(393)] = 23186, - [SMALL_STATE(394)] = 23279, - [SMALL_STATE(395)] = 23372, - [SMALL_STATE(396)] = 23465, + [SMALL_STATE(393)] = 23214, + [SMALL_STATE(394)] = 23307, + [SMALL_STATE(395)] = 23400, + [SMALL_STATE(396)] = 23493, [SMALL_STATE(397)] = 23558, [SMALL_STATE(398)] = 23651, [SMALL_STATE(399)] = 23744, [SMALL_STATE(400)] = 23837, [SMALL_STATE(401)] = 23930, - [SMALL_STATE(402)] = 24025, - [SMALL_STATE(403)] = 24118, + [SMALL_STATE(402)] = 24023, + [SMALL_STATE(403)] = 24116, [SMALL_STATE(404)] = 24211, [SMALL_STATE(405)] = 24304, [SMALL_STATE(406)] = 24397, @@ -82704,142 +82783,142 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(438)] = 27353, [SMALL_STATE(439)] = 27446, [SMALL_STATE(440)] = 27504, - [SMALL_STATE(441)] = 27566, - [SMALL_STATE(442)] = 27624, - [SMALL_STATE(443)] = 27682, - [SMALL_STATE(444)] = 27740, - [SMALL_STATE(445)] = 27802, + [SMALL_STATE(441)] = 27562, + [SMALL_STATE(442)] = 27620, + [SMALL_STATE(443)] = 27678, + [SMALL_STATE(444)] = 27736, + [SMALL_STATE(445)] = 27806, [SMALL_STATE(446)] = 27864, [SMALL_STATE(447)] = 27922, [SMALL_STATE(448)] = 27980, [SMALL_STATE(449)] = 28038, [SMALL_STATE(450)] = 28096, [SMALL_STATE(451)] = 28154, - [SMALL_STATE(452)] = 28212, - [SMALL_STATE(453)] = 28282, - [SMALL_STATE(454)] = 28352, - [SMALL_STATE(455)] = 28410, - [SMALL_STATE(456)] = 28468, - [SMALL_STATE(457)] = 28526, - [SMALL_STATE(458)] = 28584, + [SMALL_STATE(452)] = 28216, + [SMALL_STATE(453)] = 28274, + [SMALL_STATE(454)] = 28332, + [SMALL_STATE(455)] = 28390, + [SMALL_STATE(456)] = 28448, + [SMALL_STATE(457)] = 28510, + [SMALL_STATE(458)] = 28572, [SMALL_STATE(459)] = 28642, [SMALL_STATE(460)] = 28700, [SMALL_STATE(461)] = 28758, - [SMALL_STATE(462)] = 28820, + [SMALL_STATE(462)] = 28816, [SMALL_STATE(463)] = 28878, [SMALL_STATE(464)] = 28936, [SMALL_STATE(465)] = 28994, - [SMALL_STATE(466)] = 29089, - [SMALL_STATE(467)] = 29182, - [SMALL_STATE(468)] = 29239, - [SMALL_STATE(469)] = 29300, - [SMALL_STATE(470)] = 29367, - [SMALL_STATE(471)] = 29430, - [SMALL_STATE(472)] = 29523, - [SMALL_STATE(473)] = 29580, - [SMALL_STATE(474)] = 29637, - [SMALL_STATE(475)] = 29698, - [SMALL_STATE(476)] = 29759, - [SMALL_STATE(477)] = 29820, - [SMALL_STATE(478)] = 29881, - [SMALL_STATE(479)] = 29942, - [SMALL_STATE(480)] = 29999, - [SMALL_STATE(481)] = 30060, - [SMALL_STATE(482)] = 30121, - [SMALL_STATE(483)] = 30182, - [SMALL_STATE(484)] = 30243, - [SMALL_STATE(485)] = 30304, - [SMALL_STATE(486)] = 30365, - [SMALL_STATE(487)] = 30426, - [SMALL_STATE(488)] = 30483, - [SMALL_STATE(489)] = 30544, + [SMALL_STATE(466)] = 29055, + [SMALL_STATE(467)] = 29116, + [SMALL_STATE(468)] = 29173, + [SMALL_STATE(469)] = 29234, + [SMALL_STATE(470)] = 29295, + [SMALL_STATE(471)] = 29352, + [SMALL_STATE(472)] = 29413, + [SMALL_STATE(473)] = 29474, + [SMALL_STATE(474)] = 29535, + [SMALL_STATE(475)] = 29596, + [SMALL_STATE(476)] = 29691, + [SMALL_STATE(477)] = 29784, + [SMALL_STATE(478)] = 29841, + [SMALL_STATE(479)] = 29934, + [SMALL_STATE(480)] = 29995, + [SMALL_STATE(481)] = 30052, + [SMALL_STATE(482)] = 30109, + [SMALL_STATE(483)] = 30172, + [SMALL_STATE(484)] = 30239, + [SMALL_STATE(485)] = 30300, + [SMALL_STATE(486)] = 30361, + [SMALL_STATE(487)] = 30418, + [SMALL_STATE(488)] = 30479, + [SMALL_STATE(489)] = 30540, [SMALL_STATE(490)] = 30601, [SMALL_STATE(491)] = 30662, [SMALL_STATE(492)] = 30723, [SMALL_STATE(493)] = 30779, [SMALL_STATE(494)] = 30835, - [SMALL_STATE(495)] = 30899, - [SMALL_STATE(496)] = 30991, - [SMALL_STATE(497)] = 31047, - [SMALL_STATE(498)] = 31103, - [SMALL_STATE(499)] = 31159, - [SMALL_STATE(500)] = 31223, - [SMALL_STATE(501)] = 31279, - [SMALL_STATE(502)] = 31371, - [SMALL_STATE(503)] = 31427, - [SMALL_STATE(504)] = 31483, - [SMALL_STATE(505)] = 31539, - [SMALL_STATE(506)] = 31595, - [SMALL_STATE(507)] = 31687, + [SMALL_STATE(495)] = 30927, + [SMALL_STATE(496)] = 30983, + [SMALL_STATE(497)] = 31039, + [SMALL_STATE(498)] = 31095, + [SMALL_STATE(499)] = 31151, + [SMALL_STATE(500)] = 31243, + [SMALL_STATE(501)] = 31335, + [SMALL_STATE(502)] = 31391, + [SMALL_STATE(503)] = 31447, + [SMALL_STATE(504)] = 31503, + [SMALL_STATE(505)] = 31559, + [SMALL_STATE(506)] = 31623, + [SMALL_STATE(507)] = 31679, [SMALL_STATE(508)] = 31743, - [SMALL_STATE(509)] = 31799, + [SMALL_STATE(509)] = 31835, [SMALL_STATE(510)] = 31891, - [SMALL_STATE(511)] = 31983, - [SMALL_STATE(512)] = 32039, + [SMALL_STATE(511)] = 31947, + [SMALL_STATE(512)] = 32003, [SMALL_STATE(513)] = 32095, [SMALL_STATE(514)] = 32187, [SMALL_STATE(515)] = 32242, - [SMALL_STATE(516)] = 32303, - [SMALL_STATE(517)] = 32358, - [SMALL_STATE(518)] = 32413, - [SMALL_STATE(519)] = 32468, - [SMALL_STATE(520)] = 32523, + [SMALL_STATE(516)] = 32297, + [SMALL_STATE(517)] = 32352, + [SMALL_STATE(518)] = 32407, + [SMALL_STATE(519)] = 32462, + [SMALL_STATE(520)] = 32517, [SMALL_STATE(521)] = 32578, - [SMALL_STATE(522)] = 32633, - [SMALL_STATE(523)] = 32688, - [SMALL_STATE(524)] = 32743, - [SMALL_STATE(525)] = 32804, - [SMALL_STATE(526)] = 32859, - [SMALL_STATE(527)] = 32914, - [SMALL_STATE(528)] = 33003, - [SMALL_STATE(529)] = 33058, - [SMALL_STATE(530)] = 33113, - [SMALL_STATE(531)] = 33168, - [SMALL_STATE(532)] = 33223, - [SMALL_STATE(533)] = 33278, - [SMALL_STATE(534)] = 33333, - [SMALL_STATE(535)] = 33388, - [SMALL_STATE(536)] = 33443, - [SMALL_STATE(537)] = 33498, - [SMALL_STATE(538)] = 33553, - [SMALL_STATE(539)] = 33608, - [SMALL_STATE(540)] = 33663, - [SMALL_STATE(541)] = 33718, - [SMALL_STATE(542)] = 33773, - [SMALL_STATE(543)] = 33828, - [SMALL_STATE(544)] = 33883, - [SMALL_STATE(545)] = 33938, - [SMALL_STATE(546)] = 33993, - [SMALL_STATE(547)] = 34048, - [SMALL_STATE(548)] = 34103, - [SMALL_STATE(549)] = 34158, - [SMALL_STATE(550)] = 34213, - [SMALL_STATE(551)] = 34268, - [SMALL_STATE(552)] = 34323, - [SMALL_STATE(553)] = 34378, - [SMALL_STATE(554)] = 34433, - [SMALL_STATE(555)] = 34488, - [SMALL_STATE(556)] = 34543, - [SMALL_STATE(557)] = 34598, - [SMALL_STATE(558)] = 34653, - [SMALL_STATE(559)] = 34708, - [SMALL_STATE(560)] = 34763, - [SMALL_STATE(561)] = 34818, - [SMALL_STATE(562)] = 34873, - [SMALL_STATE(563)] = 34928, - [SMALL_STATE(564)] = 34983, - [SMALL_STATE(565)] = 35038, - [SMALL_STATE(566)] = 35093, - [SMALL_STATE(567)] = 35148, - [SMALL_STATE(568)] = 35203, - [SMALL_STATE(569)] = 35258, - [SMALL_STATE(570)] = 35313, - [SMALL_STATE(571)] = 35368, - [SMALL_STATE(572)] = 35423, - [SMALL_STATE(573)] = 35478, - [SMALL_STATE(574)] = 35533, - [SMALL_STATE(575)] = 35588, - [SMALL_STATE(576)] = 35643, + [SMALL_STATE(522)] = 32667, + [SMALL_STATE(523)] = 32722, + [SMALL_STATE(524)] = 32777, + [SMALL_STATE(525)] = 32832, + [SMALL_STATE(526)] = 32887, + [SMALL_STATE(527)] = 32942, + [SMALL_STATE(528)] = 32997, + [SMALL_STATE(529)] = 33052, + [SMALL_STATE(530)] = 33107, + [SMALL_STATE(531)] = 33162, + [SMALL_STATE(532)] = 33217, + [SMALL_STATE(533)] = 33272, + [SMALL_STATE(534)] = 33327, + [SMALL_STATE(535)] = 33382, + [SMALL_STATE(536)] = 33437, + [SMALL_STATE(537)] = 33492, + [SMALL_STATE(538)] = 33547, + [SMALL_STATE(539)] = 33602, + [SMALL_STATE(540)] = 33657, + [SMALL_STATE(541)] = 33712, + [SMALL_STATE(542)] = 33767, + [SMALL_STATE(543)] = 33822, + [SMALL_STATE(544)] = 33877, + [SMALL_STATE(545)] = 33932, + [SMALL_STATE(546)] = 33987, + [SMALL_STATE(547)] = 34042, + [SMALL_STATE(548)] = 34097, + [SMALL_STATE(549)] = 34152, + [SMALL_STATE(550)] = 34207, + [SMALL_STATE(551)] = 34262, + [SMALL_STATE(552)] = 34317, + [SMALL_STATE(553)] = 34372, + [SMALL_STATE(554)] = 34427, + [SMALL_STATE(555)] = 34482, + [SMALL_STATE(556)] = 34537, + [SMALL_STATE(557)] = 34592, + [SMALL_STATE(558)] = 34647, + [SMALL_STATE(559)] = 34702, + [SMALL_STATE(560)] = 34757, + [SMALL_STATE(561)] = 34812, + [SMALL_STATE(562)] = 34867, + [SMALL_STATE(563)] = 34922, + [SMALL_STATE(564)] = 34977, + [SMALL_STATE(565)] = 35032, + [SMALL_STATE(566)] = 35087, + [SMALL_STATE(567)] = 35142, + [SMALL_STATE(568)] = 35197, + [SMALL_STATE(569)] = 35252, + [SMALL_STATE(570)] = 35307, + [SMALL_STATE(571)] = 35362, + [SMALL_STATE(572)] = 35417, + [SMALL_STATE(573)] = 35472, + [SMALL_STATE(574)] = 35527, + [SMALL_STATE(575)] = 35582, + [SMALL_STATE(576)] = 35637, [SMALL_STATE(577)] = 35698, [SMALL_STATE(578)] = 35753, [SMALL_STATE(579)] = 35808, @@ -82853,32 +82932,32 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(587)] = 36248, [SMALL_STATE(588)] = 36303, [SMALL_STATE(589)] = 36358, - [SMALL_STATE(590)] = 36447, - [SMALL_STATE(591)] = 36502, - [SMALL_STATE(592)] = 36557, - [SMALL_STATE(593)] = 36612, - [SMALL_STATE(594)] = 36667, - [SMALL_STATE(595)] = 36722, - [SMALL_STATE(596)] = 36777, - [SMALL_STATE(597)] = 36832, - [SMALL_STATE(598)] = 36887, - [SMALL_STATE(599)] = 36942, - [SMALL_STATE(600)] = 36997, - [SMALL_STATE(601)] = 37052, - [SMALL_STATE(602)] = 37107, - [SMALL_STATE(603)] = 37162, - [SMALL_STATE(604)] = 37217, - [SMALL_STATE(605)] = 37272, - [SMALL_STATE(606)] = 37327, - [SMALL_STATE(607)] = 37382, - [SMALL_STATE(608)] = 37437, - [SMALL_STATE(609)] = 37492, - [SMALL_STATE(610)] = 37547, - [SMALL_STATE(611)] = 37602, - [SMALL_STATE(612)] = 37657, - [SMALL_STATE(613)] = 37712, - [SMALL_STATE(614)] = 37767, - [SMALL_STATE(615)] = 37828, + [SMALL_STATE(590)] = 36413, + [SMALL_STATE(591)] = 36468, + [SMALL_STATE(592)] = 36523, + [SMALL_STATE(593)] = 36578, + [SMALL_STATE(594)] = 36633, + [SMALL_STATE(595)] = 36694, + [SMALL_STATE(596)] = 36749, + [SMALL_STATE(597)] = 36804, + [SMALL_STATE(598)] = 36859, + [SMALL_STATE(599)] = 36914, + [SMALL_STATE(600)] = 36969, + [SMALL_STATE(601)] = 37024, + [SMALL_STATE(602)] = 37079, + [SMALL_STATE(603)] = 37134, + [SMALL_STATE(604)] = 37189, + [SMALL_STATE(605)] = 37244, + [SMALL_STATE(606)] = 37299, + [SMALL_STATE(607)] = 37354, + [SMALL_STATE(608)] = 37409, + [SMALL_STATE(609)] = 37464, + [SMALL_STATE(610)] = 37519, + [SMALL_STATE(611)] = 37574, + [SMALL_STATE(612)] = 37629, + [SMALL_STATE(613)] = 37684, + [SMALL_STATE(614)] = 37739, + [SMALL_STATE(615)] = 37794, [SMALL_STATE(616)] = 37883, [SMALL_STATE(617)] = 37938, [SMALL_STATE(618)] = 38000, @@ -82893,71 +82972,71 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(627)] = 38681, [SMALL_STATE(628)] = 38735, [SMALL_STATE(629)] = 38809, - [SMALL_STATE(630)] = 38883, - [SMALL_STATE(631)] = 38957, - [SMALL_STATE(632)] = 39031, - [SMALL_STATE(633)] = 39109, - [SMALL_STATE(634)] = 39183, - [SMALL_STATE(635)] = 39257, - [SMALL_STATE(636)] = 39331, - [SMALL_STATE(637)] = 39405, - [SMALL_STATE(638)] = 39479, - [SMALL_STATE(639)] = 39553, - [SMALL_STATE(640)] = 39631, - [SMALL_STATE(641)] = 39705, - [SMALL_STATE(642)] = 39779, - [SMALL_STATE(643)] = 39853, - [SMALL_STATE(644)] = 39927, - [SMALL_STATE(645)] = 40001, - [SMALL_STATE(646)] = 40075, - [SMALL_STATE(647)] = 40149, - [SMALL_STATE(648)] = 40223, - [SMALL_STATE(649)] = 40297, - [SMALL_STATE(650)] = 40371, - [SMALL_STATE(651)] = 40445, - [SMALL_STATE(652)] = 40519, - [SMALL_STATE(653)] = 40593, - [SMALL_STATE(654)] = 40667, - [SMALL_STATE(655)] = 40741, - [SMALL_STATE(656)] = 40815, - [SMALL_STATE(657)] = 40889, - [SMALL_STATE(658)] = 40963, - [SMALL_STATE(659)] = 41037, - [SMALL_STATE(660)] = 41111, - [SMALL_STATE(661)] = 41185, - [SMALL_STATE(662)] = 41259, - [SMALL_STATE(663)] = 41333, - [SMALL_STATE(664)] = 41407, - [SMALL_STATE(665)] = 41481, - [SMALL_STATE(666)] = 41555, - [SMALL_STATE(667)] = 41629, - [SMALL_STATE(668)] = 41703, - [SMALL_STATE(669)] = 41777, - [SMALL_STATE(670)] = 41851, - [SMALL_STATE(671)] = 41925, - [SMALL_STATE(672)] = 41999, - [SMALL_STATE(673)] = 42073, - [SMALL_STATE(674)] = 42147, - [SMALL_STATE(675)] = 42221, - [SMALL_STATE(676)] = 42295, - [SMALL_STATE(677)] = 42369, - [SMALL_STATE(678)] = 42443, - [SMALL_STATE(679)] = 42517, - [SMALL_STATE(680)] = 42591, - [SMALL_STATE(681)] = 42665, - [SMALL_STATE(682)] = 42739, - [SMALL_STATE(683)] = 42813, - [SMALL_STATE(684)] = 42887, - [SMALL_STATE(685)] = 42961, - [SMALL_STATE(686)] = 43015, - [SMALL_STATE(687)] = 43089, - [SMALL_STATE(688)] = 43163, - [SMALL_STATE(689)] = 43237, - [SMALL_STATE(690)] = 43311, - [SMALL_STATE(691)] = 43365, - [SMALL_STATE(692)] = 43439, - [SMALL_STATE(693)] = 43513, - [SMALL_STATE(694)] = 43567, + [SMALL_STATE(630)] = 38887, + [SMALL_STATE(631)] = 38941, + [SMALL_STATE(632)] = 38995, + [SMALL_STATE(633)] = 39069, + [SMALL_STATE(634)] = 39143, + [SMALL_STATE(635)] = 39217, + [SMALL_STATE(636)] = 39291, + [SMALL_STATE(637)] = 39365, + [SMALL_STATE(638)] = 39439, + [SMALL_STATE(639)] = 39513, + [SMALL_STATE(640)] = 39587, + [SMALL_STATE(641)] = 39661, + [SMALL_STATE(642)] = 39735, + [SMALL_STATE(643)] = 39809, + [SMALL_STATE(644)] = 39883, + [SMALL_STATE(645)] = 39957, + [SMALL_STATE(646)] = 40031, + [SMALL_STATE(647)] = 40105, + [SMALL_STATE(648)] = 40179, + [SMALL_STATE(649)] = 40253, + [SMALL_STATE(650)] = 40327, + [SMALL_STATE(651)] = 40401, + [SMALL_STATE(652)] = 40475, + [SMALL_STATE(653)] = 40549, + [SMALL_STATE(654)] = 40623, + [SMALL_STATE(655)] = 40697, + [SMALL_STATE(656)] = 40771, + [SMALL_STATE(657)] = 40845, + [SMALL_STATE(658)] = 40919, + [SMALL_STATE(659)] = 40993, + [SMALL_STATE(660)] = 41067, + [SMALL_STATE(661)] = 41141, + [SMALL_STATE(662)] = 41215, + [SMALL_STATE(663)] = 41289, + [SMALL_STATE(664)] = 41367, + [SMALL_STATE(665)] = 41441, + [SMALL_STATE(666)] = 41515, + [SMALL_STATE(667)] = 41589, + [SMALL_STATE(668)] = 41663, + [SMALL_STATE(669)] = 41737, + [SMALL_STATE(670)] = 41811, + [SMALL_STATE(671)] = 41885, + [SMALL_STATE(672)] = 41959, + [SMALL_STATE(673)] = 42033, + [SMALL_STATE(674)] = 42107, + [SMALL_STATE(675)] = 42181, + [SMALL_STATE(676)] = 42235, + [SMALL_STATE(677)] = 42289, + [SMALL_STATE(678)] = 42363, + [SMALL_STATE(679)] = 42437, + [SMALL_STATE(680)] = 42511, + [SMALL_STATE(681)] = 42585, + [SMALL_STATE(682)] = 42659, + [SMALL_STATE(683)] = 42733, + [SMALL_STATE(684)] = 42807, + [SMALL_STATE(685)] = 42881, + [SMALL_STATE(686)] = 42955, + [SMALL_STATE(687)] = 43029, + [SMALL_STATE(688)] = 43103, + [SMALL_STATE(689)] = 43177, + [SMALL_STATE(690)] = 43251, + [SMALL_STATE(691)] = 43325, + [SMALL_STATE(692)] = 43399, + [SMALL_STATE(693)] = 43473, + [SMALL_STATE(694)] = 43547, [SMALL_STATE(695)] = 43621, [SMALL_STATE(696)] = 43695, [SMALL_STATE(697)] = 43769, @@ -82968,1056 +83047,1060 @@ static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(702)] = 44067, [SMALL_STATE(703)] = 44115, [SMALL_STATE(704)] = 44163, - [SMALL_STATE(705)] = 44244, - [SMALL_STATE(706)] = 44325, - [SMALL_STATE(707)] = 44372, - [SMALL_STATE(708)] = 44419, - [SMALL_STATE(709)] = 44466, - [SMALL_STATE(710)] = 44513, - [SMALL_STATE(711)] = 44560, - [SMALL_STATE(712)] = 44607, - [SMALL_STATE(713)] = 44654, - [SMALL_STATE(714)] = 44701, - [SMALL_STATE(715)] = 44748, - [SMALL_STATE(716)] = 44795, - [SMALL_STATE(717)] = 44842, - [SMALL_STATE(718)] = 44889, - [SMALL_STATE(719)] = 44936, - [SMALL_STATE(720)] = 44983, - [SMALL_STATE(721)] = 45030, - [SMALL_STATE(722)] = 45077, - [SMALL_STATE(723)] = 45124, - [SMALL_STATE(724)] = 45171, - [SMALL_STATE(725)] = 45218, - [SMALL_STATE(726)] = 45265, - [SMALL_STATE(727)] = 45312, - [SMALL_STATE(728)] = 45359, - [SMALL_STATE(729)] = 45406, - [SMALL_STATE(730)] = 45453, - [SMALL_STATE(731)] = 45500, - [SMALL_STATE(732)] = 45547, - [SMALL_STATE(733)] = 45594, - [SMALL_STATE(734)] = 45641, - [SMALL_STATE(735)] = 45688, + [SMALL_STATE(705)] = 44210, + [SMALL_STATE(706)] = 44257, + [SMALL_STATE(707)] = 44304, + [SMALL_STATE(708)] = 44351, + [SMALL_STATE(709)] = 44398, + [SMALL_STATE(710)] = 44445, + [SMALL_STATE(711)] = 44492, + [SMALL_STATE(712)] = 44539, + [SMALL_STATE(713)] = 44586, + [SMALL_STATE(714)] = 44633, + [SMALL_STATE(715)] = 44680, + [SMALL_STATE(716)] = 44727, + [SMALL_STATE(717)] = 44774, + [SMALL_STATE(718)] = 44821, + [SMALL_STATE(719)] = 44868, + [SMALL_STATE(720)] = 44915, + [SMALL_STATE(721)] = 44962, + [SMALL_STATE(722)] = 45009, + [SMALL_STATE(723)] = 45056, + [SMALL_STATE(724)] = 45103, + [SMALL_STATE(725)] = 45150, + [SMALL_STATE(726)] = 45197, + [SMALL_STATE(727)] = 45244, + [SMALL_STATE(728)] = 45291, + [SMALL_STATE(729)] = 45372, + [SMALL_STATE(730)] = 45419, + [SMALL_STATE(731)] = 45466, + [SMALL_STATE(732)] = 45513, + [SMALL_STATE(733)] = 45560, + [SMALL_STATE(734)] = 45607, + [SMALL_STATE(735)] = 45654, [SMALL_STATE(736)] = 45735, [SMALL_STATE(737)] = 45782, [SMALL_STATE(738)] = 45829, [SMALL_STATE(739)] = 45876, - [SMALL_STATE(740)] = 45944, - [SMALL_STATE(741)] = 46014, - [SMALL_STATE(742)] = 46084, - [SMALL_STATE(743)] = 46152, - [SMALL_STATE(744)] = 46212, - [SMALL_STATE(745)] = 46268, - [SMALL_STATE(746)] = 46334, - [SMALL_STATE(747)] = 46398, - [SMALL_STATE(748)] = 46454, - [SMALL_STATE(749)] = 46510, - [SMALL_STATE(750)] = 46560, - [SMALL_STATE(751)] = 46610, - [SMALL_STATE(752)] = 46666, - [SMALL_STATE(753)] = 46728, - [SMALL_STATE(754)] = 46778, - [SMALL_STATE(755)] = 46828, - [SMALL_STATE(756)] = 46884, - [SMALL_STATE(757)] = 46946, - [SMALL_STATE(758)] = 47016, - [SMALL_STATE(759)] = 47076, - [SMALL_STATE(760)] = 47132, - [SMALL_STATE(761)] = 47198, - [SMALL_STATE(762)] = 47262, - [SMALL_STATE(763)] = 47332, - [SMALL_STATE(764)] = 47402, - [SMALL_STATE(765)] = 47472, - [SMALL_STATE(766)] = 47528, + [SMALL_STATE(740)] = 45946, + [SMALL_STATE(741)] = 46016, + [SMALL_STATE(742)] = 46086, + [SMALL_STATE(743)] = 46142, + [SMALL_STATE(744)] = 46204, + [SMALL_STATE(745)] = 46274, + [SMALL_STATE(746)] = 46324, + [SMALL_STATE(747)] = 46380, + [SMALL_STATE(748)] = 46436, + [SMALL_STATE(749)] = 46504, + [SMALL_STATE(750)] = 46568, + [SMALL_STATE(751)] = 46624, + [SMALL_STATE(752)] = 46680, + [SMALL_STATE(753)] = 46742, + [SMALL_STATE(754)] = 46798, + [SMALL_STATE(755)] = 46864, + [SMALL_STATE(756)] = 46924, + [SMALL_STATE(757)] = 46992, + [SMALL_STATE(758)] = 47042, + [SMALL_STATE(759)] = 47098, + [SMALL_STATE(760)] = 47168, + [SMALL_STATE(761)] = 47238, + [SMALL_STATE(762)] = 47298, + [SMALL_STATE(763)] = 47348, + [SMALL_STATE(764)] = 47414, + [SMALL_STATE(765)] = 47470, + [SMALL_STATE(766)] = 47534, [SMALL_STATE(767)] = 47584, - [SMALL_STATE(768)] = 47629, - [SMALL_STATE(769)] = 47678, - [SMALL_STATE(770)] = 47727, - [SMALL_STATE(771)] = 47776, - [SMALL_STATE(772)] = 47825, - [SMALL_STATE(773)] = 47874, - [SMALL_STATE(774)] = 47953, - [SMALL_STATE(775)] = 48000, - [SMALL_STATE(776)] = 48077, - [SMALL_STATE(777)] = 48126, - [SMALL_STATE(778)] = 48175, + [SMALL_STATE(768)] = 47661, + [SMALL_STATE(769)] = 47706, + [SMALL_STATE(770)] = 47753, + [SMALL_STATE(771)] = 47832, + [SMALL_STATE(772)] = 47881, + [SMALL_STATE(773)] = 47930, + [SMALL_STATE(774)] = 47977, + [SMALL_STATE(775)] = 48026, + [SMALL_STATE(776)] = 48075, + [SMALL_STATE(777)] = 48124, + [SMALL_STATE(778)] = 48173, [SMALL_STATE(779)] = 48222, [SMALL_STATE(780)] = 48271, [SMALL_STATE(781)] = 48350, [SMALL_STATE(782)] = 48399, [SMALL_STATE(783)] = 48448, - [SMALL_STATE(784)] = 48493, - [SMALL_STATE(785)] = 48542, - [SMALL_STATE(786)] = 48591, - [SMALL_STATE(787)] = 48638, + [SMALL_STATE(784)] = 48497, + [SMALL_STATE(785)] = 48546, + [SMALL_STATE(786)] = 48593, + [SMALL_STATE(787)] = 48640, [SMALL_STATE(788)] = 48685, [SMALL_STATE(789)] = 48753, - [SMALL_STATE(790)] = 48829, - [SMALL_STATE(791)] = 48877, - [SMALL_STATE(792)] = 48925, - [SMALL_STATE(793)] = 48969, - [SMALL_STATE(794)] = 49013, - [SMALL_STATE(795)] = 49057, - [SMALL_STATE(796)] = 49101, - [SMALL_STATE(797)] = 49155, - [SMALL_STATE(798)] = 49215, - [SMALL_STATE(799)] = 49283, - [SMALL_STATE(800)] = 49337, - [SMALL_STATE(801)] = 49405, - [SMALL_STATE(802)] = 49471, - [SMALL_STATE(803)] = 49529, - [SMALL_STATE(804)] = 49583, - [SMALL_STATE(805)] = 49637, - [SMALL_STATE(806)] = 49691, - [SMALL_STATE(807)] = 49755, - [SMALL_STATE(808)] = 49817, - [SMALL_STATE(809)] = 49871, - [SMALL_STATE(810)] = 49931, - [SMALL_STATE(811)] = 49999, - [SMALL_STATE(812)] = 50065, - [SMALL_STATE(813)] = 50123, - [SMALL_STATE(814)] = 50177, - [SMALL_STATE(815)] = 50241, - [SMALL_STATE(816)] = 50303, - [SMALL_STATE(817)] = 50371, - [SMALL_STATE(818)] = 50439, - [SMALL_STATE(819)] = 50493, - [SMALL_STATE(820)] = 50547, - [SMALL_STATE(821)] = 50607, - [SMALL_STATE(822)] = 50675, - [SMALL_STATE(823)] = 50741, - [SMALL_STATE(824)] = 50799, - [SMALL_STATE(825)] = 50853, - [SMALL_STATE(826)] = 50917, - [SMALL_STATE(827)] = 50979, - [SMALL_STATE(828)] = 51047, - [SMALL_STATE(829)] = 51115, - [SMALL_STATE(830)] = 51169, - [SMALL_STATE(831)] = 51223, - [SMALL_STATE(832)] = 51268, - [SMALL_STATE(833)] = 51313, - [SMALL_STATE(834)] = 51366, - [SMALL_STATE(835)] = 51409, - [SMALL_STATE(836)] = 51454, - [SMALL_STATE(837)] = 51499, - [SMALL_STATE(838)] = 51544, - [SMALL_STATE(839)] = 51589, - [SMALL_STATE(840)] = 51642, - [SMALL_STATE(841)] = 51685, - [SMALL_STATE(842)] = 51766, - [SMALL_STATE(843)] = 51811, - [SMALL_STATE(844)] = 51854, - [SMALL_STATE(845)] = 51907, - [SMALL_STATE(846)] = 51966, - [SMALL_STATE(847)] = 52009, - [SMALL_STATE(848)] = 52052, - [SMALL_STATE(849)] = 52095, - [SMALL_STATE(850)] = 52142, - [SMALL_STATE(851)] = 52189, - [SMALL_STATE(852)] = 52234, - [SMALL_STATE(853)] = 52277, - [SMALL_STATE(854)] = 52320, - [SMALL_STATE(855)] = 52365, - [SMALL_STATE(856)] = 52410, - [SMALL_STATE(857)] = 52477, - [SMALL_STATE(858)] = 52524, - [SMALL_STATE(859)] = 52571, - [SMALL_STATE(860)] = 52618, - [SMALL_STATE(861)] = 52663, - [SMALL_STATE(862)] = 52744, - [SMALL_STATE(863)] = 52809, - [SMALL_STATE(864)] = 52866, - [SMALL_STATE(865)] = 52919, - [SMALL_STATE(866)] = 52982, - [SMALL_STATE(867)] = 53043, - [SMALL_STATE(868)] = 53110, - [SMALL_STATE(869)] = 53177, - [SMALL_STATE(870)] = 53258, - [SMALL_STATE(871)] = 53339, - [SMALL_STATE(872)] = 53384, - [SMALL_STATE(873)] = 53431, - [SMALL_STATE(874)] = 53473, - [SMALL_STATE(875)] = 53515, - [SMALL_STATE(876)] = 53557, - [SMALL_STATE(877)] = 53599, - [SMALL_STATE(878)] = 53641, - [SMALL_STATE(879)] = 53683, - [SMALL_STATE(880)] = 53725, - [SMALL_STATE(881)] = 53767, - [SMALL_STATE(882)] = 53809, - [SMALL_STATE(883)] = 53851, - [SMALL_STATE(884)] = 53893, - [SMALL_STATE(885)] = 53935, - [SMALL_STATE(886)] = 53977, - [SMALL_STATE(887)] = 54019, - [SMALL_STATE(888)] = 54061, - [SMALL_STATE(889)] = 54103, - [SMALL_STATE(890)] = 54145, - [SMALL_STATE(891)] = 54187, - [SMALL_STATE(892)] = 54229, - [SMALL_STATE(893)] = 54271, - [SMALL_STATE(894)] = 54313, - [SMALL_STATE(895)] = 54355, - [SMALL_STATE(896)] = 54397, - [SMALL_STATE(897)] = 54477, - [SMALL_STATE(898)] = 54555, - [SMALL_STATE(899)] = 54597, - [SMALL_STATE(900)] = 54639, - [SMALL_STATE(901)] = 54681, - [SMALL_STATE(902)] = 54723, - [SMALL_STATE(903)] = 54765, - [SMALL_STATE(904)] = 54807, - [SMALL_STATE(905)] = 54849, - [SMALL_STATE(906)] = 54891, - [SMALL_STATE(907)] = 54933, - [SMALL_STATE(908)] = 54977, - [SMALL_STATE(909)] = 55019, - [SMALL_STATE(910)] = 55061, - [SMALL_STATE(911)] = 55103, - [SMALL_STATE(912)] = 55145, - [SMALL_STATE(913)] = 55187, - [SMALL_STATE(914)] = 55231, - [SMALL_STATE(915)] = 55275, - [SMALL_STATE(916)] = 55317, - [SMALL_STATE(917)] = 55359, - [SMALL_STATE(918)] = 55403, - [SMALL_STATE(919)] = 55445, - [SMALL_STATE(920)] = 55487, - [SMALL_STATE(921)] = 55529, - [SMALL_STATE(922)] = 55571, - [SMALL_STATE(923)] = 55613, - [SMALL_STATE(924)] = 55655, - [SMALL_STATE(925)] = 55699, - [SMALL_STATE(926)] = 55741, - [SMALL_STATE(927)] = 55783, - [SMALL_STATE(928)] = 55825, - [SMALL_STATE(929)] = 55867, - [SMALL_STATE(930)] = 55909, - [SMALL_STATE(931)] = 55951, - [SMALL_STATE(932)] = 56029, - [SMALL_STATE(933)] = 56071, - [SMALL_STATE(934)] = 56113, - [SMALL_STATE(935)] = 56191, - [SMALL_STATE(936)] = 56269, - [SMALL_STATE(937)] = 56311, - [SMALL_STATE(938)] = 56353, - [SMALL_STATE(939)] = 56395, - [SMALL_STATE(940)] = 56473, - [SMALL_STATE(941)] = 56515, - [SMALL_STATE(942)] = 56557, - [SMALL_STATE(943)] = 56599, - [SMALL_STATE(944)] = 56641, - [SMALL_STATE(945)] = 56683, - [SMALL_STATE(946)] = 56725, - [SMALL_STATE(947)] = 56767, - [SMALL_STATE(948)] = 56809, - [SMALL_STATE(949)] = 56851, - [SMALL_STATE(950)] = 56893, - [SMALL_STATE(951)] = 56935, - [SMALL_STATE(952)] = 56977, - [SMALL_STATE(953)] = 57018, - [SMALL_STATE(954)] = 57059, - [SMALL_STATE(955)] = 57100, - [SMALL_STATE(956)] = 57141, - [SMALL_STATE(957)] = 57182, - [SMALL_STATE(958)] = 57223, - [SMALL_STATE(959)] = 57264, - [SMALL_STATE(960)] = 57305, - [SMALL_STATE(961)] = 57346, - [SMALL_STATE(962)] = 57387, - [SMALL_STATE(963)] = 57428, - [SMALL_STATE(964)] = 57469, - [SMALL_STATE(965)] = 57510, - [SMALL_STATE(966)] = 57551, - [SMALL_STATE(967)] = 57592, - [SMALL_STATE(968)] = 57633, - [SMALL_STATE(969)] = 57674, - [SMALL_STATE(970)] = 57715, - [SMALL_STATE(971)] = 57756, - [SMALL_STATE(972)] = 57797, - [SMALL_STATE(973)] = 57838, - [SMALL_STATE(974)] = 57879, - [SMALL_STATE(975)] = 57920, - [SMALL_STATE(976)] = 57961, - [SMALL_STATE(977)] = 58002, - [SMALL_STATE(978)] = 58043, - [SMALL_STATE(979)] = 58084, - [SMALL_STATE(980)] = 58125, - [SMALL_STATE(981)] = 58166, - [SMALL_STATE(982)] = 58241, - [SMALL_STATE(983)] = 58320, - [SMALL_STATE(984)] = 58399, - [SMALL_STATE(985)] = 58444, - [SMALL_STATE(986)] = 58485, - [SMALL_STATE(987)] = 58530, - [SMALL_STATE(988)] = 58609, - [SMALL_STATE(989)] = 58650, - [SMALL_STATE(990)] = 58691, - [SMALL_STATE(991)] = 58732, - [SMALL_STATE(992)] = 58805, - [SMALL_STATE(993)] = 58875, - [SMALL_STATE(994)] = 58945, - [SMALL_STATE(995)] = 59007, - [SMALL_STATE(996)] = 59069, - [SMALL_STATE(997)] = 59108, - [SMALL_STATE(998)] = 59147, - [SMALL_STATE(999)] = 59186, - [SMALL_STATE(1000)] = 59225, - [SMALL_STATE(1001)] = 59255, - [SMALL_STATE(1002)] = 59292, - [SMALL_STATE(1003)] = 59317, - [SMALL_STATE(1004)] = 59354, - [SMALL_STATE(1005)] = 59391, - [SMALL_STATE(1006)] = 59416, - [SMALL_STATE(1007)] = 59469, - [SMALL_STATE(1008)] = 59522, - [SMALL_STATE(1009)] = 59559, - [SMALL_STATE(1010)] = 59584, - [SMALL_STATE(1011)] = 59637, - [SMALL_STATE(1012)] = 59666, - [SMALL_STATE(1013)] = 59691, - [SMALL_STATE(1014)] = 59720, - [SMALL_STATE(1015)] = 59755, - [SMALL_STATE(1016)] = 59790, - [SMALL_STATE(1017)] = 59824, - [SMALL_STATE(1018)] = 59870, - [SMALL_STATE(1019)] = 59898, - [SMALL_STATE(1020)] = 59932, - [SMALL_STATE(1021)] = 59963, - [SMALL_STATE(1022)] = 60006, - [SMALL_STATE(1023)] = 60049, - [SMALL_STATE(1024)] = 60092, - [SMALL_STATE(1025)] = 60135, - [SMALL_STATE(1026)] = 60178, - [SMALL_STATE(1027)] = 60221, - [SMALL_STATE(1028)] = 60264, - [SMALL_STATE(1029)] = 60304, - [SMALL_STATE(1030)] = 60348, - [SMALL_STATE(1031)] = 60373, - [SMALL_STATE(1032)] = 60410, - [SMALL_STATE(1033)] = 60447, - [SMALL_STATE(1034)] = 60484, - [SMALL_STATE(1035)] = 60521, - [SMALL_STATE(1036)] = 60555, - [SMALL_STATE(1037)] = 60589, - [SMALL_STATE(1038)] = 60610, - [SMALL_STATE(1039)] = 60631, - [SMALL_STATE(1040)] = 60653, - [SMALL_STATE(1041)] = 60684, - [SMALL_STATE(1042)] = 60721, - [SMALL_STATE(1043)] = 60744, - [SMALL_STATE(1044)] = 60765, - [SMALL_STATE(1045)] = 60796, - [SMALL_STATE(1046)] = 60827, - [SMALL_STATE(1047)] = 60858, - [SMALL_STATE(1048)] = 60895, - [SMALL_STATE(1049)] = 60932, - [SMALL_STATE(1050)] = 60963, - [SMALL_STATE(1051)] = 60994, - [SMALL_STATE(1052)] = 61025, - [SMALL_STATE(1053)] = 61056, - [SMALL_STATE(1054)] = 61073, - [SMALL_STATE(1055)] = 61104, - [SMALL_STATE(1056)] = 61135, - [SMALL_STATE(1057)] = 61166, - [SMALL_STATE(1058)] = 61197, - [SMALL_STATE(1059)] = 61228, - [SMALL_STATE(1060)] = 61259, - [SMALL_STATE(1061)] = 61290, - [SMALL_STATE(1062)] = 61321, - [SMALL_STATE(1063)] = 61352, - [SMALL_STATE(1064)] = 61389, - [SMALL_STATE(1065)] = 61412, - [SMALL_STATE(1066)] = 61443, - [SMALL_STATE(1067)] = 61474, - [SMALL_STATE(1068)] = 61511, - [SMALL_STATE(1069)] = 61532, - [SMALL_STATE(1070)] = 61552, - [SMALL_STATE(1071)] = 61586, - [SMALL_STATE(1072)] = 61606, - [SMALL_STATE(1073)] = 61630, - [SMALL_STATE(1074)] = 61652, - [SMALL_STATE(1075)] = 61686, - [SMALL_STATE(1076)] = 61720, - [SMALL_STATE(1077)] = 61742, - [SMALL_STATE(1078)] = 61766, - [SMALL_STATE(1079)] = 61784, - [SMALL_STATE(1080)] = 61802, - [SMALL_STATE(1081)] = 61836, - [SMALL_STATE(1082)] = 61856, - [SMALL_STATE(1083)] = 61880, - [SMALL_STATE(1084)] = 61902, - [SMALL_STATE(1085)] = 61936, - [SMALL_STATE(1086)] = 61958, - [SMALL_STATE(1087)] = 61992, - [SMALL_STATE(1088)] = 62026, - [SMALL_STATE(1089)] = 62046, - [SMALL_STATE(1090)] = 62068, - [SMALL_STATE(1091)] = 62102, - [SMALL_STATE(1092)] = 62124, - [SMALL_STATE(1093)] = 62158, - [SMALL_STATE(1094)] = 62192, - [SMALL_STATE(1095)] = 62226, - [SMALL_STATE(1096)] = 62260, - [SMALL_STATE(1097)] = 62278, - [SMALL_STATE(1098)] = 62297, - [SMALL_STATE(1099)] = 62318, - [SMALL_STATE(1100)] = 62337, - [SMALL_STATE(1101)] = 62360, - [SMALL_STATE(1102)] = 62379, - [SMALL_STATE(1103)] = 62398, - [SMALL_STATE(1104)] = 62423, - [SMALL_STATE(1105)] = 62442, - [SMALL_STATE(1106)] = 62461, - [SMALL_STATE(1107)] = 62484, - [SMALL_STATE(1108)] = 62509, - [SMALL_STATE(1109)] = 62532, - [SMALL_STATE(1110)] = 62553, - [SMALL_STATE(1111)] = 62567, - [SMALL_STATE(1112)] = 62581, - [SMALL_STATE(1113)] = 62599, - [SMALL_STATE(1114)] = 62617, - [SMALL_STATE(1115)] = 62631, - [SMALL_STATE(1116)] = 62649, - [SMALL_STATE(1117)] = 62663, - [SMALL_STATE(1118)] = 62679, - [SMALL_STATE(1119)] = 62699, - [SMALL_STATE(1120)] = 62721, - [SMALL_STATE(1121)] = 62741, - [SMALL_STATE(1122)] = 62761, - [SMALL_STATE(1123)] = 62779, - [SMALL_STATE(1124)] = 62797, - [SMALL_STATE(1125)] = 62811, - [SMALL_STATE(1126)] = 62831, - [SMALL_STATE(1127)] = 62845, - [SMALL_STATE(1128)] = 62859, - [SMALL_STATE(1129)] = 62873, - [SMALL_STATE(1130)] = 62887, - [SMALL_STATE(1131)] = 62901, - [SMALL_STATE(1132)] = 62915, - [SMALL_STATE(1133)] = 62929, - [SMALL_STATE(1134)] = 62943, - [SMALL_STATE(1135)] = 62957, - [SMALL_STATE(1136)] = 62975, - [SMALL_STATE(1137)] = 62989, - [SMALL_STATE(1138)] = 63015, - [SMALL_STATE(1139)] = 63029, - [SMALL_STATE(1140)] = 63049, - [SMALL_STATE(1141)] = 63063, - [SMALL_STATE(1142)] = 63077, - [SMALL_STATE(1143)] = 63091, - [SMALL_STATE(1144)] = 63105, - [SMALL_STATE(1145)] = 63125, - [SMALL_STATE(1146)] = 63139, - [SMALL_STATE(1147)] = 63163, - [SMALL_STATE(1148)] = 63179, - [SMALL_STATE(1149)] = 63193, - [SMALL_STATE(1150)] = 63215, - [SMALL_STATE(1151)] = 63229, - [SMALL_STATE(1152)] = 63243, - [SMALL_STATE(1153)] = 63261, - [SMALL_STATE(1154)] = 63279, - [SMALL_STATE(1155)] = 63299, - [SMALL_STATE(1156)] = 63317, - [SMALL_STATE(1157)] = 63333, - [SMALL_STATE(1158)] = 63351, - [SMALL_STATE(1159)] = 63365, - [SMALL_STATE(1160)] = 63385, - [SMALL_STATE(1161)] = 63407, - [SMALL_STATE(1162)] = 63427, - [SMALL_STATE(1163)] = 63447, - [SMALL_STATE(1164)] = 63467, - [SMALL_STATE(1165)] = 63485, - [SMALL_STATE(1166)] = 63501, - [SMALL_STATE(1167)] = 63521, - [SMALL_STATE(1168)] = 63539, - [SMALL_STATE(1169)] = 63559, - [SMALL_STATE(1170)] = 63579, - [SMALL_STATE(1171)] = 63599, - [SMALL_STATE(1172)] = 63617, - [SMALL_STATE(1173)] = 63641, - [SMALL_STATE(1174)] = 63659, - [SMALL_STATE(1175)] = 63677, - [SMALL_STATE(1176)] = 63701, - [SMALL_STATE(1177)] = 63715, - [SMALL_STATE(1178)] = 63740, - [SMALL_STATE(1179)] = 63753, - [SMALL_STATE(1180)] = 63772, - [SMALL_STATE(1181)] = 63797, - [SMALL_STATE(1182)] = 63820, - [SMALL_STATE(1183)] = 63839, - [SMALL_STATE(1184)] = 63860, - [SMALL_STATE(1185)] = 63885, - [SMALL_STATE(1186)] = 63910, - [SMALL_STATE(1187)] = 63935, - [SMALL_STATE(1188)] = 63960, - [SMALL_STATE(1189)] = 63979, - [SMALL_STATE(1190)] = 63996, - [SMALL_STATE(1191)] = 64011, - [SMALL_STATE(1192)] = 64034, - [SMALL_STATE(1193)] = 64055, - [SMALL_STATE(1194)] = 64080, - [SMALL_STATE(1195)] = 64105, - [SMALL_STATE(1196)] = 64126, - [SMALL_STATE(1197)] = 64151, - [SMALL_STATE(1198)] = 64170, - [SMALL_STATE(1199)] = 64183, - [SMALL_STATE(1200)] = 64202, - [SMALL_STATE(1201)] = 64221, - [SMALL_STATE(1202)] = 64238, - [SMALL_STATE(1203)] = 64263, - [SMALL_STATE(1204)] = 64288, - [SMALL_STATE(1205)] = 64313, - [SMALL_STATE(1206)] = 64326, - [SMALL_STATE(1207)] = 64351, - [SMALL_STATE(1208)] = 64376, - [SMALL_STATE(1209)] = 64401, - [SMALL_STATE(1210)] = 64426, - [SMALL_STATE(1211)] = 64449, - [SMALL_STATE(1212)] = 64474, - [SMALL_STATE(1213)] = 64499, - [SMALL_STATE(1214)] = 64522, - [SMALL_STATE(1215)] = 64539, - [SMALL_STATE(1216)] = 64560, - [SMALL_STATE(1217)] = 64581, - [SMALL_STATE(1218)] = 64606, - [SMALL_STATE(1219)] = 64631, - [SMALL_STATE(1220)] = 64650, - [SMALL_STATE(1221)] = 64669, - [SMALL_STATE(1222)] = 64688, - [SMALL_STATE(1223)] = 64701, - [SMALL_STATE(1224)] = 64724, - [SMALL_STATE(1225)] = 64743, - [SMALL_STATE(1226)] = 64766, - [SMALL_STATE(1227)] = 64791, - [SMALL_STATE(1228)] = 64816, - [SMALL_STATE(1229)] = 64841, - [SMALL_STATE(1230)] = 64866, - [SMALL_STATE(1231)] = 64891, - [SMALL_STATE(1232)] = 64910, - [SMALL_STATE(1233)] = 64935, - [SMALL_STATE(1234)] = 64948, - [SMALL_STATE(1235)] = 64967, - [SMALL_STATE(1236)] = 64990, - [SMALL_STATE(1237)] = 65015, - [SMALL_STATE(1238)] = 65028, - [SMALL_STATE(1239)] = 65047, - [SMALL_STATE(1240)] = 65070, - [SMALL_STATE(1241)] = 65085, - [SMALL_STATE(1242)] = 65108, - [SMALL_STATE(1243)] = 65124, - [SMALL_STATE(1244)] = 65140, - [SMALL_STATE(1245)] = 65160, - [SMALL_STATE(1246)] = 65176, - [SMALL_STATE(1247)] = 65196, - [SMALL_STATE(1248)] = 65214, - [SMALL_STATE(1249)] = 65228, - [SMALL_STATE(1250)] = 65244, - [SMALL_STATE(1251)] = 65266, - [SMALL_STATE(1252)] = 65282, - [SMALL_STATE(1253)] = 65296, - [SMALL_STATE(1254)] = 65318, - [SMALL_STATE(1255)] = 65338, - [SMALL_STATE(1256)] = 65356, - [SMALL_STATE(1257)] = 65372, - [SMALL_STATE(1258)] = 65388, - [SMALL_STATE(1259)] = 65410, - [SMALL_STATE(1260)] = 65424, - [SMALL_STATE(1261)] = 65438, - [SMALL_STATE(1262)] = 65456, - [SMALL_STATE(1263)] = 65472, - [SMALL_STATE(1264)] = 65484, - [SMALL_STATE(1265)] = 65504, - [SMALL_STATE(1266)] = 65526, - [SMALL_STATE(1267)] = 65544, - [SMALL_STATE(1268)] = 65562, - [SMALL_STATE(1269)] = 65580, - [SMALL_STATE(1270)] = 65600, - [SMALL_STATE(1271)] = 65616, - [SMALL_STATE(1272)] = 65634, - [SMALL_STATE(1273)] = 65650, - [SMALL_STATE(1274)] = 65666, - [SMALL_STATE(1275)] = 65682, - [SMALL_STATE(1276)] = 65696, - [SMALL_STATE(1277)] = 65718, - [SMALL_STATE(1278)] = 65740, - [SMALL_STATE(1279)] = 65758, - [SMALL_STATE(1280)] = 65780, - [SMALL_STATE(1281)] = 65796, - [SMALL_STATE(1282)] = 65810, - [SMALL_STATE(1283)] = 65822, - [SMALL_STATE(1284)] = 65839, - [SMALL_STATE(1285)] = 65856, - [SMALL_STATE(1286)] = 65875, - [SMALL_STATE(1287)] = 65890, - [SMALL_STATE(1288)] = 65909, - [SMALL_STATE(1289)] = 65924, - [SMALL_STATE(1290)] = 65943, - [SMALL_STATE(1291)] = 65960, - [SMALL_STATE(1292)] = 65971, - [SMALL_STATE(1293)] = 65988, - [SMALL_STATE(1294)] = 65999, - [SMALL_STATE(1295)] = 66014, - [SMALL_STATE(1296)] = 66031, - [SMALL_STATE(1297)] = 66050, - [SMALL_STATE(1298)] = 66067, - [SMALL_STATE(1299)] = 66084, - [SMALL_STATE(1300)] = 66099, - [SMALL_STATE(1301)] = 66116, - [SMALL_STATE(1302)] = 66127, - [SMALL_STATE(1303)] = 66144, - [SMALL_STATE(1304)] = 66161, - [SMALL_STATE(1305)] = 66178, - [SMALL_STATE(1306)] = 66197, - [SMALL_STATE(1307)] = 66216, - [SMALL_STATE(1308)] = 66227, - [SMALL_STATE(1309)] = 66242, - [SMALL_STATE(1310)] = 66257, - [SMALL_STATE(1311)] = 66272, - [SMALL_STATE(1312)] = 66287, - [SMALL_STATE(1313)] = 66298, - [SMALL_STATE(1314)] = 66315, - [SMALL_STATE(1315)] = 66334, - [SMALL_STATE(1316)] = 66353, - [SMALL_STATE(1317)] = 66370, - [SMALL_STATE(1318)] = 66387, - [SMALL_STATE(1319)] = 66404, - [SMALL_STATE(1320)] = 66421, - [SMALL_STATE(1321)] = 66438, - [SMALL_STATE(1322)] = 66455, - [SMALL_STATE(1323)] = 66471, - [SMALL_STATE(1324)] = 66485, - [SMALL_STATE(1325)] = 66499, - [SMALL_STATE(1326)] = 66515, - [SMALL_STATE(1327)] = 66531, - [SMALL_STATE(1328)] = 66545, - [SMALL_STATE(1329)] = 66561, - [SMALL_STATE(1330)] = 66573, - [SMALL_STATE(1331)] = 66589, - [SMALL_STATE(1332)] = 66605, - [SMALL_STATE(1333)] = 66619, - [SMALL_STATE(1334)] = 66631, - [SMALL_STATE(1335)] = 66645, - [SMALL_STATE(1336)] = 66659, - [SMALL_STATE(1337)] = 66673, - [SMALL_STATE(1338)] = 66689, - [SMALL_STATE(1339)] = 66705, - [SMALL_STATE(1340)] = 66719, - [SMALL_STATE(1341)] = 66733, - [SMALL_STATE(1342)] = 66749, - [SMALL_STATE(1343)] = 66765, - [SMALL_STATE(1344)] = 66779, - [SMALL_STATE(1345)] = 66789, - [SMALL_STATE(1346)] = 66805, - [SMALL_STATE(1347)] = 66821, - [SMALL_STATE(1348)] = 66837, - [SMALL_STATE(1349)] = 66851, - [SMALL_STATE(1350)] = 66861, - [SMALL_STATE(1351)] = 66877, - [SMALL_STATE(1352)] = 66893, - [SMALL_STATE(1353)] = 66907, - [SMALL_STATE(1354)] = 66923, - [SMALL_STATE(1355)] = 66933, - [SMALL_STATE(1356)] = 66947, - [SMALL_STATE(1357)] = 66963, - [SMALL_STATE(1358)] = 66979, - [SMALL_STATE(1359)] = 66989, - [SMALL_STATE(1360)] = 67005, - [SMALL_STATE(1361)] = 67019, - [SMALL_STATE(1362)] = 67035, - [SMALL_STATE(1363)] = 67051, - [SMALL_STATE(1364)] = 67067, - [SMALL_STATE(1365)] = 67081, - [SMALL_STATE(1366)] = 67097, - [SMALL_STATE(1367)] = 67111, - [SMALL_STATE(1368)] = 67127, - [SMALL_STATE(1369)] = 67141, - [SMALL_STATE(1370)] = 67155, - [SMALL_STATE(1371)] = 67171, - [SMALL_STATE(1372)] = 67187, - [SMALL_STATE(1373)] = 67201, - [SMALL_STATE(1374)] = 67215, - [SMALL_STATE(1375)] = 67229, - [SMALL_STATE(1376)] = 67243, - [SMALL_STATE(1377)] = 67259, - [SMALL_STATE(1378)] = 67275, - [SMALL_STATE(1379)] = 67291, - [SMALL_STATE(1380)] = 67305, - [SMALL_STATE(1381)] = 67319, - [SMALL_STATE(1382)] = 67335, - [SMALL_STATE(1383)] = 67349, - [SMALL_STATE(1384)] = 67363, - [SMALL_STATE(1385)] = 67379, - [SMALL_STATE(1386)] = 67395, - [SMALL_STATE(1387)] = 67411, - [SMALL_STATE(1388)] = 67427, - [SMALL_STATE(1389)] = 67441, - [SMALL_STATE(1390)] = 67455, - [SMALL_STATE(1391)] = 67469, - [SMALL_STATE(1392)] = 67479, - [SMALL_STATE(1393)] = 67493, - [SMALL_STATE(1394)] = 67503, - [SMALL_STATE(1395)] = 67517, - [SMALL_STATE(1396)] = 67533, - [SMALL_STATE(1397)] = 67549, - [SMALL_STATE(1398)] = 67565, - [SMALL_STATE(1399)] = 67581, - [SMALL_STATE(1400)] = 67597, - [SMALL_STATE(1401)] = 67611, - [SMALL_STATE(1402)] = 67625, - [SMALL_STATE(1403)] = 67641, - [SMALL_STATE(1404)] = 67657, - [SMALL_STATE(1405)] = 67671, - [SMALL_STATE(1406)] = 67684, - [SMALL_STATE(1407)] = 67697, - [SMALL_STATE(1408)] = 67710, - [SMALL_STATE(1409)] = 67721, - [SMALL_STATE(1410)] = 67734, - [SMALL_STATE(1411)] = 67743, - [SMALL_STATE(1412)] = 67754, - [SMALL_STATE(1413)] = 67767, - [SMALL_STATE(1414)] = 67780, - [SMALL_STATE(1415)] = 67793, - [SMALL_STATE(1416)] = 67806, - [SMALL_STATE(1417)] = 67819, - [SMALL_STATE(1418)] = 67828, - [SMALL_STATE(1419)] = 67841, - [SMALL_STATE(1420)] = 67854, - [SMALL_STATE(1421)] = 67867, - [SMALL_STATE(1422)] = 67880, - [SMALL_STATE(1423)] = 67889, - [SMALL_STATE(1424)] = 67902, - [SMALL_STATE(1425)] = 67915, - [SMALL_STATE(1426)] = 67924, - [SMALL_STATE(1427)] = 67937, - [SMALL_STATE(1428)] = 67950, - [SMALL_STATE(1429)] = 67959, - [SMALL_STATE(1430)] = 67972, - [SMALL_STATE(1431)] = 67985, - [SMALL_STATE(1432)] = 67996, - [SMALL_STATE(1433)] = 68009, - [SMALL_STATE(1434)] = 68022, - [SMALL_STATE(1435)] = 68035, - [SMALL_STATE(1436)] = 68048, - [SMALL_STATE(1437)] = 68059, - [SMALL_STATE(1438)] = 68068, - [SMALL_STATE(1439)] = 68079, - [SMALL_STATE(1440)] = 68092, - [SMALL_STATE(1441)] = 68105, - [SMALL_STATE(1442)] = 68118, - [SMALL_STATE(1443)] = 68127, - [SMALL_STATE(1444)] = 68140, - [SMALL_STATE(1445)] = 68153, - [SMALL_STATE(1446)] = 68166, - [SMALL_STATE(1447)] = 68177, - [SMALL_STATE(1448)] = 68190, - [SMALL_STATE(1449)] = 68203, - [SMALL_STATE(1450)] = 68216, - [SMALL_STATE(1451)] = 68229, - [SMALL_STATE(1452)] = 68242, - [SMALL_STATE(1453)] = 68255, - [SMALL_STATE(1454)] = 68268, - [SMALL_STATE(1455)] = 68281, - [SMALL_STATE(1456)] = 68294, - [SMALL_STATE(1457)] = 68307, - [SMALL_STATE(1458)] = 68320, - [SMALL_STATE(1459)] = 68333, - [SMALL_STATE(1460)] = 68346, - [SMALL_STATE(1461)] = 68359, - [SMALL_STATE(1462)] = 68372, - [SMALL_STATE(1463)] = 68385, - [SMALL_STATE(1464)] = 68396, - [SMALL_STATE(1465)] = 68409, - [SMALL_STATE(1466)] = 68422, - [SMALL_STATE(1467)] = 68435, - [SMALL_STATE(1468)] = 68448, - [SMALL_STATE(1469)] = 68461, - [SMALL_STATE(1470)] = 68474, - [SMALL_STATE(1471)] = 68487, - [SMALL_STATE(1472)] = 68500, - [SMALL_STATE(1473)] = 68513, - [SMALL_STATE(1474)] = 68526, - [SMALL_STATE(1475)] = 68539, - [SMALL_STATE(1476)] = 68552, - [SMALL_STATE(1477)] = 68565, - [SMALL_STATE(1478)] = 68578, - [SMALL_STATE(1479)] = 68591, - [SMALL_STATE(1480)] = 68604, - [SMALL_STATE(1481)] = 68617, - [SMALL_STATE(1482)] = 68630, - [SMALL_STATE(1483)] = 68643, - [SMALL_STATE(1484)] = 68656, - [SMALL_STATE(1485)] = 68669, - [SMALL_STATE(1486)] = 68678, - [SMALL_STATE(1487)] = 68691, - [SMALL_STATE(1488)] = 68704, - [SMALL_STATE(1489)] = 68717, - [SMALL_STATE(1490)] = 68730, - [SMALL_STATE(1491)] = 68743, - [SMALL_STATE(1492)] = 68756, - [SMALL_STATE(1493)] = 68769, - [SMALL_STATE(1494)] = 68782, - [SMALL_STATE(1495)] = 68791, - [SMALL_STATE(1496)] = 68804, - [SMALL_STATE(1497)] = 68817, - [SMALL_STATE(1498)] = 68830, - [SMALL_STATE(1499)] = 68843, - [SMALL_STATE(1500)] = 68854, - [SMALL_STATE(1501)] = 68867, - [SMALL_STATE(1502)] = 68880, - [SMALL_STATE(1503)] = 68893, - [SMALL_STATE(1504)] = 68906, - [SMALL_STATE(1505)] = 68919, - [SMALL_STATE(1506)] = 68932, - [SMALL_STATE(1507)] = 68945, - [SMALL_STATE(1508)] = 68956, - [SMALL_STATE(1509)] = 68967, - [SMALL_STATE(1510)] = 68976, - [SMALL_STATE(1511)] = 68985, - [SMALL_STATE(1512)] = 68998, - [SMALL_STATE(1513)] = 69007, - [SMALL_STATE(1514)] = 69020, - [SMALL_STATE(1515)] = 69033, - [SMALL_STATE(1516)] = 69046, - [SMALL_STATE(1517)] = 69057, - [SMALL_STATE(1518)] = 69068, - [SMALL_STATE(1519)] = 69081, - [SMALL_STATE(1520)] = 69094, - [SMALL_STATE(1521)] = 69107, - [SMALL_STATE(1522)] = 69120, - [SMALL_STATE(1523)] = 69129, - [SMALL_STATE(1524)] = 69142, - [SMALL_STATE(1525)] = 69151, - [SMALL_STATE(1526)] = 69164, - [SMALL_STATE(1527)] = 69177, - [SMALL_STATE(1528)] = 69190, - [SMALL_STATE(1529)] = 69203, - [SMALL_STATE(1530)] = 69212, - [SMALL_STATE(1531)] = 69225, - [SMALL_STATE(1532)] = 69238, - [SMALL_STATE(1533)] = 69251, - [SMALL_STATE(1534)] = 69259, - [SMALL_STATE(1535)] = 69267, - [SMALL_STATE(1536)] = 69275, - [SMALL_STATE(1537)] = 69283, - [SMALL_STATE(1538)] = 69293, - [SMALL_STATE(1539)] = 69303, - [SMALL_STATE(1540)] = 69311, - [SMALL_STATE(1541)] = 69319, - [SMALL_STATE(1542)] = 69329, - [SMALL_STATE(1543)] = 69337, - [SMALL_STATE(1544)] = 69347, - [SMALL_STATE(1545)] = 69357, - [SMALL_STATE(1546)] = 69365, - [SMALL_STATE(1547)] = 69375, - [SMALL_STATE(1548)] = 69385, - [SMALL_STATE(1549)] = 69395, - [SMALL_STATE(1550)] = 69403, - [SMALL_STATE(1551)] = 69411, - [SMALL_STATE(1552)] = 69421, - [SMALL_STATE(1553)] = 69429, - [SMALL_STATE(1554)] = 69439, - [SMALL_STATE(1555)] = 69447, - [SMALL_STATE(1556)] = 69457, - [SMALL_STATE(1557)] = 69467, - [SMALL_STATE(1558)] = 69475, - [SMALL_STATE(1559)] = 69483, - [SMALL_STATE(1560)] = 69491, - [SMALL_STATE(1561)] = 69501, - [SMALL_STATE(1562)] = 69509, - [SMALL_STATE(1563)] = 69517, - [SMALL_STATE(1564)] = 69525, - [SMALL_STATE(1565)] = 69535, - [SMALL_STATE(1566)] = 69543, - [SMALL_STATE(1567)] = 69551, - [SMALL_STATE(1568)] = 69559, - [SMALL_STATE(1569)] = 69569, - [SMALL_STATE(1570)] = 69577, - [SMALL_STATE(1571)] = 69585, - [SMALL_STATE(1572)] = 69593, - [SMALL_STATE(1573)] = 69603, - [SMALL_STATE(1574)] = 69613, - [SMALL_STATE(1575)] = 69623, - [SMALL_STATE(1576)] = 69631, - [SMALL_STATE(1577)] = 69641, - [SMALL_STATE(1578)] = 69649, - [SMALL_STATE(1579)] = 69657, - [SMALL_STATE(1580)] = 69665, - [SMALL_STATE(1581)] = 69673, - [SMALL_STATE(1582)] = 69681, - [SMALL_STATE(1583)] = 69689, - [SMALL_STATE(1584)] = 69697, - [SMALL_STATE(1585)] = 69705, - [SMALL_STATE(1586)] = 69713, - [SMALL_STATE(1587)] = 69721, - [SMALL_STATE(1588)] = 69731, - [SMALL_STATE(1589)] = 69741, - [SMALL_STATE(1590)] = 69749, - [SMALL_STATE(1591)] = 69759, - [SMALL_STATE(1592)] = 69767, - [SMALL_STATE(1593)] = 69775, - [SMALL_STATE(1594)] = 69785, - [SMALL_STATE(1595)] = 69795, - [SMALL_STATE(1596)] = 69805, - [SMALL_STATE(1597)] = 69813, - [SMALL_STATE(1598)] = 69823, - [SMALL_STATE(1599)] = 69831, - [SMALL_STATE(1600)] = 69841, - [SMALL_STATE(1601)] = 69849, - [SMALL_STATE(1602)] = 69859, - [SMALL_STATE(1603)] = 69869, - [SMALL_STATE(1604)] = 69877, - [SMALL_STATE(1605)] = 69887, - [SMALL_STATE(1606)] = 69895, - [SMALL_STATE(1607)] = 69903, - [SMALL_STATE(1608)] = 69911, - [SMALL_STATE(1609)] = 69919, - [SMALL_STATE(1610)] = 69927, - [SMALL_STATE(1611)] = 69935, - [SMALL_STATE(1612)] = 69943, - [SMALL_STATE(1613)] = 69953, - [SMALL_STATE(1614)] = 69960, - [SMALL_STATE(1615)] = 69967, - [SMALL_STATE(1616)] = 69974, - [SMALL_STATE(1617)] = 69981, - [SMALL_STATE(1618)] = 69988, - [SMALL_STATE(1619)] = 69995, - [SMALL_STATE(1620)] = 70002, - [SMALL_STATE(1621)] = 70009, - [SMALL_STATE(1622)] = 70016, - [SMALL_STATE(1623)] = 70023, - [SMALL_STATE(1624)] = 70030, - [SMALL_STATE(1625)] = 70037, - [SMALL_STATE(1626)] = 70044, - [SMALL_STATE(1627)] = 70051, - [SMALL_STATE(1628)] = 70058, - [SMALL_STATE(1629)] = 70065, - [SMALL_STATE(1630)] = 70072, - [SMALL_STATE(1631)] = 70079, - [SMALL_STATE(1632)] = 70086, - [SMALL_STATE(1633)] = 70093, - [SMALL_STATE(1634)] = 70100, - [SMALL_STATE(1635)] = 70107, - [SMALL_STATE(1636)] = 70114, - [SMALL_STATE(1637)] = 70121, - [SMALL_STATE(1638)] = 70128, - [SMALL_STATE(1639)] = 70135, - [SMALL_STATE(1640)] = 70142, - [SMALL_STATE(1641)] = 70149, - [SMALL_STATE(1642)] = 70156, - [SMALL_STATE(1643)] = 70163, - [SMALL_STATE(1644)] = 70170, - [SMALL_STATE(1645)] = 70177, - [SMALL_STATE(1646)] = 70184, - [SMALL_STATE(1647)] = 70191, - [SMALL_STATE(1648)] = 70198, - [SMALL_STATE(1649)] = 70205, - [SMALL_STATE(1650)] = 70212, - [SMALL_STATE(1651)] = 70219, - [SMALL_STATE(1652)] = 70226, - [SMALL_STATE(1653)] = 70233, - [SMALL_STATE(1654)] = 70240, - [SMALL_STATE(1655)] = 70247, - [SMALL_STATE(1656)] = 70254, - [SMALL_STATE(1657)] = 70261, - [SMALL_STATE(1658)] = 70268, - [SMALL_STATE(1659)] = 70275, - [SMALL_STATE(1660)] = 70282, - [SMALL_STATE(1661)] = 70289, - [SMALL_STATE(1662)] = 70296, - [SMALL_STATE(1663)] = 70303, - [SMALL_STATE(1664)] = 70310, - [SMALL_STATE(1665)] = 70317, - [SMALL_STATE(1666)] = 70324, - [SMALL_STATE(1667)] = 70331, - [SMALL_STATE(1668)] = 70338, - [SMALL_STATE(1669)] = 70345, - [SMALL_STATE(1670)] = 70352, - [SMALL_STATE(1671)] = 70359, - [SMALL_STATE(1672)] = 70366, - [SMALL_STATE(1673)] = 70373, - [SMALL_STATE(1674)] = 70380, - [SMALL_STATE(1675)] = 70387, - [SMALL_STATE(1676)] = 70394, - [SMALL_STATE(1677)] = 70401, - [SMALL_STATE(1678)] = 70408, - [SMALL_STATE(1679)] = 70415, - [SMALL_STATE(1680)] = 70422, - [SMALL_STATE(1681)] = 70429, - [SMALL_STATE(1682)] = 70436, - [SMALL_STATE(1683)] = 70443, - [SMALL_STATE(1684)] = 70450, - [SMALL_STATE(1685)] = 70457, - [SMALL_STATE(1686)] = 70464, - [SMALL_STATE(1687)] = 70471, - [SMALL_STATE(1688)] = 70478, - [SMALL_STATE(1689)] = 70485, - [SMALL_STATE(1690)] = 70492, - [SMALL_STATE(1691)] = 70499, - [SMALL_STATE(1692)] = 70506, - [SMALL_STATE(1693)] = 70513, - [SMALL_STATE(1694)] = 70520, - [SMALL_STATE(1695)] = 70527, - [SMALL_STATE(1696)] = 70534, - [SMALL_STATE(1697)] = 70541, - [SMALL_STATE(1698)] = 70548, - [SMALL_STATE(1699)] = 70555, - [SMALL_STATE(1700)] = 70562, - [SMALL_STATE(1701)] = 70569, - [SMALL_STATE(1702)] = 70576, - [SMALL_STATE(1703)] = 70583, - [SMALL_STATE(1704)] = 70590, - [SMALL_STATE(1705)] = 70597, - [SMALL_STATE(1706)] = 70604, - [SMALL_STATE(1707)] = 70611, - [SMALL_STATE(1708)] = 70618, - [SMALL_STATE(1709)] = 70625, - [SMALL_STATE(1710)] = 70632, - [SMALL_STATE(1711)] = 70639, - [SMALL_STATE(1712)] = 70646, - [SMALL_STATE(1713)] = 70653, - [SMALL_STATE(1714)] = 70660, - [SMALL_STATE(1715)] = 70667, - [SMALL_STATE(1716)] = 70674, - [SMALL_STATE(1717)] = 70681, - [SMALL_STATE(1718)] = 70688, - [SMALL_STATE(1719)] = 70695, - [SMALL_STATE(1720)] = 70702, - [SMALL_STATE(1721)] = 70709, - [SMALL_STATE(1722)] = 70716, - [SMALL_STATE(1723)] = 70723, - [SMALL_STATE(1724)] = 70730, - [SMALL_STATE(1725)] = 70737, - [SMALL_STATE(1726)] = 70744, - [SMALL_STATE(1727)] = 70751, - [SMALL_STATE(1728)] = 70758, - [SMALL_STATE(1729)] = 70765, - [SMALL_STATE(1730)] = 70772, - [SMALL_STATE(1731)] = 70779, - [SMALL_STATE(1732)] = 70786, - [SMALL_STATE(1733)] = 70793, - [SMALL_STATE(1734)] = 70800, - [SMALL_STATE(1735)] = 70807, - [SMALL_STATE(1736)] = 70814, - [SMALL_STATE(1737)] = 70821, - [SMALL_STATE(1738)] = 70828, - [SMALL_STATE(1739)] = 70835, - [SMALL_STATE(1740)] = 70842, - [SMALL_STATE(1741)] = 70849, - [SMALL_STATE(1742)] = 70856, - [SMALL_STATE(1743)] = 70863, - [SMALL_STATE(1744)] = 70870, - [SMALL_STATE(1745)] = 70877, - [SMALL_STATE(1746)] = 70884, - [SMALL_STATE(1747)] = 70891, - [SMALL_STATE(1748)] = 70898, - [SMALL_STATE(1749)] = 70905, - [SMALL_STATE(1750)] = 70912, - [SMALL_STATE(1751)] = 70919, - [SMALL_STATE(1752)] = 70926, - [SMALL_STATE(1753)] = 70933, - [SMALL_STATE(1754)] = 70940, + [SMALL_STATE(790)] = 48807, + [SMALL_STATE(791)] = 48867, + [SMALL_STATE(792)] = 48935, + [SMALL_STATE(793)] = 49001, + [SMALL_STATE(794)] = 49059, + [SMALL_STATE(795)] = 49113, + [SMALL_STATE(796)] = 49177, + [SMALL_STATE(797)] = 49239, + [SMALL_STATE(798)] = 49307, + [SMALL_STATE(799)] = 49375, + [SMALL_STATE(800)] = 49429, + [SMALL_STATE(801)] = 49489, + [SMALL_STATE(802)] = 49557, + [SMALL_STATE(803)] = 49623, + [SMALL_STATE(804)] = 49681, + [SMALL_STATE(805)] = 49735, + [SMALL_STATE(806)] = 49803, + [SMALL_STATE(807)] = 49867, + [SMALL_STATE(808)] = 49929, + [SMALL_STATE(809)] = 49983, + [SMALL_STATE(810)] = 50037, + [SMALL_STATE(811)] = 50119, + [SMALL_STATE(812)] = 50195, + [SMALL_STATE(813)] = 50249, + [SMALL_STATE(814)] = 50331, + [SMALL_STATE(815)] = 50379, + [SMALL_STATE(816)] = 50427, + [SMALL_STATE(817)] = 50471, + [SMALL_STATE(818)] = 50515, + [SMALL_STATE(819)] = 50569, + [SMALL_STATE(820)] = 50623, + [SMALL_STATE(821)] = 50667, + [SMALL_STATE(822)] = 50711, + [SMALL_STATE(823)] = 50765, + [SMALL_STATE(824)] = 50825, + [SMALL_STATE(825)] = 50893, + [SMALL_STATE(826)] = 50959, + [SMALL_STATE(827)] = 51017, + [SMALL_STATE(828)] = 51071, + [SMALL_STATE(829)] = 51135, + [SMALL_STATE(830)] = 51197, + [SMALL_STATE(831)] = 51265, + [SMALL_STATE(832)] = 51333, + [SMALL_STATE(833)] = 51415, + [SMALL_STATE(834)] = 51469, + [SMALL_STATE(835)] = 51551, + [SMALL_STATE(836)] = 51604, + [SMALL_STATE(837)] = 51651, + [SMALL_STATE(838)] = 51698, + [SMALL_STATE(839)] = 51741, + [SMALL_STATE(840)] = 51804, + [SMALL_STATE(841)] = 51865, + [SMALL_STATE(842)] = 51910, + [SMALL_STATE(843)] = 51955, + [SMALL_STATE(844)] = 52008, + [SMALL_STATE(845)] = 52053, + [SMALL_STATE(846)] = 52106, + [SMALL_STATE(847)] = 52149, + [SMALL_STATE(848)] = 52192, + [SMALL_STATE(849)] = 52271, + [SMALL_STATE(850)] = 52350, + [SMALL_STATE(851)] = 52431, + [SMALL_STATE(852)] = 52510, + [SMALL_STATE(853)] = 52553, + [SMALL_STATE(854)] = 52598, + [SMALL_STATE(855)] = 52645, + [SMALL_STATE(856)] = 52690, + [SMALL_STATE(857)] = 52735, + [SMALL_STATE(858)] = 52802, + [SMALL_STATE(859)] = 52849, + [SMALL_STATE(860)] = 52892, + [SMALL_STATE(861)] = 52971, + [SMALL_STATE(862)] = 53050, + [SMALL_STATE(863)] = 53093, + [SMALL_STATE(864)] = 53160, + [SMALL_STATE(865)] = 53205, + [SMALL_STATE(866)] = 53248, + [SMALL_STATE(867)] = 53305, + [SMALL_STATE(868)] = 53352, + [SMALL_STATE(869)] = 53397, + [SMALL_STATE(870)] = 53440, + [SMALL_STATE(871)] = 53487, + [SMALL_STATE(872)] = 53540, + [SMALL_STATE(873)] = 53605, + [SMALL_STATE(874)] = 53664, + [SMALL_STATE(875)] = 53731, + [SMALL_STATE(876)] = 53776, + [SMALL_STATE(877)] = 53821, + [SMALL_STATE(878)] = 53866, + [SMALL_STATE(879)] = 53911, + [SMALL_STATE(880)] = 53953, + [SMALL_STATE(881)] = 53995, + [SMALL_STATE(882)] = 54037, + [SMALL_STATE(883)] = 54079, + [SMALL_STATE(884)] = 54121, + [SMALL_STATE(885)] = 54163, + [SMALL_STATE(886)] = 54205, + [SMALL_STATE(887)] = 54247, + [SMALL_STATE(888)] = 54289, + [SMALL_STATE(889)] = 54331, + [SMALL_STATE(890)] = 54373, + [SMALL_STATE(891)] = 54415, + [SMALL_STATE(892)] = 54457, + [SMALL_STATE(893)] = 54537, + [SMALL_STATE(894)] = 54579, + [SMALL_STATE(895)] = 54621, + [SMALL_STATE(896)] = 54663, + [SMALL_STATE(897)] = 54705, + [SMALL_STATE(898)] = 54747, + [SMALL_STATE(899)] = 54789, + [SMALL_STATE(900)] = 54831, + [SMALL_STATE(901)] = 54873, + [SMALL_STATE(902)] = 54915, + [SMALL_STATE(903)] = 54957, + [SMALL_STATE(904)] = 54999, + [SMALL_STATE(905)] = 55041, + [SMALL_STATE(906)] = 55083, + [SMALL_STATE(907)] = 55125, + [SMALL_STATE(908)] = 55169, + [SMALL_STATE(909)] = 55211, + [SMALL_STATE(910)] = 55255, + [SMALL_STATE(911)] = 55297, + [SMALL_STATE(912)] = 55341, + [SMALL_STATE(913)] = 55383, + [SMALL_STATE(914)] = 55425, + [SMALL_STATE(915)] = 55467, + [SMALL_STATE(916)] = 55509, + [SMALL_STATE(917)] = 55551, + [SMALL_STATE(918)] = 55593, + [SMALL_STATE(919)] = 55635, + [SMALL_STATE(920)] = 55677, + [SMALL_STATE(921)] = 55719, + [SMALL_STATE(922)] = 55761, + [SMALL_STATE(923)] = 55803, + [SMALL_STATE(924)] = 55845, + [SMALL_STATE(925)] = 55887, + [SMALL_STATE(926)] = 55929, + [SMALL_STATE(927)] = 55971, + [SMALL_STATE(928)] = 56013, + [SMALL_STATE(929)] = 56055, + [SMALL_STATE(930)] = 56097, + [SMALL_STATE(931)] = 56139, + [SMALL_STATE(932)] = 56215, + [SMALL_STATE(933)] = 56295, + [SMALL_STATE(934)] = 56337, + [SMALL_STATE(935)] = 56379, + [SMALL_STATE(936)] = 56459, + [SMALL_STATE(937)] = 56501, + [SMALL_STATE(938)] = 56543, + [SMALL_STATE(939)] = 56585, + [SMALL_STATE(940)] = 56627, + [SMALL_STATE(941)] = 56669, + [SMALL_STATE(942)] = 56711, + [SMALL_STATE(943)] = 56753, + [SMALL_STATE(944)] = 56795, + [SMALL_STATE(945)] = 56837, + [SMALL_STATE(946)] = 56879, + [SMALL_STATE(947)] = 56921, + [SMALL_STATE(948)] = 56963, + [SMALL_STATE(949)] = 57005, + [SMALL_STATE(950)] = 57049, + [SMALL_STATE(951)] = 57091, + [SMALL_STATE(952)] = 57133, + [SMALL_STATE(953)] = 57175, + [SMALL_STATE(954)] = 57217, + [SMALL_STATE(955)] = 57261, + [SMALL_STATE(956)] = 57303, + [SMALL_STATE(957)] = 57344, + [SMALL_STATE(958)] = 57385, + [SMALL_STATE(959)] = 57426, + [SMALL_STATE(960)] = 57467, + [SMALL_STATE(961)] = 57508, + [SMALL_STATE(962)] = 57549, + [SMALL_STATE(963)] = 57590, + [SMALL_STATE(964)] = 57631, + [SMALL_STATE(965)] = 57672, + [SMALL_STATE(966)] = 57713, + [SMALL_STATE(967)] = 57754, + [SMALL_STATE(968)] = 57795, + [SMALL_STATE(969)] = 57836, + [SMALL_STATE(970)] = 57877, + [SMALL_STATE(971)] = 57918, + [SMALL_STATE(972)] = 57963, + [SMALL_STATE(973)] = 58004, + [SMALL_STATE(974)] = 58049, + [SMALL_STATE(975)] = 58090, + [SMALL_STATE(976)] = 58131, + [SMALL_STATE(977)] = 58172, + [SMALL_STATE(978)] = 58213, + [SMALL_STATE(979)] = 58254, + [SMALL_STATE(980)] = 58295, + [SMALL_STATE(981)] = 58336, + [SMALL_STATE(982)] = 58377, + [SMALL_STATE(983)] = 58418, + [SMALL_STATE(984)] = 58459, + [SMALL_STATE(985)] = 58500, + [SMALL_STATE(986)] = 58541, + [SMALL_STATE(987)] = 58582, + [SMALL_STATE(988)] = 58623, + [SMALL_STATE(989)] = 58664, + [SMALL_STATE(990)] = 58705, + [SMALL_STATE(991)] = 58746, + [SMALL_STATE(992)] = 58820, + [SMALL_STATE(993)] = 58891, + [SMALL_STATE(994)] = 58962, + [SMALL_STATE(995)] = 59025, + [SMALL_STATE(996)] = 59088, + [SMALL_STATE(997)] = 59127, + [SMALL_STATE(998)] = 59166, + [SMALL_STATE(999)] = 59205, + [SMALL_STATE(1000)] = 59244, + [SMALL_STATE(1001)] = 59298, + [SMALL_STATE(1002)] = 59328, + [SMALL_STATE(1003)] = 59382, + [SMALL_STATE(1004)] = 59436, + [SMALL_STATE(1005)] = 59473, + [SMALL_STATE(1006)] = 59498, + [SMALL_STATE(1007)] = 59527, + [SMALL_STATE(1008)] = 59564, + [SMALL_STATE(1009)] = 59601, + [SMALL_STATE(1010)] = 59626, + [SMALL_STATE(1011)] = 59661, + [SMALL_STATE(1012)] = 59690, + [SMALL_STATE(1013)] = 59725, + [SMALL_STATE(1014)] = 59762, + [SMALL_STATE(1015)] = 59787, + [SMALL_STATE(1016)] = 59812, + [SMALL_STATE(1017)] = 59858, + [SMALL_STATE(1018)] = 59892, + [SMALL_STATE(1019)] = 59926, + [SMALL_STATE(1020)] = 59954, + [SMALL_STATE(1021)] = 59997, + [SMALL_STATE(1022)] = 60040, + [SMALL_STATE(1023)] = 60071, + [SMALL_STATE(1024)] = 60116, + [SMALL_STATE(1025)] = 60159, + [SMALL_STATE(1026)] = 60202, + [SMALL_STATE(1027)] = 60245, + [SMALL_STATE(1028)] = 60288, + [SMALL_STATE(1029)] = 60331, + [SMALL_STATE(1030)] = 60371, + [SMALL_STATE(1031)] = 60396, + [SMALL_STATE(1032)] = 60433, + [SMALL_STATE(1033)] = 60470, + [SMALL_STATE(1034)] = 60507, + [SMALL_STATE(1035)] = 60544, + [SMALL_STATE(1036)] = 60578, + [SMALL_STATE(1037)] = 60612, + [SMALL_STATE(1038)] = 60633, + [SMALL_STATE(1039)] = 60654, + [SMALL_STATE(1040)] = 60676, + [SMALL_STATE(1041)] = 60707, + [SMALL_STATE(1042)] = 60738, + [SMALL_STATE(1043)] = 60769, + [SMALL_STATE(1044)] = 60792, + [SMALL_STATE(1045)] = 60823, + [SMALL_STATE(1046)] = 60854, + [SMALL_STATE(1047)] = 60885, + [SMALL_STATE(1048)] = 60916, + [SMALL_STATE(1049)] = 60947, + [SMALL_STATE(1050)] = 60984, + [SMALL_STATE(1051)] = 61015, + [SMALL_STATE(1052)] = 61052, + [SMALL_STATE(1053)] = 61075, + [SMALL_STATE(1054)] = 61106, + [SMALL_STATE(1055)] = 61143, + [SMALL_STATE(1056)] = 61160, + [SMALL_STATE(1057)] = 61181, + [SMALL_STATE(1058)] = 61212, + [SMALL_STATE(1059)] = 61243, + [SMALL_STATE(1060)] = 61274, + [SMALL_STATE(1061)] = 61305, + [SMALL_STATE(1062)] = 61336, + [SMALL_STATE(1063)] = 61367, + [SMALL_STATE(1064)] = 61404, + [SMALL_STATE(1065)] = 61441, + [SMALL_STATE(1066)] = 61472, + [SMALL_STATE(1067)] = 61503, + [SMALL_STATE(1068)] = 61524, + [SMALL_STATE(1069)] = 61555, + [SMALL_STATE(1070)] = 61573, + [SMALL_STATE(1071)] = 61607, + [SMALL_STATE(1072)] = 61641, + [SMALL_STATE(1073)] = 61675, + [SMALL_STATE(1074)] = 61695, + [SMALL_STATE(1075)] = 61717, + [SMALL_STATE(1076)] = 61751, + [SMALL_STATE(1077)] = 61773, + [SMALL_STATE(1078)] = 61807, + [SMALL_STATE(1079)] = 61831, + [SMALL_STATE(1080)] = 61851, + [SMALL_STATE(1081)] = 61873, + [SMALL_STATE(1082)] = 61895, + [SMALL_STATE(1083)] = 61915, + [SMALL_STATE(1084)] = 61949, + [SMALL_STATE(1085)] = 61971, + [SMALL_STATE(1086)] = 61993, + [SMALL_STATE(1087)] = 62011, + [SMALL_STATE(1088)] = 62045, + [SMALL_STATE(1089)] = 62079, + [SMALL_STATE(1090)] = 62113, + [SMALL_STATE(1091)] = 62131, + [SMALL_STATE(1092)] = 62155, + [SMALL_STATE(1093)] = 62189, + [SMALL_STATE(1094)] = 62223, + [SMALL_STATE(1095)] = 62243, + [SMALL_STATE(1096)] = 62267, + [SMALL_STATE(1097)] = 62301, + [SMALL_STATE(1098)] = 62326, + [SMALL_STATE(1099)] = 62345, + [SMALL_STATE(1100)] = 62364, + [SMALL_STATE(1101)] = 62389, + [SMALL_STATE(1102)] = 62412, + [SMALL_STATE(1103)] = 62431, + [SMALL_STATE(1104)] = 62450, + [SMALL_STATE(1105)] = 62473, + [SMALL_STATE(1106)] = 62492, + [SMALL_STATE(1107)] = 62513, + [SMALL_STATE(1108)] = 62532, + [SMALL_STATE(1109)] = 62553, + [SMALL_STATE(1110)] = 62576, + [SMALL_STATE(1111)] = 62594, + [SMALL_STATE(1112)] = 62608, + [SMALL_STATE(1113)] = 62622, + [SMALL_STATE(1114)] = 62636, + [SMALL_STATE(1115)] = 62652, + [SMALL_STATE(1116)] = 62672, + [SMALL_STATE(1117)] = 62686, + [SMALL_STATE(1118)] = 62706, + [SMALL_STATE(1119)] = 62724, + [SMALL_STATE(1120)] = 62744, + [SMALL_STATE(1121)] = 62758, + [SMALL_STATE(1122)] = 62776, + [SMALL_STATE(1123)] = 62792, + [SMALL_STATE(1124)] = 62810, + [SMALL_STATE(1125)] = 62828, + [SMALL_STATE(1126)] = 62842, + [SMALL_STATE(1127)] = 62866, + [SMALL_STATE(1128)] = 62884, + [SMALL_STATE(1129)] = 62904, + [SMALL_STATE(1130)] = 62926, + [SMALL_STATE(1131)] = 62946, + [SMALL_STATE(1132)] = 62966, + [SMALL_STATE(1133)] = 62980, + [SMALL_STATE(1134)] = 62994, + [SMALL_STATE(1135)] = 63008, + [SMALL_STATE(1136)] = 63028, + [SMALL_STATE(1137)] = 63048, + [SMALL_STATE(1138)] = 63074, + [SMALL_STATE(1139)] = 63098, + [SMALL_STATE(1140)] = 63118, + [SMALL_STATE(1141)] = 63134, + [SMALL_STATE(1142)] = 63148, + [SMALL_STATE(1143)] = 63162, + [SMALL_STATE(1144)] = 63184, + [SMALL_STATE(1145)] = 63198, + [SMALL_STATE(1146)] = 63212, + [SMALL_STATE(1147)] = 63232, + [SMALL_STATE(1148)] = 63250, + [SMALL_STATE(1149)] = 63264, + [SMALL_STATE(1150)] = 63278, + [SMALL_STATE(1151)] = 63292, + [SMALL_STATE(1152)] = 63310, + [SMALL_STATE(1153)] = 63324, + [SMALL_STATE(1154)] = 63344, + [SMALL_STATE(1155)] = 63358, + [SMALL_STATE(1156)] = 63372, + [SMALL_STATE(1157)] = 63386, + [SMALL_STATE(1158)] = 63400, + [SMALL_STATE(1159)] = 63418, + [SMALL_STATE(1160)] = 63436, + [SMALL_STATE(1161)] = 63456, + [SMALL_STATE(1162)] = 63470, + [SMALL_STATE(1163)] = 63492, + [SMALL_STATE(1164)] = 63510, + [SMALL_STATE(1165)] = 63524, + [SMALL_STATE(1166)] = 63540, + [SMALL_STATE(1167)] = 63554, + [SMALL_STATE(1168)] = 63568, + [SMALL_STATE(1169)] = 63588, + [SMALL_STATE(1170)] = 63606, + [SMALL_STATE(1171)] = 63628, + [SMALL_STATE(1172)] = 63652, + [SMALL_STATE(1173)] = 63670, + [SMALL_STATE(1174)] = 63688, + [SMALL_STATE(1175)] = 63702, + [SMALL_STATE(1176)] = 63722, + [SMALL_STATE(1177)] = 63742, + [SMALL_STATE(1178)] = 63764, + [SMALL_STATE(1179)] = 63782, + [SMALL_STATE(1180)] = 63807, + [SMALL_STATE(1181)] = 63820, + [SMALL_STATE(1182)] = 63843, + [SMALL_STATE(1183)] = 63868, + [SMALL_STATE(1184)] = 63893, + [SMALL_STATE(1185)] = 63906, + [SMALL_STATE(1186)] = 63927, + [SMALL_STATE(1187)] = 63944, + [SMALL_STATE(1188)] = 63963, + [SMALL_STATE(1189)] = 63980, + [SMALL_STATE(1190)] = 63995, + [SMALL_STATE(1191)] = 64012, + [SMALL_STATE(1192)] = 64031, + [SMALL_STATE(1193)] = 64050, + [SMALL_STATE(1194)] = 64069, + [SMALL_STATE(1195)] = 64094, + [SMALL_STATE(1196)] = 64113, + [SMALL_STATE(1197)] = 64126, + [SMALL_STATE(1198)] = 64149, + [SMALL_STATE(1199)] = 64164, + [SMALL_STATE(1200)] = 64189, + [SMALL_STATE(1201)] = 64208, + [SMALL_STATE(1202)] = 64229, + [SMALL_STATE(1203)] = 64254, + [SMALL_STATE(1204)] = 64275, + [SMALL_STATE(1205)] = 64298, + [SMALL_STATE(1206)] = 64317, + [SMALL_STATE(1207)] = 64336, + [SMALL_STATE(1208)] = 64355, + [SMALL_STATE(1209)] = 64378, + [SMALL_STATE(1210)] = 64401, + [SMALL_STATE(1211)] = 64424, + [SMALL_STATE(1212)] = 64447, + [SMALL_STATE(1213)] = 64470, + [SMALL_STATE(1214)] = 64495, + [SMALL_STATE(1215)] = 64514, + [SMALL_STATE(1216)] = 64539, + [SMALL_STATE(1217)] = 64564, + [SMALL_STATE(1218)] = 64589, + [SMALL_STATE(1219)] = 64614, + [SMALL_STATE(1220)] = 64639, + [SMALL_STATE(1221)] = 64664, + [SMALL_STATE(1222)] = 64683, + [SMALL_STATE(1223)] = 64708, + [SMALL_STATE(1224)] = 64729, + [SMALL_STATE(1225)] = 64754, + [SMALL_STATE(1226)] = 64779, + [SMALL_STATE(1227)] = 64804, + [SMALL_STATE(1228)] = 64829, + [SMALL_STATE(1229)] = 64842, + [SMALL_STATE(1230)] = 64867, + [SMALL_STATE(1231)] = 64880, + [SMALL_STATE(1232)] = 64905, + [SMALL_STATE(1233)] = 64926, + [SMALL_STATE(1234)] = 64949, + [SMALL_STATE(1235)] = 64974, + [SMALL_STATE(1236)] = 64999, + [SMALL_STATE(1237)] = 65024, + [SMALL_STATE(1238)] = 65049, + [SMALL_STATE(1239)] = 65074, + [SMALL_STATE(1240)] = 65099, + [SMALL_STATE(1241)] = 65124, + [SMALL_STATE(1242)] = 65143, + [SMALL_STATE(1243)] = 65156, + [SMALL_STATE(1244)] = 65175, + [SMALL_STATE(1245)] = 65189, + [SMALL_STATE(1246)] = 65203, + [SMALL_STATE(1247)] = 65219, + [SMALL_STATE(1248)] = 65239, + [SMALL_STATE(1249)] = 65255, + [SMALL_STATE(1250)] = 65275, + [SMALL_STATE(1251)] = 65289, + [SMALL_STATE(1252)] = 65305, + [SMALL_STATE(1253)] = 65321, + [SMALL_STATE(1254)] = 65343, + [SMALL_STATE(1255)] = 65355, + [SMALL_STATE(1256)] = 65373, + [SMALL_STATE(1257)] = 65389, + [SMALL_STATE(1258)] = 65407, + [SMALL_STATE(1259)] = 65421, + [SMALL_STATE(1260)] = 65443, + [SMALL_STATE(1261)] = 65461, + [SMALL_STATE(1262)] = 65483, + [SMALL_STATE(1263)] = 65505, + [SMALL_STATE(1264)] = 65527, + [SMALL_STATE(1265)] = 65547, + [SMALL_STATE(1266)] = 65563, + [SMALL_STATE(1267)] = 65581, + [SMALL_STATE(1268)] = 65597, + [SMALL_STATE(1269)] = 65615, + [SMALL_STATE(1270)] = 65637, + [SMALL_STATE(1271)] = 65655, + [SMALL_STATE(1272)] = 65671, + [SMALL_STATE(1273)] = 65689, + [SMALL_STATE(1274)] = 65705, + [SMALL_STATE(1275)] = 65721, + [SMALL_STATE(1276)] = 65737, + [SMALL_STATE(1277)] = 65755, + [SMALL_STATE(1278)] = 65769, + [SMALL_STATE(1279)] = 65781, + [SMALL_STATE(1280)] = 65797, + [SMALL_STATE(1281)] = 65811, + [SMALL_STATE(1282)] = 65827, + [SMALL_STATE(1283)] = 65847, + [SMALL_STATE(1284)] = 65867, + [SMALL_STATE(1285)] = 65889, + [SMALL_STATE(1286)] = 65904, + [SMALL_STATE(1287)] = 65923, + [SMALL_STATE(1288)] = 65940, + [SMALL_STATE(1289)] = 65959, + [SMALL_STATE(1290)] = 65976, + [SMALL_STATE(1291)] = 65987, + [SMALL_STATE(1292)] = 66004, + [SMALL_STATE(1293)] = 66021, + [SMALL_STATE(1294)] = 66040, + [SMALL_STATE(1295)] = 66059, + [SMALL_STATE(1296)] = 66078, + [SMALL_STATE(1297)] = 66095, + [SMALL_STATE(1298)] = 66112, + [SMALL_STATE(1299)] = 66127, + [SMALL_STATE(1300)] = 66144, + [SMALL_STATE(1301)] = 66161, + [SMALL_STATE(1302)] = 66172, + [SMALL_STATE(1303)] = 66187, + [SMALL_STATE(1304)] = 66204, + [SMALL_STATE(1305)] = 66221, + [SMALL_STATE(1306)] = 66240, + [SMALL_STATE(1307)] = 66257, + [SMALL_STATE(1308)] = 66274, + [SMALL_STATE(1309)] = 66291, + [SMALL_STATE(1310)] = 66310, + [SMALL_STATE(1311)] = 66321, + [SMALL_STATE(1312)] = 66336, + [SMALL_STATE(1313)] = 66353, + [SMALL_STATE(1314)] = 66368, + [SMALL_STATE(1315)] = 66383, + [SMALL_STATE(1316)] = 66394, + [SMALL_STATE(1317)] = 66411, + [SMALL_STATE(1318)] = 66430, + [SMALL_STATE(1319)] = 66445, + [SMALL_STATE(1320)] = 66462, + [SMALL_STATE(1321)] = 66479, + [SMALL_STATE(1322)] = 66494, + [SMALL_STATE(1323)] = 66511, + [SMALL_STATE(1324)] = 66522, + [SMALL_STATE(1325)] = 66534, + [SMALL_STATE(1326)] = 66548, + [SMALL_STATE(1327)] = 66564, + [SMALL_STATE(1328)] = 66580, + [SMALL_STATE(1329)] = 66596, + [SMALL_STATE(1330)] = 66612, + [SMALL_STATE(1331)] = 66628, + [SMALL_STATE(1332)] = 66642, + [SMALL_STATE(1333)] = 66656, + [SMALL_STATE(1334)] = 66672, + [SMALL_STATE(1335)] = 66688, + [SMALL_STATE(1336)] = 66702, + [SMALL_STATE(1337)] = 66718, + [SMALL_STATE(1338)] = 66734, + [SMALL_STATE(1339)] = 66748, + [SMALL_STATE(1340)] = 66762, + [SMALL_STATE(1341)] = 66778, + [SMALL_STATE(1342)] = 66792, + [SMALL_STATE(1343)] = 66806, + [SMALL_STATE(1344)] = 66820, + [SMALL_STATE(1345)] = 66836, + [SMALL_STATE(1346)] = 66846, + [SMALL_STATE(1347)] = 66856, + [SMALL_STATE(1348)] = 66870, + [SMALL_STATE(1349)] = 66884, + [SMALL_STATE(1350)] = 66898, + [SMALL_STATE(1351)] = 66914, + [SMALL_STATE(1352)] = 66930, + [SMALL_STATE(1353)] = 66946, + [SMALL_STATE(1354)] = 66962, + [SMALL_STATE(1355)] = 66978, + [SMALL_STATE(1356)] = 66994, + [SMALL_STATE(1357)] = 67010, + [SMALL_STATE(1358)] = 67024, + [SMALL_STATE(1359)] = 67038, + [SMALL_STATE(1360)] = 67054, + [SMALL_STATE(1361)] = 67070, + [SMALL_STATE(1362)] = 67084, + [SMALL_STATE(1363)] = 67100, + [SMALL_STATE(1364)] = 67114, + [SMALL_STATE(1365)] = 67130, + [SMALL_STATE(1366)] = 67146, + [SMALL_STATE(1367)] = 67162, + [SMALL_STATE(1368)] = 67176, + [SMALL_STATE(1369)] = 67186, + [SMALL_STATE(1370)] = 67202, + [SMALL_STATE(1371)] = 67218, + [SMALL_STATE(1372)] = 67232, + [SMALL_STATE(1373)] = 67248, + [SMALL_STATE(1374)] = 67258, + [SMALL_STATE(1375)] = 67268, + [SMALL_STATE(1376)] = 67278, + [SMALL_STATE(1377)] = 67294, + [SMALL_STATE(1378)] = 67310, + [SMALL_STATE(1379)] = 67326, + [SMALL_STATE(1380)] = 67340, + [SMALL_STATE(1381)] = 67354, + [SMALL_STATE(1382)] = 67370, + [SMALL_STATE(1383)] = 67386, + [SMALL_STATE(1384)] = 67402, + [SMALL_STATE(1385)] = 67416, + [SMALL_STATE(1386)] = 67430, + [SMALL_STATE(1387)] = 67444, + [SMALL_STATE(1388)] = 67456, + [SMALL_STATE(1389)] = 67470, + [SMALL_STATE(1390)] = 67484, + [SMALL_STATE(1391)] = 67500, + [SMALL_STATE(1392)] = 67516, + [SMALL_STATE(1393)] = 67530, + [SMALL_STATE(1394)] = 67544, + [SMALL_STATE(1395)] = 67560, + [SMALL_STATE(1396)] = 67576, + [SMALL_STATE(1397)] = 67590, + [SMALL_STATE(1398)] = 67606, + [SMALL_STATE(1399)] = 67620, + [SMALL_STATE(1400)] = 67634, + [SMALL_STATE(1401)] = 67648, + [SMALL_STATE(1402)] = 67662, + [SMALL_STATE(1403)] = 67678, + [SMALL_STATE(1404)] = 67694, + [SMALL_STATE(1405)] = 67708, + [SMALL_STATE(1406)] = 67724, + [SMALL_STATE(1407)] = 67738, + [SMALL_STATE(1408)] = 67751, + [SMALL_STATE(1409)] = 67764, + [SMALL_STATE(1410)] = 67773, + [SMALL_STATE(1411)] = 67786, + [SMALL_STATE(1412)] = 67799, + [SMALL_STATE(1413)] = 67812, + [SMALL_STATE(1414)] = 67825, + [SMALL_STATE(1415)] = 67838, + [SMALL_STATE(1416)] = 67851, + [SMALL_STATE(1417)] = 67864, + [SMALL_STATE(1418)] = 67877, + [SMALL_STATE(1419)] = 67890, + [SMALL_STATE(1420)] = 67903, + [SMALL_STATE(1421)] = 67916, + [SMALL_STATE(1422)] = 67927, + [SMALL_STATE(1423)] = 67940, + [SMALL_STATE(1424)] = 67953, + [SMALL_STATE(1425)] = 67964, + [SMALL_STATE(1426)] = 67977, + [SMALL_STATE(1427)] = 67990, + [SMALL_STATE(1428)] = 68001, + [SMALL_STATE(1429)] = 68014, + [SMALL_STATE(1430)] = 68023, + [SMALL_STATE(1431)] = 68036, + [SMALL_STATE(1432)] = 68049, + [SMALL_STATE(1433)] = 68062, + [SMALL_STATE(1434)] = 68075, + [SMALL_STATE(1435)] = 68088, + [SMALL_STATE(1436)] = 68097, + [SMALL_STATE(1437)] = 68110, + [SMALL_STATE(1438)] = 68123, + [SMALL_STATE(1439)] = 68136, + [SMALL_STATE(1440)] = 68145, + [SMALL_STATE(1441)] = 68154, + [SMALL_STATE(1442)] = 68167, + [SMALL_STATE(1443)] = 68180, + [SMALL_STATE(1444)] = 68193, + [SMALL_STATE(1445)] = 68206, + [SMALL_STATE(1446)] = 68219, + [SMALL_STATE(1447)] = 68230, + [SMALL_STATE(1448)] = 68243, + [SMALL_STATE(1449)] = 68256, + [SMALL_STATE(1450)] = 68269, + [SMALL_STATE(1451)] = 68282, + [SMALL_STATE(1452)] = 68295, + [SMALL_STATE(1453)] = 68308, + [SMALL_STATE(1454)] = 68321, + [SMALL_STATE(1455)] = 68334, + [SMALL_STATE(1456)] = 68347, + [SMALL_STATE(1457)] = 68360, + [SMALL_STATE(1458)] = 68373, + [SMALL_STATE(1459)] = 68386, + [SMALL_STATE(1460)] = 68399, + [SMALL_STATE(1461)] = 68412, + [SMALL_STATE(1462)] = 68421, + [SMALL_STATE(1463)] = 68434, + [SMALL_STATE(1464)] = 68447, + [SMALL_STATE(1465)] = 68456, + [SMALL_STATE(1466)] = 68469, + [SMALL_STATE(1467)] = 68482, + [SMALL_STATE(1468)] = 68495, + [SMALL_STATE(1469)] = 68508, + [SMALL_STATE(1470)] = 68521, + [SMALL_STATE(1471)] = 68530, + [SMALL_STATE(1472)] = 68543, + [SMALL_STATE(1473)] = 68556, + [SMALL_STATE(1474)] = 68569, + [SMALL_STATE(1475)] = 68582, + [SMALL_STATE(1476)] = 68593, + [SMALL_STATE(1477)] = 68606, + [SMALL_STATE(1478)] = 68619, + [SMALL_STATE(1479)] = 68632, + [SMALL_STATE(1480)] = 68641, + [SMALL_STATE(1481)] = 68654, + [SMALL_STATE(1482)] = 68667, + [SMALL_STATE(1483)] = 68680, + [SMALL_STATE(1484)] = 68693, + [SMALL_STATE(1485)] = 68706, + [SMALL_STATE(1486)] = 68719, + [SMALL_STATE(1487)] = 68728, + [SMALL_STATE(1488)] = 68737, + [SMALL_STATE(1489)] = 68748, + [SMALL_STATE(1490)] = 68761, + [SMALL_STATE(1491)] = 68772, + [SMALL_STATE(1492)] = 68785, + [SMALL_STATE(1493)] = 68798, + [SMALL_STATE(1494)] = 68811, + [SMALL_STATE(1495)] = 68822, + [SMALL_STATE(1496)] = 68835, + [SMALL_STATE(1497)] = 68848, + [SMALL_STATE(1498)] = 68861, + [SMALL_STATE(1499)] = 68872, + [SMALL_STATE(1500)] = 68885, + [SMALL_STATE(1501)] = 68898, + [SMALL_STATE(1502)] = 68911, + [SMALL_STATE(1503)] = 68924, + [SMALL_STATE(1504)] = 68937, + [SMALL_STATE(1505)] = 68950, + [SMALL_STATE(1506)] = 68963, + [SMALL_STATE(1507)] = 68976, + [SMALL_STATE(1508)] = 68989, + [SMALL_STATE(1509)] = 69002, + [SMALL_STATE(1510)] = 69015, + [SMALL_STATE(1511)] = 69028, + [SMALL_STATE(1512)] = 69037, + [SMALL_STATE(1513)] = 69050, + [SMALL_STATE(1514)] = 69059, + [SMALL_STATE(1515)] = 69070, + [SMALL_STATE(1516)] = 69079, + [SMALL_STATE(1517)] = 69088, + [SMALL_STATE(1518)] = 69101, + [SMALL_STATE(1519)] = 69110, + [SMALL_STATE(1520)] = 69123, + [SMALL_STATE(1521)] = 69134, + [SMALL_STATE(1522)] = 69147, + [SMALL_STATE(1523)] = 69160, + [SMALL_STATE(1524)] = 69173, + [SMALL_STATE(1525)] = 69186, + [SMALL_STATE(1526)] = 69199, + [SMALL_STATE(1527)] = 69208, + [SMALL_STATE(1528)] = 69221, + [SMALL_STATE(1529)] = 69234, + [SMALL_STATE(1530)] = 69247, + [SMALL_STATE(1531)] = 69260, + [SMALL_STATE(1532)] = 69273, + [SMALL_STATE(1533)] = 69286, + [SMALL_STATE(1534)] = 69299, + [SMALL_STATE(1535)] = 69312, + [SMALL_STATE(1536)] = 69323, + [SMALL_STATE(1537)] = 69336, + [SMALL_STATE(1538)] = 69344, + [SMALL_STATE(1539)] = 69352, + [SMALL_STATE(1540)] = 69360, + [SMALL_STATE(1541)] = 69368, + [SMALL_STATE(1542)] = 69378, + [SMALL_STATE(1543)] = 69386, + [SMALL_STATE(1544)] = 69394, + [SMALL_STATE(1545)] = 69404, + [SMALL_STATE(1546)] = 69414, + [SMALL_STATE(1547)] = 69422, + [SMALL_STATE(1548)] = 69432, + [SMALL_STATE(1549)] = 69440, + [SMALL_STATE(1550)] = 69448, + [SMALL_STATE(1551)] = 69456, + [SMALL_STATE(1552)] = 69464, + [SMALL_STATE(1553)] = 69472, + [SMALL_STATE(1554)] = 69480, + [SMALL_STATE(1555)] = 69488, + [SMALL_STATE(1556)] = 69496, + [SMALL_STATE(1557)] = 69504, + [SMALL_STATE(1558)] = 69514, + [SMALL_STATE(1559)] = 69522, + [SMALL_STATE(1560)] = 69530, + [SMALL_STATE(1561)] = 69538, + [SMALL_STATE(1562)] = 69546, + [SMALL_STATE(1563)] = 69556, + [SMALL_STATE(1564)] = 69564, + [SMALL_STATE(1565)] = 69572, + [SMALL_STATE(1566)] = 69580, + [SMALL_STATE(1567)] = 69588, + [SMALL_STATE(1568)] = 69598, + [SMALL_STATE(1569)] = 69606, + [SMALL_STATE(1570)] = 69614, + [SMALL_STATE(1571)] = 69622, + [SMALL_STATE(1572)] = 69632, + [SMALL_STATE(1573)] = 69640, + [SMALL_STATE(1574)] = 69650, + [SMALL_STATE(1575)] = 69660, + [SMALL_STATE(1576)] = 69670, + [SMALL_STATE(1577)] = 69680, + [SMALL_STATE(1578)] = 69690, + [SMALL_STATE(1579)] = 69700, + [SMALL_STATE(1580)] = 69708, + [SMALL_STATE(1581)] = 69718, + [SMALL_STATE(1582)] = 69726, + [SMALL_STATE(1583)] = 69734, + [SMALL_STATE(1584)] = 69742, + [SMALL_STATE(1585)] = 69752, + [SMALL_STATE(1586)] = 69762, + [SMALL_STATE(1587)] = 69772, + [SMALL_STATE(1588)] = 69782, + [SMALL_STATE(1589)] = 69792, + [SMALL_STATE(1590)] = 69800, + [SMALL_STATE(1591)] = 69810, + [SMALL_STATE(1592)] = 69820, + [SMALL_STATE(1593)] = 69830, + [SMALL_STATE(1594)] = 69840, + [SMALL_STATE(1595)] = 69848, + [SMALL_STATE(1596)] = 69856, + [SMALL_STATE(1597)] = 69864, + [SMALL_STATE(1598)] = 69872, + [SMALL_STATE(1599)] = 69880, + [SMALL_STATE(1600)] = 69888, + [SMALL_STATE(1601)] = 69898, + [SMALL_STATE(1602)] = 69906, + [SMALL_STATE(1603)] = 69914, + [SMALL_STATE(1604)] = 69924, + [SMALL_STATE(1605)] = 69932, + [SMALL_STATE(1606)] = 69942, + [SMALL_STATE(1607)] = 69952, + [SMALL_STATE(1608)] = 69962, + [SMALL_STATE(1609)] = 69970, + [SMALL_STATE(1610)] = 69980, + [SMALL_STATE(1611)] = 69988, + [SMALL_STATE(1612)] = 69996, + [SMALL_STATE(1613)] = 70004, + [SMALL_STATE(1614)] = 70012, + [SMALL_STATE(1615)] = 70020, + [SMALL_STATE(1616)] = 70028, + [SMALL_STATE(1617)] = 70038, + [SMALL_STATE(1618)] = 70045, + [SMALL_STATE(1619)] = 70052, + [SMALL_STATE(1620)] = 70059, + [SMALL_STATE(1621)] = 70066, + [SMALL_STATE(1622)] = 70073, + [SMALL_STATE(1623)] = 70080, + [SMALL_STATE(1624)] = 70087, + [SMALL_STATE(1625)] = 70094, + [SMALL_STATE(1626)] = 70101, + [SMALL_STATE(1627)] = 70108, + [SMALL_STATE(1628)] = 70115, + [SMALL_STATE(1629)] = 70122, + [SMALL_STATE(1630)] = 70129, + [SMALL_STATE(1631)] = 70136, + [SMALL_STATE(1632)] = 70143, + [SMALL_STATE(1633)] = 70150, + [SMALL_STATE(1634)] = 70157, + [SMALL_STATE(1635)] = 70164, + [SMALL_STATE(1636)] = 70171, + [SMALL_STATE(1637)] = 70178, + [SMALL_STATE(1638)] = 70185, + [SMALL_STATE(1639)] = 70192, + [SMALL_STATE(1640)] = 70199, + [SMALL_STATE(1641)] = 70206, + [SMALL_STATE(1642)] = 70213, + [SMALL_STATE(1643)] = 70220, + [SMALL_STATE(1644)] = 70227, + [SMALL_STATE(1645)] = 70234, + [SMALL_STATE(1646)] = 70241, + [SMALL_STATE(1647)] = 70248, + [SMALL_STATE(1648)] = 70255, + [SMALL_STATE(1649)] = 70262, + [SMALL_STATE(1650)] = 70269, + [SMALL_STATE(1651)] = 70276, + [SMALL_STATE(1652)] = 70283, + [SMALL_STATE(1653)] = 70290, + [SMALL_STATE(1654)] = 70297, + [SMALL_STATE(1655)] = 70304, + [SMALL_STATE(1656)] = 70311, + [SMALL_STATE(1657)] = 70318, + [SMALL_STATE(1658)] = 70325, + [SMALL_STATE(1659)] = 70332, + [SMALL_STATE(1660)] = 70339, + [SMALL_STATE(1661)] = 70346, + [SMALL_STATE(1662)] = 70353, + [SMALL_STATE(1663)] = 70360, + [SMALL_STATE(1664)] = 70367, + [SMALL_STATE(1665)] = 70374, + [SMALL_STATE(1666)] = 70381, + [SMALL_STATE(1667)] = 70388, + [SMALL_STATE(1668)] = 70395, + [SMALL_STATE(1669)] = 70402, + [SMALL_STATE(1670)] = 70409, + [SMALL_STATE(1671)] = 70416, + [SMALL_STATE(1672)] = 70423, + [SMALL_STATE(1673)] = 70430, + [SMALL_STATE(1674)] = 70437, + [SMALL_STATE(1675)] = 70444, + [SMALL_STATE(1676)] = 70451, + [SMALL_STATE(1677)] = 70458, + [SMALL_STATE(1678)] = 70465, + [SMALL_STATE(1679)] = 70472, + [SMALL_STATE(1680)] = 70479, + [SMALL_STATE(1681)] = 70486, + [SMALL_STATE(1682)] = 70493, + [SMALL_STATE(1683)] = 70500, + [SMALL_STATE(1684)] = 70507, + [SMALL_STATE(1685)] = 70514, + [SMALL_STATE(1686)] = 70521, + [SMALL_STATE(1687)] = 70528, + [SMALL_STATE(1688)] = 70535, + [SMALL_STATE(1689)] = 70542, + [SMALL_STATE(1690)] = 70549, + [SMALL_STATE(1691)] = 70556, + [SMALL_STATE(1692)] = 70563, + [SMALL_STATE(1693)] = 70570, + [SMALL_STATE(1694)] = 70577, + [SMALL_STATE(1695)] = 70584, + [SMALL_STATE(1696)] = 70591, + [SMALL_STATE(1697)] = 70598, + [SMALL_STATE(1698)] = 70605, + [SMALL_STATE(1699)] = 70612, + [SMALL_STATE(1700)] = 70619, + [SMALL_STATE(1701)] = 70626, + [SMALL_STATE(1702)] = 70633, + [SMALL_STATE(1703)] = 70640, + [SMALL_STATE(1704)] = 70647, + [SMALL_STATE(1705)] = 70654, + [SMALL_STATE(1706)] = 70661, + [SMALL_STATE(1707)] = 70668, + [SMALL_STATE(1708)] = 70675, + [SMALL_STATE(1709)] = 70682, + [SMALL_STATE(1710)] = 70689, + [SMALL_STATE(1711)] = 70696, + [SMALL_STATE(1712)] = 70703, + [SMALL_STATE(1713)] = 70710, + [SMALL_STATE(1714)] = 70717, + [SMALL_STATE(1715)] = 70724, + [SMALL_STATE(1716)] = 70731, + [SMALL_STATE(1717)] = 70738, + [SMALL_STATE(1718)] = 70745, + [SMALL_STATE(1719)] = 70752, + [SMALL_STATE(1720)] = 70759, + [SMALL_STATE(1721)] = 70766, + [SMALL_STATE(1722)] = 70773, + [SMALL_STATE(1723)] = 70780, + [SMALL_STATE(1724)] = 70787, + [SMALL_STATE(1725)] = 70794, + [SMALL_STATE(1726)] = 70801, + [SMALL_STATE(1727)] = 70808, + [SMALL_STATE(1728)] = 70815, + [SMALL_STATE(1729)] = 70822, + [SMALL_STATE(1730)] = 70829, + [SMALL_STATE(1731)] = 70836, + [SMALL_STATE(1732)] = 70843, + [SMALL_STATE(1733)] = 70850, + [SMALL_STATE(1734)] = 70857, + [SMALL_STATE(1735)] = 70864, + [SMALL_STATE(1736)] = 70871, + [SMALL_STATE(1737)] = 70878, + [SMALL_STATE(1738)] = 70885, + [SMALL_STATE(1739)] = 70892, + [SMALL_STATE(1740)] = 70899, + [SMALL_STATE(1741)] = 70906, + [SMALL_STATE(1742)] = 70913, + [SMALL_STATE(1743)] = 70920, + [SMALL_STATE(1744)] = 70927, + [SMALL_STATE(1745)] = 70934, + [SMALL_STATE(1746)] = 70941, + [SMALL_STATE(1747)] = 70948, + [SMALL_STATE(1748)] = 70955, + [SMALL_STATE(1749)] = 70962, + [SMALL_STATE(1750)] = 70969, + [SMALL_STATE(1751)] = 70976, + [SMALL_STATE(1752)] = 70983, + [SMALL_STATE(1753)] = 70990, + [SMALL_STATE(1754)] = 70997, + [SMALL_STATE(1755)] = 71004, + [SMALL_STATE(1756)] = 71011, + [SMALL_STATE(1757)] = 71018, + [SMALL_STATE(1758)] = 71025, }; static const TSParseActionEntry ts_parse_actions[] = { @@ -84025,1704 +84108,1709 @@ 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, 0, 0), - [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(499), - [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(453), - [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1357), - [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1213), - [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), - [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(343), - [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(78), - [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(340), - [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(233), - [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(247), - [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(182), - [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1581), - [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1589), - [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1603), - [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(345), - [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(347), - [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(501), - [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(427), - [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1683), - [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(295), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(505), + [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(444), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1395), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1209), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), + [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(361), + [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(77), + [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(360), + [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(192), + [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(248), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(178), + [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1602), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1540), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1579), + [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(378), + [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(380), + [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(508), + [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(359), + [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1624), + [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(300), [47] = {.entry = {.count = 1, .reusable = false}}, SHIFT(66), - [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(643), - [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), - [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), - [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(349), - [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1699), - [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1743), - [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1653), - [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(452), - [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(469), - [67] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1659), - [69] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), - [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(396), - [73] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1027), - [75] = {.entry = {.count = 1, .reusable = false}}, SHIFT(179), - [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(950), - [79] = {.entry = {.count = 1, .reusable = false}}, SHIFT(950), + [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(685), + [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), + [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), + [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(384), + [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1625), + [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1634), + [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1650), + [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(458), + [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(483), + [67] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1729), + [69] = {.entry = {.count = 1, .reusable = true}}, SHIFT(353), + [71] = {.entry = {.count = 1, .reusable = false}}, SHIFT(355), + [73] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1028), + [75] = {.entry = {.count = 1, .reusable = false}}, SHIFT(181), + [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(905), + [79] = {.entry = {.count = 1, .reusable = false}}, SHIFT(905), [81] = {.entry = {.count = 1, .reusable = false}}, SHIFT(134), - [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1044), - [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1040), - [87] = {.entry = {.count = 1, .reusable = false}}, SHIFT(424), + [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1068), + [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1053), + [87] = {.entry = {.count = 1, .reusable = false}}, SHIFT(426), [89] = {.entry = {.count = 1, .reusable = false}}, SHIFT(437), [91] = {.entry = {.count = 1, .reusable = false}}, SHIFT(513), - [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(425), - [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1720), - [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(305), + [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(427), + [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1724), + [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(304), [99] = {.entry = {.count = 1, .reusable = false}}, SHIFT(67), - [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1745), - [103] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1723), - [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325), - [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1583), - [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), - [111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1533), - [113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(334), - [115] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(499), - [118] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(453), - [121] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1357), - [124] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1213), - [127] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(157), - [130] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(343), - [133] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(78), - [136] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(340), - [139] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(233), - [142] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(247), - [145] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(182), - [148] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1581), - [151] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1589), - [154] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1603), - [157] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(424), - [160] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(437), - [163] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(513), - [166] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(425), - [169] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1720), - [172] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(305), - [175] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(67), - [178] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(643), - [181] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(160), - [184] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(165), - [187] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(349), - [190] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1745), - [193] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1743), - [196] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1653), - [199] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(452), - [202] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(469), - [205] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1723), - [208] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(386), - [211] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(396), - [214] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1027), - [217] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(179), - [220] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(950), - [223] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(950), - [226] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(134), - [229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), - [231] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1044), - [234] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1040), - [237] = {.entry = {.count = 1, .reusable = true}}, SHIFT(333), - [239] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 1, 0, 0), - [241] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(345), - [244] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(347), - [247] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(501), - [250] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(427), - [253] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1683), - [256] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(295), + [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1749), + [103] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1727), + [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(317), + [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1589), + [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(333), + [111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1610), + [113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(335), + [115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module, 1, 0, 0), + [117] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(505), + [120] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(444), + [123] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1395), + [126] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1209), + [129] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(163), + [132] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(361), + [135] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(77), + [138] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(360), + [141] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(192), + [144] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(248), + [147] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(178), + [150] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1602), + [153] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1540), + [156] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1579), + [159] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(426), + [162] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(437), + [165] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(513), + [168] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(427), + [171] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1724), + [174] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(304), + [177] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(67), + [180] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(685), + [183] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(158), + [186] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(166), + [189] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(384), + [192] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1749), + [195] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1634), + [198] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1650), + [201] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(458), + [204] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(483), + [207] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1727), + [210] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(353), + [213] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(355), + [216] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1028), + [219] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(181), + [222] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(905), + [225] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(905), + [228] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(134), + [231] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), + [233] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1068), + [236] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1053), + [239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325), + [241] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(378), + [244] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(380), + [247] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(508), + [250] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(359), + [253] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1624), + [256] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(300), [259] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(66), - [262] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1699), - [265] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1659), - [268] = {.entry = {.count = 1, .reusable = false}}, SHIFT(778), - [270] = {.entry = {.count = 1, .reusable = false}}, SHIFT(774), + [262] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1625), + [265] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_module_repeat1, 2, 0, 0), SHIFT_REPEAT(1729), + [268] = {.entry = {.count = 1, .reusable = false}}, SHIFT(773), + [270] = {.entry = {.count = 1, .reusable = false}}, SHIFT(769), [272] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), - [274] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(236), + [274] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(207), [277] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 1), REDUCE(sym_primary_expression, 1, 0, 1), - [280] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(397), - [283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), + [280] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(432), + [283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(375), [285] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, 0, 1), - [287] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(688), - [290] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(208), - [293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), - [295] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(349), - [298] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(372), - [301] = {.entry = {.count = 1, .reusable = true}}, SHIFT(688), + [287] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(674), + [290] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(235), + [293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), + [295] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(384), + [298] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 1), SHIFT(395), + [301] = {.entry = {.count = 1, .reusable = true}}, SHIFT(674), [303] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), - [305] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1021), + [305] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1020), [307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 1), - [309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(720), - [311] = {.entry = {.count = 1, .reusable = false}}, SHIFT(720), + [309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(734), + [311] = {.entry = {.count = 1, .reusable = false}}, SHIFT(734), [313] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), - [315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1059), - [317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1061), - [319] = {.entry = {.count = 1, .reusable = false}}, SHIFT(494), - [321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(616), - [323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(493), - [327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320), - [331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(477), - [335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(544), - [339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(514), - [343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(483), - [347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(551), - [351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), - [353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(594), - [355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(531), - [359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [361] = {.entry = {.count = 1, .reusable = false}}, SHIFT(831), - [363] = {.entry = {.count = 1, .reusable = false}}, SHIFT(835), - [365] = {.entry = {.count = 1, .reusable = false}}, SHIFT(387), - [367] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), - [369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(561), - [371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(562), - [375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(441), - [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(568), - [383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), - [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(482), - [387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(448), - [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), - [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(570), - [395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), - [397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(574), - [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), - [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(511), - [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(576), - [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), - [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(613), - [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(497), - [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(485), - [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(332), - [423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(580), - [427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), - [429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(611), - [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(467), - [435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(456), - [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), - [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(475), - [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(500), - [447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(519), - [451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(536), - [455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(487), - [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(539), - [463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(457), - [467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(590), - [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), - [473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(458), - [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), - [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1216), - [479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(498), - [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(505), - [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(526), - [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(596), - [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(607), - [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(474), - [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), - [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(599), - [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), - [509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(449), - [511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(462), - [515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(518), - [519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(532), - [523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(443), - [527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(463), - [531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), - [533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(555), - [535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(543), - [539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(608), - [543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1183), - [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(446), - [551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(548), - [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(585), - [559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), - [563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1607), - [565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(316), - [567] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1598), - [569] = {.entry = {.count = 1, .reusable = true}}, SHIFT(330), - [571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(326), - [573] = {.entry = {.count = 1, .reusable = false}}, SHIFT(911), - [575] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), - [577] = {.entry = {.count = 1, .reusable = false}}, SHIFT(643), - [579] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), - [581] = {.entry = {.count = 1, .reusable = false}}, SHIFT(150), - [583] = {.entry = {.count = 1, .reusable = false}}, SHIFT(706), - [585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(236), + [315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1065), + [317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1042), + [319] = {.entry = {.count = 1, .reusable = false}}, SHIFT(507), + [321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(522), + [323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(461), + [327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(575), + [331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(463), + [335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(580), + [339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(479), + [343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(459), + [347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(328), + [351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(474), + [355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [357] = {.entry = {.count = 1, .reusable = false}}, SHIFT(856), + [359] = {.entry = {.count = 1, .reusable = false}}, SHIFT(878), + [361] = {.entry = {.count = 1, .reusable = false}}, SHIFT(391), + [363] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), + [365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(514), + [367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(582), + [371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(527), + [375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(586), + [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(535), + [383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(588), + [387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(537), + [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(538), + [395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), + [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(542), + [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(490), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(440), + [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(544), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(503), + [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(548), + [423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(489), + [427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(550), + [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(511), + [435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(487), + [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(592), + [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(554), + [447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(468), + [451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(442), + [455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(454), + [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(493), + [463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(558), + [467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(600), + [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(501), + [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(470), + [479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(598), + [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(609), + [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(562), + [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(443), + [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(467), + [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(497), + [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(567), + [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(605), + [511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(518), + [515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(570), + [519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(452), + [523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(447), + [527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1185), + [531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(498), + [535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(448), + [539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(611), + [543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(565), + [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1201), + [551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(614), + [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(572), + [559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320), + [563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(313), + [565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1551), + [567] = {.entry = {.count = 1, .reusable = true}}, SHIFT(326), + [569] = {.entry = {.count = 1, .reusable = true}}, SHIFT(318), + [571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1561), + [573] = {.entry = {.count = 1, .reusable = false}}, SHIFT(930), + [575] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), + [577] = {.entry = {.count = 1, .reusable = false}}, SHIFT(685), + [579] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), + [581] = {.entry = {.count = 1, .reusable = false}}, SHIFT(148), + [583] = {.entry = {.count = 1, .reusable = false}}, SHIFT(714), + [585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(207), [587] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 1), REDUCE(sym_list_splat_pattern, 2, 0, 8), - [590] = {.entry = {.count = 1, .reusable = true}}, SHIFT(367), + [590] = {.entry = {.count = 1, .reusable = true}}, SHIFT(390), [592] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, 0, 8), - [594] = {.entry = {.count = 1, .reusable = false}}, SHIFT(688), - [596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(208), + [594] = {.entry = {.count = 1, .reusable = false}}, SHIFT(674), + [596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(235), [598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, 0, 8), [600] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), - [602] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), - [604] = {.entry = {.count = 1, .reusable = true}}, SHIFT(406), - [606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(692), - [608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(232), - [610] = {.entry = {.count = 1, .reusable = false}}, SHIFT(142), - [612] = {.entry = {.count = 1, .reusable = false}}, SHIFT(949), - [614] = {.entry = {.count = 1, .reusable = false}}, SHIFT(918), - [616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), - [618] = {.entry = {.count = 1, .reusable = false}}, SHIFT(370), - [620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(642), - [622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223), - [624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), - [626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(949), - [628] = {.entry = {.count = 1, .reusable = false}}, SHIFT(147), - [630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1060), - [632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1055), - [634] = {.entry = {.count = 1, .reusable = false}}, SHIFT(362), - [636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(231), - [638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(408), - [640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(673), - [642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), - [644] = {.entry = {.count = 1, .reusable = false}}, SHIFT(151), - [646] = {.entry = {.count = 1, .reusable = false}}, SHIFT(985), - [648] = {.entry = {.count = 1, .reusable = false}}, SHIFT(988), - [650] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), - [652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), - [654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(628), - [656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(235), - [658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), - [660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(985), - [662] = {.entry = {.count = 1, .reusable = false}}, SHIFT(152), - [664] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1049), - [666] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1050), - [668] = {.entry = {.count = 1, .reusable = false}}, SHIFT(872), - [670] = {.entry = {.count = 1, .reusable = false}}, SHIFT(850), - [672] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), - [674] = {.entry = {.count = 1, .reusable = true}}, SHIFT(524), - [676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(401), - [678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), - [680] = {.entry = {.count = 1, .reusable = false}}, SHIFT(391), - [682] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1023), + [602] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), + [604] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), + [606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(651), + [608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(231), + [610] = {.entry = {.count = 1, .reusable = false}}, SHIFT(143), + [612] = {.entry = {.count = 1, .reusable = false}}, SHIFT(879), + [614] = {.entry = {.count = 1, .reusable = false}}, SHIFT(893), + [616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), + [618] = {.entry = {.count = 1, .reusable = false}}, SHIFT(430), + [620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(683), + [622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), + [624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), + [626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(879), + [628] = {.entry = {.count = 1, .reusable = false}}, SHIFT(146), + [630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1048), + [632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1046), + [634] = {.entry = {.count = 1, .reusable = false}}, SHIFT(960), + [636] = {.entry = {.count = 1, .reusable = false}}, SHIFT(967), + [638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(233), + [640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(338), + [642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(679), + [644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), + [646] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), + [648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(960), + [650] = {.entry = {.count = 1, .reusable = false}}, SHIFT(152), + [652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1061), + [654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1062), + [656] = {.entry = {.count = 1, .reusable = false}}, SHIFT(386), + [658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230), + [660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(411), + [662] = {.entry = {.count = 1, .reusable = true}}, SHIFT(697), + [664] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), + [666] = {.entry = {.count = 1, .reusable = false}}, SHIFT(153), + [668] = {.entry = {.count = 1, .reusable = false}}, SHIFT(870), + [670] = {.entry = {.count = 1, .reusable = false}}, SHIFT(858), + [672] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [674] = {.entry = {.count = 1, .reusable = true}}, SHIFT(954), + [676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(403), + [678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), + [680] = {.entry = {.count = 1, .reusable = false}}, SHIFT(350), + [682] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1025), [684] = {.entry = {.count = 1, .reusable = false}}, SHIFT(170), [686] = {.entry = {.count = 1, .reusable = false}}, SHIFT(149), - [688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(851), - [690] = {.entry = {.count = 1, .reusable = true}}, SHIFT(914), - [692] = {.entry = {.count = 1, .reusable = true}}, SHIFT(515), - [694] = {.entry = {.count = 1, .reusable = false}}, SHIFT(842), - [696] = {.entry = {.count = 1, .reusable = false}}, SHIFT(855), - [698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), - [700] = {.entry = {.count = 1, .reusable = false}}, SHIFT(632), - [702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, 0, 7), - [704] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 2, 0, 7), - [706] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), - [708] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), - [710] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 3, 0, 16), - [712] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 3, 0, 16), - [714] = {.entry = {.count = 1, .reusable = true}}, SHIFT(838), - [716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(924), - [718] = {.entry = {.count = 1, .reusable = false}}, SHIFT(837), - [720] = {.entry = {.count = 1, .reusable = false}}, SHIFT(854), - [722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192), - [724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1700), - [726] = {.entry = {.count = 1, .reusable = false}}, SHIFT(395), - [728] = {.entry = {.count = 1, .reusable = true}}, SHIFT(923), - [730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(390), - [732] = {.entry = {.count = 1, .reusable = false}}, SHIFT(416), - [734] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1026), - [736] = {.entry = {.count = 1, .reusable = false}}, SHIFT(145), - [738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1733), - [740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(707), - [742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1664), - [744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(878), - [746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1685), - [748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(989), - [750] = {.entry = {.count = 1, .reusable = false}}, SHIFT(832), - [752] = {.entry = {.count = 1, .reusable = false}}, SHIFT(836), - [754] = {.entry = {.count = 1, .reusable = false}}, SHIFT(354), - [756] = {.entry = {.count = 1, .reusable = false}}, SHIFT(397), + [688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(520), + [690] = {.entry = {.count = 1, .reusable = false}}, SHIFT(875), + [692] = {.entry = {.count = 1, .reusable = false}}, SHIFT(855), + [694] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), + [696] = {.entry = {.count = 1, .reusable = false}}, SHIFT(663), + [698] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, 0, 7), + [700] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 2, 0, 7), + [702] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), + [704] = {.entry = {.count = 1, .reusable = false}}, SHIFT(140), + [706] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 3, 0, 16), + [708] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_list, 3, 0, 16), + [710] = {.entry = {.count = 1, .reusable = true}}, SHIFT(841), + [712] = {.entry = {.count = 1, .reusable = true}}, SHIFT(907), + [714] = {.entry = {.count = 1, .reusable = true}}, SHIFT(576), + [716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(844), + [718] = {.entry = {.count = 1, .reusable = false}}, SHIFT(864), + [720] = {.entry = {.count = 1, .reusable = false}}, SHIFT(876), + [722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(236), + [724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1664), + [726] = {.entry = {.count = 1, .reusable = false}}, SHIFT(352), + [728] = {.entry = {.count = 1, .reusable = true}}, SHIFT(723), + [730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(349), + [732] = {.entry = {.count = 1, .reusable = false}}, SHIFT(419), + [734] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1024), + [736] = {.entry = {.count = 1, .reusable = false}}, SHIFT(150), + [738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1713), + [740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(902), + [742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1712), + [744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(968), + [746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1690), + [748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(901), + [750] = {.entry = {.count = 1, .reusable = false}}, SHIFT(842), + [752] = {.entry = {.count = 1, .reusable = false}}, SHIFT(853), + [754] = {.entry = {.count = 1, .reusable = false}}, SHIFT(405), + [756] = {.entry = {.count = 1, .reusable = false}}, SHIFT(432), [758] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 1, 0, 0), - [760] = {.entry = {.count = 1, .reusable = false}}, SHIFT(399), - [762] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1024), - [764] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), - [766] = {.entry = {.count = 1, .reusable = false}}, SHIFT(421), - [768] = {.entry = {.count = 1, .reusable = false}}, SHIFT(372), + [760] = {.entry = {.count = 1, .reusable = false}}, SHIFT(401), + [762] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1021), + [764] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), + [766] = {.entry = {.count = 1, .reusable = false}}, SHIFT(373), + [768] = {.entry = {.count = 1, .reusable = false}}, SHIFT(395), [770] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 3, 0, 16), [772] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, 0, 7), - [774] = {.entry = {.count = 1, .reusable = false}}, SHIFT(374), - [776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), - [778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), + [774] = {.entry = {.count = 1, .reusable = false}}, SHIFT(397), + [776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(399), + [778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), [780] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 3, 0, 52), - [782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(397), - [784] = {.entry = {.count = 1, .reusable = false}}, SHIFT(858), - [786] = {.entry = {.count = 1, .reusable = false}}, SHIFT(857), - [788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), - [790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(919), - [792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1640), - [794] = {.entry = {.count = 1, .reusable = false}}, SHIFT(144), - [796] = {.entry = {.count = 1, .reusable = false}}, SHIFT(366), - [798] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, 0, 26), - [800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(715), - [802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1615), - [804] = {.entry = {.count = 1, .reusable = false}}, SHIFT(407), - [806] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 1, 0, 0), - [808] = {.entry = {.count = 1, .reusable = false}}, SHIFT(786), - [810] = {.entry = {.count = 1, .reusable = false}}, SHIFT(787), - [812] = {.entry = {.count = 1, .reusable = true}}, SHIFT(767), - [814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(395), - [816] = {.entry = {.count = 1, .reusable = false}}, SHIFT(138), - [818] = {.entry = {.count = 1, .reusable = false}}, SHIFT(169), - [820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(960), - [822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1737), - [824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(912), - [826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1684), - [828] = {.entry = {.count = 1, .reusable = false}}, SHIFT(984), - [830] = {.entry = {.count = 1, .reusable = false}}, SHIFT(986), - [832] = {.entry = {.count = 1, .reusable = false}}, SHIFT(153), - [834] = {.entry = {.count = 1, .reusable = true}}, SHIFT(887), - [836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(892), - [838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(903), - [840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(908), - [842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(726), - [844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(729), - [846] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 2, 0, 7), - [848] = {.entry = {.count = 1, .reusable = false}}, SHIFT(409), - [850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(371), - [852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(732), - [854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(733), - [856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(734), - [858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(735), - [860] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 7, 0, 145), - [862] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 7, 0, 145), - [864] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1022), - [866] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 3, 0, 16), - [868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(941), - [870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(942), - [872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(873), - [874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(945), - [876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(783), - [878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(915), - [880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(916), - [882] = {.entry = {.count = 1, .reusable = true}}, SHIFT(893), - [884] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 126), - [886] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, 0, 126), - [888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(736), - [890] = {.entry = {.count = 1, .reusable = true}}, SHIFT(971), - [892] = {.entry = {.count = 1, .reusable = true}}, SHIFT(974), - [894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(977), - [896] = {.entry = {.count = 1, .reusable = true}}, SHIFT(978), - [898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(979), - [900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(980), - [902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(737), - [904] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 127), - [906] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, 0, 127), - [908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(880), - [910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(883), - [912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(886), - [914] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 101), - [916] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 5, 0, 101), - [918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(888), - [920] = {.entry = {.count = 1, .reusable = true}}, SHIFT(889), - [922] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1, 0, 0), - [924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(276), + [782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(432), + [784] = {.entry = {.count = 1, .reusable = false}}, SHIFT(785), + [786] = {.entry = {.count = 1, .reusable = false}}, SHIFT(786), + [788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), + [790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(787), + [792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(352), + [794] = {.entry = {.count = 1, .reusable = false}}, SHIFT(138), + [796] = {.entry = {.count = 1, .reusable = false}}, SHIFT(971), + [798] = {.entry = {.count = 1, .reusable = false}}, SHIFT(973), + [800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(724), + [802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1618), + [804] = {.entry = {.count = 1, .reusable = false}}, SHIFT(151), + [806] = {.entry = {.count = 1, .reusable = false}}, SHIFT(348), + [808] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 1, 0, 0), + [810] = {.entry = {.count = 1, .reusable = false}}, SHIFT(169), + [812] = {.entry = {.count = 1, .reusable = false}}, SHIFT(867), + [814] = {.entry = {.count = 1, .reusable = false}}, SHIFT(836), + [816] = {.entry = {.count = 1, .reusable = false}}, SHIFT(145), + [818] = {.entry = {.count = 1, .reusable = false}}, SHIFT(363), + [820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(989), + [822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1743), + [824] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, 0, 26), + [826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(934), + [828] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1643), + [830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(903), + [832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1637), + [834] = {.entry = {.count = 1, .reusable = true}}, SHIFT(719), + [836] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 1, 0, 0), + [838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(736), + [840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(737), + [842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(720), + [844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(711), + [846] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 7, 0, 145), + [848] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 7, 0, 145), + [850] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1027), + [852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(891), + [854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(895), + [856] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 3, 0, 16), + [858] = {.entry = {.count = 1, .reusable = false}}, SHIFT(370), + [860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(394), + [862] = {.entry = {.count = 1, .reusable = true}}, SHIFT(707), + [864] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 126), + [866] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, 0, 126), + [868] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 2, 0, 7), + [870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(896), + [872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(898), + [874] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 127), + [876] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 6, 0, 127), + [878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(899), + [880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(900), + [882] = {.entry = {.count = 1, .reusable = true}}, SHIFT(917), + [884] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 101), + [886] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_in_clause, 5, 0, 101), + [888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(981), + [890] = {.entry = {.count = 1, .reusable = true}}, SHIFT(984), + [892] = {.entry = {.count = 1, .reusable = true}}, SHIFT(988), + [894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(966), + [896] = {.entry = {.count = 1, .reusable = true}}, SHIFT(985), + [898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(987), + [900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(715), + [902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(708), + [904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(880), + [906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(883), + [908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(886), + [910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(887), + [912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(888), + [914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(889), + [916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(914), + [918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(920), + [920] = {.entry = {.count = 1, .reusable = true}}, SHIFT(768), + [922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(915), + [924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(279), [926] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, 0, 7), - [928] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, 0, 34), - [930] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 3, 0, 16), - [932] = {.entry = {.count = 1, .reusable = true}}, SHIFT(940), - [934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(879), - [936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(964), - [938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(898), - [940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(920), - [942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(970), - [944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(719), - [946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(725), - [948] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 4, 0, 57), - [950] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 4, 0, 57), + [928] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 3, 0, 16), + [930] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, 0, 34), + [932] = {.entry = {.count = 1, .reusable = true}}, SHIFT(990), + [934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(727), + [936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(974), + [938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(705), + [940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(890), + [942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(945), + [944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(919), + [946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(924), + [948] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, 0, 84), + [950] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, 0, 84), [952] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1635), - [954] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1736), - [956] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1632), - [958] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, 0, 84), - [960] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, 0, 84), - [962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(409), - [964] = {.entry = {.count = 1, .reusable = false}}, SHIFT(907), - [966] = {.entry = {.count = 1, .reusable = false}}, SHIFT(913), - [968] = {.entry = {.count = 1, .reusable = true}}, SHIFT(323), - [970] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), - [972] = {.entry = {.count = 1, .reusable = false}}, SHIFT(389), - [974] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1025), - [976] = {.entry = {.count = 1, .reusable = false}}, SHIFT(146), - [978] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1637), - [980] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1739), - [982] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1693), - [984] = {.entry = {.count = 1, .reusable = false}}, SHIFT(304), - [986] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 1, 0, 0), - [988] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), - [990] = {.entry = {.count = 1, .reusable = true}}, SHIFT(335), - [992] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), - [994] = {.entry = {.count = 1, .reusable = false}}, SHIFT(292), - [996] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 70), - [998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(297), - [1000] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1726), - [1002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), - [1004] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, 0, 30), - [1006] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, 0, 29), + [954] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1735), + [956] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1681), + [958] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 70), + [960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(297), + [962] = {.entry = {.count = 1, .reusable = false}}, SHIFT(909), + [964] = {.entry = {.count = 1, .reusable = false}}, SHIFT(911), + [966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(322), + [968] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [970] = {.entry = {.count = 1, .reusable = false}}, SHIFT(400), + [972] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1026), + [974] = {.entry = {.count = 1, .reusable = false}}, SHIFT(144), + [976] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 4, 0, 57), + [978] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 4, 0, 57), + [980] = {.entry = {.count = 1, .reusable = false}}, SHIFT(290), + [982] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1639), + [984] = {.entry = {.count = 1, .reusable = false}}, SHIFT(296), + [986] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1636), + [988] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1740), + [990] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 1, 0, 0), + [992] = {.entry = {.count = 1, .reusable = true}}, SHIFT(307), + [994] = {.entry = {.count = 1, .reusable = true}}, SHIFT(370), + [996] = {.entry = {.count = 1, .reusable = true}}, SHIFT(336), + [998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [1000] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 10), + [1002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), + [1004] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, 0, 29), + [1006] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 69), [1008] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 70), - [1010] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 0), + [1010] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1711), [1012] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 0), - [1014] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 10), - [1016] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 98), - [1018] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1704), - [1020] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 69), - [1022] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1, 0, 0), - [1024] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1, 0, 0), - [1026] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 3, 0, 0), - [1028] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 3, 0, 0), - [1030] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 4, 0, 71), - [1032] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 4, 0, 71), - [1034] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), - [1036] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), - [1038] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(292), - [1041] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), - [1043] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), - [1045] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), SHIFT_REPEAT(1739), - [1048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, 0, 41), - [1050] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attribute, 3, 0, 41), - [1052] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 2, 0, 0), - [1054] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 2, 0, 0), - [1056] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 105), - [1058] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 105), - [1060] = {.entry = {.count = 1, .reusable = false}}, SHIFT(394), - [1062] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, 0, 55), - [1064] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, 0, 55), - [1066] = {.entry = {.count = 1, .reusable = false}}, SHIFT(431), - [1068] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 79), - [1070] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 79), - [1072] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 80), - [1074] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 80), - [1076] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(304), - [1079] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 4, 0, 0), - [1081] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 4, 0, 0), - [1083] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), SHIFT_REPEAT(1736), - [1086] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2, 0, 0), - [1088] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2, 0, 0), - [1090] = {.entry = {.count = 1, .reusable = false}}, SHIFT(617), - [1092] = {.entry = {.count = 1, .reusable = false}}, SHIFT(618), + [1014] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 98), + [1016] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 0), + [1018] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1679), + [1020] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 4, 0, 30), + [1022] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 4, 0, 55), + [1024] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 4, 0, 55), + [1026] = {.entry = {.count = 1, .reusable = false}}, SHIFT(422), + [1028] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 3, 0, 0), + [1030] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 3, 0, 0), + [1032] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 2, 0, 0), + [1034] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 2, 0, 0), + [1036] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 80), + [1038] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 80), + [1040] = {.entry = {.count = 1, .reusable = false}}, SHIFT(431), + [1042] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1, 0, 0), + [1044] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1, 0, 0), + [1046] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__simple_statements, 4, 0, 0), + [1048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__simple_statements, 4, 0, 0), + [1050] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_subscript, 4, 0, 71), + [1052] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_subscript, 4, 0, 71), + [1054] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 105), + [1056] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 105), + [1058] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), + [1060] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), + [1062] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(296), + [1065] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2, 0, 0), + [1067] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2, 0, 0), + [1069] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, 0, 41), + [1071] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attribute, 3, 0, 41), + [1073] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 79), + [1075] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 79), + [1077] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(290), + [1080] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), + [1082] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), + [1084] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), SHIFT_REPEAT(1740), + [1087] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_try_statement_repeat2, 2, 0, 0), SHIFT_REPEAT(1735), + [1090] = {.entry = {.count = 1, .reusable = false}}, SHIFT(618), + [1092] = {.entry = {.count = 1, .reusable = false}}, SHIFT(617), [1094] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), - [1096] = {.entry = {.count = 1, .reusable = true}}, SHIFT(509), - [1098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(290), - [1100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1705), - [1102] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), - [1104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), - [1106] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), SHIFT_REPEAT(431), - [1109] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), SHIFT_REPEAT(394), - [1112] = {.entry = {.count = 1, .reusable = false}}, SHIFT(849), - [1114] = {.entry = {.count = 1, .reusable = false}}, SHIFT(859), - [1116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(148), - [1118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(506), + [1096] = {.entry = {.count = 1, .reusable = true}}, SHIFT(512), + [1098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), + [1100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1738), + [1102] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), + [1104] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), + [1106] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), SHIFT_REPEAT(422), + [1109] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 2, 0, 103), SHIFT_REPEAT(431), + [1112] = {.entry = {.count = 1, .reusable = false}}, SHIFT(837), + [1114] = {.entry = {.count = 1, .reusable = false}}, SHIFT(854), + [1116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(147), + [1118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(494), [1120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(306), - [1122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1746), - [1124] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 8, 0, 169), - [1126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 8, 0, 169), - [1128] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cases, 1, 0, 0), - [1130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cases, 1, 0, 0), - [1132] = {.entry = {.count = 1, .reusable = false}}, SHIFT(870), - [1134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, 0, 134), + [1122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1750), + [1124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 8, 0, 169), + [1126] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 8, 0, 169), + [1128] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 3, 0, 57), + [1130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 3, 0, 57), + [1132] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, 0, 84), + [1134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, 0, 84), [1136] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, 0, 134), - [1138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 6, 0, 161), - [1140] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 6, 0, 161), - [1142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 6, 0, 162), - [1144] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 6, 0, 162), - [1146] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), - [1148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), - [1150] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), SHIFT_REPEAT(870), - [1153] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), SHIFT_REPEAT(869), - [1156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 7, 0, 167), - [1158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 7, 0, 167), - [1160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, 0, 84), - [1162] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 4, 0, 84), - [1164] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 3, 0, 57), - [1166] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 3, 0, 57), - [1168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 7, 0, 168), - [1170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 7, 0, 168), - [1172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1054), - [1174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1385), - [1176] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1269), - [1178] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 5, 0, 152), - [1180] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 5, 0, 152), - [1182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 5, 0, 151), - [1184] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 5, 0, 151), - [1186] = {.entry = {.count = 1, .reusable = false}}, SHIFT(869), - [1188] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1422), - [1190] = {.entry = {.count = 1, .reusable = true}}, SHIFT(632), - [1192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, 0, 26), - [1194] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 4, 0, 55), - [1196] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 4, 0, 55), - [1198] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 147), - [1200] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 147), - [1202] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1416), - [1204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 0), - [1206] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 0), REDUCE(sym_list_splat_pattern, 2, 0, 9), - [1209] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 0), - [1211] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, 0, 9), - [1213] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, 0, 9), - [1215] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 3, 0, 52), - [1217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 5, 0, 80), - [1219] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 5, 0, 80), - [1221] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 77), - [1223] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 77), - [1225] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 6, 0, 108), - [1227] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 6, 0, 108), - [1229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, 0, 56), - [1231] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, 0, 56), - [1233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, 0, 84), - [1235] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, 0, 84), - [1237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, 0, 83), - [1239] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, 0, 83), - [1241] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, 0, 57), - [1243] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, 0, 57), - [1245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 129), - [1247] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 129), - [1249] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 133), - [1251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 133), - [1253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 3, 0, 57), - [1255] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 3, 0, 57), - [1257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, 0, 154), - [1259] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, 0, 154), - [1261] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, 0, 155), - [1263] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, 0, 155), - [1265] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 0), REDUCE(sym_primary_expression, 1, 0, 0), - [1268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(369), - [1270] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, 0, 0), - [1272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 0), - [1274] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 4, 0, 138), - [1276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 4, 0, 138), - [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 4, 0, 84), - [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 4, 0, 84), - [1282] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 6, 0, 163), - [1284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 6, 0, 163), + [1138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 4, 0, 134), + [1140] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 5, 0, 151), + [1142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 5, 0, 151), + [1144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1354), + [1146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1283), + [1148] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 5, 0, 152), + [1150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 5, 0, 152), + [1152] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 6, 0, 161), + [1154] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 6, 0, 161), + [1156] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 6, 0, 162), + [1158] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 6, 0, 162), + [1160] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_group_clause, 7, 0, 167), + [1162] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_group_clause, 7, 0, 167), + [1164] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_except_clause, 7, 0, 168), + [1166] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_except_clause, 7, 0, 168), + [1168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), + [1170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), + [1172] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), SHIFT_REPEAT(813), + [1175] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cases, 1, 0, 0), + [1177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cases, 1, 0, 0), + [1179] = {.entry = {.count = 1, .reusable = false}}, SHIFT(832), + [1181] = {.entry = {.count = 1, .reusable = false}}, SHIFT(813), + [1183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1045), + [1185] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cases_repeat1, 2, 0, 0), SHIFT_REPEAT(832), + [1188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 5, 0, 57), + [1190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 5, 0, 57), + [1192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 133), + [1194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 133), + [1196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 4, 0, 55), + [1198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 4, 0, 55), + [1200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 4, 0, 56), + [1202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 4, 0, 56), + [1204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 147), + [1206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 147), + [1208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, 0, 83), + [1210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, 0, 83), + [1212] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, 0, 84), + [1214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, 0, 84), + [1216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1479), + [1218] = {.entry = {.count = 1, .reusable = true}}, SHIFT(663), + [1220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, 0, 26), + [1222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_elif_clause, 5, 0, 80), + [1224] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_elif_clause, 5, 0, 80), + [1226] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 3, 0, 52), + [1228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 6, 0, 108), + [1230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 6, 0, 108), + [1232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 77), + [1234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_statement_repeat1, 1, 0, 77), + [1236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 0), + [1238] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_primary_expression, 1, 0, 0), REDUCE(sym_list_splat_pattern, 2, 0, 9), + [1241] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primary_expression, 1, 0, 0), + [1243] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat_pattern, 2, 0, 9), + [1245] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_splat_pattern, 2, 0, 9), + [1247] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1489), + [1249] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 129), + [1251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 129), + [1253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 6, 0, 163), + [1255] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 6, 0, 163), + [1257] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 4, 0, 138), + [1259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 4, 0, 138), + [1261] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, 0, 154), + [1263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, 0, 154), + [1265] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_case_block, 5, 0, 155), + [1267] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_block, 5, 0, 155), + [1269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 3, 0, 57), + [1271] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 3, 0, 57), + [1273] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 0), REDUCE(sym_primary_expression, 1, 0, 0), + [1276] = {.entry = {.count = 1, .reusable = true}}, SHIFT(371), + [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern, 1, 0, 0), + [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern, 1, 0, 0), + [1282] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_else_clause, 4, 0, 84), + [1284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else_clause, 4, 0, 84), [1286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 4, 0, 65), [1288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 4, 0, 65), - [1290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 2, 0, 0), - [1292] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_list_pattern, 2, 0, 0), REDUCE(sym_list, 2, 0, 0), - [1295] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 2, 0, 0), - [1297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 2, 0, 0), - [1299] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_pattern, 2, 0, 0), - [1301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 9, 0, 158), - [1303] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 9, 0, 158), - [1305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 159), - [1307] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 159), - [1309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 160), - [1311] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 160), - [1313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 93), - [1315] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 93), - [1317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 102), - [1319] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 102), - [1321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 104), - [1323] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 104), - [1325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 165), - [1327] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 165), - [1329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 10, 0, 166), - [1331] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 10, 0, 166), - [1333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2, 0, 0), - [1335] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_tuple_pattern, 2, 0, 0), REDUCE(sym_tuple, 2, 0, 0), - [1338] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2, 0, 0), - [1340] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 2, 0, 0), - [1342] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_pattern, 2, 0, 0), - [1344] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 6, 0, 106), - [1346] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 6, 0, 106), - [1348] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 107), - [1350] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 107), - [1352] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 146), - [1354] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 146), - [1356] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 78), - [1358] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 78), - [1360] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 6, 0, 109), - [1362] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 6, 0, 109), - [1364] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, 0, 81), - [1366] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, 0, 81), - [1368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 3, 0, 57), - [1370] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 3, 0, 57), - [1372] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_decorated_definition, 2, 0, 19), - [1374] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorated_definition, 2, 0, 19), - [1376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, 0, 57), - [1378] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, 0, 57), - [1380] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 148), - [1382] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 148), - [1384] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, 0, 82), - [1386] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, 0, 82), - [1388] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 94), - [1390] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 94), - [1392] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 117), - [1394] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 117), - [1396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 149), - [1398] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 149), - [1400] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 118), - [1402] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 118), - [1404] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 4, 0, 58), - [1406] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 4, 0, 58), - [1408] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, 0, 60), - [1410] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, 0, 60), - [1412] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, 0, 61), - [1414] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, 0, 61), - [1416] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 119), - [1418] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 119), - [1420] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 120), - [1422] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 120), - [1424] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 121), - [1426] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 121), - [1428] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 150), - [1430] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 150), - [1432] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, 0, 85), - [1434] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, 0, 85), - [1436] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 92), - [1438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 92), - [1440] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 7, 0, 128), - [1442] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 7, 0, 128), - [1444] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 130), - [1446] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 130), - [1448] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 131), - [1450] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 131), - [1452] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 132), - [1454] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 132), - [1456] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 4, 0, 84), - [1458] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 4, 0, 84), - [1460] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 7, 0, 84), - [1462] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 7, 0, 84), - [1464] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 141), - [1466] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 141), - [1468] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 142), - [1470] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 142), - [1472] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 7, 0, 143), - [1474] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, 0, 143), - [1476] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 156), - [1478] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 156), - [1480] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 157), - [1482] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 157), - [1484] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 5, 0, 90), - [1486] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 5, 0, 90), - [1488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(355), - [1490] = {.entry = {.count = 1, .reusable = false}}, SHIFT(860), - [1492] = {.entry = {.count = 1, .reusable = false}}, SHIFT(871), + [1290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 165), + [1292] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 165), + [1294] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_decorated_definition, 2, 0, 19), + [1296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorated_definition, 2, 0, 19), + [1298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 78), + [1300] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 5, 0, 78), + [1302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, 0, 81), + [1304] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, 0, 81), + [1306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 2, 0, 0), + [1308] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_list_pattern, 2, 0, 0), REDUCE(sym_list, 2, 0, 0), + [1311] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 2, 0, 0), + [1313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 2, 0, 0), + [1315] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_pattern, 2, 0, 0), + [1317] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 4, 0, 58), + [1319] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 4, 0, 58), + [1321] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, 0, 60), + [1323] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, 0, 60), + [1325] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_statement, 4, 0, 61), + [1327] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_statement, 4, 0, 61), + [1329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 5, 0, 82), + [1331] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 5, 0, 82), + [1333] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 5, 0, 85), + [1335] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 5, 0, 85), + [1337] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 5, 0, 90), + [1339] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 5, 0, 90), + [1341] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 92), + [1343] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 92), + [1345] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 93), + [1347] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 93), + [1349] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 5, 0, 94), + [1351] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 5, 0, 94), + [1353] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 102), + [1355] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 102), + [1357] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 6, 0, 104), + [1359] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 6, 0, 104), + [1361] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_with_statement, 6, 0, 106), + [1363] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_statement, 6, 0, 106), + [1365] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 107), + [1367] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 107), + [1369] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 6, 0, 109), + [1371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 6, 0, 109), + [1373] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 3, 0, 57), + [1375] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 3, 0, 57), + [1377] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 6, 0, 57), + [1379] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 6, 0, 57), + [1381] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 117), + [1383] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 117), + [1385] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 6, 0, 118), + [1387] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 6, 0, 118), + [1389] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 119), + [1391] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 119), + [1393] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 120), + [1395] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 120), + [1397] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 6, 0, 121), + [1399] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 6, 0, 121), + [1401] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 7, 0, 128), + [1403] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 7, 0, 128), + [1405] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 130), + [1407] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 130), + [1409] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 131), + [1411] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 131), + [1413] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 7, 0, 132), + [1415] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 132), + [1417] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_finally_clause, 4, 0, 84), + [1419] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_finally_clause, 4, 0, 84), + [1421] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_statement, 7, 0, 84), + [1423] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_statement, 7, 0, 84), + [1425] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 141), + [1427] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 141), + [1429] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 7, 0, 142), + [1431] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 7, 0, 142), + [1433] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 7, 0, 143), + [1435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_definition, 7, 0, 143), + [1437] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 146), + [1439] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 146), + [1441] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 148), + [1443] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 148), + [1445] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 149), + [1447] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 149), + [1449] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 8, 0, 150), + [1451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 8, 0, 150), + [1453] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 156), + [1455] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 156), + [1457] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 8, 0, 157), + [1459] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 8, 0, 157), + [1461] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_statement, 9, 0, 158), + [1463] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 9, 0, 158), + [1465] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 10, 0, 166), + [1467] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 10, 0, 166), + [1469] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 160), + [1471] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 160), + [1473] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2, 0, 0), + [1475] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_tuple_pattern, 2, 0, 0), REDUCE(sym_tuple, 2, 0, 0), + [1478] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2, 0, 0), + [1480] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 2, 0, 0), + [1482] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_pattern, 2, 0, 0), + [1484] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 9, 0, 159), + [1486] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_definition, 9, 0, 159), + [1488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(406), + [1490] = {.entry = {.count = 1, .reusable = false}}, SHIFT(877), + [1492] = {.entry = {.count = 1, .reusable = false}}, SHIFT(868), [1494] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_separator, 1, 0, 0), - [1496] = {.entry = {.count = 1, .reusable = false}}, SHIFT(143), - [1498] = {.entry = {.count = 1, .reusable = false}}, SHIFT(647), - [1500] = {.entry = {.count = 1, .reusable = false}}, SHIFT(671), - [1502] = {.entry = {.count = 1, .reusable = false}}, SHIFT(652), - [1504] = {.entry = {.count = 1, .reusable = false}}, SHIFT(633), - [1506] = {.entry = {.count = 1, .reusable = false}}, SHIFT(675), - [1508] = {.entry = {.count = 1, .reusable = false}}, SHIFT(687), - [1510] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), - [1512] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), - [1514] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1061), - [1517] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1013), - [1519] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1011), - [1521] = {.entry = {.count = 1, .reusable = false}}, SHIFT(244), - [1523] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), - [1525] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), - [1527] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1059), - [1530] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_string, 2, 0, 0), - [1532] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_string, 2, 0, 0), - [1534] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_template_string, 2, 0, 0), - [1536] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_template_string, 2, 0, 0), - [1538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_string, 3, 0, 20), - [1540] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_string, 3, 0, 20), - [1542] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_string, 2, 0, 2), - [1544] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_string, 2, 0, 2), - [1546] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 2, 0, 2), - [1548] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 2, 0, 2), - [1550] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 3, 0, 20), - [1552] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3, 0, 20), - [1554] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1681), - [1556] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), - [1558] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0), - [1560] = {.entry = {.count = 1, .reusable = false}}, SHIFT(674), - [1562] = {.entry = {.count = 1, .reusable = true}}, SHIFT(676), - [1564] = {.entry = {.count = 1, .reusable = true}}, SHIFT(677), - [1566] = {.entry = {.count = 1, .reusable = true}}, SHIFT(678), - [1568] = {.entry = {.count = 1, .reusable = true}}, SHIFT(680), - [1570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), - [1572] = {.entry = {.count = 1, .reusable = true}}, SHIFT(681), - [1574] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1, 0, 0), - [1576] = {.entry = {.count = 1, .reusable = true}}, SHIFT(674), - [1578] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1710), - [1580] = {.entry = {.count = 1, .reusable = true}}, SHIFT(682), - [1582] = {.entry = {.count = 1, .reusable = true}}, SHIFT(683), - [1584] = {.entry = {.count = 1, .reusable = false}}, SHIFT(677), - [1586] = {.entry = {.count = 1, .reusable = true}}, SHIFT(625), - [1588] = {.entry = {.count = 1, .reusable = false}}, SHIFT(645), - [1590] = {.entry = {.count = 1, .reusable = true}}, SHIFT(649), - [1592] = {.entry = {.count = 1, .reusable = true}}, SHIFT(650), - [1594] = {.entry = {.count = 1, .reusable = true}}, SHIFT(654), - [1596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(655), - [1598] = {.entry = {.count = 1, .reusable = true}}, SHIFT(656), - [1600] = {.entry = {.count = 1, .reusable = true}}, SHIFT(645), - [1602] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1702), - [1604] = {.entry = {.count = 1, .reusable = true}}, SHIFT(626), - [1606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(659), - [1608] = {.entry = {.count = 1, .reusable = false}}, SHIFT(650), - [1610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(624), - [1612] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 2, 0, 0), - [1614] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 2, 0, 0), - [1616] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call, 2, 0, 17), - [1618] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call, 2, 0, 17), - [1620] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3, 0, 28), - [1622] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3, 0, 28), - [1624] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3, 0, 27), - [1626] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3, 0, 27), - [1628] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 3, 0, 27), - [1630] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 3, 0, 27), - [1632] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, 0, 0), - [1634] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, 0, 0), - [1636] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, 0, 32), - [1638] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, 0, 32), - [1640] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set, 3, 0, 27), - [1642] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set, 3, 0, 27), - [1644] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2, 0, 0), - [1646] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2, 0, 0), - [1648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generator_expression, 4, 0, 51), - [1650] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generator_expression, 4, 0, 51), - [1652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_comprehension, 4, 0, 51), - [1654] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_comprehension, 4, 0, 51), - [1656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set_comprehension, 4, 0, 51), - [1658] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set_comprehension, 4, 0, 51), - [1660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, 0, 32), - [1662] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, 0, 32), - [1664] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, 0, 62), - [1666] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, 0, 62), - [1668] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 0), - [1670] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 0), - [1672] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 32), - [1674] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 32), - [1676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 68), - [1678] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 68), - [1680] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 5, 0, 62), - [1682] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 5, 0, 62), - [1684] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 32), - [1686] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 32), - [1688] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 62), - [1690] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 62), - [1692] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 68), - [1694] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 68), - [1696] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 96), - [1698] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 96), - [1700] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, 0, 62), - [1702] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, 0, 62), - [1704] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, 0, 96), - [1706] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, 0, 96), - [1708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_comprehension, 4, 0, 51), - [1710] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary_comprehension, 4, 0, 51), - [1712] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operator, 3, 0, 40), - [1714] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operator, 3, 0, 40), + [1496] = {.entry = {.count = 1, .reusable = false}}, SHIFT(142), + [1498] = {.entry = {.count = 1, .reusable = false}}, SHIFT(699), + [1500] = {.entry = {.count = 1, .reusable = false}}, SHIFT(653), + [1502] = {.entry = {.count = 1, .reusable = false}}, SHIFT(640), + [1504] = {.entry = {.count = 1, .reusable = false}}, SHIFT(650), + [1506] = {.entry = {.count = 1, .reusable = false}}, SHIFT(673), + [1508] = {.entry = {.count = 1, .reusable = false}}, SHIFT(696), + [1510] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1011), + [1512] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1006), + [1514] = {.entry = {.count = 1, .reusable = false}}, SHIFT(246), + [1516] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_string, 2, 0, 0), + [1518] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_string, 2, 0, 0), + [1520] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_concatenated_template_string, 2, 0, 0), + [1522] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_concatenated_template_string, 2, 0, 0), + [1524] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), + [1526] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), + [1528] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1065), + [1531] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), + [1533] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), + [1535] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1042), + [1538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 2, 0, 2), + [1540] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 2, 0, 2), + [1542] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 3, 0, 20), + [1544] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string, 3, 0, 20), + [1546] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_string, 3, 0, 20), + [1548] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_string, 3, 0, 20), + [1550] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_string, 2, 0, 2), + [1552] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_string, 2, 0, 2), + [1554] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 0), + [1556] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 0), + [1558] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 5, 0, 62), + [1560] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 5, 0, 62), + [1562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3, 0, 27), + [1564] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3, 0, 27), + [1566] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list, 3, 0, 27), + [1568] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list, 3, 0, 27), + [1570] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, 0, 0), + [1572] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, 0, 0), + [1574] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, 0, 62), + [1576] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, 0, 62), + [1578] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 32), + [1580] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 32), + [1582] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 3, 0, 32), + [1584] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 3, 0, 32), + [1586] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 32), + [1588] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 32), + [1590] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 62), + [1592] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 62), + [1594] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generator_expression, 4, 0, 51), + [1596] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_generator_expression, 4, 0, 51), + [1598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 68), + [1600] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 68), + [1602] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 5, 0, 96), + [1604] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 5, 0, 96), + [1606] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set, 3, 0, 27), + [1608] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set, 3, 0, 27), + [1610] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 2, 0, 0), + [1612] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 2, 0, 0), + [1614] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2, 0, 0), + [1616] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 2, 0, 0), + [1618] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_comprehension, 4, 0, 51), + [1620] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_comprehension, 4, 0, 51), + [1622] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_set_comprehension, 4, 0, 51), + [1624] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_set_comprehension, 4, 0, 51), + [1626] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, 0, 32), + [1628] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, 0, 32), + [1630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1658), + [1632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), + [1634] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0), + [1636] = {.entry = {.count = 1, .reusable = false}}, SHIFT(664), + [1638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(665), + [1640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(666), + [1642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(667), + [1644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(668), + [1646] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), + [1648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(669), + [1650] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1, 0, 0), + [1652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(664), + [1654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1721), + [1656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(670), + [1658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(671), + [1660] = {.entry = {.count = 1, .reusable = false}}, SHIFT(666), + [1662] = {.entry = {.count = 1, .reusable = true}}, SHIFT(624), + [1664] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_comprehension, 4, 0, 51), + [1666] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary_comprehension, 4, 0, 51), + [1668] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3, 0, 28), + [1670] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesized_expression, 3, 0, 28), + [1672] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call, 2, 0, 17), + [1674] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call, 2, 0, 17), + [1676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary, 4, 0, 62), + [1678] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dictionary, 4, 0, 62), + [1680] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 3, 0, 68), + [1682] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 3, 0, 68), + [1684] = {.entry = {.count = 1, .reusable = false}}, SHIFT(677), + [1686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(678), + [1688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(680), + [1690] = {.entry = {.count = 1, .reusable = true}}, SHIFT(681), + [1692] = {.entry = {.count = 1, .reusable = true}}, SHIFT(682), + [1694] = {.entry = {.count = 1, .reusable = true}}, SHIFT(684), + [1696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(677), + [1698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1670), + [1700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(694), + [1702] = {.entry = {.count = 1, .reusable = true}}, SHIFT(628), + [1704] = {.entry = {.count = 1, .reusable = false}}, SHIFT(680), + [1706] = {.entry = {.count = 1, .reusable = true}}, SHIFT(620), + [1708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 4, 0, 96), + [1710] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_argument_list, 4, 0, 96), + [1712] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), + [1714] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), [1716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 72), [1718] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 72), [1720] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 73), [1722] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 3, 0, 73), - [1724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_await, 2, 0, 0), - [1726] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_await, 2, 0, 0), - [1728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operator, 2, 0, 13), - [1730] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operator, 2, 0, 13), - [1732] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1049), - [1735] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1050), - [1738] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), - [1740] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 42), - [1742] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1060), - [1745] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1055), - [1748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1631), - [1750] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178), - [1752] = {.entry = {.count = 1, .reusable = false}}, SHIFT(644), - [1754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(634), - [1756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(637), - [1758] = {.entry = {.count = 1, .reusable = true}}, SHIFT(640), - [1760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(668), - [1762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(242), - [1764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(646), - [1766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(644), - [1768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1619), - [1770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(653), - [1772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(691), - [1774] = {.entry = {.count = 1, .reusable = false}}, SHIFT(637), - [1776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(620), - [1778] = {.entry = {.count = 1, .reusable = false}}, SHIFT(661), - [1780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(662), - [1782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(663), - [1784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(699), - [1786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(664), - [1788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(665), - [1790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661), - [1792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1698), - [1794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(666), - [1796] = {.entry = {.count = 1, .reusable = true}}, SHIFT(667), - [1798] = {.entry = {.count = 1, .reusable = false}}, SHIFT(663), - [1800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(621), - [1802] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1044), - [1805] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1040), - [1808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1668), - [1810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), - [1812] = {.entry = {.count = 1, .reusable = false}}, SHIFT(657), - [1814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(672), - [1816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(695), - [1818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(679), - [1820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(689), - [1822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(239), - [1824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(630), - [1826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(657), - [1828] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1730), - [1830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(636), - [1832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(638), - [1834] = {.entry = {.count = 1, .reusable = false}}, SHIFT(695), - [1836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(622), - [1838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426), - [1840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1703), - [1842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), - [1844] = {.entry = {.count = 1, .reusable = false}}, SHIFT(697), - [1846] = {.entry = {.count = 1, .reusable = true}}, SHIFT(641), - [1848] = {.entry = {.count = 1, .reusable = true}}, SHIFT(696), - [1850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(684), - [1852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(631), - [1854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(238), - [1856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(629), - [1858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(697), - [1860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1672), - [1862] = {.entry = {.count = 1, .reusable = true}}, SHIFT(635), - [1864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(660), - [1866] = {.entry = {.count = 1, .reusable = false}}, SHIFT(696), - [1868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(623), - [1870] = {.entry = {.count = 1, .reusable = false}}, SHIFT(438), - [1872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(411), - [1874] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1042), - [1876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(896), - [1878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1514), - [1880] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 3, 0, 0), - [1882] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 3, 0, 0), - [1884] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1587), - [1886] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1117), - [1888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(897), - [1890] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1007), - [1892] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1078), - [1894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1078), - [1896] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1116), - [1898] = {.entry = {.count = 1, .reusable = false}}, SHIFT(363), - [1900] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 2, 0, 0), - [1902] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 2, 0, 0), - [1904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1142), - [1906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(375), - [1908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1130), - [1910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1143), - [1912] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1160), - [1914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1138), - [1916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1141), - [1918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1158), - [1920] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1136), - [1922] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1101), + [1724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operator, 3, 0, 40), + [1726] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operator, 3, 0, 40), + [1728] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1062), + [1731] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operator, 2, 0, 13), + [1733] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operator, 2, 0, 13), + [1735] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_await, 2, 0, 0), + [1737] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_await, 2, 0, 0), + [1739] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1061), + [1742] = {.entry = {.count = 1, .reusable = false}}, SHIFT(686), + [1744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(687), + [1746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(688), + [1748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(689), + [1750] = {.entry = {.count = 1, .reusable = true}}, SHIFT(690), + [1752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(691), + [1754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(686), + [1756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1702), + [1758] = {.entry = {.count = 1, .reusable = true}}, SHIFT(692), + [1760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(693), + [1762] = {.entry = {.count = 1, .reusable = false}}, SHIFT(688), + [1764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(625), + [1766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1705), + [1768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [1770] = {.entry = {.count = 1, .reusable = false}}, SHIFT(641), + [1772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(642), + [1774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(643), + [1776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(644), + [1778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(645), + [1780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(238), + [1782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(646), + [1784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(641), + [1786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1720), + [1788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(647), + [1790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(648), + [1792] = {.entry = {.count = 1, .reusable = false}}, SHIFT(643), + [1794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(623), + [1796] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1048), + [1799] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1046), + [1802] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1068), + [1805] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_concatenated_template_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1053), + [1808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1644), + [1810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), + [1812] = {.entry = {.count = 1, .reusable = false}}, SHIFT(654), + [1814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(655), + [1816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(656), + [1818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(657), + [1820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(658), + [1822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(245), + [1824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(659), + [1826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(654), + [1828] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1739), + [1830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(660), + [1832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661), + [1834] = {.entry = {.count = 1, .reusable = false}}, SHIFT(656), + [1836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(621), + [1838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(374), + [1840] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1052), + [1842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(850), + [1844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1412), + [1846] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 3, 0, 0), + [1848] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 3, 0, 0), + [1850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1577), + [1852] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1114), + [1854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(851), + [1856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1002), + [1858] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1069), + [1860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1069), + [1862] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1174), + [1864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1719), + [1866] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), + [1868] = {.entry = {.count = 1, .reusable = false}}, SHIFT(626), + [1870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(632), + [1872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(633), + [1874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(634), + [1876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(635), + [1878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(244), + [1880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(636), + [1882] = {.entry = {.count = 1, .reusable = true}}, SHIFT(626), + [1884] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1620), + [1886] = {.entry = {.count = 1, .reusable = true}}, SHIFT(637), + [1888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(638), + [1890] = {.entry = {.count = 1, .reusable = false}}, SHIFT(633), + [1892] = {.entry = {.count = 1, .reusable = true}}, SHIFT(622), + [1894] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_open_sequence_match_pattern, 2, 0, 0), + [1896] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_sequence_match_pattern, 2, 0, 0), + [1898] = {.entry = {.count = 1, .reusable = false}}, SHIFT(344), + [1900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1164), + [1902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1133), + [1904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1120), + [1906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(414), + [1908] = {.entry = {.count = 1, .reusable = false}}, SHIFT(387), + [1910] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1177), + [1912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1166), + [1914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(434), + [1916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1152), + [1918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1149), + [1920] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1141), + [1922] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1105), [1924] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), - [1926] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), - [1928] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(650), - [1931] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1702), - [1934] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(650), + [1926] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(666), + [1929] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), + [1931] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1721), + [1934] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(666), [1937] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(624), - [1940] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comparison_operator, 2, 0, 18), - [1942] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comparison_operator, 2, 0, 18), - [1944] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(677), - [1947] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1710), - [1950] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(677), - [1953] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(625), - [1956] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 37), - [1958] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 37), SHIFT_REPEAT(589), - [1961] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(637), - [1964] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1619), - [1967] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(637), - [1970] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(620), - [1973] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 32), - [1975] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(695), - [1978] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1730), - [1981] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(695), - [1984] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(622), - [1987] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1543), - [1989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1132), - [1991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1537), - [1993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1176), - [1995] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 3, 0, 27), - [1997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1134), - [1999] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 3, 0, 27), - [2001] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, 0, 35), - [2003] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(663), - [2006] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1698), - [2009] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(663), - [2012] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(621), - [2015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), - [2017] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, 0, 16), - [2019] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(696), - [2022] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1672), - [2025] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(696), - [2028] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(623), - [2031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), - [2033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), - [2035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), - [2037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), - [2039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1516), - [2041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(465), - [2043] = {.entry = {.count = 1, .reusable = false}}, SHIFT(619), - [2045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(353), - [2047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(639), - [2049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1512), - [2051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(293), - [2053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(419), - [2055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(380), - [2057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(373), - [2059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), - [2061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(365), - [2063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1383), - [2065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1550), - [2067] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 2, 0, 0), - [2069] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 3, 0, 0), + [1940] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(680), + [1943] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1670), + [1946] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(680), + [1949] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(620), + [1952] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comparison_operator, 2, 0, 18), + [1954] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comparison_operator, 2, 0, 18), + [1956] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1544), + [1958] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1167), + [1960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1541), + [1962] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 37), + [1964] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 37), SHIFT_REPEAT(615), + [1967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1116), + [1969] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1150), + [1971] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_pattern, 3, 0, 27), + [1973] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(656), + [1976] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1739), + [1979] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(656), + [1982] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(621), + [1985] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2, 0, 32), + [1987] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat_pattern, 2, 0, 35), + [1989] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(688), + [1992] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1702), + [1995] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(688), + [1998] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(625), + [2001] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(643), + [2004] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1720), + [2007] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(643), + [2010] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(623), + [2013] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_pattern, 3, 0, 27), + [2015] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(633), + [2018] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(1620), + [2021] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(633), + [2024] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comparison_operator_repeat1, 2, 0, 43), SHIFT_REPEAT(622), + [2027] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), + [2029] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_list, 2, 0, 16), + [2031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1498), + [2033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(475), + [2035] = {.entry = {.count = 1, .reusable = false}}, SHIFT(619), + [2037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(404), + [2039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(629), + [2041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1487), + [2043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(343), + [2045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), + [2047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(280), + [2049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), + [2051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), + [2053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(413), + [2055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(372), + [2057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), + [2059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), + [2061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(362), + [2063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1400), + [2065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1599), + [2067] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 3, 0, 0), + [2069] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 2, 0, 0), [2071] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_not_operator, 2, 0, 10), [2073] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_not_operator, 2, 0, 10), [2075] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), - [2077] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1734), - [2080] = {.entry = {.count = 1, .reusable = false}}, SHIFT(184), - [2082] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1149), - [2084] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1149), + [2077] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1684), + [2080] = {.entry = {.count = 1, .reusable = false}}, SHIFT(179), + [2082] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1170), + [2084] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1170), [2086] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), - [2088] = {.entry = {.count = 1, .reusable = true}}, SHIFT(847), - [2090] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), - [2092] = {.entry = {.count = 1, .reusable = true}}, SHIFT(422), - [2094] = {.entry = {.count = 1, .reusable = true}}, SHIFT(398), - [2096] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1623), - [2098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(510), - [2100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 1, 0, 7), - [2102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(412), - [2104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(413), - [2106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1734), - [2108] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 1, 0, 0), - [2110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_capture_pattern, 1, 0, 0), - [2112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, 0, 0), - [2114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(843), - [2116] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(184), - [2119] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(1149), - [2122] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(1149), - [2125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), - [2127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(852), - [2129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(954), - [2131] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_with_item, 1, -1, 12), SHIFT(180), - [2134] = {.entry = {.count = 1, .reusable = false}}, SHIFT(527), - [2136] = {.entry = {.count = 1, .reusable = true}}, SHIFT(403), - [2138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(338), - [2140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), - [2142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(792), - [2144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(793), - [2146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(794), - [2148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(795), - [2150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1485), - [2152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(834), - [2154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(853), - [2156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1509), - [2158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(840), + [2088] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1409), + [2090] = {.entry = {.count = 1, .reusable = true}}, SHIFT(821), + [2092] = {.entry = {.count = 1, .reusable = true}}, SHIFT(703), + [2094] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1684), + [2096] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 2, 0, 0), + [2098] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_value_pattern, 2, 0, 0), + [2100] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(179), + [2103] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(1170), + [2106] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), SHIFT_REPEAT(1170), + [2109] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 2, 0, 21), + [2111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1470), + [2113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(846), + [2115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(862), + [2117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(865), + [2119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(975), + [2121] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_with_item, 1, -1, 12), SHIFT(187), + [2124] = {.entry = {.count = 1, .reusable = false}}, SHIFT(521), + [2126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(407), + [2128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1698), + [2130] = {.entry = {.count = 1, .reusable = true}}, SHIFT(499), + [2132] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), + [2134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), + [2136] = {.entry = {.count = 1, .reusable = true}}, SHIFT(838), + [2138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), + [2140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(424), + [2142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(365), + [2144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 1, 0, 7), + [2146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(415), + [2148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(416), + [2150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 1, 0, 0), + [2152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_capture_pattern, 1, 0, 0), + [2154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(869), + [2156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, 0, 0), + [2158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(701), [2160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(702), - [2162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(846), - [2164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(701), - [2166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(848), - [2168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_class_name, 2, 0, 0), - [2170] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_value_pattern, 2, 0, 0), - [2172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(703), - [2174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(700), - [2176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_operator, 3, 0, 40), - [2178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_boolean_operator, 3, 0, 40), - [2180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(921), - [2182] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), - [2184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(359), - [2186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional_expression, 5, 0, 0), - [2188] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_conditional_expression, 5, 0, 0), - [2190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, 0, 36), - [2192] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, 0, 36), - [2194] = {.entry = {.count = 1, .reusable = true}}, SHIFT(874), - [2196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), - [2198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(418), - [2200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 3, 0, 33), - [2202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 3, 0, 33), - [2204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, 0, 86), - [2206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1556), - [2208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 2, 0, 110), - [2210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1604), - [2212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, 0, 23), - [2214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 4, 0, 67), - [2216] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 4, 0, 67), - [2218] = {.entry = {.count = 1, .reusable = true}}, SHIFT(890), - [2220] = {.entry = {.count = 1, .reusable = true}}, SHIFT(709), - [2222] = {.entry = {.count = 1, .reusable = true}}, SHIFT(877), - [2224] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), - [2226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, 0, 23), - [2228] = {.entry = {.count = 1, .reusable = true}}, SHIFT(967), - [2230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), - [2232] = {.entry = {.count = 1, .reusable = true}}, SHIFT(723), - [2234] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), - [2236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_within_for_in_clause, 1, 0, 0), - [2238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat, 2, 0, 0), - [2240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), - [2242] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(356), - [2245] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(1623), - [2248] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(510), - [2251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 3, 0, 0), - [2253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(994), - [2255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2, 0, 0), - [2257] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(994), - [2260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), - [2262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(423), - [2264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__f_expression, 1, 0, 0), - [2266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(382), - [2268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), - [2270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 4, 0, 0), - [2272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 1, 0, 0), - [2274] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), - [2276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 2, 0, 0), + [2162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(847), + [2164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(852), + [2166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(816), + [2168] = {.entry = {.count = 1, .reusable = true}}, SHIFT(817), + [2170] = {.entry = {.count = 1, .reusable = true}}, SHIFT(700), + [2172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(820), + [2174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(859), + [2176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 1, 0, 86), + [2178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1547), + [2180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(912), + [2182] = {.entry = {.count = 1, .reusable = true}}, SHIFT(951), + [2184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(224), + [2186] = {.entry = {.count = 1, .reusable = true}}, SHIFT(944), + [2188] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), + [2190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_operator, 3, 0, 40), + [2192] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_boolean_operator, 3, 0, 40), + [2194] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, 0, 23), + [2196] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, 0, 23), + [2198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(962), + [2200] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), + [2202] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional_expression, 5, 0, 0), + [2204] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_conditional_expression, 5, 0, 0), + [2206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(409), + [2208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), + [2210] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 4, 0, 67), + [2212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(421), + [2214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 3, 0, 33), + [2216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_expression, 3, 0, 36), + [2218] = {.entry = {.count = 1, .reusable = true}}, SHIFT(712), + [2220] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), + [2222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_expression, 3, 0, 36), + [2224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 2, 0, 110), + [2226] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1592), + [2228] = {.entry = {.count = 1, .reusable = true}}, SHIFT(938), + [2230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(730), + [2232] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 4, 0, 67), + [2234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 3, 0, 33), + [2236] = {.entry = {.count = 1, .reusable = true}}, SHIFT(184), + [2238] = {.entry = {.count = 1, .reusable = true}}, SHIFT(425), + [2240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__f_expression, 1, 0, 0), + [2242] = {.entry = {.count = 1, .reusable = true}}, SHIFT(345), + [2244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(438), + [2246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_within_for_in_clause, 1, 0, 0), + [2248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2, 0, 0), + [2250] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_or_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(994), + [2253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 2, 0, 0), + [2255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 1, 0, 0), + [2257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), + [2259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), + [2261] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(428), + [2264] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(1698), + [2267] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__comprehension_clauses_repeat1, 2, 0, 0), SHIFT_REPEAT(499), + [2270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 3, 0, 0), + [2272] = {.entry = {.count = 1, .reusable = true}}, SHIFT(994), + [2274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_splat, 2, 0, 0), + [2276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_or_pattern, 4, 0, 0), [2278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comprehension_clauses, 2, 0, 0), - [2280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 3, 0, 0), - [2282] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 9, 0, 140), - [2284] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), - [2286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(339), - [2288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2, 0, 0), - [2290] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2, 0, 0), SHIFT_REPEAT(307), - [2293] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 4, 0, 140), - [2295] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_or_pattern, 1, 0, 0), - [2297] = {.entry = {.count = 1, .reusable = true}}, SHIFT(995), - [2299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(432), - [2301] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), - [2303] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), SHIFT_REPEAT(1119), - [2306] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), SHIFT_REPEAT(1119), - [2309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), - [2311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 32), - [2313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 145), - [2315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), - [2317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 3, 0, 0), - [2319] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat, 2, 0, 14), - [2321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 4, 0, 153), - [2323] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 3, 0, 136), - [2325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 5, 0, 0), - [2327] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 5, 0, 0), - [2329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_group_pattern, 3, 0, 135), - [2331] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 4, 0, 0), - [2333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 4, 0, 101), - [2335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), - [2337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), - [2339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(197), - [2341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 2, 0, 0), - [2343] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 5, 0, 140), - [2345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 6, 0, 0), - [2347] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 6, 0, 140), - [2349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 2, 0, 0), - [2351] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 4, 0, 0), - [2353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1749), - [2355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1745), - [2357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1723), - [2359] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 7, 0, 0), - [2361] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_content, 1, 0, 0), - [2363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1119), - [2365] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1119), - [2367] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_content, 1, 0, 0), - [2369] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 7, 0, 140), - [2371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 8, 0, 140), - [2373] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 3, 0, 140), - [2375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(992), - [2377] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_clause, 2, 0, 0), - [2379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1740), - [2381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1699), - [2383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1659), - [2385] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 127), - [2387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(224), - [2389] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 126), - [2391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), - [2393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), - [2395] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 2, 0, 0), - [2397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(417), - [2399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(405), - [2401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(420), - [2403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), - [2405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), - [2407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), - [2409] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 3, 0, 33), - [2411] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 32), - [2413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1245), - [2415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1381), - [2417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1571), - [2419] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__right_hand_side, 1, 0, 0), - [2421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(277), - [2423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1632), - [2425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), - [2427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(958), - [2429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1342), - [2431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1344), - [2433] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 1, 0, 0), - [2435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 1, -1, 12), - [2437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(527), - [2439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(348), - [2441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [2443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), - [2445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(901), - [2447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(270), - [2449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1693), - [2451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 3, 0, 0), - [2453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1254), - [2455] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1744), - [2457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1679), - [2459] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 4, 0, 67), - [2461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), - [2463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(927), - [2465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(435), - [2467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), - [2469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(436), - [2471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), - [2473] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1251), - [2475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1343), - [2477] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1638), - [2479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301), - [2481] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, 0, 10), - [2483] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pair, 3, 0, 63), - [2485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(352), - [2487] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 4, 0, 15), - [2489] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type, 1, 0, 0), - [2491] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2, 0, 0), - [2493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(263), - [2495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(713), - [2497] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_delete_statement, 2, 0, 11), - [2499] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_pattern, 1, 0, 0), - [2501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1662), - [2503] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 2, 0, 0), - [2505] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1641), - [2508] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, 0, 16), - [2510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), - [2512] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 98), - [2514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(303), - [2516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1641), - [2518] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 1, 0, 0), - [2520] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__index_expression, 1, 0, 0), - [2522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(279), - [2524] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chevron, 2, 0, 0), - [2526] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, 0, 3), - [2528] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, 0, 3), - [2530] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), - [2532] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(256), - [2535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), - [2537] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, 0, 4), - [2539] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, 0, 4), - [2541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), - [2543] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 1, 0, 6), - [2545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(344), - [2547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294), - [2549] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2, 0, 0), - [2551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 2, 0, 0), - [2553] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2, 0, 0), - [2555] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2, 0, 0), SHIFT_REPEAT(386), - [2558] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 4, 0, 44), - [2560] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 4, 0, 44), - [2562] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 5, 0, 44), - [2564] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 5, 0, 44), - [2566] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_default_parameter, 3, 0, 36), - [2568] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 69), - [2570] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), - [2572] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), - [2574] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 32), - [2576] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_default_parameter, 5, 0, 122), - [2578] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_bound, 2, 0, 112), - [2580] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1251), - [2582] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(254), - [2585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(185), - [2587] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), - [2589] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), - [2591] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 6, 0, 44), - [2593] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 6, 0, 44), - [2595] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1340), - [2597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1324), - [2599] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 10), - [2601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), - [2603] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2, 0, 0), - [2605] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(981), - [2608] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 3, 0, 44), - [2610] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 3, 0, 44), - [2612] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_as_pattern, 3, 0, 139), - [2614] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 123), - [2616] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 4, 0, 64), - [2618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), - [2620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), - [2622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1234), - [2624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), - [2626] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 1, 0, 0), - [2628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), - [2630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1315), - [2632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), - [2634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1431), - [2636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1356), - [2638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1287), - [2640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1502), - [2642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1302), - [2644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1617), - [2646] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 1, 0, 6), - [2648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 5, 0, 91), - [2650] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1281), - [2652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1330), - [2654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1435), - [2656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, 0, 23), - [2658] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, 0, 36), - [2660] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(255), - [2663] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 3, 0, 24), - [2665] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, 0, 6), - [2667] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 97), - [2669] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), - [2671] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), SHIFT_REPEAT(189), - [2674] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), SHIFT_REPEAT(1305), - [2677] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1341), - [2679] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, 0, 16), - [2681] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), - [2683] = {.entry = {.count = 1, .reusable = true}}, SHIFT(177), - [2685] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), - [2687] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 37), - [2689] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 37), SHIFT_REPEAT(250), - [2692] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_star_pattern, 2, 0, 11), - [2694] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 4, 0, 54), - [2696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [2698] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 2, 0, 0), - [2700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1305), - [2702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_param_default, 2, 0, 113), - [2704] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 5, 0, 144), - [2706] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 3, 0, 31), - [2708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 124), - [2710] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 32), - [2712] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2, 0, 0), SHIFT_REPEAT(133), - [2715] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2, 0, 0), - [2717] = {.entry = {.count = 1, .reusable = true}}, SHIFT(300), - [2719] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, 0, 0), - [2721] = {.entry = {.count = 1, .reusable = true}}, SHIFT(869), - [2723] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_guard, 2, 0, 137), - [2725] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1391), + [2280] = {.entry = {.count = 1, .reusable = true}}, SHIFT(402), + [2282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(408), + [2284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 3, 0, 0), + [2286] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 3, 0, 0), + [2288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_or_pattern, 1, 0, 0), + [2290] = {.entry = {.count = 1, .reusable = true}}, SHIFT(995), + [2292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 2, 0, 0), + [2294] = {.entry = {.count = 1, .reusable = true}}, SHIFT(393), + [2296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 4, 0, 0), + [2298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2, 0, 0), + [2300] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_for_in_clause_repeat1, 2, 0, 0), SHIFT_REPEAT(293), + [2303] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 3, 0, 136), + [2305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1753), + [2307] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1749), + [2309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1727), + [2311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dictionary_splat, 2, 0, 14), + [2313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1282), + [2315] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1678), + [2317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1461), + [2319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1741), + [2321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 32), + [2323] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_group_pattern, 3, 0, 135), + [2325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 2, 0, 0), + [2327] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_literal_pattern, 4, 0, 153), + [2329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(357), + [2331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), + [2333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 2, 0, 0), + [2335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), + [2337] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), + [2339] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), SHIFT_REPEAT(1143), + [2342] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), SHIFT_REPEAT(1143), + [2345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_content_repeat1, 2, 0, 0), + [2347] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 4, 0, 140), + [2349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 6, 0, 145), + [2351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(197), + [2353] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 6, 0, 0), + [2355] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 6, 0, 140), + [2357] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 4, 0, 0), + [2359] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 127), + [2361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), + [2363] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 5, 0, 140), + [2365] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 7, 0, 0), + [2367] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 7, 0, 140), + [2369] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 8, 0, 140), + [2371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 9, 0, 140), + [2373] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_clause, 2, 0, 0), + [2375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1526), + [2377] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_sequence_pattern, 5, 0, 0), + [2379] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_class_pattern, 3, 0, 140), + [2381] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_mapping_pattern, 5, 0, 0), + [2383] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_content, 1, 0, 0), + [2385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1143), + [2387] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1143), + [2389] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_content, 1, 0, 0), + [2391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1665), + [2393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1625), + [2395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1729), + [2397] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 5, 0, 126), + [2399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), + [2401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(992), + [2403] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_in_clause, 4, 0, 101), + [2405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), + [2407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), + [2409] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 4, 0, 15), + [2411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(263), + [2413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(908), + [2415] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 4, 0, 67), + [2417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), + [2419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1681), + [2421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(339), + [2423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(340), + [2425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(423), + [2427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(392), + [2429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(389), + [2431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [2433] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_pattern, 1, 0, 0), + [2435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1672), + [2437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), + [2439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(713), + [2441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(281), + [2443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1636), + [2445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), + [2447] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, 0, 10), + [2449] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_yield, 3, 0, 0), + [2451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type, 1, 0, 0), + [2453] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 2, 0, 0), + [2455] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1256), + [2457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1384), + [2459] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1654), + [2461] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__right_hand_side, 1, 0, 0), + [2463] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 2, 0, 0), + [2465] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_delete_statement, 2, 0, 11), + [2467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), + [2469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [2471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1246), + [2473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1364), + [2475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1552), + [2477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254), + [2479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(979), + [2481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), + [2483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(928), + [2485] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 32), + [2487] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 1, -1, 12), + [2489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(521), + [2491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(435), + [2493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [2495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(436), + [2497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [2499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1370), + [2501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1373), + [2503] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 1, 0, 0), + [2505] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_within_for_in_clause, 3, 0, 33), + [2507] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pair, 3, 0, 63), + [2509] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 6, 0, 44), + [2511] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 6, 0, 44), + [2513] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 5, 0, 44), + [2515] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 5, 0, 44), + [2517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1660), + [2519] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 1, 0, 0), + [2521] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__index_expression, 1, 0, 0), + [2523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(266), + [2525] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2, 0, 0), + [2527] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_decorated_definition_repeat1, 2, 0, 0), SHIFT_REPEAT(353), + [2530] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 2, 0, 69), + [2532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(295), + [2534] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 3, 0, 44), + [2536] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 3, 0, 44), + [2538] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_value_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1660), + [2541] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dotted_name, 2, 0, 0), + [2543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [2545] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_bound, 2, 0, 112), + [2547] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_default_parameter, 5, 0, 122), + [2549] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_interpolation, 4, 0, 44), + [2551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpolation, 4, 0, 44), + [2553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1332), + [2555] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_default_parameter, 3, 0, 36), + [2557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1380), + [2559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), + [2561] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 98), + [2563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(305), + [2565] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), + [2567] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(255), + [2570] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 10), + [2572] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2, 0, 0), + [2574] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [2576] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_chevron, 2, 0, 0), + [2578] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 2, 0, 16), + [2580] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), + [2582] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 32), + [2584] = {.entry = {.count = 1, .reusable = true}}, SHIFT(185), + [2586] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), + [2588] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), + [2590] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, 0, 3), + [2592] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, 0, 3), + [2594] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_as_pattern, 3, 0, 139), + [2596] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2, 0, 0), + [2598] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_sequence_match_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(931), + [2601] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_repeat1, 1, 0, 4), + [2603] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_repeat1, 1, 0, 4), + [2605] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(256), + [2608] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 1, 0, 6), + [2610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), + [2612] = {.entry = {.count = 1, .reusable = true}}, SHIFT(303), + [2614] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1256), + [2616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [2618] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__collection_elements, 2, 0, 16), + [2620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), + [2622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1490), + [2624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1337), + [2626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1317), + [2628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1410), + [2630] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 2, 0, 0), + [2632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), + [2634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1305), + [2636] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_param_default, 2, 0, 113), + [2638] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 4, 0, 54), + [2640] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, 0, 6), + [2642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1250), + [2644] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1360), + [2646] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1422), + [2648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1369), + [2650] = {.entry = {.count = 1, .reusable = true}}, SHIFT(177), + [2652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [2654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1193), + [2656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 4, 0, 64), + [2658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1292), + [2660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1669), + [2662] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 1, 0, 6), + [2664] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(264), + [2667] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 3, 0, 24), + [2669] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias_statement, 5, 0, 91), + [2671] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 37), + [2673] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__collection_elements_repeat1, 2, 0, 37), SHIFT_REPEAT(251), + [2676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_raise_statement, 3, 0, 31), + [2678] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), + [2680] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), SHIFT_REPEAT(189), + [2683] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 2, 0, 0), SHIFT_REPEAT(1305), + [2686] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, 0, 23), + [2688] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_keyword_argument, 3, 0, 36), + [2690] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 32), + [2692] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [2694] = {.entry = {.count = 1, .reusable = true}}, SHIFT(182), + [2696] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 123), + [2698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), + [2700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223), + [2702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 4, 0, 124), + [2704] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_specifier, 1, 0, 0), + [2706] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1288), + [2708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 5, 0, 144), + [2710] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), + [2712] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_slice, 3, 0, 97), + [2714] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_star_pattern, 2, 0, 11), + [2716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 25), + [2718] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1706), + [2721] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2, 0, 0), + [2723] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), + [2725] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1611), [2727] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), - [2729] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 25), - [2731] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1259), - [2733] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1492), - [2735] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), - [2737] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(1696), - [2740] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_global_statement_repeat1, 2, 0, 0), - [2742] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_parameter, 3, 0, 66), - [2744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(361), - [2746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(870), - [2748] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1300), - [2750] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, 0, 24), - [2752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1304), - [2754] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 45), SHIFT_REPEAT(1503), - [2757] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 45), - [2759] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_import_prefix, 1, 0, 0), - [2761] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1352), - [2763] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, 0, 0), - [2765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), - [2767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(318), - [2769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), - [2771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(328), - [2773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), - [2775] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 37), SHIFT_REPEAT(417), - [2778] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 37), - [2780] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, 0, 50), - [2782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), - [2784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), - [2786] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_import_prefix_repeat1, 2, 0, 0), - [2788] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_import_prefix_repeat1, 2, 0, 0), SHIFT_REPEAT(1352), - [2791] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), - [2793] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 1, 0, 7), - [2795] = {.entry = {.count = 1, .reusable = true}}, SHIFT(466), - [2797] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1463), - [2799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1527), - [2801] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), - [2803] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, 0, 16), - [2805] = {.entry = {.count = 1, .reusable = true}}, SHIFT(471), - [2807] = {.entry = {.count = 1, .reusable = true}}, SHIFT(379), - [2809] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1384), - [2811] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1616), - [2813] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), - [2815] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exception_list, 2, 0, 16), - [2817] = {.entry = {.count = 1, .reusable = true}}, SHIFT(357), - [2819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1696), - [2821] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 2, 0, 0), - [2823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(385), - [2825] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 53), SHIFT_REPEAT(393), - [2828] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 53), - [2830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [2832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [2834] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(352), - [2837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 2, 0, 25), - [2839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), - [2841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), - [2843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), - [2845] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 2, 0, 25), - [2847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), - [2849] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 30), - [2851] = {.entry = {.count = 1, .reusable = true}}, SHIFT(841), - [2853] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1, 0, 0), - [2855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(268), - [2857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(434), - [2859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), - [2861] = {.entry = {.count = 1, .reusable = true}}, SHIFT(415), - [2863] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 3, 0, 0), - [2865] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, 0, 87), - [2867] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 3, 0, 0), - [2869] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorator, 3, 0, 0), - [2871] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 2, 0, 0), - [2873] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 3, 0, 0), - [2875] = {.entry = {.count = 1, .reusable = true}}, SHIFT(402), - [2877] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1028), - [2879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), - [2881] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2, 0, 0), - [2883] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2, 0, 0), SHIFT_REPEAT(336), - [2886] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 5, 0, 15), - [2888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), - [2890] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1582), - [2892] = {.entry = {.count = 1, .reusable = true}}, SHIFT(296), - [2894] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 29), - [2896] = {.entry = {.count = 1, .reusable = true}}, SHIFT(248), - [2898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1032), - [2900] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 1, 0, 0), - [2902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(429), - [2904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [2906] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_maybe_star_pattern, 1, 0, 0), - [2908] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_patterns, 1, 0, 0), - [2910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1200), - [2912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1417), - [2914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(400), - [2916] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 2, 0, 15), - [2918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(904), - [2920] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), - [2922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(905), - [2924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), - [2926] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1337), - [2928] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1338), - [2930] = {.entry = {.count = 1, .reusable = true}}, SHIFT(404), - [2932] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 3, 0, 89), - [2934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1510), - [2936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1633), - [2938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1150), - [2940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1426), - [2942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1006), - [2944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1419), - [2946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1151), - [2948] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2, 0, 0), - [2950] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(991), - [2953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1433), - [2955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 37), - [2957] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 37), SHIFT_REPEAT(246), - [2960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1111), - [2962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(909), - [2964] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), - [2966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), - [2968] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 38), - [2970] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), - [2972] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 45), SHIFT_REPEAT(1465), - [2975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(910), - [2977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(207), - [2979] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_aliased_import, 3, 0, 46), - [2981] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(252), - [2984] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 37), - [2986] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2, 0, 0), - [2988] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2, 0, 0), SHIFT_REPEAT(1593), - [2991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1031), - [2993] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 37), SHIFT_REPEAT(265), - [2996] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 37), - [2998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(260), - [3000] = {.entry = {.count = 1, .reusable = true}}, SHIFT(928), - [3002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), - [3004] = {.entry = {.count = 1, .reusable = true}}, SHIFT(966), - [3006] = {.entry = {.count = 1, .reusable = true}}, SHIFT(968), - [3008] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), - [3010] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), - [3012] = {.entry = {.count = 1, .reusable = true}}, SHIFT(969), - [3014] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1349), - [3016] = {.entry = {.count = 1, .reusable = true}}, SHIFT(972), - [3018] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), - [3020] = {.entry = {.count = 1, .reusable = true}}, SHIFT(973), - [3022] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), - [3024] = {.entry = {.count = 1, .reusable = true}}, SHIFT(975), - [3026] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), - [3028] = {.entry = {.count = 1, .reusable = true}}, SHIFT(976), - [3030] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), - [3032] = {.entry = {.count = 1, .reusable = true}}, SHIFT(245), - [3034] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, 0, 16), - [3036] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_relative_import, 1, 0, 0), - [3038] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), - [3040] = {.entry = {.count = 1, .reusable = true}}, SHIFT(946), - [3042] = {.entry = {.count = 1, .reusable = true}}, SHIFT(875), - [3044] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), - [3046] = {.entry = {.count = 1, .reusable = true}}, SHIFT(876), - [3048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240), - [3050] = {.entry = {.count = 1, .reusable = true}}, SHIFT(881), - [3052] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), - [3054] = {.entry = {.count = 1, .reusable = true}}, SHIFT(882), - [3056] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), - [3058] = {.entry = {.count = 1, .reusable = true}}, SHIFT(336), - [3060] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 2, 0, 0), - [3062] = {.entry = {.count = 1, .reusable = true}}, SHIFT(884), - [3064] = {.entry = {.count = 1, .reusable = true}}, SHIFT(229), - [3066] = {.entry = {.count = 1, .reusable = true}}, SHIFT(885), - [3068] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230), - [3070] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1029), - [3073] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2, 0, 0), - [3075] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 1, 0, 0), - [3077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(264), - [3079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(721), - [3081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(934), - [3083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1034), - [3085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1033), - [3087] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1706), - [3089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(309), - [3091] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1036), - [3094] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1114), - [3096] = {.entry = {.count = 1, .reusable = true}}, SHIFT(982), - [3098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(935), - [3100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1110), - [3102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(929), - [3104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), - [3106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), - [3108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1260), - [3110] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1505), - [3112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), - [3114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(724), - [3116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), - [3118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1010), - [3120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1124), - [3122] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 1, 0, 74), - [3124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 1, 0, 74), - [3126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(983), - [3128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(313), - [3130] = {.entry = {.count = 1, .reusable = true}}, SHIFT(299), - [3132] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1439), - [3134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(273), - [3136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4, 0, 115), - [3138] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 116), SHIFT_REPEAT(1200), - [3141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 116), - [3143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_separator, 1, 0, 0), - [3145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), - [3147] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1263), - [3149] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1312), - [3151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(249), - [3153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(503), - [3155] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1035), - [3158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), - [3160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(727), - [3162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), - [3164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(728), - [3166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), - [3168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 3, -1, 59), - [3170] = {.entry = {.count = 1, .reusable = true}}, SHIFT(730), - [3172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), - [3174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(731), - [3176] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), - [3178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1508), - [3180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(931), - [3182] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), - [3184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(251), - [3186] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), - [3188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_keyword_pattern, 3, 0, 164), - [3190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 32), - [3192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3, 0, 0), - [3194] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1263), - [3196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), - [3198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), - [3200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 68), - [3202] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), - [3204] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286), - [3206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), - [3208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(287), - [3210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), - [3212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(288), - [3214] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), - [3216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), - [3218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_key_value_pattern, 3, 0, 63), - [3220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2, 0, 0), - [3222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 2, 0, 5), - [3224] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1731), - [3226] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1707), - [3228] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1128), - [3230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1128), - [3232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 5, 0, 75), - [3234] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [3236] = {.entry = {.count = 1, .reusable = true}}, SHIFT(271), - [3238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 5, 0, 76), - [3240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 3, 0, 111), - [3242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 3, 0, 111), - [3244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 4, 0, 47), - [3246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 32), - [3248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1627), - [3250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1140), - [3252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, 0, 88), - [3254] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wildcard_import, 1, 0, 0), - [3256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 3, 0, 114), - [3258] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), - [3260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(274), - [3262] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 89), - [3264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, 0, 48), - [3266] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, 0, 49), - [3268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pass_statement, 1, 0, 0), - [3270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 6, 0, 99), - [3272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 6, 0, 100), - [3274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 39), - [3276] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1079), - [3278] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1079), - [3280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 1, 0, 0), - [3282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(861), - [3284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 3, 0, 22), - [3286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1133), - [3288] = {.entry = {.count = 1, .reusable = true}}, SHIFT(939), - [3290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 1, 0, 0), - [3292] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1127), - [3294] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1127), - [3296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 7, 0, 125), - [3298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_augmented_assignment, 3, 0, 40), - [3300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_double_star_pattern, 2, 0, 11), + [2729] = {.entry = {.count = 1, .reusable = true}}, SHIFT(314), + [2731] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), + [2733] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [2735] = {.entry = {.count = 1, .reusable = true}}, SHIFT(832), + [2737] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1029), + [2739] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), + [2741] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301), + [2743] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 2, 0, 0), + [2745] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [2747] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1535), + [2749] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1466), + [2751] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 2, 0, 25), + [2753] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 2, 0, 25), + [2755] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, 0, 87), + [2757] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1706), + [2759] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 2, 0, 0), + [2761] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 2, 0, 0), + [2763] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2, 0, 0), SHIFT_REPEAT(133), + [2766] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__simple_statements_repeat1, 2, 0, 0), + [2768] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 5, 0, 15), + [2770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1368), + [2772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(385), + [2774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [2776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [2778] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 1, 0, 7), + [2780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(476), + [2782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [2784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1258), + [2786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1419), + [2788] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exception_list, 2, 0, 16), + [2790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), + [2792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(315), + [2794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294), + [2796] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 29), + [2798] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), + [2800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(429), + [2802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), + [2804] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_print_statement, 3, 0, 30), + [2806] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decorator, 3, 0, 0), + [2808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(810), + [2810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), + [2812] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, 0, 0), + [2814] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_list_splat, 3, 0, 50), + [2816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(347), + [2818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [2820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [2822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(813), + [2824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), + [2826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), + [2828] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), + [2830] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_import_prefix, 1, 0, 0), + [2832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1392), + [2834] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 53), SHIFT_REPEAT(420), + [2837] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_print_statement_repeat1, 2, 0, 53), + [2839] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assert_statement_repeat1, 2, 0, 0), SHIFT_REPEAT(356), + [2842] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_parameter, 3, 0, 66), + [2844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), + [2846] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1299), + [2848] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__import_list, 2, 0, 24), + [2850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1320), + [2852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1330), + [2854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1742), + [2856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [2858] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_import_prefix_repeat1, 2, 0, 0), + [2860] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_import_prefix_repeat1, 2, 0, 0), SHIFT_REPEAT(1392), + [2863] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 37), SHIFT_REPEAT(392), + [2866] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_exception_list_repeat1, 2, 0, 37), + [2868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(418), + [2870] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_statement, 3, 0, 0), + [2872] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_guard, 2, 0, 137), + [2874] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2, 0, 0), + [2876] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_with_clause_repeat1, 2, 0, 0), SHIFT_REPEAT(311), + [2879] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_nonlocal_statement, 3, 0, 0), + [2881] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1, 0, 0), + [2883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(282), + [2885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(381), + [2887] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assert_statement, 3, 0, 0), + [2889] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2, 0, 16), + [2891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(478), + [2893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(354), + [2895] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 45), SHIFT_REPEAT(1458), + [2898] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 45), + [2900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(982), + [2902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), + [2904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(250), + [2906] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1254), + [2908] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1323), + [2910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1696), + [2912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(239), + [2914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(502), + [2916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(247), + [2918] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_relative_import, 1, 0, 0), + [2920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2, 0, 0), + [2922] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat2, 2, 0, 0), SHIFT_REPEAT(1567), + [2925] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1245), + [2927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1351), + [2929] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_specifier_repeat1, 1, 0, 74), + [2931] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_specifier_repeat1, 1, 0, 74), + [2933] = {.entry = {.count = 1, .reusable = true}}, SHIFT(398), + [2935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [2937] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_maybe_star_pattern, 1, 0, 0), + [2939] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_patterns, 1, 0, 0), + [2941] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1352), + [2943] = {.entry = {.count = 1, .reusable = true}}, SHIFT(916), + [2945] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), + [2947] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), + [2949] = {.entry = {.count = 1, .reusable = true}}, SHIFT(732), + [2951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), + [2953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(959), + [2955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), + [2957] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1035), + [2960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(963), + [2962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), + [2964] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 3, 0, 89), + [2966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(964), + [2968] = {.entry = {.count = 1, .reusable = true}}, SHIFT(716), + [2970] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), + [2972] = {.entry = {.count = 1, .reusable = true}}, SHIFT(861), + [2974] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1111), + [2976] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_aliased_import, 3, 0, 46), + [2978] = {.entry = {.count = 1, .reusable = true}}, SHIFT(983), + [2980] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), + [2982] = {.entry = {.count = 1, .reusable = true}}, SHIFT(986), + [2984] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), + [2986] = {.entry = {.count = 1, .reusable = true}}, SHIFT(958), + [2988] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), + [2990] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1003), + [2992] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1113), + [2994] = {.entry = {.count = 1, .reusable = true}}, SHIFT(718), + [2996] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), + [2998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(918), + [3000] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), + [3002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(738), + [3004] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), + [3006] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1155), + [3008] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1474), + [3010] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), + [3012] = {.entry = {.count = 1, .reusable = true}}, SHIFT(948), + [3014] = {.entry = {.count = 1, .reusable = true}}, SHIFT(721), + [3016] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), + [3018] = {.entry = {.count = 1, .reusable = true}}, SHIFT(952), + [3020] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), + [3022] = {.entry = {.count = 1, .reusable = true}}, SHIFT(953), + [3024] = {.entry = {.count = 1, .reusable = true}}, SHIFT(881), + [3026] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), + [3028] = {.entry = {.count = 1, .reusable = true}}, SHIFT(882), + [3030] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), + [3032] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4, 0, 89), + [3034] = {.entry = {.count = 1, .reusable = true}}, SHIFT(884), + [3036] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), + [3038] = {.entry = {.count = 1, .reusable = true}}, SHIFT(885), + [3040] = {.entry = {.count = 1, .reusable = true}}, SHIFT(229), + [3042] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4, 0, 115), + [3044] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 116), SHIFT_REPEAT(1241), + [3047] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 116), + [3049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1427), + [3051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1031), + [3053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1162), + [3055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1464), + [3057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(292), + [3059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(299), + [3061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), + [3063] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 1, 0, 0), + [3065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1156), + [3067] = {.entry = {.count = 1, .reusable = true}}, SHIFT(366), + [3069] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exec_statement, 2, 0, 15), + [3071] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1033), + [3073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1478), + [3075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1157), + [3077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(922), + [3079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(208), + [3081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [3083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [3085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(936), + [3087] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), + [3089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1694), + [3091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(309), + [3093] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_separator, 1, 0, 0), + [3095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), + [3097] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 38), + [3099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(367), + [3101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1129), + [3103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1435), + [3105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1413), + [3107] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(1023), + [3110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_mapping_pattern_repeat1, 2, 0, 0), + [3112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(260), + [3114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(926), + [3116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 1, 0, 0), + [3118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1034), + [3120] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__import_list_repeat1, 2, 0, 45), SHIFT_REPEAT(1408), + [3123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1374), + [3125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(848), + [3127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(849), + [3129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), + [3131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(733), + [3133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), + [3135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240), + [3137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression_list, 2, 0, 16), + [3139] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1000), + [3141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 2, 0, 0), + [3143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 37), + [3145] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 37), SHIFT_REPEAT(243), + [3148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(319), + [3150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_item, 3, -1, 59), + [3152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1032), + [3154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(267), + [3156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1450), + [3158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1144), + [3160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(932), + [3162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1484), + [3164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(947), + [3166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(232), + [3168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 5, 0, 115), + [3170] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 37), SHIFT_REPEAT(249), + [3173] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 37), + [3175] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2, 0, 0), + [3177] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_match_class_pattern_repeat1, 2, 0, 0), SHIFT_REPEAT(991), + [3180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [3182] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1036), + [3185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(242), + [3187] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 37), SHIFT_REPEAT(273), + [3190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 37), + [3192] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), + [3194] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), + [3196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(935), + [3198] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_statement, 1, 0, 0), + [3200] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1254), + [3202] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 68), + [3204] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1699), + [3206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 2, 0, 88), + [3208] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1125), + [3210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1125), + [3212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 5, 0, 76), + [3214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 4, 0, 47), + [3216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wildcard_import, 1, 0, 0), + [3218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_keyword_pattern, 3, 0, 164), + [3220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, 0, 48), + [3222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevartuple_parameter, 3, 0, 111), + [3224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paramspec_parameter, 3, 0, 111), + [3226] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typevar_parameter, 3, 0, 114), + [3228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_list_repeat1, 2, 0, 32), + [3230] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 89), + [3232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 4, 0, 49), + [3234] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_future_import_statement, 6, 0, 99), + [3236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 6, 0, 100), + [3238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 2, 0, 5), + [3240] = {.entry = {.count = 1, .reusable = true}}, SHIFT(834), + [3242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_statement, 3, 0, 22), + [3244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [3246] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286), + [3248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [3250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(287), + [3252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [3254] = {.entry = {.count = 1, .reusable = true}}, SHIFT(288), + [3256] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [3258] = {.entry = {.count = 1, .reusable = true}}, SHIFT(272), + [3260] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1086), + [3262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1086), + [3264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1682), + [3266] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_statement, 1, 0, 0), + [3268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 7, 0, 125), + [3270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 3, 0, 0), + [3272] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [3274] = {.entry = {.count = 1, .reusable = true}}, SHIFT(268), + [3276] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [3278] = {.entry = {.count = 1, .reusable = true}}, SHIFT(283), + [3280] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [3282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(275), + [3284] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), + [3286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(278), + [3288] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1134), + [3290] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1134), + [3292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_double_star_pattern, 2, 0, 11), + [3294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 39), + [3296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_augmented_assignment, 3, 0, 40), + [3298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_from_statement, 5, 0, 75), + [3300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameters, 2, 0, 0), [3302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 95), - [3304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_positional_pattern, 1, 0, 0), - [3306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), - [3308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(280), - [3310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [3312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(722), - [3314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1542), - [3316] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1442), - [3318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(716), - [3320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(648), - [3322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1180), - [3324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1275), - [3326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), - [3328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(495), - [3330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(714), - [3332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1605), - [3334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), - [3336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1148), - [3338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(900), - [3340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), - [3342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(492), + [3304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pass_statement, 1, 0, 0), + [3306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1132), + [3308] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_positional_pattern, 1, 0, 0), + [3310] = {.entry = {.count = 1, .reusable = true}}, SHIFT(860), + [3312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1716), + [3314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1148), + [3316] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_dictionary_repeat1, 2, 0, 32), + [3318] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_key_value_pattern, 3, 0, 63), + [3320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [3322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(704), + [3324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(639), + [3326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(939), + [3328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(940), + [3330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(921), + [3332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [3334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1340), + [3336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), + [3338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(942), + [3340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(726), + [3342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), [3344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), - [3346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), - [3348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), - [3350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), - [3352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1306), - [3354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(430), - [3356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(930), - [3358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1293), - [3360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), - [3362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), - [3364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), - [3366] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), - [3368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), - [3370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), - [3372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(987), - [3374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(993), - [3376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1366), - [3378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(955), - [3380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(891), - [3382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1517), - [3384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(711), - [3386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(894), - [3388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1285), - [3390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), - [3392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1282), - [3394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), - [3396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(899), - [3398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(926), - [3400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(902), - [3402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(378), - [3404] = {.entry = {.count = 1, .reusable = true}}, SHIFT(906), - [3406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(956), - [3408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1584), - [3410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1585), - [3412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(658), - [3414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(933), - [3416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(937), - [3418] = {.entry = {.count = 1, .reusable = true}}, SHIFT(938), - [3420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1379), - [3422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(944), - [3424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(317), - [3426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1536), - [3428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), - [3430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(948), - [3432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(957), - [3434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(710), - [3436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(990), - [3438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 1, 0, 0), - [3440] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1009), - [3442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(360), - [3444] = {.entry = {.count = 1, .reusable = true}}, SHIFT(932), - [3446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), - [3448] = {.entry = {.count = 1, .reusable = true}}, SHIFT(718), - [3450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1425), - [3452] = {.entry = {.count = 1, .reusable = true}}, SHIFT(414), - [3454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(670), - [3456] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1403), - [3458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(951), - [3460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), - [3462] = {.entry = {.count = 1, .reusable = true}}, SHIFT(669), - [3464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(959), - [3466] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 4, 0, 0), - [3468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1396), - [3470] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 3, 0, 0), - [3472] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [3474] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_relative_import, 2, 0, 25), - [3476] = {.entry = {.count = 1, .reusable = true}}, SHIFT(686), - [3478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(961), - [3480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1185), - [3482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(962), - [3484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(738), - [3486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), - [3488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), - [3490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(963), - [3492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), - [3494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), - [3496] = {.entry = {.count = 1, .reusable = true}}, SHIFT(922), - [3498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(947), - [3500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1314), - [3502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(965), - [3504] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1375), - [3506] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 5, 0, 0), - [3508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(936), - [3510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943), - [3512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(384), - [3514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(651), - [3516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(381), - [3518] = {.entry = {.count = 1, .reusable = true}}, SHIFT(712), - [3520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1053), - [3522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(952), - [3524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(341), - [3526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1012), - [3528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1392), - [3530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1374), - [3532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1397), - [3534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1398), - [3536] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), - [3538] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), - [3540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1334), - [3542] = {.entry = {.count = 1, .reusable = true}}, SHIFT(717), + [3346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1216), + [3348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(946), + [3350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1342), + [3352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [3354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [3356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(941), + [3358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [3360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [3362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(923), + [3364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943), + [3366] = {.entry = {.count = 1, .reusable = true}}, SHIFT(950), + [3368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(504), + [3370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), + [3372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(993), + [3374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [3376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(729), + [3378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1343), + [3380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [3382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [3384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), + [3386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1294), + [3388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1583), + [3390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [3392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(327), + [3394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), + [3396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1290), + [3398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(925), + [3400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(892), + [3402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(710), + [3404] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1229), + [3406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1015), + [3408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1439), + [3410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(662), + [3412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(913), + [3414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1278), + [3416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [3418] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_relative_import, 2, 0, 25), + [3420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1338), + [3422] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 4, 0, 0), + [3424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [3426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), + [3428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1055), + [3430] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_parameters, 1, 0, 0), + [3432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(709), + [3434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(955), + [3436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(722), + [3438] = {.entry = {.count = 1, .reusable = true}}, SHIFT(706), + [3440] = {.entry = {.count = 1, .reusable = true}}, SHIFT(927), + [3442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(725), + [3444] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [3446] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 3, 0, 0), + [3448] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1446), + [3450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1581), + [3452] = {.entry = {.count = 1, .reusable = true}}, SHIFT(500), + [3454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(929), + [3456] = {.entry = {.count = 1, .reusable = true}}, SHIFT(417), + [3458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(695), + [3460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(976), + [3462] = {.entry = {.count = 1, .reusable = true}}, SHIFT(341), + [3464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(933), + [3466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1513), + [3468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), + [3470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(897), + [3472] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [3474] = {.entry = {.count = 1, .reusable = true}}, SHIFT(977), + [3476] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_with_clause, 5, 0, 0), + [3478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(978), + [3480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(894), + [3482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(980), + [3484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(412), + [3486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1154), + [3488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(379), + [3490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), + [3492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(956), + [3494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(649), + [3496] = {.entry = {.count = 1, .reusable = true}}, SHIFT(672), + [3498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(369), + [3500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(965), + [3502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), + [3504] = {.entry = {.count = 1, .reusable = true}}, SHIFT(969), + [3506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1309), + [3508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(970), + [3510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1295), + [3512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(957), + [3514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1565), + [3516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1566), + [3518] = {.entry = {.count = 1, .reusable = true}}, SHIFT(937), + [3520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1005), + [3522] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [3524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1333), + [3526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(652), + [3528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1339), + [3530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1538), + [3532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(961), + [3534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [3536] = {.entry = {.count = 1, .reusable = true}}, SHIFT(717), + [3538] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [3540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(906), + [3542] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1379), + [3544] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1402), + [3546] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1403), + [3548] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [3550] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1331), + [3552] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1244), }; enum ts_external_scanner_symbol_identifiers { diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index ec64251b69d5..d8691fc4252d 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,26 @@ +## 7.2.8 + +### Minor Analysis Improvements + +* Updated the `py/xxe`, `py/xml-bomb`, and `py/nosql-injection` queries to respect the configured threat model when selecting untrusted data sources. The default behavior remains unchanged and uses remote flow sources. As a side effect, these queries now correctly include sources modeled using data extensions. +* Added taint-flow modeling for `unicodedata.iter_graphemes`, introduced in Python 3.15. +* Added data-flow modeling for `threading.serialize_iterator` and `threading.concurrent_tee`, introduced in Python 3.15. +* Added modeling for the Base32, Base85, and Ascii85 encoding and decoding functions introduced in Python 3.15's `binascii` module, including taint flow through custom alphabets. +* Added support for the `frozendict` and `sentinel` builtins introduced in Python 3.15, and data-flow modeling for `frozendict` construction. +* The Python extractor now supports unary plus in `match` literal patterns, introduced in Python 3.15. +* The Python extractor now supports Unicode 17 identifiers, introduced in Python 3.15. +* Added modeling for the `extra_response_headers` constructor argument and instance attribute of `http.server.SimpleHTTPRequestHandler`, introduced in Python 3.15. +* Added modeling for Python 3.15's `re.prefixmatch` and `re.Pattern.prefixmatch`, matching the existing support for their `match` counterparts. +* Added taint-flow modeling for `bytearray` construction and Python 3.15's `bytearray.take_bytes` method. + +## 7.2.7 + +No user-facing changes. + +## 7.2.6 + +No user-facing changes. + ## 7.2.5 ### Bug Fixes diff --git a/python/ql/lib/change-notes/released/7.2.6.md b/python/ql/lib/change-notes/released/7.2.6.md new file mode 100644 index 000000000000..7cce6b846fb5 --- /dev/null +++ b/python/ql/lib/change-notes/released/7.2.6.md @@ -0,0 +1,3 @@ +## 7.2.6 + +No user-facing changes. diff --git a/python/ql/lib/change-notes/released/7.2.7.md b/python/ql/lib/change-notes/released/7.2.7.md new file mode 100644 index 000000000000..4856c4d261a4 --- /dev/null +++ b/python/ql/lib/change-notes/released/7.2.7.md @@ -0,0 +1,3 @@ +## 7.2.7 + +No user-facing changes. diff --git a/python/ql/lib/change-notes/released/7.2.8.md b/python/ql/lib/change-notes/released/7.2.8.md new file mode 100644 index 000000000000..917769cc39ad --- /dev/null +++ b/python/ql/lib/change-notes/released/7.2.8.md @@ -0,0 +1,14 @@ +## 7.2.8 + +### Minor Analysis Improvements + +* Updated the `py/xxe`, `py/xml-bomb`, and `py/nosql-injection` queries to respect the configured threat model when selecting untrusted data sources. The default behavior remains unchanged and uses remote flow sources. As a side effect, these queries now correctly include sources modeled using data extensions. +* Added taint-flow modeling for `unicodedata.iter_graphemes`, introduced in Python 3.15. +* Added data-flow modeling for `threading.serialize_iterator` and `threading.concurrent_tee`, introduced in Python 3.15. +* Added modeling for the Base32, Base85, and Ascii85 encoding and decoding functions introduced in Python 3.15's `binascii` module, including taint flow through custom alphabets. +* Added support for the `frozendict` and `sentinel` builtins introduced in Python 3.15, and data-flow modeling for `frozendict` construction. +* The Python extractor now supports unary plus in `match` literal patterns, introduced in Python 3.15. +* The Python extractor now supports Unicode 17 identifiers, introduced in Python 3.15. +* Added modeling for the `extra_response_headers` constructor argument and instance attribute of `http.server.SimpleHTTPRequestHandler`, introduced in Python 3.15. +* Added modeling for Python 3.15's `re.prefixmatch` and `re.Pattern.prefixmatch`, matching the existing support for their `match` counterparts. +* Added taint-flow modeling for `bytearray` construction and Python 3.15's `bytearray.take_bytes` method. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index c6aa7ff5b753..75d5ba5ae773 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.2.5 +lastReleaseVersion: 7.2.8 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 715a4f61bfc8..a098630bd9e3 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 7.2.5 +version: 7.2.8 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/lib/semmle/python/controlflow/internal/AstNodeImpl.qll b/python/ql/lib/semmle/python/controlflow/internal/AstNodeImpl.qll index 8a6c7cf81c52..802cf2cf79f0 100644 --- a/python/ql/lib/semmle/python/controlflow/internal/AstNodeImpl.qll +++ b/python/ql/lib/semmle/python/controlflow/internal/AstNodeImpl.qll @@ -231,6 +231,12 @@ module Ast implements AstSig { override Callable getEnclosingCallable() { result.asScope() = this.asStmt().getScope() } } + class LabeledStmt extends Stmt { + LabeledStmt() { none() } + + Stmt getStmt() { none() } + } + /** An expression. */ class Expr extends AstNodeImpl, TExpr { // For `TPyExpr` instances, delegate to the wrapped Python expression. @@ -993,9 +999,8 @@ module Ast implements AstSig { } } - /** A wildcard case (`case _:`). */ class DefaultCase extends Case { - DefaultCase() { this.isWildcard() } + DefaultCase() { none() } } /** A conditional expression (`x if cond else y`). */ @@ -1754,6 +1759,11 @@ private module Input implements InputSig1, InputSig2 { n2.isAdditional(assertStmt, assertThrowTag()) ) } + + predicate matchAll(Ast::Case c) { + // A wildcard case (`case _:`) will match all values. + c.isWildcard() + } } import Public diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/Builtins.qll b/python/ql/lib/semmle/python/dataflow/new/internal/Builtins.qll index 764af5d9dc57..4d3477e85a6b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/Builtins.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/Builtins.qll @@ -42,7 +42,7 @@ module Builtins { or // Python 3 only result in [ - "ascii", "breakpoint", "bytes", "exec", + "ascii", "breakpoint", "bytes", "exec", "frozendict", "sentinel", // Exceptions "BlockingIOError", "BrokenPipeError", "ChildProcessError", "ConnectionAbortedError", "ConnectionError", "ConnectionRefusedError", "ConnectionResetError", "FileExistsError", diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll index b7285a1b3871..2db0a7c4c9ca 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll @@ -107,8 +107,8 @@ predicate subscriptStep(DataFlow::CfgNode nodeFrom, DataFlow::CfgNode nodeTo) { } /** - * Holds if taint can flow from `nodeFrom` to `nodeTo` with a step related to string - * manipulation. + * Holds if taint can flow from `nodeFrom` to `nodeTo` by manipulating string-like + * data, including text strings, byte strings, and byte arrays. * * Note that since we cannot easily distinguish when something is a string, this can * also make taint flow on `.replace(foo, bar)`. @@ -124,6 +124,18 @@ predicate stringManipulation(DataFlow::CfgNode nodeFrom, DataFlow::CfgNode nodeT nodeFrom in [call.getArg(0), call.getArgByName("object")] ) or + // Bytearray construction and byte extraction. + exists(DataFlow::CallCfgNode call | call = nodeTo | + call = API::builtin("bytearray").getACall() and + nodeFrom in [call.getArg(0), call.getArgByName("source")] + or + call.(DataFlow::MethodCallNode).calls(nodeFrom, "take_bytes") + or + // Unbound calls: bytearray.take_bytes(buffer). + call = API::builtin("bytearray").getMember("take_bytes").getACall() and + nodeFrom = call.getArg(0) + ) + or // String methods. Note that this doesn't recognize `meth = "foo".upper; meth()` exists(CallNode call, string method_name, ControlFlowNode object | call = nodeTo.getNode() and diff --git a/python/ql/lib/semmle/python/frameworks/Stdlib.model.yml b/python/ql/lib/semmle/python/frameworks/Stdlib.model.yml index 5b50dff313e7..c54278843d5e 100644 --- a/python/ql/lib/semmle/python/frameworks/Stdlib.model.yml +++ b/python/ql/lib/semmle/python/frameworks/Stdlib.model.yml @@ -138,10 +138,23 @@ extensions: - ["tempfile", "Member[mkstemp]", "Argument[0,suffix:,1,prefix:,2,dir:]", "ReturnValue.TupleElement[0,1]", "taint"] # See https://docs.python.org/3/library/textwrap.html#textwrap.dedent - ["textwrap", "Member[dedent]", "Argument[0,text:]", "ReturnValue", "taint"] + # See https://docs.python.org/3/library/threading.html#threading.serialize_iterator + - ["threading", "Member[serialize_iterator]", "Argument[0,iterable:].ListElement", "ReturnValue.ListElement", "value"] + - ["threading", "Member[serialize_iterator]", "Argument[0,iterable:].SetElement", "ReturnValue.ListElement", "value"] + - ["threading", "Member[serialize_iterator]", "Argument[0,iterable:].AnyTupleElement", "ReturnValue.ListElement", "value"] + - ["threading", "Member[serialize_iterator]", "Argument[0,iterable:]", "ReturnValue", "taint"] + # See https://docs.python.org/3/library/threading.html#threading.concurrent_tee + # All returned iterators have the same contents, so the outer tuple is modeled as an index-insensitive sequence. + - ["threading", "Member[concurrent_tee]", "Argument[0,iterable:].ListElement", "ReturnValue.ListElement.ListElement", "value"] + - ["threading", "Member[concurrent_tee]", "Argument[0,iterable:].SetElement", "ReturnValue.ListElement.ListElement", "value"] + - ["threading", "Member[concurrent_tee]", "Argument[0,iterable:].AnyTupleElement", "ReturnValue.ListElement.ListElement", "value"] + - ["threading", "Member[concurrent_tee]", "Argument[0,iterable:]", "ReturnValue", "taint"] # See https://docs.python.org/3/library/traceback.html#traceback.StackSummary.from_list - ["traceback.StackSummary", "Member[from_list]", "Argument[0,a_list:]", "ReturnValue", "taint"] # See https://docs.python.org/3/library/typing.html#typing.cast - ["typing", "Member[cast]", "Argument[1,val:]", "ReturnValue", "value"] + # See https://docs.python.org/3/library/unicodedata.html#unicodedata.iter_graphemes + - ["unicodedata", "Member[iter_graphemes]", "Argument[0]", "ReturnValue", "taint"] # See https://docs.python.org/3/library/urllib.parse.html#urllib.parse.parse_qs - ["urllib", "Member[parse].Member[parse_qs]", "Argument[0,qs:]", "ReturnValue", "taint"] # See https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlparse diff --git a/python/ql/lib/semmle/python/frameworks/Stdlib.qll b/python/ql/lib/semmle/python/frameworks/Stdlib.qll index c02aa4bb6d8a..f6552d6ec253 100644 --- a/python/ql/lib/semmle/python/frameworks/Stdlib.qll +++ b/python/ql/lib/semmle/python/frameworks/Stdlib.qll @@ -1760,6 +1760,59 @@ module StdlibPrivate { } } + // --------------------------------------------------------------------------- + // binascii + // --------------------------------------------------------------------------- + /** A call to a supported encoding function in the `binascii` module. */ + private class BinasciiEncodeCall extends Encoding::Range, DataFlow::CallCfgNode { + string codec; + + BinasciiEncodeCall() { + codec in ["base32", "base85", "ascii85"] and + this = API::moduleImport("binascii").getMember("b2a_" + codec).getACall() + } + + override DataFlow::Node getAnInput() { + result = this.getArg(0) + or + codec in ["base32", "base85"] and + result = this.getArgByName("alphabet") + } + + override DataFlow::Node getOutput() { result = this } + + override string getFormat() { + result in ["Base32", "Base85", "Ascii85"] and + result.toLowerCase() = codec + } + } + + /** A call to a supported decoding function in the `binascii` module. */ + private class BinasciiDecodeCall extends Decoding::Range, DataFlow::CallCfgNode { + string codec; + + BinasciiDecodeCall() { + codec in ["base32", "base85", "ascii85"] and + this = API::moduleImport("binascii").getMember("a2b_" + codec).getACall() + } + + override predicate mayExecuteInput() { none() } + + override DataFlow::Node getAnInput() { + result = this.getArg(0) + or + codec in ["base32", "base85"] and + result = this.getArgByName("alphabet") + } + + override DataFlow::Node getOutput() { result = this } + + override string getFormat() { + result in ["Base32", "Base85", "Ascii85"] and + result.toLowerCase() = codec + } + } + // --------------------------------------------------------------------------- // json // --------------------------------------------------------------------------- @@ -2041,6 +2094,34 @@ module StdlibPrivate { override predicate valueAllowsNewline() { any() } } + /** Additional response headers supplied by construction or instance assignment. */ + private class ExtraHeadersWrite extends Http::Server::ResponseHeaderBulkWrite::Range { + DataFlow::Node headers; + + ExtraHeadersWrite() { + exists(API::Node cls | + cls = + API::moduleImport("http") + .getMember("server") + .getMember("SimpleHTTPRequestHandler") + .getASubclass*() + | + this = cls.getACall() and + headers = this.(DataFlow::CallCfgNode).getArgByName("extra_response_headers") + or + this.(DataFlow::AttrWrite) + .writes([cls.getAnInstance(), cls.getAMember().getSelfParameter()] + .getAValueReachableFromSource(), "extra_response_headers", headers) + ) + } + + override DataFlow::Node getBulkArg() { result = headers } + + override predicate nameAllowsNewline() { any() } + + override predicate valueAllowsNewline() { any() } + } + private class AdditionalTaintStep extends TaintTracking::AdditionalTaintStep { override predicate step(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { nodeFrom = instance() and @@ -3105,12 +3186,15 @@ module StdlibPrivate { */ private class RegexExecutionMethod extends string { RegexExecutionMethod() { - this in ["match", "fullmatch", "search", "split", "findall", "finditer", "sub", "subn"] + this in [ + "match", "prefixmatch", "fullmatch", "search", "split", "findall", "finditer", "sub", + "subn" + ] } /** Gets the index of the argument representing the string to be searched by a regex. */ int getStringArgIndex() { - this in ["match", "fullmatch", "search", "split", "findall", "finditer"] and + this in ["match", "prefixmatch", "fullmatch", "search", "split", "findall", "finditer"] and result = 1 or this in ["sub", "subn"] and @@ -3244,7 +3328,7 @@ module StdlibPrivate { this = "compiled re.Match" ) | - result = re.getMember(["match", "search", "fullmatch"]).getACall() + result = re.getMember(["match", "prefixmatch", "search", "fullmatch"]).getACall() ) } @@ -4222,6 +4306,21 @@ module StdlibPrivate { } } + /** A flow summary for `frozendict`. */ + class FrozendictSummary extends SummarizedCallable::Range { + FrozendictSummary() { this = "builtins.frozendict" } + + override DataFlow::CallCfgNode getACall() { result = API::builtin("frozendict").getACall() } + + override DataFlow::ArgumentNode getACallback() { + result = API::builtin("frozendict").getAValueReachableFromSource() + } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + any(DictSummary s).propagatesFlow(input, output, preservesValue) + } + } + /** A flow summary for `list`. */ class ListSummary extends SummarizedCallable::Range { ListSummary() { this = "builtins.list" } diff --git a/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll b/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll index d91c4bbd78c0..0b47432cb16e 100644 --- a/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll +++ b/python/ql/lib/semmle/python/regexp/internal/ParseRegExp.qll @@ -44,7 +44,7 @@ private module FindRegexMode { or name = "search" and result = 2 or - name = "match" and result = 2 + name in ["match", "prefixmatch"] and result = 2 or name = "split" and result = 3 or diff --git a/python/ql/lib/semmle/python/security/dataflow/CodeInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/CodeInjectionCustomizations.qll index 5a7e5882e449..87e95d8a5542 100644 --- a/python/ql/lib/semmle/python/security/dataflow/CodeInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/CodeInjectionCustomizations.qll @@ -37,10 +37,9 @@ module CodeInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A code execution, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/CommandInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/CommandInjectionCustomizations.qll index facb422e7285..755a02b0efc2 100644 --- a/python/ql/lib/semmle/python/security/dataflow/CommandInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/CommandInjectionCustomizations.qll @@ -37,10 +37,9 @@ module CommandInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A command execution, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/CookieInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/CookieInjectionCustomizations.qll index cee2b7b98e73..ba5499d10ee2 100644 --- a/python/ql/lib/semmle/python/security/dataflow/CookieInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/CookieInjectionCustomizations.qll @@ -35,10 +35,9 @@ module CookieInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A write to a cookie, considered as a sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/HttpHeaderInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/HttpHeaderInjectionCustomizations.qll index 92cd46a3408a..cd651e0b1a88 100644 --- a/python/ql/lib/semmle/python/security/dataflow/HttpHeaderInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/HttpHeaderInjectionCustomizations.qll @@ -36,10 +36,9 @@ module HttpHeaderInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A HTTP header write, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/LdapInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/LdapInjectionCustomizations.qll index e67d02dc67e9..d69fe08308e1 100644 --- a/python/ql/lib/semmle/python/security/dataflow/LdapInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/LdapInjectionCustomizations.qll @@ -46,10 +46,9 @@ module LdapInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A logging operation, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/LogInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/LogInjectionCustomizations.qll index 98c767df2894..26a7b4723dfd 100644 --- a/python/ql/lib/semmle/python/security/dataflow/LogInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/LogInjectionCustomizations.qll @@ -37,10 +37,9 @@ module LogInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A logging operation, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/NoSqlInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/NoSqlInjectionCustomizations.qll index d708081a7f51..abe2d5690b86 100644 --- a/python/ql/lib/semmle/python/security/dataflow/NoSqlInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/NoSqlInjectionCustomizations.qll @@ -6,7 +6,6 @@ import python import semmle.python.dataflow.new.DataFlow -import semmle.python.dataflow.new.RemoteFlowSources import semmle.python.Concepts /** @@ -63,8 +62,14 @@ module NoSqlInjection { abstract DataFlow::Node getOutput(); } - /** A remote flow source considered a source of user controlled strings. */ - class RemoteFlowSourceAsStringSource extends RemoteFlowSource, StringSource { } + /** + * DEPRECATED: Use `ActiveThreatModelSource` from Concepts instead! + */ + deprecated class RemoteFlowSourceAsStringSource = ActiveThreatModelSourceAsStringSource; + + /** An active threat-model source considered a source of user controlled strings. */ + private class ActiveThreatModelSourceAsStringSource extends StringSource instanceof ActiveThreatModelSource + { } /** A NoSQL query that is vulnerable to user controlled strings. */ class NoSqlExecutionAsStringSink extends StringSink { diff --git a/python/ql/lib/semmle/python/security/dataflow/PamAuthorizationCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/PamAuthorizationCustomizations.qll index eb858be8f95d..0e9dfe390694 100644 --- a/python/ql/lib/semmle/python/security/dataflow/PamAuthorizationCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/PamAuthorizationCustomizations.qll @@ -44,10 +44,9 @@ module PamAuthorizationCustomizations { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A vulnerable `pam_authenticate` call considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/PathInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/PathInjectionCustomizations.qll index 7121faa19ffb..ab43cbd861b6 100644 --- a/python/ql/lib/semmle/python/security/dataflow/PathInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/PathInjectionCustomizations.qll @@ -47,10 +47,9 @@ module PathInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A file system access, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/PolynomialReDoSCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/PolynomialReDoSCustomizations.qll index 1e9148517bf2..18c50aca6ce9 100644 --- a/python/ql/lib/semmle/python/security/dataflow/PolynomialReDoSCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/PolynomialReDoSCustomizations.qll @@ -56,10 +56,9 @@ module PolynomialReDoS { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A regex execution, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/ReflectedXSSCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/ReflectedXSSCustomizations.qll index 0ef2234a5772..ced98aa4d5aa 100644 --- a/python/ql/lib/semmle/python/security/dataflow/ReflectedXSSCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/ReflectedXSSCustomizations.qll @@ -37,10 +37,9 @@ module ReflectedXss { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A data flow sink for "reflected cross-site scripting" vulnerabilities. diff --git a/python/ql/lib/semmle/python/security/dataflow/RegexInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/RegexInjectionCustomizations.qll index 559b1f66e7e6..32c9430a8656 100644 --- a/python/ql/lib/semmle/python/security/dataflow/RegexInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/RegexInjectionCustomizations.qll @@ -44,10 +44,9 @@ module RegexInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A regex escaping, considered as a sanitizer. diff --git a/python/ql/lib/semmle/python/security/dataflow/ServerSideRequestForgeryCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/ServerSideRequestForgeryCustomizations.qll index e3f18170f630..506f7fb6ecd3 100644 --- a/python/ql/lib/semmle/python/security/dataflow/ServerSideRequestForgeryCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/ServerSideRequestForgeryCustomizations.qll @@ -50,10 +50,9 @@ module ServerSideRequestForgery { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** The URL of an HTTP request, considered as a sink. */ class HttpRequestUrlAsSink extends Sink { @@ -164,7 +163,7 @@ module ServerSideRequestForgery { ["isalnum", "isalpha", "isdecimal", "isdigit", "isidentifier", "isnumeric", "isspace"]) or branch = true and - call = API::moduleImport("re").getMember(["match", "fullmatch"]).getACall() and + call = API::moduleImport("re").getMember(["match", "prefixmatch", "fullmatch"]).getACall() and strNode = [call.getArg(1), call.getArgByName("string")] or branch = true and @@ -172,7 +171,7 @@ module ServerSideRequestForgery { API::moduleImport("re") .getMember("compile") .getReturn() - .getMember(["match", "fullmatch"]) + .getMember(["match", "prefixmatch", "fullmatch"]) .getACall() and strNode = [call.getArg(0), call.getArgByName("string")] ) diff --git a/python/ql/lib/semmle/python/security/dataflow/SqlInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/SqlInjectionCustomizations.qll index ee6f17b03d2c..071cbf512ffe 100644 --- a/python/ql/lib/semmle/python/security/dataflow/SqlInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/SqlInjectionCustomizations.qll @@ -36,10 +36,9 @@ module SqlInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A SQL statement of a SQL construction, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/TemplateInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/TemplateInjectionCustomizations.qll index e61d55253090..3449eeaf3856 100644 --- a/python/ql/lib/semmle/python/security/dataflow/TemplateInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/TemplateInjectionCustomizations.qll @@ -31,10 +31,9 @@ module TemplateInjection { */ abstract class Sanitizer extends DataFlow::Node { } - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A SQL statement of a SQL construction, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/UnsafeDeserializationCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/UnsafeDeserializationCustomizations.qll index 17450bb82d96..74586e768768 100644 --- a/python/ql/lib/semmle/python/security/dataflow/UnsafeDeserializationCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/UnsafeDeserializationCustomizations.qll @@ -37,10 +37,9 @@ module UnsafeDeserialization { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * An insecure decoding, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/UrlRedirectCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/UrlRedirectCustomizations.qll index 75a638fc3a42..471af9756d23 100644 --- a/python/ql/lib/semmle/python/security/dataflow/UrlRedirectCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/UrlRedirectCustomizations.qll @@ -82,10 +82,9 @@ module UrlRedirect { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A HTTP redirect response, considered as a flow sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/XmlBombCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/XmlBombCustomizations.qll index 317bee333871..5fb3aee77e3d 100644 --- a/python/ql/lib/semmle/python/security/dataflow/XmlBombCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/XmlBombCustomizations.qll @@ -7,7 +7,6 @@ private import python private import semmle.python.dataflow.new.DataFlow private import semmle.python.Concepts -private import semmle.python.dataflow.new.RemoteFlowSources /** * Provides default sources, sinks and sanitizers for detecting "XML bomb" @@ -29,8 +28,14 @@ module XmlBomb { */ abstract class Sanitizer extends DataFlow::Node { } - /** A source of remote user input, considered as a flow source for XML bomb vulnerabilities. */ - class RemoteFlowSourceAsSource extends Source instanceof RemoteFlowSource { } + /** + * DEPRECATED: Use `ActiveThreatModelSource` from Concepts instead! + */ + deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; + + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A call to an XML parser that is vulnerable to XML bombs. diff --git a/python/ql/lib/semmle/python/security/dataflow/XpathInjectionCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/XpathInjectionCustomizations.qll index 10b47f174390..992ed49dca98 100644 --- a/python/ql/lib/semmle/python/security/dataflow/XpathInjectionCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/XpathInjectionCustomizations.qll @@ -34,10 +34,9 @@ module XpathInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A construction of an XPath expression, considered as a sink. diff --git a/python/ql/lib/semmle/python/security/dataflow/XxeCustomizations.qll b/python/ql/lib/semmle/python/security/dataflow/XxeCustomizations.qll index c98e8153be90..786b6160e3b9 100644 --- a/python/ql/lib/semmle/python/security/dataflow/XxeCustomizations.qll +++ b/python/ql/lib/semmle/python/security/dataflow/XxeCustomizations.qll @@ -7,7 +7,6 @@ private import python private import semmle.python.dataflow.new.DataFlow private import semmle.python.Concepts -private import semmle.python.dataflow.new.RemoteFlowSources /** * Provides default sources, sinks and sanitizers for detecting "XML External Entity (XXE)" @@ -29,8 +28,14 @@ module Xxe { */ abstract class Sanitizer extends DataFlow::Node { } - /** A source of remote user input, considered as a flow source for XXE vulnerabilities. */ - class RemoteFlowSourceAsSource extends Source instanceof RemoteFlowSource { } + /** + * DEPRECATED: Use `ActiveThreatModelSource` from Concepts instead! + */ + deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; + + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A call to an XML parser that is vulnerable to XXE. diff --git a/python/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/python/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 9ce5fdf326ca..fa37afa388c0 100644 --- a/python/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/python/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import python private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/python/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/python/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index ea8faaeeae31..bc8c66cba5f3 100644 --- a/python/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/python/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -9,4 +9,14 @@ module Impl implements InlineExpectationsTestSig { class ExpectationComment = PY::Comment; class Location = PY::Location; + + string getRelativeUrl(Location location) { + exists(PY::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 874d180f72cc..3273d360f617 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.8.13 + +No user-facing changes. + +## 1.8.12 + +No user-facing changes. + +## 1.8.11 + +No user-facing changes. + ## 1.8.10 No user-facing changes. diff --git a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll index 9c12845a0cad..7baec4738b08 100644 --- a/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll +++ b/python/ql/src/Security/CWE-020-ExternalAPIs/ExternalAPIs.qll @@ -6,7 +6,7 @@ private import python import semmle.python.dataflow.new.DataFlow private import semmle.python.dataflow.new.TaintTracking -private import semmle.python.dataflow.new.RemoteFlowSources +private import semmle.python.Concepts private import semmle.python.ApiGraphs private import semmle.python.dataflow.new.internal.DataFlowPrivate as DataFlowPrivate private import semmle.python.dataflow.new.internal.TaintTrackingPrivate as TaintTrackingPrivate @@ -168,7 +168,7 @@ class ExternalApiDataNode extends DataFlow::Node { } private module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } @@ -177,7 +177,7 @@ private module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { } } -/** Global taint-tracking from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ +/** Global taint-tracking from active threat-model sources to `ExternalApiDataNode`s. */ module UntrustedDataToExternalApiFlow = TaintTracking::Global; /** A node representing untrusted data being passed to an external API. */ diff --git a/python/ql/src/change-notes/released/1.8.11.md b/python/ql/src/change-notes/released/1.8.11.md new file mode 100644 index 000000000000..cbd98fc1758f --- /dev/null +++ b/python/ql/src/change-notes/released/1.8.11.md @@ -0,0 +1,3 @@ +## 1.8.11 + +No user-facing changes. diff --git a/python/ql/src/change-notes/released/1.8.12.md b/python/ql/src/change-notes/released/1.8.12.md new file mode 100644 index 000000000000..e16969563da6 --- /dev/null +++ b/python/ql/src/change-notes/released/1.8.12.md @@ -0,0 +1,3 @@ +## 1.8.12 + +No user-facing changes. diff --git a/python/ql/src/change-notes/released/1.8.13.md b/python/ql/src/change-notes/released/1.8.13.md new file mode 100644 index 000000000000..f6ba4db672bd --- /dev/null +++ b/python/ql/src/change-notes/released/1.8.13.md @@ -0,0 +1,3 @@ +## 1.8.13 + +No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index b615673a3ce0..a0c60d1bc7e6 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.8.10 +lastReleaseVersion: 1.8.13 diff --git a/python/ql/src/experimental/Security/CWE-091/XsltInjectionCustomizations.qll b/python/ql/src/experimental/Security/CWE-091/XsltInjectionCustomizations.qll index 6e6abea97f95..ab3ae8e703a3 100644 --- a/python/ql/src/experimental/Security/CWE-091/XsltInjectionCustomizations.qll +++ b/python/ql/src/experimental/Security/CWE-091/XsltInjectionCustomizations.qll @@ -37,10 +37,9 @@ module XsltInjection { */ deprecated class RemoteFlowSourceAsSource = ActiveThreatModelSourceAsSource; - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * An XSLT construction, considered as a flow sink. diff --git a/python/ql/src/experimental/Security/CWE-176/UnicodeBypassValidationQuery.qll b/python/ql/src/experimental/Security/CWE-176/UnicodeBypassValidationQuery.qll index c0337117cf01..e4604c008051 100644 --- a/python/ql/src/experimental/Security/CWE-176/UnicodeBypassValidationQuery.qll +++ b/python/ql/src/experimental/Security/CWE-176/UnicodeBypassValidationQuery.qll @@ -9,7 +9,6 @@ import semmle.python.Concepts import semmle.python.dataflow.new.internal.DataFlowPublic import semmle.python.dataflow.new.TaintTracking import semmle.python.dataflow.new.internal.TaintTrackingPrivate -import semmle.python.dataflow.new.RemoteFlowSources import UnicodeBypassValidationCustomizations::UnicodeBypassValidation abstract private class ValidationState extends string { @@ -37,7 +36,7 @@ private module UnicodeBypassValidationConfig implements DataFlow::StateConfigSig class FlowState = ValidationState; predicate isSource(DataFlow::Node source, FlowState state) { - source instanceof RemoteFlowSource and state instanceof PreValidation + source instanceof ActiveThreatModelSource and state instanceof PreValidation } predicate isAdditionalFlowStep( diff --git a/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql b/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql index 01e661cb0bbf..ce0b02908c56 100644 --- a/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql +++ b/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql @@ -10,6 +10,7 @@ import python import semmle.python.ApiGraphs +import semmle.python.Concepts import semmle.python.dataflow.new.TaintTracking import semmle.python.Flow import semmle.python.dataflow.new.RemoteFlowSources @@ -62,7 +63,7 @@ class CherryPyRequest extends RemoteFlowSource::Range { } module CorsBypassConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node node) { node instanceof RemoteFlowSource } + predicate isSource(DataFlow::Node node) { node instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node node) { exists(StringStartswithCall s | diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql index 61cdd34920de..80d35bc48d24 100644 --- a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql @@ -15,7 +15,6 @@ import semmle.python.ApiGraphs import semmle.python.Concepts import semmle.python.dataflow.new.TaintTracking import semmle.python.dataflow.new.internal.DataFlowPublic -import semmle.python.dataflow.new.RemoteFlowSources // The Unicode compatibility normalization calls from unicodedata, unidecode, pyunormalize // and textnorm modules. The use of argIdx is to constraint the argument being normalized. @@ -86,7 +85,7 @@ predicate underAValue(DataFlow::GuardNode g, ControlFlowNode node, boolean branc } private module UnicodeDoSConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } predicate isBarrier(DataFlow::Node sanitizer) { // underAValue is a check to ensure that the length of the user-provided value is limited to a certain amount diff --git a/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll b/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll index 64da6b8d799a..69367c2f43a5 100644 --- a/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll +++ b/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll @@ -8,7 +8,6 @@ import semmle.python.dataflow.new.internal.DataFlowPublic import semmle.python.ApiGraphs import semmle.python.dataflow.new.TaintTracking import semmle.python.frameworks.Stdlib -import semmle.python.dataflow.new.RemoteFlowSources /** * Handle those three cases of Tarfile opens: @@ -41,8 +40,8 @@ class AllTarfileOpens extends API::CallNode { module UnsafeUnpackConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { - // A source coming from a remote location - source instanceof RemoteFlowSource + // A source enabled by the active threat model + source instanceof ActiveThreatModelSource or // A source coming from a CLI argparse module // see argparse: https://docs.python.org/3/library/argparse.html diff --git a/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll b/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll index f05e5826420f..a00548e00161 100644 --- a/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll +++ b/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll @@ -1,8 +1,8 @@ import python import semmle.python.dataflow.new.TaintTracking import semmle.python.ApiGraphs -import semmle.python.dataflow.new.RemoteFlowSources import semmle.python.dataflow.new.internal.DataFlowPublic +import semmle.python.Concepts import FileAndFormRemoteFlowSource::FileAndFormRemoteFlowSource import codeql.util.Unit @@ -426,7 +426,7 @@ predicate isAdditionalTaintStepTextIOWrapper(DataFlow::Node nodeFrom, DataFlow:: module BombsConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { - source instanceof RemoteFlowSource + source instanceof ActiveThreatModelSource or source instanceof FastApi } diff --git a/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll b/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll index 630543e6f798..f81279a4ec3a 100644 --- a/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll +++ b/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll @@ -5,7 +5,7 @@ import python import semmle.python.dataflow.new.DataFlow import semmle.python.dataflow.new.TaintTracking -import semmle.python.dataflow.new.RemoteFlowSources +import semmle.python.Concepts import experimental.semmle.python.Concepts string getFullHostRegex() { result = "(?i)ldap://.+" } @@ -90,7 +90,7 @@ class LdapStringVar extends BinaryExpr { */ private module LdapInsecureAuthConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { - source instanceof RemoteFlowSource or + source instanceof ActiveThreatModelSource or source.asExpr() instanceof LdapFullHost or source.asExpr() instanceof LdapBothStrings or source.asExpr() instanceof LdapBothVar or diff --git a/python/ql/src/experimental/semmle/python/security/RemoteCommandExecution.qll b/python/ql/src/experimental/semmle/python/security/RemoteCommandExecution.qll index 6f4ea88a7472..01642c1e8a13 100644 --- a/python/ql/src/experimental/semmle/python/security/RemoteCommandExecution.qll +++ b/python/ql/src/experimental/semmle/python/security/RemoteCommandExecution.qll @@ -1,13 +1,13 @@ import python import semmle.python.dataflow.new.TaintTracking -import semmle.python.dataflow.new.RemoteFlowSources import semmle.python.ApiGraphs import semmle.python.dataflow.new.internal.DataFlowPublic +import semmle.python.Concepts import codeql.util.Unit import experimental.semmle.python.Concepts module RemoteCommandExecutionConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node sink) { sink = any(RemoteCommandExecution rce).getCommand() } diff --git a/python/ql/src/experimental/semmle/python/security/TimingAttack.qll b/python/ql/src/experimental/semmle/python/security/TimingAttack.qll index 6d8cc98f21ce..4d4495df83cb 100644 --- a/python/ql/src/experimental/semmle/python/security/TimingAttack.qll +++ b/python/ql/src/experimental/semmle/python/security/TimingAttack.qll @@ -2,7 +2,7 @@ private import python private import semmle.python.dataflow.new.TaintTracking private import semmle.python.dataflow.new.DataFlow private import semmle.python.ApiGraphs -private import semmle.python.dataflow.new.RemoteFlowSources +private import semmle.python.Concepts private import semmle.python.frameworks.Flask private import semmle.python.frameworks.Django @@ -268,7 +268,7 @@ private string sensitiveheaders() { * A config that tracks data flow from remote user input to Variable that hold sensitive info */ module UserInputSecretConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof CredentialExpr } } @@ -279,7 +279,7 @@ module UserInputSecretFlow = TaintTracking::Global; * A config that tracks data flow from remote user input to Equality test */ module UserInputInComparisonConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node sink) { exists(Compare cmp, Expr left, Expr right, Cmpop cmpop | diff --git a/python/ql/src/experimental/semmle/python/security/dataflow/EmailXss.qll b/python/ql/src/experimental/semmle/python/security/dataflow/EmailXss.qll index 8f392a43a8a3..53f8f86d90af 100644 --- a/python/ql/src/experimental/semmle/python/security/dataflow/EmailXss.qll +++ b/python/ql/src/experimental/semmle/python/security/dataflow/EmailXss.qll @@ -5,14 +5,13 @@ import python import semmle.python.dataflow.new.DataFlow import semmle.python.dataflow.new.TaintTracking -import semmle.python.dataflow.new.RemoteFlowSources import semmle.python.dataflow.new.BarrierGuards import experimental.semmle.python.Concepts import semmle.python.Concepts import semmle.python.ApiGraphs private module EmailXssConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node sink) { sink = any(EmailSender email).getHtmlBody() } diff --git a/python/ql/src/experimental/semmle/python/security/dataflow/PromptInjectionCustomizations.qll b/python/ql/src/experimental/semmle/python/security/dataflow/PromptInjectionCustomizations.qll index b214ec87d4fc..95e611cad7d6 100644 --- a/python/ql/src/experimental/semmle/python/security/dataflow/PromptInjectionCustomizations.qll +++ b/python/ql/src/experimental/semmle/python/security/dataflow/PromptInjectionCustomizations.qll @@ -34,10 +34,9 @@ module PromptInjection { */ abstract class Sanitizer extends DataFlow::Node { } - /** - * An active threat-model source, considered as a flow source. - */ - private class ActiveThreatModelSourceAsSource extends Source, ActiveThreatModelSource { } + /** An active threat-model source, considered as a flow source. */ + private class ActiveThreatModelSourceAsSource extends Source instanceof ActiveThreatModelSource { + } /** * A prompt to an AI model, considered as a flow sink. diff --git a/python/ql/src/experimental/semmle/python/security/injection/CsvInjection.qll b/python/ql/src/experimental/semmle/python/security/injection/CsvInjection.qll index 859f6d1e5e80..e70e6b8bb60b 100644 --- a/python/ql/src/experimental/semmle/python/security/injection/CsvInjection.qll +++ b/python/ql/src/experimental/semmle/python/security/injection/CsvInjection.qll @@ -1,15 +1,15 @@ import python import experimental.semmle.python.Concepts +import semmle.python.Concepts import semmle.python.dataflow.new.DataFlow import semmle.python.dataflow.new.TaintTracking import semmle.python.dataflow.new.BarrierGuards -import semmle.python.dataflow.new.RemoteFlowSources /** * A taint-tracking configuration for tracking untrusted user input used in file read. */ private module CsvInjectionConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node sink) { sink = any(CsvWriter cw).getAnInput() } diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index d48bc1e8e7cc..136074e7c580 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.8.10 +version: 1.8.13 groups: - python - queries diff --git a/python/ql/test/3/extractor-tests/match-unary-plus/test.expected b/python/ql/test/3/extractor-tests/match-unary-plus/test.expected new file mode 100644 index 000000000000..ed0362097fa6 --- /dev/null +++ b/python/ql/test/3/extractor-tests/match-unary-plus/test.expected @@ -0,0 +1,15 @@ +| test.py:2:10:2:11 | UnaryExpr | UAdd | +| test.py:4:10:4:13 | UnaryExpr | UAdd | +| test.py:6:10:6:12 | UnaryExpr | UAdd | +| test.py:8:10:8:11 | UnaryExpr | UAdd | +| test.py:10:10:10:11 | UnaryExpr | UAdd | +| test.py:12:10:12:14 | UnaryExpr | UAdd | +| test.py:12:18:12:22 | UnaryExpr | UAdd | +| test.py:12:26:12:30 | UnaryExpr | UAdd | +| test.py:14:11:14:12 | UnaryExpr | UAdd | +| test.py:14:15:14:18 | UnaryExpr | USub | +| test.py:16:11:16:12 | UnaryExpr | UAdd | +| test.py:16:18:16:21 | UnaryExpr | UAdd | +| test.py:16:27:16:29 | UnaryExpr | UAdd | +| test.py:18:10:18:11 | UnaryExpr | USub | +| test.py:20:10:20:11 | UnaryExpr | USub | diff --git a/python/ql/test/3/extractor-tests/match-unary-plus/test.py b/python/ql/test/3/extractor-tests/match-unary-plus/test.py new file mode 100644 index 000000000000..55267d6fff45 --- /dev/null +++ b/python/ql/test/3/extractor-tests/match-unary-plus/test.py @@ -0,0 +1,21 @@ +match value: + case +1: + pass + case +1.5: + pass + case +2j: + pass + case +1+2j: + pass + case +1-2j: + pass + case +0x10 | +0o10 | +0b10: + pass + case [+0, -0.0]: + pass + case {+1: x, +1.5: y, +2j: z}: + pass + case -1+2j: + pass + case -1-2j: + pass diff --git a/python/ql/test/3/extractor-tests/match-unary-plus/test.ql b/python/ql/test/3/extractor-tests/match-unary-plus/test.ql new file mode 100644 index 000000000000..9501d354eb13 --- /dev/null +++ b/python/ql/test/3/extractor-tests/match-unary-plus/test.ql @@ -0,0 +1,5 @@ +import python + +from UnaryExpr expr +where expr.getLocation().getFile().getShortName() = "test.py" +select expr, expr.getOp().toString() diff --git a/python/ql/test/3/extractor-tests/unicode17-identifiers/test.expected b/python/ql/test/3/extractor-tests/unicode17-identifiers/test.expected new file mode 100644 index 000000000000..066f9a49511b --- /dev/null +++ b/python/ql/test/3/extractor-tests/unicode17-identifiers/test.expected @@ -0,0 +1,13 @@ +| test.py:2:1:2:3 | \u088f | \u088f | +| test.py:3:1:3:4 | \ufffd | \ufffd | +| test.py:4:1:4:4 | \ufffd | \ufffd | +| test.py:5:1:5:4 | \ufffd | \ufffd | +| test.py:8:1:8:4 | a\u1acf | a\u1acf | +| test.py:9:1:9:5 | a\ufffd | a\ufffd | +| test.py:11:1:11:6 | result | result | +| test.py:11:10:11:12 | \u088f | \u088f | +| test.py:11:16:11:19 | \ufffd | \ufffd | +| test.py:11:23:11:26 | \ufffd | \ufffd | +| test.py:11:30:11:33 | \ufffd | \ufffd | +| test.py:11:37:11:40 | a\u1acf | a\u1acf | +| test.py:11:44:11:48 | a\ufffd | a\ufffd | diff --git a/python/ql/test/3/extractor-tests/unicode17-identifiers/test.py b/python/ql/test/3/extractor-tests/unicode17-identifiers/test.py new file mode 100644 index 000000000000..ef91ffd3eca9 --- /dev/null +++ b/python/ql/test/3/extractor-tests/unicode17-identifiers/test.py @@ -0,0 +1,11 @@ +# Unicode 17 identifier starts: Arabic, Tai Yo, CJK Extension J, and Tolong Siki. +࢏ = 1 +𞛀 = 2 +𲎰 = 3 +𑶰 = 4 + +# Unicode 17 identifier continuations: a combining mark and a decimal digit. +a᫏ = 5 +a𑷠 = 6 + +result = ࢏ + 𞛀 + 𲎰 + 𑶰 + a᫏ + a𑷠 diff --git a/python/ql/test/3/extractor-tests/unicode17-identifiers/test.ql b/python/ql/test/3/extractor-tests/unicode17-identifiers/test.ql new file mode 100644 index 000000000000..37fbb5055c29 --- /dev/null +++ b/python/ql/test/3/extractor-tests/unicode17-identifiers/test.ql @@ -0,0 +1,5 @@ +import python + +from Name name +where name.getLocation().getFile().getShortName() = "test.py" +select name, name.getId() diff --git a/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.expected b/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.expected index 28c85388a97f..053cd7a574bc 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.expected @@ -71,7 +71,9 @@ edges | xsltInjection.py:46:38:46:48 | ControlFlowNode for xsltStrings [List element] | xsltInjection.py:46:17:46:49 | ControlFlowNode for Attribute() | provenance | | | xsltInjection.py:46:38:46:48 | ControlFlowNode for xsltStrings [List element] | xsltInjection.py:46:17:46:49 | ControlFlowNode for Attribute() | provenance | Config | | xsltInjection.py:46:38:46:48 | ControlFlowNode for xsltStrings [List element] | xsltInjection.py:46:17:46:49 | ControlFlowNode for Attribute() | provenance | Decoding-XML | -| xsltInjection.py:46:38:46:48 | ControlFlowNode for xsltStrings [List element] | xsltInjection.py:46:17:46:49 | ControlFlowNode for Attribute() | provenance | MaD:58660 | +| xsltInjection.py:46:38:46:48 | ControlFlowNode for xsltStrings [List element] | xsltInjection.py:46:17:46:49 | ControlFlowNode for Attribute() | provenance | MaD:1 | +models +| 1 | Summary: lxml; Member[etree].Member[fromstringlist]; Argument[0,strings:].ListElement; ReturnValue; taint | nodes | xslt.py:3:26:3:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | xslt.py:3:26:3:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.qlref b/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.qlref index 5bde608133c6..92d16b1b04dc 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.qlref +++ b/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.qlref @@ -1,2 +1,4 @@ query: experimental/Security/CWE-091/XsltInjection.ql -postprocess: utils/test/InlineExpectationsTestQuery.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/python/ql/test/library-tests/ApiGraphs/py3/test.py b/python/ql/test/library-tests/ApiGraphs/py3/test.py index 4c48e1f1daee..64e7c2a0a9c7 100644 --- a/python/ql/test/library-tests/ApiGraphs/py3/test.py +++ b/python/ql/test/library-tests/ApiGraphs/py3/test.py @@ -119,3 +119,12 @@ def python2_style(): # In Python 3, `__builtin__` has no special meaning. from __builtin__ import open # $ use=moduleImport("__builtin__").getMember("open") open("hello.txt") # $ use=moduleImport("__builtin__").getMember("open").getReturn() + +def python315_builtins(): + frozendict(key="value") # $ use=moduleImport("builtins").getMember("frozendict").getReturn() + sentinel("MISSING") # $ use=moduleImport("builtins").getMember("sentinel").getReturn() + + freeze = frozendict # $ use=moduleImport("builtins").getMember("frozendict") + make_sentinel = sentinel # $ use=moduleImport("builtins").getMember("sentinel") + freeze(key="value") # $ use=moduleImport("builtins").getMember("frozendict").getReturn() + make_sentinel("UNSET") # $ use=moduleImport("builtins").getMember("sentinel").getReturn() diff --git a/python/ql/test/library-tests/dataflow/frozendict/NormalDataflowTest.expected b/python/ql/test/library-tests/dataflow/frozendict/NormalDataflowTest.expected new file mode 100644 index 000000000000..2fad7bb9a843 --- /dev/null +++ b/python/ql/test/library-tests/dataflow/frozendict/NormalDataflowTest.expected @@ -0,0 +1,2 @@ +missingAnnotationOnSink +testFailures diff --git a/python/ql/test/library-tests/dataflow/frozendict/NormalDataflowTest.ql b/python/ql/test/library-tests/dataflow/frozendict/NormalDataflowTest.ql new file mode 100644 index 000000000000..1e0627bfcca1 --- /dev/null +++ b/python/ql/test/library-tests/dataflow/frozendict/NormalDataflowTest.ql @@ -0,0 +1,2 @@ +import python +import utils.test.dataflow.NormalDataflowTest diff --git a/python/ql/test/library-tests/dataflow/frozendict/options b/python/ql/test/library-tests/dataflow/frozendict/options new file mode 100644 index 000000000000..89369a90996b --- /dev/null +++ b/python/ql/test/library-tests/dataflow/frozendict/options @@ -0,0 +1 @@ +semmle-extractor-options: --lang=3 --max-import-depth=1 diff --git a/python/ql/test/library-tests/dataflow/frozendict/test.py b/python/ql/test/library-tests/dataflow/frozendict/test.py new file mode 100644 index 000000000000..05346736e240 --- /dev/null +++ b/python/ql/test/library-tests/dataflow/frozendict/test.py @@ -0,0 +1,96 @@ +def from_keywords(): + frozen = frozendict(tainted=SOURCE, clean=NONSOURCE) + SINK(frozen["tainted"]) # $ flow="SOURCE, l:-1 -> frozen['tainted']" + SINK_F(frozen["clean"]) + + +def from_mapping(): + frozen = frozendict({"tainted": SOURCE, "clean": NONSOURCE}, extra=NONSOURCE) + SINK(frozen["tainted"]) # $ flow="SOURCE, l:-1 -> frozen['tainted']" + SINK_F(frozen["clean"]) + SINK_F(frozen["extra"]) + + +def from_pairs(): + frozen = frozendict([("key", SOURCE)]) + SINK(frozen["key"]) # $ flow="SOURCE, l:-1 -> frozen['key']" + + +def from_frozendict(): + original = frozendict(tainted=SOURCE, clean=NONSOURCE) + frozen = frozendict(original) + SINK(frozen["tainted"]) # $ flow="SOURCE, l:-2 -> frozen['tainted']" + SINK_F(frozen["clean"]) + + +def from_unpacked_keywords(): + frozen = frozendict(**{"tainted": SOURCE, "clean": NONSOURCE}) + SINK(frozen["tainted"]) # $ MISSING: flow="SOURCE, l:-1 -> frozen['tainted']" + SINK_F(frozen["clean"]) + + # Keyword unpacking has the same limitation for dict. + mutable = dict(**{"tainted": SOURCE, "clean": NONSOURCE}) + SINK(mutable["tainted"]) # $ MISSING: flow="SOURCE, l:-1 -> mutable['tainted']" + SINK_F(mutable["clean"]) + + +def nested_contents(): + frozen = frozendict(nested={"key": SOURCE}) + SINK(frozen["nested"]["key"]) # $ flow="SOURCE, l:-1 -> frozen['nested']['key']" + + +def qualified_constructor(): + import builtins + frozen = builtins.frozendict(key=SOURCE) + SINK(frozen["key"]) # $ flow="SOURCE, l:-1 -> frozen['key']" + + +def imported_constructor(): + from builtins import frozendict as freeze + frozen = freeze(key=SOURCE) + SINK(frozen["key"]) # $ flow="SOURCE, l:-1 -> frozen['key']" + + +def aliased_constructor(): + freeze = frozendict + frozen = freeze(key=SOURCE) + SINK(frozen["key"]) # $ flow="SOURCE, l:-1 -> frozen['key']" + + +def constructor_callback(): + frozen = next(map(frozendict, [{"key": SOURCE}])) + SINK(frozen["key"]) # $ flow="SOURCE, l:-1 -> frozen['key']" + + +def mapping_methods(): + frozen = frozendict(tainted=SOURCE, clean=NONSOURCE) + SINK(frozen.get("tainted")) # $ flow="SOURCE, l:-1 -> frozen.get(..)" + SINK_F(frozen.get("clean")) + SINK_F(frozen.get("missing")) + + copied = frozen.copy() + SINK(copied["tainted"]) # $ flow="SOURCE, l:-6 -> copied['tainted']" + SINK_F(copied["clean"]) + + values = list(frozen.values()) + SINK(values[0]) # $ flow="SOURCE, l:-10 -> values[0]" + + items = list(frozen.items()) + SINK(items[0][1]) # $ flow="SOURCE, l:-13 -> items[0][1]" + SINK_F(items[0][0]) + + +def copied_contents(): + original = {"key": SOURCE} + frozen = frozendict(original) + original["key"] = NONSOURCE + SINK(frozen["key"]) # $ flow="SOURCE, l:-3 -> frozen['key']" + SINK_F(original["key"]) + + +def shadowed_constructor(): + def frozendict(**kwargs): + return {"key": NONSOURCE} + + frozen = frozendict(key=SOURCE) + SINK_F(frozen["key"]) diff --git a/python/ql/test/library-tests/dataflow/tainttracking/defaultAdditionalTaintStep-py3/test_bytearray.py b/python/ql/test/library-tests/dataflow/tainttracking/defaultAdditionalTaintStep-py3/test_bytearray.py new file mode 100644 index 000000000000..29718b85df06 --- /dev/null +++ b/python/ql/test/library-tests/dataflow/tainttracking/defaultAdditionalTaintStep-py3/test_bytearray.py @@ -0,0 +1,88 @@ +# Add taintlib to PATH so it can be imported during runtime without any hassle +import sys; import os; sys.path.append(os.path.dirname(os.path.dirname((__file__)))) +from taintlib import TAINTED_BYTES, TAINTED_STRING, ensure_tainted, ensure_not_tainted, taint + + +def constructors(): + import builtins + from builtins import bytearray as make_buffer + + ensure_tainted( + bytearray(TAINTED_BYTES), # $ tainted + bytearray(source=TAINTED_BYTES), # $ tainted + bytearray(TAINTED_STRING, "utf-8"), # $ tainted + bytearray(source=TAINTED_STRING, encoding="utf-8"), # $ tainted + builtins.bytearray(TAINTED_BYTES), # $ tainted + make_buffer(TAINTED_BYTES), # $ tainted + ) + ensure_not_tainted(bytearray(b"safe")) + + +def shadowed_constructor(): + def bytearray(source): + return b"safe" + + ensure_not_tainted(bytearray(TAINTED_BYTES)) + + +def take_bytes(): + ensure_tainted( + bytearray(TAINTED_BYTES).take_bytes(), # $ tainted + bytearray(TAINTED_BYTES).take_bytes(None), # $ tainted + bytearray(source=TAINTED_STRING, encoding="utf-8").take_bytes().decode(), # $ tainted + bytearray.take_bytes(bytearray(TAINTED_BYTES)), # $ tainted + ) + + buffer = bytearray(TAINTED_BYTES) + take = buffer.take_bytes + ensure_tainted(take()) # $ tainted + + ensure_not_tainted(bytearray(b"safe").take_bytes()) + ensure_not_tainted(bytearray().take_bytes()) + + +def take_partial_bytes(): + buffer = bytearray(TAINTED_BYTES) + ensure_tainted(buffer.take_bytes(1)) # $ tainted + ensure_tainted(buffer) # $ tainted + ensure_tainted(buffer.take_bytes(-1)) # $ tainted + ensure_tainted(buffer) # $ tainted + + size = 1 + taint(size) + ensure_not_tainted(bytearray(b"safe").take_bytes(size)) + + +def empty_results(): + buffer = bytearray(TAINTED_BYTES) + # Whole-buffer taint does not distinguish empty slices. + ensure_not_tainted(buffer[:0]) # $ SPURIOUS: tainted + ensure_not_tainted(buffer.take_bytes(0)) # $ SPURIOUS: tainted + + +def consumed_buffer(): + buffer = bytearray(b"abc") + taint(buffer) + result = buffer.take_bytes() + ensure_tainted(result) # $ tainted + + # Whole-buffer taint is not removed when the buffer is emptied. + ensure_not_tainted(buffer) # $ SPURIOUS: tainted + ensure_not_tainted(buffer.take_bytes()) # $ SPURIOUS: tainted + + +def cleared_buffer(): + buffer = bytearray(b"abc") + taint(buffer) + buffer.clear() + ensure_not_tainted(buffer) # $ SPURIOUS: tainted + + +constructors() +shadowed_constructor() +cleared_buffer() +if sys.version_info >= (3, 15): + take_bytes() + take_partial_bytes() + empty_results() + consumed_buffer() diff --git a/python/ql/test/library-tests/dataflow/tainttracking/defaultAdditionalTaintStep-py3/test_frozendict.py b/python/ql/test/library-tests/dataflow/tainttracking/defaultAdditionalTaintStep-py3/test_frozendict.py new file mode 100644 index 000000000000..64d1a63a695f --- /dev/null +++ b/python/ql/test/library-tests/dataflow/tainttracking/defaultAdditionalTaintStep-py3/test_frozendict.py @@ -0,0 +1,14 @@ +# Add taintlib to PATH so it can be imported during runtime without any hassle +import sys; import os; sys.path.append(os.path.dirname(os.path.dirname((__file__)))) +from taintlib import TAINTED_DICT, TAINTED_STRING, ensure_tainted + + +def test_frozendict(): + ensure_tainted(frozendict(TAINTED_DICT)) # $ tainted + ensure_tainted(frozendict(TAINTED_DICT)["name"]) # $ tainted + ensure_tainted(frozendict(name=TAINTED_STRING)["name"]) # $ tainted + ensure_tainted(frozendict([("name", TAINTED_STRING)])["name"]) # $ tainted + + +if sys.version_info >= (3, 15): + test_frozendict() diff --git a/python/ql/test/library-tests/dataflow/threading-iterators/InlineTaintTest.expected b/python/ql/test/library-tests/dataflow/threading-iterators/InlineTaintTest.expected new file mode 100644 index 000000000000..020c338fd192 --- /dev/null +++ b/python/ql/test/library-tests/dataflow/threading-iterators/InlineTaintTest.expected @@ -0,0 +1,3 @@ +argumentToEnsureNotTaintedNotMarkedAsSpurious +untaintedArgumentToEnsureTaintedNotMarkedAsMissing +testFailures diff --git a/python/ql/test/library-tests/dataflow/threading-iterators/InlineTaintTest.ql b/python/ql/test/library-tests/dataflow/threading-iterators/InlineTaintTest.ql new file mode 100644 index 000000000000..8524da5fe7db --- /dev/null +++ b/python/ql/test/library-tests/dataflow/threading-iterators/InlineTaintTest.ql @@ -0,0 +1,2 @@ +import experimental.meta.InlineTaintTest +import MakeInlineTaintTest diff --git a/python/ql/test/library-tests/dataflow/threading-iterators/NormalDataflowTest.expected b/python/ql/test/library-tests/dataflow/threading-iterators/NormalDataflowTest.expected new file mode 100644 index 000000000000..2fad7bb9a843 --- /dev/null +++ b/python/ql/test/library-tests/dataflow/threading-iterators/NormalDataflowTest.expected @@ -0,0 +1,2 @@ +missingAnnotationOnSink +testFailures diff --git a/python/ql/test/library-tests/dataflow/threading-iterators/NormalDataflowTest.ql b/python/ql/test/library-tests/dataflow/threading-iterators/NormalDataflowTest.ql new file mode 100644 index 000000000000..1e0627bfcca1 --- /dev/null +++ b/python/ql/test/library-tests/dataflow/threading-iterators/NormalDataflowTest.ql @@ -0,0 +1,2 @@ +import python +import utils.test.dataflow.NormalDataflowTest diff --git a/python/ql/test/library-tests/dataflow/threading-iterators/options b/python/ql/test/library-tests/dataflow/threading-iterators/options new file mode 100644 index 000000000000..89369a90996b --- /dev/null +++ b/python/ql/test/library-tests/dataflow/threading-iterators/options @@ -0,0 +1 @@ +semmle-extractor-options: --lang=3 --max-import-depth=1 diff --git a/python/ql/test/library-tests/dataflow/threading-iterators/test.py b/python/ql/test/library-tests/dataflow/threading-iterators/test.py new file mode 100644 index 000000000000..ac6009052eff --- /dev/null +++ b/python/ql/test/library-tests/dataflow/threading-iterators/test.py @@ -0,0 +1,110 @@ +import threading +from threading import concurrent_tee, serialize_iterator + + +def serialized_list(): + iterator = threading.serialize_iterator([SOURCE]) + SINK(next(iterator)) # $ flow="SOURCE, l:-1 -> next(..)" + SINK_F(iterator) + + +def serialized_tuple(): + iterator = serialize_iterator(iterable=(SOURCE,)) + SINK(next(iterator)) # $ flow="SOURCE, l:-1 -> next(..)" + + +def serialized_set(): + wrap = serialize_iterator + iterator = wrap({SOURCE}) + SINK(next(iterator)) # $ flow="SOURCE, l:-1 -> next(..)" + + +def serialized_generator(): + iterator = serialize_iterator(value for value in [SOURCE]) + for value in iterator: + SINK(value) # $ flow="SOURCE, l:-2 -> value" + + +def serialized_contents(): + iterator = serialize_iterator([{"tainted": SOURCE, "clean": NONSOURCE}]) + value = next(iterator) + SINK(value["tainted"]) # $ flow="SOURCE, l:-2 -> value['tainted']" + SINK_F(value["clean"]) + + +def serialized_callback(): + iterator = next(map(serialize_iterator, [[SOURCE]])) + SINK(next(iterator)) # $ flow="SOURCE, l:-1 -> next(..)" + + +def tee_list(): + first, second = threading.concurrent_tee([SOURCE]) + SINK(next(first)) # $ flow="SOURCE, l:-1 -> next(..)" + SINK(next(second)) # $ flow="SOURCE, l:-2 -> next(..)" + SINK_F(first) + + +def tee_tuple(): + copies = concurrent_tee(iterable=(SOURCE,), n=3) + SINK(next(copies[0])) # $ flow="SOURCE, l:-1 -> next(..)" + SINK(next(copies[2])) # $ flow="SOURCE, l:-2 -> next(..)" + + +def tee_set(): + split = concurrent_tee + first, second = split({SOURCE}, 2) + SINK(next(first)) # $ flow="SOURCE, l:-1 -> next(..)" + SINK(next(second)) # $ flow="SOURCE, l:-2 -> next(..)" + + +def tee_many(): + copies = concurrent_tee([SOURCE], n=10) + SINK(next(copies[9])) # $ flow="SOURCE, l:-1 -> next(..)" + SINK(next(copies[-1])) # $ flow="SOURCE, l:-2 -> next(..)" + + +def tee_generator(): + copies = concurrent_tee(value for value in [SOURCE]) + for iterator in copies: + SINK(next(iterator)) # $ flow="SOURCE, l:-2 -> next(..)" + + +def tee_contents(): + first, second = concurrent_tee([{"tainted": SOURCE, "clean": NONSOURCE}]) + value = next(second) + SINK(value["tainted"]) # $ flow="SOURCE, l:-2 -> value['tainted']" + SINK_F(value["clean"]) + + +def tee_callback(): + copies = next(map(concurrent_tee, [[SOURCE]])) + SINK(next(copies[0])) # $ flow="SOURCE, l:-1 -> next(..)" + + +# The decorator form is already handled without a dedicated model. +@threading.synchronized_iterator +def decorated_generator(value): + yield {"tainted": value, "clean": NONSOURCE} + + +def synchronized_generator(): + value = next(decorated_generator(SOURCE)) + SINK(value["tainted"]) # $ flow="SOURCE, l:-1 -> value['tainted']" + SINK_F(value["clean"]) + + +def clean_inputs(): + SINK_F(next(serialize_iterator([NONSOURCE]))) + SINK_F(next(concurrent_tee([NONSOURCE])[0])) + SINK_F(next(concurrent_tee([NONSOURCE], n=SOURCE)[0])) + + +def shadowed_functions(): + def serialize_iterator(iterable): + return iter([NONSOURCE]) + + def concurrent_tee(iterable, n=2): + return iter([NONSOURCE]), iter([NONSOURCE]) + + SINK_F(next(serialize_iterator([SOURCE]))) + SINK_F(next(concurrent_tee([SOURCE])[0])) diff --git a/python/ql/test/library-tests/dataflow/threading-iterators/test_taint.py b/python/ql/test/library-tests/dataflow/threading-iterators/test_taint.py new file mode 100644 index 000000000000..dabb3294a54a --- /dev/null +++ b/python/ql/test/library-tests/dataflow/threading-iterators/test_taint.py @@ -0,0 +1,32 @@ +import threading + + +def serialized_taint(): + iterator = threading.serialize_iterator(TAINTED_LIST) + ensure_tainted(iterator) # $ tainted + ensure_tainted(next(iterator)) # $ tainted + + +def tee_taint(): + first, second = threading.concurrent_tee(TAINTED_LIST) + ensure_tainted(first) # $ tainted + ensure_tainted(second) # $ tainted + ensure_tainted(next(first)) # $ tainted + ensure_tainted(next(second)) # $ tainted + + +def nested_contents(): + iterator = threading.serialize_iterator([{"tainted": TAINTED_STRING, "clean": "safe"}]) + value = next(iterator) + ensure_tainted(value["tainted"]) # $ tainted + ensure_not_tainted(value["clean"]) + + first, second = threading.concurrent_tee([{"tainted": TAINTED_STRING, "clean": "safe"}]) + value = next(second) + ensure_tainted(value["tainted"]) # $ tainted + ensure_not_tainted(value["clean"]) + + +def count_is_not_data(): + copies = threading.concurrent_tee(["clean"], n=taint(2)) + ensure_not_tainted(next(copies[0])) diff --git a/python/ql/test/library-tests/dataflow/variable-capture/dataflow-capture-consistency.expected b/python/ql/test/library-tests/dataflow/variable-capture/dataflow-capture-consistency.expected index 35f4edcf1fb9..e331f0ddde45 100644 --- a/python/ql/test/library-tests/dataflow/variable-capture/dataflow-capture-consistency.expected +++ b/python/ql/test/library-tests/dataflow/variable-capture/dataflow-capture-consistency.expected @@ -15,3 +15,4 @@ closureAliasMustBeInSameScope variableAccessAstNesting uniqueCallableLocation consistencyOverview +ambiguousReadNode diff --git a/python/ql/test/library-tests/frameworks/stdlib/test_binascii.py b/python/ql/test/library-tests/frameworks/stdlib/test_binascii.py new file mode 100644 index 000000000000..d26f784691bd --- /dev/null +++ b/python/ql/test/library-tests/frameworks/stdlib/test_binascii.py @@ -0,0 +1,72 @@ +import binascii +from binascii import b2a_base32 as encode32, a2b_base85 as decode85 + +data = TAINTED_BYTES + +encoded32 = binascii.b2a_base32(data, padded=False) # $ encodeInput=data encodeOutput=binascii.b2a_base32(..) encodeFormat=Base32 +decoded32 = binascii.a2b_base32(encoded32, padded=False, canonical=True) # $ decodeInput=encoded32 decodeOutput=binascii.a2b_base32(..) decodeFormat=Base32 + +encoded85 = binascii.b2a_base85(data, pad=True) # $ encodeInput=data encodeOutput=binascii.b2a_base85(..) encodeFormat=Base85 +decoded85 = binascii.a2b_base85(encoded85, canonical=True) # $ decodeInput=encoded85 decodeOutput=binascii.a2b_base85(..) decodeFormat=Base85 + +encoded_ascii85 = binascii.b2a_ascii85(data, foldspaces=True, adobe=True) # $ encodeInput=data encodeOutput=binascii.b2a_ascii85(..) encodeFormat=Ascii85 +decoded_ascii85 = binascii.a2b_ascii85(encoded_ascii85, foldspaces=True, adobe=True) # $ decodeInput=encoded_ascii85 decodeOutput=binascii.a2b_ascii85(..) decodeFormat=Ascii85 + +ensure_tainted( + encoded32, # $ tainted + decoded32, # $ tainted + encoded85, # $ tainted + decoded85, # $ tainted + encoded_ascii85, # $ tainted + decoded_ascii85, # $ tainted +) + +aliased_encoded = encode32(data) # $ encodeInput=data encodeOutput=encode32(..) encodeFormat=Base32 +aliased_decoded = decode85(encoded85) # $ decodeInput=encoded85 decodeOutput=decode85(..) decodeFormat=Base85 +ensure_tainted( + aliased_encoded, # $ tainted + aliased_decoded, # $ tainted +) + + +def custom_alphabets(): + alphabet32 = binascii.BASE32HEX_ALPHABET + alphabet85 = binascii.Z85_ALPHABET + taint(alphabet32, alphabet85) + + clean = b"abcd" + clean32 = b"00000000" + clean85 = b"00000" + encoded32 = binascii.b2a_base32(clean, alphabet=alphabet32) # $ encodeInput=clean encodeInput=alphabet32 encodeOutput=binascii.b2a_base32(..) encodeFormat=Base32 + decoded32 = binascii.a2b_base32(clean32, alphabet=alphabet32) # $ decodeInput=clean32 decodeInput=alphabet32 decodeOutput=binascii.a2b_base32(..) decodeFormat=Base32 + encoded85 = binascii.b2a_base85(clean, alphabet=alphabet85) # $ encodeInput=clean encodeInput=alphabet85 encodeOutput=binascii.b2a_base85(..) encodeFormat=Base85 + decoded85 = binascii.a2b_base85(clean85, alphabet=alphabet85) # $ decodeInput=clean85 decodeInput=alphabet85 decodeOutput=binascii.a2b_base85(..) decodeFormat=Base85 + ensure_tainted( + encoded32, # $ tainted + decoded32, # $ tainted + encoded85, # $ tainted + decoded85, # $ tainted + ) + + +def clean_inputs(): + clean = b"abcd" + empty = b"" + wrapcol = 80 + ignorechars = b" \n" + taint(wrapcol, ignorechars) + + encoded32 = binascii.b2a_base32(clean, wrapcol=wrapcol) # $ encodeInput=clean encodeOutput=binascii.b2a_base32(..) encodeFormat=Base32 + encoded85 = binascii.b2a_base85(clean, wrapcol=wrapcol) # $ encodeInput=clean encodeOutput=binascii.b2a_base85(..) encodeFormat=Base85 + encoded_ascii85 = binascii.b2a_ascii85(clean, wrapcol=wrapcol) # $ encodeInput=clean encodeOutput=binascii.b2a_ascii85(..) encodeFormat=Ascii85 + decoded32 = binascii.a2b_base32(empty, ignorechars=ignorechars) # $ decodeInput=empty decodeOutput=binascii.a2b_base32(..) decodeFormat=Base32 + decoded85 = binascii.a2b_base85(empty, ignorechars=ignorechars) # $ decodeInput=empty decodeOutput=binascii.a2b_base85(..) decodeFormat=Base85 + decoded_ascii85 = binascii.a2b_ascii85(empty, ignorechars=ignorechars) # $ decodeInput=empty decodeOutput=binascii.a2b_ascii85(..) decodeFormat=Ascii85 + ensure_not_tainted( + encoded32, + encoded85, + encoded_ascii85, + decoded32, + decoded85, + decoded_ascii85, + ) diff --git a/python/ql/test/library-tests/frameworks/stdlib/test_extra_response_headers.py b/python/ql/test/library-tests/frameworks/stdlib/test_extra_response_headers.py new file mode 100644 index 000000000000..a83067470264 --- /dev/null +++ b/python/ql/test/library-tests/frameworks/stdlib/test_extra_response_headers.py @@ -0,0 +1,73 @@ +from http.server import BaseHTTPRequestHandler, SimpleHTTPRequestHandler +import http.server + + +def constructors(request, address, server, headers): + SimpleHTTPRequestHandler(request, address, server, extra_response_headers=headers) # $ headerWriteBulk=headers headerWriteBulkUnsanitized=name,value + http.server.SimpleHTTPRequestHandler(request, address, server, extra_response_headers=headers) # $ headerWriteBulk=headers headerWriteBulkUnsanitized=name,value + handler = SimpleHTTPRequestHandler + handler(request, address, server, extra_response_headers=headers) # $ headerWriteBulk=headers headerWriteBulkUnsanitized=name,value + + SimpleHTTPRequestHandler(request, address, server, extra_response_headers=[("X-Example", "value")]) # $ headerWriteBulk=List headerWriteBulkUnsanitized=name,value headerWriteNameUnsanitized="X-Example" headerWriteValueUnsanitized="value" + SimpleHTTPRequestHandler(request, address, server) + + +class CustomHandler(SimpleHTTPRequestHandler): + def change_headers(self, headers): + self.extra_response_headers = headers # $ headerWriteBulk=headers headerWriteBulkUnsanitized=name,value + alias = self + alias.extra_response_headers = [("X-Alias", "value")] # $ headerWriteBulk=List headerWriteBulkUnsanitized=name,value headerWriteNameUnsanitized="X-Alias" headerWriteValueUnsanitized="value" + ensure_tainted(alias.headers) # $ tainted + ensure_not_tainted(alias.extra_response_headers) + + def delegate(self, headers): + write_simple_headers(self, headers) + + +class DerivedHandler(CustomHandler): + def change_again(self, headers): + self.extra_response_headers = headers # $ headerWriteBulk=headers headerWriteBulkUnsanitized=name,value + + +def constructed_instance(request, address, server, headers): + handler = SimpleHTTPRequestHandler(request, address, server) + handler.extra_response_headers = headers # $ headerWriteBulk=headers headerWriteBulkUnsanitized=name,value + write_simple_headers(handler, headers) + + +def write_simple_headers(handler, headers): + alias = handler + alias.extra_response_headers = headers # $ headerWriteBulk=headers headerWriteBulkUnsanitized=name,value + + +def annotated_instance(handler: SimpleHTTPRequestHandler, headers): + handler.extra_response_headers = headers # $ headerWriteBulk=headers headerWriteBulkUnsanitized=name,value + + +class InheritedInitHandler(SimpleHTTPRequestHandler): + pass + + +def inherited_constructor(request, address, server, headers): + InheritedInitHandler(request, address, server, extra_response_headers=headers) # $ headerWriteBulk=headers headerWriteBulkUnsanitized=name,value + + +class BaseOnlyHandler(BaseHTTPRequestHandler): + def change_headers(self, headers): + # BaseHTTPRequestHandler does not consume this attribute. + self.extra_response_headers = headers + write_base_headers(self, headers) + + +def write_base_headers(handler, headers): + alias = handler + alias.extra_response_headers = headers + + +class Unrelated: + def __init__(self, *, extra_response_headers): + self.extra_response_headers = extra_response_headers + + +def unrelated(headers): + Unrelated(extra_response_headers=headers) diff --git a/python/ql/test/library-tests/frameworks/stdlib/test_re_prefixmatch.py b/python/ql/test/library-tests/frameworks/stdlib/test_re_prefixmatch.py new file mode 100644 index 000000000000..7a80fae545bf --- /dev/null +++ b/python/ql/test/library-tests/frameworks/stdlib/test_re_prefixmatch.py @@ -0,0 +1,46 @@ +import re +from re import prefixmatch as prefix_match + +ts = TAINTED_STRING +pat = r"(?P.*)" +compiled_pat = re.compile(pat) + +ensure_tainted( + re.prefixmatch(pat, ts), # $ tainted + re.prefixmatch(pattern=pat, string=ts), # $ tainted + prefix_match(pat, ts), # $ tainted + compiled_pat.prefixmatch(ts), # $ tainted + compiled_pat.prefixmatch(string=ts, pos=0, endpos=10), # $ tainted + + re.prefixmatch(pat, ts).string, # $ tainted + re.prefixmatch(ts, "safe").re.pattern, # $ tainted + compiled_pat.prefixmatch(ts).string, # $ tainted + re.compile(ts).prefixmatch("safe").re.pattern, # $ tainted +) + +direct_match = re.prefixmatch(pat, ts) +compiled_match = compiled_pat.prefixmatch(ts) +ensure_tainted( + direct_match.group(), # $ tainted + direct_match.groups()[0], # $ tainted + direct_match.groupdict()["key"], # $ tainted + direct_match[0], # $ tainted + direct_match["key"], # $ tainted + direct_match.expand(r"\1"), # $ tainted + + compiled_match.group(), # $ tainted + compiled_match.groups()[0], # $ tainted + compiled_match.groupdict()["key"], # $ tainted + compiled_match[0], # $ tainted + compiled_match["key"], # $ tainted + compiled_match.expand(r"\1"), # $ tainted +) + +ensure_not_tainted( + re.prefixmatch(pat, "safe").string, + re.prefixmatch(pat, ts).re.pattern, + re.prefixmatch(ts, "safe").group(), + compiled_pat.prefixmatch("safe").string, + compiled_pat.prefixmatch(ts).re.pattern, + re.compile(ts).prefixmatch("safe").group(), +) diff --git a/python/ql/test/library-tests/frameworks/stdlib/test_unicodedata.py b/python/ql/test/library-tests/frameworks/stdlib/test_unicodedata.py new file mode 100644 index 000000000000..73f91d214f9c --- /dev/null +++ b/python/ql/test/library-tests/frameworks/stdlib/test_unicodedata.py @@ -0,0 +1,54 @@ +import unicodedata +from unicodedata import iter_graphemes as graphemes + + +def string_iteration(): + for character in TAINTED_STRING: + ensure_tainted(character) # $ tainted + + +def grapheme_iteration(): + iterator = unicodedata.iter_graphemes(TAINTED_STRING) + ensure_tainted(iterator) # $ tainted + for grapheme in iterator: + ensure_tainted(grapheme) # $ tainted + ensure_tainted(str(grapheme)) # $ tainted + ensure_not_tainted(grapheme.start, grapheme.end) + + +def next_grapheme(): + grapheme = next(unicodedata.iter_graphemes(TAINTED_STRING)) + ensure_tainted(str(grapheme)) # $ tainted + + +def bounded_iteration(): + for grapheme in unicodedata.iter_graphemes(TAINTED_STRING, 1, 10): + ensure_tainted(str(grapheme)) # $ tainted + + +def aliases(): + ensure_tainted(str(next(graphemes(TAINTED_STRING)))) # $ tainted + split = unicodedata.iter_graphemes + ensure_tainted(str(next(split(TAINTED_STRING)))) # $ tainted + + +def callback(): + iterator = next(map(unicodedata.iter_graphemes, [TAINTED_STRING])) + ensure_tainted(str(next(iterator))) # $ tainted + + +def clean_inputs(): + start, end = 0, 10 + taint(start, end) + iterator = unicodedata.iter_graphemes("a\u0301bc", start, end) + ensure_not_tainted(iterator) + for grapheme in iterator: + ensure_not_tainted(str(grapheme)) + ensure_not_tainted(str(next(graphemes("clean")))) + + +def shadowed_function(): + def iter_graphemes(unistr): + return iter(["clean"]) + + ensure_not_tainted(str(next(iter_graphemes(TAINTED_STRING)))) diff --git a/python/ql/test/library-tests/regex/Mode.expected b/python/ql/test/library-tests/regex/Mode.expected index 5640d028757c..406f41547d5c 100644 --- a/python/ql/test/library-tests/regex/Mode.expected +++ b/python/ql/test/library-tests/regex/Mode.expected @@ -26,3 +26,8 @@ | 63 | VERBOSE | | 65 | ASCII | | 77 | MULTILINE | +| 91 | IGNORECASE | +| 92 | DOTALL | +| 92 | MULTILINE | +| 93 | VERBOSE | +| 94 | IGNORECASE | diff --git a/python/ql/test/library-tests/regex/Regex.expected b/python/ql/test/library-tests/regex/Regex.expected index 00c80d5cc1cb..7e14ee12ead0 100644 --- a/python/ql/test/library-tests/regex/Regex.expected +++ b/python/ql/test/library-tests/regex/Regex.expected @@ -108,6 +108,8 @@ | (?aimsx:a+) | qualified | 8 | 10 | | (?aimsx:a+) | sequence | 0 | 11 | | (?aimsx:a+) | sequence | 7 | 10 | +| (?i) | empty group | 0 | 4 | +| (?i) | sequence | 0 | 4 | | (?m)^(?!$) | $ | 8 | 9 | | (?m)^(?!$) | ^ | 4 | 5 | | (?m)^(?!$) | empty group | 0 | 4 | diff --git a/python/ql/test/library-tests/regex/test.py b/python/ql/test/library-tests/regex/test.py index 8565e347781d..afb68aa2078a 100644 --- a/python/ql/test/library-tests/regex/test.py +++ b/python/ql/test/library-tests/regex/test.py @@ -85,4 +85,10 @@ # Anchors re.compile(r'\Afoo\Z') -re.compile(r'\bfoo\B') \ No newline at end of file +re.compile(r'\bfoo\B') + +# Python 3.15 prefixmatch flags +re.prefixmatch("", "", re.IGNORECASE) +re.prefixmatch("", "", flags=re.DOTALL | re.MULTILINE) +re.prefixmatch(pattern="", string="", flags=re.VERBOSE) +re.prefixmatch("(?i)", "") \ No newline at end of file diff --git a/python/ql/test/query-tests/Security/CWE-113-HeaderInjection/Tests1/HeaderInjection.expected b/python/ql/test/query-tests/Security/CWE-113-HeaderInjection/Tests1/HeaderInjection.expected index 4043b9332435..621921af3f7c 100644 --- a/python/ql/test/query-tests/Security/CWE-113-HeaderInjection/Tests1/HeaderInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-113-HeaderInjection/Tests1/HeaderInjection.expected @@ -1,4 +1,7 @@ #select +| extra_response_headers.py:9:52:9:56 | ControlFlowNode for value | extra_response_headers.py:5:16:5:19 | ControlFlowNode for self | extra_response_headers.py:9:52:9:56 | ControlFlowNode for value | This HTTP header is constructed from a $@. | extra_response_headers.py:5:16:5:19 | ControlFlowNode for self | user-provided value | +| extra_response_headers.py:11:42:11:45 | ControlFlowNode for name | extra_response_headers.py:5:16:5:19 | ControlFlowNode for self | extra_response_headers.py:11:42:11:45 | ControlFlowNode for name | This HTTP header is constructed from a $@. | extra_response_headers.py:5:16:5:19 | ControlFlowNode for self | user-provided value | +| extra_response_headers.py:27:49:27:53 | ControlFlowNode for value | extra_response_headers.py:21:16:21:19 | ControlFlowNode for self | extra_response_headers.py:27:49:27:53 | ControlFlowNode for value | This HTTP header is constructed from a $@. | extra_response_headers.py:21:16:21:19 | ControlFlowNode for self | user-provided value | | flask_tests.py:13:17:13:26 | ControlFlowNode for rfs_header | flask_tests.py:1:29:1:35 | ControlFlowNode for ImportMember | flask_tests.py:13:17:13:26 | ControlFlowNode for rfs_header | This HTTP header is constructed from a $@. | flask_tests.py:1:29:1:35 | ControlFlowNode for ImportMember | user-provided value | | flask_tests.py:20:36:20:61 | ControlFlowNode for Subscript | flask_tests.py:1:29:1:35 | ControlFlowNode for ImportMember | flask_tests.py:20:36:20:61 | ControlFlowNode for Subscript | This HTTP header is constructed from a $@. | flask_tests.py:1:29:1:35 | ControlFlowNode for ImportMember | user-provided value | | flask_tests.py:33:11:33:20 | ControlFlowNode for rfs_header | flask_tests.py:1:29:1:35 | ControlFlowNode for ImportMember | flask_tests.py:33:11:33:20 | ControlFlowNode for rfs_header | This HTTP header is constructed from a $@. | flask_tests.py:1:29:1:35 | ControlFlowNode for ImportMember | user-provided value | @@ -7,6 +10,12 @@ | wsgiref_tests.py:8:17:8:22 | ControlFlowNode for h_name | wsgiref_tests.py:4:14:4:20 | ControlFlowNode for environ | wsgiref_tests.py:8:17:8:22 | ControlFlowNode for h_name | This HTTP header is constructed from a $@. | wsgiref_tests.py:4:14:4:20 | ControlFlowNode for environ | user-provided value | | wsgiref_tests.py:8:42:8:46 | ControlFlowNode for h_val | wsgiref_tests.py:4:14:4:20 | ControlFlowNode for environ | wsgiref_tests.py:8:42:8:46 | ControlFlowNode for h_val | This HTTP header is constructed from a $@. | wsgiref_tests.py:4:14:4:20 | ControlFlowNode for environ | user-provided value | edges +| extra_response_headers.py:5:16:5:19 | ControlFlowNode for self | extra_response_headers.py:6:9:6:12 | ControlFlowNode for name | provenance | AdditionalTaintStep | +| extra_response_headers.py:5:16:5:19 | ControlFlowNode for self | extra_response_headers.py:7:9:7:13 | ControlFlowNode for value | provenance | AdditionalTaintStep | +| extra_response_headers.py:6:9:6:12 | ControlFlowNode for name | extra_response_headers.py:11:42:11:45 | ControlFlowNode for name | provenance | | +| extra_response_headers.py:7:9:7:13 | ControlFlowNode for value | extra_response_headers.py:9:52:9:56 | ControlFlowNode for value | provenance | | +| extra_response_headers.py:21:16:21:19 | ControlFlowNode for self | extra_response_headers.py:23:9:23:13 | ControlFlowNode for value | provenance | AdditionalTaintStep | +| extra_response_headers.py:23:9:23:13 | ControlFlowNode for value | extra_response_headers.py:27:49:27:53 | ControlFlowNode for value | provenance | | | flask_tests.py:1:29:1:35 | ControlFlowNode for ImportMember | flask_tests.py:1:29:1:35 | ControlFlowNode for request | provenance | | | flask_tests.py:1:29:1:35 | ControlFlowNode for request | flask_tests.py:9:18:9:24 | ControlFlowNode for request | provenance | | | flask_tests.py:1:29:1:35 | ControlFlowNode for request | flask_tests.py:19:18:19:24 | ControlFlowNode for request | provenance | | @@ -37,6 +46,14 @@ models | 1 | Summary: urllib; Member[parse].Member[parse_qs]; Argument[0,qs:]; ReturnValue; taint | | 2 | Summary: urllib; Member[parse].Member[urlparse]; Argument[0,urlstring:]; ReturnValue; taint | nodes +| extra_response_headers.py:5:16:5:19 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | +| extra_response_headers.py:6:9:6:12 | ControlFlowNode for name | semmle.label | ControlFlowNode for name | +| extra_response_headers.py:7:9:7:13 | ControlFlowNode for value | semmle.label | ControlFlowNode for value | +| extra_response_headers.py:9:52:9:56 | ControlFlowNode for value | semmle.label | ControlFlowNode for value | +| extra_response_headers.py:11:42:11:45 | ControlFlowNode for name | semmle.label | ControlFlowNode for name | +| extra_response_headers.py:21:16:21:19 | ControlFlowNode for self | semmle.label | ControlFlowNode for self | +| extra_response_headers.py:23:9:23:13 | ControlFlowNode for value | semmle.label | ControlFlowNode for value | +| extra_response_headers.py:27:49:27:53 | ControlFlowNode for value | semmle.label | ControlFlowNode for value | | flask_tests.py:1:29:1:35 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | flask_tests.py:1:29:1:35 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | | flask_tests.py:9:5:9:14 | ControlFlowNode for rfs_header | semmle.label | ControlFlowNode for rfs_header | diff --git a/python/ql/test/query-tests/Security/CWE-113-HeaderInjection/Tests1/extra_response_headers.py b/python/ql/test/query-tests/Security/CWE-113-HeaderInjection/Tests1/extra_response_headers.py new file mode 100644 index 000000000000..da2c651b6e81 --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-113-HeaderInjection/Tests1/extra_response_headers.py @@ -0,0 +1,30 @@ +from http.server import BaseHTTPRequestHandler, SimpleHTTPRequestHandler + + +class ExtraHeadersHandler(SimpleHTTPRequestHandler): + def do_GET(self): + name = self.headers["X-Header-Name"] + value = self.headers["X-Header-Value"] + + self.extra_response_headers = [("X-Value", value)] # BAD + alias = self + alias.extra_response_headers = [(name, "value")] # BAD + + clean_name = name.replace("\r", "").replace("\n", "") + clean_value = value.replace("\r", "").replace("\n", "") + self.extra_response_headers = [(clean_name, clean_value)] # GOOD + self.extra_response_headers = [("X-Static", "value")] # GOOD + super().do_GET() + + +class DispatchHandler(BaseHTTPRequestHandler): + def do_GET(self): + name = self.headers["X-Header-Name"] + value = self.headers["X-Header-Value"] + + SimpleHTTPRequestHandler( + self.request, self.client_address, self.server, + extra_response_headers=[("X-Value", value)], # BAD + ) + # BaseHTTPRequestHandler does not consume this attribute. + self.extra_response_headers = [(name, value)] # GOOD diff --git a/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialBackTracking.expected b/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialBackTracking.expected index ba97e881e467..9798fb27eb22 100644 --- a/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialBackTracking.expected +++ b/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialBackTracking.expected @@ -3,3 +3,6 @@ | test.py:11:22:11:33 | StringLiteral | test.py:11:29:11:31 | \\s+ | Strings with many repetitions of ' ' can start matching anywhere after the start of the preceeding \\s+$ | | test.py:18:14:18:25 | StringLiteral | test.py:18:21:18:23 | \\s+ | Strings with many repetitions of ' ' can start matching anywhere after the start of the preceeding \\s+$ | | test.py:20:23:20:274 | StringLiteral | test.py:20:271:20:272 | .* | Strings starting with 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC' and with many repetitions of 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC' can start matching anywhere after the start of the preceeding (AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)(AA\|BB)C.*Y | +| test.py:27:20:27:35 | StringLiteral | test.py:27:31:27:33 | \\d+ | Strings starting with '0.9' and with many repetitions of '99' can start matching anywhere after the start of the preceeding \\d+ | +| test.py:28:28:28:43 | StringLiteral | test.py:28:39:28:41 | \\d+ | Strings starting with '0.9' and with many repetitions of '99' can start matching anywhere after the start of the preceeding \\d+ | +| test.py:30:26:30:41 | StringLiteral | test.py:30:37:30:39 | \\d+ | Strings starting with '0.9' and with many repetitions of '99' can start matching anywhere after the start of the preceeding \\d+ | diff --git a/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialReDoS.expected b/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialReDoS.expected index 22fcfd05fa19..4f9ed6be52b1 100644 --- a/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialReDoS.expected +++ b/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialReDoS.expected @@ -4,9 +4,14 @@ | test.py:12:17:12:20 | ControlFlowNode for text | test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:12:17:12:20 | ControlFlowNode for text | This $@ that depends on a $@ may run slow on strings with many repetitions of ' '. | test.py:11:29:11:31 | \\s+ | regular expression | test.py:2:26:2:32 | ControlFlowNode for ImportMember | user-provided value | | test.py:16:24:16:30 | ControlFlowNode for my_text | test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:16:24:16:30 | ControlFlowNode for my_text | This $@ that depends on a $@ may run slow on strings with many repetitions of ' '. | test.py:18:21:18:23 | \\s+ | regular expression | test.py:2:26:2:32 | ControlFlowNode for ImportMember | user-provided value | | test.py:21:18:21:21 | ControlFlowNode for text | test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:21:18:21:21 | ControlFlowNode for text | This $@ that depends on a $@ may run slow on strings starting with 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC' and with many repetitions of 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC'. | test.py:20:271:20:272 | .* | regular expression | test.py:2:26:2:32 | ControlFlowNode for ImportMember | user-provided value | +| test.py:27:38:27:41 | ControlFlowNode for text | test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:27:38:27:41 | ControlFlowNode for text | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | test.py:27:31:27:33 | \\d+ | regular expression | test.py:2:26:2:32 | ControlFlowNode for ImportMember | user-provided value | +| test.py:28:53:28:56 | ControlFlowNode for text | test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:28:53:28:56 | ControlFlowNode for text | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | test.py:28:39:28:41 | \\d+ | regular expression | test.py:2:26:2:32 | ControlFlowNode for ImportMember | user-provided value | +| test.py:31:25:31:28 | ControlFlowNode for text | test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:31:25:31:28 | ControlFlowNode for text | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | test.py:30:37:30:39 | \\d+ | regular expression | test.py:2:26:2:32 | ControlFlowNode for ImportMember | user-provided value | +| test.py:32:32:32:35 | ControlFlowNode for text | test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:32:32:32:35 | ControlFlowNode for text | This $@ that depends on a $@ may run slow on strings starting with '0.9' and with many repetitions of '99'. | test.py:30:37:30:39 | \\d+ | regular expression | test.py:2:26:2:32 | ControlFlowNode for ImportMember | user-provided value | edges | test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:2:26:2:32 | ControlFlowNode for request | provenance | | | test.py:2:26:2:32 | ControlFlowNode for request | test.py:7:12:7:18 | ControlFlowNode for request | provenance | | +| test.py:2:26:2:32 | ControlFlowNode for request | test.py:26:12:26:18 | ControlFlowNode for request | provenance | | | test.py:7:5:7:8 | ControlFlowNode for text | test.py:8:30:8:33 | ControlFlowNode for text | provenance | | | test.py:7:5:7:8 | ControlFlowNode for text | test.py:9:32:9:35 | ControlFlowNode for text | provenance | | | test.py:7:5:7:8 | ControlFlowNode for text | test.py:12:17:12:20 | ControlFlowNode for text | provenance | | @@ -17,6 +22,13 @@ edges | test.py:7:12:7:35 | ControlFlowNode for Attribute() | test.py:7:5:7:8 | ControlFlowNode for text | provenance | | | test.py:14:33:14:39 | ControlFlowNode for my_text | test.py:16:24:16:30 | ControlFlowNode for my_text | provenance | | | test.py:18:28:18:31 | ControlFlowNode for text | test.py:14:33:14:39 | ControlFlowNode for my_text | provenance | | +| test.py:26:5:26:8 | ControlFlowNode for text | test.py:27:38:27:41 | ControlFlowNode for text | provenance | | +| test.py:26:5:26:8 | ControlFlowNode for text | test.py:28:53:28:56 | ControlFlowNode for text | provenance | | +| test.py:26:5:26:8 | ControlFlowNode for text | test.py:31:25:31:28 | ControlFlowNode for text | provenance | | +| test.py:26:5:26:8 | ControlFlowNode for text | test.py:32:32:32:35 | ControlFlowNode for text | provenance | | +| test.py:26:12:26:18 | ControlFlowNode for request | test.py:26:12:26:23 | ControlFlowNode for Attribute | provenance | AdditionalTaintStep | +| test.py:26:12:26:23 | ControlFlowNode for Attribute | test.py:26:12:26:35 | ControlFlowNode for Attribute() | provenance | dict.get | +| test.py:26:12:26:35 | ControlFlowNode for Attribute() | test.py:26:5:26:8 | ControlFlowNode for text | provenance | | nodes | test.py:2:26:2:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | test.py:2:26:2:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | @@ -31,4 +43,12 @@ nodes | test.py:16:24:16:30 | ControlFlowNode for my_text | semmle.label | ControlFlowNode for my_text | | test.py:18:28:18:31 | ControlFlowNode for text | semmle.label | ControlFlowNode for text | | test.py:21:18:21:21 | ControlFlowNode for text | semmle.label | ControlFlowNode for text | +| test.py:26:5:26:8 | ControlFlowNode for text | semmle.label | ControlFlowNode for text | +| test.py:26:12:26:18 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| test.py:26:12:26:23 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | +| test.py:26:12:26:35 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| test.py:27:38:27:41 | ControlFlowNode for text | semmle.label | ControlFlowNode for text | +| test.py:28:53:28:56 | ControlFlowNode for text | semmle.label | ControlFlowNode for text | +| test.py:31:25:31:28 | ControlFlowNode for text | semmle.label | ControlFlowNode for text | +| test.py:32:32:32:35 | ControlFlowNode for text | semmle.label | ControlFlowNode for text | subpaths diff --git a/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/test.py b/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/test.py index 60584229b917..5ed2f22c3657 100644 --- a/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/test.py +++ b/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/test.py @@ -20,3 +20,13 @@ def indirect(input_reg_str, my_text): reg2 = re.compile(r"(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)(AA|BB)C.*Y") reg2.sub("", text) # $ Alert # NOT OK + +@app.route("/prefixmatch-poly-redos") +def prefixmatch(): + text = request.args.get("text") + re.prefixmatch(r"^0\.\d+E?\d+$", text) # $ Alert + re.prefixmatch(pattern=r"^0\.\d+E?\d+$", string=text) # $ Alert + + pattern = re.compile(r"^0\.\d+E?\d+$") + pattern.prefixmatch(text) # $ Alert + pattern.prefixmatch(string=text) # $ Alert diff --git a/python/ql/test/query-tests/Security/CWE-730-RegexInjection/RegexInjection.expected b/python/ql/test/query-tests/Security/CWE-730-RegexInjection/RegexInjection.expected index 16d29401f785..c825e2ec9deb 100644 --- a/python/ql/test/query-tests/Security/CWE-730-RegexInjection/RegexInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-730-RegexInjection/RegexInjection.expected @@ -1,3 +1,12 @@ +#select +| re_bad.py:14:15:14:28 | ControlFlowNode for unsafe_pattern | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | re_bad.py:14:15:14:28 | ControlFlowNode for unsafe_pattern | This regular expression depends on a $@ and is executed by $@. | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_bad.py:14:5:14:33 | ControlFlowNode for Attribute() | re.search | +| re_bad.py:25:35:25:48 | ControlFlowNode for unsafe_pattern | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | re_bad.py:25:35:25:48 | ControlFlowNode for unsafe_pattern | This regular expression depends on a $@ and is executed by $@. | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_bad.py:26:5:26:31 | ControlFlowNode for Attribute() | re.search | +| re_bad.py:37:16:37:29 | ControlFlowNode for unsafe_pattern | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | re_bad.py:37:16:37:29 | ControlFlowNode for unsafe_pattern | This regular expression depends on a $@ and is executed by $@. | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_bad.py:37:5:37:41 | ControlFlowNode for Attribute() | re.search | +| re_prefixmatch.py:8:20:8:26 | ControlFlowNode for pattern | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | re_prefixmatch.py:8:20:8:26 | ControlFlowNode for pattern | This regular expression depends on a $@ and is executed by $@. | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_prefixmatch.py:8:5:8:35 | ControlFlowNode for Attribute() | re.prefixmatch | +| re_prefixmatch.py:13:28:13:34 | ControlFlowNode for pattern | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | re_prefixmatch.py:13:28:13:34 | ControlFlowNode for pattern | This regular expression depends on a $@ and is executed by $@. | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_prefixmatch.py:13:5:13:50 | ControlFlowNode for Attribute() | re.prefixmatch | +| re_prefixmatch.py:18:18:18:24 | ControlFlowNode for pattern | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | re_prefixmatch.py:18:18:18:24 | ControlFlowNode for pattern | This regular expression depends on a $@ and is executed by $@. | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_prefixmatch.py:18:5:18:33 | ControlFlowNode for prefix_match() | re.prefixmatch | +| re_prefixmatch.py:23:35:23:41 | ControlFlowNode for pattern | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | re_prefixmatch.py:23:35:23:41 | ControlFlowNode for pattern | This regular expression depends on a $@ and is executed by $@. | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_prefixmatch.py:24:5:24:40 | ControlFlowNode for Attribute() | re.prefixmatch | +| re_prefixmatch.py:29:43:29:49 | ControlFlowNode for pattern | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | re_prefixmatch.py:29:43:29:49 | ControlFlowNode for pattern | This regular expression depends on a $@ and is executed by $@. | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_prefixmatch.py:30:5:30:64 | ControlFlowNode for Attribute() | re.prefixmatch | edges | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | re_bad.py:1:19:1:25 | ControlFlowNode for request | provenance | | | re_bad.py:1:19:1:25 | ControlFlowNode for request | re_bad.py:13:22:13:28 | ControlFlowNode for request | provenance | | @@ -9,6 +18,22 @@ edges | re_bad.py:24:22:24:28 | ControlFlowNode for request | re_bad.py:24:5:24:18 | ControlFlowNode for unsafe_pattern | provenance | AdditionalTaintStep | | re_bad.py:36:5:36:18 | ControlFlowNode for unsafe_pattern | re_bad.py:37:16:37:29 | ControlFlowNode for unsafe_pattern | provenance | | | re_bad.py:36:22:36:28 | ControlFlowNode for request | re_bad.py:36:5:36:18 | ControlFlowNode for unsafe_pattern | provenance | AdditionalTaintStep | +| re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | re_prefixmatch.py:7:15:7:21 | ControlFlowNode for request | provenance | | +| re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | re_prefixmatch.py:12:15:12:21 | ControlFlowNode for request | provenance | | +| re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | re_prefixmatch.py:17:15:17:21 | ControlFlowNode for request | provenance | | +| re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | re_prefixmatch.py:22:15:22:21 | ControlFlowNode for request | provenance | | +| re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | re_prefixmatch.py:28:15:28:21 | ControlFlowNode for request | provenance | | +| re_prefixmatch.py:7:5:7:11 | ControlFlowNode for pattern | re_prefixmatch.py:8:20:8:26 | ControlFlowNode for pattern | provenance | | +| re_prefixmatch.py:7:15:7:21 | ControlFlowNode for request | re_prefixmatch.py:7:5:7:11 | ControlFlowNode for pattern | provenance | AdditionalTaintStep | +| re_prefixmatch.py:12:5:12:11 | ControlFlowNode for pattern | re_prefixmatch.py:13:28:13:34 | ControlFlowNode for pattern | provenance | | +| re_prefixmatch.py:12:15:12:21 | ControlFlowNode for request | re_prefixmatch.py:12:5:12:11 | ControlFlowNode for pattern | provenance | AdditionalTaintStep | +| re_prefixmatch.py:17:5:17:11 | ControlFlowNode for pattern | re_prefixmatch.py:18:18:18:24 | ControlFlowNode for pattern | provenance | | +| re_prefixmatch.py:17:15:17:21 | ControlFlowNode for request | re_prefixmatch.py:17:5:17:11 | ControlFlowNode for pattern | provenance | AdditionalTaintStep | +| re_prefixmatch.py:22:5:22:11 | ControlFlowNode for pattern | re_prefixmatch.py:23:35:23:41 | ControlFlowNode for pattern | provenance | | +| re_prefixmatch.py:22:15:22:21 | ControlFlowNode for request | re_prefixmatch.py:22:5:22:11 | ControlFlowNode for pattern | provenance | AdditionalTaintStep | +| re_prefixmatch.py:28:5:28:11 | ControlFlowNode for pattern | re_prefixmatch.py:29:43:29:49 | ControlFlowNode for pattern | provenance | | +| re_prefixmatch.py:28:15:28:21 | ControlFlowNode for request | re_prefixmatch.py:28:5:28:11 | ControlFlowNode for pattern | provenance | AdditionalTaintStep | nodes | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | re_bad.py:1:19:1:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | @@ -21,8 +46,21 @@ nodes | re_bad.py:36:5:36:18 | ControlFlowNode for unsafe_pattern | semmle.label | ControlFlowNode for unsafe_pattern | | re_bad.py:36:22:36:28 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | | re_bad.py:37:16:37:29 | ControlFlowNode for unsafe_pattern | semmle.label | ControlFlowNode for unsafe_pattern | +| re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | +| re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| re_prefixmatch.py:7:5:7:11 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | +| re_prefixmatch.py:7:15:7:21 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| re_prefixmatch.py:8:20:8:26 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | +| re_prefixmatch.py:12:5:12:11 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | +| re_prefixmatch.py:12:15:12:21 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| re_prefixmatch.py:13:28:13:34 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | +| re_prefixmatch.py:17:5:17:11 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | +| re_prefixmatch.py:17:15:17:21 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| re_prefixmatch.py:18:18:18:24 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | +| re_prefixmatch.py:22:5:22:11 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | +| re_prefixmatch.py:22:15:22:21 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| re_prefixmatch.py:23:35:23:41 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | +| re_prefixmatch.py:28:5:28:11 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | +| re_prefixmatch.py:28:15:28:21 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| re_prefixmatch.py:29:43:29:49 | ControlFlowNode for pattern | semmle.label | ControlFlowNode for pattern | subpaths -#select -| re_bad.py:14:15:14:28 | ControlFlowNode for unsafe_pattern | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | re_bad.py:14:15:14:28 | ControlFlowNode for unsafe_pattern | This regular expression depends on a $@ and is executed by $@. | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_bad.py:14:5:14:33 | ControlFlowNode for Attribute() | re.search | -| re_bad.py:25:35:25:48 | ControlFlowNode for unsafe_pattern | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | re_bad.py:25:35:25:48 | ControlFlowNode for unsafe_pattern | This regular expression depends on a $@ and is executed by $@. | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_bad.py:26:5:26:31 | ControlFlowNode for Attribute() | re.search | -| re_bad.py:37:16:37:29 | ControlFlowNode for unsafe_pattern | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | re_bad.py:37:16:37:29 | ControlFlowNode for unsafe_pattern | This regular expression depends on a $@ and is executed by $@. | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | re_bad.py:37:5:37:41 | ControlFlowNode for Attribute() | re.search | diff --git a/python/ql/test/query-tests/Security/CWE-730-RegexInjection/re_prefixmatch.py b/python/ql/test/query-tests/Security/CWE-730-RegexInjection/re_prefixmatch.py new file mode 100644 index 000000000000..0badba8b1675 --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-730-RegexInjection/re_prefixmatch.py @@ -0,0 +1,30 @@ +from flask import request # $ Source +import re +from re import prefixmatch as prefix_match + + +def direct(): + pattern = request.args["pattern"] + re.prefixmatch(pattern, "safe") # $ Alert + + +def direct_keywords(): + pattern = request.args["pattern"] + re.prefixmatch(pattern=pattern, string="safe") # $ Alert + + +def imported_alias(): + pattern = request.args["pattern"] + prefix_match(pattern, "safe") # $ Alert + + +def compiled(): + pattern = request.args["pattern"] + compiled_pattern = re.compile(pattern) # $ Alert + compiled_pattern.prefixmatch("safe") + + +def compiled_keywords(): + pattern = request.args["pattern"] + compiled_pattern = re.compile(pattern=pattern) # $ Alert + compiled_pattern.prefixmatch(string="safe", pos=0, endpos=4) diff --git a/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/FullServerSideRequestForgery.expected b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/FullServerSideRequestForgery.expected index 7434eca6978b..1fc30af2a40e 100644 --- a/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/FullServerSideRequestForgery.expected +++ b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/FullServerSideRequestForgery.expected @@ -39,6 +39,8 @@ | test_path_validation.py:122:9:122:58 | ControlFlowNode for SecretClient() | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | test_path_validation.py:122:32:122:34 | ControlFlowNode for url | The full URL of this request depends on a $@. | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | user-provided value | | test_path_validation.py:125:9:125:58 | ControlFlowNode for SecretClient() | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | test_path_validation.py:125:32:125:34 | ControlFlowNode for url | The full URL of this request depends on a $@. | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | user-provided value | | test_path_validation.py:132:9:132:58 | ControlFlowNode for SecretClient() | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | test_path_validation.py:132:32:132:34 | ControlFlowNode for url | The full URL of this request depends on a $@. | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | user-provided value | +| test_re_prefixmatch.py:19:9:19:25 | ControlFlowNode for Attribute() | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | test_re_prefixmatch.py:19:22:19:24 | ControlFlowNode for url | The full URL of this request depends on a $@. | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | +| test_re_prefixmatch.py:28:9:28:25 | ControlFlowNode for Attribute() | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | test_re_prefixmatch.py:28:22:28:24 | ControlFlowNode for url | The full URL of this request depends on a $@. | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | | test_requests.py:9:5:9:28 | ControlFlowNode for Attribute() | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | test_requests.py:9:18:9:27 | ControlFlowNode for user_input | The full URL of this request depends on a $@. | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | | test_requests.py:17:5:17:27 | ControlFlowNode for Attribute() | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | test_requests.py:17:17:17:26 | ControlFlowNode for user_input | The full URL of this request depends on a $@. | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | | test_requests.py:22:5:22:44 | ControlFlowNode for Attribute() | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | test_requests.py:22:34:22:43 | ControlFlowNode for user_input | The full URL of this request depends on a $@. | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | @@ -138,6 +140,13 @@ edges | test_path_validation.py:61:5:61:7 | ControlFlowNode for url | test_path_validation.py:122:32:122:34 | ControlFlowNode for url | provenance | Sink:MaD:2 | | test_path_validation.py:61:5:61:7 | ControlFlowNode for url | test_path_validation.py:125:32:125:34 | ControlFlowNode for url | provenance | Sink:MaD:2 | | test_path_validation.py:61:5:61:7 | ControlFlowNode for url | test_path_validation.py:132:32:132:34 | ControlFlowNode for url | provenance | Sink:MaD:2 | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | test_re_prefixmatch.py:15:11:15:17 | ControlFlowNode for request | provenance | | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | test_re_prefixmatch.py:23:11:23:17 | ControlFlowNode for request | provenance | | +| test_re_prefixmatch.py:15:5:15:7 | ControlFlowNode for url | test_re_prefixmatch.py:19:22:19:24 | ControlFlowNode for url | provenance | | +| test_re_prefixmatch.py:15:11:15:17 | ControlFlowNode for request | test_re_prefixmatch.py:15:5:15:7 | ControlFlowNode for url | provenance | AdditionalTaintStep | +| test_re_prefixmatch.py:23:5:23:7 | ControlFlowNode for url | test_re_prefixmatch.py:28:22:28:24 | ControlFlowNode for url | provenance | | +| test_re_prefixmatch.py:23:11:23:17 | ControlFlowNode for request | test_re_prefixmatch.py:23:5:23:7 | ControlFlowNode for url | provenance | AdditionalTaintStep | | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | test_requests.py:1:19:1:25 | ControlFlowNode for request | provenance | | | test_requests.py:1:19:1:25 | ControlFlowNode for request | test_requests.py:7:18:7:24 | ControlFlowNode for request | provenance | | | test_requests.py:1:19:1:25 | ControlFlowNode for request | test_requests.py:14:18:14:24 | ControlFlowNode for request | provenance | | @@ -249,6 +258,14 @@ nodes | test_path_validation.py:122:32:122:34 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | | test_path_validation.py:125:32:125:34 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | | test_path_validation.py:132:32:132:34 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| test_re_prefixmatch.py:15:5:15:7 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | +| test_re_prefixmatch.py:15:11:15:17 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| test_re_prefixmatch.py:19:22:19:24 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | +| test_re_prefixmatch.py:23:5:23:7 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | +| test_re_prefixmatch.py:23:11:23:17 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| test_re_prefixmatch.py:28:22:28:24 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | test_requests.py:1:19:1:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | | test_requests.py:7:5:7:14 | ControlFlowNode for user_input | semmle.label | ControlFlowNode for user_input | diff --git a/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/PartialServerSideRequestForgery.expected b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/PartialServerSideRequestForgery.expected index a8d907793129..eb1d75c0e48d 100644 --- a/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/PartialServerSideRequestForgery.expected +++ b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/PartialServerSideRequestForgery.expected @@ -39,6 +39,8 @@ | test_path_validation.py:120:9:120:58 | ControlFlowNode for SecretClient() | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | test_path_validation.py:120:32:120:34 | ControlFlowNode for url | Part of the URL of this request depends on a $@. | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | user-provided value | | test_path_validation.py:127:9:127:58 | ControlFlowNode for SecretClient() | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | test_path_validation.py:127:32:127:34 | ControlFlowNode for url | Part of the URL of this request depends on a $@. | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | user-provided value | | test_path_validation.py:130:9:130:58 | ControlFlowNode for SecretClient() | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | test_path_validation.py:130:32:130:34 | ControlFlowNode for url | Part of the URL of this request depends on a $@. | test_path_validation.py:5:19:5:25 | ControlFlowNode for ImportMember | user-provided value | +| test_re_prefixmatch.py:11:9:11:51 | ControlFlowNode for Attribute() | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | test_re_prefixmatch.py:11:22:11:50 | ControlFlowNode for Fstring | Part of the URL of this request depends on a $@. | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | +| test_re_prefixmatch.py:37:9:37:51 | ControlFlowNode for Attribute() | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | test_re_prefixmatch.py:37:22:37:50 | ControlFlowNode for Fstring | Part of the URL of this request depends on a $@. | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | user-provided value | edges | full_partial_test.py:1:19:1:25 | ControlFlowNode for ImportMember | full_partial_test.py:1:19:1:25 | ControlFlowNode for request | provenance | | | full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:7:18:7:24 | ControlFlowNode for request | provenance | | @@ -226,6 +228,19 @@ edges | test_path_validation.py:61:5:61:7 | ControlFlowNode for url | test_path_validation.py:127:32:127:34 | ControlFlowNode for url | provenance | Sink:MaD:2 | | test_path_validation.py:61:5:61:7 | ControlFlowNode for url | test_path_validation.py:130:32:130:34 | ControlFlowNode for url | provenance | Sink:MaD:2 | | test_path_validation.py:61:5:61:7 | ControlFlowNode for url | test_path_validation.py:132:32:132:34 | ControlFlowNode for url | provenance | Sink:MaD:2 | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | test_re_prefixmatch.py:7:12:7:18 | ControlFlowNode for request | provenance | | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | test_re_prefixmatch.py:15:11:15:17 | ControlFlowNode for request | provenance | | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | test_re_prefixmatch.py:23:11:23:17 | ControlFlowNode for request | provenance | | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | test_re_prefixmatch.py:32:12:32:18 | ControlFlowNode for request | provenance | | +| test_re_prefixmatch.py:7:5:7:8 | ControlFlowNode for path | test_re_prefixmatch.py:11:22:11:50 | ControlFlowNode for Fstring | provenance | | +| test_re_prefixmatch.py:7:12:7:18 | ControlFlowNode for request | test_re_prefixmatch.py:7:5:7:8 | ControlFlowNode for path | provenance | AdditionalTaintStep | +| test_re_prefixmatch.py:15:5:15:7 | ControlFlowNode for url | test_re_prefixmatch.py:19:22:19:24 | ControlFlowNode for url | provenance | | +| test_re_prefixmatch.py:15:11:15:17 | ControlFlowNode for request | test_re_prefixmatch.py:15:5:15:7 | ControlFlowNode for url | provenance | AdditionalTaintStep | +| test_re_prefixmatch.py:23:5:23:7 | ControlFlowNode for url | test_re_prefixmatch.py:28:22:28:24 | ControlFlowNode for url | provenance | | +| test_re_prefixmatch.py:23:11:23:17 | ControlFlowNode for request | test_re_prefixmatch.py:23:5:23:7 | ControlFlowNode for url | provenance | AdditionalTaintStep | +| test_re_prefixmatch.py:32:5:32:8 | ControlFlowNode for path | test_re_prefixmatch.py:37:22:37:50 | ControlFlowNode for Fstring | provenance | | +| test_re_prefixmatch.py:32:12:32:18 | ControlFlowNode for request | test_re_prefixmatch.py:32:5:32:8 | ControlFlowNode for path | provenance | AdditionalTaintStep | | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | test_requests.py:1:19:1:25 | ControlFlowNode for request | provenance | | | test_requests.py:1:19:1:25 | ControlFlowNode for request | test_requests.py:7:18:7:24 | ControlFlowNode for request | provenance | | | test_requests.py:1:19:1:25 | ControlFlowNode for request | test_requests.py:14:18:14:24 | ControlFlowNode for request | provenance | | @@ -418,6 +433,20 @@ nodes | test_path_validation.py:127:32:127:34 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | | test_path_validation.py:130:32:130:34 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | | test_path_validation.py:132:32:132:34 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | +| test_re_prefixmatch.py:1:19:1:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| test_re_prefixmatch.py:7:5:7:8 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | +| test_re_prefixmatch.py:7:12:7:18 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| test_re_prefixmatch.py:11:22:11:50 | ControlFlowNode for Fstring | semmle.label | ControlFlowNode for Fstring | +| test_re_prefixmatch.py:15:5:15:7 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | +| test_re_prefixmatch.py:15:11:15:17 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| test_re_prefixmatch.py:19:22:19:24 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | +| test_re_prefixmatch.py:23:5:23:7 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | +| test_re_prefixmatch.py:23:11:23:17 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| test_re_prefixmatch.py:28:22:28:24 | ControlFlowNode for url | semmle.label | ControlFlowNode for url | +| test_re_prefixmatch.py:32:5:32:8 | ControlFlowNode for path | semmle.label | ControlFlowNode for path | +| test_re_prefixmatch.py:32:12:32:18 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| test_re_prefixmatch.py:37:22:37:50 | ControlFlowNode for Fstring | semmle.label | ControlFlowNode for Fstring | | test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | test_requests.py:1:19:1:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | | test_requests.py:7:5:7:14 | ControlFlowNode for user_input | semmle.label | ControlFlowNode for user_input | diff --git a/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/test_re_prefixmatch.py b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/test_re_prefixmatch.py new file mode 100644 index 000000000000..6853413c3345 --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/test_re_prefixmatch.py @@ -0,0 +1,37 @@ +from flask import request # $ Source +import re +import requests + + +def direct(): + path = request.args["path"] + if re.prefixmatch(r"[a-zA-Z0-9]+\Z", path): + requests.get(f"https://example.com/{path}") + else: + requests.get(f"https://example.com/{path}") # $ Alert[py/partial-ssrf] + + +def direct_keywords(): + url = request.args["url"] + if re.prefixmatch(pattern=r"https://example\.com/[a-zA-Z0-9]+\Z", string=url): + requests.get(url) + else: + requests.get(url) # $ Alert[py/full-ssrf] + + +def compiled(): + url = request.args["url"] + pattern = re.compile(r"https://example\.com/[a-zA-Z0-9]+\Z") + if pattern.prefixmatch(url): + requests.get(url) + else: + requests.get(url) # $ Alert[py/full-ssrf] + + +def compiled_keywords(): + path = request.args["path"] + pattern = re.compile(r"[a-zA-Z0-9]+\Z") + if pattern.prefixmatch(string=path): + requests.get(f"https://example.com/{path}") + else: + requests.get(f"https://example.com/{path}") # $ Alert[py/partial-ssrf] diff --git a/ql/Cargo.lock b/ql/Cargo.lock index d6ea9ea343ef..fd46dc52cc76 100644 --- a/ql/Cargo.lock +++ b/ql/Cargo.lock @@ -28,9 +28,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -43,15 +43,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -109,10 +109,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.37" +version = "1.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40545c26d092346d8a8dab71ee48e7685a7a9cba76e634790c215b41a4a7b4cf" +checksum = "54413ede23c2daf518f35156dfde027feb2374004d63bd497f983c8db9c0e313" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -126,9 +127,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -140,9 +141,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" dependencies = [ "clap_builder", "clap_derive", @@ -150,9 +151,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" dependencies = [ "anstream", "anstyle", @@ -162,21 +163,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 3.0.6", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" [[package]] name = "codeql-extractor" @@ -338,6 +339,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "find-msvc-tools" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25905e51abafe4dcea6c15fec58c57b601cdbd0ee53d22ea1d3016c587d39b" + [[package]] name = "flate2" version = "1.1.0" @@ -450,9 +457,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.162" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "log" @@ -532,9 +539,9 @@ checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] @@ -570,9 +577,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.3" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -582,9 +589,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -593,9 +600,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "ryu" @@ -605,34 +612,46 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.6", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ + "indexmap", "itoa", "memchr", - "ryu", "serde", + "serde_core", + "zmij", ] [[package]] @@ -659,9 +678,9 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "smallvec" @@ -692,6 +711,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -721,7 +751,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.87", ] [[package]] @@ -765,13 +795,14 @@ dependencies = [ [[package]] name = "tree-sitter" -version = "0.24.4" +version = "0.26.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67baf55e7e1b6806063b1e51041069c90afff16afcbbccd278d899f9d84bca4" +checksum = "17ebdd3a5a7e28a1890b876fdbd0c3c0fe0a6336cffaa104f11b9f720c9daa29" dependencies = [ "cc", "regex", "regex-syntax", + "serde_json", "streaming-iterator", "tree-sitter-language", ] @@ -802,9 +833,9 @@ checksum = "e8ddffe35a0e5eeeadf13ff7350af564c6e73993a24db62caee1822b185c2600" [[package]] name = "tree-sitter-python" -version = "0.23.6" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d065aaa27f3aaceaf60c1f0e0ac09e1cb9eb8ed28e7bcdaa52129cffc7f4b04" +checksum = "6bf85fd39652e740bf60f46f4cda9492c3a9ad75880575bf14960f775cb74a1c" dependencies = [ "cc", "tree-sitter-language", @@ -812,8 +843,8 @@ dependencies = [ [[package]] name = "tree-sitter-ql" -version = "0.23.0" -source = "git+https://github.com/tree-sitter/tree-sitter-ql.git?rev=c73c31c89cb0019ef56fe8bc1723e7c36e0be607#c73c31c89cb0019ef56fe8bc1723e7c36e0be607" +version = "0.23.1" +source = "git+https://github.com/tree-sitter/tree-sitter-ql.git?rev=d9d6c853caf0f882e6371e4d4da5817c48c8a8d8#d9d6c853caf0f882e6371e4d4da5817c48c8a8d8" dependencies = [ "cc", "tree-sitter-language", @@ -884,7 +915,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -906,7 +937,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1026,7 +1057,7 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.6", ] [[package]] @@ -1038,6 +1069,12 @@ dependencies = [ "serde_yaml", ] +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + [[package]] name = "zstd" version = "0.13.3" diff --git a/ql/buramu/src/main.rs b/ql/buramu/src/main.rs index f91ba8352efc..91e6cc298605 100644 --- a/ql/buramu/src/main.rs +++ b/ql/buramu/src/main.rs @@ -24,7 +24,7 @@ fn test_get_filename_and_lineno() { fn get_files_with_deprecations() -> FileDeprecations { let output = Command::new("git") - .args(&[ + .args([ "grep", "-n", "-E", @@ -38,10 +38,7 @@ fn get_files_with_deprecations() -> FileDeprecations { let mut file_deprecations: FileDeprecations = HashMap::new(); for line in output.stdout.lines() { let (file, lineno) = get_filename_and_lineno(&line.unwrap()); - file_deprecations - .entry(file) - .or_insert_with(Vec::new) - .push(lineno); + file_deprecations.entry(file).or_default().push(lineno); } file_deprecations } diff --git a/ql/buramu/tree-sitter-blame/bindings/rust/build.rs b/ql/buramu/tree-sitter-blame/bindings/rust/build.rs index 4cc26f5e0f86..067936913bdd 100644 --- a/ql/buramu/tree-sitter-blame/bindings/rust/build.rs +++ b/ql/buramu/tree-sitter-blame/bindings/rust/build.rs @@ -2,7 +2,7 @@ fn main() { let src_dir = std::path::Path::new("src"); let mut c_config = cc::Build::new(); - c_config.include(&src_dir); + c_config.include(src_dir); c_config .flag_if_supported("-Wno-unused-parameter") .flag_if_supported("-Wno-unused-but-set-variable") @@ -11,7 +11,7 @@ fn main() { c_config.flag("-utf-8"); let parser_path = src_dir.join("parser.c"); - c_config.file(&parser_path); + c_config.file(parser_path.as_path()); // If your language uses an external scanner written in C, // then include this block of code: diff --git a/ql/extractor/Cargo.toml b/ql/extractor/Cargo.toml index 637a4bf5f3b6..aa81f1904171 100644 --- a/ql/extractor/Cargo.toml +++ b/ql/extractor/Cargo.toml @@ -7,8 +7,8 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -tree-sitter = ">= 0.23.0" -tree-sitter-ql = { git = "https://github.com/tree-sitter/tree-sitter-ql.git", rev = "c73c31c89cb0019ef56fe8bc1723e7c36e0be607"} +tree-sitter = ">= 0.26.0" +tree-sitter-ql = { git = "https://github.com/tree-sitter/tree-sitter-ql.git", rev = "d9d6c853caf0f882e6371e4d4da5817c48c8a8d8"} tree-sitter-ql-dbscheme = { git = "https://github.com/tree-sitter/tree-sitter-ql-dbscheme.git", rev = "1980b4b6998a1138d326f863e6168f0f2c0c544d"} tree-sitter-blame = {path = "../buramu/tree-sitter-blame"} tree-sitter-json = {git = "https://github.com/tree-sitter/tree-sitter-json.git", rev = "8bfdb43f47ad805bb1ce093203cfcbaa8ed2c571"} diff --git a/ql/ql/src/codeql_ql/ast/Ast.qll b/ql/ql/src/codeql_ql/ast/Ast.qll index 18e306495566..7cdfd6163d2a 100644 --- a/ql/ql/src/codeql_ql/ast/Ast.qll +++ b/ql/ql/src/codeql_ql/ast/Ast.qll @@ -833,7 +833,11 @@ class Module extends TModule, ModuleDeclaration { Module() { this = TModule(mod) } - override Location getLocation() { result = mod.asLeft().getName().getLocation() } + override Location getLocation() { + result = mod.asLeft().getName().getLocation() + or + not exists(mod.asLeft().getName()) and result = mod.asLeft().getLocation() + } override string getAPrimaryQlClass() { result = "Module" } @@ -2526,13 +2530,25 @@ private class AnnotationArg extends TAnnotationArg, AstNode { AnnotationArg() { this = TAnnotationArg(arg) } + private predicate isOptional() { + arg.getLocation().getEndLine() != arg.getChild().getLocation().getEndLine() + or + arg.getLocation().getEndColumn() != arg.getChild().getLocation().getEndColumn() + } + /** Gets the name of this argument. */ string getValue() { - result = - [ - arg.getChild().(QL::SimpleId).getValue(), arg.getChild().(QL::Result).getValue(), - arg.getChild().(QL::This).getValue() - ] + exists(string value | + value = + [ + arg.getChild().(QL::SimpleId).getValue(), arg.getChild().(QL::Result).getValue(), + arg.getChild().(QL::This).getValue() + ] + | + result = value and not this.isOptional() + or + result = value + "?" and this.isOptional() + ) } override string toString() { result = this.getValue() } diff --git a/ql/ql/src/codeql_ql/ast/internal/Module.qll b/ql/ql/src/codeql_ql/ast/internal/Module.qll index 3b3035c77624..6918b468a848 100644 --- a/ql/ql/src/codeql_ql/ast/internal/Module.qll +++ b/ql/ql/src/codeql_ql/ast/internal/Module.qll @@ -170,13 +170,13 @@ private predicate resolveImportQualifier(Import imp, ContainerOrModule m) { cached private module Cached { - private AstNode parent(AstNode n) { - result = n.getParent() and - not n instanceof Module + private Module getEnclosingModule0(AstNode n) { + result = n.getParent() + or + not n.getParent() instanceof Module and + result = getEnclosingModule0(n.getParent()) } - private Module getEnclosingModule0(AstNode n) { result = parent*(n.getParent()) } - cached ContainerOrModule getEnclosingModule(AstNode n) { result = TModule(getEnclosingModule0(n)) @@ -375,7 +375,8 @@ module ModConsistency { query predicate noName(AstNode mod) { mod instanceof Module and - not exists(mod.(Module).getName()) + not exists(mod.(Module).getName()) and + not mod.getParent() instanceof TopLevel or mod instanceof ModuleExpr and not exists(mod.(ModuleExpr).getName()) diff --git a/ql/ql/src/codeql_ql/ast/internal/Predicate.qll b/ql/ql/src/codeql_ql/ast/internal/Predicate.qll index b45eb2166f19..e46e36b16dac 100644 --- a/ql/ql/src/codeql_ql/ast/internal/Predicate.qll +++ b/ql/ql/src/codeql_ql/ast/internal/Predicate.qll @@ -169,9 +169,20 @@ private module Cached { ) } + pragma[noinline] + private predicate builtin(BuiltinClassless pred, string name, int arity) { + name = pred.getName() and + arity = count(int i | exists(pred.getParameterType(i))) + } + + pragma[noinline] + private predicate call(PredicateCall call, string name, int arity) { + name = call.getPredicateName() and + arity = call.getNumberOfArguments() + } + private predicate resolveBuiltinPredicateCall(PredicateCall call, BuiltinClassless pred) { - call.getNumberOfArguments() = pred.getArity() and - call.getPredicateName() = pred.getName() + exists(string name, int arity | builtin(pred, name, arity) and call(call, name, arity)) } cached diff --git a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll index 51424106719d..3edb8d427b8a 100644 --- a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll +++ b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll @@ -807,7 +807,7 @@ module QL { final F::SignatureExpr getAnImplements() { result = this.getImplements(_) } /** Gets the node corresponding to the field `name`. */ - final F::ModuleName getName() { ql_module_def(this, result) } + final F::ModuleName getName() { ql_module_name(this, result) } /** Gets the node corresponding to the field `parameter`. */ final F::ModuleParam getParameter(int i) { ql_module_parameter(this, i, result) } @@ -824,7 +824,7 @@ module QL { /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { ql_module_implements(this, _, result) or - ql_module_def(this, result) or + ql_module_name(this, result) or ql_module_parameter(this, _, result) or ql_module_child(this, _, result) } diff --git a/ql/ql/src/codeql_ql/ast/internal/Variable.qll b/ql/ql/src/codeql_ql/ast/internal/Variable.qll index aa62c3964048..d76d3d700c9a 100644 --- a/ql/ql/src/codeql_ql/ast/internal/Variable.qll +++ b/ql/ql/src/codeql_ql/ast/internal/Variable.qll @@ -51,13 +51,13 @@ class VariableScope extends TScope, AstNode { } } -private AstNode parent(AstNode child) { - result = child.getParent() and - not child instanceof VariableScope -} - pragma[nomagic] -VariableScope scopeOf(AstNode n) { result = parent*(n.getParent()) } +VariableScope scopeOf(AstNode n) { + result = n.getParent() + or + not n.getParent() instanceof VariableScope and + result = scopeOf(n.getParent()) +} private string getName(Identifier i) { exists(QL::Variable v | diff --git a/ql/ql/src/ql.dbscheme b/ql/ql/src/ql.dbscheme index c50cdd7429a4..b246d6ce970b 100644 --- a/ql/ql/src/ql.dbscheme +++ b/ql/ql/src/ql.dbscheme @@ -555,6 +555,11 @@ ql_module_implements( unique int implements: @ql_signature_expr ref ); +ql_module_name( + unique int ql_module: @ql_module ref, + unique int name: @ql_module_name ref +); + #keyset[ql_module, index] ql_module_parameter( int ql_module: @ql_module ref, @@ -572,8 +577,7 @@ ql_module_child( ); ql_module_def( - unique int id: @ql_module, - int name: @ql_module_name ref + unique int id: @ql_module ); ql_module_alias_body_def( diff --git a/ql/ql/src/ql.dbscheme.stats b/ql/ql/src/ql.dbscheme.stats index 9d7f44eaa4b1..82714bfe1d07 100644 --- a/ql/ql/src/ql.dbscheme.stats +++ b/ql/ql/src/ql.dbscheme.stats @@ -1,22487 +1,4 @@ - - @blame_blame_entry - 0 - - - @blame_blame_info - 0 - - - @blame_file_entry - 0 - - - @blame_reserved_word - 0 - - - @blame_token_date - 0 - - - @blame_token_filename - 0 - - - @blame_token_number - 0 - - - @dbscheme_annotation - 30564 - - - @dbscheme_args_annotation - 30555 - - - @dbscheme_branch - 151025 - - - @dbscheme_case_decl - 5423 - - - @dbscheme_col_type - 341399 - - - @dbscheme_column - 341399 - - - @dbscheme_dbscheme - 686 - - - @dbscheme_entry - 230044 - - - @dbscheme_repr_type - 341399 - - - @dbscheme_reserved_word - 1756569 - - - @dbscheme_table - 146537 - - - @dbscheme_table_name - 146537 - - - @dbscheme_token_annot_name - 30564 - - - @dbscheme_token_block_comment - 22060 - - - @dbscheme_token_boolean - 2146 - - - @dbscheme_token_date - 1170 - - - @dbscheme_token_dbtype - 750840 - - - @dbscheme_token_float - 2962 - - - @dbscheme_token_int - 350777 - - - @dbscheme_token_integer - 158986 - - - @dbscheme_token_line_comment - 62355 - - - @dbscheme_token_qldoc - 10956 - - - @dbscheme_token_ref - 281648 - - - @dbscheme_token_simple_id - 543204 - - - @dbscheme_token_string - 67865 - - - @dbscheme_token_unique - 102289 - - - @dbscheme_token_varchar - 7961 - - - @dbscheme_union_decl - 67798 - - - @diagnostic_debug - 0 - - - @diagnostic_error - 0 - - - @diagnostic_info - 0 - - - @diagnostic_warning - 5 - - - @file - 12283 - - - @folder - 4402 - - - @json_array - 2026 - - - @json_document - 324 - - - @json_object - 5034 - - - @json_pair - 12461 - - - @json_reserved_word - 82515 - - - @json_string__ - 22176 - - - @json_token_comment - 19 - - - @json_token_false - 607 - - - @json_token_null - 248 - - - @json_token_number - 71 - - - @json_token_string_content - 22171 - - - @json_token_true - 978 - - - @location_default - 9617371 - - - @ql_add_expr - 13786 - - - @ql_aggregate - 9053 - - - @ql_annot_arg - 4043 - - - @ql_annotation - 65278 - - - @ql_arityless_predicate_expr - 58107 - - - @ql_as_expr - 20508 - - - @ql_as_exprs - 8493 - - - @ql_body - 65826 - - - @ql_bool - 4274 - - - @ql_call_body - 57368 - - - @ql_call_or_unqual_agg_expr - 57368 - - - @ql_charpred - 12088 - - - @ql_class_member - 79133 - - - @ql_classless_predicate - 23253 - - - @ql_comp_term - 140334 - - - @ql_conjunction - 76308 - - - @ql_dataclass - 22563 - - - @ql_datatype - 548 - - - @ql_datatype_branch - 2719 - - - @ql_datatype_branches - 548 - - - @ql_disjunction - 44890 - - - @ql_expr_aggregate_body - 1216 - - - @ql_expr_annotation - 601 - - - @ql_field - 3721 - - - @ql_full_aggregate_body - 6356 - - - @ql_higher_order_term - 77 - - - @ql_if_term - 2953 - - - @ql_implication - 101 - - - @ql_import_directive - 25764 - - - @ql_import_module_expr - 25764 - - - @ql_in_expr - 1037 - - - @ql_instance_of - 15913 - - - @ql_literal - 109390 - - - @ql_member_predicate - 43952 - - - @ql_module - 4567 - - - @ql_module_alias_body - 917 - - - @ql_module_expr - 76399 - - - @ql_module_instantiation - 1740 - - - @ql_module_member - 118178 - - - @ql_module_name - 7606 - - - @ql_module_param - 266 - - - @ql_mul_expr - 585 - - - @ql_negation - 11727 - - - @ql_order_by - 1067 - - - @ql_order_bys - 661 - - - @ql_par_expr - 5799 - - - @ql_predicate_alias_body - 372 - - - @ql_predicate_expr - 739 - - - @ql_prefix_cast - 0 - - - @ql_ql - 11167 - - - @ql_qualified_expr - 165157 - - - @ql_qualified_rhs - 165157 - - - @ql_quantified - 24227 - - - @ql_range - 365 - - - @ql_reserved_word - 1875319 - - - @ql_select - 5989 - - - @ql_set_literal - 4014 - - - @ql_signature_expr - 3709 - - - @ql_special_call - 4424 - - - @ql_super_ref - 2901 - - - @ql_token_addop - 13786 - - - @ql_token_agg_id - 9053 - - - @ql_token_annot_name - 66480 - - - @ql_token_block_comment - 992 - - - @ql_token_class_name - 204253 - - - @ql_token_closure - 2234 - - - @ql_token_compop - 140334 - - - @ql_token_dbtype - 3766 - - - @ql_token_direction - 205 - - - @ql_token_empty - 2344 - - - @ql_token_false - 1973 - - - @ql_token_float - 305 - - - @ql_token_integer - 21612 - - - @ql_token_line_comment - 20888 - - - @ql_token_literal_id - 58184 - - - @ql_token_mulop - 585 - - - @ql_token_predicate - 26200 - - - @ql_token_predicate_name - 221079 - - - @ql_token_primitive_type - 47956 - - - @ql_token_qldoc - 55406 - - - @ql_token_quantifier - 24227 - - - @ql_token_result - 52493 - - - @ql_token_simple_id - 512064 - - - @ql_token_special_id - 4424 - - - @ql_token_string - 83938 - - - @ql_token_super - 2901 - - - @ql_token_this - 50826 - - - @ql_token_true - 2301 - - - @ql_token_underscore - 17184 - - - @ql_token_unop - 1158 - - - @ql_type_alias_body - 817 - - - @ql_type_expr - 218057 - - - @ql_type_union_body - 253 - - - @ql_unary_expr - 1158 - - - @ql_unqual_agg_body - 0 - - - @ql_var_decl - 114137 - - - @ql_var_name - 380908 - - - @ql_variable - 369462 - - - @yaml_alias_node - 0 - - - @yaml_error - 0 - - - @yaml_mapping_node - 186 - - - @yaml_scalar_node - 1481 - - - @yaml_sequence_node - 59 - - - - blame_ast_node_location - 0 - - - node - 0 - - - loc - 0 - - - - - node - loc - - - 12 - - - 1 - 2 - 1 - - - - - - - loc - node - - - 12 - - - - - - - - blame_ast_node_parent - 0 - - - node - 0 - - - parent - 0 - - - parent_index - 0 - - - - - node - parent - - - 12 - - - 1 - 2 - 1 - - - - - - - node - parent_index - - - 12 - - - 1 - 2 - 1 - - - - - - - parent - node - - - 12 - - - - - - parent - parent_index - - - 12 - - - - - - parent_index - node - - - 12 - - - - - - parent_index - parent - - - 12 - - - - - - - - blame_blame_entry_def - 0 - - - id - 0 - - - date__ - 0 - - - - - id - date__ - - - 12 - - - 1 - 2 - 1 - - - - - - - date__ - id - - - 12 - - - - - - - - blame_blame_entry_line - 0 - - - blame_blame_entry - 0 - - - index - 0 - - - line - 0 - - - - - blame_blame_entry - index - - - 12 - - - - - - blame_blame_entry - line - - - 12 - - - - - - index - blame_blame_entry - - - 12 - - - - - - index - line - - - 12 - - - - - - line - blame_blame_entry - - - 12 - - - 1 - 2 - 1 - - - - - - - line - index - - - 12 - - - 1 - 2 - 1 - - - - - - - - - blame_blame_info_def - 0 - - - id - 0 - - - today - 0 - - - - - id - today - - - 12 - - - 1 - 2 - 1 - - - - - - - today - id - - - 12 - - - - - - - - blame_blame_info_file_entry - 0 - - - blame_blame_info - 0 - - - index - 0 - - - file_entry - 0 - - - - - blame_blame_info - index - - - 12 - - - - - - blame_blame_info - file_entry - - - 12 - - - - - - index - blame_blame_info - - - 12 - - - - - - index - file_entry - - - 12 - - - - - - file_entry - blame_blame_info - - - 12 - - - 1 - 2 - 1 - - - - - - - file_entry - index - - - 12 - - - 1 - 2 - 1 - - - - - - - - - blame_file_entry_blame_entry - 0 - - - blame_file_entry - 0 - - - index - 0 - - - blame_entry - 0 - - - - - blame_file_entry - index - - - 12 - - - - - - blame_file_entry - blame_entry - - - 12 - - - - - - index - blame_file_entry - - - 12 - - - - - - index - blame_entry - - - 12 - - - - - - blame_entry - blame_file_entry - - - 12 - - - 1 - 2 - 1 - - - - - - - blame_entry - index - - - 12 - - - 1 - 2 - 1 - - - - - - - - - blame_file_entry_def - 0 - - - id - 0 - - - file_name - 0 - - - - - id - file_name - - - 12 - - - 1 - 2 - 1 - - - - - - - file_name - id - - - 12 - - - - - - - - blame_tokeninfo - 0 - - - id - 0 - - - kind - 0 - - - value - 0 - - - - - id - kind - - - 12 - - - 1 - 2 - 1 - - - - - - - id - value - - - 12 - - - 1 - 2 - 1 - - - - - - - kind - id - - - 12 - - - - - - kind - value - - - 12 - - - - - - value - id - - - 12 - - - - - - value - kind - - - 12 - - - - - - - - containerparent - 16683 - - - parent - 4402 - - - child - 16683 - - - - - parent - child - - - 12 - - - 1 - 2 - 2157 - - - 2 - 3 - 978 - - - 3 - 4 - 375 - - - 4 - 6 - 348 - - - 6 - 15 - 339 - - - 15 - 255 - 205 - - - - - - - child - parent - - - 12 - - - 1 - 2 - 16683 - - - - - - - - - dbscheme_annotation_args_annotation - 30555 - - - dbscheme_annotation - 30555 - - - args_annotation - 30555 - - - - - dbscheme_annotation - args_annotation - - - 12 - - - 1 - 2 - 30555 - - - - - - - args_annotation - dbscheme_annotation - - - 12 - - - 1 - 2 - 30555 - - - - - - - - - dbscheme_annotation_def - 30564 - - - id - 30564 - - - - - - dbscheme_annotation_simple_annotation - 9 - - - dbscheme_annotation - 9 - - - simple_annotation - 9 - - - - - dbscheme_annotation - simple_annotation - - - 12 - - - 1 - 2 - 9 - - - - - - - simple_annotation - dbscheme_annotation - - - 12 - - - 1 - 2 - 9 - - - - - - - - - dbscheme_args_annotation_child - 49845 - - - dbscheme_args_annotation - 30555 - - - index - 3 - - - child - 49845 - - - - - dbscheme_args_annotation - index - - - 12 - - - 1 - 2 - 12292 - - - 2 - 3 - 17236 - - - 3 - 4 - 1027 - - - - - - - dbscheme_args_annotation - child - - - 12 - - - 1 - 2 - 12292 - - - 2 - 3 - 17236 - - - 3 - 4 - 1027 - - - - - - - index - dbscheme_args_annotation - - - 12 - - - 1027 - 1028 - 1 - - - 18263 - 18264 - 1 - - - 30555 - 30556 - 1 - - - - - - - index - child - - - 12 - - - 1027 - 1028 - 1 - - - 18263 - 18264 - 1 - - - 30555 - 30556 - 1 - - - - - - - child - dbscheme_args_annotation - - - 12 - - - 1 - 2 - 49845 - - - - - - - child - index - - - 12 - - - 1 - 2 - 49845 - - - - - - - - - dbscheme_args_annotation_def - 30555 - - - id - 30555 - - - name - 30555 - - - - - id - name - - - 12 - - - 1 - 2 - 30555 - - - - - - - name - id - - - 12 - - - 1 - 2 - 30555 - - - - - - - - - dbscheme_ast_node_location - 5985718 - - - node - 5985718 - - - loc - 4903745 - - - - - node - loc - - - 12 - - - 1 - 2 - 5985718 - - - - - - - loc - node - - - 12 - - - 1 - 2 - 3821772 - - - 2 - 3 - 1081973 - - - - - - - - - dbscheme_ast_node_parent - 5900617 - - - node - 5900617 - - - parent - 1833365 - - - parent_index - 501 - - - - - node - parent - - - 12 - - - 1 - 2 - 5900617 - - - - - - - node - parent_index - - - 12 - - - 1 - 2 - 5900617 - - - - - - - parent - node - - - 12 - - - 1 - 2 - 1081973 - - - 2 - 4 - 151168 - - - 4 - 5 - 13080 - - - 5 - 6 - 341594 - - - 6 - 8 - 149771 - - - 8 - 502 - 95779 - - - - - - - parent - parent_index - - - 12 - - - 1 - 2 - 1081973 - - - 2 - 4 - 151168 - - - 4 - 5 - 13080 - - - 5 - 6 - 341594 - - - 6 - 8 - 149771 - - - 8 - 502 - 95779 - - - - - - - parent_index - node - - - 12 - - - 3 - 140 - 38 - - - 147 - 386 - 38 - - - 387 - 491 - 31 - - - 491 - 492 - 49 - - - 499 - 712 - 38 - - - 717 - 841 - 42 - - - 842 - 1054 - 38 - - - 1055 - 1190 - 44 - - - 1192 - 1357 - 41 - - - 1362 - 1575 - 39 - - - 1582 - 2577 - 38 - - - 2626 - 5260 - 38 - - - 5283 - 1833366 - 27 - - - - - - - parent_index - parent - - - 12 - - - 3 - 140 - 38 - - - 147 - 386 - 38 - - - 387 - 491 - 31 - - - 491 - 492 - 49 - - - 499 - 712 - 38 - - - 717 - 841 - 42 - - - 842 - 1054 - 38 - - - 1055 - 1190 - 44 - - - 1192 - 1357 - 41 - - - 1362 - 1575 - 39 - - - 1582 - 2577 - 38 - - - 2626 - 5260 - 38 - - - 5283 - 1833366 - 27 - - - - - - - - - dbscheme_branch_child - 302050 - - - dbscheme_branch - 151025 - - - index - 2 - - - child - 302050 - - - - - dbscheme_branch - index - - - 12 - - - 2 - 3 - 151025 - - - - - - - dbscheme_branch - child - - - 12 - - - 2 - 3 - 151025 - - - - - - - index - dbscheme_branch - - - 12 - - - 151025 - 151026 - 2 - - - - - - - index - child - - - 12 - - - 151025 - 151026 - 2 - - - - - - - child - dbscheme_branch - - - 12 - - - 1 - 2 - 302050 - - - - - - - child - index - - - 12 - - - 1 - 2 - 302050 - - - - - - - - - dbscheme_branch_def - 151025 - - - id - 151025 - - - - - - dbscheme_branch_qldoc - 0 - - - dbscheme_branch - 0 - - - qldoc - 0 - - - - - dbscheme_branch - qldoc - - - 12 - - - 1 - 2 - 1 - - - - - - - qldoc - dbscheme_branch - - - 12 - - - 1 - 2 - 1 - - - - - - - - - dbscheme_case_decl_child - 151025 - - - dbscheme_case_decl - 5423 - - - index - 218 - - - child - 151025 - - - - - dbscheme_case_decl - index - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 841 - - - 3 - 4 - 605 - - - 4 - 5 - 691 - - - 5 - 6 - 456 - - - 6 - 8 - 218 - - - 9 - 11 - 408 - - - 11 - 18 - 438 - - - 21 - 29 - 467 - - - 29 - 38 - 436 - - - 38 - 117 - 407 - - - 118 - 219 - 455 - - - - - - - dbscheme_case_decl - child - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 841 - - - 3 - 4 - 605 - - - 4 - 5 - 691 - - - 5 - 6 - 456 - - - 6 - 8 - 218 - - - 9 - 11 - 408 - - - 11 - 18 - 438 - - - 21 - 29 - 467 - - - 29 - 38 - 436 - - - 38 - 117 - 407 - - - 118 - 219 - 455 - - - - - - - index - dbscheme_case_decl - - - 12 - - - 156 - 157 - 20 - - - 159 - 160 - 1 - - - 219 - 220 - 27 - - - 227 - 294 - 11 - - - 311 - 312 - 32 - - - 330 - 494 - 17 - - - 521 - 544 - 13 - - - 544 - 548 - 9 - - - 581 - 584 - 15 - - - 598 - 601 - 17 - - - 643 - 795 - 17 - - - 802 - 1764 - 17 - - - 1764 - 2830 - 17 - - - 3285 - 5424 - 5 - - - - - - - index - child - - - 12 - - - 156 - 157 - 20 - - - 159 - 160 - 1 - - - 219 - 220 - 27 - - - 227 - 294 - 11 - - - 311 - 312 - 32 - - - 330 - 494 - 17 - - - 521 - 544 - 13 - - - 544 - 548 - 9 - - - 581 - 584 - 15 - - - 598 - 601 - 17 - - - 643 - 795 - 17 - - - 802 - 1764 - 17 - - - 1764 - 2830 - 17 - - - 3285 - 5424 - 5 - - - - - - - child - dbscheme_case_decl - - - 12 - - - 1 - 2 - 151025 - - - - - - - child - index - - - 12 - - - 1 - 2 - 151025 - - - - - - - - - dbscheme_case_decl_def - 5423 - - - id - 5423 - - - base - 5423 - - - discriminator - 5423 - - - - - id - base - - - 12 - - - 1 - 2 - 5423 - - - - - - - id - discriminator - - - 12 - - - 1 - 2 - 5423 - - - - - - - base - id - - - 12 - - - 1 - 2 - 5423 - - - - - - - base - discriminator - - - 12 - - - 1 - 2 - 5423 - - - - - - - discriminator - id - - - 12 - - - 1 - 2 - 5423 - - - - - - - discriminator - base - - - 12 - - - 1 - 2 - 5423 - - - - - - - - - dbscheme_col_type_def - 341399 - - - id - 341399 - - - child - 341399 - - - - - id - child - - - 12 - - - 1 - 2 - 341399 - - - - - - - child - id - - - 12 - - - 1 - 2 - 341399 - - - - - - - - - dbscheme_column_def - 341399 - - - id - 341399 - - - col_name - 341399 - - - col_type - 341399 - - - repr_type - 341399 - - - - - id - col_name - - - 12 - - - 1 - 2 - 341399 - - - - - - - id - col_type - - - 12 - - - 1 - 2 - 341399 - - - - - - - id - repr_type - - - 12 - - - 1 - 2 - 341399 - - - - - - - col_name - id - - - 12 - - - 1 - 2 - 341399 - - - - - - - col_name - col_type - - - 12 - - - 1 - 2 - 341399 - - - - - - - col_name - repr_type - - - 12 - - - 1 - 2 - 341399 - - - - - - - col_type - id - - - 12 - - - 1 - 2 - 341399 - - - - - - - col_type - col_name - - - 12 - - - 1 - 2 - 341399 - - - - - - - col_type - repr_type - - - 12 - - - 1 - 2 - 341399 - - - - - - - repr_type - id - - - 12 - - - 1 - 2 - 341399 - - - - - - - repr_type - col_name - - - 12 - - - 1 - 2 - 341399 - - - - - - - repr_type - col_type - - - 12 - - - 1 - 2 - 341399 - - - - - - - - - dbscheme_column_is_ref - 281648 - - - dbscheme_column - 281648 - - - is_ref - 281648 - - - - - dbscheme_column - is_ref - - - 12 - - - 1 - 2 - 281648 - - - - - - - is_ref - dbscheme_column - - - 12 - - - 1 - 2 - 281648 - - - - - - - - - dbscheme_column_is_unique - 102289 - - - dbscheme_column - 102289 - - - is_unique - 102289 - - - - - dbscheme_column - is_unique - - - 12 - - - 1 - 2 - 102289 - - - - - - - is_unique - dbscheme_column - - - 12 - - - 1 - 2 - 102289 - - - - - - - - - dbscheme_column_qldoc - 670 - - - dbscheme_column - 670 - - - qldoc - 670 - - - - - dbscheme_column - qldoc - - - 12 - - - 1 - 2 - 670 - - - - - - - qldoc - dbscheme_column - - - 12 - - - 1 - 2 - 670 - - - - - - - - - dbscheme_dbscheme_child - 230044 - - - dbscheme_dbscheme - 685 - - - index - 501 - - - child - 230044 - - - - - dbscheme_dbscheme - index - - - 12 - - - 2 - 147 - 56 - - - 148 - 205 - 55 - - - 205 - 275 - 54 - - - 275 - 287 - 52 - - - 287 - 306 - 62 - - - 307 - 312 - 52 - - - 313 - 320 - 56 - - - 320 - 418 - 55 - - - 418 - 460 - 58 - - - 460 - 464 - 46 - - - 465 - 469 - 59 - - - 470 - 478 - 57 - - - 478 - 502 - 23 - - - - - - - dbscheme_dbscheme - child - - - 12 - - - 2 - 147 - 56 - - - 148 - 205 - 55 - - - 205 - 275 - 54 - - - 275 - 287 - 52 - - - 287 - 306 - 62 - - - 307 - 312 - 52 - - - 313 - 320 - 56 - - - 320 - 418 - 55 - - - 418 - 460 - 58 - - - 460 - 464 - 46 - - - 465 - 469 - 59 - - - 470 - 478 - 57 - - - 478 - 502 - 23 - - - - - - - index - dbscheme_dbscheme - - - 12 - - - 3 - 140 - 38 - - - 147 - 230 - 38 - - - 231 - 272 - 31 - - - 272 - 273 - 70 - - - 279 - 469 - 38 - - - 470 - 561 - 37 - - - 562 - 563 - 40 - - - 563 - 601 - 40 - - - 601 - 664 - 41 - - - 664 - 682 - 27 - - - 682 - 683 - 76 - - - 683 - 686 - 25 - - - - - - - index - child - - - 12 - - - 3 - 140 - 38 - - - 147 - 230 - 38 - - - 231 - 272 - 31 - - - 272 - 273 - 70 - - - 279 - 469 - 38 - - - 470 - 561 - 37 - - - 562 - 563 - 40 - - - 563 - 601 - 40 - - - 601 - 664 - 41 - - - 664 - 682 - 27 - - - 682 - 683 - 76 - - - 683 - 686 - 25 - - - - - - - child - dbscheme_dbscheme - - - 12 - - - 1 - 2 - 230044 - - - - - - - child - index - - - 12 - - - 1 - 2 - 230044 - - - - - - - - - dbscheme_dbscheme_def - 686 - - - id - 686 - - - - - - dbscheme_entry_def - 230044 - - - id - 230044 - - - child - 230044 - - - - - id - child - - - 12 - - - 1 - 2 - 230044 - - - - - - - child - id - - - 12 - - - 1 - 2 - 230044 - - - - - - - - - dbscheme_repr_type_child - 349360 - - - dbscheme_repr_type - 341399 - - - index - 2 - - - child - 349360 - - - - - dbscheme_repr_type - index - - - 12 - - - 1 - 2 - 333438 - - - 2 - 3 - 7961 - - - - - - - dbscheme_repr_type - child - - - 12 - - - 1 - 2 - 333438 - - - 2 - 3 - 7961 - - - - - - - index - dbscheme_repr_type - - - 12 - - - 7961 - 7962 - 1 - - - 341399 - 341400 - 1 - - - - - - - index - child - - - 12 - - - 7961 - 7962 - 1 - - - 341399 - 341400 - 1 - - - - - - - child - dbscheme_repr_type - - - 12 - - - 1 - 2 - 349360 - - - - - - - child - index - - - 12 - - - 1 - 2 - 349360 - - - - - - - - - dbscheme_repr_type_def - 341399 - - - id - 341399 - - - - - - dbscheme_table_child - 371963 - - - dbscheme_table - 146537 - - - index - 10 - - - child - 371963 - - - - - dbscheme_table - index - - - 12 - - - 1 - 2 - 32738 - - - 2 - 3 - 55828 - - - 3 - 4 - 24047 - - - 4 - 5 - 21522 - - - 5 - 7 - 11405 - - - 7 - 11 - 997 - - - - - - - dbscheme_table - child - - - 12 - - - 1 - 2 - 32738 - - - 2 - 3 - 55828 - - - 3 - 4 - 24047 - - - 4 - 5 - 21522 - - - 5 - 7 - 11405 - - - 7 - 11 - 997 - - - - - - - index - dbscheme_table - - - 12 - - - 25 - 26 - 1 - - - 181 - 182 - 1 - - - 337 - 338 - 1 - - - 997 - 998 - 1 - - - 5790 - 5791 - 1 - - - 12402 - 12403 - 1 - - - 33924 - 33925 - 1 - - - 57971 - 57972 - 1 - - - 113799 - 113800 - 1 - - - 146537 - 146538 - 1 - - - - - - - index - child - - - 12 - - - 25 - 26 - 1 - - - 181 - 182 - 1 - - - 337 - 338 - 1 - - - 997 - 998 - 1 - - - 5790 - 5791 - 1 - - - 12402 - 12403 - 1 - - - 33924 - 33925 - 1 - - - 57971 - 57972 - 1 - - - 113799 - 113800 - 1 - - - 146537 - 146538 - 1 - - - - - - - child - dbscheme_table - - - 12 - - - 1 - 2 - 371963 - - - - - - - child - index - - - 12 - - - 1 - 2 - 371963 - - - - - - - - - dbscheme_table_def - 146537 - - - id - 146537 - - - table_name - 146537 - - - - - id - table_name - - - 12 - - - 1 - 2 - 146537 - - - - - - - table_name - id - - - 12 - - - 1 - 2 - 146537 - - - - - - - - - dbscheme_table_name_def - 146537 - - - id - 146537 - - - child - 146537 - - - - - id - child - - - 12 - - - 1 - 2 - 146537 - - - - - - - child - id - - - 12 - - - 1 - 2 - 146537 - - - - - - - - - dbscheme_tokeninfo - 4152352 - - - id - 4152352 - - - kind - 16 - - - value - 7232 - - - - - id - kind - - - 12 - - - 1 - 2 - 4152352 - - - - - - - id - value - - - 12 - - - 1 - 2 - 4152352 - - - - - - - kind - id - - - 12 - - - 1170 - 1171 - 1 - - - 2146 - 2147 - 1 - - - 2962 - 2963 - 1 - - - 7961 - 7962 - 1 - - - 10956 - 10957 - 1 - - - 22060 - 22061 - 1 - - - 30564 - 30565 - 1 - - - 62355 - 62356 - 1 - - - 67865 - 67866 - 1 - - - 102289 - 102290 - 1 - - - 158986 - 158987 - 1 - - - 281648 - 281649 - 1 - - - 350777 - 350778 - 1 - - - 543204 - 543205 - 1 - - - 750840 - 750841 - 1 - - - 1756569 - 1756570 - 1 - - - - - - - kind - value - - - 12 - - - 1 - 2 - 8 - - - 2 - 3 - 1 - - - 13 - 14 - 1 - - - 100 - 101 - 1 - - - 207 - 208 - 1 - - - 303 - 304 - 1 - - - 616 - 617 - 1 - - - 2655 - 2656 - 1 - - - 3328 - 3329 - 1 - - - - - - - value - id - - - 12 - - - 1 - 3 - 619 - - - 3 - 13 - 575 - - - 13 - 29 - 422 - - - 29 - 38 - 546 - - - 38 - 56 - 638 - - - 56 - 77 - 597 - - - 77 - 116 - 541 - - - 116 - 149 - 543 - - - 149 - 156 - 481 - - - 156 - 199 - 544 - - - 202 - 312 - 540 - - - 312 - 416 - 543 - - - 416 - 1685 - 543 - - - 1697 - 354482 - 100 - - - - - - - value - kind - - - 12 - - - 1 - 2 - 7232 - - - - - - - - - dbscheme_union_decl_child - 276677 - - - dbscheme_union_decl - 67798 - - - index - 105 - - - child - 276677 - - - - - dbscheme_union_decl - index - - - 12 - - - 1 - 2 - 2870 - - - 2 - 3 - 33104 - - - 3 - 4 - 10107 - - - 4 - 5 - 6309 - - - 5 - 6 - 4592 - - - 6 - 9 - 5609 - - - 9 - 69 - 5085 - - - 85 - 106 - 122 - - - - - - - dbscheme_union_decl - child - - - 12 - - - 1 - 2 - 2870 - - - 2 - 3 - 33104 - - - 3 - 4 - 10107 - - - 4 - 5 - 6309 - - - 5 - 6 - 4592 - - - 6 - 9 - 5609 - - - 9 - 69 - 5085 - - - 85 - 106 - 122 - - - - - - - index - dbscheme_union_decl - - - 12 - - - 11 - 44 - 7 - - - 45 - 46 - 11 - - - 59 - 103 - 2 - - - 122 - 123 - 17 - - - 123 - 124 - 6 - - - 126 - 166 - 8 - - - 173 - 319 - 6 - - - 327 - 328 - 8 - - - 328 - 544 - 8 - - - 647 - 671 - 8 - - - 699 - 1414 - 8 - - - 1501 - 5208 - 8 - - - 6334 - 67799 - 8 - - - - - - - index - child - - - 12 - - - 11 - 44 - 7 - - - 45 - 46 - 11 - - - 59 - 103 - 2 - - - 122 - 123 - 17 - - - 123 - 124 - 6 - - - 126 - 166 - 8 - - - 173 - 319 - 6 - - - 327 - 328 - 8 - - - 328 - 544 - 8 - - - 647 - 671 - 8 - - - 699 - 1414 - 8 - - - 1501 - 5208 - 8 - - - 6334 - 67799 - 8 - - - - - - - child - dbscheme_union_decl - - - 12 - - - 1 - 2 - 276677 - - - - - - - child - index - - - 12 - - - 1 - 2 - 276677 - - - - - - - - - dbscheme_union_decl_def - 67798 - - - id - 67798 - - - base - 67798 - - - - - id - base - - - 12 - - - 1 - 2 - 67798 - - - - - - - base - id - - - 12 - - - 1 - 2 - 67798 - - - - - - - - - diagnostics - 5 - - - id - 5 - - - severity - 1 - - - error_tag - 1 - - - error_message - 2 - - - full_error_message - 5 - - - location - 5 - - - - - id - severity - - - 12 - - - 1 - 2 - 5 - - - - - - - id - error_tag - - - 12 - - - 1 - 2 - 5 - - - - - - - id - error_message - - - 12 - - - 1 - 2 - 5 - - - - - - - id - full_error_message - - - 12 - - - 1 - 2 - 5 - - - - - - - id - location - - - 12 - - - 1 - 2 - 5 - - - - - - - severity - id - - - 12 - - - 5 - 6 - 1 - - - - - - - severity - error_tag - - - 12 - - - 1 - 2 - 1 - - - - - - - severity - error_message - - - 12 - - - 2 - 3 - 1 - - - - - - - severity - full_error_message - - - 12 - - - 5 - 6 - 1 - - - - - - - severity - location - - - 12 - - - 5 - 6 - 1 - - - - - - - error_tag - id - - - 12 - - - 5 - 6 - 1 - - - - - - - error_tag - severity - - - 12 - - - 1 - 2 - 1 - - - - - - - error_tag - error_message - - - 12 - - - 2 - 3 - 1 - - - - - - - error_tag - full_error_message - - - 12 - - - 5 - 6 - 1 - - - - - - - error_tag - location - - - 12 - - - 5 - 6 - 1 - - - - - - - error_message - id - - - 12 - - - 1 - 2 - 1 - - - 4 - 5 - 1 - - - - - - - error_message - severity - - - 12 - - - 1 - 2 - 2 - - - - - - - error_message - error_tag - - - 12 - - - 1 - 2 - 2 - - - - - - - error_message - full_error_message - - - 12 - - - 1 - 2 - 1 - - - 4 - 5 - 1 - - - - - - - error_message - location - - - 12 - - - 1 - 2 - 1 - - - 4 - 5 - 1 - - - - - - - full_error_message - id - - - 12 - - - 1 - 2 - 5 - - - - - - - full_error_message - severity - - - 12 - - - 1 - 2 - 5 - - - - - - - full_error_message - error_tag - - - 12 - - - 1 - 2 - 5 - - - - - - - full_error_message - error_message - - - 12 - - - 1 - 2 - 5 - - - - - - - full_error_message - location - - - 12 - - - 1 - 2 - 5 - - - - - - - location - id - - - 12 - - - 1 - 2 - 5 - - - - - - - location - severity - - - 12 - - - 1 - 2 - 5 - - - - - - - location - error_tag - - - 12 - - - 1 - 2 - 5 - - - - - - - location - error_message - - - 12 - - - 1 - 2 - 5 - - - - - - - location - full_error_message - - - 12 - - - 1 - 2 - 5 - - - - - - - - - files - 12283 - - - id - 12283 - - - name - 12283 - - - - - id - name - - - 12 - - - 1 - 2 - 12283 - - - - - - - name - id - - - 12 - - - 1 - 2 - 12283 - - - - - - - - - folders - 4402 - - - id - 4402 - - - name - 4402 - - - - - id - name - - - 12 - - - 1 - 2 - 4402 - - - - - - - name - id - - - 12 - - - 1 - 2 - 4402 - - - - - - - - - json_array_child - 5897 - - - json_array - 1962 - - - index - 611 - - - child - 5897 - - - - - json_array - index - - - 12 - - - 1 - 2 - 935 - - - 2 - 3 - 623 - - - 3 - 4 - 179 - - - 4 - 7 - 149 - - - 7 - 612 - 76 - - - - - - - json_array - child - - - 12 - - - 1 - 2 - 935 - - - 2 - 3 - 623 - - - 3 - 4 - 179 - - - 4 - 7 - 149 - - - 7 - 612 - 76 - - - - - - - index - json_array - - - 12 - - - 1 - 2 - 364 - - - 2 - 3 - 26 - - - 3 - 4 - 58 - - - 4 - 5 - 61 - - - 5 - 8 - 48 - - - 8 - 61 - 46 - - - 69 - 1963 - 8 - - - - - - - index - child - - - 12 - - - 1 - 2 - 364 - - - 2 - 3 - 26 - - - 3 - 4 - 58 - - - 4 - 5 - 61 - - - 5 - 8 - 48 - - - 8 - 61 - 46 - - - 69 - 1963 - 8 - - - - - - - child - json_array - - - 12 - - - 1 - 2 - 5897 - - - - - - - child - index - - - 12 - - - 1 - 2 - 5897 - - - - - - - - - json_array_def - 2026 - - - id - 2026 - - - - - - json_ast_node_location - 148630 - - - node - 148630 - - - loc - 148504 - - - - - node - loc - - - 12 - - - 1 - 2 - 148630 - - - - - - - loc - node - - - 12 - - - 1 - 2 - 148378 - - - 2 - 3 - 126 - - - - - - - - - json_ast_node_parent - 148287 - - - node - 148287 - - - parent - 42018 - - - parent_index - 1223 - - - - - node - parent - - - 12 - - - 1 - 2 - 148287 - - - - - - - node - parent_index - - - 12 - - - 1 - 2 - 148287 - - - - - - - parent - node - - - 12 - - - 1 - 3 - 608 - - - 3 - 4 - 36317 - - - 4 - 6 - 3406 - - - 7 - 1224 - 1687 - - - - - - - parent - parent_index - - - 12 - - - 1 - 3 - 608 - - - 3 - 4 - 36317 - - - 4 - 6 - 3406 - - - 7 - 1224 - 1687 - - - - - - - parent_index - node - - - 12 - - - 1 - 2 - 728 - - - 2 - 3 - 52 - - - 3 - 4 - 116 - - - 4 - 6 - 54 - - - 6 - 7 - 68 - - - 7 - 12 - 96 - - - 12 - 213 - 92 - - - 226 - 42019 - 17 - - - - - - - parent_index - parent - - - 12 - - - 1 - 2 - 728 - - - 2 - 3 - 52 - - - 3 - 4 - 116 - - - 4 - 6 - 54 - - - 6 - 7 - 68 - - - 7 - 12 - 96 - - - 12 - 213 - 92 - - - 226 - 42019 - 17 - - - - - - - - - json_document_child - 321 - - - json_document - 321 - - - index - 1 - - - child - 321 - - - - - json_document - index - - - 12 - - - 1 - 2 - 321 - - - - - - - json_document - child - - - 12 - - - 1 - 2 - 321 - - - - - - - index - json_document - - - 12 - - - 321 - 322 - 1 - - - - - - - index - child - - - 12 - - - 321 - 322 - 1 - - - - - - - child - json_document - - - 12 - - - 1 - 2 - 321 - - - - - - - child - index - - - 12 - - - 1 - 2 - 321 - - - - - - - - - json_document_def - 324 - - - id - 324 - - - - - - json_object_child - 12461 - - - json_object - 4817 - - - index - 159 - - - child - 12461 - - - - - json_object - index - - - 12 - - - 1 - 2 - 754 - - - 2 - 3 - 2780 - - - 3 - 4 - 781 - - - 4 - 11 - 445 - - - 11 - 160 - 57 - - - - - - - json_object - child - - - 12 - - - 1 - 2 - 754 - - - 2 - 3 - 2780 - - - 3 - 4 - 781 - - - 4 - 11 - 445 - - - 11 - 160 - 57 - - - - - - - index - json_object - - - 12 - - - 1 - 2 - 23 - - - 2 - 3 - 65 - - - 3 - 4 - 2 - - - 4 - 5 - 20 - - - 5 - 6 - 11 - - - 6 - 9 - 12 - - - 9 - 10 - 14 - - - 13 - 4818 - 12 - - - - - - - index - child - - - 12 - - - 1 - 2 - 23 - - - 2 - 3 - 65 - - - 3 - 4 - 2 - - - 4 - 5 - 20 - - - 5 - 6 - 11 - - - 6 - 9 - 12 - - - 9 - 10 - 14 - - - 13 - 4818 - 12 - - - - - - - child - json_object - - - 12 - - - 1 - 2 - 12461 - - - - - - - child - index - - - 12 - - - 1 - 2 - 12461 - - - - - - - - - json_object_def - 5034 - - - id - 5034 - - - - - - json_pair_def - 12461 - - - id - 12461 - - - key__ - 12461 - - - value - 12461 - - - - - id - key__ - - - 12 - - - 1 - 2 - 12461 - - - - - - - id - value - - - 12 - - - 1 - 2 - 12461 - - - - - - - key__ - id - - - 12 - - - 1 - 2 - 12461 - - - - - - - key__ - value - - - 12 - - - 1 - 2 - 12461 - - - - - - - value - id - - - 12 - - - 1 - 2 - 12461 - - - - - - - value - key__ - - - 12 - - - 1 - 2 - 12461 - - - - - - - - - json_string_child - 22171 - - - json_string__ - 22171 - - - child - 22171 - - - - - json_string__ - child - - - 12 - - - 1 - 2 - 22171 - - - - - - - child - json_string__ - - - 12 - - - 1 - 2 - 22171 - - - - - - - - - json_string_def - 22176 - - - id - 22176 - - - - - - json_tokeninfo - 106609 - - - id - 106609 - - - kind - 7 - - - value - 4324 - - - - - id - kind - - - 12 - - - 1 - 2 - 106609 - - - - - - - id - value - - - 12 - - - 1 - 2 - 106609 - - - - - - - kind - id - - - 12 - - - 19 - 20 - 1 - - - 71 - 72 - 1 - - - 248 - 249 - 1 - - - 607 - 608 - 1 - - - 978 - 979 - 1 - - - 22171 - 22172 - 1 - - - 82515 - 82516 - 1 - - - - - - - kind - value - - - 12 - - - 1 - 2 - 3 - - - 7 - 8 - 1 - - - 16 - 17 - 1 - - - 29 - 30 - 1 - - - 4277 - 4278 - 1 - - - - - - - value - id - - - 12 - - - 1 - 2 - 3160 - - - 2 - 3 - 406 - - - 3 - 5 - 365 - - - 5 - 62 - 326 - - - 71 - 44353 - 67 - - - - - - - value - kind - - - 12 - - - 1 - 2 - 4316 - - - 2 - 3 - 8 - - - - - - - - - locations_default - 9617371 - - - id - 9617371 - - - file - 12283 - - - beginLine - 11293 - - - beginColumn - 1385 - - - endLine - 11293 - - - endColumn - 1389 - - - - - id - file - - - 12 - - - 1 - 2 - 9617371 - - - - - - - id - beginLine - - - 12 - - - 1 - 2 - 9617371 - - - - - - - id - beginColumn - - - 12 - - - 1 - 2 - 9617371 - - - - - - - id - endLine - - - 12 - - - 1 - 2 - 9617371 - - - - - - - id - endColumn - - - 12 - - - 1 - 2 - 9617371 - - - - - - - file - id - - - 12 - - - 1 - 21 - 930 - - - 21 - 32 - 950 - - - 32 - 40 - 1024 - - - 40 - 54 - 930 - - - 54 - 72 - 952 - - - 72 - 89 - 965 - - - 89 - 119 - 929 - - - 119 - 164 - 934 - - - 164 - 243 - 923 - - - 243 - 392 - 923 - - - 392 - 748 - 923 - - - 748 - 2678 - 922 - - - 2683 - 9950 - 923 - - - 9962 - 54160 - 55 - - - - - - - file - beginLine - - - 12 - - - 1 - 3 - 434 - - - 3 - 4 - 775 - - - 4 - 5 - 1146 - - - 5 - 6 - 995 - - - 6 - 7 - 691 - - - 7 - 9 - 988 - - - 9 - 11 - 919 - - - 11 - 15 - 992 - - - 15 - 22 - 1018 - - - 22 - 34 - 975 - - - 34 - 61 - 935 - - - 61 - 143 - 922 - - - 143 - 975 - 923 - - - 977 - 11284 - 570 - - - - - - - file - beginColumn - - - 12 - - - 1 - 11 - 1028 - - - 11 - 17 - 920 - - - 17 - 21 - 913 - - - 21 - 26 - 1027 - - - 26 - 32 - 987 - - - 32 - 39 - 994 - - - 39 - 47 - 1014 - - - 47 - 57 - 1003 - - - 57 - 66 - 957 - - - 66 - 77 - 1001 - - - 77 - 87 - 934 - - - 87 - 99 - 1024 - - - 99 - 512 - 481 - - - - - - - file - endLine - - - 12 - - - 1 - 3 - 434 - - - 3 - 4 - 774 - - - 4 - 5 - 1147 - - - 5 - 6 - 995 - - - 6 - 7 - 690 - - - 7 - 9 - 989 - - - 9 - 11 - 919 - - - 11 - 15 - 992 - - - 15 - 22 - 1018 - - - 22 - 34 - 975 - - - 34 - 61 - 935 - - - 61 - 143 - 922 - - - 143 - 975 - 923 - - - 977 - 11284 - 570 - - - - - - - file - endColumn - - - 12 - - - 1 - 14 - 1008 - - - 14 - 21 - 1081 - - - 21 - 25 - 958 - - - 25 - 30 - 950 - - - 30 - 37 - 999 - - - 37 - 44 - 1031 - - - 44 - 52 - 923 - - - 52 - 62 - 946 - - - 62 - 73 - 1042 - - - 73 - 83 - 1006 - - - 83 - 93 - 934 - - - 93 - 104 - 945 - - - 104 - 523 - 460 - - - - - - - beginLine - id - - - 12 - - - 1 - 2 - 1130 - - - 4 - 5 - 1128 - - - 5 - 11 - 801 - - - 11 - 16 - 994 - - - 16 - 22 - 854 - - - 22 - 30 - 890 - - - 30 - 41 - 877 - - - 41 - 56 - 860 - - - 56 - 92 - 854 - - - 92 - 1472 - 847 - - - 1499 - 2520 - 847 - - - 2527 - 5340 - 847 - - - 5348 - 46386 - 364 - - - - - - - beginLine - file - - - 12 - - - 1 - 2 - 2258 - - - 2 - 3 - 654 - - - 3 - 4 - 1191 - - - 4 - 5 - 1015 - - - 5 - 6 - 658 - - - 6 - 7 - 532 - - - 7 - 8 - 712 - - - 8 - 10 - 1014 - - - 10 - 109 - 852 - - - 109 - 400 - 847 - - - 400 - 626 - 849 - - - 626 - 12065 - 711 - - - - - - - beginLine - beginColumn - - - 12 - - - 1 - 2 - 1130 - - - 3 - 4 - 1454 - - - 4 - 8 - 977 - - - 8 - 11 - 746 - - - 11 - 15 - 1029 - - - 15 - 20 - 966 - - - 20 - 27 - 942 - - - 27 - 37 - 854 - - - 37 - 57 - 853 - - - 57 - 84 - 882 - - - 84 - 101 - 895 - - - 101 - 397 - 565 - - - - - - - beginLine - endLine - - - 12 - - - 1 - 2 - 4809 - - - 2 - 3 - 1797 - - - 3 - 4 - 961 - - - 4 - 6 - 940 - - - 6 - 10 - 986 - - - 10 - 16 - 862 - - - 16 - 45 - 848 - - - 45 - 5676 - 90 - - - - - - - beginLine - endColumn - - - 12 - - - 1 - 2 - 1130 - - - 3 - 4 - 1128 - - - 4 - 8 - 710 - - - 8 - 10 - 808 - - - 10 - 14 - 1024 - - - 14 - 19 - 1007 - - - 19 - 26 - 963 - - - 26 - 34 - 848 - - - 34 - 49 - 857 - - - 49 - 77 - 860 - - - 77 - 97 - 895 - - - 97 - 118 - 857 - - - 118 - 400 - 206 - - - - - - - beginColumn - id - - - 12 - - - 1 - 4 - 102 - - - 4 - 5 - 121 - - - 5 - 8 - 65 - - - 8 - 9 - 122 - - - 9 - 11 - 110 - - - 11 - 12 - 73 - - - 12 - 13 - 114 - - - 13 - 18 - 106 - - - 18 - 21 - 115 - - - 21 - 32 - 118 - - - 32 - 61 - 104 - - - 61 - 255 - 104 - - - 261 - 113805 - 104 - - - 114086 - 1069778 - 27 - - - - - - - beginColumn - file - - - 12 - - - 1 - 3 - 118 - - - 3 - 4 - 13 - - - 4 - 5 - 119 - - - 5 - 8 - 75 - - - 8 - 9 - 119 - - - 9 - 11 - 105 - - - 11 - 12 - 73 - - - 12 - 13 - 111 - - - 13 - 19 - 122 - - - 19 - 22 - 111 - - - 22 - 33 - 108 - - - 33 - 66 - 107 - - - 68 - 683 - 104 - - - 732 - 12283 - 100 - - - - - - - beginColumn - beginLine - - - 12 - - - 1 - 2 - 223 - - - 2 - 3 - 307 - - - 3 - 4 - 135 - - - 4 - 5 - 140 - - - 5 - 6 - 78 - - - 6 - 8 - 101 - - - 8 - 13 - 120 - - - 13 - 32 - 104 - - - 32 - 2144 - 104 - - - 2186 - 11292 - 73 - - - - - - - beginColumn - endLine - - - 12 - - - 1 - 2 - 223 - - - 2 - 3 - 307 - - - 3 - 4 - 135 - - - 4 - 5 - 140 - - - 5 - 6 - 78 - - - 6 - 8 - 100 - - - 8 - 13 - 121 - - - 13 - 32 - 104 - - - 32 - 2158 - 104 - - - 2226 - 11292 - 73 - - - - - - - beginColumn - endColumn - - - 12 - - - 1 - 2 - 689 - - - 2 - 3 - 323 - - - 3 - 4 - 118 - - - 4 - 7 - 117 - - - 7 - 88 - 104 - - - 88 - 266 - 34 - - - - - - - endLine - id - - - 12 - - - 1 - 2 - 1129 - - - 4 - 5 - 1 - - - 5 - 6 - 1128 - - - 6 - 12 - 762 - - - 12 - 17 - 961 - - - 17 - 23 - 922 - - - 23 - 31 - 919 - - - 31 - 43 - 899 - - - 43 - 58 - 879 - - - 58 - 100 - 855 - - - 100 - 1721 - 847 - - - 1722 - 2799 - 847 - - - 2805 - 6136 - 847 - - - 6136 - 46393 - 297 - - - - - - - endLine - file - - - 12 - - - 1 - 2 - 2258 - - - 2 - 3 - 654 - - - 3 - 4 - 1191 - - - 4 - 5 - 1017 - - - 5 - 6 - 652 - - - 6 - 7 - 522 - - - 7 - 8 - 735 - - - 8 - 10 - 1005 - - - 10 - 109 - 850 - - - 109 - 400 - 850 - - - 400 - 626 - 849 - - - 626 - 6687 - 710 - - - - - - - endLine - beginLine - - - 12 - - - 1 - 2 - 1130 - - - 2 - 3 - 3437 - - - 3 - 4 - 1709 - - - 4 - 5 - 1095 - - - 5 - 6 - 700 - - - 6 - 9 - 918 - - - 9 - 14 - 918 - - - 14 - 25 - 868 - - - 25 - 60 - 518 - - - - - - - endLine - beginColumn - - - 12 - - - 1 - 2 - 1129 - - - 2 - 3 - 1 - - - 3 - 4 - 1454 - - - 4 - 8 - 926 - - - 8 - 11 - 708 - - - 11 - 15 - 1045 - - - 15 - 20 - 968 - - - 20 - 27 - 954 - - - 27 - 37 - 880 - - - 37 - 57 - 867 - - - 57 - 84 - 872 - - - 84 - 100 - 847 - - - 100 - 397 - 642 - - - - - - - endLine - endColumn - - - 12 - - - 1 - 2 - 1129 - - - 2 - 3 - 1 - - - 3 - 4 - 1128 - - - 4 - 8 - 718 - - - 8 - 10 - 801 - - - 10 - 13 - 814 - - - 13 - 17 - 919 - - - 17 - 23 - 965 - - - 23 - 31 - 959 - - - 31 - 44 - 879 - - - 44 - 70 - 851 - - - 70 - 93 - 878 - - - 93 - 109 - 849 - - - 109 - 400 - 402 - - - - - - - endColumn - id - - - 12 - - - 1 - 4 - 95 - - - 4 - 5 - 120 - - - 5 - 8 - 64 - - - 8 - 9 - 120 - - - 9 - 11 - 105 - - - 11 - 12 - 76 - - - 12 - 13 - 113 - - - 13 - 18 - 109 - - - 18 - 21 - 111 - - - 21 - 31 - 106 - - - 31 - 55 - 106 - - - 55 - 191 - 105 - - - 192 - 56899 - 105 - - - 58047 - 407640 - 54 - - - - - - - endColumn - file - - - 12 - - - 1 - 3 - 110 - - - 3 - 4 - 15 - - - 4 - 5 - 119 - - - 5 - 8 - 74 - - - 8 - 9 - 116 - - - 9 - 11 - 104 - - - 11 - 12 - 73 - - - 12 - 13 - 114 - - - 13 - 19 - 126 - - - 19 - 23 - 115 - - - 23 - 34 - 114 - - - 34 - 72 - 105 - - - 72 - 1551 - 105 - - - 1727 - 11266 - 99 - - - - - - - endColumn - beginLine - - - 12 - - - 1 - 2 - 219 - - - 2 - 3 - 306 - - - 3 - 4 - 134 - - - 4 - 5 - 142 - - - 5 - 6 - 74 - - - 6 - 8 - 103 - - - 8 - 13 - 120 - - - 13 - 33 - 108 - - - 33 - 2296 - 105 - - - 2325 - 10163 - 78 - - - - - - - endColumn - beginColumn - - - 12 - - - 1 - 2 - 676 - - - 2 - 3 - 276 - - - 3 - 4 - 124 - - - 4 - 7 - 112 - - - 7 - 36 - 105 - - - 36 - 105 - 96 - - - - - - - endColumn - endLine - - - 12 - - - 1 - 2 - 219 - - - 2 - 3 - 306 - - - 3 - 4 - 134 - - - 4 - 5 - 142 - - - 5 - 6 - 74 - - - 6 - 8 - 103 - - - 8 - 13 - 121 - - - 13 - 33 - 107 - - - 33 - 2249 - 105 - - - 2292 - 10163 - 78 - - - - - - - - - ql_add_expr_def - 13786 - - - id - 13786 - - - left - 13786 - - - right - 13786 - - - child - 13786 - - - - - id - left - - - 12 - - - 1 - 2 - 13786 - - - - - - - id - right - - - 12 - - - 1 - 2 - 13786 - - - - - - - id - child - - - 12 - - - 1 - 2 - 13786 - - - - - - - left - id - - - 12 - - - 1 - 2 - 13786 - - - - - - - left - right - - - 12 - - - 1 - 2 - 13786 - - - - - - - left - child - - - 12 - - - 1 - 2 - 13786 - - - - - - - right - id - - - 12 - - - 1 - 2 - 13786 - - - - - - - right - left - - - 12 - - - 1 - 2 - 13786 - - - - - - - right - child - - - 12 - - - 1 - 2 - 13786 - - - - - - - child - id - - - 12 - - - 1 - 2 - 13786 - - - - - - - child - left - - - 12 - - - 1 - 2 - 13786 - - - - - - - child - right - - - 12 - - - 1 - 2 - 13786 - - - - - - - - - ql_aggregate_child - 16852 - - - ql_aggregate - 9053 - - - index - 3 - - - child - 16852 - - - - - ql_aggregate - index - - - 12 - - - 1 - 2 - 1481 - - - 2 - 3 - 7345 - - - 3 - 4 - 227 - - - - - - - ql_aggregate - child - - - 12 - - - 1 - 2 - 1481 - - - 2 - 3 - 7345 - - - 3 - 4 - 227 - - - - - - - index - ql_aggregate - - - 12 - - - 227 - 228 - 1 - - - 7572 - 7573 - 1 - - - 9053 - 9054 - 1 - - - - - - - index - child - - - 12 - - - 227 - 228 - 1 - - - 7572 - 7573 - 1 - - - 9053 - 9054 - 1 - - - - - - - child - ql_aggregate - - - 12 - - - 1 - 2 - 16852 - - - - - - - child - index - - - 12 - - - 1 - 2 - 16852 - - - - - - - - - ql_aggregate_def - 9053 - - - id - 9053 - - - - - - ql_annot_arg_def - 4043 - - - id - 4043 - - - child - 4043 - - - - - id - child - - - 12 - - - 1 - 2 - 4043 - - - - - - - child - id - - - 12 - - - 1 - 2 - 4043 - - - - - - - - - ql_annotation_args - 4365 - - - ql_annotation - 3721 - - - index - 9 - - - args - 4365 - - - - - ql_annotation - index - - - 12 - - - 1 - 2 - 3448 - - - 3 - 10 - 273 - - - - - - - ql_annotation - args - - - 12 - - - 1 - 2 - 3448 - - - 3 - 10 - 273 - - - - - - - index - ql_annotation - - - 12 - - - 1 - 2 - 2 - - - 15 - 16 - 2 - - - 33 - 34 - 2 - - - 273 - 274 - 2 - - - 3721 - 3722 - 1 - - - - - - - index - args - - - 12 - - - 1 - 2 - 2 - - - 15 - 16 - 2 - - - 33 - 34 - 2 - - - 273 - 274 - 2 - - - 3721 - 3722 - 1 - - - - - - - args - ql_annotation - - - 12 - - - 1 - 2 - 4365 - - - - - - - args - index - - - 12 - - - 1 - 2 - 4365 - - - - - - - - - ql_annotation_def - 65278 - - - id - 65278 - - - name - 65278 - - - - - id - name - - - 12 - - - 1 - 2 - 65278 - - - - - - - name - id - - - 12 - - - 1 - 2 - 65278 - - - - - - - - - ql_arityless_predicate_expr_def - 58107 - - - id - 58107 - - - name - 58107 - - - - - id - name - - - 12 - - - 1 - 2 - 58107 - - - - - - - name - id - - - 12 - - - 1 - 2 - 58107 - - - - - - - - - ql_arityless_predicate_expr_qualifier - 10163 - - - ql_arityless_predicate_expr - 10163 - - - qualifier - 10163 - - - - - ql_arityless_predicate_expr - qualifier - - - 12 - - - 1 - 2 - 10163 - - - - - - - qualifier - ql_arityless_predicate_expr - - - 12 - - - 1 - 2 - 10163 - - - - - - - - - ql_as_expr_child - 20772 - - - ql_as_expr - 20508 - - - index - 2 - - - child - 20772 - - - - - ql_as_expr - index - - - 12 - - - 1 - 2 - 20244 - - - 2 - 3 - 264 - - - - - - - ql_as_expr - child - - - 12 - - - 1 - 2 - 20244 - - - 2 - 3 - 264 - - - - - - - index - ql_as_expr - - - 12 - - - 264 - 265 - 1 - - - 20508 - 20509 - 1 - - - - - - - index - child - - - 12 - - - 264 - 265 - 1 - - - 20508 - 20509 - 1 - - - - - - - child - ql_as_expr - - - 12 - - - 1 - 2 - 20772 - - - - - - - child - index - - - 12 - - - 1 - 2 - 20772 - - - - - - - - - ql_as_expr_def - 20508 - - - id - 20508 - - - - - - ql_as_exprs_child - 20508 - - - ql_as_exprs - 8493 - - - index - 35 - - - child - 20508 - - - - - ql_as_exprs - index - - - 12 - - - 1 - 2 - 2998 - - - 2 - 3 - 3100 - - - 3 - 4 - 714 - - - 4 - 5 - 739 - - - 5 - 7 - 714 - - - 7 - 36 - 228 - - - - - - - ql_as_exprs - child - - - 12 - - - 1 - 2 - 2998 - - - 2 - 3 - 3100 - - - 3 - 4 - 714 - - - 4 - 5 - 739 - - - 5 - 7 - 714 - - - 7 - 36 - 228 - - - - - - - index - ql_as_exprs - - - 12 - - - 1 - 2 - 2 - - - 2 - 3 - 4 - - - 3 - 5 - 3 - - - 7 - 9 - 2 - - - 10 - 11 - 5 - - - 12 - 13 - 2 - - - 13 - 17 - 3 - - - 17 - 23 - 3 - - - 35 - 67 - 3 - - - 145 - 770 - 3 - - - 942 - 2396 - 3 - - - 5495 - 8494 - 2 - - - - - - - index - child - - - 12 - - - 1 - 2 - 2 - - - 2 - 3 - 4 - - - 3 - 5 - 3 - - - 7 - 9 - 2 - - - 10 - 11 - 5 - - - 12 - 13 - 2 - - - 13 - 17 - 3 - - - 17 - 23 - 3 - - - 35 - 67 - 3 - - - 145 - 770 - 3 - - - 942 - 2396 - 3 - - - 5495 - 8494 - 2 - - - - - - - child - ql_as_exprs - - - 12 - - - 1 - 2 - 20508 - - - - - - - child - index - - - 12 - - - 1 - 2 - 20508 - - - - - - - - - ql_as_exprs_def - 8493 - - - id - 8493 - - - - - - ql_ast_node_location - 6230328 - - - node - 6230328 - - - loc - 4563391 - - - - - node - loc - - - 12 - - - 1 - 2 - 6230328 - - - - - - - loc - node - - - 12 - - - 1 - 2 - 3246688 - - - 2 - 3 - 979956 - - - 3 - 6 - 336747 - - - - - - - - - ql_ast_node_parent - 6197281 - - - node - 6197281 - - - parent - 2947735 - - - parent_index - 2057 - - - - - node - parent - - - 12 - - - 1 - 2 - 6197281 - - - - - - - node - parent_index - - - 12 - - - 1 - 2 - 6197281 - - - - - - - parent - node - - - 12 - - - 1 - 2 - 1667033 - - - 2 - 3 - 276121 - - - 3 - 4 - 754976 - - - 4 - 11 - 228408 - - - 11 - 2058 - 21197 - - - - - - - parent - parent_index - - - 12 - - - 1 - 2 - 1667033 - - - 2 - 3 - 276121 - - - 3 - 4 - 754976 - - - 4 - 11 - 228408 - - - 11 - 2058 - 21197 - - - - - - - parent_index - node - - - 12 - - - 1 - 2 - 739 - - - 2 - 3 - 317 - - - 3 - 4 - 388 - - - 4 - 8 - 126 - - - 8 - 15 - 162 - - - 15 - 47 - 158 - - - 48 - 11121 - 155 - - - 16033 - 2947736 - 12 - - - - - - - parent_index - parent - - - 12 - - - 1 - 2 - 739 - - - 2 - 3 - 317 - - - 3 - 4 - 388 - - - 4 - 8 - 126 - - - 8 - 15 - 162 - - - 15 - 47 - 158 - - - 48 - 11121 - 155 - - - 16033 - 2947736 - 12 - - - - - - - - - ql_body_def - 65826 - - - id - 65826 - - - child - 65826 - - - - - id - child - - - 12 - - - 1 - 2 - 65826 - - - - - - - child - id - - - 12 - - - 1 - 2 - 65826 - - - - - - - - - ql_bool_def - 4274 - - - id - 4274 - - - child - 4274 - - - - - id - child - - - 12 - - - 1 - 2 - 4274 - - - - - - - child - id - - - 12 - - - 1 - 2 - 4274 - - - - - - - - - ql_call_body_child - 99620 - - - ql_call_body - 49469 - - - index - 15 - - - child - 99620 - - - - - ql_call_body - index - - - 12 - - - 1 - 2 - 23173 - - - 2 - 3 - 13151 - - - 3 - 4 - 7473 - - - 4 - 6 - 4432 - - - 6 - 16 - 1240 - - - - - - - ql_call_body - child - - - 12 - - - 1 - 2 - 23173 - - - 2 - 3 - 13151 - - - 3 - 4 - 7473 - - - 4 - 6 - 4432 - - - 6 - 16 - 1240 - - - - - - - index - ql_call_body - - - 12 - - - 2 - 3 - 1 - - - 4 - 5 - 1 - - - 10 - 11 - 1 - - - 17 - 18 - 1 - - - 46 - 47 - 1 - - - 103 - 104 - 1 - - - 237 - 238 - 1 - - - 342 - 343 - 1 - - - 559 - 560 - 1 - - - 1240 - 1241 - 1 - - - 2478 - 2479 - 1 - - - 5672 - 5673 - 1 - - - 13145 - 13146 - 1 - - - 26296 - 26297 - 1 - - - 49469 - 49470 - 1 - - - - - - - index - child - - - 12 - - - 2 - 3 - 1 - - - 4 - 5 - 1 - - - 10 - 11 - 1 - - - 17 - 18 - 1 - - - 46 - 47 - 1 - - - 103 - 104 - 1 - - - 237 - 238 - 1 - - - 342 - 343 - 1 - - - 559 - 560 - 1 - - - 1240 - 1241 - 1 - - - 2478 - 2479 - 1 - - - 5672 - 5673 - 1 - - - 13145 - 13146 - 1 - - - 26296 - 26297 - 1 - - - 49469 - 49470 - 1 - - - - - - - child - ql_call_body - - - 12 - - - 1 - 2 - 99620 - - - - - - - child - index - - - 12 - - - 1 - 2 - 99620 - - - - - - - - - ql_call_body_def - 57368 - - - id - 57368 - - - - - - ql_call_or_unqual_agg_expr_child - 115036 - - - ql_call_or_unqual_agg_expr - 57368 - - - index - 3 - - - child - 115036 - - - - - ql_call_or_unqual_agg_expr - index - - - 12 - - - 2 - 3 - 57068 - - - 3 - 4 - 300 - - - - - - - ql_call_or_unqual_agg_expr - child - - - 12 - - - 2 - 3 - 57068 - - - 3 - 4 - 300 - - - - - - - index - ql_call_or_unqual_agg_expr - - - 12 - - - 300 - 301 - 1 - - - 57368 - 57369 - 2 - - - - - - - index - child - - - 12 - - - 300 - 301 - 1 - - - 57368 - 57369 - 2 - - - - - - - child - ql_call_or_unqual_agg_expr - - - 12 - - - 1 - 2 - 115036 - - - - - - - child - index - - - 12 - - - 1 - 2 - 115036 - - - - - - - - - ql_call_or_unqual_agg_expr_def - 57368 - - - id - 57368 - - - - - - ql_charpred_def - 12088 - - - id - 12088 - - - body - 12088 - - - child - 12088 - - - - - id - body - - - 12 - - - 1 - 2 - 12088 - - - - - - - id - child - - - 12 - - - 1 - 2 - 12088 - - - - - - - body - id - - - 12 - - - 1 - 2 - 12088 - - - - - - - body - child - - - 12 - - - 1 - 2 - 12088 - - - - - - - child - id - - - 12 - - - 1 - 2 - 12088 - - - - - - - child - body - - - 12 - - - 1 - 2 - 12088 - - - - - - - - - ql_class_member_child - 112375 - - - ql_class_member - 79133 - - - index - 5 - - - child - 112375 - - - - - ql_class_member - index - - - 12 - - - 1 - 2 - 49462 - - - 2 - 3 - 26160 - - - 3 - 6 - 3511 - - - - - - - ql_class_member - child - - - 12 - - - 1 - 2 - 49462 - - - 2 - 3 - 26160 - - - 3 - 6 - 3511 - - - - - - - index - ql_class_member - - - 12 - - - 8 - 9 - 1 - - - 52 - 53 - 1 - - - 3511 - 3512 - 1 - - - 29671 - 29672 - 1 - - - 79133 - 79134 - 1 - - - - - - - index - child - - - 12 - - - 8 - 9 - 1 - - - 52 - 53 - 1 - - - 3511 - 3512 - 1 - - - 29671 - 29672 - 1 - - - 79133 - 79134 - 1 - - - - - - - child - ql_class_member - - - 12 - - - 1 - 2 - 112375 - - - - - - - child - index - - - 12 - - - 1 - 2 - 112375 - - - - - - - - - ql_class_member_def - 79133 - - - id - 79133 - - - - - - ql_classless_predicate_child - 63161 - - - ql_classless_predicate - 23253 - - - index - 16 - - - child - 63161 - - - - - ql_classless_predicate - index - - - 12 - - - 1 - 2 - 2872 - - - 2 - 3 - 9678 - - - 3 - 4 - 5651 - - - 4 - 5 - 2828 - - - 5 - 7 - 1868 - - - 7 - 17 - 356 - - - - - - - ql_classless_predicate - child - - - 12 - - - 1 - 2 - 2872 - - - 2 - 3 - 9678 - - - 3 - 4 - 5651 - - - 4 - 5 - 2828 - - - 5 - 7 - 1868 - - - 7 - 17 - 356 - - - - - - - index - ql_classless_predicate - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 1 - - - 5 - 6 - 1 - - - 9 - 10 - 1 - - - 22 - 23 - 1 - - - 37 - 38 - 1 - - - 63 - 64 - 1 - - - 103 - 104 - 1 - - - 177 - 178 - 1 - - - 356 - 357 - 1 - - - 773 - 774 - 1 - - - 2224 - 2225 - 1 - - - 5052 - 5053 - 1 - - - 10703 - 10704 - 1 - - - 20381 - 20382 - 1 - - - 23253 - 23254 - 1 - - - - - - - index - child - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 1 - - - 5 - 6 - 1 - - - 9 - 10 - 1 - - - 22 - 23 - 1 - - - 37 - 38 - 1 - - - 63 - 64 - 1 - - - 103 - 104 - 1 - - - 177 - 178 - 1 - - - 356 - 357 - 1 - - - 773 - 774 - 1 - - - 2224 - 2225 - 1 - - - 5052 - 5053 - 1 - - - 10703 - 10704 - 1 - - - 20381 - 20382 - 1 - - - 23253 - 23254 - 1 - - - - - - - child - ql_classless_predicate - - - 12 - - - 1 - 2 - 63161 - - - - - - - child - index - - - 12 - - - 1 - 2 - 63161 - - - - - - - - - ql_classless_predicate_def - 23253 - - - id - 23253 - - - name - 23253 - - - return_type - 23253 - - - - - id - name - - - 12 - - - 1 - 2 - 23253 - - - - - - - id - return_type - - - 12 - - - 1 - 2 - 23253 - - - - - - - name - id - - - 12 - - - 1 - 2 - 23253 - - - - - - - name - return_type - - - 12 - - - 1 - 2 - 23253 - - - - - - - return_type - id - - - 12 - - - 1 - 2 - 23253 - - - - - - - return_type - name - - - 12 - - - 1 - 2 - 23253 - - - - - - - - - ql_comp_term_def - 140334 - - - id - 140334 - - - left - 140334 - - - right - 140334 - - - child - 140334 - - - - - id - left - - - 12 - - - 1 - 2 - 140334 - - - - - - - id - right - - - 12 - - - 1 - 2 - 140334 - - - - - - - id - child - - - 12 - - - 1 - 2 - 140334 - - - - - - - left - id - - - 12 - - - 1 - 2 - 140334 - - - - - - - left - right - - - 12 - - - 1 - 2 - 140334 - - - - - - - left - child - - - 12 - - - 1 - 2 - 140334 - - - - - - - right - id - - - 12 - - - 1 - 2 - 140334 - - - - - - - right - left - - - 12 - - - 1 - 2 - 140334 - - - - - - - right - child - - - 12 - - - 1 - 2 - 140334 - - - - - - - child - id - - - 12 - - - 1 - 2 - 140334 - - - - - - - child - left - - - 12 - - - 1 - 2 - 140334 - - - - - - - child - right - - - 12 - - - 1 - 2 - 140334 - - - - - - - - - ql_conjunction_def - 76308 - - - id - 76308 - - - left - 76308 - - - right - 76308 - - - - - id - left - - - 12 - - - 1 - 2 - 76308 - - - - - - - id - right - - - 12 - - - 1 - 2 - 76308 - - - - - - - left - id - - - 12 - - - 1 - 2 - 76308 - - - - - - - left - right - - - 12 - - - 1 - 2 - 76308 - - - - - - - right - id - - - 12 - - - 1 - 2 - 76308 - - - - - - - right - left - - - 12 - - - 1 - 2 - 76308 - - - - - - - - - ql_dataclass_child - 80203 - - - ql_dataclass - 20603 - - - index - 160 - - - child - 80203 - - - - - ql_dataclass - index - - - 12 - - - 1 - 2 - 8138 - - - 2 - 3 - 3631 - - - 3 - 4 - 2206 - - - 4 - 5 - 1665 - - - 5 - 6 - 1187 - - - 6 - 9 - 1851 - - - 9 - 22 - 1562 - - - 22 - 161 - 363 - - - - - - - ql_dataclass - child - - - 12 - - - 1 - 2 - 8138 - - - 2 - 3 - 3631 - - - 3 - 4 - 2206 - - - 4 - 5 - 1665 - - - 5 - 6 - 1187 - - - 6 - 9 - 1851 - - - 9 - 22 - 1562 - - - 22 - 161 - 363 - - - - - - - index - ql_dataclass - - - 12 - - - 1 - 3 - 12 - - - 4 - 5 - 8 - - - 5 - 6 - 17 - - - 6 - 8 - 2 - - - 8 - 9 - 20 - - - 9 - 13 - 12 - - - 13 - 20 - 12 - - - 20 - 27 - 12 - - - 28 - 36 - 12 - - - 38 - 98 - 12 - - - 102 - 193 - 12 - - - 203 - 541 - 12 - - - 596 - 3777 - 12 - - - 4963 - 20604 - 5 - - - - - - - index - child - - - 12 - - - 1 - 3 - 12 - - - 4 - 5 - 8 - - - 5 - 6 - 17 - - - 6 - 8 - 2 - - - 8 - 9 - 20 - - - 9 - 13 - 12 - - - 13 - 20 - 12 - - - 20 - 27 - 12 - - - 28 - 36 - 12 - - - 38 - 98 - 12 - - - 102 - 193 - 12 - - - 203 - 541 - 12 - - - 596 - 3777 - 12 - - - 4963 - 20604 - 5 - - - - - - - child - ql_dataclass - - - 12 - - - 1 - 2 - 80203 - - - - - - - child - index - - - 12 - - - 1 - 2 - 80203 - - - - - - - - - ql_dataclass_def - 22563 - - - id - 22563 - - - name - 22563 - - - - - id - name - - - 12 - - - 1 - 2 - 22563 - - - - - - - name - id - - - 12 - - - 1 - 2 - 22563 - - - - - - - - - ql_dataclass_extends - 57708 - - - ql_dataclass - 21309 - - - index - 16 - - - extends - 57708 - - - - - ql_dataclass - index - - - 12 - - - 2 - 3 - 14280 - - - 4 - 5 - 6614 - - - 6 - 17 - 415 - - - - - - - ql_dataclass - extends - - - 12 - - - 2 - 3 - 14280 - - - 4 - 5 - 6614 - - - 6 - 17 - 415 - - - - - - - index - ql_dataclass - - - 12 - - - 1 - 2 - 2 - - - 3 - 4 - 2 - - - 6 - 7 - 2 - - - 15 - 16 - 2 - - - 76 - 77 - 2 - - - 415 - 416 - 2 - - - 7029 - 7030 - 2 - - - 21309 - 21310 - 2 - - - - - - - index - extends - - - 12 - - - 1 - 2 - 2 - - - 3 - 4 - 2 - - - 6 - 7 - 2 - - - 15 - 16 - 2 - - - 76 - 77 - 2 - - - 415 - 416 - 2 - - - 7029 - 7030 - 2 - - - 21309 - 21310 - 2 - - - - - - - extends - ql_dataclass - - - 12 - - - 1 - 2 - 57708 - - - - - - - extends - index - - - 12 - - - 1 - 2 - 57708 - - - - - - - - - ql_dataclass_instanceof - 1896 - - - ql_dataclass - 942 - - - index - 4 - - - instanceof - 1896 - - - - - ql_dataclass - index - - - 12 - - - 2 - 3 - 936 - - - 4 - 5 - 6 - - - - - - - ql_dataclass - instanceof - - - 12 - - - 2 - 3 - 936 - - - 4 - 5 - 6 - - - - - - - index - ql_dataclass - - - 12 - - - 6 - 7 - 2 - - - 942 - 943 - 2 - - - - - - - index - instanceof - - - 12 - - - 6 - 7 - 2 - - - 942 - 943 - 2 - - - - - - - instanceof - ql_dataclass - - - 12 - - - 1 - 2 - 1896 - - - - - - - instanceof - index - - - 12 - - - 1 - 2 - 1896 - - - - - - - - - ql_datatype_branch_child - 4787 - - - ql_datatype_branch - 1984 - - - index - 10 - - - child - 4787 - - - - - ql_datatype_branch - index - - - 12 - - - 1 - 2 - 517 - - - 2 - 3 - 600 - - - 3 - 4 - 563 - - - 4 - 5 - 180 - - - 5 - 11 - 124 - - - - - - - ql_datatype_branch - child - - - 12 - - - 1 - 2 - 517 - - - 2 - 3 - 600 - - - 3 - 4 - 563 - - - 4 - 5 - 180 - - - 5 - 11 - 124 - - - - - - - index - ql_datatype_branch - - - 12 - - - 2 - 3 - 3 - - - 8 - 9 - 1 - - - 27 - 28 - 1 - - - 124 - 125 - 1 - - - 304 - 305 - 1 - - - 867 - 868 - 1 - - - 1467 - 1468 - 1 - - - 1984 - 1985 - 1 - - - - - - - index - child - - - 12 - - - 2 - 3 - 3 - - - 8 - 9 - 1 - - - 27 - 28 - 1 - - - 124 - 125 - 1 - - - 304 - 305 - 1 - - - 867 - 868 - 1 - - - 1467 - 1468 - 1 - - - 1984 - 1985 - 1 - - - - - - - child - ql_datatype_branch - - - 12 - - - 1 - 2 - 4787 - - - - - - - child - index - - - 12 - - - 1 - 2 - 4787 - - - - - - - - - ql_datatype_branch_def - 2719 - - - id - 2719 - - - name - 2719 - - - - - id - name - - - 12 - - - 1 - 2 - 2719 - - - - - - - name - id - - - 12 - - - 1 - 2 - 2719 - - - - - - - - - ql_datatype_branches_child - 2719 - - - ql_datatype_branches - 548 - - - index - 246 - - - child - 2719 - - - - - ql_datatype_branches - index - - - 12 - - - 1 - 2 - 132 - - - 2 - 3 - 182 - - - 3 - 4 - 81 - - - 4 - 6 - 49 - - - 6 - 9 - 43 - - - 9 - 15 - 42 - - - 15 - 247 - 19 - - - - - - - ql_datatype_branches - child - - - 12 - - - 1 - 2 - 132 - - - 2 - 3 - 182 - - - 3 - 4 - 81 - - - 4 - 6 - 49 - - - 6 - 9 - 43 - - - 9 - 15 - 42 - - - 15 - 247 - 19 - - - - - - - index - ql_datatype_branches - - - 12 - - - 1 - 2 - 51 - - - 2 - 3 - 111 - - - 3 - 4 - 1 - - - 4 - 5 - 32 - - - 5 - 11 - 18 - - - 11 - 20 - 19 - - - 21 - 549 - 14 - - - - - - - index - child - - - 12 - - - 1 - 2 - 51 - - - 2 - 3 - 111 - - - 3 - 4 - 1 - - - 4 - 5 - 32 - - - 5 - 11 - 18 - - - 11 - 20 - 19 - - - 21 - 549 - 14 - - - - - - - child - ql_datatype_branches - - - 12 - - - 1 - 2 - 2719 - - - - - - - child - index - - - 12 - - - 1 - 2 - 2719 - - - - - - - - - ql_datatype_branches_def - 548 - - - id - 548 - - - - - - ql_datatype_def - 548 - - - id - 548 - - - name - 548 - - - child - 548 - - - - - id - name - - - 12 - - - 1 - 2 - 548 - - - - - - - id - child - - - 12 - - - 1 - 2 - 548 - - - - - - - name - id - - - 12 - - - 1 - 2 - 548 - - - - - - - name - child - - - 12 - - - 1 - 2 - 548 - - - - - - - child - id - - - 12 - - - 1 - 2 - 548 - - - - - - - child - name - - - 12 - - - 1 - 2 - 548 - - - - - - - - - ql_disjunction_def - 44890 - - - id - 44890 - - - left - 44890 - - - right - 44890 - - - - - id - left - - - 12 - - - 1 - 2 - 44890 - - - - - - - id - right - - - 12 - - - 1 - 2 - 44890 - - - - - - - left - id - - - 12 - - - 1 - 2 - 44890 - - - - - - - left - right - - - 12 - - - 1 - 2 - 44890 - - - - - - - right - id - - - 12 - - - 1 - 2 - 44890 - - - - - - - right - left - - - 12 - - - 1 - 2 - 44890 - - - - - - - - - ql_expr_aggregate_body_def - 1216 - - - id - 1216 - - - as_exprs - 1216 - - - - - id - as_exprs - - - 12 - - - 1 - 2 - 1216 - - - - - - - as_exprs - id - - - 12 - - - 1 - 2 - 1216 - - - - - - - - - ql_expr_aggregate_body_order_bys - 11 - - - ql_expr_aggregate_body - 11 - - - order_bys - 11 - - - - - ql_expr_aggregate_body - order_bys - - - 12 - - - 1 - 2 - 11 - - - - - - - order_bys - ql_expr_aggregate_body - - - 12 - - - 1 - 2 - 11 - - - - - - - - - ql_expr_annotation_def - 601 - - - id - 601 - - - annot_arg - 601 - - - name - 601 - - - child - 601 - - - - - id - annot_arg - - - 12 - - - 1 - 2 - 601 - - - - - - - id - name - - - 12 - - - 1 - 2 - 601 - - - - - - - id - child - - - 12 - - - 1 - 2 - 601 - - - - - - - annot_arg - id - - - 12 - - - 1 - 2 - 601 - - - - - - - annot_arg - name - - - 12 - - - 1 - 2 - 601 - - - - - - - annot_arg - child - - - 12 - - - 1 - 2 - 601 - - - - - - - name - id - - - 12 - - - 1 - 2 - 601 - - - - - - - name - annot_arg - - - 12 - - - 1 - 2 - 601 - - - - - - - name - child - - - 12 - - - 1 - 2 - 601 - - - - - - - child - id - - - 12 - - - 1 - 2 - 601 - - - - - - - child - annot_arg - - - 12 - - - 1 - 2 - 601 - - - - - - - child - name - - - 12 - - - 1 - 2 - 601 - - - - - - - - - ql_field_def - 3721 - - - id - 3721 - - - child - 3721 - - - - - id - child - - - 12 - - - 1 - 2 - 3721 - - - - - - - child - id - - - 12 - - - 1 - 2 - 3721 - - - - - - - - - ql_full_aggregate_body_as_exprs - 1288 - - - ql_full_aggregate_body - 1288 - - - as_exprs - 1288 - - - - - ql_full_aggregate_body - as_exprs - - - 12 - - - 1 - 2 - 1288 - - - - - - - as_exprs - ql_full_aggregate_body - - - 12 - - - 1 - 2 - 1288 - - - - - - - - - ql_full_aggregate_body_child - 7058 - - - ql_full_aggregate_body - 6301 - - - index - 9 - - - child - 7058 - - - - - ql_full_aggregate_body - index - - - 12 - - - 1 - 2 - 5788 - - - 2 - 5 - 480 - - - 5 - 10 - 33 - - - - - - - ql_full_aggregate_body - child - - - 12 - - - 1 - 2 - 5788 - - - 2 - 5 - 480 - - - 5 - 10 - 33 - - - - - - - index - ql_full_aggregate_body - - - 12 - - - 4 - 5 - 1 - - - 13 - 14 - 1 - - - 14 - 15 - 1 - - - 18 - 19 - 1 - - - 33 - 34 - 1 - - - 51 - 52 - 1 - - - 111 - 112 - 1 - - - 513 - 514 - 1 - - - 6301 - 6302 - 1 - - - - - - - index - child - - - 12 - - - 4 - 5 - 1 - - - 13 - 14 - 1 - - - 14 - 15 - 1 - - - 18 - 19 - 1 - - - 33 - 34 - 1 - - - 51 - 52 - 1 - - - 111 - 112 - 1 - - - 513 - 514 - 1 - - - 6301 - 6302 - 1 - - - - - - - child - ql_full_aggregate_body - - - 12 - - - 1 - 2 - 7058 - - - - - - - child - index - - - 12 - - - 1 - 2 - 7058 - - - - - - - - - ql_full_aggregate_body_def - 6356 - - - id - 6356 - - - - - - ql_full_aggregate_body_guard - 3549 - - - ql_full_aggregate_body - 3549 - - - guard - 3549 - - - - - ql_full_aggregate_body - guard - - - 12 - - - 1 - 2 - 3549 - - - - - - - guard - ql_full_aggregate_body - - - 12 - - - 1 - 2 - 3549 - - - - - - - - - ql_full_aggregate_body_order_bys - 429 - - - ql_full_aggregate_body - 429 - - - order_bys - 429 - - - - - ql_full_aggregate_body - order_bys - - - 12 - - - 1 - 2 - 429 - - - - - - - order_bys - ql_full_aggregate_body - - - 12 - - - 1 - 2 - 429 - - - - - - - - - ql_higher_order_term_child - 343 - - - ql_higher_order_term - 77 - - - index - 8 - - - child - 343 - - - - - ql_higher_order_term - index - - - 12 - - - 3 - 4 - 24 - - - 5 - 6 - 51 - - - 8 - 9 - 2 - - - - - - - ql_higher_order_term - child - - - 12 - - - 3 - 4 - 24 - - - 5 - 6 - 51 - - - 8 - 9 - 2 - - - - - - - index - ql_higher_order_term - - - 12 - - - 2 - 3 - 3 - - - 53 - 54 - 2 - - - 77 - 78 - 3 - - - - - - - index - child - - - 12 - - - 2 - 3 - 3 - - - 53 - 54 - 2 - - - 77 - 78 - 3 - - - - - - - child - ql_higher_order_term - - - 12 - - - 1 - 2 - 343 - - - - - - - child - index - - - 12 - - - 1 - 2 - 343 - - - - - - - - - ql_higher_order_term_def - 77 - - - id - 77 - - - name - 77 - - - - - id - name - - - 12 - - - 1 - 2 - 77 - - - - - - - name - id - - - 12 - - - 1 - 2 - 77 - - - - - - - - - ql_if_term_def - 2953 - - - id - 2953 - - - cond - 2953 - - - first - 2953 - - - second - 2953 - - - - - id - cond - - - 12 - - - 1 - 2 - 2953 - - - - - - - id - first - - - 12 - - - 1 - 2 - 2953 - - - - - - - id - second - - - 12 - - - 1 - 2 - 2953 - - - - - - - cond - id - - - 12 - - - 1 - 2 - 2953 - - - - - - - cond - first - - - 12 - - - 1 - 2 - 2953 - - - - - - - cond - second - - - 12 - - - 1 - 2 - 2953 - - - - - - - first - id - - - 12 - - - 1 - 2 - 2953 - - - - - - - first - cond - - - 12 - - - 1 - 2 - 2953 - - - - - - - first - second - - - 12 - - - 1 - 2 - 2953 - - - - - - - second - id - - - 12 - - - 1 - 2 - 2953 - - - - - - - second - cond - - - 12 - - - 1 - 2 - 2953 - - - - - - - second - first - - - 12 - - - 1 - 2 - 2953 - - - - - - - - - ql_implication_def - 101 - - - id - 101 - - - left - 101 - - - right - 101 - - - - - id - left - - - 12 - - - 1 - 2 - 101 - - - - - - - id - right - - - 12 - - - 1 - 2 - 101 - - - - - - - left - id - - - 12 - - - 1 - 2 - 101 - - - - - - - left - right - - - 12 - - - 1 - 2 - 101 - - - - - - - right - id - - - 12 - - - 1 - 2 - 101 - - - - - - - right - left - - - 12 - - - 1 - 2 - 101 - - - - - - - - - ql_import_directive_child - 27063 - - - ql_import_directive - 25764 - - - index - 2 - - - child - 27063 - - - - - ql_import_directive - index - - - 12 - - - 1 - 2 - 24465 - - - 2 - 3 - 1299 - - - - - - - ql_import_directive - child - - - 12 - - - 1 - 2 - 24465 - - - 2 - 3 - 1299 - - - - - - - index - ql_import_directive - - - 12 - - - 1299 - 1300 - 1 - - - 25764 - 25765 - 1 - - - - - - - index - child - - - 12 - - - 1299 - 1300 - 1 - - - 25764 - 25765 - 1 - - - - - - - child - ql_import_directive - - - 12 - - - 1 - 2 - 27063 - - - - - - - child - index - - - 12 - - - 1 - 2 - 27063 - - - - - - - - - ql_import_directive_def - 25764 - - - id - 25764 - - - - - - ql_import_module_expr_def - 25764 - - - id - 25764 - - - child - 25764 - - - - - id - child - - - 12 - - - 1 - 2 - 25764 - - - - - - - child - id - - - 12 - - - 1 - 2 - 25764 - - - - - - - - - ql_import_module_expr_qual_name - 44946 - - - ql_import_module_expr - 13345 - - - index - 8 - - - qual_name - 44946 - - - - - ql_import_module_expr - index - - - 12 - - - 1 - 2 - 972 - - - 2 - 3 - 2220 - - - 3 - 4 - 3431 - - - 4 - 5 - 4933 - - - 5 - 6 - 1355 - - - 6 - 9 - 434 - - - - - - - ql_import_module_expr - qual_name - - - 12 - - - 1 - 2 - 972 - - - 2 - 3 - 2220 - - - 3 - 4 - 3431 - - - 4 - 5 - 4933 - - - 5 - 6 - 1355 - - - 6 - 9 - 434 - - - - - - - index - ql_import_module_expr - - - 12 - - - 25 - 26 - 1 - - - 105 - 106 - 1 - - - 434 - 435 - 1 - - - 1789 - 1790 - 1 - - - 6722 - 6723 - 1 - - - 10153 - 10154 - 1 - - - 12373 - 12374 - 1 - - - 13345 - 13346 - 1 - - - - - - - index - qual_name - - - 12 - - - 25 - 26 - 1 - - - 105 - 106 - 1 - - - 434 - 435 - 1 - - - 1789 - 1790 - 1 - - - 6722 - 6723 - 1 - - - 10153 - 10154 - 1 - - - 12373 - 12374 - 1 - - - 13345 - 13346 - 1 - - - - - - - qual_name - ql_import_module_expr - - - 12 - - - 1 - 2 - 44946 - - - - - - - qual_name - index - - - 12 - - - 1 - 2 - 44946 - - - - - - - - - ql_in_expr_def - 1037 - - - id - 1037 - - - left - 1037 - - - right - 1037 - - - - - id - left - - - 12 - - - 1 - 2 - 1037 - - - - - - - id - right - - - 12 - - - 1 - 2 - 1037 - - - - - - - left - id - - - 12 - - - 1 - 2 - 1037 - - - - - - - left - right - - - 12 - - - 1 - 2 - 1037 - - - - - - - right - id - - - 12 - - - 1 - 2 - 1037 - - - - - - - right - left - - - 12 - - - 1 - 2 - 1037 - - - - - - - - - ql_instance_of_child - 31826 - - - ql_instance_of - 15913 - - - index - 2 - - - child - 31826 - - - - - ql_instance_of - index - - - 12 - - - 2 - 3 - 15913 - - - - - - - ql_instance_of - child - - - 12 - - - 2 - 3 - 15913 - - - - - - - index - ql_instance_of - - - 12 - - - 15913 - 15914 - 2 - - - - - - - index - child - - - 12 - - - 15913 - 15914 - 2 - - - - - - - child - ql_instance_of - - - 12 - - - 1 - 2 - 31826 - - - - - - - child - index - - - 12 - - - 1 - 2 - 31826 - - - - - - - - - ql_instance_of_def - 15913 - - - id - 15913 - - - - - - ql_literal_def - 109390 - - - id - 109390 - - - child - 109390 - - - - - id - child - - - 12 - - - 1 - 2 - 109390 - - - - - - - child - id - - - 12 - - - 1 - 2 - 109390 - - - - - - - - - ql_member_predicate_child - 63378 - - - ql_member_predicate - 43952 - - - index - 12 - - - child - 63378 - - - - - ql_member_predicate - index - - - 12 - - - 1 - 2 - 32505 - - - 2 - 3 - 6417 - - - 3 - 4 - 3219 - - - 4 - 13 - 1811 - - - - - - - ql_member_predicate - child - - - 12 - - - 1 - 2 - 32505 - - - 2 - 3 - 6417 - - - 3 - 4 - 3219 - - - 4 - 13 - 1811 - - - - - - - index - ql_member_predicate - - - 12 - - - 2 - 3 - 1 - - - 3 - 4 - 1 - - - 5 - 6 - 1 - - - 6 - 7 - 1 - - - 9 - 10 - 1 - - - 39 - 40 - 1 - - - 420 - 421 - 1 - - - 654 - 655 - 1 - - - 1811 - 1812 - 1 - - - 5030 - 5031 - 1 - - - 11447 - 11448 - 1 - - - 43952 - 43953 - 1 - - - - - - - index - child - - - 12 - - - 2 - 3 - 1 - - - 3 - 4 - 1 - - - 5 - 6 - 1 - - - 6 - 7 - 1 - - - 9 - 10 - 1 - - - 39 - 40 - 1 - - - 420 - 421 - 1 - - - 654 - 655 - 1 - - - 1811 - 1812 - 1 - - - 5030 - 5031 - 1 - - - 11447 - 11448 - 1 - - - 43952 - 43953 - 1 - - - - - - - child - ql_member_predicate - - - 12 - - - 1 - 2 - 63378 - - - - - - - child - index - - - 12 - - - 1 - 2 - 63378 - - - - - - - - - ql_member_predicate_def - 43952 - - - id - 43952 - - - name - 43952 - - - return_type - 43952 - - - - - id - name - - - 12 - - - 1 - 2 - 43952 - - - - - - - id - return_type - - - 12 - - - 1 - 2 - 43952 - - - - - - - name - id - - - 12 - - - 1 - 2 - 43952 - - - - - - - name - return_type - - - 12 - - - 1 - 2 - 43952 - - - - - - - return_type - id - - - 12 - - - 1 - 2 - 43952 - - - - - - - return_type - name - - - 12 - - - 1 - 2 - 43952 - - - - - - - - - ql_module_alias_body_def - 917 - - - id - 917 - - - child - 917 - - - - - id - child - - - 12 - - - 1 - 2 - 917 - - - - - - - child - id - - - 12 - - - 1 - 2 - 917 - - - - - - - - - ql_module_child - 33181 - - - ql_module - 4556 - - - index - 1314 - - - child - 33181 - - - - - ql_module - index - - - 12 - - - 1 - 2 - 1138 - - - 2 - 3 - 1239 - - - 3 - 4 - 385 - - - 4 - 5 - 392 - - - 5 - 8 - 383 - - - 8 - 13 - 407 - - - 13 - 23 - 351 - - - 23 - 1315 - 261 - - - - - - - ql_module - child - - - 12 - - - 1 - 2 - 1138 - - - 2 - 3 - 1239 - - - 3 - 4 - 385 - - - 4 - 5 - 392 - - - 5 - 8 - 383 - - - 8 - 13 - 407 - - - 13 - 23 - 351 - - - 23 - 1315 - 261 - - - - - - - index - ql_module - - - 12 - - - 1 - 2 - 718 - - - 2 - 3 - 180 - - - 3 - 5 - 114 - - - 5 - 7 - 102 - - - 7 - 17 - 106 - - - 17 - 4557 - 94 - - - - - - - index - child - - - 12 - - - 1 - 2 - 718 - - - 2 - 3 - 180 - - - 3 - 5 - 114 - - - 5 - 7 - 102 - - - 7 - 17 - 106 - - - 17 - 4557 - 94 - - - - - - - child - ql_module - - - 12 - - - 1 - 2 - 33181 - - - - - - - child - index - - - 12 - - - 1 - 2 - 33181 - - - - - - - - - ql_module_def - 4567 - - - id - 4567 - - - name - 4567 - - - - - id - name - - - 12 - - - 1 - 2 - 4567 - - - - - - - name - id - - - 12 - - - 1 - 2 - 4567 - - - - - - - - - ql_module_expr_def - 76399 - - - id - 76399 - - - child - 76399 - - - - - id - child - - - 12 - - - 1 - 2 - 76399 - - - - - - - child - id - - - 12 - - - 1 - 2 - 76399 - - - - - - - - - ql_module_expr_name - 4773 - - - ql_module_expr - 4773 - - - name - 4773 - - - - - ql_module_expr - name - - - 12 - - - 1 - 2 - 4773 - - - - - - - name - ql_module_expr - - - 12 - - - 1 - 2 - 4773 - - - - - - - - - ql_module_implements - 1251 - - - ql_module - 1251 - - - index - 1 - - - implements - 1251 - - - - - ql_module - index - - - 12 - - - 1 - 2 - 1251 - - - - - - - ql_module - implements - - - 12 - - - 1 - 2 - 1251 - - - - - - - index - ql_module - - - 12 - - - 1251 - 1252 - 1 - - - - - - - index - implements - - - 12 - - - 1251 - 1252 - 1 - - - - - - - implements - ql_module - - - 12 - - - 1 - 2 - 1251 - - - - - - - implements - index - - - 12 - - - 1 - 2 - 1251 - - - - - - - - - ql_module_instantiation_child - 2192 - - - ql_module_instantiation - 1740 - - - index - 8 - - - child - 2192 - - - - - ql_module_instantiation - index - - - 12 - - - 1 - 2 - 1473 - - - 2 - 3 - 172 - - - 3 - 9 - 95 - - - - - - - ql_module_instantiation - child - - - 12 - - - 1 - 2 - 1473 - - - 2 - 3 - 172 - - - 3 - 9 - 95 - - - - - - - index - ql_module_instantiation - - - 12 - - - 3 - 4 - 2 - - - 8 - 9 - 1 - - - 20 - 21 - 1 - - - 56 - 57 - 1 - - - 95 - 96 - 1 - - - 267 - 268 - 1 - - - 1740 - 1741 - 1 - - - - - - - index - child - - - 12 - - - 3 - 4 - 2 - - - 8 - 9 - 1 - - - 20 - 21 - 1 - - - 56 - 57 - 1 - - - 95 - 96 - 1 - - - 267 - 268 - 1 - - - 1740 - 1741 - 1 - - - - - - - child - ql_module_instantiation - - - 12 - - - 1 - 2 - 2192 - - - - - - - child - index - - - 12 - - - 1 - 2 - 2192 - - - - - - - - - ql_module_instantiation_def - 1740 - - - id - 1740 - - - name - 1740 - - - - - id - name - - - 12 - - - 1 - 2 - 1740 - - - - - - - name - id - - - 12 - - - 1 - 2 - 1740 - - - - - - - - - ql_module_member_child - 150156 - - - ql_module_member - 118178 - - - index - 6 - - - child - 150156 - - - - - ql_module_member - index - - - 12 - - - 1 - 2 - 88793 - - - 2 - 3 - 26917 - - - 3 - 7 - 2468 - - - - - - - ql_module_member - child - - - 12 - - - 1 - 2 - 88793 - - - 2 - 3 - 26917 - - - 3 - 7 - 2468 - - - - - - - index - ql_module_member - - - 12 - - - 2 - 3 - 1 - - - 10 - 11 - 1 - - - 113 - 114 - 1 - - - 2468 - 2469 - 1 - - - 29385 - 29386 - 1 - - - 118178 - 118179 - 1 - - - - - - - index - child - - - 12 - - - 2 - 3 - 1 - - - 10 - 11 - 1 - - - 113 - 114 - 1 - - - 2468 - 2469 - 1 - - - 29385 - 29386 - 1 - - - 118178 - 118179 - 1 - - - - - - - child - ql_module_member - - - 12 - - - 1 - 2 - 150156 - - - - - - - child - index - - - 12 - - - 1 - 2 - 150156 - - - - - - - - - ql_module_member_def - 118178 - - - id - 118178 - - - - - - ql_module_name_def - 7606 - - - id - 7606 - - - child - 7606 - - - - - id - child - - - 12 - - - 1 - 2 - 7606 - - - - - - - child - id - - - 12 - - - 1 - 2 - 7606 - - - - - - - - - ql_module_param_def - 266 - - - id - 266 - - - parameter - 266 - - - signature - 266 - - - - - id - parameter - - - 12 - - - 1 - 2 - 266 - - - - - - - id - signature - - - 12 - - - 1 - 2 - 266 - - - - - - - parameter - id - - - 12 - - - 1 - 2 - 266 - - - - - - - parameter - signature - - - 12 - - - 1 - 2 - 266 - - - - - - - signature - id - - - 12 - - - 1 - 2 - 266 - - - - - - - signature - parameter - - - 12 - - - 1 - 2 - 266 - - - - - - - - - ql_module_parameter - 266 - - - ql_module - 185 - - - index - 8 - - - parameter - 266 - - - - - ql_module - index - - - 12 - - - 1 - 2 - 138 - - - 2 - 3 - 30 - - - 3 - 6 - 15 - - - 6 - 9 - 2 - - - - - - - ql_module - parameter - - - 12 - - - 1 - 2 - 138 - - - 2 - 3 - 30 - - - 3 - 6 - 15 - - - 6 - 9 - 2 - - - - - - - index - ql_module - - - 12 - - - 1 - 2 - 2 - - - 2 - 3 - 1 - - - 4 - 5 - 1 - - - 9 - 10 - 1 - - - 17 - 18 - 1 - - - 47 - 48 - 1 - - - 185 - 186 - 1 - - - - - - - index - parameter - - - 12 - - - 1 - 2 - 2 - - - 2 - 3 - 1 - - - 4 - 5 - 1 - - - 9 - 10 - 1 - - - 17 - 18 - 1 - - - 47 - 48 - 1 - - - 185 - 186 - 1 - - - - - - - parameter - ql_module - - - 12 - - - 1 - 2 - 266 - - - - - - - parameter - index - - - 12 - - - 1 - 2 - 266 - - - - - - - - - ql_mul_expr_def - 585 - - - id - 585 - - - left - 585 - - - right - 585 - - - child - 585 - - - - - id - left - - - 12 - - - 1 - 2 - 585 - - - - - - - id - right - - - 12 - - - 1 - 2 - 585 - - - - - - - id - child - - - 12 - - - 1 - 2 - 585 - - - - - - - left - id - - - 12 - - - 1 - 2 - 585 - - - - - - - left - right - - - 12 - - - 1 - 2 - 585 - - - - - - - left - child - - - 12 - - - 1 - 2 - 585 - - - - - - - right - id - - - 12 - - - 1 - 2 - 585 - - - - - - - right - left - - - 12 - - - 1 - 2 - 585 - - - - - - - right - child - - - 12 - - - 1 - 2 - 585 - - - - - - - child - id - - - 12 - - - 1 - 2 - 585 - - - - - - - child - left - - - 12 - - - 1 - 2 - 585 - - - - - - - child - right - - - 12 - - - 1 - 2 - 585 - - - - - - - - - ql_negation_def - 11727 - - - id - 11727 - - - child - 11727 - - - - - id - child - - - 12 - - - 1 - 2 - 11727 - - - - - - - child - id - - - 12 - - - 1 - 2 - 11727 - - - - - - - - - ql_order_by_child - 1272 - - - ql_order_by - 1067 - - - index - 2 - - - child - 1272 - - - - - ql_order_by - index - - - 12 - - - 1 - 2 - 862 - - - 2 - 3 - 205 - - - - - - - ql_order_by - child - - - 12 - - - 1 - 2 - 862 - - - 2 - 3 - 205 - - - - - - - index - ql_order_by - - - 12 - - - 205 - 206 - 1 - - - 1067 - 1068 - 1 - - - - - - - index - child - - - 12 - - - 205 - 206 - 1 - - - 1067 - 1068 - 1 - - - - - - - child - ql_order_by - - - 12 - - - 1 - 2 - 1272 - - - - - - - child - index - - - 12 - - - 1 - 2 - 1272 - - - - - - - - - ql_order_by_def - 1067 - - - id - 1067 - - - - - - ql_order_bys_child - 1067 - - - ql_order_bys - 661 - - - index - 8 - - - child - 1067 - - - - - ql_order_bys - index - - - 12 - - - 1 - 2 - 477 - - - 2 - 3 - 101 - - - 3 - 5 - 41 - - - 5 - 9 - 42 - - - - - - - ql_order_bys - child - - - 12 - - - 1 - 2 - 477 - - - 2 - 3 - 101 - - - 3 - 5 - 41 - - - 5 - 9 - 42 - - - - - - - index - ql_order_bys - - - 12 - - - 1 - 2 - 1 - - - 12 - 13 - 1 - - - 21 - 22 - 1 - - - 42 - 43 - 1 - - - 63 - 64 - 1 - - - 83 - 84 - 1 - - - 184 - 185 - 1 - - - 661 - 662 - 1 - - - - - - - index - child - - - 12 - - - 1 - 2 - 1 - - - 12 - 13 - 1 - - - 21 - 22 - 1 - - - 42 - 43 - 1 - - - 63 - 64 - 1 - - - 83 - 84 - 1 - - - 184 - 185 - 1 - - - 661 - 662 - 1 - - - - - - - child - ql_order_bys - - - 12 - - - 1 - 2 - 1067 - - - - - - - child - index - - - 12 - - - 1 - 2 - 1067 - - - - - - - - - ql_order_bys_def - 661 - - - id - 661 - - - - - - ql_par_expr_def - 5799 - - - id - 5799 - - - child - 5799 - - - - - id - child - - - 12 - - - 1 - 2 - 5799 - - - - - - - child - id - - - 12 - - - 1 - 2 - 5799 - - - - - - - - - ql_predicate_alias_body_def - 372 - - - id - 372 - - - child - 372 - - - - - id - child - - - 12 - - - 1 - 2 - 372 - - - - - - - child - id - - - 12 - - - 1 - 2 - 372 - - - - - - - - - ql_predicate_expr_child - 1478 - - - ql_predicate_expr - 739 - - - index - 2 - - - child - 1478 - - - - - ql_predicate_expr - index - - - 12 - - - 2 - 3 - 739 - - - - - - - ql_predicate_expr - child - - - 12 - - - 2 - 3 - 739 - - - - - - - index - ql_predicate_expr - - - 12 - - - 739 - 740 - 2 - - - - - - - index - child - - - 12 - - - 739 - 740 - 2 - - - - - - - child - ql_predicate_expr - - - 12 - - - 1 - 2 - 1478 - - - - - - - child - index - - - 12 - - - 1 - 2 - 1478 - - - - - - - - - ql_predicate_expr_def - 739 - - - id - 739 - - - - - - ql_prefix_cast_child - 0 - - - ql_prefix_cast - 0 - - - index - 0 - - - child - 0 - - - - - ql_prefix_cast - index - - - 12 - - - - - - ql_prefix_cast - child - - - 12 - - - - - - index - ql_prefix_cast - - - 12 - - - - - - index - child - - - 12 - - - - - - child - ql_prefix_cast - - - 12 - - - 1 - 2 - 1 - - - - - - - child - index - - - 12 - - - 1 - 2 - 1 - - - - - - - - - ql_prefix_cast_def - 0 - - - id - 0 - - - - - - ql_ql_child - 85914 - - - ql_ql - 11162 - - - index - 340 - - - child - 85914 - - - - - ql_ql - index - - - 12 - - - 1 - 2 - 96 - - - 2 - 3 - 2238 - - - 3 - 4 - 2551 - - - 4 - 5 - 1524 - - - 5 - 6 - 1041 - - - 6 - 7 - 730 - - - 7 - 9 - 829 - - - 9 - 14 - 913 - - - 14 - 31 - 844 - - - 31 - 341 - 396 - - - - - - - ql_ql - child - - - 12 - - - 1 - 2 - 96 - - - 2 - 3 - 2238 - - - 3 - 4 - 2551 - - - 4 - 5 - 1524 - - - 5 - 6 - 1041 - - - 6 - 7 - 730 - - - 7 - 9 - 829 - - - 9 - 14 - 913 - - - 14 - 31 - 844 - - - 31 - 341 - 396 - - - - - - - index - ql_ql - - - 12 - - - 1 - 2 - 42 - - - 2 - 4 - 25 - - - 4 - 6 - 28 - - - 6 - 10 - 31 - - - 10 - 13 - 28 - - - 13 - 22 - 30 - - - 22 - 29 - 26 - - - 29 - 46 - 27 - - - 48 - 83 - 26 - - - 84 - 176 - 26 - - - 179 - 553 - 26 - - - 584 - 11163 - 25 - - - - - - - index - child - - - 12 - - - 1 - 2 - 42 - - - 2 - 4 - 25 - - - 4 - 6 - 28 - - - 6 - 10 - 31 - - - 10 - 13 - 28 - - - 13 - 22 - 30 - - - 22 - 29 - 26 - - - 29 - 46 - 27 - - - 48 - 83 - 26 - - - 84 - 176 - 26 - - - 179 - 553 - 26 - - - 584 - 11163 - 25 - - - - - - - child - ql_ql - - - 12 - - - 1 - 2 - 85914 - - - - - - - child - index - - - 12 - - - 1 - 2 - 85914 - - - - - - - - - ql_ql_def - 11167 - - - id - 11167 - - - - - - ql_qualified_expr_child - 330314 - - - ql_qualified_expr - 165157 - - - index - 2 - - - child - 330314 - - - - - ql_qualified_expr - index - - - 12 - - - 2 - 3 - 165157 - - - - - - - ql_qualified_expr - child - - - 12 - - - 2 - 3 - 165157 - - - - - - - index - ql_qualified_expr - - - 12 - - - 165157 - 165158 - 2 - - - - - - - index - child - - - 12 - - - 165157 - 165158 - 2 - - - - - - - child - ql_qualified_expr - - - 12 - - - 1 - 2 - 330314 - - - - - - - child - index - - - 12 - - - 1 - 2 - 330314 - - - - - - - - - ql_qualified_expr_def - 165157 - - - id - 165157 - - - - - - ql_qualified_rhs_child - 68095 - - - ql_qualified_rhs - 52354 - - - index - 11 - - - child - 68095 - - - - - ql_qualified_rhs - index - - - 12 - - - 1 - 2 - 41965 - - - 2 - 3 - 7314 - - - 3 - 12 - 3075 - - - - - - - ql_qualified_rhs - child - - - 12 - - - 1 - 2 - 41965 - - - 2 - 3 - 7314 - - - 3 - 12 - 3075 - - - - - - - index - ql_qualified_rhs - - - 12 - - - 8 - 9 - 1 - - - 9 - 10 - 1 - - - 11 - 12 - 1 - - - 20 - 21 - 1 - - - 25 - 26 - 1 - - - 66 - 67 - 1 - - - 802 - 803 - 1 - - - 1336 - 1337 - 1 - - - 3075 - 3076 - 1 - - - 10389 - 10390 - 1 - - - 52354 - 52355 - 1 - - - - - - - index - child - - - 12 - - - 8 - 9 - 1 - - - 9 - 10 - 1 - - - 11 - 12 - 1 - - - 20 - 21 - 1 - - - 25 - 26 - 1 - - - 66 - 67 - 1 - - - 802 - 803 - 1 - - - 1336 - 1337 - 1 - - - 3075 - 3076 - 1 - - - 10389 - 10390 - 1 - - - 52354 - 52355 - 1 - - - - - - - child - ql_qualified_rhs - - - 12 - - - 1 - 2 - 68095 - - - - - - - child - index - - - 12 - - - 1 - 2 - 68095 - - - - - - - - - ql_qualified_rhs_def - 165157 - - - id - 165157 - - - - - - ql_qualified_rhs_name - 153874 - - - ql_qualified_rhs - 153874 - - - name - 153874 - - - - - ql_qualified_rhs - name - - - 12 - - - 1 - 2 - 153874 - - - - - - - name - ql_qualified_rhs - - - 12 - - - 1 - 2 - 153874 - - - - - - - - - ql_quantified_child - 52811 - - - ql_quantified - 24227 - - - index - 22 - - - child - 52811 - - - - - ql_quantified - index - - - 12 - - - 1 - 2 - 4452 - - - 2 - 3 - 14178 - - - 3 - 4 - 3526 - - - 4 - 6 - 1823 - - - 6 - 23 - 248 - - - - - - - ql_quantified - child - - - 12 - - - 1 - 2 - 4452 - - - 2 - 3 - 14178 - - - 3 - 4 - 3526 - - - 4 - 6 - 1823 - - - 6 - 23 - 248 - - - - - - - index - ql_quantified - - - 12 - - - 1 - 2 - 11 - - - 3 - 9 - 2 - - - 19 - 45 - 2 - - - 102 - 249 - 2 - - - 706 - 2072 - 2 - - - 5597 - 19776 - 2 - - - 24227 - 24228 - 1 - - - - - - - index - child - - - 12 - - - 1 - 2 - 11 - - - 3 - 9 - 2 - - - 19 - 45 - 2 - - - 102 - 249 - 2 - - - 706 - 2072 - 2 - - - 5597 - 19776 - 2 - - - 24227 - 24228 - 1 - - - - - - - child - ql_quantified - - - 12 - - - 1 - 2 - 52811 - - - - - - - child - index - - - 12 - - - 1 - 2 - 52811 - - - - - - - - - ql_quantified_def - 24227 - - - id - 24227 - - - - - - ql_quantified_expr - 4452 - - - ql_quantified - 4452 - - - expr - 4452 - - - - - ql_quantified - expr - - - 12 - - - 1 - 2 - 4452 - - - - - - - expr - ql_quantified - - - 12 - - - 1 - 2 - 4452 - - - - - - - - - ql_quantified_formula - 7476 - - - ql_quantified - 7476 - - - formula - 7476 - - - - - ql_quantified - formula - - - 12 - - - 1 - 2 - 7476 - - - - - - - formula - ql_quantified - - - 12 - - - 1 - 2 - 7476 - - - - - - - - - ql_quantified_range - 19737 - - - ql_quantified - 19737 - - - range - 19737 - - - - - ql_quantified - range - - - 12 - - - 1 - 2 - 19737 - - - - - - - range - ql_quantified - - - 12 - - - 1 - 2 - 19737 - - - - - - - - - ql_range_def - 365 - - - id - 365 - - - lower - 365 - - - upper - 365 - - - - - id - lower - - - 12 - - - 1 - 2 - 365 - - - - - - - id - upper - - - 12 - - - 1 - 2 - 365 - - - - - - - lower - id - - - 12 - - - 1 - 2 - 365 - - - - - - - lower - upper - - - 12 - - - 1 - 2 - 365 - - - - - - - upper - id - - - 12 - - - 1 - 2 - 365 - - - - - - - upper - lower - - - 12 - - - 1 - 2 - 365 - - - - - - - - - ql_select_child - 23801 - - - ql_select - 5989 - - - index - 20 - - - child - 23801 - - - - - ql_select - index - - - 12 - - - 1 - 2 - 149 - - - 2 - 3 - 854 - - - 3 - 4 - 1341 - - - 4 - 5 - 1821 - - - 5 - 6 - 1028 - - - 6 - 7 - 465 - - - 7 - 21 - 331 - - - - - - - ql_select - child - - - 12 - - - 1 - 2 - 149 - - - 2 - 3 - 854 - - - 3 - 4 - 1341 - - - 4 - 5 - 1821 - - - 5 - 6 - 1028 - - - 6 - 7 - 465 - - - 7 - 21 - 331 - - - - - - - index - ql_select - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 2 - - - 4 - 5 - 1 - - - 6 - 7 - 1 - - - 11 - 12 - 1 - - - 13 - 14 - 1 - - - 20 - 21 - 1 - - - 27 - 28 - 1 - - - 29 - 30 - 1 - - - 44 - 45 - 1 - - - 71 - 72 - 1 - - - 160 - 161 - 1 - - - 331 - 332 - 1 - - - 796 - 797 - 1 - - - 1824 - 1825 - 1 - - - 3645 - 3646 - 1 - - - 4986 - 4987 - 1 - - - 5840 - 5841 - 1 - - - 5989 - 5990 - 1 - - - - - - - index - child - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 2 - - - 4 - 5 - 1 - - - 6 - 7 - 1 - - - 11 - 12 - 1 - - - 13 - 14 - 1 - - - 20 - 21 - 1 - - - 27 - 28 - 1 - - - 29 - 30 - 1 - - - 44 - 45 - 1 - - - 71 - 72 - 1 - - - 160 - 161 - 1 - - - 331 - 332 - 1 - - - 796 - 797 - 1 - - - 1824 - 1825 - 1 - - - 3645 - 3646 - 1 - - - 4986 - 4987 - 1 - - - 5840 - 5841 - 1 - - - 5989 - 5990 - 1 - - - - - - - child - ql_select - - - 12 - - - 1 - 2 - 23801 - - - - - - - child - index - - - 12 - - - 1 - 2 - 23801 - - - - - - - - - ql_select_def - 5989 - - - id - 5989 - - - - - - ql_set_literal_child - 20149 - - - ql_set_literal - 4014 - - - index - 1028 - - - child - 20149 - - - - - ql_set_literal - index - - - 12 - - - 1 - 2 - 9 - - - 2 - 3 - 2354 - - - 3 - 4 - 506 - - - 4 - 5 - 351 - - - 5 - 7 - 291 - - - 7 - 13 - 315 - - - 13 - 1029 - 188 - - - - - - - ql_set_literal - child - - - 12 - - - 1 - 2 - 9 - - - 2 - 3 - 2354 - - - 3 - 4 - 506 - - - 4 - 5 - 351 - - - 5 - 7 - 291 - - - 7 - 13 - 315 - - - 13 - 1029 - 188 - - - - - - - index - ql_set_literal - - - 12 - - - 1 - 2 - 528 - - - 2 - 3 - 194 - - - 3 - 5 - 63 - - - 5 - 9 - 90 - - - 9 - 19 - 83 - - - 19 - 4015 - 70 - - - - - - - index - child - - - 12 - - - 1 - 2 - 528 - - - 2 - 3 - 194 - - - 3 - 5 - 63 - - - 5 - 9 - 90 - - - 9 - 19 - 83 - - - 19 - 4015 - 70 - - - - - - - child - ql_set_literal - - - 12 - - - 1 - 2 - 20149 - - - - - - - child - index - - - 12 - - - 1 - 2 - 20149 - - - - - - - - - ql_set_literal_def - 4014 - - - id - 4014 - - - - - - ql_signature_expr_def - 3709 - - - id - 3709 - - - - - - ql_signature_expr_mod_expr - 180 - - - ql_signature_expr - 180 - - - mod_expr - 180 - - - - - ql_signature_expr - mod_expr - - - 12 - - - 1 - 2 - 180 - - - - - - - mod_expr - ql_signature_expr - - - 12 - - - 1 - 2 - 180 - - - - - - - - - ql_signature_expr_predicate - 232 - - - ql_signature_expr - 232 - - - predicate - 232 - - - - - ql_signature_expr - predicate - - - 12 - - - 1 - 2 - 232 - - - - - - - predicate - ql_signature_expr - - - 12 - - - 1 - 2 - 232 - - - - - - - - - ql_signature_expr_type_expr - 3297 - - - ql_signature_expr - 3297 - - - type_expr - 3297 - - - - - ql_signature_expr - type_expr - - - 12 - - - 1 - 2 - 3297 - - - - - - - type_expr - ql_signature_expr - - - 12 - - - 1 - 2 - 3297 - - - - - - - - - ql_special_call_def - 4424 - - - id - 4424 - - - child - 4424 - - - - - id - child - - - 12 - - - 1 - 2 - 4424 - - - - - - - child - id - - - 12 - - - 1 - 2 - 4424 - - - - - - - - - ql_super_ref_child - 3530 - - - ql_super_ref - 2901 - - - index - 2 - - - child - 3530 - - - - - ql_super_ref - index - - - 12 - - - 1 - 2 - 2272 - - - 2 - 3 - 629 - - - - - - - ql_super_ref - child - - - 12 - - - 1 - 2 - 2272 - - - 2 - 3 - 629 - - - - - - - index - ql_super_ref - - - 12 - - - 629 - 630 - 1 - - - 2901 - 2902 - 1 - - - - - - - index - child - - - 12 - - - 629 - 630 - 1 - - - 2901 - 2902 - 1 - - - - - - - child - ql_super_ref - - - 12 - - - 1 - 2 - 3530 - - - - - - - child - index - - - 12 - - - 1 - 2 - 3530 - - - - - - - - - ql_super_ref_def - 2901 - - - id - 2901 - - - - - - ql_tokeninfo - 3524470 - - - id - 3524470 - - - kind - 31 - - - value - 159352 - - - - - id - kind - - - 12 - - - 1 - 2 - 3524470 - - - - - - - id - value - - - 12 - - - 1 - 2 - 3524470 - - - - - - - kind - id - - - 12 - - - 205 - 306 - 2 - - - 585 - 993 - 2 - - - 1158 - 1974 - 2 - - - 2234 - 2302 - 2 - - - 2344 - 2902 - 2 - - - 3766 - 4425 - 2 - - - 9053 - 13787 - 2 - - - 17184 - 20889 - 2 - - - 21612 - 24228 - 2 - - - 26200 - 47957 - 2 - - - 50826 - 52494 - 2 - - - 55406 - 58185 - 2 - - - 66480 - 83939 - 2 - - - 140334 - 204254 - 2 - - - 221079 - 512065 - 2 - - - 1875319 - 1875320 - 1 - - - - - - - kind - value - - - 12 - - - 1 - 2 - 11 - - - 2 - 3 - 2 - - - 3 - 4 - 2 - - - 5 - 7 - 2 - - - 12 - 18 - 2 - - - 65 - 141 - 2 - - - 635 - 858 - 2 - - - 2472 - 12791 - 2 - - - 15738 - 15845 - 2 - - - 18782 - 21406 - 2 - - - 42941 - 44802 - 2 - - - - - - - value - id - - - 12 - - - 1 - 2 - 96196 - - - 2 - 3 - 23735 - - - 3 - 4 - 11475 - - - 4 - 7 - 13411 - - - 7 - 41 - 12004 - - - 41 - 348424 - 2531 - - - - - - - value - kind - - - 12 - - - 1 - 2 - 142727 - - - 2 - 3 - 16072 - - - 3 - 5 - 553 - - - - - - - - - ql_type_alias_body_def - 817 - - - id - 817 - - - child - 817 - - - - - id - child - - - 12 - - - 1 - 2 - 817 - - - - - - - child - id - - - 12 - - - 1 - 2 - 817 - - - - - - - - - ql_type_expr_child - 51722 - - - ql_type_expr - 51722 - - - child - 51722 - - - - - ql_type_expr - child - - - 12 - - - 1 - 2 - 51722 - - - - - - - child - ql_type_expr - - - 12 - - - 1 - 2 - 51722 - - - - - - - - - ql_type_expr_def - 218057 - - - id - 218057 - - - - - - ql_type_expr_name - 166335 - - - ql_type_expr - 166335 - - - name - 166335 - - - - - ql_type_expr - name - - - 12 - - - 1 - 2 - 166335 - - - - - - - name - ql_type_expr - - - 12 - - - 1 - 2 - 166335 - - - - - - - - - ql_type_expr_qualifier - 34602 - - - ql_type_expr - 34602 - - - qualifier - 34602 - - - - - ql_type_expr - qualifier - - - 12 - - - 1 - 2 - 34602 - - - - - - - qualifier - ql_type_expr - - - 12 - - - 1 - 2 - 34602 - - - - - - - - - ql_type_union_body_child - 1174 - - - ql_type_union_body - 253 - - - index - 153 - - - child - 1174 - - - - - ql_type_union_body - index - - - 12 - - - 2 - 3 - 121 - - - 3 - 4 - 45 - - - 4 - 5 - 32 - - - 5 - 6 - 17 - - - 6 - 9 - 19 - - - 9 - 154 - 19 - - - - - - - ql_type_union_body - child - - - 12 - - - 2 - 3 - 121 - - - 3 - 4 - 45 - - - 4 - 5 - 32 - - - 5 - 6 - 17 - - - 6 - 9 - 19 - - - 9 - 154 - 19 - - - - - - - index - ql_type_union_body - - - 12 - - - 1 - 2 - 98 - - - 2 - 3 - 21 - - - 3 - 5 - 13 - - - 5 - 18 - 12 - - - 19 - 254 - 9 - - - - - - - index - child - - - 12 - - - 1 - 2 - 98 - - - 2 - 3 - 21 - - - 3 - 5 - 13 - - - 5 - 18 - 12 - - - 19 - 254 - 9 - - - - - - - child - ql_type_union_body - - - 12 - - - 1 - 2 - 1174 - - - - - - - child - index - - - 12 - - - 1 - 2 - 1174 - - - - - - - - - ql_type_union_body_def - 253 - - - id - 253 - - - - - - ql_unary_expr_child - 2316 - - - ql_unary_expr - 1158 - - - index - 2 - - - child - 2316 - - - - - ql_unary_expr - index - - - 12 - - - 2 - 3 - 1158 - - - - - - - ql_unary_expr - child - - - 12 - - - 2 - 3 - 1158 - - - - - - - index - ql_unary_expr - - - 12 - - - 1158 - 1159 - 2 - - - - - - - index - child - - - 12 - - - 1158 - 1159 - 2 - - - - - - - child - ql_unary_expr - - - 12 - - - 1 - 2 - 2316 - - - - - - - child - index - - - 12 - - - 1 - 2 - 2316 - - - - - - - - - ql_unary_expr_def - 1158 - - - id - 1158 - - - - - - ql_unqual_agg_body_as_exprs - 0 - - - ql_unqual_agg_body - 0 - - - index - 0 - - - as_exprs - 0 - - - - - ql_unqual_agg_body - index - - - 12 - - - - - - ql_unqual_agg_body - as_exprs - - - 12 - - - - - - index - ql_unqual_agg_body - - - 12 - - - - - - index - as_exprs - - - 12 - - - - - - as_exprs - ql_unqual_agg_body - - - 12 - - - 1 - 2 - 1 - - - - - - - as_exprs - index - - - 12 - - - 1 - 2 - 1 - - - - - - - - - ql_unqual_agg_body_child - 0 - - - ql_unqual_agg_body - 0 - - - index - 0 - - - child - 0 - - - - - ql_unqual_agg_body - index - - - 12 - - - - - - ql_unqual_agg_body - child - - - 12 - - - - - - index - ql_unqual_agg_body - - - 12 - - - - - - index - child - - - 12 - - - - - - child - ql_unqual_agg_body - - - 12 - - - 1 - 2 - 1 - - - - - - - child - index - - - 12 - - - 1 - 2 - 1 - - - - - - - - - ql_unqual_agg_body_def - 0 - - - id - 0 - - - - - - ql_unqual_agg_body_guard - 0 - - - ql_unqual_agg_body - 0 - - - guard - 0 - - - - - ql_unqual_agg_body - guard - - - 12 - - - 1 - 2 - 1 - - - - - - - guard - ql_unqual_agg_body - - - 12 - - - 1 - 2 - 1 - - - - - - - - - ql_var_decl_child - 228274 - - - ql_var_decl - 114137 - - - index - 2 - - - child - 228274 - - - - - ql_var_decl - index - - - 12 - - - 2 - 3 - 114137 - - - - - - - ql_var_decl - child - - - 12 - - - 2 - 3 - 114137 - - - - - - - index - ql_var_decl - - - 12 - - - 114137 - 114138 - 2 - - - - - - - index - child - - - 12 - - - 114137 - 114138 - 2 - - - - - - - child - ql_var_decl - - - 12 - - - 1 - 2 - 228274 - - - - - - - child - index - - - 12 - - - 1 - 2 - 228274 - - - - - - - - - ql_var_decl_def - 114137 - - - id - 114137 - - - - - - ql_var_name_def - 380908 - - - id - 380908 - - - child - 380908 - - - - - id - child - - - 12 - - - 1 - 2 - 380908 - - - - - - - child - id - - - 12 - - - 1 - 2 - 380908 - - - - - - - - - ql_variable_def - 369462 - - - id - 369462 - - - child - 369462 - - - - - id - child - - - 12 - - - 1 - 2 - 369462 - - - - - - - child - id - - - 12 - - - 1 - 2 - 369462 - - - - - - - - - sourceLocationPrefix - 1 - - - prefix - 1 - - - - - - yaml - 1726 - - - id - 1726 - - - kind - 3 - - - parent - 350 - - - idx - 21 - - - tag - 5 - - - tostring - 263 - - - - - id - kind - - - 12 - - - 1 - 2 - 1726 - - - - - - - id - parent - - - 12 - - - 1 - 2 - 1726 - - - - - - - id - idx - - - 12 - - - 1 - 2 - 1726 - - - - - - - id - tag - - - 12 - - - 1 - 2 - 1726 - - - - - - - id - tostring - - - 12 - - - 1 - 2 - 1726 - - - - - - - kind - id - - - 12 - - - 59 - 60 - 1 - - - 186 - 187 - 1 - - - 1481 - 1482 - 1 - - - - - - - kind - parent - - - 12 - - - 56 - 57 - 1 - - - 186 - 187 - 1 - - - 245 - 246 - 1 - - - - - - - kind - idx - - - 12 - - - 8 - 9 - 1 - - - 9 - 10 - 1 - - - 21 - 22 - 1 - - - - - - - kind - tag - - - 12 - - - 1 - 2 - 2 - - - 3 - 4 - 1 - - - - - - - kind - tostring - - - 12 - - - 33 - 34 - 1 - - - 68 - 69 - 1 - - - 162 - 163 - 1 - - - - - - - parent - id - - - 12 - - - 1 - 2 - 118 - - - 2 - 3 - 71 - - - 3 - 4 - 8 - - - 4 - 5 - 26 - - - 6 - 7 - 26 - - - 8 - 9 - 30 - - - 10 - 11 - 16 - - - 12 - 13 - 30 - - - 14 - 21 - 25 - - - - - - - parent - kind - - - 12 - - - 1 - 2 - 262 - - - 2 - 3 - 39 - - - 3 - 4 - 49 - - - - - - - parent - idx - - - 12 - - - 1 - 2 - 118 - - - 2 - 3 - 71 - - - 3 - 4 - 8 - - - 4 - 5 - 26 - - - 6 - 7 - 26 - - - 8 - 9 - 30 - - - 10 - 11 - 16 - - - 12 - 13 - 30 - - - 14 - 21 - 25 - - - - - - - parent - tag - - - 12 - - - 1 - 2 - 245 - - - 2 - 3 - 15 - - - 3 - 4 - 41 - - - 4 - 5 - 49 - - - - - - - parent - tostring - - - 12 - - - 1 - 2 - 118 - - - 2 - 3 - 71 - - - 3 - 4 - 22 - - - 4 - 5 - 35 - - - 5 - 8 - 10 - - - 8 - 9 - 29 - - - 9 - 12 - 27 - - - 12 - 17 - 29 - - - 17 - 19 - 9 - - - - - - - idx - id - - - 12 - - - 6 - 7 - 2 - - - 11 - 12 - 2 - - - 19 - 20 - 2 - - - 25 - 26 - 2 - - - 55 - 56 - 2 - - - 71 - 72 - 2 - - - 101 - 102 - 2 - - - 127 - 128 - 2 - - - 153 - 154 - 1 - - - 161 - 162 - 1 - - - 164 - 165 - 1 - - - 186 - 187 - 1 - - - 232 - 233 - 1 - - - - - - - idx - kind - - - 12 - - - 1 - 2 - 11 - - - 2 - 3 - 3 - - - 3 - 4 - 7 - - - - - - - idx - parent - - - 12 - - - 6 - 7 - 2 - - - 11 - 12 - 2 - - - 19 - 20 - 2 - - - 25 - 26 - 2 - - - 55 - 56 - 2 - - - 71 - 72 - 2 - - - 101 - 102 - 2 - - - 127 - 128 - 2 - - - 153 - 154 - 1 - - - 161 - 162 - 1 - - - 164 - 165 - 1 - - - 186 - 187 - 1 - - - 232 - 233 - 1 - - - - - - - idx - tag - - - 12 - - - 1 - 2 - 11 - - - 2 - 3 - 3 - - - 4 - 5 - 6 - - - 5 - 6 - 1 - - - - - - - idx - tostring - - - 12 - - - 1 - 2 - 2 - - - 2 - 3 - 1 - - - 4 - 5 - 3 - - - 7 - 8 - 1 - - - 9 - 10 - 2 - - - 10 - 11 - 1 - - - 14 - 15 - 1 - - - 16 - 17 - 1 - - - 20 - 21 - 1 - - - 24 - 25 - 2 - - - 27 - 28 - 1 - - - 29 - 30 - 1 - - - 37 - 38 - 1 - - - 59 - 60 - 1 - - - 80 - 81 - 1 - - - 81 - 82 - 1 - - - - - - - tag - id - - - 12 - - - 2 - 3 - 1 - - - 59 - 60 - 1 - - - 137 - 138 - 1 - - - 186 - 187 - 1 - - - 1342 - 1343 - 1 - - - - - - - tag - kind - - - 12 - - - 1 - 2 - 5 - - - - - - - tag - parent - - - 12 - - - 2 - 3 - 1 - - - 56 - 57 - 1 - - - 105 - 106 - 1 - - - 186 - 187 - 1 - - - 245 - 246 - 1 - - - - - - - tag - idx - - - 12 - - - 1 - 2 - 1 - - - 8 - 9 - 1 - - - 9 - 10 - 2 - - - 19 - 20 - 1 - - - - - - - tag - tostring - - - 12 - - - 1 - 2 - 1 - - - 2 - 3 - 1 - - - 33 - 34 - 1 - - - 68 - 69 - 1 - - - 159 - 160 - 1 - - - - - - - tostring - id - - - 12 - - - 1 - 2 - 141 - - - 2 - 3 - 28 - - - 3 - 4 - 16 - - - 4 - 7 - 22 - - - 7 - 10 - 18 - - - 10 - 17 - 21 - - - 18 - 145 - 17 - - - - - - - tostring - kind - - - 12 - - - 1 - 2 - 263 - - - - - - - tostring - parent - - - 12 - - - 1 - 2 - 142 - - - 2 - 3 - 27 - - - 3 - 4 - 16 - - - 4 - 7 - 22 - - - 7 - 10 - 21 - - - 10 - 19 - 21 - - - 19 - 106 - 14 - - - - - - - tostring - idx - - - 12 - - - 1 - 2 - 179 - - - 2 - 3 - 35 - - - 3 - 4 - 24 - - - 4 - 7 - 20 - - - 8 - 10 - 5 - - - - - - - tostring - tag - - - 12 - - - 1 - 2 - 263 - - - - - - - - - yaml_aliases - 0 - - - alias - 0 - - - target - 0 - - - - - alias - target - - - 12 - - - 1 - 2 - 1 - - - - - - - target - alias - - - 12 - - - - - - - - yaml_anchors - 0 - - - node - 0 - - - anchor - 0 - - - - - node - anchor - - - 12 - - - 1 - 2 - 1 - - - - - - - anchor - node - - - 12 - - - - - - - - yaml_errors - 0 - - - id - 0 - - - message - 0 - - - - - id - message - - - 12 - - - 1 - 2 - 1 - - - - - - - message - id - - - 12 - - - - - - - - yaml_locations - 1726 - - - locatable - 1726 - - - location - 1726 - - - - - locatable - location - - - 12 - - - 1 - 2 - 1726 - - - - - - - location - locatable - - - 12 - - - 1 - 2 - 1726 - - - - - - - - - yaml_scalars - 1481 - - - scalar - 1481 - - - style - 3 - - - value - 195 - - - - - scalar - style - - - 12 - - - 1 - 2 - 1481 - - - - - - - scalar - value - - - 12 - - - 1 - 2 - 1481 - - - - - - - style - scalar - - - 12 - - - 5 - 6 - 1 - - - 41 - 42 - 1 - - - 1435 - 1436 - 1 - - - - - - - style - value - - - 12 - - - 1 - 2 - 1 - - - 3 - 4 - 1 - - - 192 - 193 - 1 - - - - - - - value - scalar - - - 12 - - - 1 - 2 - 101 - - - 2 - 3 - 16 - - - 3 - 4 - 17 - - - 4 - 8 - 17 - - - 8 - 10 - 12 - - - 10 - 15 - 15 - - - 15 - 106 - 15 - - - 136 - 145 - 2 - - - - - - - value - style - - - 12 - - - 1 - 2 - 194 - - - 2 - 3 - 1 - - - - - - - - - databaseMetadata - 1 - - - metadataKey - 1 - - - value - 1 - - - - - metadataKey - value - - - 12 - - - - - - value - metadataKey - - - 12 - - - - - - - - overlayChangedFiles - 50 - - - path - 50 - - - - - + + diff --git a/ql/ql/src/queries/overlay/InlineOverlayCaller.ql b/ql/ql/src/queries/overlay/InlineOverlayCaller.ql index 0853dfde830e..b0d9abb19e88 100644 --- a/ql/ql/src/queries/overlay/InlineOverlayCaller.ql +++ b/ql/ql/src/queries/overlay/InlineOverlayCaller.ql @@ -11,18 +11,20 @@ import ql -predicate mayBeLocal(AstNode n) { +private predicate isDirectlyLocal(AstNode n) { n.getAnAnnotation() instanceof OverlayLocal or n.getAnAnnotation() instanceof OverlayLocalQ +} + +predicate mayBeLocal(AstNode n) { + isDirectlyLocal(n) 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. + // File-level module annotations belong to an anonymous `Module` sibling of + // the file's declarations, so consider every node in that file potentially local. exists(AstNode m | n.getLocation().getFile() = m.getLocation().getFile() and - mayBeLocal(m) + isDirectlyLocal(m) ) } diff --git a/ql/ql/src/queries/style/ConsistentAlertMessage.ql b/ql/ql/src/queries/style/ConsistentAlertMessage.ql index c2d0c9be1805..beb1d7b5f4da 100644 --- a/ql/ql/src/queries/style/ConsistentAlertMessage.ql +++ b/ql/ql/src/queries/style/ConsistentAlertMessage.ql @@ -10,6 +10,12 @@ import ql +private predicate isInMessage(AstNode node, Select sel) { + node = sel.getExpr(any(int i | i % 2 = 1)) + or + exists(AstNode parent | isInMessage(parent, sel) and node.getParent() = parent) +} + /** * Gets a string representation of the entire message in `sel`. * Ignores everything that is not a string constant. @@ -18,7 +24,7 @@ string getMessage(Select sel) { result = strictconcat(String e, Location l | // is child of an expression in the select (in an odd-indexed position, that's where the message is) - e.getParent*() = sel.getExpr(any(int i | i % 2 = 1)) and l = e.getFullLocation() + isInMessage(e, sel) and l = e.getFullLocation() | e.getValue(), " | " order by l.getStartLine(), l.getStartColumn() ).trim() @@ -36,7 +42,7 @@ string getSelectFingerPrint(Select sel) { doc.getQueryId() // query ID (without lang) + "-" + doc.getQueryKind() // @kind + "-" + - strictcount(String e | e.getParent*() = sel.getExpr(any(int i | i % 2 = 1))) // the number of string constants in the select + strictcount(String e | isInMessage(e, sel)) // the number of string constants in the select + "-" + count(sel.getExpr(_)) // and the total number of expressions in the select ) } diff --git a/ql/ql/src/queries/style/NonDocBlock.ql b/ql/ql/src/queries/style/NonDocBlock.ql index 61efce0b9027..1031afa40205 100644 --- a/ql/ql/src/queries/style/NonDocBlock.ql +++ b/ql/ql/src/queries/style/NonDocBlock.ql @@ -69,11 +69,19 @@ BlockComment getCommentAtStart(File file, int startLine) { result.getLocation().getStartLine() = startLine } +pragma[noinline] +private BlockComment getCommentFor(AstNode node) { + exists(Location loc | + canHaveQLDoc(node) and + loc = pragma[only_bind_out](node.getLocation()) and + result = getCommentAtEnd(loc.getFile(), loc.getStartLine() - 1) + ) +} + from AstNode node, BlockComment comment, string nodeDescrip where ( - canHaveQLDoc(node) and - comment = getCommentAtEnd(node.getLocation().getFile(), node.getLocation().getStartLine() - 1) and + comment = getCommentFor(node) and nodeDescrip = "the below code" or node instanceof TopLevel and diff --git a/ql/ql/src/utils/test/InlineExpectationsTestQuery.ql b/ql/ql/src/utils/test/InlineExpectationsTestQuery.ql index 979839480e1d..b5c70edad177 100644 --- a/ql/ql/src/utils/test/InlineExpectationsTestQuery.ql +++ b/ql/ql/src/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import ql private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/ql/ql/src/utils/test/internal/InlineExpectationsTestImpl.qll b/ql/ql/src/utils/test/internal/InlineExpectationsTestImpl.qll index 647ddd5a87db..88a30d0d4c7a 100644 --- a/ql/ql/src/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/ql/ql/src/utils/test/internal/InlineExpectationsTestImpl.qll @@ -25,4 +25,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = QL::Location; + + string getRelativeUrl(Location location) { + exists(QL::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/ql/ql/test/queries/overlay/InlineOverlayCaller/OverlayAnnotations.expected b/ql/ql/test/queries/overlay/InlineOverlayCaller/OverlayAnnotations.expected new file mode 100644 index 000000000000..138b0f999121 --- /dev/null +++ b/ql/ql/test/queries/overlay/InlineOverlayCaller/OverlayAnnotations.expected @@ -0,0 +1,3 @@ +| Test.qll:1:1:1:15 | overlay[local?] | overlay[local?] | +| Test.qll:9:1:9:15 | overlay[caller] | overlay[caller] | +| Test.qll:16:1:16:16 | overlay[caller?] | overlay[caller?] | diff --git a/ql/ql/test/queries/overlay/InlineOverlayCaller/OverlayAnnotations.ql b/ql/ql/test/queries/overlay/InlineOverlayCaller/OverlayAnnotations.ql new file mode 100644 index 000000000000..6154afc96ae6 --- /dev/null +++ b/ql/ql/test/queries/overlay/InlineOverlayCaller/OverlayAnnotations.ql @@ -0,0 +1,9 @@ +import ql + +from Annotation a +where + a instanceof OverlayCaller or + a instanceof OverlayCallerQ or + a instanceof OverlayLocal or + a instanceof OverlayLocalQ +select a, a.toString() diff --git a/ql/ql/test/queries/style/DeadCode/DeadCode.expected b/ql/ql/test/queries/style/DeadCode/DeadCode.expected index 017cf546a92a..472be0a3eaa6 100644 --- a/ql/ql/test/queries/style/DeadCode/DeadCode.expected +++ b/ql/ql/test/queries/style/DeadCode/DeadCode.expected @@ -1,5 +1,5 @@ -| Foo.qll:4:21:4:25 | ClasslessPredicate dead1 | This code is never used, and it's not publicly exported. | -| Foo.qll:8:13:8:17 | ClasslessPredicate dead2 | This code is never used, and it's not publicly exported. | -| Foo.qll:46:16:46:21 | Module Input2 | This code is never used, and it's not publicly exported. | -| Foo.qll:56:16:56:17 | Module M2 | This code is never used, and it's not publicly exported. | -| Foo.qll:68:15:68:20 | Class CImpl2 | This code is never used, and it's not publicly exported. | +| Foo.qll:8:21:8:25 | ClasslessPredicate dead1 | This code is never used, and it's not publicly exported. | +| Foo.qll:12:13:12:17 | ClasslessPredicate dead2 | This code is never used, and it's not publicly exported. | +| Foo.qll:50:16:50:21 | Module Input2 | This code is never used, and it's not publicly exported. | +| Foo.qll:62:16:62:17 | Module M2 | This code is never used, and it's not publicly exported. | +| Foo.qll:102:15:102:20 | Class CImpl2 | This code is never used, and it's not publicly exported. | diff --git a/ql/ql/test/queries/style/DeadCode/Foo.qll b/ql/ql/test/queries/style/DeadCode/Foo.qll index 32fab335b780..4fd72f0a2bdf 100644 --- a/ql/ql/test/queries/style/DeadCode/Foo.qll +++ b/ql/ql/test/queries/style/DeadCode/Foo.qll @@ -1,3 +1,7 @@ +overlay[local] +module; + +private import Parameterized as External import ql private module Mixed { @@ -43,7 +47,9 @@ private module Input1 implements InputSig { predicate foo() { any() } } -private module Input2 implements InputSig { // $ Alert +private module Input2 // $ Alert + implements InputSig +{ predicate foo() { any() } } @@ -57,6 +63,34 @@ private module M2 = ParameterizedModule; // $ Alert import ParameterizedModule +signature module DefaultInputSig { + default predicate callback() { none() } +} + +module UsesDefaultInput { + predicate useCallback() { Input::callback() } +} + +private module DefaultInput implements DefaultInputSig { + predicate callback() { any() } +} + +module UsedDefaultInput = UsesDefaultInput; + +predicate usesDefaultInput() { UsedDefaultInput::useCallback() } + +module Empty { } + +private module OuterInstance = External::Outer; + +private module NestedInput implements OuterInstance::InputSig { + predicate callback() { any() } +} + +private module NestedUse = OuterInstance::Make; + +predicate usesNestedDefaultInput() { NestedUse::useCallback() } + private module MImpl { } module MPublic = MImpl; diff --git a/ql/ql/test/queries/style/DeadCode/Parameterized.qll b/ql/ql/test/queries/style/DeadCode/Parameterized.qll new file mode 100644 index 000000000000..f061d17c6f2b --- /dev/null +++ b/ql/ql/test/queries/style/DeadCode/Parameterized.qll @@ -0,0 +1,11 @@ +signature module EmptySig { } + +module Outer { + signature module InputSig { + default predicate callback() { none() } + } + + module Make { + predicate useCallback() { Input::callback() } + } +} diff --git a/ruby/extractor/Cargo.toml b/ruby/extractor/Cargo.toml index 09c67fd42f8d..d1f03ac1a05c 100644 --- a/ruby/extractor/Cargo.toml +++ b/ruby/extractor/Cargo.toml @@ -14,9 +14,9 @@ clap = { version = "4.6", features = ["derive"] } tracing = "0.1" tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } rayon = "1.12.0" -regex = "1.12.3" +regex = "1.13.1" encoding = "0.2" -lazy_static = "1.5.0" -serde_json = "1.0.149" +lazy_static = "1.5.1" +serde_json = "1.0.151" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } diff --git a/ruby/extractor/src/extractor.rs b/ruby/extractor/src/extractor.rs index 3749609e7885..91852a5b0057 100644 --- a/ruby/extractor/src/extractor.rs +++ b/ruby/extractor/src/extractor.rs @@ -114,9 +114,8 @@ pub fn run(options: Options) -> std::io::Result<()> { 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; let mut trap_writer = trap::Writer::new(); - if path.extension().is_some_and(|x| x == "erb") { + let code_ranges = if path.extension().is_some_and(|x| x == "erb") { tracing::info!("scanning: {}", path.display()); extractor::extract( &erb, @@ -142,7 +141,7 @@ pub fn run(options: Options) -> std::io::Result<()> { source[i] = b'\n'; } } - code_ranges = ranges; + ranges } else { if let Some(encoding_name) = scan_coding_comment(&source) { // If the input is already UTF-8 then there is no need to recode the source @@ -204,8 +203,8 @@ pub fn run(options: Options) -> std::io::Result<()> { } } } - code_ranges = vec![]; - } + vec![] + }; extractor::extract( &language, "ruby", @@ -372,7 +371,7 @@ fn get_overlay_changed_files() -> Option> { ) } -fn scan_coding_comment(content: &[u8]) -> std::option::Option> { +fn scan_coding_comment(content: &[u8]) -> std::option::Option> { let mut index = 0; // skip UTF-8 BOM marker if there is one if content.len() >= 3 && content[0] == 0xef && content[1] == 0xbb && content[2] == 0xbf { diff --git a/ruby/ql/consistency-queries/SsaConsistency.ql b/ruby/ql/consistency-queries/SsaConsistency.ql index 235eac263442..a0f1cb23cfef 100644 --- a/ruby/ql/consistency-queries/SsaConsistency.ql +++ b/ruby/ql/consistency-queries/SsaConsistency.ql @@ -1,3 +1,4 @@ import codeql.ruby.dataflow.SSA import codeql.ruby.dataflow.internal.SsaImpl import Consistency +import DataFlowIntegration::DfConsistency diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 056f71cef95e..195e65ec4b2d 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,17 @@ +## 7.1.0 + +### New Features + +* Added modeling for `Grape::API`'s `request` sub-accessors (`body.read`, `body.string`, `params`, `GET`, `POST`, `cookies`, `env`, `query_string`, and `path_info`) as remote flow sources. + +## 7.0.2 + +No user-facing changes. + +## 7.0.1 + +No user-facing changes. + ## 7.0.0 ### Breaking Changes diff --git a/ruby/ql/lib/change-notes/released/7.0.1.md b/ruby/ql/lib/change-notes/released/7.0.1.md new file mode 100644 index 000000000000..b5ef70820b26 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/7.0.1.md @@ -0,0 +1,3 @@ +## 7.0.1 + +No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/7.0.2.md b/ruby/ql/lib/change-notes/released/7.0.2.md new file mode 100644 index 000000000000..a96d9147b86a --- /dev/null +++ b/ruby/ql/lib/change-notes/released/7.0.2.md @@ -0,0 +1,3 @@ +## 7.0.2 + +No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/7.1.0.md b/ruby/ql/lib/change-notes/released/7.1.0.md new file mode 100644 index 000000000000..b46563bc0d8b --- /dev/null +++ b/ruby/ql/lib/change-notes/released/7.1.0.md @@ -0,0 +1,5 @@ +## 7.1.0 + +### New Features + +* Added modeling for `Grape::API`'s `request` sub-accessors (`body.read`, `body.string`, `params`, `GET`, `POST`, `cookies`, `env`, `query_string`, and `path_info`) as remote flow sources. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index e0db21c78694..dcaaa76112a6 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.0.0 +lastReleaseVersion: 7.1.0 diff --git a/ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll b/ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll index 419f840290c4..8f0ecd549991 100644 --- a/ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll +++ b/ruby/ql/lib/codeql/ruby/controlflow/ControlFlowGraph.qll @@ -308,6 +308,12 @@ private module Ast implements AstSig { class ContinueStmt extends Stmt instanceof R::Ast::NextStmt { } + class LabeledStmt extends Stmt { + LabeledStmt() { none() } + + Stmt getStmt() { none() } + } + class GotoStmt extends Stmt { GotoStmt() { none() } } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/Grape.qll b/ruby/ql/lib/codeql/ruby/frameworks/Grape.qll index 9b7ae6185cdb..ec14fe0475a6 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/Grape.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/Grape.qll @@ -206,6 +206,145 @@ module Grape { } } + /** + * Gets an API node for the `request` object accessible within a Grape API endpoint. + */ + private API::Node grapeRequestInstance() { result = grapeApiInstance().getReturn("request") } + + /** + * A call to `request.body.read` from within a Grape API endpoint, which reads + * the raw, unparsed request body and can contain user input. + */ + class GrapeRequestBodyReadSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestBodyReadSource() { + this.asExpr().getExpr() = + grapeRequestInstance().getReturn("body").getAMethodCall("read").asExpr().getExpr() + } + + override string getSourceType() { result = "Grape::Request#body.read" } + + override Http::Server::RequestInputKind getKind() { result = Http::Server::bodyInputKind() } + } + + /** + * A call to `request.body.string` from within a Grape API endpoint, which reads + * the raw, unparsed request body and can contain user input. + */ + class GrapeRequestBodyStringSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestBodyStringSource() { + this.asExpr().getExpr() = + grapeRequestInstance().getReturn("body").getAMethodCall("string").asExpr().getExpr() + } + + override string getSourceType() { result = "Grape::Request#body.string" } + + override Http::Server::RequestInputKind getKind() { result = Http::Server::bodyInputKind() } + } + + /** + * A call to `request.params` from within a Grape API endpoint. + */ + class GrapeRequestParamsSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestParamsSource() { + this.asExpr().getExpr() = grapeRequestInstance().getAMethodCall("params").asExpr().getExpr() + } + + override string getSourceType() { result = "Grape::Request#params" } + + override Http::Server::RequestInputKind getKind() { + result = Http::Server::parameterInputKind() + } + } + + /** + * A call to `request.GET` from within a Grape API endpoint, which returns the + * parsed query-string parameters. + */ + class GrapeRequestGetSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestGetSource() { + this.asExpr().getExpr() = grapeRequestInstance().getAMethodCall("GET").asExpr().getExpr() + } + + override string getSourceType() { result = "Grape::Request#GET" } + + override Http::Server::RequestInputKind getKind() { + result = Http::Server::parameterInputKind() + } + } + + /** + * A call to `request.POST` from within a Grape API endpoint, which returns the + * parsed form/body parameters. + */ + class GrapeRequestPostSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestPostSource() { + this.asExpr().getExpr() = grapeRequestInstance().getAMethodCall("POST").asExpr().getExpr() + } + + override string getSourceType() { result = "Grape::Request#POST" } + + override Http::Server::RequestInputKind getKind() { result = Http::Server::bodyInputKind() } + } + + /** + * A call to `request.cookies` from within a Grape API endpoint. + */ + class GrapeRequestCookiesSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestCookiesSource() { + this.asExpr().getExpr() = grapeRequestInstance().getAMethodCall("cookies").asExpr().getExpr() + } + + override string getSourceType() { result = "Grape::Request#cookies" } + + override Http::Server::RequestInputKind getKind() { result = Http::Server::cookieInputKind() } + } + + /** + * A call to `request.env` from within a Grape API endpoint, which returns the + * underlying Rack environment hash. + */ + class GrapeRequestEnvSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestEnvSource() { + this.asExpr().getExpr() = grapeRequestInstance().getAMethodCall("env").asExpr().getExpr() + } + + override string getSourceType() { result = "Grape::Request#env" } + + override Http::Server::RequestInputKind getKind() { + result = Http::Server::parameterInputKind() + } + } + + /** + * A call to `request.query_string` from within a Grape API endpoint. + */ + class GrapeRequestQueryStringSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestQueryStringSource() { + this.asExpr().getExpr() = + grapeRequestInstance().getAMethodCall("query_string").asExpr().getExpr() + } + + override string getSourceType() { result = "Grape::Request#query_string" } + + override Http::Server::RequestInputKind getKind() { + result = Http::Server::parameterInputKind() + } + } + + /** + * A call to `request.path_info` from within a Grape API endpoint. + */ + class GrapeRequestPathInfoSource extends Http::Server::RequestInputAccess::Range { + GrapeRequestPathInfoSource() { + this.asExpr().getExpr() = + grapeRequestInstance().getAMethodCall("path_info").asExpr().getExpr() + } + + override string getSourceType() { result = "Grape::Request#path_info" } + + override Http::Server::RequestInputKind getKind() { result = Http::Server::urlInputKind() } + } + /** * A call to `route_param` from within a Grape API endpoint. */ diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 2c52daba2b15..f4c4b446b8c0 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 7.0.0 +version: 7.1.0 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/ruby/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 1cbc37a7fe85..08768162c173 100644 --- a/ruby/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/ruby/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import ruby private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/ruby/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/ruby/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index bd84f530f9c3..d445c91d2e8f 100644 --- a/ruby/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/ruby/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -36,4 +36,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = R::Location; + + string getRelativeUrl(Location location) { + exists(R::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index c8a0fd7cbbc3..9598ffe138a1 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.6.13 + +No user-facing changes. + +## 1.6.12 + +No user-facing changes. + +## 1.6.11 + +No user-facing changes. + ## 1.6.10 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.6.11.md b/ruby/ql/src/change-notes/released/1.6.11.md new file mode 100644 index 000000000000..cd335cb7d261 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.6.11.md @@ -0,0 +1,3 @@ +## 1.6.11 + +No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.6.12.md b/ruby/ql/src/change-notes/released/1.6.12.md new file mode 100644 index 000000000000..1e23a10579f9 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.6.12.md @@ -0,0 +1,3 @@ +## 1.6.12 + +No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.6.13.md b/ruby/ql/src/change-notes/released/1.6.13.md new file mode 100644 index 000000000000..f15eb488f526 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.6.13.md @@ -0,0 +1,3 @@ +## 1.6.13 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 995e7a94a564..c34c18075123 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.10 +lastReleaseVersion: 1.6.13 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index a215aec72b83..f9e0fa851661 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.6.10 +version: 1.6.13 groups: - ruby - queries diff --git a/ruby/ql/test/library-tests/frameworks/grape/Flow.expected b/ruby/ql/test/library-tests/frameworks/grape/Flow.expected index f04bd930ea97..23f8d78bb053 100644 --- a/ruby/ql/test/library-tests/frameworks/grape/Flow.expected +++ b/ruby/ql/test/library-tests/frameworks/grape/Flow.expected @@ -33,6 +33,8 @@ edges | app.rb:169:9:169:15 | session | app.rb:176:14:176:20 | session | provenance | | | app.rb:169:19:169:25 | call to cookies | app.rb:169:19:169:38 | ...[...] | provenance | | | app.rb:169:19:169:38 | ...[...] | app.rb:169:9:169:15 | session | provenance | | +| app.rb:170:9:170:17 | body_data | app.rb:177:14:177:22 | body_data | provenance | | +| app.rb:170:21:170:37 | call to read | app.rb:170:9:170:17 | body_data | provenance | | | app.rb:183:9:183:14 | result | app.rb:184:14:184:19 | result | provenance | | | app.rb:183:9:183:14 | result | app.rb:184:14:184:19 | result | provenance | | | app.rb:183:18:183:43 | call to vulnerable_helper | app.rb:183:9:183:14 | result | provenance | | @@ -76,6 +78,24 @@ edges | app.rb:235:13:235:23 | case_result | app.rb:236:18:236:28 | case_result | provenance | | | app.rb:235:27:235:37 | call to test_helper | app.rb:235:13:235:23 | case_result | provenance | | | app.rb:235:27:235:37 | call to test_helper | app.rb:235:13:235:23 | case_result | provenance | | +| app.rb:247:5:247:13 | body_data | app.rb:248:10:248:18 | body_data | provenance | | +| app.rb:247:17:247:33 | call to read | app.rb:247:5:247:13 | body_data | provenance | | +| app.rb:252:5:252:13 | body_data | app.rb:253:10:253:18 | body_data | provenance | | +| app.rb:252:17:252:35 | call to string | app.rb:252:5:252:13 | body_data | provenance | | +| app.rb:257:5:257:15 | params_hash | app.rb:258:10:258:20 | params_hash | provenance | | +| app.rb:257:19:257:32 | call to params | app.rb:257:5:257:15 | params_hash | provenance | | +| app.rb:262:5:262:14 | get_params | app.rb:263:10:263:19 | get_params | provenance | | +| app.rb:262:18:262:28 | call to GET | app.rb:262:5:262:14 | get_params | provenance | | +| app.rb:267:5:267:15 | post_params | app.rb:268:10:268:20 | post_params | provenance | | +| app.rb:267:19:267:30 | call to POST | app.rb:267:5:267:15 | post_params | provenance | | +| app.rb:272:5:272:15 | cookie_data | app.rb:273:10:273:20 | cookie_data | provenance | | +| app.rb:272:19:272:33 | call to cookies | app.rb:272:5:272:15 | cookie_data | provenance | | +| app.rb:277:5:277:12 | env_data | app.rb:278:10:278:17 | env_data | provenance | | +| app.rb:277:16:277:26 | call to env | app.rb:277:5:277:12 | env_data | provenance | | +| app.rb:282:5:282:6 | qs | app.rb:283:10:283:11 | qs | provenance | | +| app.rb:282:10:282:29 | call to query_string | app.rb:282:5:282:6 | qs | provenance | | +| app.rb:287:5:287:8 | path | app.rb:288:10:288:13 | path | provenance | | +| app.rb:287:12:287:28 | call to path_info | app.rb:287:5:287:8 | path | provenance | | nodes | app.rb:103:13:103:18 | call to params | semmle.label | call to params | | app.rb:103:13:103:70 | call to select | semmle.label | call to select | @@ -107,10 +127,13 @@ nodes | app.rb:169:9:169:15 | session | semmle.label | session | | app.rb:169:19:169:25 | call to cookies | semmle.label | call to cookies | | app.rb:169:19:169:38 | ...[...] | semmle.label | ...[...] | +| app.rb:170:9:170:17 | body_data | semmle.label | body_data | +| app.rb:170:21:170:37 | call to read | semmle.label | call to read | | app.rb:173:14:173:20 | user_id | semmle.label | user_id | | app.rb:174:14:174:21 | route_id | semmle.label | route_id | | app.rb:175:14:175:17 | auth | semmle.label | auth | | app.rb:176:14:176:20 | session | semmle.label | session | +| app.rb:177:14:177:22 | body_data | semmle.label | body_data | | app.rb:183:9:183:14 | result | semmle.label | result | | app.rb:183:9:183:14 | result | semmle.label | result | | app.rb:183:18:183:43 | call to vulnerable_helper | semmle.label | call to vulnerable_helper | @@ -173,6 +196,33 @@ nodes | app.rb:235:27:235:37 | call to test_helper | semmle.label | call to test_helper | | app.rb:236:18:236:28 | case_result | semmle.label | case_result | | app.rb:236:18:236:28 | case_result | semmle.label | case_result | +| app.rb:247:5:247:13 | body_data | semmle.label | body_data | +| app.rb:247:17:247:33 | call to read | semmle.label | call to read | +| app.rb:248:10:248:18 | body_data | semmle.label | body_data | +| app.rb:252:5:252:13 | body_data | semmle.label | body_data | +| app.rb:252:17:252:35 | call to string | semmle.label | call to string | +| app.rb:253:10:253:18 | body_data | semmle.label | body_data | +| app.rb:257:5:257:15 | params_hash | semmle.label | params_hash | +| app.rb:257:19:257:32 | call to params | semmle.label | call to params | +| app.rb:258:10:258:20 | params_hash | semmle.label | params_hash | +| app.rb:262:5:262:14 | get_params | semmle.label | get_params | +| app.rb:262:18:262:28 | call to GET | semmle.label | call to GET | +| app.rb:263:10:263:19 | get_params | semmle.label | get_params | +| app.rb:267:5:267:15 | post_params | semmle.label | post_params | +| app.rb:267:19:267:30 | call to POST | semmle.label | call to POST | +| app.rb:268:10:268:20 | post_params | semmle.label | post_params | +| app.rb:272:5:272:15 | cookie_data | semmle.label | cookie_data | +| app.rb:272:19:272:33 | call to cookies | semmle.label | call to cookies | +| app.rb:273:10:273:20 | cookie_data | semmle.label | cookie_data | +| app.rb:277:5:277:12 | env_data | semmle.label | env_data | +| app.rb:277:16:277:26 | call to env | semmle.label | call to env | +| app.rb:278:10:278:17 | env_data | semmle.label | env_data | +| app.rb:282:5:282:6 | qs | semmle.label | qs | +| app.rb:282:10:282:29 | call to query_string | semmle.label | call to query_string | +| app.rb:283:10:283:11 | qs | semmle.label | qs | +| app.rb:287:5:287:8 | path | semmle.label | path | +| app.rb:287:12:287:28 | call to path_info | semmle.label | call to path_info | +| app.rb:288:10:288:13 | path | semmle.label | path | subpaths testFailures #select @@ -180,6 +230,7 @@ testFailures | app.rb:174:14:174:21 | route_id | app.rb:167:20:167:40 | call to route_param | app.rb:174:14:174:21 | route_id | $@ | app.rb:167:20:167:40 | call to route_param | call to route_param | | app.rb:175:14:175:17 | auth | app.rb:168:16:168:22 | call to headers | app.rb:175:14:175:17 | auth | $@ | app.rb:168:16:168:22 | call to headers | call to headers | | app.rb:176:14:176:20 | session | app.rb:169:19:169:25 | call to cookies | app.rb:176:14:176:20 | session | $@ | app.rb:169:19:169:25 | call to cookies | call to cookies | +| app.rb:177:14:177:22 | body_data | app.rb:170:21:170:37 | call to read | app.rb:177:14:177:22 | body_data | $@ | app.rb:170:21:170:37 | call to read | call to read | | app.rb:184:14:184:19 | result | app.rb:107:13:107:32 | call to source | app.rb:184:14:184:19 | result | $@ | app.rb:107:13:107:32 | call to source | call to source | | app.rb:184:14:184:19 | result | app.rb:107:13:107:32 | call to source | app.rb:184:14:184:19 | result | $@ | app.rb:107:13:107:32 | call to source | call to source | | app.rb:191:14:191:22 | user_data | app.rb:103:13:103:18 | call to params | app.rb:191:14:191:22 | user_data | $@ | app.rb:103:13:103:18 | call to params | call to params | @@ -199,3 +250,12 @@ testFailures | app.rb:231:14:231:26 | rescue_result | app.rb:140:17:140:37 | call to source | app.rb:231:14:231:26 | rescue_result | $@ | app.rb:140:17:140:37 | call to source | call to source | | app.rb:236:18:236:28 | case_result | app.rb:150:17:150:35 | call to source | app.rb:236:18:236:28 | case_result | $@ | app.rb:150:17:150:35 | call to source | call to source | | app.rb:236:18:236:28 | case_result | app.rb:150:17:150:35 | call to source | app.rb:236:18:236:28 | case_result | $@ | app.rb:150:17:150:35 | call to source | call to source | +| app.rb:248:10:248:18 | body_data | app.rb:247:17:247:33 | call to read | app.rb:248:10:248:18 | body_data | $@ | app.rb:247:17:247:33 | call to read | call to read | +| app.rb:253:10:253:18 | body_data | app.rb:252:17:252:35 | call to string | app.rb:253:10:253:18 | body_data | $@ | app.rb:252:17:252:35 | call to string | call to string | +| app.rb:258:10:258:20 | params_hash | app.rb:257:19:257:32 | call to params | app.rb:258:10:258:20 | params_hash | $@ | app.rb:257:19:257:32 | call to params | call to params | +| app.rb:263:10:263:19 | get_params | app.rb:262:18:262:28 | call to GET | app.rb:263:10:263:19 | get_params | $@ | app.rb:262:18:262:28 | call to GET | call to GET | +| app.rb:268:10:268:20 | post_params | app.rb:267:19:267:30 | call to POST | app.rb:268:10:268:20 | post_params | $@ | app.rb:267:19:267:30 | call to POST | call to POST | +| app.rb:273:10:273:20 | cookie_data | app.rb:272:19:272:33 | call to cookies | app.rb:273:10:273:20 | cookie_data | $@ | app.rb:272:19:272:33 | call to cookies | call to cookies | +| app.rb:278:10:278:17 | env_data | app.rb:277:16:277:26 | call to env | app.rb:278:10:278:17 | env_data | $@ | app.rb:277:16:277:26 | call to env | call to env | +| app.rb:283:10:283:11 | qs | app.rb:282:10:282:29 | call to query_string | app.rb:283:10:283:11 | qs | $@ | app.rb:282:10:282:29 | call to query_string | call to query_string | +| app.rb:288:10:288:13 | path | app.rb:287:12:287:28 | call to path_info | app.rb:288:10:288:13 | path | $@ | app.rb:287:12:287:28 | call to path_info | call to path_info | diff --git a/ruby/ql/test/library-tests/frameworks/grape/Grape.expected b/ruby/ql/test/library-tests/frameworks/grape/Grape.expected index 7088eeb9018a..778eeb050849 100644 --- a/ruby/ql/test/library-tests/frameworks/grape/Grape.expected +++ b/ruby/ql/test/library-tests/frameworks/grape/Grape.expected @@ -2,6 +2,7 @@ grapeApiClasses | app.rb:1:1:90:3 | MyAPI | | app.rb:92:1:96:3 | AdminAPI | | app.rb:98:1:239:3 | UserAPI | +| app.rb:243:1:290:3 | RequestAccessorsAPI | grapeEndpoints | app.rb:1:1:90:3 | MyAPI | app.rb:7:3:11:5 | call to get | GET | /hello/:name | | app.rb:1:1:90:3 | MyAPI | app.rb:17:3:20:5 | call to post | POST | /messages | @@ -19,6 +20,15 @@ grapeEndpoints | app.rb:98:1:239:3 | UserAPI | app.rb:187:5:193:7 | call to post | POST | /users | | app.rb:98:1:239:3 | UserAPI | app.rb:204:5:207:7 | call to post | POST | /users | | app.rb:98:1:239:3 | UserAPI | app.rb:210:5:238:7 | call to get | GET | /nested_test/:token | +| app.rb:243:1:290:3 | RequestAccessorsAPI | app.rb:246:3:249:5 | call to get | GET | /body_read_test | +| app.rb:243:1:290:3 | RequestAccessorsAPI | app.rb:251:3:254:5 | call to get | GET | /body_string_test | +| app.rb:243:1:290:3 | RequestAccessorsAPI | app.rb:256:3:259:5 | call to get | GET | /request_params_test | +| app.rb:243:1:290:3 | RequestAccessorsAPI | app.rb:261:3:264:5 | call to get | GET | /request_get_test | +| app.rb:243:1:290:3 | RequestAccessorsAPI | app.rb:266:3:269:5 | call to get | GET | /request_post_test | +| app.rb:243:1:290:3 | RequestAccessorsAPI | app.rb:271:3:274:5 | call to get | GET | /request_cookies_test | +| app.rb:243:1:290:3 | RequestAccessorsAPI | app.rb:276:3:279:5 | call to get | GET | /request_env_test | +| app.rb:243:1:290:3 | RequestAccessorsAPI | app.rb:281:3:284:5 | call to get | GET | /request_query_string_test | +| app.rb:243:1:290:3 | RequestAccessorsAPI | app.rb:286:3:289:5 | call to get | GET | /request_path_info_test | grapeParams | app.rb:8:12:8:17 | call to params | | app.rb:14:3:16:5 | call to params | @@ -44,6 +54,15 @@ grapeHeaders grapeRequest | app.rb:25:12:25:18 | call to request | | app.rb:170:21:170:27 | call to request | +| app.rb:247:17:247:23 | call to request | +| app.rb:252:17:252:23 | call to request | +| app.rb:257:19:257:25 | call to request | +| app.rb:262:18:262:24 | call to request | +| app.rb:267:19:267:25 | call to request | +| app.rb:272:19:272:25 | call to request | +| app.rb:277:16:277:22 | call to request | +| app.rb:282:10:282:16 | call to request | +| app.rb:287:12:287:18 | call to request | grapeRouteParam | app.rb:51:15:51:35 | call to route_param | | app.rb:52:15:52:36 | call to route_param | @@ -56,3 +75,23 @@ grapeCookies | app.rb:80:16:80:22 | call to cookies | | app.rb:160:5:162:7 | call to cookies | | app.rb:169:19:169:25 | call to cookies | +grapeRequestBodyRead +| app.rb:25:12:25:28 | call to read | body | +| app.rb:170:21:170:37 | call to read | body | +| app.rb:247:17:247:33 | call to read | body | +grapeRequestBodyString +| app.rb:252:17:252:35 | call to string | body | +grapeRequestParams +| app.rb:257:19:257:32 | call to params | parameter | +grapeRequestGet +| app.rb:262:18:262:28 | call to GET | parameter | +grapeRequestPost +| app.rb:267:19:267:30 | call to POST | body | +grapeRequestCookies +| app.rb:272:19:272:33 | call to cookies | cookie | +grapeRequestEnv +| app.rb:277:16:277:26 | call to env | parameter | +grapeRequestQueryString +| app.rb:282:10:282:29 | call to query_string | parameter | +grapeRequestPathInfo +| app.rb:287:12:287:28 | call to path_info | url | diff --git a/ruby/ql/test/library-tests/frameworks/grape/Grape.ql b/ruby/ql/test/library-tests/frameworks/grape/Grape.ql index 63cd15a547e1..01d9b5095f53 100644 --- a/ruby/ql/test/library-tests/frameworks/grape/Grape.ql +++ b/ruby/ql/test/library-tests/frameworks/grape/Grape.ql @@ -22,3 +22,39 @@ query predicate grapeRequest(Grape::GrapeRequestSource request) { any() } query predicate grapeRouteParam(Grape::GrapeRouteParamSource routeParam) { any() } query predicate grapeCookies(Grape::GrapeCookiesSource cookies) { any() } + +query predicate grapeRequestBodyRead(Grape::GrapeRequestBodyReadSource src, string kind) { + kind = src.getKind() +} + +query predicate grapeRequestBodyString(Grape::GrapeRequestBodyStringSource src, string kind) { + kind = src.getKind() +} + +query predicate grapeRequestParams(Grape::GrapeRequestParamsSource src, string kind) { + kind = src.getKind() +} + +query predicate grapeRequestGet(Grape::GrapeRequestGetSource src, string kind) { + kind = src.getKind() +} + +query predicate grapeRequestPost(Grape::GrapeRequestPostSource src, string kind) { + kind = src.getKind() +} + +query predicate grapeRequestCookies(Grape::GrapeRequestCookiesSource src, string kind) { + kind = src.getKind() +} + +query predicate grapeRequestEnv(Grape::GrapeRequestEnvSource src, string kind) { + kind = src.getKind() +} + +query predicate grapeRequestQueryString(Grape::GrapeRequestQueryStringSource src, string kind) { + kind = src.getKind() +} + +query predicate grapeRequestPathInfo(Grape::GrapeRequestPathInfoSource src, string kind) { + kind = src.getKind() +} diff --git a/ruby/ql/test/library-tests/frameworks/grape/app.rb b/ruby/ql/test/library-tests/frameworks/grape/app.rb index 1b1fd15d5d8c..4148e9256768 100644 --- a/ruby/ql/test/library-tests/frameworks/grape/app.rb +++ b/ruby/ql/test/library-tests/frameworks/grape/app.rb @@ -174,7 +174,7 @@ def test_helper sink route_id # $ hasTaintFlow sink auth # $ hasTaintFlow sink session # $ hasTaintFlow - # Note: request.body.read may not be detected by this flow test config + sink body_data # $ hasTaintFlow end get '/helper_test/:user_id' do @@ -237,3 +237,54 @@ def test_helper end end end + +# Exercises `request` sub-accessors (body, params, GET, POST, cookies, env, +# query_string, path_info) as remote flow sources. +class RequestAccessorsAPI < Grape::API + format :json + + get '/body_read_test' do + body_data = request.body.read + sink body_data # $ hasTaintFlow + end + + get '/body_string_test' do + body_data = request.body.string + sink body_data # $ hasTaintFlow + end + + get '/request_params_test' do + params_hash = request.params + sink params_hash # $ hasTaintFlow + end + + get '/request_get_test' do + get_params = request.GET + sink get_params # $ hasTaintFlow + end + + get '/request_post_test' do + post_params = request.POST + sink post_params # $ hasTaintFlow + end + + get '/request_cookies_test' do + cookie_data = request.cookies + sink cookie_data # $ hasTaintFlow + end + + get '/request_env_test' do + env_data = request.env + sink env_data # $ hasTaintFlow + end + + get '/request_query_string_test' do + qs = request.query_string + sink qs # $ hasTaintFlow + end + + get '/request_path_info_test' do + path = request.path_info + sink path # $ hasTaintFlow + end +end diff --git a/ruby/ql/test/query-tests/security/cwe-089/ConnectedToInjection.rb b/ruby/ql/test/query-tests/security/cwe-089/ConnectedToInjection.rb new file mode 100644 index 000000000000..4d57fc9bbe93 --- /dev/null +++ b/ruby/ql/test/query-tests/security/cwe-089/ConnectedToInjection.rb @@ -0,0 +1,37 @@ +class EventsController < ActionController::Base + # BAD: remote input captured by a block is interpolated into raw SQL + # executed inside an ActiveRecord `connected_to` role-switch block. + def date_range_report + lower_bound = params[:lower_bound] # $ Source + upper_bound = params[:upper_bound] # $ Source + + ApplicationRecord.connected_to(role: :reading) do + ApplicationRecord.connection.execute( + "SELECT * FROM events WHERE start_time BETWEEN '#{lower_bound}' AND '#{upper_bound}'" # $ Alert + ) + end + end + + # BAD: same pattern with a single captured bound + def since_report + lower_bound = params[:lower_bound] # $ Source + + ApplicationRecord.connected_to(role: :reading) do + ApplicationRecord.connection.execute("SELECT * FROM events WHERE created_at > '#{lower_bound}'") # $ Alert + end + end + + # BAD: value read inside the block is assigned to an outer-scope variable, + # then interpolated into SQL executed after the block returns. + def deferred_report + lower_bound = params[:lower_bound] # $ Source + captured = nil + + ApplicationRecord.connected_to(role: :reading) do + captured = lower_bound + end + + sql = "SELECT * FROM events WHERE created_at > '#{captured}'" + ApplicationRecord.connection.execute(sql) # $ Alert + end +end diff --git a/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected index c8926f635c47..590f3bfd104d 100644 --- a/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected @@ -41,6 +41,10 @@ | ActiveRecordInjection.rb:217:38:217:53 | "role = #{...}" | ActiveRecordInjection.rb:223:29:223:34 | call to params | ActiveRecordInjection.rb:217:38:217:53 | "role = #{...}" | This SQL query depends on a $@. | ActiveRecordInjection.rb:223:29:223:34 | call to params | user-provided value | | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | This SQL query depends on a $@. | ArelInjection.rb:4:12:4:17 | call to params | user-provided value | | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | This SQL query depends on a $@. | ArelInjection.rb:4:12:4:17 | call to params | user-provided value | +| ConnectedToInjection.rb:10:9:10:93 | "SELECT * FROM events WHERE st..." | ConnectedToInjection.rb:5:19:5:24 | call to params | ConnectedToInjection.rb:10:9:10:93 | "SELECT * FROM events WHERE st..." | This SQL query depends on a $@. | ConnectedToInjection.rb:5:19:5:24 | call to params | user-provided value | +| ConnectedToInjection.rb:10:9:10:93 | "SELECT * FROM events WHERE st..." | ConnectedToInjection.rb:6:19:6:24 | call to params | ConnectedToInjection.rb:10:9:10:93 | "SELECT * FROM events WHERE st..." | This SQL query depends on a $@. | ConnectedToInjection.rb:6:19:6:24 | call to params | user-provided value | +| ConnectedToInjection.rb:20:44:20:101 | "SELECT * FROM events WHERE cr..." | ConnectedToInjection.rb:17:19:17:24 | call to params | ConnectedToInjection.rb:20:44:20:101 | "SELECT * FROM events WHERE cr..." | This SQL query depends on a $@. | ConnectedToInjection.rb:17:19:17:24 | call to params | user-provided value | +| ConnectedToInjection.rb:35:42:35:44 | sql | ConnectedToInjection.rb:27:19:27:24 | call to params | ConnectedToInjection.rb:35:42:35:44 | sql | This SQL query depends on a $@. | ConnectedToInjection.rb:27:19:27:24 | call to params | user-provided value | | PgInjection.rb:14:15:14:18 | qry1 | PgInjection.rb:6:12:6:17 | call to params | PgInjection.rb:14:15:14:18 | qry1 | This SQL query depends on a $@. | PgInjection.rb:6:12:6:17 | call to params | user-provided value | | PgInjection.rb:15:21:15:24 | qry1 | PgInjection.rb:6:12:6:17 | call to params | PgInjection.rb:15:21:15:24 | qry1 | This SQL query depends on a $@. | PgInjection.rb:6:12:6:17 | call to params | user-provided value | | PgInjection.rb:20:22:20:25 | qry2 | PgInjection.rb:6:12:6:17 | call to params | PgInjection.rb:20:22:20:25 | qry2 | This SQL query depends on a $@. | PgInjection.rb:6:12:6:17 | call to params | user-provided value | @@ -130,6 +134,24 @@ edges | ArelInjection.rb:4:5:4:8 | name | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | provenance | AdditionalTaintStep | | ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:4:12:4:29 | ...[...] | provenance | | | ArelInjection.rb:4:12:4:29 | ...[...] | ArelInjection.rb:4:5:4:8 | name | provenance | | +| ConnectedToInjection.rb:5:19:5:24 | call to params | ConnectedToInjection.rb:5:19:5:38 | ...[...] | provenance | | +| ConnectedToInjection.rb:5:19:5:38 | ...[...] | ConnectedToInjection.rb:8:52:12:7 | do ... end : [lambda] [captured lower_bound] | provenance | | +| ConnectedToInjection.rb:6:19:6:24 | call to params | ConnectedToInjection.rb:6:19:6:38 | ...[...] | provenance | | +| ConnectedToInjection.rb:6:19:6:38 | ...[...] | ConnectedToInjection.rb:8:52:12:7 | do ... end : [lambda] [captured upper_bound] | provenance | | +| ConnectedToInjection.rb:8:52:12:7 | do ... end : [lambda] [captured lower_bound] | ConnectedToInjection.rb:10:59:10:69 | lower_bound | provenance | heuristic-callback | +| ConnectedToInjection.rb:8:52:12:7 | do ... end : [lambda] [captured upper_bound] | ConnectedToInjection.rb:10:80:10:90 | upper_bound | provenance | heuristic-callback | +| ConnectedToInjection.rb:10:59:10:69 | lower_bound | ConnectedToInjection.rb:10:9:10:93 | "SELECT * FROM events WHERE st..." | provenance | AdditionalTaintStep | +| ConnectedToInjection.rb:10:80:10:90 | upper_bound | ConnectedToInjection.rb:10:9:10:93 | "SELECT * FROM events WHERE st..." | provenance | AdditionalTaintStep | +| ConnectedToInjection.rb:17:19:17:24 | call to params | ConnectedToInjection.rb:17:19:17:38 | ...[...] | provenance | | +| ConnectedToInjection.rb:17:19:17:38 | ...[...] | ConnectedToInjection.rb:19:52:21:7 | do ... end : [lambda] [captured lower_bound] | provenance | | +| ConnectedToInjection.rb:19:52:21:7 | do ... end : [lambda] [captured lower_bound] | ConnectedToInjection.rb:20:88:20:98 | lower_bound | provenance | heuristic-callback | +| ConnectedToInjection.rb:20:88:20:98 | lower_bound | ConnectedToInjection.rb:20:44:20:101 | "SELECT * FROM events WHERE cr..." | provenance | AdditionalTaintStep | +| ConnectedToInjection.rb:27:19:27:24 | call to params | ConnectedToInjection.rb:27:19:27:38 | ...[...] | provenance | | +| ConnectedToInjection.rb:27:19:27:38 | ...[...] | ConnectedToInjection.rb:30:52:32:7 | do ... end : [lambda] [captured lower_bound] | provenance | | +| ConnectedToInjection.rb:30:52:32:7 | [post] do ... end : [lambda] [captured captured] | ConnectedToInjection.rb:34:5:34:7 | sql : String | provenance | AdditionalTaintStep | +| ConnectedToInjection.rb:30:52:32:7 | do ... end : [lambda] [captured lower_bound] | ConnectedToInjection.rb:30:52:32:7 | [post] do ... end : [lambda] [captured captured] | provenance | heuristic-callback | +| ConnectedToInjection.rb:30:52:32:7 | do ... end : [lambda] [captured lower_bound] | ConnectedToInjection.rb:31:18:31:28 | lower_bound | provenance | heuristic-callback | +| ConnectedToInjection.rb:34:5:34:7 | sql : String | ConnectedToInjection.rb:35:42:35:44 | sql | provenance | | | PgInjection.rb:6:5:6:8 | name | PgInjection.rb:13:5:13:8 | qry1 : String | provenance | AdditionalTaintStep | | PgInjection.rb:6:5:6:8 | name | PgInjection.rb:19:5:19:8 | qry2 : String | provenance | AdditionalTaintStep | | PgInjection.rb:6:5:6:8 | name | PgInjection.rb:31:5:31:8 | qry3 : String | provenance | AdditionalTaintStep | @@ -258,6 +280,27 @@ nodes | ArelInjection.rb:4:12:4:29 | ...[...] | semmle.label | ...[...] | | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | semmle.label | "SELECT * FROM users WHERE nam..." | | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | semmle.label | "SELECT * FROM users WHERE nam..." | +| ConnectedToInjection.rb:5:19:5:24 | call to params | semmle.label | call to params | +| ConnectedToInjection.rb:5:19:5:38 | ...[...] | semmle.label | ...[...] | +| ConnectedToInjection.rb:6:19:6:24 | call to params | semmle.label | call to params | +| ConnectedToInjection.rb:6:19:6:38 | ...[...] | semmle.label | ...[...] | +| ConnectedToInjection.rb:8:52:12:7 | do ... end : [lambda] [captured lower_bound] | semmle.label | do ... end : [lambda] [captured lower_bound] | +| ConnectedToInjection.rb:8:52:12:7 | do ... end : [lambda] [captured upper_bound] | semmle.label | do ... end : [lambda] [captured upper_bound] | +| ConnectedToInjection.rb:10:9:10:93 | "SELECT * FROM events WHERE st..." | semmle.label | "SELECT * FROM events WHERE st..." | +| ConnectedToInjection.rb:10:59:10:69 | lower_bound | semmle.label | lower_bound | +| ConnectedToInjection.rb:10:80:10:90 | upper_bound | semmle.label | upper_bound | +| ConnectedToInjection.rb:17:19:17:24 | call to params | semmle.label | call to params | +| ConnectedToInjection.rb:17:19:17:38 | ...[...] | semmle.label | ...[...] | +| ConnectedToInjection.rb:19:52:21:7 | do ... end : [lambda] [captured lower_bound] | semmle.label | do ... end : [lambda] [captured lower_bound] | +| ConnectedToInjection.rb:20:44:20:101 | "SELECT * FROM events WHERE cr..." | semmle.label | "SELECT * FROM events WHERE cr..." | +| ConnectedToInjection.rb:20:88:20:98 | lower_bound | semmle.label | lower_bound | +| ConnectedToInjection.rb:27:19:27:24 | call to params | semmle.label | call to params | +| ConnectedToInjection.rb:27:19:27:38 | ...[...] | semmle.label | ...[...] | +| ConnectedToInjection.rb:30:52:32:7 | [post] do ... end : [lambda] [captured captured] | semmle.label | [post] do ... end : [lambda] [captured captured] | +| ConnectedToInjection.rb:30:52:32:7 | do ... end : [lambda] [captured lower_bound] | semmle.label | do ... end : [lambda] [captured lower_bound] | +| ConnectedToInjection.rb:31:18:31:28 | lower_bound | semmle.label | lower_bound | +| ConnectedToInjection.rb:34:5:34:7 | sql : String | semmle.label | sql : String | +| ConnectedToInjection.rb:35:42:35:44 | sql | semmle.label | sql | | PgInjection.rb:6:5:6:8 | name | semmle.label | name | | PgInjection.rb:6:12:6:17 | call to params | semmle.label | call to params | | PgInjection.rb:6:12:6:24 | ...[...] | semmle.label | ...[...] | @@ -272,3 +315,4 @@ nodes | PgInjection.rb:43:5:43:8 | qry3 : String | semmle.label | qry3 : String | | PgInjection.rb:44:29:44:32 | qry3 | semmle.label | qry3 | subpaths +| ConnectedToInjection.rb:30:52:32:7 | do ... end : [lambda] [captured lower_bound] | ConnectedToInjection.rb:31:18:31:28 | lower_bound | ConnectedToInjection.rb:31:18:31:28 | lower_bound | ConnectedToInjection.rb:30:52:32:7 | [post] do ... end : [lambda] [captured captured] | diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 60d093c30021..80b98bd34610 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -5,6 +5,6 @@ # reflected by `MODULE.bazel` in this repository). [toolchain] -channel = "1.91" +channel = "1.98" profile = "minimal" components = [ "clippy", "rustfmt" ] diff --git a/rust/BUILD.bazel b/rust/BUILD.bazel index 6536a4b6fd9e..d574cbc7c330 100644 --- a/rust/BUILD.bazel +++ b/rust/BUILD.bazel @@ -58,5 +58,4 @@ codeql_pack( ":tools", "//rust/downgrades", ], - experimental = True, ) diff --git a/rust/README.md b/rust/README.md index 4fdbb0aedbdd..83d9a735df65 100644 --- a/rust/README.md +++ b/rust/README.md @@ -62,51 +62,4 @@ for code generation to succeed. ### Updating `rust-analyzer` -Here's a rundown of the typical actions to perform to do a rust-analyzer (and other dependencies) update. A one-time setup consists in -installing [`cargo-edit`](https://crates.io/crates/cargo-edit) with `cargo install cargo-edit`. On Ubuntu that also requires -`sudo apt install libssl-dev pkg-config`. - -1. From the root of the `codeql` repo checkout, run a Cargo upgrade: - ``` - cargo upgrade --incompatible --pinned - ``` -2. Look at a diff of the `Cargo.toml` files: if all `ra_ap_` prefixed dependencies have been updated to the same number, go on to the next step. - Otherwise, it means the latest `rust-analyzer` update has not been fully rolled out to all its crates in `crates.io`. - _All `ra_ap_` versions must agree!_ - Downgrade by hand to the minimum one you see, and run a `cargo update` after that to fix the `Cargo.lock` file. -3. Commit the changes, skipping `pre-commit` hooks if you have them enabled: - ``` - git commit -am 'Cargo: upgrade dependencies' --no-verify - ``` -4. Regenerate vendored bazel files (these allow faster builds, particularly on CI where it has to start from scratch each time), commit the changes: - ``` - misc/bazel/3rdparty/update_tree_sitter_extractors_deps.sh - git add . - git commit -am 'Bazel: regenerate vendored cargo dependencies' --no-verify - ``` -5. Run codegen - ``` - bazel run //rust/codegen - ``` - Take note whether `rust/schema/ast.py` was changed. That might need tweaks, new tests and/or downgrade/upgrade scripts down the line. -6. Try compiling - ``` - bazel run //rust:install - ``` - * if it succeeds: good! You can move on to the next step. - * if it fails while compiling rust-analyzer dependencies, you need to update the rust toolchain. Sometimes the error will tell you - so explicitly, but it may happen that the error is more obscure. To update the rust toolchain: - * you will need to open a PR on the internal repo updating `RUST_VERSION` in `MODULE.bazel`. In general you can have this merged - independently of the changes in `codeql`. - * in `codeql`, update both `RUST_VERSION` in `MODULE.bazel` _and_ `rust-toolchain.toml` files. You may want to also update the - nightly toolchain in `rust/extractor/src/nightly-toolchain/rust-toolchain.toml` to a more recent date while you're at it. - * if it fails while compiling rust extractor code, you will need to adapt it to the new library version. - * for example updating annotations in `annotations.py`, adding / removing generated tests. - - If you had to do any changes, commit them. If you updated the rust toolchain, running `rust/lint.py` might reformat or apply new - lints to the code. -7. Check with CI if everything is in order. -8. Run DCA with database caching disabled. Iterate on the code if needed. -9. If in step 5 the schema was updated, add upgrade/downgrade scripts and a change note. This is best done last to reduce the chance of -merge conflicts (none of the other testing depends on having upgrade and downgrade scripts in place). See -[Upgrading a language database schema](docs/prepare-db-upgrade.md). +See [Updating rust-analyzer](updating-rust-analyzer.md). diff --git a/rust/ast-generator/BUILD.bazel b/rust/ast-generator/BUILD.bazel index 24d429cbede9..8c43aa7483c0 100644 --- a/rust/ast-generator/BUILD.bazel +++ b/rust/ast-generator/BUILD.bazel @@ -8,11 +8,15 @@ load("//misc/bazel/3rdparty/tree_sitter_extractors_deps:defs.bzl", "aliases", "a "rust/extractor", ) -ra_ap_syntax_workspace, _, _ = str(ra_ap_syntax_label).partition("//") +# `rust.ungram` is exported by the `ra_ap_syntax` crate, but only its default target is reachable +# through the aggregated `@vendor_ts` repo (the per-crate package there is just an alias). The file +# itself lives in the crate's own vendored repo, named `__`. Derive that +# repo from the crate label so this stays version-independent. +_vendor_repo, _, _crate_package = str(ra_ap_syntax_label).partition(":")[0].partition("//") alias( name = "rust.ungram", - actual = "%s//:rust.ungram" % ra_ap_syntax_workspace, + actual = "%s__%s//:rust.ungram" % (_vendor_repo, _crate_package), visibility = ["//rust/codegen:__pkg__"], ) diff --git a/rust/ast-generator/Cargo.toml b/rust/ast-generator/Cargo.toml index af12188d240a..7497e9f40ca1 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.106" -quote = "1.0.45" -either = "1.15.0" -stdx = {package = "ra_ap_stdx", version = "0.0.328"} -itertools = "0.14.0" +proc-macro2 = "1.0.107" +quote = "1.0.47" +either = "1.19.0" +stdx = {package = "ra_ap_stdx", version = "0.0.357"} +itertools = "0.15.0" mustache = "0.9.0" -serde = { version = "1.0.228", features = ["derive"] } -anyhow = "1.0.102" +serde = { version = "1.0.229", features = ["derive"] } +anyhow = "1.0.104" diff --git a/rust/ast-generator/patches/rust-analyzer.patch b/rust/ast-generator/patches/rust-analyzer.patch index b8b8e6e6c8f0..ffe12683b4aa 100644 --- a/rust/ast-generator/patches/rust-analyzer.patch +++ b/rust/ast-generator/patches/rust-analyzer.patch @@ -1,19 +1,19 @@ diff --git a/xtask/src/codegen/grammar.rs b/xtask/src/codegen/grammar.rs -index 257429c..ddbe321 100644 +index 0aad1e2..68f679f 100644 --- a/xtask/src/codegen/grammar.rs +++ b/xtask/src/codegen/grammar.rs -@@ -3,7 +3,9 @@ +@@ -3,6 +3,10 @@ //! Specifically, it generates the `SyntaxKind` enum and a number of newtype //! wrappers around `SyntaxNode` which implement `syntax::AstNode`. --#![allow(clippy::disallowed_types)] +#![allow(warnings)] +#![allow(clippy)] +#![cfg_attr(any(), rustfmt::skip)] - ++ use std::{ collections::{BTreeSet, HashSet}, -@@ -23,7 +25,7 @@ use crate::{ + fmt::Write, +@@ -21,7 +25,7 @@ use crate::{ project_root, }; @@ -22,7 +22,7 @@ index 257429c..ddbe321 100644 use self::ast_src::{AstEnumSrc, AstNodeSrc, AstSrc, Cardinality, Field, KindsSrc}; pub(crate) fn generate(check: bool) { -@@ -775,7 +777,7 @@ fn pluralize(s: &str) -> String { +@@ -775,7 +779,7 @@ fn pluralize(s: &str) -> String { } impl Field { @@ -31,7 +31,7 @@ index 257429c..ddbe321 100644 matches!(self, Field::Node { cardinality: Cardinality::Many, .. }) } fn token_kind(&self) -> Option { -@@ -787,7 +789,7 @@ impl Field { +@@ -787,7 +791,7 @@ impl Field { _ => None, } } @@ -40,7 +40,7 @@ index 257429c..ddbe321 100644 match self { Field::Token { name, token, .. } => { if let Some(name) = name { -@@ -836,7 +838,7 @@ impl Field { +@@ -836,7 +840,7 @@ impl Field { } } } @@ -49,7 +49,7 @@ index 257429c..ddbe321 100644 match self { Field::Token { .. } => format_ident!("SyntaxToken"), Field::Node { ty, .. } => format_ident!("{}", ty), -@@ -849,7 +851,7 @@ fn clean_token_name(name: &str) -> String { +@@ -849,7 +853,7 @@ fn clean_token_name(name: &str) -> String { if cleaned.is_empty() { name.to_owned() } else { cleaned.to_owned() } } @@ -59,7 +59,7 @@ index 257429c..ddbe321 100644 tokens: "Whitespace Comment String ByteString CString IntNumber FloatNumber Char Byte Ident" diff --git a/xtask/src/codegen/grammar/ast_src.rs b/xtask/src/codegen/grammar/ast_src.rs -index a0abdf0..5f59f97 100644 +index 1ae139f..d4d791e 100644 --- a/xtask/src/codegen/grammar/ast_src.rs +++ b/xtask/src/codegen/grammar/ast_src.rs @@ -1,5 +1,8 @@ diff --git a/rust/ast-generator/src/main.rs b/rust/ast-generator/src/main.rs index cfe533403679..0cc52b9508e2 100644 --- a/rust/ast-generator/src/main.rs +++ b/rust/ast-generator/src/main.rs @@ -149,7 +149,7 @@ fn get_additional_fields(node_name: &str) -> Vec { fn get_trait_fields(trait_name: &str) -> Vec { match trait_name { - "HasAttrs" => vec![FieldInfo::list("attrs", "Attr")], + "HasAttrs" => vec![FieldInfo::list("attrs", "AnyAttr")], "HasName" => vec![FieldInfo::optional("name", "Name")], "HasVisibility" => vec![FieldInfo::optional("visibility", "Visibility")], "HasGenericParams" => vec![ @@ -440,7 +440,11 @@ fn field_info_to_extractor_info(name: &str, field: &FieldInfo) -> ExtractorNodeF }, FieldType::List(ty) => ExtractorNodeFieldInfo { name, - method: field.name.clone(), + method: if ty == "AnyAttr" { + "attrs_with_doc".to_owned() + } else { + field.name.clone() + }, snake_case_ty: to_lower_snake_case(ty), list: true, ..Default::default() diff --git a/rust/downgrades/3af0bba56aa51dfb325939cc3b52cd0a3eb0965f/old.dbscheme b/rust/downgrades/3af0bba56aa51dfb325939cc3b52cd0a3eb0965f/old.dbscheme new file mode 100644 index 000000000000..3af0bba56aa5 --- /dev/null +++ b/rust/downgrades/3af0bba56aa51dfb325939cc3b52cd0a3eb0965f/old.dbscheme @@ -0,0 +1,3746 @@ +// 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_comments (unique int id: @yaml_comment, + string text: string ref, + string tostring: 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 | @yaml_comment; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: 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 +| @any_attr +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @callable +| @cfg_predicate +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @impl_restriction +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @mut_restriction +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @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 +| @try_block_modifier +| @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 +| @visibility_inner +| @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 +; + +@any_attr = + @attr +| @doc_comment +; + +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: @any_attr 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: @any_attr ref +); + +@cfg_predicate = + @cfg_atom +| @cfg_composite +; + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @include_bytes_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_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: @any_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 +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +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 +); + +impl_restrictions( + unique int id: @impl_restriction +); + +#keyset[id] +impl_restriction_visibility_inners( + int id: @impl_restriction ref, + int visibility_inner: @visibility_inner 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: @any_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: @any_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: @any_attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +@meta = + @cfg_attr_meta +| @cfg_meta +| @key_value_meta +| @path_meta +| @token_tree_meta +| @unsafe_meta +; + +mut_restrictions( + unique int id: @mut_restriction +); + +#keyset[id] +mut_restriction_is_mut( + int id: @mut_restriction ref +); + +#keyset[id] +mut_restriction_visibility_inners( + int id: @mut_restriction ref, + int visibility_inner: @visibility_inner 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: @any_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 +| @deref_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @not_null +| @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_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_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 +); + +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: @any_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: @any_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: @any_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: @any_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: @any_attr ref +); + +#keyset[id] +struct_field_default_vals( + int id: @struct_field ref, + int default_val: @const_arg ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_mut_restrictions( + int id: @struct_field ref, + int mut_restriction: @mut_restriction 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: @any_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 +); + +try_block_modifiers( + unique int id: @try_block_modifier +); + +#keyset[id] +try_block_modifier_is_try( + int id: @try_block_modifier ref +); + +#keyset[id] +try_block_modifier_type_reprs( + int id: @try_block_modifier ref, + int type_repr: @type_repr ref +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +tuple_field_mut_restrictions( + int id: @tuple_field ref, + int mut_restriction: @mut_restriction 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_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#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 +| @pattern_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_visibility_inners( + int id: @visibility ref, + int visibility_inner: @visibility_inner ref +); + +visibility_inners( + unique int id: @visibility_inner +); + +#keyset[id] +visibility_inner_paths( + int id: @visibility_inner 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_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder 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: @any_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 +); + +#keyset[id, index] +asm_clobber_abi_attrs( + int id: @asm_clobber_abi ref, + int index: int ref, + int attr: @any_attr ref +); + +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_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, index] +asm_operand_named_attrs( + int id: @asm_operand_named ref, + int index: int ref, + int attr: @any_attr 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 +); + +#keyset[id, index] +asm_options_list_attrs( + int id: @asm_options_list ref, + int index: int ref, + int attr: @any_attr 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 +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta 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: @any_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: @any_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: @any_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: @any_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_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr 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: @any_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 +); + +cfg_atoms( + unique int id: @cfg_atom +); + +cfg_attr_meta( + unique int id: @cfg_attr_meta +); + +#keyset[id] +cfg_attr_meta_cfg_predicates( + int id: @cfg_attr_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +#keyset[id, index] +cfg_attr_meta_metas( + int id: @cfg_attr_meta ref, + int index: int ref, + int meta: @meta ref +); + +cfg_composites( + unique int id: @cfg_composite +); + +#keyset[id, index] +cfg_composite_cfg_predicates( + int id: @cfg_composite ref, + int index: int ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_meta( + unique int id: @cfg_meta +); + +#keyset[id] +cfg_meta_cfg_predicates( + int id: @cfg_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_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: @any_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: @any_attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +deref_pats( + unique int id: @deref_pat +); + +#keyset[id] +deref_pat_pats( + int id: @deref_pat ref, + int pat: @pat ref +); + +doc_comments( + unique int id: @doc_comment +); + +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: @any_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_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder 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: @any_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: @any_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: @any_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 +); + +include_bytes_exprs( + unique int id: @include_bytes_expr +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @any_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 = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +key_value_meta( + unique int id: @key_value_meta +); + +#keyset[id] +key_value_meta_exprs( + int id: @key_value_meta ref, + int expr: @expr ref +); + +#keyset[id] +key_value_meta_paths( + int id: @key_value_meta ref, + int path: @path 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: @any_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: @any_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: @any_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: @any_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_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: @any_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 +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @any_attr ref +); + +#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 +); + +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 +); + +not_nulls( + unique int id: @not_null +); + +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: @any_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: @any_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_expr_base = + @path_expr +; + +path_meta( + unique int id: @path_meta +); + +#keyset[id] +path_meta_paths( + int id: @path_meta ref, + int path: @path ref +); + +path_pats( + unique int id: @path_pat +); + +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 +); + +pattern_type_reprs( + unique int id: @pattern_type_repr +); + +#keyset[id] +pattern_type_repr_pats( + int id: @pattern_type_repr ref, + int pat: @pat ref +); + +#keyset[id] +pattern_type_repr_type_reprs( + int id: @pattern_type_repr ref, + int type_repr: @type_repr 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: @any_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: @any_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: @any_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: @any_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: @any_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_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_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 +); + +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 +); + +token_tree_meta( + unique int id: @token_tree_meta +); + +#keyset[id] +token_tree_meta_paths( + int id: @token_tree_meta ref, + int path: @path ref +); + +#keyset[id] +token_tree_meta_token_trees( + int id: @token_tree_meta ref, + int token_tree: @token_tree 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: @any_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: @any_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_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 +); + +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: @any_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: @any_attr ref +); + +unsafe_meta( + unique int id: @unsafe_meta +); + +#keyset[id] +unsafe_meta_is_unsafe( + int id: @unsafe_meta ref +); + +#keyset[id] +unsafe_meta_meta( + int id: @unsafe_meta ref, + int meta: @meta ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +variant_const_args( + int id: @variant ref, + int const_arg: @const_arg 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: @any_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: @any_attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr 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: @any_attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr 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: @any_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_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +#keyset[id] +block_expr_try_block_modifiers( + int id: @block_expr ref, + int try_block_modifier: @try_block_modifier 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: @any_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: @any_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: @any_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_trait_ties( + int id: @impl ref, + int trait_ty: @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: @any_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: @any_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 +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @any_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: @any_attr 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: @any_attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_impl_restrictions( + int id: @trait ref, + int impl_restriction: @impl_restriction 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 +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item 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: @any_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: @any_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] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list 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: @any_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_function_bodies( + int id: @function ref, + int function_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: @any_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: @any_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: @any_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] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list 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: @any_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] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list 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: @any_attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/3af0bba56aa51dfb325939cc3b52cd0a3eb0965f/rust.dbscheme b/rust/downgrades/3af0bba56aa51dfb325939cc3b52cd0a3eb0965f/rust.dbscheme new file mode 100644 index 000000000000..852696f20117 --- /dev/null +++ b/rust/downgrades/3af0bba56aa51dfb325939cc3b52cd0a3eb0965f/rust.dbscheme @@ -0,0 +1,3737 @@ +// 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_comments (unique int id: @yaml_comment, + string text: string ref, + string tostring: 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 | @yaml_comment; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: 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 +| @cfg_predicate +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @impl_restriction +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @mut_restriction +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @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 +| @try_block_modifier +| @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 +| @visibility_inner +| @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 +; + +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 +); + +@cfg_predicate = + @cfg_atom +| @cfg_composite +; + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @include_bytes_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_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 +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +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 +); + +impl_restrictions( + unique int id: @impl_restriction +); + +#keyset[id] +impl_restriction_visibility_inners( + int id: @impl_restriction ref, + int visibility_inner: @visibility_inner 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 = + @cfg_attr_meta +| @cfg_meta +| @key_value_meta +| @path_meta +| @token_tree_meta +| @unsafe_meta +; + +mut_restrictions( + unique int id: @mut_restriction +); + +#keyset[id] +mut_restriction_is_mut( + int id: @mut_restriction ref +); + +#keyset[id] +mut_restriction_visibility_inners( + int id: @mut_restriction ref, + int visibility_inner: @visibility_inner 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 +| @deref_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @not_null +| @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_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_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 +); + +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_default_vals( + int id: @struct_field ref, + int default_val: @const_arg ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_mut_restrictions( + int id: @struct_field ref, + int mut_restriction: @mut_restriction 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 +); + +try_block_modifiers( + unique int id: @try_block_modifier +); + +#keyset[id] +try_block_modifier_is_try( + int id: @try_block_modifier ref +); + +#keyset[id] +try_block_modifier_type_reprs( + int id: @try_block_modifier ref, + int type_repr: @type_repr ref +); + +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_mut_restrictions( + int id: @tuple_field ref, + int mut_restriction: @mut_restriction 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_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#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 +| @pattern_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_visibility_inners( + int id: @visibility ref, + int visibility_inner: @visibility_inner ref +); + +visibility_inners( + unique int id: @visibility_inner +); + +#keyset[id] +visibility_inner_paths( + int id: @visibility_inner 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_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder 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 +); + +#keyset[id, index] +asm_clobber_abi_attrs( + int id: @asm_clobber_abi ref, + int index: int ref, + int attr: @attr ref +); + +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_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, index] +asm_operand_named_attrs( + int id: @asm_operand_named ref, + int index: int ref, + int attr: @attr 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 +); + +#keyset[id, index] +asm_options_list_attrs( + int id: @asm_options_list ref, + int index: int ref, + int attr: @attr 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_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr 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 +); + +cfg_atoms( + unique int id: @cfg_atom +); + +cfg_attr_meta( + unique int id: @cfg_attr_meta +); + +#keyset[id] +cfg_attr_meta_cfg_predicates( + int id: @cfg_attr_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +#keyset[id, index] +cfg_attr_meta_metas( + int id: @cfg_attr_meta ref, + int index: int ref, + int meta: @meta ref +); + +cfg_composites( + unique int id: @cfg_composite +); + +#keyset[id, index] +cfg_composite_cfg_predicates( + int id: @cfg_composite ref, + int index: int ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_meta( + unique int id: @cfg_meta +); + +#keyset[id] +cfg_meta_cfg_predicates( + int id: @cfg_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_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 +); + +deref_pats( + unique int id: @deref_pat +); + +#keyset[id] +deref_pat_pats( + int id: @deref_pat ref, + int pat: @pat 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_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder 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 +); + +include_bytes_exprs( + unique int id: @include_bytes_expr +); + +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 = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +key_value_meta( + unique int id: @key_value_meta +); + +#keyset[id] +key_value_meta_exprs( + int id: @key_value_meta ref, + int expr: @expr ref +); + +#keyset[id] +key_value_meta_paths( + int id: @key_value_meta ref, + int path: @path 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_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 +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#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 +); + +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 +); + +not_nulls( + unique int id: @not_null +); + +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_expr_base = + @path_expr +; + +path_meta( + unique int id: @path_meta +); + +#keyset[id] +path_meta_paths( + int id: @path_meta ref, + int path: @path ref +); + +path_pats( + unique int id: @path_pat +); + +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 +); + +pattern_type_reprs( + unique int id: @pattern_type_repr +); + +#keyset[id] +pattern_type_repr_pats( + int id: @pattern_type_repr ref, + int pat: @pat ref +); + +#keyset[id] +pattern_type_repr_type_reprs( + int id: @pattern_type_repr ref, + int type_repr: @type_repr 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_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_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 +); + +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 +); + +token_tree_meta( + unique int id: @token_tree_meta +); + +#keyset[id] +token_tree_meta_paths( + int id: @token_tree_meta ref, + int path: @path ref +); + +#keyset[id] +token_tree_meta_token_trees( + int id: @token_tree_meta ref, + int token_tree: @token_tree 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_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 +); + +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 +); + +unsafe_meta( + unique int id: @unsafe_meta +); + +#keyset[id] +unsafe_meta_is_unsafe( + int id: @unsafe_meta ref +); + +#keyset[id] +unsafe_meta_meta( + int id: @unsafe_meta ref, + int meta: @meta 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_const_args( + int id: @variant ref, + int const_arg: @const_arg 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 +); + +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 +); + +@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_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +#keyset[id] +block_expr_try_block_modifiers( + int id: @block_expr ref, + int try_block_modifier: @try_block_modifier 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_trait_ties( + int id: @impl ref, + int trait_ty: @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 +); + +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 +); + +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_impl_restrictions( + int id: @trait ref, + int impl_restriction: @impl_restriction 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 +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item 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 +); + +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] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list 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_function_bodies( + int id: @function ref, + int function_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] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list 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] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list 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/3af0bba56aa51dfb325939cc3b52cd0a3eb0965f/upgrade.properties b/rust/downgrades/3af0bba56aa51dfb325939cc3b52cd0a3eb0965f/upgrade.properties new file mode 100644 index 000000000000..75ff58f2048f --- /dev/null +++ b/rust/downgrades/3af0bba56aa51dfb325939cc3b52cd0a3eb0965f/upgrade.properties @@ -0,0 +1,4 @@ +description: Downgrade rust-analyzer to 0.0.347 +compatibility: full + +doc_comments.rel: delete diff --git a/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/downgrade.ql b/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/downgrade.ql new file mode 100644 index 000000000000..1bf22d853583 --- /dev/null +++ b/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/downgrade.ql @@ -0,0 +1,70 @@ +class Element extends @element { + string toString() { none() } +} + +class Location extends @location_default { + string toString() { none() } +} + +// Genuinely-new node kinds with no representation in the old schema. Their own child relations are +// dropped via `delete` in upgrade.properties; the references to them from `@ast_node`-typed columns +// (`macro_call_macro_call_expansions`, `comments`) and their `locatable_locations` are scrubbed +// below. +private predicate deletedNode(Element id) { + deref_pats(id) or + not_nulls(id) or + include_bytes_exprs(id) or + pattern_type_reprs(id) or + impl_restrictions(id) or + mut_restrictions(id) or + visibility_inners(id) +} + +// A deleted node, plus any comment attached to one: dropping the comment's `comments` row would +// otherwise leave its `locatable_locations` row dangling. +private predicate deletedElement(Element id) { + deletedNode(id) + or + exists(Element parent | comments(id, parent, _) and deletedNode(parent)) +} + +// A `@name` used as a format argument's name. The old schema represents these as dedicated text-less +// `@format_args_arg_name` placeholders, so we repurpose these ids into that entity table and drop +// them (and their text) from `names`/`name_texts`. +private predicate formatArgName(Element name) { format_args_arg_names(_, name) } + +// The new schema inserts a `VisibilityInner` node between `Visibility` and its path; the old schema +// stores the path directly on the `Visibility`, so we rejoin the two hops. +query predicate new_visibility_paths(Element visibility, Element path) { + exists(Element inner | + visibility_visibility_inners(visibility, inner) and + visibility_inner_paths(inner, path) + ) +} + +query predicate new_format_args_arg_names(Element id) { formatArgName(id) } + +query predicate new_format_args_arg_arg_names(Element arg, Element name) { + format_args_arg_names(arg, name) +} + +query predicate new_names(Element id) { names(id) and not formatArgName(id) } + +query predicate new_name_texts(Element id, string text) { + name_texts(id, text) and not formatArgName(id) +} + +query predicate new_locatable_locations(Element id, Location location) { + locatable_locations(id, location) and not deletedElement(id) +} + +// `macro_call_macro_call_expansions` and `comments` are the only two relations with a generic +// `@ast_node`-typed value column, so a deleted node reachable through a macro expansion or as a +// comment's parent would otherwise dangle here. +query predicate new_macro_call_macro_call_expansions(Element macroCall, Element expansion) { + macro_call_macro_call_expansions(macroCall, expansion) and not deletedNode(expansion) +} + +query predicate new_comments(Element id, Element parent, string text) { + comments(id, parent, text) and not deletedNode(parent) +} diff --git a/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/old.dbscheme b/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/old.dbscheme new file mode 100644 index 000000000000..852696f20117 --- /dev/null +++ b/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/old.dbscheme @@ -0,0 +1,3737 @@ +// 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_comments (unique int id: @yaml_comment, + string text: string ref, + string tostring: 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 | @yaml_comment; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: 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 +| @cfg_predicate +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @impl_restriction +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @mut_restriction +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @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 +| @try_block_modifier +| @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 +| @visibility_inner +| @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 +; + +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 +); + +@cfg_predicate = + @cfg_atom +| @cfg_composite +; + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @include_bytes_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_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 +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +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 +); + +impl_restrictions( + unique int id: @impl_restriction +); + +#keyset[id] +impl_restriction_visibility_inners( + int id: @impl_restriction ref, + int visibility_inner: @visibility_inner 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 = + @cfg_attr_meta +| @cfg_meta +| @key_value_meta +| @path_meta +| @token_tree_meta +| @unsafe_meta +; + +mut_restrictions( + unique int id: @mut_restriction +); + +#keyset[id] +mut_restriction_is_mut( + int id: @mut_restriction ref +); + +#keyset[id] +mut_restriction_visibility_inners( + int id: @mut_restriction ref, + int visibility_inner: @visibility_inner 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 +| @deref_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @not_null +| @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_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_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 +); + +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_default_vals( + int id: @struct_field ref, + int default_val: @const_arg ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_mut_restrictions( + int id: @struct_field ref, + int mut_restriction: @mut_restriction 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 +); + +try_block_modifiers( + unique int id: @try_block_modifier +); + +#keyset[id] +try_block_modifier_is_try( + int id: @try_block_modifier ref +); + +#keyset[id] +try_block_modifier_type_reprs( + int id: @try_block_modifier ref, + int type_repr: @type_repr ref +); + +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_mut_restrictions( + int id: @tuple_field ref, + int mut_restriction: @mut_restriction 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_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#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 +| @pattern_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_visibility_inners( + int id: @visibility ref, + int visibility_inner: @visibility_inner ref +); + +visibility_inners( + unique int id: @visibility_inner +); + +#keyset[id] +visibility_inner_paths( + int id: @visibility_inner 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_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder 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 +); + +#keyset[id, index] +asm_clobber_abi_attrs( + int id: @asm_clobber_abi ref, + int index: int ref, + int attr: @attr ref +); + +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_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, index] +asm_operand_named_attrs( + int id: @asm_operand_named ref, + int index: int ref, + int attr: @attr 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 +); + +#keyset[id, index] +asm_options_list_attrs( + int id: @asm_options_list ref, + int index: int ref, + int attr: @attr 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_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr 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 +); + +cfg_atoms( + unique int id: @cfg_atom +); + +cfg_attr_meta( + unique int id: @cfg_attr_meta +); + +#keyset[id] +cfg_attr_meta_cfg_predicates( + int id: @cfg_attr_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +#keyset[id, index] +cfg_attr_meta_metas( + int id: @cfg_attr_meta ref, + int index: int ref, + int meta: @meta ref +); + +cfg_composites( + unique int id: @cfg_composite +); + +#keyset[id, index] +cfg_composite_cfg_predicates( + int id: @cfg_composite ref, + int index: int ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_meta( + unique int id: @cfg_meta +); + +#keyset[id] +cfg_meta_cfg_predicates( + int id: @cfg_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_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 +); + +deref_pats( + unique int id: @deref_pat +); + +#keyset[id] +deref_pat_pats( + int id: @deref_pat ref, + int pat: @pat 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_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder 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 +); + +include_bytes_exprs( + unique int id: @include_bytes_expr +); + +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 = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +key_value_meta( + unique int id: @key_value_meta +); + +#keyset[id] +key_value_meta_exprs( + int id: @key_value_meta ref, + int expr: @expr ref +); + +#keyset[id] +key_value_meta_paths( + int id: @key_value_meta ref, + int path: @path 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_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 +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#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 +); + +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 +); + +not_nulls( + unique int id: @not_null +); + +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_expr_base = + @path_expr +; + +path_meta( + unique int id: @path_meta +); + +#keyset[id] +path_meta_paths( + int id: @path_meta ref, + int path: @path ref +); + +path_pats( + unique int id: @path_pat +); + +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 +); + +pattern_type_reprs( + unique int id: @pattern_type_repr +); + +#keyset[id] +pattern_type_repr_pats( + int id: @pattern_type_repr ref, + int pat: @pat ref +); + +#keyset[id] +pattern_type_repr_type_reprs( + int id: @pattern_type_repr ref, + int type_repr: @type_repr 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_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_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 +); + +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 +); + +token_tree_meta( + unique int id: @token_tree_meta +); + +#keyset[id] +token_tree_meta_paths( + int id: @token_tree_meta ref, + int path: @path ref +); + +#keyset[id] +token_tree_meta_token_trees( + int id: @token_tree_meta ref, + int token_tree: @token_tree 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_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 +); + +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 +); + +unsafe_meta( + unique int id: @unsafe_meta +); + +#keyset[id] +unsafe_meta_is_unsafe( + int id: @unsafe_meta ref +); + +#keyset[id] +unsafe_meta_meta( + int id: @unsafe_meta ref, + int meta: @meta 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_const_args( + int id: @variant ref, + int const_arg: @const_arg 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 +); + +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 +); + +@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_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +#keyset[id] +block_expr_try_block_modifiers( + int id: @block_expr ref, + int try_block_modifier: @try_block_modifier 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_trait_ties( + int id: @impl ref, + int trait_ty: @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 +); + +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 +); + +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_impl_restrictions( + int id: @trait ref, + int impl_restriction: @impl_restriction 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 +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item 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 +); + +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] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list 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_function_bodies( + int id: @function ref, + int function_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] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list 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] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list 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/852696f20117c338fbb4e6a4f5ed69df79682c37/rust.dbscheme b/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/rust.dbscheme new file mode 100644 index 000000000000..ed6b1d3d5140 --- /dev/null +++ b/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/rust.dbscheme @@ -0,0 +1,3627 @@ +// 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_comments (unique int id: @yaml_comment, + string text: string ref, + string tostring: 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 | @yaml_comment; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: 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 +| @cfg_predicate +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @format_args_arg_name +| @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_ast_node +| @path_segment +| @rename +| @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 +| @try_block_modifier +| @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 +; + +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 +); + +@cfg_predicate = + @cfg_atom +| @cfg_composite +; + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_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 +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_arg_names( + int id: @format_args_arg ref, + int arg_name: @format_args_arg_name ref +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +format_args_arg_names( + unique int id: @format_args_arg_name +); + +@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 = + @cfg_attr_meta +| @cfg_meta +| @key_value_meta +| @path_meta +| @token_tree_meta +| @unsafe_meta +; + +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_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_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 +); + +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_default_vals( + int id: @struct_field ref, + int default_val: @const_arg 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 +); + +try_block_modifiers( + unique int id: @try_block_modifier +); + +#keyset[id] +try_block_modifier_is_try( + int id: @try_block_modifier ref +); + +#keyset[id] +try_block_modifier_type_reprs( + int id: @try_block_modifier ref, + int type_repr: @type_repr ref +); + +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_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#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_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder 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_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_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr 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 +); + +cfg_atoms( + unique int id: @cfg_atom +); + +cfg_attr_meta( + unique int id: @cfg_attr_meta +); + +#keyset[id] +cfg_attr_meta_cfg_predicates( + int id: @cfg_attr_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +#keyset[id, index] +cfg_attr_meta_metas( + int id: @cfg_attr_meta ref, + int index: int ref, + int meta: @meta ref +); + +cfg_composites( + unique int id: @cfg_composite +); + +#keyset[id, index] +cfg_composite_cfg_predicates( + int id: @cfg_composite ref, + int index: int ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_meta( + unique int id: @cfg_meta +); + +#keyset[id] +cfg_meta_cfg_predicates( + int id: @cfg_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_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_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder 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 = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +key_value_meta( + unique int id: @key_value_meta +); + +#keyset[id] +key_value_meta_exprs( + int id: @key_value_meta ref, + int expr: @expr ref +); + +#keyset[id] +key_value_meta_paths( + int id: @key_value_meta ref, + int path: @path 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_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 +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @attr ref +); + +#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 +); + +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_expr_base = + @path_expr +; + +path_meta( + unique int id: @path_meta +); + +#keyset[id] +path_meta_paths( + int id: @path_meta ref, + int path: @path ref +); + +path_pats( + unique int id: @path_pat +); + +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_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_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 +); + +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 +); + +token_tree_meta( + unique int id: @token_tree_meta +); + +#keyset[id] +token_tree_meta_paths( + int id: @token_tree_meta ref, + int path: @path ref +); + +#keyset[id] +token_tree_meta_token_trees( + int id: @token_tree_meta ref, + int token_tree: @token_tree 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_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 +); + +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 +); + +unsafe_meta( + unique int id: @unsafe_meta +); + +#keyset[id] +unsafe_meta_is_unsafe( + int id: @unsafe_meta ref +); + +#keyset[id] +unsafe_meta_meta( + int id: @unsafe_meta ref, + int meta: @meta 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_const_args( + int id: @variant ref, + int const_arg: @const_arg 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 +); + +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 +); + +@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_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +#keyset[id] +block_expr_try_block_modifiers( + int id: @block_expr ref, + int try_block_modifier: @try_block_modifier 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_trait_ties( + int id: @impl ref, + int trait_ty: @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 +); + +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 +); + +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 +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item 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 +); + +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] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list 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_function_bodies( + int id: @function ref, + int function_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] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list 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] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list 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/852696f20117c338fbb4e6a4f5ed69df79682c37/upgrade.properties b/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/upgrade.properties new file mode 100644 index 000000000000..7221c00218a1 --- /dev/null +++ b/rust/downgrades/852696f20117c338fbb4e6a4f5ed69df79682c37/upgrade.properties @@ -0,0 +1,35 @@ +description: Downgrade rust-analyzer to 0.0.328 +compatibility: partial + +visibility_paths.rel: run downgrade.ql new_visibility_paths +visibility_visibility_inners.rel: delete +visibility_inners.rel: delete +visibility_inner_paths.rel: delete + +format_args_arg_names.rel: run downgrade.ql new_format_args_arg_names +format_args_arg_arg_names.rel: run downgrade.ql new_format_args_arg_arg_names +names.rel: run downgrade.ql new_names +name_texts.rel: run downgrade.ql new_name_texts + +locatable_locations.rel: run downgrade.ql new_locatable_locations +macro_call_macro_call_expansions.rel: run downgrade.ql new_macro_call_macro_call_expansions +comments.rel: run downgrade.ql new_comments + +deref_pats.rel: delete +deref_pat_pats.rel: delete +not_nulls.rel: delete +include_bytes_exprs.rel: delete +pattern_type_reprs.rel: delete +pattern_type_repr_pats.rel: delete +pattern_type_repr_type_reprs.rel: delete +impl_restrictions.rel: delete +impl_restriction_visibility_inners.rel: delete +mut_restrictions.rel: delete +mut_restriction_is_mut.rel: delete +mut_restriction_visibility_inners.rel: delete +asm_clobber_abi_attrs.rel: delete +asm_operand_named_attrs.rel: delete +asm_options_list_attrs.rel: delete +struct_field_mut_restrictions.rel: delete +tuple_field_mut_restrictions.rel: delete +trait_impl_restrictions.rel: delete diff --git a/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/downgrade.ql b/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/downgrade.ql new file mode 100644 index 000000000000..256bb6c937ee --- /dev/null +++ b/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/downgrade.ql @@ -0,0 +1,30 @@ +class Element extends @element { + string toString() { none() } +} + +class Location extends @location_default { + string toString() { none() } +} + +// `CfgPredExpr` and `CfgPredPat` are new node kinds with no representation in the old schema, so we +// scrub their locations and references to them. +private predicate deletedNode(Element id) { cfg_pred_exprs(id) or cfg_pred_pats(id) } + +// Comments attached to deleted nodes are also removed, along with their locations. +private predicate deletedElement(Element id) { + deletedNode(id) + or + exists(Element parent | comments(id, parent, _) and deletedNode(parent)) +} + +query predicate new_locatable_locations(Element id, Location location) { + locatable_locations(id, location) and not deletedElement(id) +} + +query predicate new_macro_call_macro_call_expansions(Element macroCall, Element expansion) { + macro_call_macro_call_expansions(macroCall, expansion) and not deletedNode(expansion) +} + +query predicate new_comments(Element id, Element parent, string text) { + comments(id, parent, text) and not deletedNode(parent) +} diff --git a/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/old.dbscheme b/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/old.dbscheme new file mode 100644 index 000000000000..9487e73d9da6 --- /dev/null +++ b/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/old.dbscheme @@ -0,0 +1,3768 @@ +// 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_comments (unique int id: @yaml_comment, + string text: string ref, + string tostring: 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 | @yaml_comment; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: 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 +| @any_attr +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @callable +| @cfg_predicate +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @impl_restriction +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @mut_restriction +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @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 +| @try_block_modifier +| @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 +| @visibility_inner +| @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 +; + +@any_attr = + @attr +| @doc_comment +; + +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: @any_attr 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: @any_attr ref +); + +@cfg_predicate = + @cfg_atom +| @cfg_composite +; + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @cfg_pred_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @include_bytes_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_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: @any_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 +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +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 +); + +impl_restrictions( + unique int id: @impl_restriction +); + +#keyset[id] +impl_restriction_visibility_inners( + int id: @impl_restriction ref, + int visibility_inner: @visibility_inner 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: @any_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: @any_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: @any_attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +@meta = + @cfg_attr_meta +| @cfg_meta +| @key_value_meta +| @path_meta +| @token_tree_meta +| @unsafe_meta +; + +mut_restrictions( + unique int id: @mut_restriction +); + +#keyset[id] +mut_restriction_is_mut( + int id: @mut_restriction ref +); + +#keyset[id] +mut_restriction_visibility_inners( + int id: @mut_restriction ref, + int visibility_inner: @visibility_inner 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: @any_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 +| @cfg_pred_pat +| @const_block_pat +| @deref_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @not_null +| @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_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_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 +); + +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: @any_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: @any_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: @any_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: @any_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: @any_attr ref +); + +#keyset[id] +struct_field_default_vals( + int id: @struct_field ref, + int default_val: @const_arg ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_mut_restrictions( + int id: @struct_field ref, + int mut_restriction: @mut_restriction 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: @any_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 +); + +try_block_modifiers( + unique int id: @try_block_modifier +); + +#keyset[id] +try_block_modifier_is_try( + int id: @try_block_modifier ref +); + +#keyset[id] +try_block_modifier_type_reprs( + int id: @try_block_modifier ref, + int type_repr: @type_repr ref +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +tuple_field_mut_restrictions( + int id: @tuple_field ref, + int mut_restriction: @mut_restriction 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_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#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 +| @pattern_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_visibility_inners( + int id: @visibility ref, + int visibility_inner: @visibility_inner ref +); + +visibility_inners( + unique int id: @visibility_inner +); + +#keyset[id] +visibility_inner_paths( + int id: @visibility_inner 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_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder 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: @any_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 +); + +#keyset[id, index] +asm_clobber_abi_attrs( + int id: @asm_clobber_abi ref, + int index: int ref, + int attr: @any_attr ref +); + +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_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, index] +asm_operand_named_attrs( + int id: @asm_operand_named ref, + int index: int ref, + int attr: @any_attr 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 +); + +#keyset[id, index] +asm_options_list_attrs( + int id: @asm_options_list ref, + int index: int ref, + int attr: @any_attr 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 +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta 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: @any_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: @any_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: @any_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: @any_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_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr 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: @any_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 +); + +cfg_atoms( + unique int id: @cfg_atom +); + +cfg_attr_meta( + unique int id: @cfg_attr_meta +); + +#keyset[id] +cfg_attr_meta_cfg_predicates( + int id: @cfg_attr_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +#keyset[id, index] +cfg_attr_meta_metas( + int id: @cfg_attr_meta ref, + int index: int ref, + int meta: @meta ref +); + +cfg_composites( + unique int id: @cfg_composite +); + +#keyset[id, index] +cfg_composite_cfg_predicates( + int id: @cfg_composite ref, + int index: int ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_meta( + unique int id: @cfg_meta +); + +#keyset[id] +cfg_meta_cfg_predicates( + int id: @cfg_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_pred_exprs( + unique int id: @cfg_pred_expr +); + +#keyset[id] +cfg_pred_expr_cfg_predicates( + int id: @cfg_pred_expr ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_pred_pats( + unique int id: @cfg_pred_pat +); + +#keyset[id] +cfg_pred_pat_cfg_predicates( + int id: @cfg_pred_pat ref, + int cfg_predicate: @cfg_predicate ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_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: @any_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: @any_attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +deref_pats( + unique int id: @deref_pat +); + +#keyset[id] +deref_pat_pats( + int id: @deref_pat ref, + int pat: @pat ref +); + +doc_comments( + unique int id: @doc_comment +); + +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: @any_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_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder 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: @any_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: @any_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: @any_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 +); + +include_bytes_exprs( + unique int id: @include_bytes_expr +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @any_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 = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +key_value_meta( + unique int id: @key_value_meta +); + +#keyset[id] +key_value_meta_exprs( + int id: @key_value_meta ref, + int expr: @expr ref +); + +#keyset[id] +key_value_meta_paths( + int id: @key_value_meta ref, + int path: @path 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: @any_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: @any_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: @any_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: @any_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_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: @any_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 +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @any_attr ref +); + +#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 +); + +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 +); + +not_nulls( + unique int id: @not_null +); + +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: @any_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: @any_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_expr_base = + @path_expr +; + +path_meta( + unique int id: @path_meta +); + +#keyset[id] +path_meta_paths( + int id: @path_meta ref, + int path: @path ref +); + +path_pats( + unique int id: @path_pat +); + +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 +); + +pattern_type_reprs( + unique int id: @pattern_type_repr +); + +#keyset[id] +pattern_type_repr_pats( + int id: @pattern_type_repr ref, + int pat: @pat ref +); + +#keyset[id] +pattern_type_repr_type_reprs( + int id: @pattern_type_repr ref, + int type_repr: @type_repr 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: @any_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: @any_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: @any_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: @any_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: @any_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_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_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 +); + +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 +); + +token_tree_meta( + unique int id: @token_tree_meta +); + +#keyset[id] +token_tree_meta_paths( + int id: @token_tree_meta ref, + int path: @path ref +); + +#keyset[id] +token_tree_meta_token_trees( + int id: @token_tree_meta ref, + int token_tree: @token_tree 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: @any_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: @any_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_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 +); + +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: @any_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: @any_attr ref +); + +unsafe_meta( + unique int id: @unsafe_meta +); + +#keyset[id] +unsafe_meta_is_unsafe( + int id: @unsafe_meta ref +); + +#keyset[id] +unsafe_meta_meta( + int id: @unsafe_meta ref, + int meta: @meta ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +variant_const_args( + int id: @variant ref, + int const_arg: @const_arg 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: @any_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: @any_attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr 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: @any_attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr 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: @any_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_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +#keyset[id] +block_expr_try_block_modifiers( + int id: @block_expr ref, + int try_block_modifier: @try_block_modifier 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: @any_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: @any_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: @any_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_trait_ties( + int id: @impl ref, + int trait_ty: @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: @any_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: @any_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 +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @any_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: @any_attr 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: @any_attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_impl_restrictions( + int id: @trait ref, + int impl_restriction: @impl_restriction 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 +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item 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: @any_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: @any_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] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list 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: @any_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_function_bodies( + int id: @function ref, + int function_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: @any_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: @any_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: @any_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] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list 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: @any_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] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list 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: @any_attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/rust.dbscheme b/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/rust.dbscheme new file mode 100644 index 000000000000..3af0bba56aa5 --- /dev/null +++ b/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/rust.dbscheme @@ -0,0 +1,3746 @@ +// 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_comments (unique int id: @yaml_comment, + string text: string ref, + string tostring: 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 | @yaml_comment; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: 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 +| @any_attr +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @callable +| @cfg_predicate +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @impl_restriction +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @mut_restriction +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @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 +| @try_block_modifier +| @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 +| @visibility_inner +| @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 +; + +@any_attr = + @attr +| @doc_comment +; + +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: @any_attr 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: @any_attr ref +); + +@cfg_predicate = + @cfg_atom +| @cfg_composite +; + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @include_bytes_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_expr +| @match_expr +| @method_call_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: @any_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 +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +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 +); + +impl_restrictions( + unique int id: @impl_restriction +); + +#keyset[id] +impl_restriction_visibility_inners( + int id: @impl_restriction ref, + int visibility_inner: @visibility_inner 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: @any_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: @any_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: @any_attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +@meta = + @cfg_attr_meta +| @cfg_meta +| @key_value_meta +| @path_meta +| @token_tree_meta +| @unsafe_meta +; + +mut_restrictions( + unique int id: @mut_restriction +); + +#keyset[id] +mut_restriction_is_mut( + int id: @mut_restriction ref +); + +#keyset[id] +mut_restriction_visibility_inners( + int id: @mut_restriction ref, + int visibility_inner: @visibility_inner 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: @any_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 +| @deref_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @not_null +| @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_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_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 +); + +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: @any_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: @any_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: @any_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: @any_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: @any_attr ref +); + +#keyset[id] +struct_field_default_vals( + int id: @struct_field ref, + int default_val: @const_arg ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_mut_restrictions( + int id: @struct_field ref, + int mut_restriction: @mut_restriction 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: @any_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 +); + +try_block_modifiers( + unique int id: @try_block_modifier +); + +#keyset[id] +try_block_modifier_is_try( + int id: @try_block_modifier ref +); + +#keyset[id] +try_block_modifier_type_reprs( + int id: @try_block_modifier ref, + int type_repr: @type_repr ref +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +tuple_field_mut_restrictions( + int id: @tuple_field ref, + int mut_restriction: @mut_restriction 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_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#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 +| @pattern_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_visibility_inners( + int id: @visibility ref, + int visibility_inner: @visibility_inner ref +); + +visibility_inners( + unique int id: @visibility_inner +); + +#keyset[id] +visibility_inner_paths( + int id: @visibility_inner 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_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder 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: @any_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 +); + +#keyset[id, index] +asm_clobber_abi_attrs( + int id: @asm_clobber_abi ref, + int index: int ref, + int attr: @any_attr ref +); + +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_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, index] +asm_operand_named_attrs( + int id: @asm_operand_named ref, + int index: int ref, + int attr: @any_attr 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 +); + +#keyset[id, index] +asm_options_list_attrs( + int id: @asm_options_list ref, + int index: int ref, + int attr: @any_attr 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 +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta 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: @any_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: @any_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: @any_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: @any_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_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_arg_lists( + int id: @call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_attrs( + int id: @call_expr ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr 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: @any_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 +); + +cfg_atoms( + unique int id: @cfg_atom +); + +cfg_attr_meta( + unique int id: @cfg_attr_meta +); + +#keyset[id] +cfg_attr_meta_cfg_predicates( + int id: @cfg_attr_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +#keyset[id, index] +cfg_attr_meta_metas( + int id: @cfg_attr_meta ref, + int index: int ref, + int meta: @meta ref +); + +cfg_composites( + unique int id: @cfg_composite +); + +#keyset[id, index] +cfg_composite_cfg_predicates( + int id: @cfg_composite ref, + int index: int ref, + int cfg_predicate: @cfg_predicate ref +); + +cfg_meta( + unique int id: @cfg_meta +); + +#keyset[id] +cfg_meta_cfg_predicates( + int id: @cfg_meta ref, + int cfg_predicate: @cfg_predicate ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_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: @any_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: @any_attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +deref_pats( + unique int id: @deref_pat +); + +#keyset[id] +deref_pat_pats( + int id: @deref_pat ref, + int pat: @pat ref +); + +doc_comments( + unique int id: @doc_comment +); + +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: @any_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_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder 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: @any_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: @any_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: @any_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 +); + +include_bytes_exprs( + unique int id: @include_bytes_expr +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @any_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 = + @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @type_item +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +key_value_meta( + unique int id: @key_value_meta +); + +#keyset[id] +key_value_meta_exprs( + int id: @key_value_meta ref, + int expr: @expr ref +); + +#keyset[id] +key_value_meta_paths( + int id: @key_value_meta ref, + int path: @path 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: @any_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: @any_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: @any_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: @any_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_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: @any_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 +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_arg_lists( + int id: @method_call_expr ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +method_call_expr_attrs( + int id: @method_call_expr ref, + int index: int ref, + int attr: @any_attr ref +); + +#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 +); + +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 +); + +not_nulls( + unique int id: @not_null +); + +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: @any_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: @any_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_expr_base = + @path_expr +; + +path_meta( + unique int id: @path_meta +); + +#keyset[id] +path_meta_paths( + int id: @path_meta ref, + int path: @path ref +); + +path_pats( + unique int id: @path_pat +); + +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 +); + +pattern_type_reprs( + unique int id: @pattern_type_repr +); + +#keyset[id] +pattern_type_repr_pats( + int id: @pattern_type_repr ref, + int pat: @pat ref +); + +#keyset[id] +pattern_type_repr_type_reprs( + int id: @pattern_type_repr ref, + int type_repr: @type_repr 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: @any_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: @any_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: @any_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: @any_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: @any_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_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_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 +); + +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 +); + +token_tree_meta( + unique int id: @token_tree_meta +); + +#keyset[id] +token_tree_meta_paths( + int id: @token_tree_meta ref, + int path: @path ref +); + +#keyset[id] +token_tree_meta_token_trees( + int id: @token_tree_meta ref, + int token_tree: @token_tree 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: @any_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: @any_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_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 +); + +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: @any_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: @any_attr ref +); + +unsafe_meta( + unique int id: @unsafe_meta +); + +#keyset[id] +unsafe_meta_is_unsafe( + int id: @unsafe_meta ref +); + +#keyset[id] +unsafe_meta_meta( + int id: @unsafe_meta ref, + int meta: @meta ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +variant_const_args( + int id: @variant ref, + int const_arg: @const_arg 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: @any_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: @any_attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr 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: @any_attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr 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: @any_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_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +#keyset[id] +block_expr_try_block_modifiers( + int id: @block_expr ref, + int try_block_modifier: @try_block_modifier 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: @any_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: @any_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: @any_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_trait_ties( + int id: @impl ref, + int trait_ty: @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: @any_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: @any_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 +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @any_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: @any_attr 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: @any_attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_impl_restrictions( + int id: @trait ref, + int impl_restriction: @impl_restriction 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 +); + +@type_item = + @enum +| @struct +| @union +; + +#keyset[id, index] +type_item_derive_macro_expansions( + int id: @type_item ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +#keyset[id, index] +type_item_attrs( + int id: @type_item ref, + int index: int ref, + int attr: @any_attr ref +); + +#keyset[id] +type_item_generic_param_lists( + int id: @type_item ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_item_names( + int id: @type_item ref, + int name: @name ref +); + +#keyset[id] +type_item_visibilities( + int id: @type_item ref, + int visibility: @visibility ref +); + +#keyset[id] +type_item_where_clauses( + int id: @type_item 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: @any_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: @any_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] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list 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: @any_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_function_bodies( + int id: @function ref, + int function_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: @any_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: @any_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: @any_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] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list 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: @any_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] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list 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: @any_attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/upgrade.properties b/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/upgrade.properties new file mode 100644 index 000000000000..65f871f25f91 --- /dev/null +++ b/rust/downgrades/9487e73d9da6508522f07a34bc4aafa8d55c0f5f/upgrade.properties @@ -0,0 +1,10 @@ +description: Downgrade rust-analyzer to 0.0.352 +compatibility: partial + +cfg_pred_exprs.rel: delete +cfg_pred_expr_cfg_predicates.rel: delete +cfg_pred_pats.rel: delete +cfg_pred_pat_cfg_predicates.rel: delete +locatable_locations.rel: run downgrade.ql new_locatable_locations +macro_call_macro_call_expansions.rel: run downgrade.ql new_macro_call_macro_call_expansions +comments.rel: run downgrade.ql new_comments diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml index 60376b5b67e8..48c26a1efa35 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.102" -clap = { version = "4.6.0", features = ["derive"] } +anyhow = "1.0.104" +clap = { version = "4.6.7", features = ["derive"] } figment = { version = "0.10.19", features = ["env", "yaml"] } num-traits = "0.2.19" -ra_ap_base_db = "0.0.328" -ra_ap_hir = "0.0.328" -ra_ap_hir_def = "0.0.328" -ra_ap_ide_db = "0.0.328" -ra_ap_hir_ty = "0.0.328" -ra_ap_hir_expand = "0.0.328" -ra_ap_load-cargo = "0.0.328" -ra_ap_paths = "0.0.328" -ra_ap_project_model = "0.0.328" -ra_ap_syntax = "0.0.328" -ra_ap_syntax-bridge = "0.0.328" -ra_ap_vfs = "0.0.328" -ra_ap_parser = "0.0.328" -ra_ap_span = "0.0.328" -ra_ap_cfg = "0.0.328" -ra_ap_intern = "0.0.328" -serde = "1.0.228" -serde_with = "3.18.0" -triomphe = "0.1.15" +ra_ap_base_db = "0.0.357" +ra_ap_hir = "0.0.357" +ra_ap_hir_def = "0.0.357" +ra_ap_ide_db = "0.0.357" +ra_ap_hir_ty = "0.0.357" +ra_ap_hir_expand = "0.0.357" +ra_ap_load-cargo = "0.0.357" +ra_ap_paths = "0.0.357" +ra_ap_project_model = "0.0.357" +ra_ap_syntax = "0.0.357" +ra_ap_syntax-bridge = "0.0.357" +ra_ap_toolchain = "0.0.357" +ra_ap_vfs = "0.0.357" +ra_ap_parser = "0.0.357" +ra_ap_span = "0.0.357" +ra_ap_cfg = "0.0.357" +ra_ap_intern = "0.0.357" +serde = "1.0.229" +serde_with = "3.24.0" +triomphe = "0.1.16" argfile = "1.0.0" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } rust-extractor-macros = { path = "macros" } -itertools = "0.14.0" -glob = "0.3.3" -chrono = { version = "0.4.44", features = ["serde"] } -serde_json = "1.0.149" +itertools = "0.15.0" +glob = "0.3.4" +chrono = { version = "0.4.45", features = ["serde"] } +serde_json = "1.0.151" dunce = "1.0.5" -toml = "1.1.2" +toml = "1.1.6" tracing = "0.1.44" tracing-flame = "0.2.0" tracing-subscriber = "0.3.23" diff --git a/rust/extractor/macros/Cargo.toml b/rust/extractor/macros/Cargo.toml index 7d370713d5d6..615e703e443f 100644 --- a/rust/extractor/macros/Cargo.toml +++ b/rust/extractor/macros/Cargo.toml @@ -9,5 +9,5 @@ proc-macro = true # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] -quote = "1.0.45" -syn = { version = "2.0.117", features = ["full"] } +quote = "1.0.47" +syn = { version = "3.0.6", features = ["full"] } diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index 9bf7487012df..81e42c552c82 100644 --- a/rust/extractor/src/config.rs +++ b/rust/extractor/src/config.rs @@ -24,6 +24,8 @@ use std::fmt::Debug; use std::ops::Not; use std::path::{Path, PathBuf}; +use crate::toolchain::select_toolchain; + #[derive(Debug, PartialEq, Eq, Default, Serialize, Deserialize, Clone, Copy, clap::ValueEnum)] #[serde(rename_all = "lowercase")] #[clap(rename_all = "lowercase")] @@ -65,6 +67,7 @@ pub struct Config { pub qltest_cargo_check: bool, pub qltest_dependencies: Vec, pub qltest_use_nightly: bool, + pub qltest_edition: Option, pub sysroot: Option, pub sysroot_src: Option, pub rustc_src: Option, @@ -129,12 +132,17 @@ impl Config { // but we do want to allow rustup to auto-install toolchains if needed, so we set it to 1 here. extra_env.insert("RUSTUP_AUTO_INSTALL".to_owned(), Some("1".to_owned())); if self.qltest_cargo_check { - // When running qltests we add this flag to match the `cargo check` - // invocation in the `cargo_check` function. This is necessary as - // Cargo does not re-use the cache when `RUSTFLAGS` differ. - extra_env.insert("RUSTFLAGS".to_owned(), Some("-Awarnings".to_owned())); + // Match the `cargo check` invocation in `cargo_check` so Cargo reuses its + // cache (it does not when `RUSTFLAGS` differ). `--cap-lints=allow` keeps + // deny-by-default lints (e.g. `dangerous_implicit_autorefs` on recent + // toolchains) from failing extraction of otherwise valid test sources. + extra_env.insert( + "RUSTFLAGS".to_owned(), + Some("-Awarnings --cap-lints=allow".to_owned()), + ); } extra_env.extend(self.cargo_extra_env.clone()); + extra_env.insert("RUSTUP_TOOLCHAIN".to_owned(), Some(select_toolchain())); extra_env } @@ -181,6 +189,16 @@ impl Config { pub fn to_cargo_config(&self, dir: &AbsPath) -> (CargoConfig, LoadCargoConfig) { let sysroot = self.sysroot(dir); + let mut extra_args = self.cargo_extra_args.clone(); + // The fixed toolchain may be older than the project's declared minimum. + // If that's the case `cargo` will error. Passing the flag below ensures + // that the project's speified Rust version is ignored. With this + // failures will only occur if the project actually uses Rust features + // that rust-analyzer and/or the fixed toolchain is incompatible with + // (which is the best we can hope for). + if !extra_args.iter().any(|arg| arg == "--ignore-rust-version") { + extra_args.push("--ignore-rust-version".to_owned()); + } ( CargoConfig { all_targets: self.cargo_all_targets, @@ -197,7 +215,7 @@ impl Config { .map(RustLibSource::Path), extra_env: self.get_extra_env(), - extra_args: self.cargo_extra_args.clone(), + extra_args, extra_includes: self .extra_includes .iter() diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list index a8177c3a85c3..9a8a55c982e9 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 3206fd6f08478e550a1ede00bca59a3ed5e93353a8d5f13c56de4ef4e4103876 3206fd6f08478e550a1ede00bca59a3ed5e93353a8d5f13c56de4ef4e4103876 +top.rs c051c8526935e63353f69a0aa8f10c56255d80db6a97aa385d4143d74c9e2d47 c051c8526935e63353f69a0aa8f10c56255d80db6a97aa385d4143d74c9e2d47 diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs index d639d751f166..a46cc31744a3 100644 --- a/rust/extractor/src/generated/top.rs +++ b/rust/extractor/src/generated/top.rs @@ -362,6 +362,42 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct AnyAttr { + _unused: () +} + +impl trap::TrapClass for AnyAttr { + fn class_name() -> &'static str { "AnyAttr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme AnyAttr 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 AnyAttr 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 AnyAttr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct ArgList { pub id: trap::TrapId, @@ -688,7 +724,7 @@ impl From> for trap::Label { pub struct AssocItemList { pub id: trap::TrapId, pub assoc_items: Vec>, - pub attrs: Vec>, + pub attrs: Vec>, } impl trap::TrapEntry for AssocItemList { @@ -738,56 +774,6 @@ impl From> for trap::Label { } } -#[derive(Debug)] -pub struct Attr { - pub id: trap::TrapId, - pub meta: Option>, -} - -impl trap::TrapEntry for Attr { - 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("attrs", vec![id.into()]); - if let Some(v) = self.meta { - out.add_tuple("attr_meta", vec![id.into(), v.into()]); - } - } -} - -impl trap::TrapClass for Attr { - fn class_name() -> &'static str { "Attr" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Attr 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 Attr 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 Attr is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct Callable { _unused: () @@ -899,7 +885,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct ExternItemList { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub extern_items: Vec>, } @@ -1039,8 +1025,8 @@ impl From> for trap::Label { #[derive(Debug)] pub struct FormatArgsArg { pub id: trap::TrapId, - pub arg_name: Option>, pub expr: Option>, + pub name: Option>, } impl trap::TrapEntry for FormatArgsArg { @@ -1050,12 +1036,12 @@ impl trap::TrapEntry for FormatArgsArg { fn emit(self, id: trap::Label, out: &mut trap::Writer) { out.add_tuple("format_args_args", vec![id.into()]); - if let Some(v) = self.arg_name { - out.add_tuple("format_args_arg_arg_names", vec![id.into(), v.into()]); - } if let Some(v) = self.expr { out.add_tuple("format_args_arg_exprs", vec![id.into(), v.into()]); } + if let Some(v) = self.name { + out.add_tuple("format_args_arg_names", vec![id.into(), v.into()]); + } } } @@ -1090,52 +1076,6 @@ impl From> for trap::Label { } } -#[derive(Debug)] -pub struct FormatArgsArgName { - pub id: trap::TrapId, -} - -impl trap::TrapEntry for FormatArgsArgName { - 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("format_args_arg_names", vec![id.into()]); - } -} - -impl trap::TrapClass for FormatArgsArgName { - fn class_name() -> &'static str { "FormatArgsArgName" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme FormatArgsArgName 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 FormatArgsArgName 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 FormatArgsArgName is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct GenericArg { _unused: () @@ -1308,10 +1248,60 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct ImplRestriction { + pub id: trap::TrapId, + pub visibility_inner: Option>, +} + +impl trap::TrapEntry for ImplRestriction { + 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("impl_restrictions", vec![id.into()]); + if let Some(v) = self.visibility_inner { + out.add_tuple("impl_restriction_visibility_inners", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for ImplRestriction { + fn class_name() -> &'static str { "ImplRestriction" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ImplRestriction 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 ImplRestriction 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 ImplRestriction is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct ItemList { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub items: Vec>, } @@ -1515,7 +1505,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct MatchArm { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, pub guard: Option>, pub pat: Option>, @@ -1578,7 +1568,7 @@ impl From> for trap::Label { pub struct MatchArmList { pub id: trap::TrapId, pub arms: Vec>, - pub attrs: Vec>, + pub attrs: Vec>, } impl trap::TrapEntry for MatchArmList { @@ -1714,6 +1704,60 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct MutRestriction { + pub id: trap::TrapId, + pub is_mut: bool, + pub visibility_inner: Option>, +} + +impl trap::TrapEntry for MutRestriction { + 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("mut_restrictions", vec![id.into()]); + if self.is_mut { + out.add_tuple("mut_restriction_is_mut", vec![id.into()]); + } + if let Some(v) = self.visibility_inner { + out.add_tuple("mut_restriction_visibility_inners", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for MutRestriction { + fn class_name() -> &'static str { "MutRestriction" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MutRestriction 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 MutRestriction 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 MutRestriction is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct Name { pub id: trap::TrapId, @@ -2256,7 +2300,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct SourceFile { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub items: Vec>, } @@ -2346,7 +2390,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct StmtList { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub statements: Vec>, pub tail_expr: Option>, } @@ -2404,7 +2448,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct StructExprField { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, pub identifier: Option>, } @@ -2462,7 +2506,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct StructExprFieldList { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub fields: Vec>, pub spread: Option>, } @@ -2520,9 +2564,10 @@ impl From> for trap::Label { #[derive(Debug)] pub struct StructField { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub default_val: Option>, pub is_unsafe: bool, + pub mut_restriction: Option>, pub name: Option>, pub type_repr: Option>, pub visibility: Option>, @@ -2544,6 +2589,9 @@ impl trap::TrapEntry for StructField { if self.is_unsafe { out.add_tuple("struct_field_is_unsafe", vec![id.into()]); } + if let Some(v) = self.mut_restriction { + out.add_tuple("struct_field_mut_restrictions", vec![id.into(), v.into()]); + } if let Some(v) = self.name { out.add_tuple("struct_field_names", vec![id.into(), v.into()]); } @@ -2590,7 +2638,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct StructPatField { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub identifier: Option>, pub pat: Option>, } @@ -2838,7 +2886,8 @@ impl From> for trap::Label { #[derive(Debug)] pub struct TupleField { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, + pub mut_restriction: Option>, pub type_repr: Option>, pub visibility: Option>, } @@ -2853,6 +2902,9 @@ impl trap::TrapEntry for TupleField { for (i, v) in self.attrs.into_iter().enumerate() { out.add_tuple("tuple_field_attrs", vec![id.into(), i.into(), v.into()]); } + if let Some(v) = self.mut_restriction { + out.add_tuple("tuple_field_mut_restrictions", vec![id.into(), v.into()]); + } if let Some(v) = self.type_repr { out.add_tuple("tuple_field_type_reprs", vec![id.into(), v.into()]); } @@ -3300,7 +3352,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Visibility { pub id: trap::TrapId, - pub path: Option>, + pub visibility_inner: Option>, } impl trap::TrapEntry for Visibility { @@ -3310,8 +3362,8 @@ impl trap::TrapEntry for Visibility { fn emit(self, id: trap::Label, out: &mut trap::Writer) { out.add_tuple("visibilities", vec![id.into()]); - if let Some(v) = self.path { - out.add_tuple("visibility_paths", vec![id.into(), v.into()]); + if let Some(v) = self.visibility_inner { + out.add_tuple("visibility_visibility_inners", vec![id.into(), v.into()]); } } } @@ -3347,6 +3399,56 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct VisibilityInner { + pub id: trap::TrapId, + pub path: Option>, +} + +impl trap::TrapEntry for VisibilityInner { + 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("visibility_inners", vec![id.into()]); + if let Some(v) = self.path { + out.add_tuple("visibility_inner_paths", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for VisibilityInner { + fn class_name() -> &'static str { "VisibilityInner" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme VisibilityInner 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 VisibilityInner 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 VisibilityInner is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct WhereClause { pub id: trap::TrapId, @@ -3462,7 +3564,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct ArrayExprInternal { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub exprs: Vec>, pub is_semicolon: bool, } @@ -3592,6 +3694,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct AsmClobberAbi { pub id: trap::TrapId, + pub attrs: Vec>, } impl trap::TrapEntry for AsmClobberAbi { @@ -3601,6 +3704,9 @@ impl trap::TrapEntry for AsmClobberAbi { fn emit(self, id: trap::Label, out: &mut trap::Writer) { out.add_tuple("asm_clobber_abis", vec![id.into()]); + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("asm_clobber_abi_attrs", vec![id.into(), i.into(), v.into()]); + } } } @@ -3770,6 +3876,7 @@ impl From> for trap::Label { pub struct AsmOperandNamed { pub id: trap::TrapId, pub asm_operand: Option>, + pub attrs: Vec>, pub name: Option>, } @@ -3783,6 +3890,9 @@ impl trap::TrapEntry for AsmOperandNamed { if let Some(v) = self.asm_operand { out.add_tuple("asm_operand_named_asm_operands", vec![id.into(), v.into()]); } + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("asm_operand_named_attrs", vec![id.into(), i.into(), v.into()]); + } if let Some(v) = self.name { out.add_tuple("asm_operand_named_names", vec![id.into(), v.into()]); } @@ -3833,6 +3943,7 @@ impl From> for trap::Label { pub struct AsmOptionsList { pub id: trap::TrapId, pub asm_options: Vec>, + pub attrs: Vec>, } impl trap::TrapEntry for AsmOptionsList { @@ -3845,6 +3956,9 @@ impl trap::TrapEntry for AsmOptionsList { for (i, v) in self.asm_options.into_iter().enumerate() { out.add_tuple("asm_options_list_asm_options", vec![id.into(), i.into(), v.into()]); } + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("asm_options_list_attrs", vec![id.into(), i.into(), v.into()]); + } } } @@ -4101,10 +4215,69 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct Attr { + pub id: trap::TrapId, + pub meta: Option>, +} + +impl trap::TrapEntry for Attr { + 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("attrs", vec![id.into()]); + if let Some(v) = self.meta { + out.add_tuple("attr_meta", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for Attr { + fn class_name() -> &'static str { "Attr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Attr is a subclass of AnyAttr + 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 Attr 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 Attr 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 Attr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct AwaitExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, } @@ -4167,7 +4340,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct BecomeExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, } @@ -4230,7 +4403,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct BinaryExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub lhs: Option>, pub operator_name: Option, pub rhs: Option>, @@ -4360,7 +4533,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct BreakExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, pub lifetime: Option>, } @@ -4428,7 +4601,7 @@ impl From> for trap::Label { pub struct CallExpr { pub id: trap::TrapId, pub arg_list: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub function: Option>, } @@ -4494,7 +4667,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct CastExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, pub type_repr: Option>, } @@ -4649,27 +4822,145 @@ impl From> for trap::Label { } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme CfgAttrMeta is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgAttrMeta 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 CfgAttrMeta 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 CfgAttrMeta is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct CfgComposite { + pub id: trap::TrapId, + pub cfg_predicates: Vec>, +} + +impl trap::TrapEntry for CfgComposite { + 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("cfg_composites", vec![id.into()]); + for (i, v) in self.cfg_predicates.into_iter().enumerate() { + out.add_tuple("cfg_composite_cfg_predicates", vec![id.into(), i.into(), v.into()]); + } + } +} + +impl trap::TrapClass for CfgComposite { + fn class_name() -> &'static str { "CfgComposite" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgComposite is a subclass of CfgPredicate + 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 CfgComposite 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 CfgComposite 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 CfgComposite is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct CfgMeta { + pub id: trap::TrapId, + pub cfg_predicate: Option>, +} + +impl trap::TrapEntry for CfgMeta { + 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("cfg_meta", vec![id.into()]); + if let Some(v) = self.cfg_predicate { + out.add_tuple("cfg_meta_cfg_predicates", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for CfgMeta { + fn class_name() -> &'static str { "CfgMeta" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgMeta is a subclass of Meta + 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 CfgMeta 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 CfgAttrMeta is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgMeta 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 CfgAttrMeta is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgMeta is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } @@ -4677,58 +4968,58 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct CfgComposite { - pub id: trap::TrapId, - pub cfg_predicates: Vec>, +pub struct CfgPredExpr { + pub id: trap::TrapId, + pub cfg_predicate: Option>, } -impl trap::TrapEntry for CfgComposite { +impl trap::TrapEntry for CfgPredExpr { 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("cfg_composites", vec![id.into()]); - for (i, v) in self.cfg_predicates.into_iter().enumerate() { - out.add_tuple("cfg_composite_cfg_predicates", vec![id.into(), i.into(), v.into()]); + out.add_tuple("cfg_pred_exprs", vec![id.into()]); + if let Some(v) = self.cfg_predicate { + out.add_tuple("cfg_pred_expr_cfg_predicates", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for CfgComposite { - fn class_name() -> &'static str { "CfgComposite" } +impl trap::TrapClass for CfgPredExpr { + fn class_name() -> &'static str { "CfgPredExpr" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme CfgComposite is a subclass of CfgPredicate +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredExpr 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 CfgComposite is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredExpr 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 CfgComposite is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredExpr 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 CfgComposite is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredExpr is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } @@ -4736,58 +5027,58 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct CfgMeta { - pub id: trap::TrapId, +pub struct CfgPredPat { + pub id: trap::TrapId, pub cfg_predicate: Option>, } -impl trap::TrapEntry for CfgMeta { +impl trap::TrapEntry for CfgPredPat { 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("cfg_meta", vec![id.into()]); + out.add_tuple("cfg_pred_pats", vec![id.into()]); if let Some(v) = self.cfg_predicate { - out.add_tuple("cfg_meta_cfg_predicates", vec![id.into(), v.into()]); + out.add_tuple("cfg_pred_pat_cfg_predicates", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for CfgMeta { - fn class_name() -> &'static str { "CfgMeta" } +impl trap::TrapClass for CfgPredPat { + fn class_name() -> &'static str { "CfgPredPat" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme CfgMeta is a subclass of Meta +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredPat 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 CfgMeta is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredPat 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 CfgMeta is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredPat 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 CfgMeta is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme CfgPredPat is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } @@ -4798,7 +5089,7 @@ impl From> for trap::Label { pub struct ClosureExpr { pub id: trap::TrapId, pub param_list: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub closure_body: Option>, pub for_binder: Option>, pub is_async: bool, @@ -5080,7 +5371,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct ConstParam { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub default_val: Option>, pub is_const: bool, pub name: Option>, @@ -5155,7 +5446,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct ContinueExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub lifetime: Option>, } @@ -5215,6 +5506,120 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct DerefPat { + pub id: trap::TrapId, + pub pat: Option>, +} + +impl trap::TrapEntry for DerefPat { + 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("deref_pats", vec![id.into()]); + if let Some(v) = self.pat { + out.add_tuple("deref_pat_pats", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for DerefPat { + fn class_name() -> &'static str { "DerefPat" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme DerefPat 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 DerefPat 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 DerefPat 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 DerefPat is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct DocComment { + pub id: trap::TrapId, +} + +impl trap::TrapEntry for DocComment { + 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("doc_comments", vec![id.into()]); + } +} + +impl trap::TrapClass for DocComment { + fn class_name() -> &'static str { "DocComment" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme DocComment is a subclass of AnyAttr + 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 DocComment 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 DocComment 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 DocComment is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct DynTraitTypeRepr { pub id: trap::TrapId, @@ -5336,7 +5741,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct FieldExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub container: Option>, pub identifier: Option>, } @@ -5546,7 +5951,7 @@ impl From> for trap::Label { pub struct FormatArgsExpr { pub id: trap::TrapId, pub args: Vec>, - pub attrs: Vec>, + pub attrs: Vec>, pub template: Option>, } @@ -5612,7 +6017,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct IdentPat { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub is_mut: bool, pub is_ref: bool, pub name: Option>, @@ -5687,7 +6092,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct IfExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub condition: Option>, pub else_: Option>, pub then: Option>, @@ -5814,10 +6219,65 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct IncludeBytesExpr { + pub id: trap::TrapId, +} + +impl trap::TrapEntry for IncludeBytesExpr { + 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("include_bytes_exprs", vec![id.into()]); + } +} + +impl trap::TrapClass for IncludeBytesExpr { + fn class_name() -> &'static str { "IncludeBytesExpr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme IncludeBytesExpr 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 IncludeBytesExpr 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 IncludeBytesExpr 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 IncludeBytesExpr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct IndexExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub base: Option>, pub index: Option>, } @@ -6108,7 +6568,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct LetExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub scrutinee: Option>, pub pat: Option>, } @@ -6175,7 +6635,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct LetStmt { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub initializer: Option>, pub let_else: Option>, pub pat: Option>, @@ -6368,7 +6828,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct LifetimeParam { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub lifetime: Option>, pub type_bound_list: Option>, } @@ -6435,7 +6895,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct LiteralExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub text_value: Option, } @@ -6734,7 +7194,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct MatchExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub scrutinee: Option>, pub match_arm_list: Option>, } @@ -6802,7 +7262,7 @@ impl From> for trap::Label { pub struct MethodCallExpr { pub id: trap::TrapId, pub arg_list: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub generic_arg_list: Option>, pub identifier: Option>, pub receiver: Option>, @@ -6987,10 +7447,65 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct NotNull { + pub id: trap::TrapId, +} + +impl trap::TrapEntry for NotNull { + 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("not_nulls", vec![id.into()]); + } +} + +impl trap::TrapClass for NotNull { + fn class_name() -> &'static str { "NotNull" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme NotNull 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 NotNull 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 NotNull 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 NotNull is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct OffsetOfExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub fields: Vec>, pub type_repr: Option>, } @@ -7116,7 +7631,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Param { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub type_repr: Option>, pub pat: Option>, } @@ -7183,7 +7698,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct ParenExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, } @@ -7592,10 +8107,73 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct PatternTypeRepr { + pub id: trap::TrapId, + pub pat: Option>, + pub type_repr: Option>, +} + +impl trap::TrapEntry for PatternTypeRepr { + 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("pattern_type_reprs", vec![id.into()]); + if let Some(v) = self.pat { + out.add_tuple("pattern_type_repr_pats", vec![id.into(), v.into()]); + } + if let Some(v) = self.type_repr { + out.add_tuple("pattern_type_repr_type_reprs", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for PatternTypeRepr { + fn class_name() -> &'static str { "PatternTypeRepr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme PatternTypeRepr is a subclass of TypeRepr + 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 PatternTypeRepr 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 PatternTypeRepr 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 PatternTypeRepr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct PrefixExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, pub operator_name: Option, } @@ -7729,7 +8307,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct RangeExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub end: Option>, pub operator_name: Option, pub start: Option>, @@ -7867,7 +8445,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct RefExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, pub is_const: bool, pub is_mut: bool, @@ -8072,7 +8650,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct RestPat { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, } impl trap::TrapEntry for RestPat { @@ -8131,7 +8709,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct ReturnExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, } @@ -8194,7 +8772,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct SelfParam { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub type_repr: Option>, pub is_ref: bool, pub is_mut: bool, @@ -8657,7 +9235,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct TryExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, } @@ -8720,7 +9298,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct TupleExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub fields: Vec>, } @@ -9091,7 +9669,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct TypeParam { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub default_type: Option>, pub name: Option>, pub type_bound_list: Option>, @@ -9162,7 +9740,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct UnderscoreExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, } impl trap::TrapEntry for UnderscoreExpr { @@ -9284,7 +9862,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Variant { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub const_arg: Option>, pub field_list: Option>, pub name: Option>, @@ -9414,7 +9992,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct YeetExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, } @@ -9477,7 +10055,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct YieldExpr { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub expr: Option>, } @@ -9541,7 +10119,7 @@ impl From> for trap::Label { pub struct AsmExpr { pub id: trap::TrapId, pub asm_pieces: Vec>, - pub attrs: Vec>, + pub attrs: Vec>, pub template: Vec>, } @@ -9698,7 +10276,7 @@ impl From> for trap::Label { pub struct BlockExpr { pub id: trap::TrapId, pub label: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub is_async: bool, pub is_const: bool, pub is_gen: bool, @@ -9798,7 +10376,7 @@ impl From> for trap::Label { pub struct ExternBlock { pub id: trap::TrapId, pub abi: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub extern_item_list: Option>, pub is_unsafe: bool, } @@ -9886,7 +10464,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct ExternCrate { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub identifier: Option>, pub rename: Option>, pub visibility: Option>, @@ -10039,7 +10617,7 @@ impl From> for trap::Label { pub struct Impl { pub id: trap::TrapId, pub assoc_item_list: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub generic_param_list: Option>, pub is_const: bool, pub is_default: bool, @@ -10206,7 +10784,7 @@ impl From> for trap::Label { pub struct MacroDef { pub id: trap::TrapId, pub args: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub body: Option>, pub name: Option>, pub visibility: Option>, @@ -10298,7 +10876,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct MacroRules { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub name: Option>, pub token_tree: Option>, pub visibility: Option>, @@ -10387,7 +10965,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Module { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub item_list: Option>, pub name: Option>, pub visibility: Option>, @@ -10477,7 +11055,7 @@ impl From> for trap::Label { pub struct PathExpr { pub id: trap::TrapId, pub path: Option>, - pub attrs: Vec>, + pub attrs: Vec>, } impl trap::TrapEntry for PathExpr { @@ -10558,8 +11136,9 @@ impl From> for trap::Label { pub struct Trait { pub id: trap::TrapId, pub assoc_item_list: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub generic_param_list: Option>, + pub impl_restriction: Option>, pub is_auto: bool, pub is_unsafe: bool, pub name: Option>, @@ -10584,6 +11163,9 @@ impl trap::TrapEntry for Trait { if let Some(v) = self.generic_param_list { out.add_tuple("trait_generic_param_lists", vec![id.into(), v.into()]); } + if let Some(v) = self.impl_restriction { + out.add_tuple("trait_impl_restrictions", vec![id.into(), v.into()]); + } if self.is_auto { out.add_tuple("trait_is_auto", vec![id.into()]); } @@ -10742,7 +11324,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Use { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub use_tree: Option>, pub visibility: Option>, } @@ -10827,7 +11409,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Const { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub body: Option>, pub generic_param_list: Option>, pub is_const: bool, @@ -10952,7 +11534,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Enum { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub generic_param_list: Option>, pub name: Option>, pub visibility: Option>, @@ -11060,7 +11642,7 @@ pub struct ForExpr { pub id: trap::TrapId, pub label: Option>, pub loop_body: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub iterable: Option>, pub pat: Option>, } @@ -11152,7 +11734,7 @@ impl From> for trap::Label { pub struct Function { pub id: trap::TrapId, pub param_list: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub abi: Option>, pub function_body: Option>, pub generic_param_list: Option>, @@ -11316,7 +11898,7 @@ pub struct LoopExpr { pub id: trap::TrapId, pub label: Option>, pub loop_body: Option>, - pub attrs: Vec>, + pub attrs: Vec>, } impl trap::TrapEntry for LoopExpr { @@ -11399,7 +11981,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct MacroCall { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub path: Option>, pub token_tree: Option>, } @@ -11509,7 +12091,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Static { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub body: Option>, pub is_mut: bool, pub is_static: bool, @@ -11623,7 +12205,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Struct { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub generic_param_list: Option>, pub name: Option>, pub visibility: Option>, @@ -11729,7 +12311,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct TypeAlias { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub generic_param_list: Option>, pub is_default: bool, pub name: Option>, @@ -11852,7 +12434,7 @@ impl From> for trap::Label { #[derive(Debug)] pub struct Union { pub id: trap::TrapId, - pub attrs: Vec>, + pub attrs: Vec>, pub generic_param_list: Option>, pub name: Option>, pub visibility: Option>, @@ -11960,7 +12542,7 @@ pub struct WhileExpr { pub id: trap::TrapId, pub label: Option>, pub loop_body: Option>, - pub attrs: Vec>, + pub attrs: Vec>, pub condition: Option>, } diff --git a/rust/extractor/src/main.rs b/rust/extractor/src/main.rs index d4c6e5352f7d..72b6f20c9fb0 100644 --- a/rust/extractor/src/main.rs +++ b/rust/extractor/src/main.rs @@ -1,5 +1,6 @@ use crate::diagnostics::{ExtractionStep, emit_extraction_diagnostics}; use crate::rust_analyzer::{RustAnalyzerNoSemantics, path_to_file_id}; +use crate::toolchain::log_project_toolchain; use crate::translate::SourceKind; use crate::trap::TrapId; use anyhow::Context; @@ -32,6 +33,7 @@ mod diagnostics; pub mod generated; mod qltest; mod rust_analyzer; +mod toolchain; mod translate; pub mod trap; @@ -64,12 +66,11 @@ impl<'a> Extractor<'a> { let before_extract = Instant::now(); let line_index = LineIndex::new(text.as_ref()); - let display_path = file.to_string_lossy(); let mut trap = self.traps.create("source", file); let label = trap.emit_file(file); let mut translator = translate::Translator::new( trap, - display_path.as_ref(), + file, label, line_index, semantics_info.as_ref().ok(), @@ -98,7 +99,7 @@ impl<'a> Extractor<'a> { translator.trap.commit().unwrap_or_else(|err| { error!( "Failed to write trap file for: {}: {}", - display_path, + file.display(), err.to_string() ) }); @@ -106,11 +107,11 @@ impl<'a> Extractor<'a> { .push(ExtractionStep::extract(before_extract, source_kind, file)); } - pub fn extract_with_semantics( + pub fn extract_with_semantics<'db>( &mut self, file: &Path, - semantics: &Semantics<'_, RootDatabase>, - vfs: &Vfs, + semantics: &'db Semantics<'db, RootDatabase>, + vfs: &'db Vfs, source_kind: SourceKind, ) { self.extract(&RustAnalyzer::new(vfs, semantics), file, source_kind); @@ -270,6 +271,7 @@ fn main() -> anyhow::Result<()> { ); } let cwd = cwd()?; + log_project_toolchain(); let (cargo_config, load_cargo_config) = cfg.to_cargo_config(&cwd); let library_mode = if cfg.extract_dependencies_as_source { SourceKind::Source diff --git a/rust/extractor/src/nightly-toolchain/rust-toolchain.toml b/rust/extractor/src/nightly-toolchain/rust-toolchain.toml index 7ed21df91218..5d108159caf0 100644 --- a/rust/extractor/src/nightly-toolchain/rust-toolchain.toml +++ b/rust/extractor/src/nightly-toolchain/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2025-06-01" +channel = "nightly-2026-07-15" components = [ "rust-src" ] diff --git a/rust/extractor/src/qltest.rs b/rust/extractor/src/qltest.rs index afda1bc050e4..a4f06bbd7927 100644 --- a/rust/extractor/src/qltest.rs +++ b/rust/extractor/src/qltest.rs @@ -5,10 +5,9 @@ use itertools::Itertools; use std::ffi::OsStr; use std::fs; use std::path::Path; -use std::process::Command; use tracing::info; -const EDITION: &str = "2021"; +const DEFAULT_EDITION: &str = "2021"; fn dump_lib() -> anyhow::Result<()> { let path_iterator = glob("*.rs").context("globbing test sources")?; @@ -54,19 +53,19 @@ impl TestCargoManifest<'_> { fs::write(&path, rendered).with_context(|| format!("writing {}", path.display())) } } -fn dump_cargo_manifest(dependencies: &[String]) -> anyhow::Result<()> { +fn dump_cargo_manifest(dependencies: &[String], edition: &str) -> 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, + edition, }; if uses_proc_macro { TestCargoManifest::Workspace {}.dump("")?; lib_manifest.dump(".lib")?; - TestCargoManifest::Macro { edition: EDITION }.dump(".proc_macro") + TestCargoManifest::Macro { edition }.dump(".proc_macro") } else { lib_manifest.dump("") } @@ -91,15 +90,8 @@ fn set_sources(config: &mut Config) -> anyhow::Result<()> { } fn cargo_check(config: &Config) -> anyhow::Result<()> { - let mut command = Command::new("cargo"); + let mut command = ra_ap_toolchain::command("cargo", ".", &config.get_extra_env()); command.env("CARGO_TARGET_DIR", config.cargo_target_dir()); - // Pass the extra environment variables to the initial `cargo check`. - for (key, value) in config.get_extra_env() { - match value { - Some(value) => command.env(key, value), - None => command.env_remove(key), - }; - } let status = command .arg("check") .arg("-q") @@ -116,7 +108,8 @@ fn cargo_check(config: &Config) -> anyhow::Result<()> { pub(crate) fn prepare(config: &mut Config) -> anyhow::Result<()> { dump_lib()?; set_sources(config)?; - dump_cargo_manifest(&config.qltest_dependencies)?; + let edition = config.qltest_edition.as_deref().unwrap_or(DEFAULT_EDITION); + dump_cargo_manifest(&config.qltest_dependencies, edition)?; if config.qltest_use_nightly { dump_nightly_toolchain()?; } diff --git a/rust/extractor/src/rust_analyzer.rs b/rust/extractor/src/rust_analyzer.rs index 9811bd39ce5b..25d88ec5ce6b 100644 --- a/rust/extractor/src/rust_analyzer.rs +++ b/rust/extractor/src/rust_analyzer.rs @@ -99,7 +99,7 @@ impl<'a> RustAnalyzer<'a> { fn get_file_data( &self, path: &Path, - ) -> Result<(&Semantics<'_, RootDatabase>, EditionedFileId, FileText), RustAnalyzerNoSemantics> + ) -> Result<(&'a Semantics<'a, RootDatabase>, EditionedFileId, FileText), RustAnalyzerNoSemantics> { match self { RustAnalyzer::WithoutSemantics { severity, reason } => Err(RustAnalyzerNoSemantics { @@ -118,12 +118,12 @@ impl<'a> RustAnalyzer<'a> { let editioned_file_id = semantics.attach_first_edition_opt(file_id).ok_or( RustAnalyzerNoSemantics::warning("failed to determine rust edition"), )?; - Ok((semantics, editioned_file_id, input)) + Ok((*semantics, editioned_file_id, input)) } } } - pub fn parse(&self, path: &Path) -> ParseResult<'_> { + pub fn parse(&self, path: &Path) -> ParseResult<'a> { match self.get_file_data(path) { Ok((semantics, file_id, input)) => { let source_file = semantics.parse(file_id); diff --git a/rust/extractor/src/toolchain.rs b/rust/extractor/src/toolchain.rs new file mode 100644 index 000000000000..e9074977ea50 --- /dev/null +++ b/rust/extractor/src/toolchain.rs @@ -0,0 +1,163 @@ +//! Contains the logic for determining the Rust toolchain to be used by the +//! extractor. +//! +//! Rust-analyzer only guarantees compatibility with the latest Rust toolchain +//! per: +//! +//! +//! The Rust compiler on the other hand has fairly strong backwards +//! compatibility guarantees. Usually updating to a newer toolchain does not +//! cause any compilation errors. +//! +//! We therefore use a fixed Rust toolchain that is known to work with our +//! version of rust-analyzer. This gives us backwards compatibility issues +//! stemming from the Rust compiler, instead of those stemming from +//! rust-analyzer <-> Rust toolchain incompatibilities. The former set of +//! problems is (per current experiments and future expectations) much smaller. + +use std::{io, process}; + +use chrono::NaiveDate; +use tracing::{info, warn}; + +/// The toolchain target by the extractor. This should usually be latest Rust +/// toolchain release that precedes our version of rust-analyzer. +/// +/// When rust-analyzer is updated this version should be updated accordingly. +const FIXED_RUST_TOOLCHAIN: &str = "1.99.0"; + +/// The date of the oldest nightly toolchain known to work with our version of +/// rust-analyzer. +/// +/// When rust-analyzer is updated this version may need to be updated. +const MINIMUM_NIGHTLY_DATE: NaiveDate = NaiveDate::from_ymd_opt(2026, 7, 15).unwrap(); + +/// The command output of asking `rustup` which toolchain is used by the Rust +/// project in the current working directory. This main looks at +/// `rust-toolchain.toml` if present. +/// +/// Examples of what the stdout might look like when the command is successful: +/// - `nightly-aarch64-apple-darwin (overridden by '/path/to/project/rust-toolchain.toml')` +/// - `nightly-2026-09-01-aarch64-apple-darwin (overridden by '/path/to/project/rust-toolchain.toml')` +/// - `stable-aarch64-apple-darwin (default)` +/// - `1.80.1-aarch64-apple-darwin (overridden by '/path/to/project/rust-toolchain.toml')` +pub fn project_toolchain() -> io::Result { + process::Command::new("rustup") + .args(["show", "active-toolchain"]) + .output() +} + +/// Returns the fixed toolchain except when the project is using a nightly +/// toolchain. +/// +/// Recent nightly toolchains are preserved so that projects can use unstable +/// features. Older dated nightlies are replaced with the oldest nightly known +/// to be compatible with our rust-analyzer version. +pub fn select_toolchain() -> String { + let project_toolchain = project_toolchain() + .ok() + .filter(|output| output.status.success()) + .and_then(|output| String::from_utf8(output.stdout).ok()) + .unwrap_or_default(); + select_toolchain_from_project_toolchain(&project_toolchain) +} + +fn select_toolchain_from_project_toolchain(project_toolchain: &str) -> String { + let nightly_toolchain = project_toolchain + .split_whitespace() + .next() + .filter(|toolchain| toolchain.starts_with("nightly")) + .map(str::to_owned) + .map(cap_nightly_toolchain); + nightly_toolchain.unwrap_or_else(|| FIXED_RUST_TOOLCHAIN.to_owned()) +} + +fn cap_nightly_toolchain(nightly_toolchain: String) -> String { + if let Some(project_date) = nightly_date(&nightly_toolchain) + && project_date < MINIMUM_NIGHTLY_DATE + { + format!("nightly-{MINIMUM_NIGHTLY_DATE}") + } else { + nightly_toolchain + } +} + +/// Parse the date from a nightly toolchain string. +fn nightly_date(toolchain: &str) -> Option { + let suffix = toolchain.strip_prefix("nightly-")?; + (suffix.len() >= 10).then(|| NaiveDate::parse_from_str(suffix.get(..10)?, "%Y-%m-%d").ok())? +} + +pub fn log_project_toolchain() { + match project_toolchain() { + Ok(output) if output.status.success() => info!( + "project Rust toolchain: {}", + String::from_utf8_lossy(&output.stdout).trim() + ), + Ok(output) => warn!( + "unable to determine project Rust toolchain: {}", + String::from_utf8_lossy(&output.stderr).trim() + ), + Err(error) => warn!("unable to determine project Rust toolchain: {error}"), + } +} + +#[cfg(test)] +mod tests { + use super::{MINIMUM_NIGHTLY_DATE, select_toolchain_from_project_toolchain}; + + #[test] + fn preserves_rolling_nightly_toolchain() { + assert_eq!( + select_toolchain_from_project_toolchain("nightly-aarch64-apple-darwin"), + "nightly-aarch64-apple-darwin" + ); + } + + #[test] + fn replaces_old_dated_nightly_toolchain() { + assert_eq!( + select_toolchain_from_project_toolchain("nightly-2025-07-15-aarch64-apple-darwin"), + format!("nightly-{MINIMUM_NIGHTLY_DATE}") + ); + assert_eq!( + select_toolchain_from_project_toolchain("nightly-2025-07-15"), + format!("nightly-{MINIMUM_NIGHTLY_DATE}") + ); + } + + #[test] + fn preserves_minimum_dated_nightly_toolchain() { + assert_eq!( + select_toolchain_from_project_toolchain("nightly-2026-07-15-aarch64-apple-darwin"), + "nightly-2026-07-15-aarch64-apple-darwin" + ); + } + + #[test] + fn preserves_newer_dated_nightly_toolchain() { + assert_eq!( + select_toolchain_from_project_toolchain("nightly-2026-09-01-aarch64-apple-darwin"), + "nightly-2026-09-01-aarch64-apple-darwin" + ); + } + + #[test] + fn preserves_unrecognized_nightly_toolchain() { + assert_eq!( + select_toolchain_from_project_toolchain("nightly-custom"), + "nightly-custom" + ); + assert_eq!( + select_toolchain_from_project_toolchain("nightly-2026-99-99-aarch64-apple-darwin"), + "nightly-2026-99-99-aarch64-apple-darwin" + ); + } + + #[test] + fn minimum_nightly_matches_qltest_toolchain() { + // The minimum nightly toolchain should match the one we test against. + let toolchain_file = include_str!("nightly-toolchain/rust-toolchain.toml"); + assert!(toolchain_file.contains(&format!("channel = \"nightly-{MINIMUM_NIGHTLY_DATE}\""))); + } +} diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index 68c3691fd24c..05f838cfbc3b 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -5,7 +5,6 @@ use crate::trap::{DiagnosticSeverity, TrapFile, TrapId}; use crate::trap::{Label, TrapClass}; use ra_ap_base_db::EditionedFileId; use ra_ap_hir::Semantics; -use ra_ap_hir::db::ExpandDatabase; use ra_ap_hir_expand::builtin::{BuiltinDeriveExpander, find_builtin_derive}; use ra_ap_hir_expand::span_map::ExpansionSpanMap; use ra_ap_hir_expand::{ExpandResult, ExpandTo, HirFileId, InFile, map_node_range_up_rooted}; @@ -21,6 +20,7 @@ use ra_ap_syntax::{ use ra_ap_syntax_bridge::{ DocCommentDesugarMode, syntax_node_to_token_tree, token_tree_to_syntax_node, }; +use std::path::{Path, PathBuf}; impl Emission for Translator<'_> { fn pre_emit(&mut self, node: &ast::Item) -> Option> { @@ -123,13 +123,13 @@ pub enum SourceKind { Library, } -pub struct Translator<'a> { +pub struct Translator<'db> { pub trap: TrapFile, - path: &'a str, + path: PathBuf, label: Label, line_index: LineIndex, file_id: Option, - pub semantics: Option<&'a Semantics<'a, RootDatabase>>, + pub semantics: Option<&'db Semantics<'db, RootDatabase>>, source_kind: SourceKind, pub(crate) macro_context_depth: usize, diagnostic_count: usize, @@ -144,18 +144,18 @@ const UNKNOWN_LOCATION: (LineCol, LineCol) = const DIAGNOSTIC_LIMIT_PER_FILE: usize = 100; -impl<'a> Translator<'a> { +impl<'db> Translator<'db> { pub fn new( trap: TrapFile, - path: &'a str, + path: &Path, label: Label, line_index: LineIndex, - semantic_info: Option<&FileSemanticInformation<'a>>, + semantic_info: Option<&FileSemanticInformation<'db>>, source_kind: SourceKind, - ) -> Translator<'a> { + ) -> Translator<'db> { Translator { trap, - path, + path: path.to_path_buf(), label, line_index, file_id: semantic_info.map(|i| i.file_id), @@ -293,7 +293,7 @@ impl<'a> Translator<'a> { dispatch_to_tracing!( severity, "{}:{}:{}: {}", - self.path, + self.path.display(), start.line + 1, start.col + 1, &full_message, @@ -372,7 +372,7 @@ impl<'a> Translator<'a> { if let Some(value) = semantics .hir_file_for(expanded) .macro_file() - .and_then(|macro_call_id| semantics.db.parse_macro_expansion_error(macro_call_id)) + .and_then(|macro_call_id| macro_call_id.parse_macro_expansion_error(semantics.db)) { if let Some(err) = &value.err { let error = err.render_to_string(semantics.db); @@ -381,9 +381,8 @@ impl<'a> Translator<'a> { == hir_file_id.file_id().map(|f| f.file_id(semantics.db)) { let location = err.span().range - + semantics - .db - .ast_id_map(hir_file_id) + + hir_file_id + .ast_id_map(semantics.db) .get_erased(err.span().anchor.ast_id) .text_range() .start(); @@ -515,11 +514,9 @@ impl<'a> Translator<'a> { None => return false, } } - HirFileId::MacroFile(macro_call) => sema - .db - .lookup_intern_macro_call(macro_call) - .krate - .cfg_options(sema.db), + HirFileId::MacroFile(macro_call) => { + macro_call.loc(sema.db).krate.cfg_options(sema.db) + } }; cfg_options.check(&cfg_expr) == Some(false) }) @@ -755,11 +752,11 @@ impl<'a> Translator<'a> { let semantics = self.semantics?; let db = semantics.db; let file_id = semantics.hir_file_for(adt.syntax()); - let span_map = db.span_map(file_id); + let span_map = file_id.span_map(db); let call_site = span_map.span_for_range(adt.syntax().text_range()); let input = syntax_node_to_token_tree( adt.syntax(), - span_map.as_ref(), + span_map, call_site, DocCommentDesugarMode::ProcMacro, ); diff --git a/rust/extractor/src/translate/generated.rs b/rust/extractor/src/translate/generated.rs index fe524b75e9d1..0cf7a9e61c8f 100644 --- a/rust/extractor/src/translate/generated.rs +++ b/rust/extractor/src/translate/generated.rs @@ -10,6 +10,16 @@ use ra_ap_syntax::ast::{ #[rustfmt::skip] use ra_ap_syntax::{AstNode, ast}; impl Translator<'_> { + pub(crate) fn emit_any_attr( + &mut self, + node: &ast::AnyAttr, + ) -> Option> { + let label = match node { + ast::AnyAttr::Attr(inner) => self.emit_attr(inner).map(Into::into), + ast::AnyAttr::DocComment(inner) => self.emit_doc_comment(inner).map(Into::into), + }?; + Some(label) + } pub(crate) fn emit_asm_operand( &mut self, node: &ast::AsmOperand, @@ -76,12 +86,16 @@ impl Translator<'_> { ast::Expr::BreakExpr(inner) => self.emit_break_expr(inner).map(Into::into), ast::Expr::CallExpr(inner) => self.emit_call_expr(inner).map(Into::into), ast::Expr::CastExpr(inner) => self.emit_cast_expr(inner).map(Into::into), + ast::Expr::CfgPredExpr(inner) => self.emit_cfg_pred_expr(inner).map(Into::into), ast::Expr::ClosureExpr(inner) => self.emit_closure_expr(inner).map(Into::into), ast::Expr::ContinueExpr(inner) => self.emit_continue_expr(inner).map(Into::into), ast::Expr::FieldExpr(inner) => self.emit_field_expr(inner).map(Into::into), ast::Expr::ForExpr(inner) => self.emit_for_expr(inner).map(Into::into), ast::Expr::FormatArgsExpr(inner) => self.emit_format_args_expr(inner).map(Into::into), ast::Expr::IfExpr(inner) => self.emit_if_expr(inner).map(Into::into), + ast::Expr::IncludeBytesExpr(inner) => { + self.emit_include_bytes_expr(inner).map(Into::into) + } ast::Expr::IndexExpr(inner) => self.emit_index_expr(inner).map(Into::into), ast::Expr::LetExpr(inner) => self.emit_let_expr(inner).map(Into::into), ast::Expr::Literal(inner) => self.emit_literal(inner).map(Into::into), @@ -179,10 +193,13 @@ impl Translator<'_> { pub(crate) fn emit_pat(&mut self, node: &ast::Pat) -> Option> { let label = match node { ast::Pat::BoxPat(inner) => self.emit_box_pat(inner).map(Into::into), + ast::Pat::CfgPredPat(inner) => self.emit_cfg_pred_pat(inner).map(Into::into), ast::Pat::ConstBlockPat(inner) => self.emit_const_block_pat(inner).map(Into::into), + ast::Pat::DerefPat(inner) => self.emit_deref_pat(inner).map(Into::into), ast::Pat::IdentPat(inner) => self.emit_ident_pat(inner).map(Into::into), ast::Pat::LiteralPat(inner) => self.emit_literal_pat(inner).map(Into::into), ast::Pat::MacroPat(inner) => self.emit_macro_pat(inner).map(Into::into), + ast::Pat::NotNull(inner) => self.emit_not_null(inner).map(Into::into), ast::Pat::OrPat(inner) => self.emit_or_pat(inner).map(Into::into), ast::Pat::ParenPat(inner) => self.emit_paren_pat(inner).map(Into::into), ast::Pat::PathPat(inner) => self.emit_path_pat(inner).map(Into::into), @@ -217,6 +234,7 @@ impl Translator<'_> { ast::Type::NeverType(inner) => self.emit_never_type(inner).map(Into::into), ast::Type::ParenType(inner) => self.emit_paren_type(inner).map(Into::into), ast::Type::PathType(inner) => self.emit_path_type(inner).map(Into::into), + ast::Type::PatternType(inner) => self.emit_pattern_type(inner).map(Into::into), ast::Type::PtrType(inner) => self.emit_ptr_type(inner).map(Into::into), ast::Type::RefType(inner) => self.emit_ref_type(inner).map(Into::into), ast::Type::SliceType(inner) => self.emit_slice_type(inner).map(Into::into), @@ -290,7 +308,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let exprs = node.exprs().filter_map(|x| self.emit_expr(&x)).collect(); let is_semicolon = node.semicolon_token().is_some(); let label = self.trap.emit(generated::ArrayExprInternal { @@ -322,9 +343,17 @@ impl Translator<'_> { &mut self, node: &ast::AsmClobberAbi, ) -> Option> { - let label = self - .trap - .emit(generated::AsmClobberAbi { id: TrapId::Star }); + if self.should_be_excluded(node) { + return None; + } + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); + let label = self.trap.emit(generated::AsmClobberAbi { + id: TrapId::Star, + attrs, + }); self.emit_location(label, node); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) @@ -364,7 +393,10 @@ impl Translator<'_> { .asm_pieces() .filter_map(|x| self.emit_asm_piece(&x)) .collect(); - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let template = node.template().filter_map(|x| self.emit_expr(&x)).collect(); let label = self.trap.emit(generated::AsmExpr { id: TrapId::Star, @@ -408,11 +440,19 @@ impl Translator<'_> { &mut self, node: &ast::AsmOperandNamed, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let asm_operand = node.asm_operand().and_then(|x| self.emit_asm_operand(&x)); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let name = node.name().and_then(|x| self.emit_name(&x)); let label = self.trap.emit(generated::AsmOperandNamed { id: TrapId::Star, asm_operand, + attrs, name, }); self.emit_location(label, node); @@ -436,13 +476,21 @@ impl Translator<'_> { &mut self, node: &ast::AsmOptions, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let asm_options = node .asm_options() .filter_map(|x| self.emit_asm_option(&x)) .collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let label = self.trap.emit(generated::AsmOptionsList { id: TrapId::Star, asm_options, + attrs, }); self.emit_location(label, node); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); @@ -501,7 +549,10 @@ impl Translator<'_> { .assoc_items() .filter_map(|x| self.emit_assoc_item(&x)) .collect(); - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let label = self.trap.emit(generated::AssocItemList { id: TrapId::Star, assoc_items, @@ -561,7 +612,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::AwaitExpr { id: TrapId::Star, @@ -579,7 +633,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::BecomeExpr { id: TrapId::Star, @@ -597,7 +654,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let lhs = node.lhs().and_then(|x| self.emit_expr(&x)); let operator_name = node.try_get_text(); let rhs = node.rhs().and_then(|x| self.emit_expr(&x)); @@ -619,7 +679,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let is_async = node.async_token().is_some(); let is_const = node.const_token().is_some(); let is_gen = node.gen_token().is_some(); @@ -663,7 +726,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let label = self.trap.emit(generated::BreakExpr { @@ -684,7 +750,10 @@ impl Translator<'_> { 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 attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let function = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::CallExpr { id: TrapId::Star, @@ -703,7 +772,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let label = self.trap.emit(generated::CastExpr { @@ -773,6 +845,36 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_cfg_pred_expr( + &mut self, + node: &ast::CfgPredExpr, + ) -> Option> { + let cfg_predicate = node + .cfg_predicate() + .and_then(|x| self.emit_cfg_predicate(&x)); + let label = self.trap.emit(generated::CfgPredExpr { + id: TrapId::Star, + cfg_predicate, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } + pub(crate) fn emit_cfg_pred_pat( + &mut self, + node: &ast::CfgPredPat, + ) -> Option> { + let cfg_predicate = node + .cfg_predicate() + .and_then(|x| self.emit_cfg_predicate(&x)); + let label = self.trap.emit(generated::CfgPredPat { + id: TrapId::Star, + cfg_predicate, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_closure_expr( &mut self, node: &ast::ClosureExpr, @@ -780,7 +882,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let closure_body = node.body().and_then(|x| self.emit_expr(&x)); let for_binder = node.for_binder().and_then(|x| self.emit_for_binder(&x)); let is_async = node.async_token().is_some(); @@ -814,7 +919,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let body = if self.should_skip_bodies() { None } else { @@ -881,7 +989,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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(); let name = node.name().and_then(|x| self.emit_name(&x)); @@ -905,7 +1016,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let label = self.trap.emit(generated::ContinueExpr { id: TrapId::Star, @@ -916,6 +1030,28 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_deref_pat( + &mut self, + node: &ast::DerefPat, + ) -> Option> { + let pat = node.pat().and_then(|x| self.emit_pat(&x)); + let label = self.trap.emit(generated::DerefPat { + id: TrapId::Star, + pat, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } + pub(crate) fn emit_doc_comment( + &mut self, + node: &ast::DocComment, + ) -> Option> { + let label = self.trap.emit(generated::DocComment { id: TrapId::Star }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_dyn_trait_type( &mut self, node: &ast::DynTraitType, @@ -938,7 +1074,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -981,7 +1120,10 @@ impl Translator<'_> { 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 attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let extern_item_list = node .extern_item_list() .and_then(|x| self.emit_extern_item_list(&x)); @@ -1004,7 +1146,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); @@ -1026,7 +1171,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let extern_items = node .extern_items() .filter_map(|x| self.emit_extern_item(&x)) @@ -1047,7 +1195,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let label = self.trap.emit(generated::FieldExpr { @@ -1068,7 +1219,10 @@ impl Translator<'_> { 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 attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let function_body = if self.should_skip_bodies() { None } else { @@ -1154,7 +1308,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let loop_body = node.loop_body().and_then(|x| self.emit_block_expr(&x)); @@ -1190,30 +1347,17 @@ impl Translator<'_> { &mut self, node: &ast::FormatArgsArg, ) -> Option> { - let arg_name = node - .arg_name() - .and_then(|x| self.emit_format_args_arg_name(&x)); 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 { id: TrapId::Star, - arg_name, expr, + name, }); self.emit_location(label, node); self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } - pub(crate) fn emit_format_args_arg_name( - &mut self, - node: &ast::FormatArgsArgName, - ) -> Option> { - let label = self - .trap - .emit(generated::FormatArgsArgName { id: TrapId::Star }); - self.emit_location(label, node); - self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); - Some(label) - } pub(crate) fn emit_format_args_expr( &mut self, node: &ast::FormatArgsExpr, @@ -1225,7 +1369,10 @@ impl Translator<'_> { .args() .filter_map(|x| self.emit_format_args_arg(&x)) .collect(); - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let template = node.template().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::FormatArgsExpr { id: TrapId::Star, @@ -1276,7 +1423,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let is_mut = node.mut_token().is_some(); let is_ref = node.ref_token().is_some(); let name = node.name().and_then(|x| self.emit_name(&x)); @@ -1297,7 +1447,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let then = node.then_branch().and_then(|x| self.emit_block_expr(&x)); @@ -1319,7 +1472,10 @@ impl Translator<'_> { let assoc_item_list = node .assoc_item_list() .and_then(|x| self.emit_assoc_item_list(&x)); - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -1347,6 +1503,21 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_impl_restriction( + &mut self, + node: &ast::ImplRestriction, + ) -> Option> { + let visibility_inner = node + .visibility_inner() + .and_then(|x| self.emit_visibility_inner(&x)); + let label = self.trap.emit(generated::ImplRestriction { + id: TrapId::Star, + visibility_inner, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_impl_trait_type( &mut self, node: &ast::ImplTraitType, @@ -1362,6 +1533,17 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_include_bytes_expr( + &mut self, + node: &ast::IncludeBytesExpr, + ) -> Option> { + let label = self + .trap + .emit(generated::IncludeBytesExpr { id: TrapId::Star }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_index_expr( &mut self, node: &ast::IndexExpr, @@ -1369,7 +1551,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let label = self.trap.emit(generated::IndexExpr { @@ -1400,7 +1585,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let items = node.items().filter_map(|x| self.emit_item(&x)).collect(); let label = self.trap.emit(generated::ItemList { id: TrapId::Star, @@ -1456,7 +1644,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let label = self.trap.emit(generated::LetExpr { @@ -1476,7 +1667,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let pat = node.pat().and_then(|x| self.emit_pat(&x)); @@ -1526,7 +1720,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let type_bound_list = node .type_bound_list() @@ -1548,7 +1745,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let text_value = node.try_get_text(); let label = self.trap.emit(generated::LiteralExpr { id: TrapId::Star, @@ -1579,7 +1779,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let label = self.trap.emit(generated::LoopExpr { @@ -1602,7 +1805,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let path = node.path().and_then(|x| self.emit_path(&x)); let token_tree = if self.should_skip_bodies() { None @@ -1632,7 +1838,10 @@ impl Translator<'_> { } else { node.args().and_then(|x| self.emit_token_tree(&x)) }; - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let body = if self.should_skip_bodies() { None } else { @@ -1698,7 +1907,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); @@ -1733,7 +1945,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let pat = node.pat().and_then(|x| self.emit_pat(&x)); @@ -1759,7 +1974,10 @@ impl Translator<'_> { .arms() .filter_map(|x| self.emit_match_arm(&x)) .collect(); - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let label = self.trap.emit(generated::MatchArmList { id: TrapId::Star, arms, @@ -1776,7 +1994,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let scrutinee = node.expr().and_then(|x| self.emit_expr(&x)); let match_arm_list = node .match_arm_list() @@ -1812,7 +2033,10 @@ impl Translator<'_> { 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 attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let generic_arg_list = node .generic_arg_list() .and_then(|x| self.emit_generic_arg_list(&x)); @@ -1834,7 +2058,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let item_list = node.item_list().and_then(|x| self.emit_item_list(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); @@ -1849,6 +2076,23 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_mut_restriction( + &mut self, + node: &ast::MutRestriction, + ) -> Option> { + let is_mut = node.mut_token().is_some(); + let visibility_inner = node + .visibility_inner() + .and_then(|x| self.emit_visibility_inner(&x)); + let label = self.trap.emit(generated::MutRestriction { + id: TrapId::Star, + is_mut, + visibility_inner, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_name(&mut self, node: &ast::Name) -> Option> { let text = node.try_get_text(); let label = self.trap.emit(generated::Name { @@ -1883,6 +2127,15 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_not_null( + &mut self, + node: &ast::NotNull, + ) -> Option> { + let label = self.trap.emit(generated::NotNull { id: TrapId::Star }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_offset_of_expr( &mut self, node: &ast::OffsetOfExpr, @@ -1890,7 +2143,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let fields = node .fields() .filter_map(|x| self.emit_name_ref(&x)) @@ -1920,7 +2176,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let pat = if self.should_skip_bodies() { None } else { @@ -1959,7 +2218,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ParenExpr { id: TrapId::Star, @@ -2031,7 +2293,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::PathExpr { id: TrapId::Star, @@ -2112,6 +2377,21 @@ impl Translator<'_> { self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); Some(label) } + pub(crate) fn emit_pattern_type( + &mut self, + node: &ast::PatternType, + ) -> Option> { + let pat = 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::PatternTypeRepr { + id: TrapId::Star, + pat, + type_repr, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } pub(crate) fn emit_prefix_expr( &mut self, node: &ast::PrefixExpr, @@ -2119,7 +2399,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let operator_name = node.try_get_text(); let label = self.trap.emit(generated::PrefixExpr { @@ -2156,7 +2439,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let end = node.end().and_then(|x| self.emit_expr(&x)); let operator_name = node.try_get_text(); let start = node.start().and_then(|x| self.emit_expr(&x)); @@ -2212,7 +2498,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let label = self.trap.emit(generated::StructExprField { @@ -2232,7 +2521,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let fields = node .fields() .filter_map(|x| self.emit_record_expr_field(&x)) @@ -2255,9 +2547,15 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let default_val = node.default_val().and_then(|x| self.emit_const_arg(&x)); let is_unsafe = node.unsafe_token().is_some(); + let mut_restriction = node + .mut_restriction() + .and_then(|x| self.emit_mut_restriction(&x)); 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)); @@ -2266,6 +2564,7 @@ impl Translator<'_> { attrs, default_val, is_unsafe, + mut_restriction, name, type_repr, visibility, @@ -2314,7 +2613,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let label = self.trap.emit(generated::StructPatField { @@ -2352,7 +2654,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let is_const = node.const_token().is_some(); let is_mut = node.mut_token().is_some(); @@ -2415,7 +2720,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let label = self.trap.emit(generated::RestPat { id: TrapId::Star, attrs, @@ -2444,7 +2752,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ReturnExpr { id: TrapId::Star, @@ -2473,7 +2784,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let is_ref = node.amp_token().is_some(); let is_mut = node.mut_token().is_some(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); @@ -2525,7 +2839,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let items = node.items().filter_map(|x| self.emit_item(&x)).collect(); let label = self.trap.emit(generated::SourceFile { id: TrapId::Star, @@ -2540,7 +2857,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let body = if self.should_skip_bodies() { None } else { @@ -2574,7 +2894,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let statements = node .statements() .filter_map(|x| self.emit_stmt(&x)) @@ -2597,7 +2920,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let field_list = node.field_list().and_then(|x| self.emit_field_list(&x)); let generic_param_list = node .generic_param_list() @@ -2650,10 +2976,16 @@ impl Translator<'_> { let assoc_item_list = node .assoc_item_list() .and_then(|x| self.emit_assoc_item_list(&x)); - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); + let impl_restriction = node + .impl_restriction() + .and_then(|x| self.emit_impl_restriction(&x)); let is_auto = node.auto_token().is_some(); let is_unsafe = node.unsafe_token().is_some(); let name = node.name().and_then(|x| self.emit_name(&x)); @@ -2667,6 +2999,7 @@ impl Translator<'_> { assoc_item_list, attrs, generic_param_list, + impl_restriction, is_auto, is_unsafe, name, @@ -2700,7 +3033,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::TryExpr { id: TrapId::Star, @@ -2718,7 +3054,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let fields = node.fields().filter_map(|x| self.emit_expr(&x)).collect(); let label = self.trap.emit(generated::TupleExpr { id: TrapId::Star, @@ -2736,12 +3075,19 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); + let mut_restriction = node + .mut_restriction() + .and_then(|x| self.emit_mut_restriction(&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 label = self.trap.emit(generated::TupleField { id: TrapId::Star, attrs, + mut_restriction, type_repr, visibility, }); @@ -2813,7 +3159,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -2901,7 +3250,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let type_bound_list = node @@ -2925,7 +3277,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let label = self.trap.emit(generated::UnderscoreExpr { id: TrapId::Star, attrs, @@ -2941,7 +3296,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -2984,7 +3342,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let label = self.trap.emit(generated::Use { @@ -3057,7 +3418,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let const_arg = node.const_arg().and_then(|x| self.emit_const_arg(&x)); let field_list = node.field_list().and_then(|x| self.emit_field_list(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); @@ -3094,8 +3458,23 @@ impl Translator<'_> { &mut self, node: &ast::Visibility, ) -> Option> { - let path = node.path().and_then(|x| self.emit_path(&x)); + let visibility_inner = node + .visibility_inner() + .and_then(|x| self.emit_visibility_inner(&x)); let label = self.trap.emit(generated::Visibility { + id: TrapId::Star, + visibility_inner, + }); + self.emit_location(label, node); + self.emit_tokens(node, label.into(), node.syntax().children_with_tokens()); + Some(label) + } + pub(crate) fn emit_visibility_inner( + &mut self, + node: &ast::VisibilityInner, + ) -> Option> { + let path = node.path().and_then(|x| self.emit_path(&x)); + let label = self.trap.emit(generated::VisibilityInner { id: TrapId::Star, path, }); @@ -3147,7 +3526,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_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)); let loop_body = node.loop_body().and_then(|x| self.emit_block_expr(&x)); @@ -3178,7 +3560,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::YeetExpr { id: TrapId::Star, @@ -3196,7 +3581,10 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } - let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); + let attrs = node + .attrs_with_doc() + .filter_map(|x| self.emit_any_attr(&x)) + .collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::YieldExpr { id: TrapId::Star, diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 4e2371c73bed..5c18625dcfd6 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -1,71 +1,75 @@ -lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 6856901e16b8e54da81700c78abf93268801e77dbca5d3f2d3c63f7e1eeef088 8e4cbe943860b173a519a7b797d9a6af0d3cdcc0514d9e003720a71b51d8cb8c +lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll a930796c48512c3d62163b6ab5683109ef10e0f9fa620ea08229ec0430b6c302 377246276407e62bb4b4bceace683a44e8c57beffa444a9c85169bf2455a2d09 lib/codeql/rust/elements/Abi.qll 485a2e79f6f7bfd1c02a6e795a71e62dede3c3e150149d5f8f18b761253b7208 6159ba175e7ead0dd2e3f2788f49516c306ee11b1a443bd4bdc00b7017d559bd lib/codeql/rust/elements/Addressable.qll 13011bfd2e1556694c3d440cc34af8527da4df49ad92b62f2939d3699ff2cea5 ddb25935f7553a1a384b1abe2e4b4fa90ab50b952dadec32fd867afcb054f4be +lib/codeql/rust/elements/AnyAttr.qll 31536ed6ba02c538ff192089dc40c6f984ce808406f0522eed49539b9ae8a0da c6df96292f0f96415af4e8b3736e870475c21829ab08a8fe56d221ee4bb4cbd7 lib/codeql/rust/elements/ArgList.qll 3d2f6f5542340b80a4c6e944ac17aba0d00727588bb66e501453ac0f80c82f83 afd52700bf5a337f19827846667cd0fb1fea5abbbcbc353828e292a727ea58c9 -lib/codeql/rust/elements/ArrayExpr.qll e4e7cff3518c50ec908271906dd46c1fbe9098faa1e8cd06a27f0a6e8d165ed1 fe02a4f4197f57ecd1e8e82d6c9384148ec29d8b106d7f696795b2f325e4a71b +lib/codeql/rust/elements/ArrayExpr.qll 28b5d11ec05307cafbb6481e8992a6864e5a99688a427200926948d7342ba858 c5a97c717d97044b20b811eac19a675bf2cd9e7077526e85bd1b1b03e74c99df lib/codeql/rust/elements/ArrayListExpr.qll 451aedcecb479c385ff497588c7a07fda304fd5b873270223a4f2c804e96b245 a8cb008f6f732215623b5626c84b37b651ca01ccafb2cf4c835df35d5140c6ad lib/codeql/rust/elements/ArrayRepeatExpr.qll 4b7ed5be7d2caaf69f6fc0cd05b0e2416c52d547b1a73fb23d5a13007f75f4dd f6366f21cc48376b5fdf37e8c5c2b19415d4cbdeef09f33bb99cde5cb0f5b0e7 lib/codeql/rust/elements/ArrayTypeRepr.qll a3e61c99567893aa26c610165696e54d11c16053b6b7122275eff2c778f0a52d 36a487dcb083816b85f3eec181a1f9b47bba012765486e54db61c7ffe9a0fcbf -lib/codeql/rust/elements/AsmClobberAbi.qll eb5628916f41ab47e333b4528fba3fb80caecd2805fb20ba4f5c8d59c9677f14 636fce6b3a7f04141d0d3a53734d08a188a45bcc04f755bb66746d4f0a13fa72 +lib/codeql/rust/elements/AsmClobberAbi.qll c48e5ab858fd470875c5e518545fb2184055c3dff51583f87addad196830ce3b f86775fa7130ac7d551e1ecaa0dfb2f56447d307b5624a3e149f242a7f1a0156 lib/codeql/rust/elements/AsmConst.qll f408468624dd0c80c6dcf62d17e65a94cd477a5a760be1b5fdd07c8189a3b4ea e4159073b3ee6d247e8962ce925da55ea39ee2cd1649f8b785a92aea17dbf144 lib/codeql/rust/elements/AsmDirSpec.qll 0c439c031c9f60596373aee8ae2ee70068582548ae365a3c7c19c8b5e2b030d2 0127b08b99bd8725cb6273c1a930aef4434897f23611cfc4ec2dd1b7c9d7e3d0 -lib/codeql/rust/elements/AsmExpr.qll 0a477c401583a778ea6736070eaf8959f9312135e863e45fafb6c160da2e8f1b 0447b2438c694f9e9bd2629abb66281724d27b17e534fa8e9a19b2ea30af18d2 +lib/codeql/rust/elements/AsmExpr.qll 0b41bce54caf83a09d2144108bb953bd3fa4b7e59efa2803ef982de4a7556e66 bbaff708b20863e340799d89f11fa14b027a91730c497db4119dcd836f38b88d lib/codeql/rust/elements/AsmLabel.qll 5fa3401c49329ddc845bd95d5f498a455202f685e962dfec9bc91550577da800 f54fe1dcd3c76f36e6abc7b56dc5d6f5b1c30d0fb434db21dd8a1ce731fc6abf lib/codeql/rust/elements/AsmOperand.qll 3987a289233fe09f41f20b27939655cc72fa46847969a55cca6d6393f906969a 8810ff2a64f29d1441a449f5fd74bdc1107782172c7a21baaeb48a40930b7d5a lib/codeql/rust/elements/AsmOperandExpr.qll 72d4455cf742dc977b0a33ea21539422aaf2263f36c6f4420ddcb360ac606a0a 03bd01e81b291c915deb20ce33d5bdf73a709fbc007ab7570490e9a8e7c8604c -lib/codeql/rust/elements/AsmOperandNamed.qll c65bcf6f4ad5ebb447873ac170bd5d29dc5fe557f7aaccbdb46a09b2583df673 d7e277e43414ca2c529c5a4e967f4c6cca34ee7239ab1a993558b0731ce9722b +lib/codeql/rust/elements/AsmOperandNamed.qll c3718ee466de4dd011d82468d9479c09a0dc0ed8bb5c57e06a55809d5e2e407e c238074990f5c1b714f2f43fd1f5f6108139acff17e6366981500b3a640be801 lib/codeql/rust/elements/AsmOption.qll 7ad333a4bb152dbf7c1df0d90424ff20031841822e49b26cc615230b1c186581 9c2a087ea7f7c386eff170337f0c29568dea3d49a570b35207652b08e24a9355 -lib/codeql/rust/elements/AsmOptionsList.qll 3dd55a8b15ada811c9225b0fe9b733eabf22313e7bd1ae6a99fdcb9a6facea07 32d996dde8802e4a2afd8c3624f055cb4e4c18591dc236f3b5bf0c0d4e57f822 +lib/codeql/rust/elements/AsmOptionsList.qll b37e9a2ae6f55a04dcdda14c60d92e8967271b5403c50078ce9a0cb09ecf1a4b c845470813cdace38378e190b6359a94cdc0d2933f97a1d4121b9eb542ce5ffa lib/codeql/rust/elements/AsmPiece.qll 8650bf07246fac95533876db66178e4b30ed3210de9487b25acd2da2d145416a 42155a47d5d5e6ea2833127e78059fa81126a602e178084957c7d9ff88c1a9a3 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 7a65365df8ae0603f892b6d9a27372ad81d06945abd408a2f25a6595a6ea3b6e 24bc6dd8485bcd7d236067cb37bda1300a891009d0a739681aee218449304ed2 -lib/codeql/rust/elements/AssocItemList.qll 5d2660e199e59647e3a8b6234531428f6e0a236ed2ced3c9fede13e7f83a5ba5 a2a8e87ab8978f77a70e4c0a8cc7322c522fc4a7a05116646a2b97a2f47428a4 +lib/codeql/rust/elements/AssocItemList.qll 72c3a9914e2f5370e14e1b66a53ec255e51d6c9b980050db3a1f266644dbb1dd 95eb70e4847ca0601df6de49d820b19a8316427f9ce1fe149c4e2fdf5b0d9776 lib/codeql/rust/elements/AssocTypeArg.qll 6ceeec7a0ec78a6f8b2e74c0798d4727ad350cebde954b4ffe442b06e08eb4aa d615f5cd696892518387d20f04dae240fb10ee7c9577028fb6f2a51cd9f5b9e4 lib/codeql/rust/elements/AstNode.qll 5ee6355afb1cafd6dfe408b8c21836a1ba2aeb709fb618802aa09f9342646084 dee708f19c1b333cbd9609819db3dfdb48a0c90d26266c380f31357b1e2d6141 -lib/codeql/rust/elements/Attr.qll 2cb6a6adf1ff9ee40bc37434320d77d74ae41ff10bbd4956414c429039eede36 e85784299917ad8a58f13824b20508f217b379507f9249e6801643cf9628db1e -lib/codeql/rust/elements/AwaitExpr.qll d8b37c01f7d27f0ec40d92a533a8f09a06af7ece1ae832b4ea8f2450c1762511 92cdb7ff0efddf26bed2b7b2729fddd197e26c1a11c8fec0c747aab642710c21 -lib/codeql/rust/elements/BecomeExpr.qll 7a3cfc4894feb6be1cde664f675b18936434e68ccea52e55314c33d01491e34f 49666eca509b30d44bb02702bda67239c76bf8d9f231022c9cf6ecca123f8616 -lib/codeql/rust/elements/BinaryExpr.qll 394522da3bc3a716fc7bc40c3560143ca840f5d210cfcba2a752c3026dd0f725 fbbd6fb79bf16a7d9820613654c584cd7ff3e7a29988f3920b6cfbe746acfd8d -lib/codeql/rust/elements/BlockExpr.qll 1dbf64445aebfa87c5ee5f295b6f47a959d952f86a108d8cca381d787d5cbf3e ac6c46175a10807a886263143095a9454041e54a08e3644e06b5dbc4d394a397 +lib/codeql/rust/elements/Attr.qll 3ed0d532e86a75fced330d56b79a8253b34a422c7d69dbd3a005e8e90edc2d71 63c705f18058a8fad318431d9bd6cf96052a9450c0555399587b269793793740 +lib/codeql/rust/elements/AwaitExpr.qll 45d8a1fb7e5909fb226de10637e12243da8ce6e7eee47fd15fc2d96bb3409597 653da09e4d366eeb3f63bb9e5cc495981760fc682adab63e9b01715203709c6e +lib/codeql/rust/elements/BecomeExpr.qll ec2153c3c30091246d4ef0807f36946c99efd04b622e9ffad124e6320b24f13f b490e35ae7f28481243b7661e2f3625f43f21fd194847b555701bd3ad9c8ec6c +lib/codeql/rust/elements/BinaryExpr.qll c85021c10b83533eaeb42249b36049a86c6d77ea409279d954c1b84a97f41507 8269f3347219994bd248b73492c46ff46f54974c16d1c67e19b8bc6f33a24dc5 +lib/codeql/rust/elements/BlockExpr.qll 4227c6c8e695d6735b00e17e3270f43e1ef1e75a42f5eec98afd5cd942528b5a 353a0abd4f8ff17b82d91e20f9d874f2eda2ac43f80f713ef5ee475a9de66c72 lib/codeql/rust/elements/BoxPat.qll 1b2c3fff171aa6aa238c9460b122f26c79e04577cea67fa856de99842ba873d4 0caf8d23ed6e0997a6b8751def27641582151fba6e24fccf798712a4690b42f1 -lib/codeql/rust/elements/BreakExpr.qll 7ca3807a20e9a9a988d1fd7abebf240325ed422fcb45c719ba46272f031f94db dffb7379d3f3ba220acfbd05eb7bb6cfd9cfda211e9c8b1f5240ca5fa61be3fc -lib/codeql/rust/elements/CallExpr.qll ee3997f265dc1b6b2fc7134548dd88d509b6bcbc26cf65061a31980f9900ae26 7e86e0ab24ce78c3f592a5614eac083d00f331664f021a438f74e2e0785f4609 -lib/codeql/rust/elements/Callable.qll 08a46e987b8fde29069795a536fcd1ad1a96f60341f72293e4d07e20334d554f cfc2be9287000718e5ff3c2a35bb45ffc93fd36d97f2e034888e9aa2ae9af555 -lib/codeql/rust/elements/CastExpr.qll 2fe1f36ba31fa29de309baf0a665cfcae67b61c73345e8f9bbd41e8c235fec45 c5b4c1e9dc24eb2357799defcb2df25989075e3a80e8663b74204a1c1b70e29a +lib/codeql/rust/elements/BreakExpr.qll a65dceb7f7ae95c62e09d0a2fef65d42742e8da4522da17be3041ddf4d1a7e43 e29f58494f6d9ead7a8feaaa2c92c14ce26374363bec4187cc7e0b8b96f31764 +lib/codeql/rust/elements/CallExpr.qll 73224f72b5d17eb898f80a554240d6e49d2db116de8ea9a21654a2d8118ba508 091b061717e89f940a3275d15bc3e2691da3e6bdd79ac7ff21183f1343fdb818 +lib/codeql/rust/elements/Callable.qll e18ba43e85cb659cc4c88195681129488444c0f8943e0b23473b5baa29175159 1dbd41a5089e1d8dc1d9a046ebed338f835471a59d27595e497960af543084e0 +lib/codeql/rust/elements/CastExpr.qll dc78fffc320cd5564a7003dd512b77a96f7935fad4c9ef4681acf60d860b5a21 044c60a7be44620b066bec2105e13e940149d56decd41a292957e079d717daab lib/codeql/rust/elements/CfgAtom.qll 0567c41550cbcf88f334f0285bac32f87726099f2444108b7842e1ecf8a3a36b 6a3858268921c4a9bb8db9239867b5e46b54d1f5d133a6f19cfd648de4d15b65 lib/codeql/rust/elements/CfgAttrMeta.qll 85f6503abce5c1c3de06df0c0d2ae8fda4206b94bc8103d54550ad2d84a93fb4 af1e7967d7c9c80f1a4725d8a045d645b247f5aa1a3a462a08eea39c4ab4491f lib/codeql/rust/elements/CfgComposite.qll 50f624532b6f6086ac507c294da7dc3a96d4154d70541449c89b4395cbe366a7 6aa0c7a1484b02833b7cc7692018f96dd6724b8f76a1e171171b7f5aac69e3a6 lib/codeql/rust/elements/CfgMeta.qll 583c4561968f787ea1fb7fe8af165273e0f35c2e1efd26364a004edeebee5786 86eca520313dc40b0e523d8941858909c2632eb32c01d74ddb1c524527fbd8eb +lib/codeql/rust/elements/CfgPredExpr.qll b0eccc0093bb78f2bcce86a0e81a9e78e32d403582a723dbbd6f9302e93ee4da 8e75a1b24512955dc23707a8f1766edb04dab444db7dcda6bc7b9f88fc08e5d5 +lib/codeql/rust/elements/CfgPredPat.qll b0f72411ff7a8565154d12a04610358be901cc649ed0f3caaf8ebbceaa13a50d 51c19f38a0d3a7d5dd044a621091293595c32b50d57dd496f61170be94c7f1ff lib/codeql/rust/elements/CfgPredicate.qll e86f55f98b8f09fb5da9af550cb6c43089d8deb2e3b83d7e195e9bddc8cf201b ba30cf064ba1236139c8c55bfab204b9256e407db983b42b23319690c7ff5562 lib/codeql/rust/elements/ClosureExpr.qll 69e0b7a7c7a4c348fcada5ad4da22dd2f51747109f856be239cede315a56d695 93400650282e2d4e682b826e9f5f844aa893dda126548e41ea1c703d2bf209ca -lib/codeql/rust/elements/Comment.qll fedad50575125e9a64a8a8776a8c1dbf1e76df990f01849d9f0955f9d74cb2a6 8eb1afad1e1007a4f0090fdac65d81726b23eda6517d067fd0185f70f17635ab -lib/codeql/rust/elements/Const.qll 5f4d11e01162a06127ba56519efd66d1ecfb5de7c1792fc1c283a56cf2127373 8c618ac774267d25db70cc05a080f8a408dc23ab7e88c0fc543eda8b4d4cb995 +lib/codeql/rust/elements/Comment.qll e3613664af81b7a6d77466b4c37d723c74cc220121473dd8a0e552db7d9a0b71 108c4ab7455ea70dd0ccdaacb4baae31ba68b81c9f516b4c903aa9aa7db4fbc1 +lib/codeql/rust/elements/Const.qll a415c85d44b10b62f220bb81f7e130626ae9b3527293f3100ee8c137ae90e868 fbe5a124307e195f422220df436919b1dca21315ca3573cb8ce9f1712c6c9b67 lib/codeql/rust/elements/ConstArg.qll 01865b3be4790c627a062c59ea608462931abcb2f94a132cf265318664fd1251 a2c6bbf63dbfa999e511b6941143a51c9392477d8ccd25e081f85475936ff558 lib/codeql/rust/elements/ConstBlockPat.qll a25f42b84dbeb33e10955735ef53b8bb7e3258522d6d1a9068f19adaf1af89d9 eeb816d2b54db77a1e7bb70e90b68d040a0cd44e9d44455a223311c3615c5e6e -lib/codeql/rust/elements/ConstParam.qll 87776586f7ff562ff3c71373f45cf70486f9a832613a0aaac943311c451cc057 67a31616688106d5130951f2162e5229bff0fde08ff647943663cac427d7048b -lib/codeql/rust/elements/ContinueExpr.qll 9f27c5d5c819ad0ebc5bd10967ba8d33a9dc95b9aae278fcfb1fcf9216bda79c 0dc061445a6b89854fdce92aaf022fdc76b724511a50bb777496ce75c9ecb262 +lib/codeql/rust/elements/ConstParam.qll 176d1bdff98ff6b12a5d0a5f893cea5303b4d764762ceb7bd282a1d3476b202e f41cc576e6ef10e131ad2bea0a852c718324ca31830422001fa80e15e2b0132b +lib/codeql/rust/elements/ContinueExpr.qll 5ace5d28439708480b1ade7bac00840ae7035e254fbc1b2b0fd348a220f0ba0e ebd8069b0a336f036643e40db5885c248dce90c3a1b3211576569fae7a53cc35 lib/codeql/rust/elements/Crate.qll 1426960e6f36195e42ea5ea321405c1a72fccd40cd6c0a33673c321c20302d8d 1571a89f89dab43c5291b71386de7aadf52730755ba10f9d696db9ad2f760aff +lib/codeql/rust/elements/DerefPat.qll 0ec42df5cf3b08931a0fab900e9a2196fa3a1a742c15b9af743fd952cdca2fe9 3022254ed99abde37ecf0a1678b12534740b58f1bb1b68c6e823fcaa57fde579 +lib/codeql/rust/elements/DocComment.qll 4eaff6b4c17afe55573d55471a3f2025351da6bbea20eefcaccebb64cd5b0e96 438be47ea65656953b6ee95ad42f0dfb5f2e77507c59d55b74645375fa457d7d lib/codeql/rust/elements/DynTraitTypeRepr.qll e4d27112d27ae93c621defd2c976fd4e90663ab7f6115e83ae4fe8106cb5e015 eb9fde89698588f3b7116f62388c54e937f99559b22c93d11a5596e754560072 lib/codeql/rust/elements/Element.qll 0b62d139fef54ed2cf2e2334806aa9bfbc036c9c2085d558f15a42cc3fa84c48 24b999b93df79383ef27ede46e38da752868c88a07fe35fcff5d526684ba7294 lib/codeql/rust/elements/Enum.qll 13c1a3bddfff6c9cc644902652883aefc7721bc94bd8084a1a49acc156996d12 17a898434329437479de4fef27ce11f5996b1953168066bd6d51f93594cc79d1 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/ExternBlock.qll 86dabe90752e12b8bce9046439c9a26cc970d8708aa7ba2550d8309c8bbb9d98 a6cad4f93219b8b99515bb685f8cef8d5f54db2cc260ad3cdd4b296537d6be19 +lib/codeql/rust/elements/ExternCrate.qll ac3ec31ff23e2cc821021c0d9df7f29c292f925337010a1c9d1990a4fd35933b 1ede8d480ee3f4c057b7cb2ff4c47ea0fbea9d053d744b7d97917db947ffb6b9 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/ExternItemList.qll 9a8f4ec829ee78e839889fc174bce8460fa08c544a50c622ef72758ce961f5dc c0028e8c7ee62b799e2a2ca8ae11ca5020ae5908836b07bb8291a4f96aba992e +lib/codeql/rust/elements/FieldExpr.qll c31af00d6227e5ebcfe1b5c33e7dc6c9307025432a77444cabf32ebee1b3c913 f657dfe295a099596f420ecbefb42e9e76b093b6b751e75a301da16228c0dc30 lib/codeql/rust/elements/FieldList.qll 72f3eace2f0c0600b1ad059819ae756f1feccd15562e0449a3f039a680365462 50e4c01df7b801613688b06bb47ccc36e6c8c7fa2e50cc62cb4705c9abf5ee31 lib/codeql/rust/elements/FnPtrTypeRepr.qll d4586ac5ee2382b5ef9daafa77c7b3c1b7564647aa20d1efb1626299cde87ba9 48d9b63725c9cd89d79f9806fa5d5f22d7815e70bbd78d8da40a2359ac53fef5 lib/codeql/rust/elements/ForBinder.qll ee29b55cb4c1fa5180cc4ee1236ac089fe9f67ffa9e5a1474003b717f1ac6e0f 5b811c8cf9550cb675034315e03c5cbbfa7544ad3a696988e04d780037d434bf -lib/codeql/rust/elements/ForExpr.qll a050f60cf6fcc3ce66f5042be1b8096e5207fe2674d7477f9e299091ca99a4bd d7198495139649778894e930163add2d16b5588dd12bd6e094a9aec6863cb16f +lib/codeql/rust/elements/ForExpr.qll a55765a80f017385828a2de41a1c3ad66d98169742b5726b49158dba0c29c0a4 78d6b2a3b560faa1c759fb94ad1fbbc9da76fab20bb10d5be42e3416735b1d2c lib/codeql/rust/elements/ForTypeRepr.qll c85c5e368b9db4a308b55259b3e6b1f4d37050984de43b24971243d6ca6dcec5 51b1c3ddac2fb9616ec44816bcbb549df2c15bbbe674d045a7b1c352c1e335e3 lib/codeql/rust/elements/Format.qll 1b186730710e7e29ea47594998f0b359ad308927f84841adae0c0cb35fc8aeda d6f7bfdda60a529fb9e9a1975628d5bd11aa28a45e295c7526692ac662fd19f8 -lib/codeql/rust/elements/FormatArgsArg.qll 822287617367bca322a0157a1671a884b8035821c565c9ec8a29d1d4d154deaf 7a8dc3b18c12f0560574500523001e9babeee28a4b3fe3968ac3f30d89f44b3b -lib/codeql/rust/elements/FormatArgsArgName.qll 1e50d3007b517179bffb257b9a0b65b2651a07d1d3380b165995b8eb3eaff63d 6a1932ea108adaf951013f35ac5fe9cdcc409055c2249240a2eb47c73c503750 -lib/codeql/rust/elements/FormatArgsExpr.qll 8127cbe4082f7acc3d8a05298c2c9bea302519b8a6cd2d158a83c516d18fc487 88cf9b3bedd69a1150968f9a465c904bbb6805da0e0b90cfd1fc0dab1f6d9319 +lib/codeql/rust/elements/FormatArgsArg.qll a2c23cd512d44dd60b7d65eba52cc3adf6e2fbbcd0588be375daa16002cd7741 d9c5fe183fb228375223d83f857b7a9ee686f1d3e341bcf323d7c6f39652f88b +lib/codeql/rust/elements/FormatArgsExpr.qll 6bbecaca2ddcd498b47d608638f4664bceab935a9cf221f8e369556b0ab09686 d4074f1146c2cfcc9266e3794250a70398f1ba3906949a44460db3d52ebb840a lib/codeql/rust/elements/FormatArgument.qll f6fe17ee1481c353dd42edae8b5fa79aeb99dff25b4842ec9a6f267b1837d1e3 5aed19c2daf2383b89ad7fd527375641cff26ddee7afddb89bc0d18d520f4034 lib/codeql/rust/elements/FormatTemplateVariableAccess.qll ff3218a1dda30c232d0ecd9d1c60bbb9f3973456ef0bee1d1a12ad14b1e082b5 e4316291c939800d8b34d477d92be9404a30d52b7eee37302aef3d3205cf4ae0 lib/codeql/rust/elements/Function.qll a5d1654003137bcfd5b0bdfaf73778f6316521dd896aaa58b95422f795e2d674 e13ad1cc560525d94917fb5a0c9605e022d3f2e33042933a1c7141556ca75ce8 @@ -73,135 +77,142 @@ lib/codeql/rust/elements/GenericArg.qll 5f8666af395208f8ad2044063788fa2c0c317cc0 lib/codeql/rust/elements/GenericArgList.qll dcf274db517b0e8f19e4545d77f86cdd4066ff2805e68c808d0bb5750b49f569 1055a82929e850264e501b367ef4d314a3e6bb8943ec95f4284d157fb4d0092f lib/codeql/rust/elements/GenericParam.qll 87adf96aac385f2a182008a7b90aad46cf46d70134364123871afb43e5ea2590 be82f1986b263053d7b894a8998ddb59543200a2aa8df5a44c217b8773f60307 lib/codeql/rust/elements/GenericParamList.qll 25fcaa68bc7798d75974d12607fae0afc7f84d43091b2d0c66a504095ef05667 3b71115c6af0b8e7f84d8c2d5ac9f23595ad2b22dbd19a9ea71906ca99340878 -lib/codeql/rust/elements/IdentPat.qll ad5f202316d4eeee3ca81ea445728f4ad7eb6bb7d81232bc958c22a93d064bf2 7ce2772e391e593d8fd23b2b44e26d0d7e780327ec973fcc9dce52a75fda0e36 -lib/codeql/rust/elements/IfExpr.qll f62153e8098b3eb08b569d4e25c750bc686665651579db4bc9e11dcef8e75d63 55006a55d612f189e73caa02f7b4deda388c692f0a801cdda9f833f2afdca778 -lib/codeql/rust/elements/Impl.qll 0d69c9ace5dac87ed095cfd5d4a8baf7e17ebce1132f3a7d6fa2bf4325deff8d d908fc5da7d3a59fb0a286a6ce581bdabdb48c4ac6ecd070455c271c2352208c +lib/codeql/rust/elements/IdentPat.qll d1bae7ccb33fc37116f52bf47ad61fa8f16236581f02cb79707ed3b107635ab1 74be8545bedf1901d360c707758653a6d6b98a0018133b9ed68d182cfcebdc11 +lib/codeql/rust/elements/IfExpr.qll 54cfc62c9010177035e264f517f88adab7e32b96188820520402a6f1d81dae23 93cc4da58b72ddd14231dd4d05e185e471862e6674becdabcb7aac00389a2dfc +lib/codeql/rust/elements/Impl.qll 1970ee6261e312e7ce79529f0542985704295d7ace6b2cf6b172ccb2d128ff1e 469c174d59233eed8cceca86dbed4471fc836fdd8d6ccaa5d96196d28cb65f30 +lib/codeql/rust/elements/ImplRestriction.qll 2282977f216bf14779fc160c3faa6d261aa2892450701c7b4312e5085240eaeb f242f91243475380de834d8780355ab0bf582a9aa1e9f882ddbedb87559345cf lib/codeql/rust/elements/ImplTraitTypeRepr.qll 1d559b16c659f447a1bde94cc656718f20f133f767060437b755ac81eea9f852 de69c596701f0af4db28c5802d092a39c88a90bf42ea85aea25eecb79417e454 -lib/codeql/rust/elements/IndexExpr.qll 0e2e9f018d06ae72be0fc4ddbc019a9aacd8a06f42b4c4431760bd149e7f2290 2bcfd557abd53a48e48de7915c4f2089107c62dfb3e732a904848248dfd3727b +lib/codeql/rust/elements/IncludeBytesExpr.qll c2bf15235d5a380a0e5dce98cc81b3189f093a5a8f9a218751a475e8275ad4cb acc4ccfb8afc033f0bf48914f5f9066f74400d6b3545575f6a7c73d7f74feeaf +lib/codeql/rust/elements/IndexExpr.qll 16b5ba3786a1ca401bd5e2bf6e6e54ca77a147b7c7a40b514424b4189aa8b049 8a9dc17e11a37de93dc79b0265da20ebe2313d88311abff1bb7d1250373629f4 lib/codeql/rust/elements/InferTypeRepr.qll 1b8bdcb574a7b6e7dd49f4cfb96655a6ccc355744b424b8c2593fe8218090d53 c20a2a5b0346dc277721deb450e732a47812c8e872ffb60aaba351b1708e9477 lib/codeql/rust/elements/Item.qll 59d2ac7b5b111579951bf42f68834ecf6dab47a5fb342ed0841c905b977923ab 0d220ec12a373098b26e6cb3a7b327b2d0c1882c3d9b6de00f4df1e8d00bae68 -lib/codeql/rust/elements/ItemList.qll b302d25a7570504e88bfcedf7afc99d25740f320ab27a4a9def1ae66569a4c15 4012a5e43639fa39d5313356ff3ab56c4bb567add1ce012bfede4835406a9571 +lib/codeql/rust/elements/ItemList.qll 938d86bd2169fee81bae9972b8c55a52fac4240fcab28c15f88ec69312d40327 128f86abe89aadac114d1cca82d7b70065102d17a1cf0b8ff3452963f1ced557 lib/codeql/rust/elements/KeyValueMeta.qll b66aeedd5a548ae94ed680c399a32176cb5999f972cc3a434a05b802e5a25264 02944562b4f66e99b8503e1d87a9f1cc4ba80bae49a4108c6f884cc54398a379 lib/codeql/rust/elements/Label.qll a31d41db351af7f99a55b26cdbbc7f13b4e96b660a74e2f1cc90c17ee8df8d73 689f87cb056c8a2aefe1a0bfc2486a32feb44eb3175803c61961a6aeee53d66e lib/codeql/rust/elements/LabelableExpr.qll 598be487cd051b004ab95cbbc3029100069dc9955851c492029d80f230e56f0d 92c49b3cfdaba07982f950e18a8d62dae4e96f5d9ae0d7d2f4292628361f0ddc lib/codeql/rust/elements/LetElse.qll abb12749e1e05047e62f04fcaaf0947acc4dc431be80cb5939308f3531f29700 2799133c6bc84d5bb242a6bce7d26be885b31a3e2d2a7757c46c300b9ef07a20 -lib/codeql/rust/elements/LetExpr.qll 435f233890799a9f52972a023e381bc6fe2e0b3df1e696dc98b21682a3c1d88e b34da72dd222a381e098f160551ec614ebb98eb46af35c6e1d337e173d8ec4b9 -lib/codeql/rust/elements/LetStmt.qll b89881b3e57317941f74adb39f16eb665380128a6bdfaacf4dce2499cdaea2e2 2890d12a475f045a8a1213e5c7751a05e63a72978a20fd3f4862e281048b2f0e +lib/codeql/rust/elements/LetExpr.qll 4a060be3f0aef2d4dc5da1cb9a20217cef8ed6860c86ffff71d961b3b4a6439d ad83c10ae61d70edf0d86f9a8c41ab44289e138dbc8deb4ac5d5f2fc171c8d8c +lib/codeql/rust/elements/LetStmt.qll aeb9ca626257543925abc5592817eac94d8db3bc4e700eb1ef455e1b27ad9168 d01497e8b99c45c5f25b02818afae8902edb6c402a57f01430d5794d074e6838 lib/codeql/rust/elements/Lifetime.qll ae154c4c604a084faab000fe48a75a3da597278da85eb414e54dd00c9135b0a5 199fe5d858597ea7ae09275611b510002796d7c4a3b75e62807f11beaecae4cf lib/codeql/rust/elements/LifetimeArg.qll 400f53abc28b351b7889909ee501a7bb52881cf71e974e17f56b7748c1460dc9 17a352bb72af2b6119735d24d6a8650ad60de71d19a53acfea0e58d9e5d927aa -lib/codeql/rust/elements/LifetimeParam.qll d1c2986b9011a39aa995eb24f3404c0ca95f4bdf9d77572ddf3feeb47f212070 d8709455db51ff5831edc52e7465477660b859312d228d2f1d3e99d427526540 -lib/codeql/rust/elements/LiteralExpr.qll 40b67404b7c2b81e5afabc53a2a93e0a503f687bb31a2b4bfa4e07b2d764eb8d 67ab1be2286e769fba7a50ca16748e3c141760ccaefaebae99faa71f523a43d5 +lib/codeql/rust/elements/LifetimeParam.qll 6dea0f704d9f80eed52cc1e65ca322b80479a558480f56d4d76c677984be4dd0 c8edd4add8dd45fa6dc128d9ab36f1776e82163b9d2929ce1150cc753f3b2d41 +lib/codeql/rust/elements/LiteralExpr.qll 1469d89005bd868474679cdd9ace2d252eb80fc3c936bd7ec3e5bba73aeb98ca 82215354397ea15f35ec60d8b8f0e5cf8d76826c026a4d56518b0bb27d320154 lib/codeql/rust/elements/LiteralPat.qll daffb5f380a47543669c8cc92628b0e0de478c3ac82685802c63e8d75a206bed adfe9796598cf6ca4a9170c89ffd871e117f1cea6dd7dd80ecbbb947327a1a5d lib/codeql/rust/elements/Locatable.qll 2855efa4a469b54e0ca85daa89309a8b991cded6f3f10db361010831ba1e11d3 00c3406d14603f90abea11bf074eaf2c0b623a30e29cf6afc3a247cb58b92f0f -lib/codeql/rust/elements/LoopExpr.qll ee171177650fa23eef102a9580765f4b6073a1cc41bab1ec31ad4f84ffe6c2c9 bfcf0cca4dc944270d9748a202829a38c64dfae167c0d3a4202788ceb9daf5f6 +lib/codeql/rust/elements/LoopExpr.qll c646d912c459cc3e80e3836b2282ffa0371a374dca0929cdd591c230ac27a778 55418a36f6e01a59d47c1a740a662b8ded950288eb4026bb926c3b3da68c6b21 lib/codeql/rust/elements/LoopingExpr.qll 7ad7d4bbfd05adc0bb9b4ca90ff3377b8298121ca5360ffb45d5a7a1e20fe37a 964168b2045ee9bad827bba53f10a64d649b3513f2d1e3c17a1b1f11d0fc7f3a -lib/codeql/rust/elements/MacroCall.qll 452aee152b655cdd5a69bf973977072f000a6451f626469a3f7313f0468ffc18 a8652d0de1c6c2118d683d5465ba4115dd4c65031896440269a2a0522d90fceb -lib/codeql/rust/elements/MacroDef.qll 5bcf2bba7ba40879fe47370bfeb65b23c67c463be20535327467338a1e2e04bb c3d28416fc08e5d79149fccd388fea2bc3097bce074468a323383056404926db +lib/codeql/rust/elements/MacroCall.qll ce9b38c0a2c693febe769ecfcfea1b89efef044e4d37f3e9878cc8ed105538da 4ebd0e15a79a4917bf7b5b9551dd0c7a026e0a84a4873d33895869d3b4fd1317 +lib/codeql/rust/elements/MacroDef.qll f8628d41adac93bfee660905101a9382f16537a16891f7c1e0e8c553ae4f51c6 0ee343f5cdaf94b355b4061c6e56ede21e131aa6c647338c1102fe4e6e70d63c lib/codeql/rust/elements/MacroExpr.qll 640554f4964def19936a16ce88a03fb12f74ec2bcfe38b88d32742b79f85d909 a284fb66e012664a33a4e9c8fd3e38d3ffd588fccd6b16b02270da55fc025f7a lib/codeql/rust/elements/MacroItems.qll f2d80ff23634ac6bc3e96e8d73154587f9d24edb56654b5c0ae426124d2709ea f794f751b77fc50d7cc3069c93c22dd3a479182edce15c1b22c8da31d2e30a12 lib/codeql/rust/elements/MacroPat.qll 8d9384d7e000add77ad9955c142800f71a993262b7923b3a4466eaf3a17ebed7 1561e5597c8dd6b6359dc7f0a01e3afe6568bf0aa4e9cc865469d5308c270b0e -lib/codeql/rust/elements/MacroRules.qll 0fdf609ff28bacf8780fa75a4cee5f0b7864b8bd3b4abcf91303baabc83c0a83 2a4cef936232406b36ab897e40ea25352b07016001f6750380e007f91ce6a799 +lib/codeql/rust/elements/MacroRules.qll 6886c8cbc08960c93321bc99f9481a5f5a9748ed4d8a285b67cc59b0b06313ec 800e3a899897d60131b17b98c51553d667983ed8ec6629ba2c8110f9838975af lib/codeql/rust/elements/MacroTypeRepr.qll 664934eb58bf32ddc843f5133056e3605c7ca9d401729d5358e288ccde4dcdad 7601309ad9cf7159955af8f6eec7968bbecf5bfcc05201bc8573cf1e7ea14b08 -lib/codeql/rust/elements/MatchArm.qll c39fd6cc0da24b1ff8d1e42835bcfee7695ad13580e3c7c50acd7c881b1cd894 62a31d2bd125e6aaebefc406e541a641271d3c497a377959f94dd4735b2bfbf8 -lib/codeql/rust/elements/MatchArmList.qll f221c5e344814fa44db06ab897afdc249e8e88118953116c9c9b745aa2189614 8ff30685e631c5daa6c42390dfb11fd76a4ff2e374013e3dabc67b4c135c0bc4 -lib/codeql/rust/elements/MatchExpr.qll e9ef1664f020823b6f4bb72d906a9dc0c1ee6432d4a9a13f7dbdbab2b2b1ee4d 38d71e5c487abcb5682293c573343be66e499a6e131bb630604c120d34b7777b +lib/codeql/rust/elements/MatchArm.qll be04e85dffea501f32561ed20b0343c91a849c7bcbe40a1b83e0198c289dc517 e59cc08d9fdf3c600a76b42f3eb18cc61b0b908f8bb0f8db28d784128fc47c23 +lib/codeql/rust/elements/MatchArmList.qll 6107bc87703bee8812be1f988f480719f46ee3a2a0d72682d59f359de08fb4a2 b9d81da9b87a453abd71bd4401d09b10c5aa97cd03b251c40210b5b6702a9953 +lib/codeql/rust/elements/MatchExpr.qll 58e5182b374ec2f174b1b221bf451dffe815a1155b9fc6b6a50f311b21a660d6 5d2a90170f8ff1f22129293724a0a206bb53e11bc367c9152e904f0caace0913 lib/codeql/rust/elements/MatchGuard.qll 58256689a90f24b16401543452c2a32f00d619ddac6c0fe8b65a8cd3e46401bb 8efb2ac03c69a9db687e382331085d7a6cfbf8eca559174ba2727a9549ec7ddd lib/codeql/rust/elements/Meta.qll e54802dadd2f1b914a821f9e9335f6088d4782751e36c014e1fcf18eb4134b14 552a5ebbd998cba27fa7ea9b91b387c36ab10964deab546afdba52463ed8661a -lib/codeql/rust/elements/MethodCallExpr.qll 914633f304c587addced988a7f161a1a4b3297ce370f6a959b7a042b1c04dace 289a0854d6323df915ee5f268523ee597ba20a37c646bbb2a79c9ed1f7aa2260 +lib/codeql/rust/elements/MethodCallExpr.qll 396bdac0486a3868f77f268e0dbf64b0d0e1a919a613b84c3faa8047727b2377 edbff51f3faa232ee31b94b8c899ad748cb41d9b97d26e58d0d4345cf4839c9f lib/codeql/rust/elements/Missing.qll 70e6ac9790314752849c9888443c98223ccfc93a193998b7ce350b2c6ebe8ea4 e2f0623511acaa76b091f748d417714137a8b94f1f2bdbbd177f1c682c786dad -lib/codeql/rust/elements/Module.qll 0bc85019177709256f8078d9de2a36f62f848d476225bff7bba1e35f249875c7 3fbb70e0c417a644dd0cada2c364c6e6876cfa16f37960e219c87e49c966c94e +lib/codeql/rust/elements/Module.qll 232aaed52c31fd36980aeefa112f74caf01ec90b17e0374cca036f3dbb1adb57 99a90d97abac18e4e1975f20151865508f163a1e86a985ec1133cec917259296 +lib/codeql/rust/elements/MutRestriction.qll b018f04a3960b91bbc8fcc2fbb7a25c359eba05504175ca0c61775f23d001751 85c9d2f6d4fd205861aea9de3fcd6c7e710b514d57873156cde347e41fdb6afb lib/codeql/rust/elements/Name.qll af41479d4260fe931d46154dda15484e4733c952b98f0e370106e6e9e8ce398b e188a0d0309dd1b684c0cb88df435b38e306eb94d6b66a2b748e75252f15e095 lib/codeql/rust/elements/NameRef.qll 587308f2276853303fd5e8804fad255e200fdbb115c4abf7635435856884e254 6cb64e921d2dde8fc87cb26b6539254b883a7313689798180791a2905eb3f418 lib/codeql/rust/elements/NeverTypeRepr.qll e523e284b9becb3d55e2f322f4497428bfa307c904745878545695a73d7e3a52 4af09ebae3348ba581b59f1b5fa4c45defc8fa785622719fa98ebefee2396367 -lib/codeql/rust/elements/OffsetOfExpr.qll 370734a01c72364c9d6a904597190dac99dc1262631229732c8687fd1b3e2aa0 e222d2688aa18ed6eec04f2f6ac1537f5c7467d2cef878122e8fc158d4f6f99e +lib/codeql/rust/elements/NotNull.qll f1aaa23ac86ff3418b61ebf2c69ee30c0351c725be241f38de8b9e0a42b2c1dc 40f29691234c3722183744c5336e0645b9005388284a605458e19aeeed99877b +lib/codeql/rust/elements/OffsetOfExpr.qll 93ef5857aecf19e554cef625a17e3010fa52442236731f7372a47801c93b82c0 ea6d2fbfdf9cbe9f6c55df8a5431efb996c4ba4dc5b4a218d80b85a914e239ef lib/codeql/rust/elements/OrPat.qll 408b71f51edbfc79bf93b86fb058d01fa79caf2ebfeef37b50ae1da886c71b68 4a3f2b00db33fe26ee0859e35261016312cb491e23c46746cdd6d8bb1f6c88ef lib/codeql/rust/elements/Param.qll d0c0a427c003bbbacaeb0c2f4566f35b997ad0bca4d49f97b50c3a4bd1ddbd71 e654a17dfcb7aaeb589e7944c38f591c4cf922ebceb834071bcb9f9165ee48be -lib/codeql/rust/elements/ParamBase.qll 6fe595b1bebd4a760e17fb364e5aa77505cc57b9bda89c21abdad1ce9e496419 f03316c25d38ecc56c16d7d36358144072159f6ab176315293c7bf3b45b35fff +lib/codeql/rust/elements/ParamBase.qll 7a728bda96be0b146e91e2abd54f9b4d4d48633c3406579ee6f74db64c77c6c5 ce7a62bf9ffcc0c887b9cbdb5eb991aaa2da22bf908729c795c684852dbb0a64 lib/codeql/rust/elements/ParamList.qll 08cba1bf455e333e5a96a321cd48e7e7276406912ec0589bf20d09cf54ede390 fb3777b5a19e18ef0f5c90b246b61ac94568db2dd8e3c44fbe6b4b8cc15cc0cf -lib/codeql/rust/elements/ParenExpr.qll 3cd9ecbb466188a2644411582686ec67f4aab42472adfdb155918a9c7ea5aca9 8a9264065e0b52afab1121f212a8c75458635f07b2a7eb28202d5668b67cd865 +lib/codeql/rust/elements/ParenExpr.qll 39623f3b0ace310cba5f7a018d3e54d86d2bf391ff8b2bb0c49c17b022f9abd7 c857d29e8712667cd0e9d85400cdbeec043d3f12218a214ce00e4cdf0f52256f lib/codeql/rust/elements/ParenPat.qll 9359011e3fdf6a40396625c361f644e8c91f4d52570097e813817ed53196808e 34ed1a87043b25da439d6c9973f8b5461f4f6c11d233f8753ff76157628c66b8 lib/codeql/rust/elements/ParenTypeRepr.qll 2388b6c663b2d02c834592c5da5cafac71baa55d4a0eaaca341e13f52dd0e14d 029454c18859a639c4b87825932e5dfe8026cec6ab87adaa4a0d464149e51b07 lib/codeql/rust/elements/ParenthesizedArgList.qll aa3be48d2f8b5cec56db3866fb7d4e0cd97787e9123e2d947912eb8155bf372b 32790971728c9ae2f3d59155d46283aaf4f08238e47bb028a1f20a6d3a734b98 lib/codeql/rust/elements/Pat.qll 56211c5cb4709e7c12a2bfd2da5e413a451672d99e23a8386c08ad0b999fd45c b1b1893a13a75c4f0390f7e2a14ee98a46f067cfdc991a8d43adc82497d20aff lib/codeql/rust/elements/Path.qll 16264a9c978a3027f623530e386a9ad16541305b252fed5e1bedcfbe1d6475d5 8c21063c7f344ce686342e7c12542fec05004e364681f7a31b65f5ee9263a46d lib/codeql/rust/elements/PathAstNode.qll 68160b08272ecde0e636779b7c547f808356d69d1150863b37188ea84e110cab cafa2de0bf3be978854319bbcf5ad1591acd64abd7b0958ff14c96a7529fcc99 -lib/codeql/rust/elements/PathExpr.qll 0232228845a2005fc63d6b8aea8b49ff50415e0e90fd18f863ee1d6e44f53c07 47b15cc6ae576d13f14b29ffa4620451accc603ff87071dfe48660dbe018bf36 +lib/codeql/rust/elements/PathExpr.qll 1a400e0ded29addd40483987d21e10daf75486b0d810a5b1c18f1ec2334edde4 93337e451c6ee6cae10d6f3813376f54ff88b143e7b1bd9df88d4d72cdf6e90e lib/codeql/rust/elements/PathExprBase.qll bb41092ec690ae926e3233c215dcaf1fd8e161b8a6955151949f492e02dba13a b2257072f8062d31c29c63ee1311b07e0d2eb37075f582cfc76bb542ef773198 lib/codeql/rust/elements/PathMeta.qll 56021df592b69c9c735db2ebe2b14ee5b5e0a76546d7a6bafaed9d9ba4ff2ba8 23c34dbd742698f9197ce5b48970b77520131ad31c12e2d88cdfd98de0708b3c lib/codeql/rust/elements/PathPat.qll a7069d1dd77ba66814d6c84e135ed2975d7fcf379624079e6a76dc44b5de832e 2294d524b65ab0d038094b2a00f73feb8ab70c8f49fb4d91e9d390073205631d lib/codeql/rust/elements/PathSegment.qll c54e9d03fc76f3b21c0cfe719617d03d2a172a47c8f884a259566dd6c63d23f2 4995473961f723239b8ac52804aeb373ef2ac26df0f3719c4ca67858039f2132 lib/codeql/rust/elements/PathTypeRepr.qll 1b68e119ac82fdf5f421ded88a1739bfb8009c61e2745be11b34c3a025de18aa 48d9b49ee871f3932a0806709b4a21dadfdbe5cef8bab8d71aab69b6e4e7b432 -lib/codeql/rust/elements/PrefixExpr.qll 107e7bd111b637fd6d76026062d54c2780760b965f172ef119c50dd0714a377d 46954a9404e561c51682395729daac3bda5442113f29839d043e9605d63f7f6d +lib/codeql/rust/elements/PatternTypeRepr.qll 719a26a7b7e40bf6d336a68e93a5a84efb9a87341d96472ba9599555aa7a92a0 3f1d6f860466463dcfe09fb233c9ba4319b3ccb0d45097bd0280c9ceb4f2dbfe +lib/codeql/rust/elements/PrefixExpr.qll af33c38bd272ffd0a748140dd5de1ef07d8b159447a70fb702bba32e6a3f675f 03dd14ddc043faca622b5aeeed4ded50e2f433d2eb8ff671cb98158f6c29943b lib/codeql/rust/elements/PtrTypeRepr.qll 91a3816030ee8e8aae19759589b1b212a09e931b2858a0fef5a3a23f1fb5e342 db7371e63d9cb8b394c5438f4e8c80c1149ca45335ce3a46e6d564ed0cf3938a -lib/codeql/rust/elements/RangeExpr.qll 43785bea08a6a537010db1138e68ae92eed7e481744188dfb3bad119425ff740 5e81cfbdf4617372a73d662a248a0b380c1f40988a5daefb7f00057cae10d3d4 +lib/codeql/rust/elements/RangeExpr.qll bf987805ace1c7291b38fcf96f462077c7423ee455dcc292f81c8c1d7e6b6a2c b1a2f31cb323b147f92ffae9bc899bd9dd77f7abb0cbda26820bb00fc344a5d0 lib/codeql/rust/elements/RangePat.qll b5c0cfc84b8a767d58593fa7102dcf4be3ff8b02ba2f5360c384fa8af4aac830 cc28399dd99630bfa50c54e641a3833abe6643137d010a0a25749d1d70e8c911 -lib/codeql/rust/elements/RefExpr.qll 91a0d3a86002289dc01ffbe8daca13e34e92e522fbb508241a9d51faf1d4a9d2 b6e63d8e6f8956d2501706d129a6f5f24b410ea6539839757c76ba950c410582 +lib/codeql/rust/elements/RefExpr.qll 786481c856125c416160b07566d99233f8dbadd1345487052affea04478fbf78 46f6821c32bf43042e2b1706717f9be0c3b9bd5b4450c1ec89351a4ca3334d63 lib/codeql/rust/elements/RefPat.qll fe076bdccb454111b38f360837d180274ba8a003b4cffe910b5197cd74188089 2604c8bb2b0b47091d5fc4aa276de46fe3561e346bd98f291c3783cef402ba06 lib/codeql/rust/elements/RefTypeRepr.qll 563d2edc097aa1896b3dea5a3918e6225f23dda91b3fb46e2f4c32feb813d56c af3bd746239130e3e94dd41ab682473b29b8b900b05c557beb8a2eba6508ebd9 lib/codeql/rust/elements/Rename.qll 5cb0ebad580d9842cfe65033059d4d373a1386f047f3a78f402a93e060e2c13e 642c6f37d94442575df12b2e998572a725d094ac5ae76147a56057e75138d72b -lib/codeql/rust/elements/RestPat.qll 5fedfac18080b068f597c9bbb84de672834f72cc22295d6312e111f151f8e3c7 c0e1f77bfcdd40e8ab06ad8c138e6098d79940247758adf9de03a05b00c23de3 +lib/codeql/rust/elements/RestPat.qll 6aa7edb4a7afa144856840b34720543c06f429b0c6ae3bd3befd892d38f1d406 e6fbc81e5f3a5c294f5f555943d0027be5a29a0a1553ec8a746e801d942ccc49 lib/codeql/rust/elements/RetTypeRepr.qll d68b7c6c2eda13821fcfe085ac3d63010d89a206be09d23deaf531cac405ba96 6db787a96d95265ca20a17ce00603a678b39ac8c7c1d0e1ad6ed119dcf9858fa -lib/codeql/rust/elements/ReturnExpr.qll b87187cff55bc33c8c18558c9b88617179183d1341b322c1cab35ba07167bbdb 892f3a9df2187e745c869e67f33c228ee42754bc9e4f8f4c1718472eb8f8c80f +lib/codeql/rust/elements/ReturnExpr.qll 72a624b04e2bc7088ec0ff37a80c083ae80e12fd30fbfecf975945a726ce5147 206902414a218eea96367f78ed84e1dc5b67789ca9a05cd3584165ac66ab5cea lib/codeql/rust/elements/ReturnTypeSyntax.qll f30b779f79bc2f0329d5585a462511e1aaa9da63182cb45231873a9bd9644d19 5ba004dae2bca323ced27bb4b2f54f725ae974421ab11b176eac4888c642b3fa lib/codeql/rust/elements/SelfParam.qll e36b54cdc57529935910b321c336783e9e2662c762f3cd6af492d819373ff188 7a4735dbf532fc0c33ebdb0b5c1dfc4e5267e79ceff4ca8977065eb0ce54aaf5 lib/codeql/rust/elements/SlicePat.qll f48f13bb13378cc68f935d5b09175c316f3e81f50ef6a3ac5fdbfbfb473d6fc1 4c8df0b092274f37028e287a949f1a287f7505b7c2c36ee8d5f47fb8365d278a lib/codeql/rust/elements/SliceTypeRepr.qll 730e4d0eeefb9b2284e15b41cd0afc3cbe2556120484df424c8e5242afd852f9 100772263b08f498ce8db203ba572be4e92edd361df7c0e9bd7b20c7ac2820fb -lib/codeql/rust/elements/SourceFile.qll 0b6a3e58767c07602b19975009a2ad53ecf1fd721302af543badb643c1fbb6c4 511d5564aab70b1fcd625e07f3d7e3ceb0c4811a5740de64a55a9a728ba8d32c -lib/codeql/rust/elements/Static.qll 9dca6d4fb80fb4ead49a3de89bec2b02bae6f96fbc2601dde35a2aa69a9bfdb0 70f67bc75d7799dab04ea7a7fd13286bb76bbe514be16d23149c59dfb31fd0c9 +lib/codeql/rust/elements/SourceFile.qll ce8fe0ca541d3dd81b6c4b9dcc828044588e2f9de4c3d124173e7db92695acae 1bd386f29ce86b1756ab46070b9883de901d756cf5e3a90e7bf7714f83931a84 +lib/codeql/rust/elements/Static.qll 5000eac308407c62bd416dde284dcba421070b8498ff41c092ddc5a7064f3d19 b8f8fe3d802cd9ca9e20522db183a22e2c5a9eef9dcab431858bf8f7f7a663ef lib/codeql/rust/elements/Stmt.qll 532b12973037301246daf7d8c0177f734202f43d9261c7a4ca6f5080eea8ca64 b838643c4f2b4623d2c816cddad0e68ca3e11f2879ab7beaece46f489ec4b1f3 -lib/codeql/rust/elements/StmtList.qll 8bad277dfd88735195b8fd43bb1395cb2393c488d89304d6a6e6d8ec3eb24b73 cd1d483aecb8bb1876b8153a872f680febc2ef6c315d661c85ec1b2fa07e4fc0 +lib/codeql/rust/elements/StmtList.qll c4f35907b0fcdb08e7b0ba020ec74542883c1ad0b91447eacb59f7da9053e870 4051c26397c48f8e76dd0eedd46468eb014b81fec917ca905749101e3a068b9a lib/codeql/rust/elements/Struct.qll e60a859c0112b7a7ce4a4752e936e0d58f413ceb895db25d77ece2fcc9d8881c 8bf69f80bb9ef54644d9540b8be7d331f73ba362817508489ff91619718bee6b lib/codeql/rust/elements/StructExpr.qll 84f384ef74c723796e514186037a91dd9666556f62c717f133ce22e9dda4425f 176497835252cfdfe110e58ebde9fbde553d03e44e07d3e4d8041e835dbf31b9 -lib/codeql/rust/elements/StructExprField.qll 3eb9f17ecd1ad38679689eb4ecc169d3a0b5b7a3fc597ae5a957a7aea2f74e4f 8fcd26f266f203004899a60447ba16e7eae4e3a654fbec7f54e26857730ede93 -lib/codeql/rust/elements/StructExprFieldList.qll 6efb2ec4889b38556dc679bb89bbd4bd76ed6a60014c41f8e232288fc23b2d52 dc867a0a4710621e04b36bbec7d317d6f360e0d6ac68b79168c8b714babde31d -lib/codeql/rust/elements/StructField.qll 76e41d8a14d30a3f5a89d1cf28e77265f747824a356711e466fcde3b70e11d39 0fef2c368f53c12db96dcad2eab1bd0ae9cb619711451750bc94b6e31af329dc +lib/codeql/rust/elements/StructExprField.qll 762e7d22ea56ab685267fd3a71c3a06c2e130bdc3243ae348390f478a29156e2 251df91dac242f37b628b0a13aaffb7da7b7345a418e4031b611cbb543ee04b3 +lib/codeql/rust/elements/StructExprFieldList.qll d882eff7a43a2efaac04cb9be8c149a7735aaf833d43fc95b9913159fa76227f 3bff7111c861fa66413d294078d085f3b2cc326c78104f3102bba6834b01084b +lib/codeql/rust/elements/StructField.qll 85254d9db0b012cd356fa6d94666b501d73fdba23725a80856d64afaaea718c2 f4c9e9195a3e99afebe38c7f84621963cde643135c4ac17936e381f83f61d378 lib/codeql/rust/elements/StructFieldList.qll ee3cf510d35fad0edfeec68315fbe986a6d5323fbaddcfb688682be9a6508352 8cafe522251f98eb10eb45073e434a814165c25e436850f81b1d73ef88d6ae83 lib/codeql/rust/elements/StructPat.qll cdd1e8417d1c8cb3d14356390d71eb2916a295d95f240f48d4c2fb21bf4398cb 69c3456a13ef3e978a9a145b9e232198a30360f771feb41a917e507410611f6c -lib/codeql/rust/elements/StructPatField.qll 856aa7d7c6d9b3c17514cbd12a36164e6e9d5923245770d0af3afb759a15204a 1bd1a294d84ad5e4da24e03b4882b215c50473875014859dbf26555d1f4ec2d5 +lib/codeql/rust/elements/StructPatField.qll b6f1a036a1581b743e855c14a67b5e42af6d5dc55225f05e3e919d45b32820fe 16ae3332f1951ea80d88e048e2c49db607c9ef605f3bd767c6331be7cca9a2fb lib/codeql/rust/elements/StructPatFieldList.qll 44619afedcda047e51ee3e319f738d5c49ff5e3f8811155a3ef9874d12bc091d 6b4412a5b0f3ebc0a9f228129c1727b1d6a1947fc826e62fa8e34b2c7d3864ed lib/codeql/rust/elements/Token.qll e2de97c32e12c7ac9369f8dccabc22d89bfcbf7f6acd99f1aa7faa38eb4ac2b2 888d7e1743e802790e78bae694fedb4aba361b600fb9d9ecf022436f2138e13c lib/codeql/rust/elements/TokenTree.qll 23e57fd945ce509df5122aa46f7971360788945cb7a67ddc229de5f44b80e6e9 18a7834edf5d6808e9126c0ce2e9554211faaf21bf7e9e2fa09aa167654e43a9 lib/codeql/rust/elements/TokenTreeMeta.qll f784784313490314520f6aa9f4dac0f4fbf990427ed39c36185a9526e8d1726d 9c8a74c34ba908d3e886f3e7b041dbaf46a981e26ecc1b66a22d11c1b5155e3f -lib/codeql/rust/elements/Trait.qll f78a917c2f2e5a0dfcd7c36e95ad67b1fa218484ee509610db8ca38453bebd4c 2a12f03870ebf86e104bdc3b61aae8512bfafbbf79a0cff5c3c27a04635926af +lib/codeql/rust/elements/Trait.qll a6f2312932f41455ea17b11e7762eb42ca53d7ef33cde62bd5aa5d6a974bd1df 1826f35d302ed99ff82a43f0d65c12ce39702e1533ae7b22852dc4e165ffd5e0 lib/codeql/rust/elements/TryBlockModifier.qll 1567952cea9392e7af28cbe6b7c4aaf00f231e5caeb1292a6fc515918b2891bf 622cbadf10f955f5558475d8015f16667773dabf7db7bdabcc9dbff5425a9fb8 -lib/codeql/rust/elements/TryExpr.qll cb452f53292a1396139f64a35f05bb11501f6b363f8affc9f2d5f1945ad4a647 d60ad731bfe256d0f0b688bdc31708759a3d990c11dee4f1d85ccc0d9e07bec9 -lib/codeql/rust/elements/TupleExpr.qll 1b1be270198f9d3db1c28c4caaa4a7fe9b5ae14651f1a10e2891a7d78d6ad18b 4f585aa684dfbff753e342903ddd60ee4d7c374b8bddeb645784d10903c90ae0 -lib/codeql/rust/elements/TupleField.qll 8d6288fd79959d5ef3732397c0a05a47fcb09091383058d1dba7268a950f8c32 1518cdd0fd9746d09fcdbecabc2a3ce6b36b6d983883850beed3f55c2bdf2c16 +lib/codeql/rust/elements/TryExpr.qll 970ca19d4f9c334bf8118c3dbbdf7cbb84fd18bcefd790ff24fb7eb70ef87568 b5a78ee55860a845bd66ec8729e6ed49ccd469b586355144762681d75cde5973 +lib/codeql/rust/elements/TupleExpr.qll d8de51fac971dbb6105a954a83170ad3ffabbf494244c3a650d767b66dbb80be 19a868298aa82363f3b2779e1af3ad09c582b7b1ba5260281eaa982a4a03a889 +lib/codeql/rust/elements/TupleField.qll 514fe4b90c4a5fe4ce3b59be9559d0dc19ce309244f15b1fd4aa41477508a4c2 f790814b3fc21fc71a5831947870fda11768e800aa9f2c790e841a6dfc3e5ac9 lib/codeql/rust/elements/TupleFieldList.qll 2fa47599f78aa4639a40239cf49bc2f97d84118125b949c71fec4390589caaf0 3f71a86e38bdc6fe9f0c082a43d763c4f34b4bdab99c383cdc5d8b59e887cee0 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 b59f24488f0d7de8d4046a9e0ca1e1f54d1d5c11e035898b11ab97e151fc600f 7b25c9e14c8bb310cec796824904fcefced2cc486d55e981b80b7620e73dd2d7 +lib/codeql/rust/elements/TypeAlias.qll f6d7246ea897e894df2b41dd31cf7df2fd66467059c810b88586f45952ea107b bdbd98a4d2f3dbe77aac110dbce24607f0d92619aaf2b17d0b5eeb8cd3b68d66 lib/codeql/rust/elements/TypeArg.qll e91dbb399d2ab7cf7af9dd5f743a551d0bf91dba3cfb76cea9e2d42ada0f9f2e c67d64e20e35a9bba5092651e0f82c75ba53b8c165e823bc81d67975107ae375 lib/codeql/rust/elements/TypeBound.qll 33583aed81734348c5097851cde3568668f259c000ccde901c75a3f2eef30237 3c9e541d47c5cfbcb0b1c5806f5d9abd7f51382d1efc1328742439e11285ab32 lib/codeql/rust/elements/TypeBoundList.qll 61a861e89b3de23801c723531cd3331a61214817a230aaae74d91cb60f0e096f d54e3d830bb550c5ba082ccd09bc0dc4e6e44e8d11066a7afba5a7172aa687a8 -lib/codeql/rust/elements/TypeItem.qll 5676a801adccd2685c6beff4e2587b6da595ecaa9befb88dc29428eb53988a86 3bfdeb9d0cd4f79a9eb85829e9572bd1e4d0971e67cd3952ae5b811a955b26b5 -lib/codeql/rust/elements/TypeParam.qll 0787c1cc0c121e5b46f7d8e25153fd1b181bd3432eb040cf3b4ae3ed9ac2f28c 50092950f52a4e3bfd961dff4ffd8a719ef66ca1a0914bd33e26fed538321999 +lib/codeql/rust/elements/TypeItem.qll 7cf52c0c1d76a549a09d0b17372a9ec7fef0d85ad4984be348e7a7b96d2f5432 7e45927c55827816982a61dc3bb4b684d11e9f125b2578148fa8dc9ad4c6093a +lib/codeql/rust/elements/TypeParam.qll ff412cff7cf08dde0682f7e995a26039b5afedef3c5febbaf5f2e3bf9829d95f 55673f07b4d5c4a13d9082a706f7e76d19f75f5691b072f6848bae5372828b7a lib/codeql/rust/elements/TypeRepr.qll ea41b05ef0aaac71da460f9a6a8331cf98166f2c388526068ddacbd67488c892 11a01e42dab9183bac14de1ca49131788ede99e75b0ef759efcbc7cf08524184 -lib/codeql/rust/elements/UnderscoreExpr.qll 233661b82b87c8cda16d8f2e17965658c3dc6b69efb23cb8eb9c4f50c68521e0 8edff8e80aac2ecf83a6b58f310cab688cbaeea0a0e68a298b644e565960cc74 +lib/codeql/rust/elements/UnderscoreExpr.qll ee0d0dfc50c15b978f40293fe494dfd5a1f28a15dd605ce4a975af87d093ff46 f207d066fc575d66b596f06f171b1cc2c270ea3452781964b67c4730e1fb392c lib/codeql/rust/elements/Unextracted.qll 12e60c79ef5b94d72b579b19970622e7b73822ebc13fbcfedfe953527ab1ac36 ec015db2eb12c3c82693ddc71d32d9ab9ef7a958e741e2510681bb707ceca23e lib/codeql/rust/elements/Unimplemented.qll bf624d28163e5c99accda16c0c99f938bec4a3b1b920a463e86fc8529ff5ff02 013bc7777298d250338f835cd494b5a8accea2d6a4f9561851f283ac129a446b lib/codeql/rust/elements/Union.qll e23ca528f8573e77dfa7eca71457e2022c92f22292ce84d021d304e52820ee66 eed20ac3797faaa248bc47ef81fa79a5d5c372b4c6289a075d041a84dd8bd6f4 lib/codeql/rust/elements/UnsafeMeta.qll 10473d5527b564c69e9290553f000fcd7ae7502c22e3e183372530541bb81b5b 028220efdf4f4c8c24297d5fc7159126b06c6f1e46eff518ddc55caef5e45cf2 -lib/codeql/rust/elements/Use.qll fdcf70574403c2f219353211b6930f2f9bc79f41c2594e07548de5a8c6cbb24d e41f2b689fcbeb7b84c7ba8d09592f7561626559318642b73574bbac83f74546 +lib/codeql/rust/elements/Use.qll 4c0a1c90fb1fd20af9c2bda0fae89de8689af38d6d8f0198fa32901a2c522af8 db41ab566526ae9664fd94dff53198ddbe69ba4e177c0200fb33e0b863ac5674 lib/codeql/rust/elements/UseBoundGenericArg.qll f16903f8fff676d3700eaad5490804624391141472ecc3166ccb1f70c794c120 5efda98088d096b42f53ceccae78c05f15c6953525b514d849681cb2cf65b147 lib/codeql/rust/elements/UseBoundGenericArgs.qll 841913cfbb84de14aab1820a5433eae978bbadbb8e6d413b8ba70780c7328335 c9ec9d086cff91d15c3aea64f1080b22b41cdaf64e3c8b192aaaec17604a5d10 lib/codeql/rust/elements/UseTree.qll e67c148f63668319c37914a46ff600692de477242a0129fa1bb9839754c0f830 de9b39d3d078d51ec9130db6579bff13e6297e60556a7214a5c51cbf89d92791 lib/codeql/rust/elements/UseTreeList.qll 92ebfee4392a485b38fb3265fdede7c8f2ed1dbe2ab860aa61b1497c33874d25 a4e677455d20838e422e430eebd73d0a488e34e8c960f375fef7b99e79d4c911 -lib/codeql/rust/elements/Variant.qll affe9c58021358fd93d9c867277b4853c8303caa75521c657c8ba2e0cd45f0d6 44894859e3dde36b727abe8a28198f1ba7c487af839e6d9a2fe2d1bacb59f477 +lib/codeql/rust/elements/Variant.qll 2c9585c0d414d228dbedbab4bf70cfe80d5bae5ffbf3f42568bbb21c1eb7ed38 cb045f5e5d2933e68876ed5da055c422a678e2194a5390a1907a8018a054329f lib/codeql/rust/elements/VariantList.qll 39803fbb873d48202c2a511c00c8eafede06e519894e0fd050c2a85bf5f4aa73 1735f89b2b8f6d5960a276b87ea10e4bb8c848c24a5d5fad7f3add7a4d94b7da -lib/codeql/rust/elements/Visibility.qll aa69e8a3fd3b01f6fea0ae2d841a2adc51f4e46dcfc9f8f03c34fbe96f7e24e7 0d475e97e07b73c8da2b53555085b8309d8dc69c113bcb396fc901361dbfe6b8 +lib/codeql/rust/elements/Visibility.qll af9f001cd30e92bd004480fe348adf7ce745ac3de381b1f4723b46ad63be7622 07cb39b9b8c3866bfa1b46eac45e3a5ba1a5877cf51424891b72bc7d3f54dca4 +lib/codeql/rust/elements/VisibilityInner.qll 623e85ffe63d033c4465e2fdeacba2ae51ae7b9d2e9cb15cd4edfb878f8af415 d6ef0775ffd62e51c2739a3a20f3aed1001d8b66f6410625b1f44cdf4ef1f8c0 lib/codeql/rust/elements/WhereClause.qll 4e28e11ceec835a093e469854a4b615e698309cdcbc39ed83810e2e4e7c5953f 4736baf689b87dd6669cb0ef9e27eb2c0f2776ce7f29d7693670bbcea06eb4e4 lib/codeql/rust/elements/WherePred.qll 589027c2fddb07620f74b8ed5e471fab49bef389749e498069d7c1fe50912cc7 dd7c90ff9c5bd563f0b8a088e0890ee11c6d5b2269223f22be01f0e1dbe0f5e2 -lib/codeql/rust/elements/WhileExpr.qll 4a37e3ecd37c306a9b93b610a0e45e18adc22fcd4ce955a519b679e9f89b97e8 82026faa73b94390544e61ed2f3aaeaabd3e457439bb76d2fb06b0d1edd63f49 +lib/codeql/rust/elements/WhileExpr.qll 898a5acadef1d1afa89b635c3d21ab0e876b1109a61c7ea6b4d0e4c8a7a42a45 76e7b8613b47f51cb48157378930dc1ada97aad53be574da8298a0445dace8d9 lib/codeql/rust/elements/WildcardPat.qll 4f941afc5f9f8d319719312399a8f787c75a0dbb709ec7cf488f019339635aab a9140a86da752f9126e586ddb9424b23b3fb4841a5420bac48108c38bb218930 -lib/codeql/rust/elements/YeetExpr.qll 4172bf70de31cab17639da6eed4a12a7afcefd7aa9182216c3811c822d3d6b17 88223aab1bef696f508e0605615d6b83e1eaef755314e6a651ae977edd3757c3 -lib/codeql/rust/elements/YieldExpr.qll de2dc096a077f6c57bba9d1c2b2dcdbecce501333753b866d77c3ffbe06aa516 1f3e8949689c09ed356ff4777394fe39f2ed2b1e6c381fd391790da4f5d5c76a +lib/codeql/rust/elements/YeetExpr.qll e0ff2b538e775fb209bd695e5ead57a61140ee2f12b389de6ccd7576c41ba5e2 ccf0d5e3ac30b445a9976464fd92010c9603fc1e4e0689919eaec605395ca55f +lib/codeql/rust/elements/YieldExpr.qll 8c6f411383aa962a7bc1eb09fdcc6365f14ae02680354e542ae805de1f70d29f 53e8d487fb14e62d9385426e9ce5895da45ee697d6fb00ece426e85e20d0b4b2 lib/codeql/rust/elements/internal/AbiConstructor.qll 4484538db49d7c1d31c139f0f21879fceb48d00416e24499a1d4b1337b4141ac 460818e397f2a1a8f2e5466d9551698b0e569d4640fcb87de6c4268a519b3da1 lib/codeql/rust/elements/internal/AbiImpl.qll 28a2b6bdb38fd626e5d7d1ed29b839b95976c3a03717d840669eb17c4d6f0c7a 8e83877855abe760f3be8f45c2cf91c1f6e810ec0301313910b8104b2474d9cf +lib/codeql/rust/elements/internal/AnyAttrImpl.qll bbb753548cf0e6eeb75a59415b95ac764a35973953514bb684f310033428c442 7daf318b371d55b2715f9327fc8ef9dda85143ce3f464a31c6514ab3921101a9 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 +lib/codeql/rust/elements/internal/ArrayExprInternal.qll 9cca08ca8db32d62ea011e7f82e41b77bf9be62b30fc8ae0efb38702e7901c53 464278a0e0c2de785d3a1c912eb3325e13dd56f4e311e4ab0de9a07b601a363a lib/codeql/rust/elements/internal/ArrayExprInternalConstructor.qll f9756bc40beee99c5e4355bf157030b440c532dff5bdf43e848b3aa1a00fea90 39467f7f313e6f9ede1fe92375ee408098dc65291ca8ee50e36a3684a2767836 lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll ae4488846c8309b2d4a51d54b36fce0a75107917c0b1f8af5ccf40797f570580 37838c7d6a04b95a16ed46e963d7e56def7a30b5e5ef1ab7e0dfdb5f256fa874 lib/codeql/rust/elements/internal/ArrayTypeReprConstructor.qll 52fea288f2031ae4fd5e5fe62300311134ed1dec29e372500487bf2c294516c1 fa6484f548aa0b85867813166f4b6699517dda9906e42d361f5e8c6486bdcb81 @@ -254,6 +265,10 @@ lib/codeql/rust/elements/internal/CfgCompositeConstructor.qll 160bfbccdd80c9b942 lib/codeql/rust/elements/internal/CfgCompositeImpl.qll 840a148dc5c4b213ffdaca6213d6f2dfa3c1dad3f99293f8244baa3bf6902909 36e9291b124c52bb2e4620bead8acf2f9be4a2281eccfd74411adaf91914dd20 lib/codeql/rust/elements/internal/CfgMetaConstructor.qll 335cb7a36e430b08a12c5548d0a91bbb9a00aaa2f9b0dc7b2fa526882ec0271e 0bd7002f58c1c19c22023d6f03874d84e083e1aa09ec9cac888661d5ad632f6b lib/codeql/rust/elements/internal/CfgMetaImpl.qll 9d820fb4dee32288e467a8b667ba191588381d8ec2a0ce0e5e8645ee437a16a8 5888fb533768a36d94f56f81058aa0d00c4a2c13721af42bdd30628747698bce +lib/codeql/rust/elements/internal/CfgPredExprConstructor.qll 2dc5dc48249f69bbb824786fe8ff84258f8aa71d6da2182b67659624a82de672 abb538b0a7907d59e1e1305f8f200d16860a4f8e38a39832f2f3f7668ae3248c +lib/codeql/rust/elements/internal/CfgPredExprImpl.qll 3c1c543492f3a87891efb474d55340c6f4d8104a2253413deac5cd3b2ea04512 d9b61b32a824fe18a03141cd1994352bcd336bb1c2016815b33f93c011b13396 +lib/codeql/rust/elements/internal/CfgPredPatConstructor.qll 33c2b178e02d65dc96bbcbd0fb38781b413b8b7585a2d371e39730be9b45ecfc 6df70c182b75140f6704045cbbfac34c122fec8a791232b8a2f569f9f86008ec +lib/codeql/rust/elements/internal/CfgPredPatImpl.qll 60da1eb785e66d759c4e63ebcf8e2a913afa80e14e3492710dbbe88979cd2837 2fb96fc7248364a67ea167b007c5c5e321cdf30ee07ca55f9d503acc1539c083 lib/codeql/rust/elements/internal/CfgPredicateImpl.qll 3ba6c6732a7de4df967dd2cb2b4cc99db8aefb2301b75521f1b369052e3a2ec0 c07d4366f98f374f24e235f809946dc513a16203e4c1eb151c8185a5bc79e70d lib/codeql/rust/elements/internal/ClosureExprConstructor.qll a348229d2b25c7ebd43b58461830b7915e92d31ae83436ec831e0c4873f6218a 70a1d2ac33db3ac4da5826b0e8628f2f29a8f9cdfd8e4fd0e488d90ce0031a38 lib/codeql/rust/elements/internal/CommentConstructor.qll 0b4a6a976d667bf7595500dfb91b9cfc87460a501837ba5382d9a8d8321d7736 7d02d8c94a319dc48e7978d5270e33fc5c308d443768ff96b618236d250123f1 @@ -266,6 +281,10 @@ lib/codeql/rust/elements/internal/ConstParamConstructor.qll f6645f952aac87c7e00e lib/codeql/rust/elements/internal/ConstParamImpl.qll c6995be58f84d1df65897c80f7ee3dd8eb410bb3e634ff1bfe1be94dfb3fdf32 bcfb5547b40f24bcec20056fe1d36724b734c920b0bc7538fe2974b03f4478fe lib/codeql/rust/elements/internal/ContinueExprConstructor.qll cd93f1b35ccdb031d7e8deba92f6a76187f6009c454f3ea07e89ba459de57ca6 6f658e7d580c4c9068b01d6dd6f72888b8800860668a6653f8c3b27dc9996935 lib/codeql/rust/elements/internal/CrateConstructor.qll 2a3710ed6ff4ffdbc773ac16e2cf176415be8908e1d59fd0702bdeddbae096f4 f75a069b0ef71e54089001eb3a34b8a9e4ce8e4f65ffa71b669b38cf86e0af40 +lib/codeql/rust/elements/internal/DerefPatConstructor.qll a92a1e9b310a7dc92f31952b08c264cbd57265a5c619ff1abecf739ed4f6525f f86e26668b88baa571ca7521782141ce92f816ec366024c21c953bc335482c10 +lib/codeql/rust/elements/internal/DerefPatImpl.qll b43a939e3d373b411fe7b8b2b8192f6cb58860fd806aaa83f20b7e2be06c7e63 21b433843baa1aef9d5a67bd4cfcfbbb08a64a1e8d31ab254ecdc2ef1f1854c0 +lib/codeql/rust/elements/internal/DocCommentConstructor.qll 15c8f57255cf370db771bddc4b83fd52fdebf411fa8d532af978526e6361b866 8799fe6f06edaabf8e134145b79b9548e78b36d3672052dca27182c146202671 +lib/codeql/rust/elements/internal/DocCommentImpl.qll 8d99541bda48ed1cda5ae2c28fe0b692f6b45f85e1bfb20385cb48056019f15b 0eda975e74f1ea9fa84df31aa45008f084a0deac2903dfb16763039c1879a2e1 lib/codeql/rust/elements/internal/DynTraitTypeReprConstructor.qll 6964e6c80fb7f5e283c1d15562cef18ed097452b7fcbc04eff780c7646675c7a f03c4830bf1b958fdfb6563136fa21c911b2e41ce1d1caee14ec572c7232866d lib/codeql/rust/elements/internal/EnumConstructor.qll eca1a13937faacb1db50e4cf69d175f992f2204a5aaed9144bb6f3cb63814ac5 1bafba78b2729fdb052a25a1ba3f4f70871564aa4df632b4a1d467858a437924 lib/codeql/rust/elements/internal/ExprImpl.qll ab20ee174e2e786f34af6e5dedf3ec071bb89fc266b3e91df6377f72aa38d3f2 f68192700f449bf1c229cfbaabd5353c7c559941c915d5a0c88752cf9844194b @@ -290,8 +309,6 @@ lib/codeql/rust/elements/internal/ForTypeReprConstructor.qll eae141dbe9256ab0eb8 lib/codeql/rust/elements/internal/ForTypeReprImpl.qll dbbcb86626dcba3d5534d461d7306c354a15f800ff37c1d039801b868179b387 f942eebb20fb2603b7bab0e90f3e3f7a3f87dd6229090fc011c692a52164ac90 lib/codeql/rust/elements/internal/FormatArgsArgConstructor.qll 8bd9b4e035ef8adeb3ac510dd68043934c0140facb933be1f240096d01cdfa11 74e9d3bbd8882ae59a7e88935d468e0a90a6529a4e2af6a3d83e93944470f0ee lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll 6a8f55e51e141e4875ed03a7cc65eea49daa349de370b957e1e8c6bc4478425c 7efab8981ccbe75a4843315404674793dda66dde02ba432edbca25c7d355778a -lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll 1d5221a97f0edee8c07fd1140a9409cf7c3e6e90fc226278bbe64cf55d72b5c5 a77954bd52b2aa7b2e6891482001a2600c9365778630baf318ffd05cf1630568 -lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll 58576638f78150e84c11ae9c702c1f4ea286460f6476a89f0259c9f7cf34dd36 3befb988d6e8ece20b718cd59bac4a68c458814c3157e4d1d7a513a03fd4bd1e lib/codeql/rust/elements/internal/FormatArgsExprConstructor.qll ce29ff5a839b885b1ab7a02d6a381ae474ab1be3e6ee7dcfd7595bdf28e4b558 63bf957426871905a51ea319662a59e38104c197a1024360aca364dc145b11e8 lib/codeql/rust/elements/internal/FunctionConstructor.qll b50aea579938d03745dfbd8b5fa8498f7f83b967369f63d6875510e09ab7f5d2 19cca32aeaecaf9debc27329e8c39ecec69464bb1d89d7b09908a1d73a8d92a2 lib/codeql/rust/elements/internal/GenericArgImpl.qll fde43bb0e3cb2d8eb9feb02012b0a4f934015f8175ec112dea1077d131f55acb 44842e8075f750ba2876cff28d07284f99188982aa6d674ec863ad90305bf6ae @@ -301,7 +318,11 @@ lib/codeql/rust/elements/internal/GenericParamListConstructor.qll 7221146d1724e0 lib/codeql/rust/elements/internal/IdentPatConstructor.qll 09792f5a070996b65f095dc6b1b9e0fb096a56648eed26c0643c59f82377cab0 0bb1a9fcdc62b5197aef3dd6e0ea4d679dde10d5be54b57b5209727ba66e078b lib/codeql/rust/elements/internal/IfExprConstructor.qll 03088b54c8fa623f93a5b5a7eb896f680e8b0e9025488157a02c48aaebc6ad56 906f916c3690d0721a31dd31b302dcdcec4233bb507683007d82cf10793a648f lib/codeql/rust/elements/internal/ImplConstructor.qll 24edccca59f70d812d1458b412a45310ddc096d095332f6e3258903c54c1bb44 7eb673b3ab33a0873ee5ce189105425066b376821cce0fc9eb8ace22995f0bc7 +lib/codeql/rust/elements/internal/ImplRestrictionConstructor.qll 7d58e3efd82a6869fec0c95733d710223563ba063a11096bc78bdaa2b52228ee 83c219aabb5d037dcece2e723b8424f0a853d5a7c15562c1b5b964e8ea43fd2d +lib/codeql/rust/elements/internal/ImplRestrictionImpl.qll 5023ad9d8103df7c23b3d301ab6a957b2ed17a7b6f78b724e1cfb913423439dc 35ccaf051a5cbc3bf76578a6a30ff11b6f2520bb55232751ec951d9d65119aa5 lib/codeql/rust/elements/internal/ImplTraitTypeReprConstructor.qll 1ed355e5e56f432b24b6f4778e4dc45c6e65095190cacb7a5015529e0c9d01f8 c8505185a042da4eb20a0cc32323194a0290c4bf821c7e0fce7351b194b10f31 +lib/codeql/rust/elements/internal/IncludeBytesExprConstructor.qll 62d20cf32e8c0fa62ef5b472e3b5538b95cc6bf275955f195a4924c2f38c9ba8 5fd4b50e9760af5a5c76d616658adde406470c4c9eac9b846dc0b7583e6460c1 +lib/codeql/rust/elements/internal/IncludeBytesExprImpl.qll cf1da0abb200dceedf5000fe6565456fd1526310565df1f210ec12c37b3b1f4f 82195e928034735f3e41b4d4cf48d411cf6719089f0529a843e79a1dabb94b21 lib/codeql/rust/elements/internal/IndexExprConstructor.qll 99bdc3d793c4dbd993860da60abe2b7c604345d645e86916462bc55a6939a5d1 3fe9d7da725956903707806aadbecac8d5b3874e8bed63c9bab54fff630e75dd lib/codeql/rust/elements/internal/InferTypeReprConstructor.qll bc5f16853401617fc9c5af8a1287a23c5921df1b615cfbe2d7c7a70145ecfcbd da93bd28ea2daade2cbb0a729be3fbf05f72bc02009565c7bb062e4f68fdb9e7 lib/codeql/rust/elements/internal/ItemListConstructor.qll 08af3bd12536941c3dd4a43c81cc861be24325e242e2593c087a3ce632674291 2fa166159c409d2aaffa73a30babb40829a6de580bd40894d909ee6152801082 @@ -344,12 +365,16 @@ lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll a1b3c4587f0ae60d lib/codeql/rust/elements/internal/MissingConstructor.qll aab0b7f2846f14a5914661a18c7c9eae71b9bde2162a3c5e5e8a8ecafa20e854 8f30b00b5b7918a7500786cc749b61695158b5b3cc8e9f2277b6b6bf0f7850a0 lib/codeql/rust/elements/internal/MissingImpl.qll e81caa383797dfe837cf101fb78d23ab150b32fef7b47ffcc5489bfcd942ac3e 9f3212d45d77e5888e435e7babd55c1e6b42c3c16f5b1f71170ac41f93ee8d0b lib/codeql/rust/elements/internal/ModuleConstructor.qll 31cc83c9d8f25ac07375d19e568f05c068e1f5aa205ff3d9ac31c2510e6f8468 8a70f3f1c18ff87f17e6baf2f05ccaed55c70469288192fc39ef0bb5531b8c0e +lib/codeql/rust/elements/internal/MutRestrictionConstructor.qll 002e0b35790932db84a5643d9ffc531b10dc327b1b44b966e773bf9b4e46a325 5d81599d543825b8ace752dc03bafc9bae7f13bc8bcbb3db5e2e0243fc9c6772 +lib/codeql/rust/elements/internal/MutRestrictionImpl.qll 80e2f1b224a71df6a8c6544c1feb19a92b300cf3447c9905814a6539f89f1dde 16099f2adf7b4b9401f3320fc16d27c170b0d00221d9a062d373216150a2559b lib/codeql/rust/elements/internal/NameConstructor.qll a760134c6d4fc785746e1a5dc042a6bf25b8adaa3947a6897c31e50fd91dd5fd 1359f903d57112bcc1f62a609febb288301bfa810e569aa12e1045fd48b5b5c9 lib/codeql/rust/elements/internal/NameRefConstructor.qll 5ff6eacc614fd41f98b54cbb4960a07a1471cf4ea291758d33e54a48fd5d1bc4 c538d65414a24dfdbeb49cfd997588227559ba038f0b55d14bb5d89ed1a016f2 lib/codeql/rust/elements/internal/NamedCrate.qll 6c697076387b5af00422e227540d100ff7c03d3001f6a4c5b61433191d022490 2276f85411db199598fc6a5d8d6ec5762e42b1b45c98e398eeb75e69c697b57f lib/codeql/rust/elements/internal/NamedCrateConstructor.qll 72e07ece16f787dfd993982848689dc2e11845aa5634e9ee5ad8865b95cb59dc ea6555ae33cabe408935649b5e8c6218158036a3b7c4e1abc8bd7cd51c05a912 lib/codeql/rust/elements/internal/NamedCrateImpl.qll ba1f775ca6177a5bdb2ef1891a3fd505642e2fec63910f958f380039499f45bf f66b503b3574d3be75b79870b754015740f58195c4924b71c21ba4e673efd8c4 lib/codeql/rust/elements/internal/NeverTypeReprConstructor.qll 2e0a9c75e389e9ef41a18dd9b5d6c29ffe1d1d633e51ef1de90ec553236d201a 61ea87802fd1c3a68e864ccd76657253a228b06471e4c55bcf94ca2be554f866 +lib/codeql/rust/elements/internal/NotNullConstructor.qll 40e9254021ce7f09861c8d4ac70c3595953e8ade756a3da039d99a638fe8f0f3 3264d3ba76e04cdee673ae38dd3fcd7660978dc17d86c9b8f062bd0fbf3e5d3e +lib/codeql/rust/elements/internal/NotNullImpl.qll d76de5a4967440f52b2b968bae371d7e3aa11b98a38e7de0591720346e70224c 667b432d8500db42c56653b329ef80c7d3079f24efa360528d438c9dff5c9507 lib/codeql/rust/elements/internal/OffsetOfExprConstructor.qll 616e146562adb3ac0fba4d6f55dd6ce60518ed377c0856f1f09ba49593e7bfab 80518ce90fc6d08011d6f5fc2a543958067739e1b0a6a5f2ed90fc9b1db078f0 lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll e52d4596068cc54719438121f7d5afcaab04e0c70168ac5e4df1a3a0969817a6 6ab37e659d79e02fb2685d6802ae124157bf14b6f790b31688f437c87f40f52c lib/codeql/rust/elements/internal/OrPatConstructor.qll 4ef583e07298487c0c4c6d7c76ffcc04b1e5fe58aba0c1da3e2c8446a9e0c92b 980a6bd176ae5e5b11c134569910c5468ba91f480982d846e222d031a6a05f1a @@ -369,6 +394,8 @@ lib/codeql/rust/elements/internal/PathMetaImpl.qll 052152ec17c827054b1e9fccfc7cd lib/codeql/rust/elements/internal/PathPatConstructor.qll 966c4ea22218ef71e000d7ce8dd5b570c39ad96b9239a3aa8a38292e2a9f36d2 8a1f348e9257ffc6e6bedcd70389b8e7ec2a3ed6e7b3733744ddfab284826e57 lib/codeql/rust/elements/internal/PathSegmentConstructor.qll 2d9639e42035dc7e73b7d6ddb8a977beadc6b4492dee4292b2f85b4409344441 c337fc3b9ef56366428772563e3f25f711474d16e860d3e89c1395a95d9e83e7 lib/codeql/rust/elements/internal/PathTypeReprConstructor.qll e05e7be13d48e7f832e735254777692d4be827a745b1fd94b9649d46fe574393 4aa1e6935a4479b61f205265cbbba01ce96d09a680c20d5decf30d1374d484d4 +lib/codeql/rust/elements/internal/PatternTypeReprConstructor.qll cf17aaca86534afe86518f1dc2fdbf548fc0e9bf241d1e698a94940ce875d1f2 5799da5538796765846bcf09391ec2388cc96fdc6fea60819301ab6387d5d146 +lib/codeql/rust/elements/internal/PatternTypeReprImpl.qll 38052ab7f6f18d73556644291546d1f58709c2e44c7fdbcb259a4e5102bc1a08 f63d6fb495a1cad07ae55de210e766fdf15f011de4d8b7b2e8124d556287db26 lib/codeql/rust/elements/internal/PrefixExprConstructor.qll 90c50b0df2d4b4cbf5e2b7d67a9d243a1af9bfff660b7a70d8b9c7859c28bca7 1a1b5ea1f06ed8d41a658c872e8e1915c241a7c799c691df81b9a7b55d8f2f1e lib/codeql/rust/elements/internal/PtrTypeReprConstructor.qll c8bd3502dc23429577fbff0fe3e3c78b812b2237b2bb65862c137083fdaa7a4a 4d5c135be30f71a3712acbc22bdb6c425fa6463043a9ee64543da31151d68366 lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll cb3cf7960a05f2c1930067fc62c5a207fc5faac143758b9b9e5f117fbd073f2f 40545d4768380f0dde9b708932f92f57566ac49f3f9b4147a8ff2ea90a0947c7 @@ -455,6 +482,8 @@ lib/codeql/rust/elements/internal/VariantConstructor.qll 0297d4a9a9b32448d6d6063 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 +lib/codeql/rust/elements/internal/VisibilityInnerConstructor.qll 6d845ba35a3bc8521fb49d1691d6aa10f1f7f4b7f27f12f4d3e316d8d3d6050c eecc48b25464df7e723ce1e9706b2b9ffbb8ccac26edb78b0901ce9912675edc +lib/codeql/rust/elements/internal/VisibilityInnerImpl.qll 9a536441b258a5dae6518b7efa36a881244194f7e0f842a1c730dfeaa979d462 de14821d1d9ffeac766b01ee3ec248c73a531b4d3a7357e5b609e4de40ffea93 lib/codeql/rust/elements/internal/WhereClauseConstructor.qll 6d6f0f0376cf45fac37ea0c7c4345d08718d2a3d6d913e591de1de9e640317c9 ff690f3d4391e5f1fae6e9014365810105e8befe9d6b52a82625994319af9ffd lib/codeql/rust/elements/internal/WhereClauseImpl.qll 006e330df395183d15896e5f81128e24b8274d849fe45afb5040444e4b764226 ed5e8317b5f33104e5c322588dc400755c8852bbb77ef835177b13af7480fd43 lib/codeql/rust/elements/internal/WherePredConstructor.qll f331c37085792a01159e8c218e9ef827e80e99b7c3d5978b6489808f05bd11f8 179cad3e4c5aaaf27755891694ef3569322fcf34c5290e6af49e5b5e3f8aa732 @@ -465,75 +494,79 @@ lib/codeql/rust/elements/internal/YeetExprConstructor.qll 7763e1717d367215658725 lib/codeql/rust/elements/internal/YeetExprImpl.qll e8924147c3ebe0c32d04c5b33edfd82ae965c32479acfd4429eeab525cf42efb b2debcfa42df901f254c58705a5009825ec153464c9ab4b323aa439e5924e59e lib/codeql/rust/elements/internal/YieldExprConstructor.qll 8cbfa6405acb151ee31ccc7c89336948a597d783e8890e5c3e53853850871712 966f685eb6b9063bc359213323d3ff760b536158ecd17608e7618a3e9adf475f lib/codeql/rust/elements/internal/YieldExprImpl.qll af184649a348ddd0be16dee9daae307240bf123ace09243950342e9d71ededd9 17df90f67dd51623e8a5715b344ccd8740c8fc415af092469f801b99caacb70d -lib/codeql/rust/elements/internal/generated/Abi.qll f5a22afe5596c261b4409395056ce3227b25d67602d51d0b72734d870f614df3 06d1c242ccd31f1cc90212823077e1a7a9e93cd3771a14ebe2f0659c979f3dd1 +lib/codeql/rust/elements/internal/generated/Abi.qll 43ccb654c5cb29c850607ac338c0a289284174825c2a1b6e52fafe8e227ec3b2 72c40ceef8dffe8b7328d0400d367bd757ede03771b901bb46c771e5a5530e1e lib/codeql/rust/elements/internal/generated/Addressable.qll 624c380d385af6563885417d1e8ecd5d9b7abf1435c0ab79a1b9a405387874a3 e2755dc2155d6f2bc0e2d54006da0e62ee359440592db9d6a8b73202ef28e64f -lib/codeql/rust/elements/internal/generated/ArgList.qll e41f48258082876a8ceac9107209d94fdd00a62d2e4c632987a01a8394c4aff6 bf1982d14f8cd55fa0c3da2c6aab56fc73b15a3572ffc72d9a94f2c860f8f3b7 -lib/codeql/rust/elements/internal/generated/ArrayExpr.qll 73806a0de8168b38a9436fa6b8c6d68c92eeab3d64a1ae7edfff82f871929992 7ad998cdd8f4fed226473517ad7a5765cb35608033047aad53bf8aa3969fd03b -lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll 67a7b0fae04b11cf771727ff39a123fb2d5ce6e2d650d32478fcb33a26ed5688 15833405fa85f6abe0e5146dac283cb5a142a07f08300ccc15a1dae30ed88942 +lib/codeql/rust/elements/internal/generated/AnyAttr.qll a5f4fdb031b994cda17b155dab60ce107780c196e5b3b61893d37de1115e3abc 7e92bd44103a65ca5b4d1c8f6f5c8b99d30e4cf97bd166a79eec7d99b7dfe287 +lib/codeql/rust/elements/internal/generated/ArgList.qll 7e2b7dbccc506fb5df7b85885ce1c9cadfc98d98cd8c291d84bd3a0d67fdd577 a8fe85d1bfeb9786fc6179b6cc7f783168162f1ae6aa100db9cfd210af43b043 +lib/codeql/rust/elements/internal/generated/ArrayExpr.qll c74800cd41389e20565b45eb44b2b9cd95942134ccd3a871c0cdb2e96d1c66c0 4070716f48f299365ae9396c2eda7819f42cfcb9741f3a68dfe520d8eb3267bf +lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll f53d90ef09422ba858ede6b19bb0010bd729f418627b33185ab03672f5e62184 49ae24d9fa473753d525aa3d86fe87a8b5b55117ffb684b027516527e0709d05 lib/codeql/rust/elements/internal/generated/ArrayListExpr.qll f325163c2bd401286305330482bee20d060cecd24afa9e49deab7ba7e72ca056 ae3f5b303e31fc6c48b38172304ee8dcf3af2b2ba693767824ea8a944b6be0eb lib/codeql/rust/elements/internal/generated/ArrayRepeatExpr.qll ac2035488d5b9328f01ce2dd5bd7598e3af1cbb383ddb48b648e1e8908ea82fc 3ec910b184115fb3750692287e8039560e20bd6a5fb26ac1f9c346424d8eaa48 -lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll d1db33bc2c13e5bc6faa9c7009c50b336296b10ed69723499db2680ff105604d e581ca7f2e5089e272c4ef99630daac2511440314a71267ff3e66f857f13ee69 -lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll 579cabafcf0387a9270112ffa53c0b542c1bfbbebfe5c916ac2e6a9b2453539a 8048f5d8759425c55dc46d8fe502687edc29209e290094e9bcd24ff943c8d801 -lib/codeql/rust/elements/internal/generated/AsmConst.qll 26c96fc41f2b517b7756fd602c8b0cd4849c7090013fb3f8a5e290e5eabe80cc f0f1bf3e8ae7e20e1c2ab638428190c58ee242a7d15c480ed9c5f789ce42c9cb -lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll 4064e9c98aeebfebf29d013f6280f44548996d6f185b19bf96b1b23384c976b9 2bb0b99d20c0fdd6d54d4a1947a02372b6e4b197fb887ad058290ae97f015953 -lib/codeql/rust/elements/internal/generated/AsmExpr.qll afabf734bf93040451cb22d22f71ab9b2abb176bd6e0d862f5cc67d687f84e4c 7e35b3bc93b5e6f6b7259f3261234421eb5778a47192bc0f5e54d062d3bc8dde -lib/codeql/rust/elements/internal/generated/AsmLabel.qll 3e97e64f0682709f05464218e0182f64537e08079b0f276738c83eae92c22d25 3ce70364762bc8c0eeb13940406a0613a815a0ae68b24f7e3a1a649a6fe05c89 +lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll 9bd3ead45e102631eb77f7597667833a92eeb18d89254e0be62d7050ecbf24a3 9381025db82c59a8af6bc1c804cd45380f955f6c49004d1dbf67c579e25b40eb +lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll ef0cfc30109a687f48c10d6519dbdd493e403bd65ac708bf493fb4923fd177d7 d671faeb3dbc31ce29d108146758564ccb67ac0db59995417e84431cf5470071 +lib/codeql/rust/elements/internal/generated/AsmConst.qll 56d180e14aa90537b0a0a9c22bc684c23b9e30bebdc955979419655f9c61dd1d 1d7f4387f0282651af1e2ee789395d56d1074328f496db91e5b747f5aef9413d +lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll ca1cb42a0132433ce77b3b626cb6cd88bf4ecd3197fc3d310f37999123a4b870 8f07f2d7c51f33cf4bac9c751d89eb5c8a659d9ebac3056b119559e0eebc00f3 +lib/codeql/rust/elements/internal/generated/AsmExpr.qll aa0ef950e9b7a2a4508d8f8d9c64475adc0c459c2eb288867fe86f1b9681b36f ad3438f398e6f34b2b2f79666a80ab38542ae24c5356cf18d9804061b24c034d +lib/codeql/rust/elements/internal/generated/AsmLabel.qll 0af8151c20ab3eaefdfdad15a3d67067d8852de1c2430d7c7063a33962df7de8 990b1bb7f561e8375d58e108177b696adb8c4a3e19d0568c78137d9197e86383 lib/codeql/rust/elements/internal/generated/AsmOperand.qll a18ddb65ba0de6b61fb73e6a39398a127ccd4180b12fea43398e1e8f3e829ecd 22d2162566bcf18e8bb39eac9c1de0ae563013767ef5efebff6d844cb4038cae -lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll 6ec1db45e8523331d516263476bbda1006251ce137c2cd324d9b6c6fabf358df b6278d4e605fb5422ab1e563649da793bacf28cd587328f9cc36ca57799510d0 -lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll 61c48af0a277b011cb46ad9e9f3255ae22c943a11aafc8c591cac6444ed3e6d1 448afb29e6582339229f092ff2de6b953c09c10f2353a1f8eb54e5dfa639881f -lib/codeql/rust/elements/internal/generated/AsmOption.qll 9aa5df0f677363111b395b3fb09a0882d61c38f97ba811713490f52c851fa8db d863469f626c6e9a6a69faee4216226dd13c62fbf76ba93717d7d12fd95e0c9f -lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll 998234952d4052b1864014456e6db7e775b8016b44d67608b2cbba9a730453de 8fb7cf5343fb317d8cbe6f3ebb22d80749a1131b28a89d189ecb8f99321ed5f0 +lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll 40c8ff956a00c374d3023f064f96dee98d2e740e220196d9768c1fce240d0f1e a0bf7b4d6920285d2e1e46ae525ba5da4902d7817b49c261daf7ad0067b975ed +lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll 8667bbeff23275df0fce082eca3fac49600cee2c927dc3675e62df97f6d43ee8 4efc1f21dbff76b85500b32db0ca55247038734e655d7c0caa2947fb21f77f99 +lib/codeql/rust/elements/internal/generated/AsmOption.qll 0ae798dca45107d488e2feede94e3ef5f5da596bcc358608e815e7addbf282e6 8e987e2f5027d0c1be8148694413610cd8b8b7622f6d55db8dbb162a46c22f73 +lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll dd3ed13fd792d32eb94556dea759b59e506e7b5bfd10d4036d5b9708765b35c8 15c8e65f2109db233a03589f7b5e3f1ae8a66637b21b77bb9840784dfccdd2b2 lib/codeql/rust/elements/internal/generated/AsmPiece.qll 17f425727781cdda3a2ec59e20a70e7eb14c75298298e7a014316593fb18f1f9 67656da151f466288d5e7f6cd7723ccb4660df81a9414398c00f7a7c97a19163 -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/AsmRegOperand.qll d6c77d79c86ca7cb02725c41d06f55e2cd982643bd09790c6ad66a8c93432147 588a5ae9257150a006246476acedaa0d8fabe7008c49d296e64bd4b36a85bb00 +lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll 2f0c45f6c3776ca6fdb46350759a39340efcdb97eb5a2b31073022677a0dbffa d80d44f6a06d328335e0b30abf32dafbb91be1ddf239f2a8444c2111341c14af +lib/codeql/rust/elements/internal/generated/AsmSym.qll 2fa14d2445051e271c2a5806408c3d558219e86e18aeba6163fce538e10d78a9 863e3a0755c6baa565abde23db06efa0293f1ce7c871bb3e58a9cb282730816a 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/AssocItemList.qll 8dbe7ec0446546f92128d82a4445e412408436aefcfefcb080661f297d1d5d44 2e71d3d9b8947aad1a21e8c4662c7a3933dbb87e24d15dfb3df919906648da4d +lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll 0f5bd621dda4c3869f05df713b3c4f64a257ccf0b95f8bd61506ec9922cfb2f7 0661102323b0200ea310a38fd86b9dd32b67b3f48b9a248e0f5bd0b9dfb05513 lib/codeql/rust/elements/internal/generated/AstNode.qll 1cbfae6a732a1de54b56669ee69d875b0e1d15e58d9aa621df9337c59db5619d 37e16a0c70ae69c5dc1b6df241b9acca96a6326d6cca15456699c44a81c93666 -lib/codeql/rust/elements/internal/generated/Attr.qll 3f306e301c79f58018f1d5f39b4232760ebba7cad7208b78ffcf77e962041459 865a985c0af86b3463440975216b863256d9bf5960e664dd9c0fe2e602b4828b -lib/codeql/rust/elements/internal/generated/AwaitExpr.qll 1d71af702a1f397fb231fae3e0642b3deeba0cd5a43c1d8fabdff29cac979340 e0bfa007bdecc5a09a266d449d723ae35f5a24fbdfc11e4e48aeea3ec0c5147c -lib/codeql/rust/elements/internal/generated/BecomeExpr.qll 7a211b785a4a2f961242d1d73fd031d381aad809f7b600ce7f7f864518bb7242 17a0388680007871748cfdc6621f700a7c2817b9601e1bd817fb48561e7c63ad -lib/codeql/rust/elements/internal/generated/BinaryExpr.qll 64e9bd9c571edd6e5f3e7662b956b1d87fa0354ce6fe95da9caf25ac16b66c68 3fca09fdbe879db2ca3293618896a462e96376a2963d15cce3d5b1baac552fcb -lib/codeql/rust/elements/internal/generated/BlockExpr.qll db813fa05eace9769ba2a51bb38c17e58d621cc31cbf88ee8186c23e3734467c 3a2804490c2bdfccfd2b18c2d4c6cd6edefc375a0a7463120a43212d22ce7513 +lib/codeql/rust/elements/internal/generated/Attr.qll 9f2984187eb8a52a3012cfac6ed2d22f428eaaeced591972d1c7657550cc10da 4e0227cba4875c4aead5098076ab7b78c4b8cbc185285967d9568fd9984326b4 +lib/codeql/rust/elements/internal/generated/AwaitExpr.qll 33387ef5cafb5086b29b3b262a92525d6b934fc2c3d256b301862c478bb4526a 223da72521668522496838cb47d345eb24a3e822d335b1389783935010517056 +lib/codeql/rust/elements/internal/generated/BecomeExpr.qll 90dacf4743b4251cb860231e0a85a1c2b555c5613448ac8acb1efdcc3d1cd0c8 6fc4d5a09128fa3066ec3fec7d33fb51dddce2153cd6e0aba5275f476cd72b17 +lib/codeql/rust/elements/internal/generated/BinaryExpr.qll c82c2fbbf2c8ccaf3ecb32d20d350dc9bbcab075b2e8736c9e9b2aa4f0ec7b49 08a2b366fc5862c14795784d0bba82cea30d4d2487c34f860dbe278c9dc45afb +lib/codeql/rust/elements/internal/generated/BlockExpr.qll a12f24b72b18c04c445d21d47f8c99a8fbcda5678b77c7915635e5976886350c 82eaaf157672d0a712b03698e18ec7bf4e2573b5599f3dbb18c7c945399f3f54 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 6096035ba2ef1ce3e6254d5b8497dcb6cd7570253423c778a9dd7e158f928644 e56caf9ba094ddfc4952ed5072c5f6f139db8029fa6bd6328d1a118e96a1d5fe -lib/codeql/rust/elements/internal/generated/Callable.qll 12368b998c771c6b80f54123cea4d3600af7432ab34c9e571bc0bf3894ceb17e 273a9fd9cdae56cf2edbdc9c49b15da49cd5ad04be70acbbe2475c9c50200183 -lib/codeql/rust/elements/internal/generated/CastExpr.qll ddc20054b0b339ad4d40298f3461490d25d00af87c876da5ffbc6a11c0832295 f4247307afcd74d80e926f29f8c57e78c50800984483e6b6003a44681e4a71f3 -lib/codeql/rust/elements/internal/generated/CfgAtom.qll 4379fe45c14c3f8d6bdbc2d7879082d1dbcfee00973c91d93a29ed01f9477dad 52488050dddacb84729ddf06cfe1d71c33e052015f1dff544d805ebbf286150d -lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll 8bbf153628df0e59d5c66bd41788fbbfb83b44e8870b695f5551a8961e7d4464 f605ddb63a1adc2a881e95b6adbbd908e341aca24448cd1441c7021a1eb70ae1 -lib/codeql/rust/elements/internal/generated/CfgComposite.qll 96ea6dc95579b31808d1b6cc10c8a42bb8d2b211fe6092eb62416b225297c15e 37ba82588d34831abf4426b658e1b063044f6093879bc8a704432cb8f99785d8 -lib/codeql/rust/elements/internal/generated/CfgMeta.qll 6e2e5f26a57781af0e46ddcf589f4d33637d304eca28b9c4c4e01108d075c590 015385a2fc33bfb6fbe3d3353861dea36ed00cbcf810e64c36fa46cae140218d +lib/codeql/rust/elements/internal/generated/BreakExpr.qll c5bcbba71dee9c5210928999fe15c27ba99498c6bde62b1a3a529df131dfd57e da73aaeb27fe48137ae271156c122db05df1ed42f56f5e3f14d478598370337a +lib/codeql/rust/elements/internal/generated/CallExpr.qll 65c74ff4a17fded2431eed80f05f593d34fd63c96450df1c98e5cc6f23c3fd06 fd6f9e5a607d454349adfcd5639fc7f8164b9eda968126e3857393cb2bcbba50 +lib/codeql/rust/elements/internal/generated/Callable.qll 02a4cfbf9d53a21504d612981fe786ad65861027554dd998a2bbc890cfacc788 d80a4cf8967e0008d72a813de6cf9c75ad4adb590df671e7c769a35be3c4ebb0 +lib/codeql/rust/elements/internal/generated/CastExpr.qll 047eac7fb489df68543001618231747f8b9e6a51d6c9c856ad8eeadf330b83af e6fa71e63e4211fdf393958627c3a327adce516019ddc991ce50a6c882d320c5 +lib/codeql/rust/elements/internal/generated/CfgAtom.qll 1b7672e06fe19c7ba484937c3101ff7f5a48fc19e8fff2cb5ecbffc6fce612bc 6dacd084ed0110cc477881fd0f709c6c996ec8a038549bf885a0abb21261bb1d +lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll 4531aaa627f4d44787970f18dfe30b957f51d83ab2396bac436563c40d144ca9 1731ecd335431b0a2ec70403dc1ad7bce1f8e171a4d6b575d340f1d683fa6c92 +lib/codeql/rust/elements/internal/generated/CfgComposite.qll 4f30fa0495381774cd7993a38e1fbe94dff63a5742e8b836bbc35987b746df1a 595ff31b5990845085bbb963ba408dd1246aed1952bee2836ad9d92a1da6e4c7 +lib/codeql/rust/elements/internal/generated/CfgMeta.qll 7fd8ee49428da70ba1e52bf9017bbe30b690443c26147c77aa9bcffd7d09338d ec4d34dbd1e7ca412ce3d242f1bd6695a5fe9f263d5bc68ce12610facedf3e93 +lib/codeql/rust/elements/internal/generated/CfgPredExpr.qll 6b49616d1f22141b1629b1f31ba1a5f7bb7c41aaaf392b6ae3e2f0a453dec9c5 8528c388962a105e86a936e1c896b890525341d9e7706afa63745b69da30df9a +lib/codeql/rust/elements/internal/generated/CfgPredPat.qll f3def25f9cecf937d8bb21d121307e72cfefdd8c183727b08a223d9fa92a2b77 65b4a37a9fdd0d4bdd129db66be9f44faf6b71113281148e040c40e24d7a6902 lib/codeql/rust/elements/internal/generated/CfgPredicate.qll 736fe7385e2af5bb86c349bb1b8dd030aef191541f6af24694e3c460b8272f61 4117ee073683eb5fb81bae9e7e49b4ad0991cfcb53e0b7b4160199931a300632 lib/codeql/rust/elements/internal/generated/ClosureExpr.qll 818aff75d86821c670d8ba0720c3270681b3e070140a9c41beab2a811b43eee6 9bf2d1d38f6c4a99d7c058f8ed096141f5ba6a75d2d26a464f0d65ed4e554222 -lib/codeql/rust/elements/internal/generated/Comment.qll cd1ef861e3803618f9f78a4ac00516d50ecfecdca1c1d14304dc5327cbe07a3b 8b67345aeb15beb5895212228761ea3496297846c93fd2127b417406ae87c201 -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 -lib/codeql/rust/elements/internal/generated/ContinueExpr.qll e2010feb14fb6edeb83a991d9357e50edb770172ddfde2e8670b0d3e68169f28 48d09d661e1443002f6d22b8710e22c9c36d9daa9cde09c6366a61e960d717cb +lib/codeql/rust/elements/internal/generated/Comment.qll 9e306a2947185ca15946a3d43dea09d10000b3ba8b28b4691a4b4be6697b7a53 c3df90920fcb595afe5c6e6b614ed0cc61c7679d9785ff17aa0db7cdaedc1115 +lib/codeql/rust/elements/internal/generated/Const.qll 3672acd4e96c74c0f863c1d45fd0080342aa630ca48e4d47b625491764d17356 453539b270befbaa60f607b40a982155c0e0e34c93dad125f89ee8fbf2fe2d9f +lib/codeql/rust/elements/internal/generated/ConstArg.qll acee83548e8e4203603fbf4fab8a4c309109a41b91e79e52577eb6dae0765b89 8d2291de34ec278dadde7daaa309d599a3db6ec6d9e9b71b467b47d13598e51b +lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll abdbab1c9fda654548708ec38deb79e6d5b4abc448be0533b114b670ce8c4e16 d04845ebacc2bafc1d70ddbab5f72293038064340c75b7449e26b340ad8010f5 +lib/codeql/rust/elements/internal/generated/ConstParam.qll 1517f721791072dfd4cc9b42b58c1c80089390dbde1791e8b17879dd7a34a3bd 1e0e6f10d06f3c81b390b0ca9090550ba82793bb2c02b3463ac3c368a4d4791d +lib/codeql/rust/elements/internal/generated/ContinueExpr.qll cea8a3058b79561d5bdbe1c9ea089623bdb822313590b0e8a664742c98d6d5f1 dcd0c25efe63d3b24ae70105c2b3133ff5c1ec00314c513e56fef940385f5934 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/DerefPat.qll cdae06ddb54d7f6962c150d08b5617c502ccd18b39e5024ec590db5c09ffca65 8a1e215232bd73c98f9bc4f95677aa4d0e165512ee9b9b3ca608456ef42011ae +lib/codeql/rust/elements/internal/generated/DocComment.qll 6fa6168f0240c38d887111a35d633155f158828597193659dc942f5174d3cd43 ed127dbe884fd1d58bf3bba3447c617ca84ceb7b515e0f7c9f91dd2bd75d9685 +lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll dd708e6bdbc01c427a9465750d8c12d99d68828b5cc8193b2f1e7ae9d8307f32 b198c2069ae80ce57d5c1e479ba47b511ced2d21e00e7ec05d4c76c83766e454 lib/codeql/rust/elements/internal/generated/Element.qll d56d22c060fa929464f837b1e16475a4a2a2e42d68235a014f7369bcb48431db 0e48426ca72179f675ac29aa49bbaadb8b1d27b08ad5cbc72ec5a005c291848e lib/codeql/rust/elements/internal/generated/Enum.qll 3ed69005ab7cf68745a67cc9891bd68a83f6ab927febf077de9e4092cb373b0b 604fd03d1c46884b3c93e5bff3951ec41593320e1f7382c1a7143a64063827bc 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/ExprStmt.qll a389b43ecb47855f89c6ddce3aaf0f789342c3c79610fe44840053b86ddfd33c 96647d1faec5e9dc57994644f178e9e8834de4a22fc1074a6e19a396bc875ff6 +lib/codeql/rust/elements/internal/generated/ExternBlock.qll 54b0b24cc1f98854c52799f8c112fde2adfbeb290dbfb9b35ba6ec9df44ee968 3aca30b492caf5fe8b6355151aad28c2bfc648c62fbf72e800f4f3709384fadc +lib/codeql/rust/elements/internal/generated/ExternCrate.qll 8841aedf9935f85cd3123230222eb0be6d3d4c9053920d746c07359d919116ee 2fd5a69c63df32861968f358afb8618c64d148316480f795d5f73684fd8817b9 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/ExternItemList.qll 8e6814e3789d36d7832c9f5b75ba56ede234ac9f86646d8e9c9776fcfa38031b e07e2ed3cef725af0b55fd1d051836d1a3334dca76e60c8e828c0802c8b81df0 lib/codeql/rust/elements/internal/generated/ExtractorStep.qll 61cd504a1aab98b1c977ee8cff661258351d11ca1fec77038c0a17d359f5810e 5e57b50f3e8e3114a55159fb11a524c6944363f5f8a380abccc8b220dedc70ca -lib/codeql/rust/elements/internal/generated/FieldExpr.qll d6077fcc563702bb8d626d2fda60df171023636f98b4a345345e131da1a03dfc 03f9eb65abfab778e6d2c7090c08fe75c38c967302f5a9fa96ab0c24e954929d +lib/codeql/rust/elements/internal/generated/FieldExpr.qll ea8df03984b989aad74f432d2240ead980d531398ea0b793bc230ad2f3590b6a 0af68d588849b62aa51f4bdacedf6fe3e528b24a91bfb893210ded8b5846b811 lib/codeql/rust/elements/internal/generated/FieldList.qll 35bb72a673c02afafc1f6128aeb26853d3a1cdbaea246332affa17a023ece70e b7012dd214788de9248e9ab6eea1a896329d5731fa0b39e23df1b39df2b7eb9c -lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll f218fa57a01ecc39b58fa15893d6499c15ff8ab8fd9f4ed3078f0ca8b3f15c7e 2d1a7325cf2bd0174ce6fc15e0cbe39c7c1d8b40db5f91e5329acb339a1ad1e8 +lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll e9b45cf0e1ed7cc31b6dc56e171d33a0986a0753397e4eb7a3540f91831247a2 ec5607555ba1feb16e3f0ef4c4bbe67d14cb5eb4cd0c83d5aaf6a88de4008b60 lib/codeql/rust/elements/internal/generated/ForBinder.qll 7be6b8e3934db8cd4ac326625cf637dda4b175fd7573a52d2feb147769c4c6a1 234484b9b4cf3a20c97334417700db5029da65313410b3c9e929512c509e5c27 -lib/codeql/rust/elements/internal/generated/ForExpr.qll 7c497d2c612fd175069037d6d7ff9339e8aec63259757bb56269e9ca8b0114ea dc48c0ad3945868d6bd5e41ca34a41f8ee74d8ba0adc62b440256f59c7f21096 -lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll 7daa3b938592b590d604203e7d0fc5c34c2bffe6adcceee5a5e0c681ed16214c f1380179cbdc188ad133c946d9e17e85aed0d77771b319f663d8eada0f7cf17d +lib/codeql/rust/elements/internal/generated/ForExpr.qll c233389730f4f46dfedd2f80f57bfcda7f0d14176e85bcdf7528de4fc0404f99 7ff0415873cdaa1ce925ecbc152824916101b047246af3d9caa1d95039e0e8ee +lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll 8d960834b5fb55f50f6259d565961e8604f4298ff7a69120ceb9a21257ba629c f93c3477bffe1c648bb1d2c126f608fe8eee41abe7a306a7b6f16957d280b1c9 lib/codeql/rust/elements/internal/generated/Format.qll 934351f8a8ffd914cc3fd88aca8e81bf646236fe34d15e0df7aeeb0b942b203f da9f146e6f52bafd67dcfd3b916692cf8f66031e0b1d5d17fc8dda5eefb99ca0 -lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll e12e470cfe23da78cb82258f7e1e9e263fd11a8ff6b9a31facf130264e1d2f86 31e8419530cff1811937ad24558aa2feaa5198df5eeb9e16b4197e8ce4efdce2 -lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll 7720d5a024c6487604952bb6a1925fd473d35d959079791acbdd98e5cd1de11e b7b4fa8121aa1f75f9467fb91e87b2a5ced1b1ce65ebe07249b78945433ea3a3 -lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll 8aed8715a27d3af3de56ded4610c6792a25216b1544eb7e57c8b0b37c14bd9c1 590a2b0063d2ecd00bbbd1ce29603c8fd69972e34e6daddf309c915ce4ec1375 +lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll 24a0c1e6b1d51cf25c9c04bea2d3692978c6accdba1c9b990edf3804d382d784 3e309db56048786599debc41f97a0fa8436ae44abe8498b2218438cf9eafef47 +lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll baa40c000c2f982da7ed998b81d96e22de477647ea90ded2d278385f5601effb eb91a90418eebd53421c12d8a9c61235c0655ec7157d064bf677a8f6e38d79b1 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 25aa44c816233b9259b4ca12a15b6aff5856f4147d6a72fd0ec2fdebb24a5131 62a8a9080bf555950a854f84444d79cbe72d69b1d3f73ac801bb11e732fc7e46 @@ -541,301 +574,316 @@ lib/codeql/rust/elements/internal/generated/GenericArg.qll 908dadf36a631bc9f4423 lib/codeql/rust/elements/internal/generated/GenericArgList.qll b8cd936bba6f28344e28c98acf38acb8ef43af6ecf8367d79ed487e5b9da17cb 8b14331261e49d004807285b02fca190aafd62bfb9378b05c7d9c1e95525fe7b lib/codeql/rust/elements/internal/generated/GenericParam.qll 85ac027a42b3300febc9f7ede1098d3ffae7bac571cba6391bc00f9061780324 806cb9d1b0e93442bef180e362c4abc055ab31867ff34bac734b89d32bd82aa1 lib/codeql/rust/elements/internal/generated/GenericParamList.qll b18fa5fd435d94857c9863bbcc40571af0b1efba1b31ba9159c95568f5c58fce 6e70f1e9a1823d28d60e0e753ac8fbbe8deb10c94365f893b0c8f8ea4061b460 -lib/codeql/rust/elements/internal/generated/IdentPat.qll 1fe5061759848fdc9588b27606efb1187ce9c13d12ad0a2a19666d250dd62db3 87dbc8b88c31079076a896b48e0c483a600d7d11c1c4bf266581bdfc9c93ae98 -lib/codeql/rust/elements/internal/generated/IfExpr.qll 413dd7a20c6b98c0d2ad2e5b50981c14bf96c1a719ace3e341d78926219a5af7 c9a2d44e3baa6a265a29a683ca3c1683352457987c92f599c5771b4f3b4bafff -lib/codeql/rust/elements/internal/generated/Impl.qll bdc3da08b23ab098e92927a57c2e99eeb78ea8561cf11accc51db3033492b500 4b45be6b0c51f03999619705104574d78c262ed2497921f2ca8696844b17addc +lib/codeql/rust/elements/internal/generated/IdentPat.qll fe54beb3fcc87ec1842a7dd9155383bc727e37564b367d750a70cc1e43591bee 05e5daa38fdd131d76fc4ca028b5dcfd28581649333381bd902615342e034c8b +lib/codeql/rust/elements/internal/generated/IfExpr.qll c4a956006c5918eb7bf27d141e5a579b4d215c81eb8a19cf01d28f80a750f4cd 76a2e0f0b53787c148030a9a7a21ffae45be1443cc05e6bedaac5ca8b66fa7cb +lib/codeql/rust/elements/internal/generated/Impl.qll 5c7fa64799818d08e29498adde1bcbb9a79a9f62ff75b69df5fb429d504c7141 a289f2e9de212957cd9fff00c5083bf19cb05a7af0d8a43bfb88580e17bc8f05 +lib/codeql/rust/elements/internal/generated/ImplRestriction.qll d74591e8fa8d164207270766c2d7cbc3ecee42cf69ac9401bc6343a038ad9429 eb6fb67bd66d3a04f483b9291ae8a876ff71b627b127f44bdac40ab3008eeabc lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll e376a2e34ba51df403d42b02afe25140543e3e53aaf04b9ea118eb575acb4644 dc3a7e3eac758423c90a9803cc40dfdf53818bd62ee894982cd636f6b1596dfc -lib/codeql/rust/elements/internal/generated/IndexExpr.qll cf951fc40f6690e966b4dc78fa9a6221aa5c6cade44759dcb52254f799292d11 1572e71918cc4e0b7e028331b6d98c9db23100a3646cd3874d1915e06ab6211d +lib/codeql/rust/elements/internal/generated/IncludeBytesExpr.qll 9a047dabc395b00509b457dc86a0029f10272a1ce3a6b2194a7391ca7beba0fd ca929e0686255d4e860fb80c33e5ba580e0083e61b12ed3819394dff14d6b46c +lib/codeql/rust/elements/internal/generated/IndexExpr.qll 717c7fdd3965e9ae3c97fd2950a2e74a475e1b6ec27aa2f3c31cffe085e897c9 a722686016736f008207940e5206dc041cc270ef6d47144578abbf9d2836e60b lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll 4f101c1cb1278e919f9195cac4aa0c768e304c1881394b500874e7627e62d6c4 dca3f85d0a78ecc8bf030b4324f0d219ffff60784a2ecf565a4257e888dea0ff lib/codeql/rust/elements/internal/generated/Item.qll 03077c9d2f3200ebbc5df5d31f7d9b78a3ae25957ac46899a19a93684b2d7306 6492e341b9d9270c0181da0a5330f588238ced81657041ad1ad343db2bdf210b -lib/codeql/rust/elements/internal/generated/ItemList.qll 1571a3ab0f2c7c0d8384549f8eac7f6e6863c42f3ec5d5ea5e01fc26b9f1056f 7b2cade995505f214df9bb2d73143a28b2499f76d88abc56ae8fcc59bf709204 -lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll 0cd628f043ee5d693f602d91cd6d4e3e889beed905d84ae215be2ce0988bd2a9 4fa22e86456df225c14ae10f6c0d2509447efed81ef7bc98a88c61b0f06c1a1c +lib/codeql/rust/elements/internal/generated/ItemList.qll 50ec7cf624f0b785d2a8ffbf4284f1ed4aa0eea6a8c462d58ad96a0e8f89f8d0 ba35994d3203d638407eb08c21481836380d90290a3c2b58cbcf4951682ca22b +lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll 6e1cd898cb80b7abfe3e64ce232b60aa0efc134722c4eb9150d4604e139557a9 d2da54005a3a266594b01cbbab85aa999d99f7a69cdd55627707bea2fbdf9f72 lib/codeql/rust/elements/internal/generated/Label.qll 6630fe16e9d2de6c759ff2684f5b9950bc8566a1525c835c131ebb26f3eea63e 671143775e811fd88ec90961837a6c0ee4db96e54f42efd80c5ae2571661f108 lib/codeql/rust/elements/internal/generated/LabelableExpr.qll 896fd165b438b60d7169e8f30fa2a94946490c4d284e1bbadfec4253b909ee6c 5c6b029ea0b22cf096df2b15fe6f9384ad3e65b50b253cae7f19a2e5ffb04a58 lib/codeql/rust/elements/internal/generated/LetElse.qll 9e6f7057b8cb7d37b0ea79d540520028febe017ed8e9def95927ffa3fcdc1af4 3ee7d344d718898f25eb2a7a646d3c6704e8f1f22b83d0c0ea727cff74161946 -lib/codeql/rust/elements/internal/generated/LetExpr.qll 5983b8e1a528c9ad57932a54eb832d5bcf6307b15e1d423ffa2402e8a5d8afa4 8a6affdc42de32aa1bfc93002352227fc251540304765e53967bab6e4383f4ae -lib/codeql/rust/elements/internal/generated/LetStmt.qll 21e0fadccc1e7523ef1c638fc3e2af47256791eff70d1be01a9c377659ee36ef 21ccb4821bdbde409f17ae96790e395546d6c20d2411fccf88bad6ef623a473e +lib/codeql/rust/elements/internal/generated/LetExpr.qll 68f90572f7e188be82882d2036451de306d87aa171b0cc80eb3679efc3bcc932 360866bc8b38ab59ef4adc4876f2f7d972b4e4bc10bf93408af2e7c99f610063 +lib/codeql/rust/elements/internal/generated/LetStmt.qll 4adb65dbf4b930bc2404937152e6dce7dd2b456e9c9f000be1cee665c674cd11 71e4ab3172a330835e27dc3e4111ce13f69abc5f3558f01e6267134928b832b7 lib/codeql/rust/elements/internal/generated/Lifetime.qll 2f07b2467c816098158ed5c74d2123245fe901d0d1cca3ff5c18d1c58af70f4e d0ba493bc337a53fd3e7486b1b3c9d36c5a0b217d9525fc0e206733b3ed3fa74 -lib/codeql/rust/elements/internal/generated/LifetimeArg.qll 9e2378391fb130513972176ee2aa033e9fd1a55f1d4253da2d646317e33fa0fb 8168f867666e8e2bba994c7a025cd101907a4e870dc374b93ec0e55bb1bd8b4e -lib/codeql/rust/elements/internal/generated/LifetimeParam.qll 62ad874c198eac8ae96bceb3b28ad500f84464f66302c05f6a53af45f0816c82 386362c79b0641061655b3030ec04f6b80a4ef508e1628eea46a8836acada943 -lib/codeql/rust/elements/internal/generated/LiteralExpr.qll f3a564d0a3ed0d915f5ab48e12246777e4972ad987cd9deaafeb94cf407b2877 2337c3d5f60361bd10f6aeca301e88255f5dffb85301cf36cbbfa1a65bfad1cd +lib/codeql/rust/elements/internal/generated/LifetimeArg.qll 479f82ecbc9a295afb047e4d52d53f816c455b8c526197adf99f4745d67d28e5 9548e850b7f3e14954d0d7139cf4f6913200b3dd74a210627a8512032eb9bf15 +lib/codeql/rust/elements/internal/generated/LifetimeParam.qll 89ee276680c54dd83e68f06e9dc4439b22b781052000c96273c23362f7a6f8e6 c1f4cd01ae225d406cae6df3f800fc7b04dd00802de9476f8e77721ac778932a +lib/codeql/rust/elements/internal/generated/LiteralExpr.qll 94cc039b4f41e5e037bd24e849d3b550c8a0ff2022e88d5696c2f6c4a6b83caa 314b41fff5e243c99bff82d373cb3092f9175bd7451d2251a3b64a8d1f880279 lib/codeql/rust/elements/internal/generated/LiteralPat.qll f36b09cf39330019c111eeaf7255ce3240178342d0ddaace59dbfee760aa4dbb d58667cf4aa0952450957f340696cb2fd22587206986c209234162c72bdb9d9a lib/codeql/rust/elements/internal/generated/Locatable.qll c897dc1bdd4dfcb6ded83a4a93332ca3d8f421bae02493ea2a0555023071775e b32d242f8c9480dc9b53c1e13a5cb8dcfce575b0373991c082c1db460a3e37b8 -lib/codeql/rust/elements/internal/generated/LoopExpr.qll db6bc87e795c9852426ec661fa2c2c54106805897408b43a67f5b82fb4657afd 1492866ccf8213469be85bbdbcae0142f4e2a39df305d4c0d664229ecd1ebdb9 +lib/codeql/rust/elements/internal/generated/LoopExpr.qll 99d0e55c574ea81ff2433bbbb37e0edc92b992fdb4662045139f9a8a294b2c85 41114f3992c453517d7a0dd0a7ada308d2e15e8f5e0f2da86ff5e7635f5844bc lib/codeql/rust/elements/internal/generated/LoopingExpr.qll 0792c38d84b8c68114da2bbdfef32ef803b696cb0fd06e10e101756d5c46976c 111fe961fad512722006323c3f2a075fddf59bd3eb5c7afc349835fcec8eb102 -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 -lib/codeql/rust/elements/internal/generated/MacroPat.qll 77af514f2e8b068f6428075bc6c759df5d52f0782f2fed90c3fa3e532871b4b6 27cda2ff01c0e7b8d27a5b3c4fc41947c3457a035833ad39e25913ba696c8ae0 -lib/codeql/rust/elements/internal/generated/MacroRules.qll 29d7f9a13a8d313d7a71055b2e831b30d879bdc1baa46815117621a477551dd7 9bd09859bfbbce3220266420b6d0d2cf067b3499c04752bff9fddc367da16275 -lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll e82e49cfcb5ee010e241b1d2ec9a13b1b741b545f392ceeab11b28d0925c7a84 cafd02b27d80fa734234341dedd63a6595b0408ec086fb3ba37a6b53fcce5b3e -lib/codeql/rust/elements/internal/generated/MatchArm.qll f8c4c955c50f8398159c492d9d0a74f7b71e9510fcb8a3aab1d06e0f7e15b263 713939c7ef77ca73d95788096163c26213ab49f34ed41c6f4bc09a1ef9607b0d -lib/codeql/rust/elements/internal/generated/MatchArmList.qll 12d969ecb267a749918e93beda6ad2e5e5198f1683c7611772a0734a2748b04b 9226ff7cadcab4dc69009f3deeda7320c3cee9f4c5b40d6439a2fe2a9b8e8617 -lib/codeql/rust/elements/internal/generated/MatchExpr.qll b686842e7000fd61e3a0598bf245fb4e18167b99eca9162fdfdff0b0963def22 00f1743b1b0f1a92c5a687f5260fda02d80cc5871694cad0d5e7d94bac7fe977 -lib/codeql/rust/elements/internal/generated/MatchGuard.qll 58fa1d6979ef22de2bd68574c7ffcf4a021d7543445f68834d879ff8cee3abcb 072f22a7929df3c0e764b2a770b4cdf03504b3053067d9b9008d6655fb5837e1 +lib/codeql/rust/elements/internal/generated/MacroCall.qll a5dec6bd770884845b41539c61df8084a1ea24255e68077db8506275c76c9c97 292a5add471407e33d2a449f7b52b92db09a7148596437dc1d152deccd41095f +lib/codeql/rust/elements/internal/generated/MacroDef.qll 9f57e22747469747eaf6d4b7e93e3e50abc26a11cac143b1c7bfc623dfa54050 ff5fc2fed898ac98af7d0bbe701e6c03d627d2a4b54e98e015cb64ed21f2afd8 +lib/codeql/rust/elements/internal/generated/MacroExpr.qll e36596803028408a76591e2ed6309aea8e5740105d6924029b1e74a6bf60efa0 34aa8c478f72c415a601d672c95f4e26384225a61e1f07b8f08d63cb4e4dc9d4 +lib/codeql/rust/elements/internal/generated/MacroItems.qll e641c26572c1b517b8f068cd76737b5f92f89f5015763e379e39d86b8f6440cc 4055ba4210bd96a4840601a260b6db50b9598eeef8a7650e5350fa28f84341b4 +lib/codeql/rust/elements/internal/generated/MacroPat.qll 5c044c3cfc984e71902b7326c1f8b06a629863c80b61c0574022e905dfaa5f35 d12f30547b3eb264d0baa2ab284b394221f6c5363dbe6b2fe51e3bb557e1d057 +lib/codeql/rust/elements/internal/generated/MacroRules.qll cd528d00634ae4fb4d2b030393f50bd6fd73c6165ada1bb6fc60c5dafb259a22 f05bf6bd8e05d411c98b440b333539acfaf9c37fd7ea03757fe7719f444de0fe +lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll 747b614f532651bc890390a7ab1431b4892c263695e44a050e528232655f56ef aebca14e28277d92a1c0e8f15a57ea1d2e82121e9d13fa33f949041211695e89 +lib/codeql/rust/elements/internal/generated/MatchArm.qll 8d738b8fa2d853c020fad6c51c75e226e3f68eb510feb8cbd21af7978c02ef66 950523d6346e032d167fc454173b2a6c616dc2a976d4d76b821fba1dbc69ff5e +lib/codeql/rust/elements/internal/generated/MatchArmList.qll df52c5f2b2d49f88e4e7d267446729984abc3ed1c94d6a10905f7ea442e7cc48 8e594c1b253eb2c4fee9dac8c70acb9b39e00c6ac4ef7632faee001ab22e2609 +lib/codeql/rust/elements/internal/generated/MatchExpr.qll 50214d0a7307165407b2606ffa998a201a2d661b48e9c1b0844452c3c8961a63 9275c78d25857d13622fd7d5ece13e2c89c4c32dba03b4a51ccd5ae8e10648d7 +lib/codeql/rust/elements/internal/generated/MatchGuard.qll b789fe3b0e78ee21b6712b5ec3eb97388ce04441469b7db63aa795b046daaf57 64a90af32944d6f4a8680a0cf87a78fa9bb60a2fcf16ec22717e81ed1bb69337 lib/codeql/rust/elements/internal/generated/Meta.qll 5c3358c737d504dacfa3227b80ceeead3cdeebbd7498d1d0ac88570cac1d91ec cd04ebdf19cf6710ce43e888211e61b0740aa6298db9a5ec79f29a1301a60b40 -lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll ffce98a6a1921822b12ead721cff0878553eb3e049c5d2184a7abce32b6615b4 d1408a0f47ee5764fe7b484494daf6e1f99b1c6a505274c48545b3e650ef8baf -lib/codeql/rust/elements/internal/generated/Missing.qll 16735d91df04a4e1ae52fae25db5f59a044e540755734bbab46b5fbb0fe6b0bd 28ca4e49fb7e6b4734be2f2f69e7c224c570344cc160ef80c5a5cd413e750dad -lib/codeql/rust/elements/internal/generated/Module.qll ebae5d8963c9fd569c0fbad1d7770abd3fd2479437f236cbce0505ba9f9af52c fa3c382115fed18a26f1a755d8749a201b9489f82c09448a88fb8e9e1435fe5f +lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll 72cbbc38170ad277f1b316ef2ce2ab4467ea7041f08eb6294f96ce60becbbf86 21892aa6d343678fe2f51841a16d57c40fad63f4d12b087dcd325bca5a7d94c5 +lib/codeql/rust/elements/internal/generated/Missing.qll 1810565cc670fadb5724bb93dd17363e107c79334c5dbd98bc85fda1b2be8b10 e9c91ba13715af0e6390e9d121523d622702bc569f8a148015a0d4e6f0488230 +lib/codeql/rust/elements/internal/generated/Module.qll 7837f4deb3d95d963be20500c25c2d11c6eda6ecc0936d421581628602044b33 666e2b1505552df6da3b050e479e6e3a49eb791281dab8b0ed934f32228ac0e6 +lib/codeql/rust/elements/internal/generated/MutRestriction.qll 01fe01b18327c05e76d94c448b8c124811171252fbfde0ea2f9a0988af1483c6 95695424b50bde72bc50390d6739a7acefe0396207e2914f47d7f7258073c37a lib/codeql/rust/elements/internal/generated/Name.qll e6bd6240a051383a52b21ab539bc204ce7bcd51a1a4379e497dff008d4eef5b4 578a3b45e70f519d57b3e3a3450f6272716c849940daee49889717c7aaa85fc9 lib/codeql/rust/elements/internal/generated/NameRef.qll 090c15ed6c44fc4f1a7236215f42e16921912d3030119ac22bc7ffe2dcdb4ba8 b61cc486e6764272c4e8377523bf043d0beae4926606dbcb48f8205c6a0b9a90 -lib/codeql/rust/elements/internal/generated/NamedCrate.qll e190dd742751ea2de914d0750c93fcad3100d3ebb4e3f47f6adc0a7fa3e7932c 755ead62328df8a4496dc4ad6fea7243ab6144138ed62d7368fa53737eef5819 +lib/codeql/rust/elements/internal/generated/NamedCrate.qll 058d4c396383e19c5ce3b7835f2d76d477eedfe6771acd076f0d4b87cda2437e b5d44e4b31dc4fef46ec1219e6134d5d66df0512214b516ba1bfc9c0f024878c lib/codeql/rust/elements/internal/generated/NeverTypeRepr.qll 4f13c6e850814a4759fdb5fca83a50e4094c27edee4d2e74fe209b10d8fb01c3 231f39610e56f68f48c70ca8a17a6f447458e83218e529fff147ed039516a2f7 -lib/codeql/rust/elements/internal/generated/OffsetOfExpr.qll c86eecd11345a807571542e220ced8ccc8bb78f81de61fff6fc6b23ff379cd12 76a692d3ad5e26751e574c7d9b13cf698d471e1783f53a312e808c0b21a110ab +lib/codeql/rust/elements/internal/generated/NotNull.qll c78815961df086065fd140a55b1eb7eff883940c8b31dcd79341e3f9f035423b 4b7cb75c48b791f8b8ca5e9144bdfd97ce59a207c2b8ade1da7b97fff2311134 +lib/codeql/rust/elements/internal/generated/OffsetOfExpr.qll a45aae00d59bfb99e02fad638b4acd62b5645bd2cd87617ff4af79e75e586a5f 67a6a01fba661521e1891f3faf89b64446574e5b698ccfc207e34e438d686345 lib/codeql/rust/elements/internal/generated/OrPat.qll 0dc6bd6ada8d11b7f708f71c8208fc2c28629e9c265c3df3c2dc9bea30de5afa 892119fc1de2e3315489203c56ee3ed3df8b9806e927ee58aa6083e5b2156dab lib/codeql/rust/elements/internal/generated/Param.qll 19f03396897c1b7b494df2d0e9677c1a2fc6d4ae190e64e5be51145aba9de2e2 3d63116e70457226ea7488a9f6ed9c7cea3233b0e5cab443db9566c17b125e80 -lib/codeql/rust/elements/internal/generated/ParamBase.qll 218f3b821675c0851b93dd78946e6e1189a41995dc84d1f5c4ac7f82609740f7 4c281b4f5364dab23d176859e6b2196a4228a65549e9f63287fa832bd209e13d -lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47ec556cc05c30a0666aece43163cf5847789389d05bf a08d09d0d3dfca6f3efade49687800bae7e6f01714ed0a151abd4885cd74a1b6 -lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb +lib/codeql/rust/elements/internal/generated/ParamBase.qll 1923276ebdc2dee2a469c905b7816910bbfd32a5938bd363f500dd5c780899a8 5058ee451c0e5c3030b9673130d7766e16a4cdd6e02002a3abb67a79a41dea6c +lib/codeql/rust/elements/internal/generated/ParamList.qll d8e73957983491302faa560ba0756f125dec0b310d59def54d4763408e1b81c9 701fa4e1364478617b2f73c9d86bdba6f4a6c04f58208b9ed35a388f11e11938 +lib/codeql/rust/elements/internal/generated/ParenExpr.qll b978629328318874e4e7044dc0ed07ee44f96f426e06848e7a3ea499f2b99f9a 84a1ba59e38460bd16d82881f409084ea35fa55f2f1c52296c510abf3694076f 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 824b272f2fa77353b0d67ea66b13292dd14091f1a68411bb4be506dcbad0226a b9d7fac552163dd522b5a0ff19a11b035134a58f236415db6e3d599c6dbe187e -lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb +lib/codeql/rust/elements/internal/generated/ParentChild.qll 537a7b27ad1e626ce858460a2c843d0721abd81eb276a26bab66c6f650f26a0e 31c41a4ea3b32d391c6fad3d4d9332e7c4b5fdf30eea5565e1005868358a6aef +lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll 4e85b4bcabdbde71602d557fa0dd5ccbab09d2360d2bb470384cb85437e1611f 688af26f360655ee6454fa45b3169cc9db6ed46d8f58c2470111703e1e7a117f lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd lib/codeql/rust/elements/internal/generated/PathAstNode.qll b02654422f80e398027069135bb01205358f0ab82ded3408d83d066f300996a3 345e7f92a75bfc71657b223602f60c36f7637d6f2e3798f07e2d2926eea2431b -lib/codeql/rust/elements/internal/generated/PathExpr.qll 34ebad4d062ce8b7e517f2ab09d52745fb8455203f4a936df7284ad296638387 ba66781cdbdeb89c27a4bfb2be0f27f85fb34978d699b4e343446fb0d7ad2aa6 +lib/codeql/rust/elements/internal/generated/PathExpr.qll 3ee0fe021b0586d977a9ff8c1e0de6d7293d5a6fa2a8def92c3ac2bb3a4974f3 f04473f93ac306c14b32aa4bef63e112092ad9236b6294f057bac4e2bd3ff2c4 lib/codeql/rust/elements/internal/generated/PathExprBase.qll d8218e201b8557fa6d9ca2c30b764e5ad9a04a2e4fb695cc7219bbd7636a6ac2 4ef178426d7095a156f4f8c459b4d16f63abc64336cb50a6cf883a5f7ee09113 -lib/codeql/rust/elements/internal/generated/PathMeta.qll 42cf084a78acb656a86a6a9b3cd893b93176a6ec9fc989a0232f01cfa3cbd228 cccedf3ca1e353d55979354b0baa23d936890ae9581097cfe4b44748ca797f18 +lib/codeql/rust/elements/internal/generated/PathMeta.qll 9e47ae77903bb2bdf1fa7f130ae45e444b0847722a22c7b5edaa8bdd1ae038df a80c417c5df58d944504ca8657fd6066cbf84939a70840bc813b6b41d138ee04 lib/codeql/rust/elements/internal/generated/PathPat.qll 003d10a4d18681da67c7b20fcb16b15047cf9cc4b1723e7674ef74e40589cc5a 955e66f6d317ca5562ad1b5b13e1cd230c29e2538b8e86f072795b0fdd8a1c66 lib/codeql/rust/elements/internal/generated/PathSegment.qll 48b452229b644ea323460cd44e258d3ea8482b3e8b4cb14c3b1df581da004fa8 2025badcfab385756009a499e08eecc8ffd7fa590cd2b777adb283eebcc432c6 lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll f12fe234d7fb1a12678b524434fcdd801453d90eb778b9173f7197ff3d957557 a1be605f8937c5bd3a3a9cb277782c24446c9f5ef8363e6f5ee8f6229886b6f6 -lib/codeql/rust/elements/internal/generated/PrefixExpr.qll c9ede5f2deb7b41bc8240969e8554f645057018fe96e7e9ad9c2924c8b14722b 5ae2e3c3dc8fa73e7026ef6534185afa6b0b5051804435d8b741dd3640c864e1 -lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf4b91ecedad3ed217a65d8be48d498f2e12da7687a6d0 6f74182fd3fe8099af31b55edeaacc0c54637d0a29736f15d2cd58d11d3de260 +lib/codeql/rust/elements/internal/generated/PatternTypeRepr.qll 6d11342c39915b5173cf735957af0e3f92398f22b6bc189bfbcdc46851d4d33c 3ef6765f7dfb39c2280aeec4f15f42e4056d2d6644a279a8726c43feb28a9a38 +lib/codeql/rust/elements/internal/generated/PrefixExpr.qll ad0d828228907deba302c11ec8adfe675fa262fa3edf594ed856b20436de1bfb b8d0c0d3ada47e86e3d896b0c24caa586c096cea38bfd5ac18b1a2b8c48dfaa2 +lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll d7a400b238d7edf2b46596dab12e61add04e4930c9fe40c6b7de6d29fe3e3155 914d3b3a80823d2965664b6d4dd161598424d5477f7a1c7f872ae4894896430b 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 7efb0d7eed991188cb4cc4e22f87cf00df623ffb44dd161c6bfbd79ae3af8bc6 8c010280303cc356f3cc66789796a693e0a1ea8401cbbcc4f0c676b825b21060 -lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 +lib/codeql/rust/elements/internal/generated/RangeExpr.qll 7a1ff277e5e8a6731d6cb664a09da07cce2bd6ca3541008b381cd5a5a636a15f 2a9d51363a1a55a080d39575c623ba11cb0f259c04f40351fbb5b89358b31aa6 +lib/codeql/rust/elements/internal/generated/RangePat.qll a0c805eb31a773e16806384bd11592563c61b720e694bd444b93c28b5cf00d65 4b82088a62e7e5027f5930a697a18b5d4fd2a831a7bb6123d1b3f8ff4a9255ea +lib/codeql/rust/elements/internal/generated/Raw.qll 8aa72bb0695b99843411106a2e433bc2063383b5762634cf310d478b2677a0a3 5ced366f89dc64c9ce347166f2932656d56ba8e8ce2f17c01c446b157905d0bb +lib/codeql/rust/elements/internal/generated/RefExpr.qll c7b711ac05f7fe8fb97b81b09e794e7756141570265e3a995e40e7c79bb2b49d 11b572508c010e79a7edb0f1b349a4ea3e2fc68f6d7bc3f38fbeacf0c91d68e2 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 -lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b -lib/codeql/rust/elements/internal/generated/Rename.qll 53dd50d35aa38cb6eb4174c94e8e23042b42bdc4f38df009489ebf707380483b db14fbce0d95b4dae3d7512f9bdee92e0dc2dffde5ba5d7458f2f5dd632876b0 -lib/codeql/rust/elements/internal/generated/RestPat.qll 369f5828bb78f2856d528679a9869f81859b375c2f831ff72f4507daaee976e3 17f24ce8aa6a27359c10a654667b7877ca7a1509509e2ab246ed26fe15ef66b4 -lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll 853b7fd6c1f3678d0f9315ac23a99a0828a6e54148de24016a265039c7b1941c f1e140d2b113c494601143b735482869ee817c8a7d92026f6a511bc5c1420552 -lib/codeql/rust/elements/internal/generated/ReturnExpr.qll c9c05400d326cd8e0da11c3bfa524daa08b2579ecaee80e468076e5dd7911d56 e7694926727220f46a7617b6ca336767450e359c6fa3782e82b1e21d85d37268 -lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll 7b7692ca9fbe627afa0759050a740f0f42a8083446c1c3196084f5698fc570c3 96a735d60a3919c7c994f7b67930c9e51a3713940678d04a5fee54557d733c24 -lib/codeql/rust/elements/internal/generated/SelfParam.qll 076c583f7f34e29aaaf3319e9d64565a34c64caa5a6dfca240c0cc7800e9a14c 375afed1772d193b71980d3825c4ac438e90b295cba0baf58319d29a3a8463a0 -lib/codeql/rust/elements/internal/generated/SlicePat.qll 722b1bd47a980ac9c91d018133b251c65ee817682e06708ad130031fbd01379b 7e0ce13b9de2040d2ef9d0948aab3f39e5fdc28d38c40bfbee590e2125dbe41c -lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll 6f4f9d7e29784ce95dc6f9fcdf044909d55c7282c732a81b0108dc4000e96b48 a188436cd6d4d071fd45b943d9778e46ee9a465940bdd1a2903269b4b7a01e21 -lib/codeql/rust/elements/internal/generated/SourceFile.qll 4bc95c88b49868d1da1a887b35e43ae81e51a69407e79463f5e8824801859380 5641581d70241c0d0d0426976968576ebbef10c183f0371583b243e4e5bbf576 -lib/codeql/rust/elements/internal/generated/Static.qll 1a6c87d3c5602e3d02268ebe2463a4ac64614ad25e8966a9bdb9c0ef58991365 cc1fe16d70cdce41a12e41a8f80cc38bdd7efa49c1544e35342fcf3cd26b8219 +lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll fbab8bae4d3eac10338a9bc5743f3ac9c0feab11107d6d28825f4e97bcd59bad 224f6aec466ddcde526ce8df23d2f925887232b462730af078815a68b47c133d +lib/codeql/rust/elements/internal/generated/Rename.qll dcc205cf6a1cbceb97c363379ecf67d7640ed992a73af4597ecabd2b65dbe898 7794510d6594d289a6fa655f8618fa7ac4c0667158afbc236590248e1f0cbad1 +lib/codeql/rust/elements/internal/generated/RestPat.qll 79a20b2ddf13fd32d744614dcc6a952f9d4a9fb528c1c312fba49ef103e19704 a0b1acda14c8404f67cc0ec80cc42d40aae3d48e3bdce62c6bb24037095a4d14 +lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll 7e60c74c696cebe3a9fb6bbed28bb3446ae0804b2177ed5613892762f17fb684 80be5ba25f852ad54daca4a4c24df1b09cb3d501bdc02afafe1c0ef2f9644efe +lib/codeql/rust/elements/internal/generated/ReturnExpr.qll 52a062c7d71a8cc868048302e5ba14bed85f3c6d5cbdfddce189fbf4645e9102 c622015d79619079f56e811f345bfbd8759936c516e9584744663a40f45b5497 +lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll 3c2eee8dceae1b28dbee1b64ed2db6a932227dd9581eed089d68e8882eff4db0 a9f942ae7839954927239a842832592920754b510f12ae16057f6a2a0c561bf5 +lib/codeql/rust/elements/internal/generated/SelfParam.qll 9c85961392d3d36f7dfdde1311a17962b0eeafb64e9e748b580abed2c4a49ad5 da6f438bba6e1e97cbd4a16bb5bf07defe75023c38280fd7160367de1899141b +lib/codeql/rust/elements/internal/generated/SlicePat.qll 457281f265db001f59cb7fdb518a58406981114642d003ff9bf555f4d59c5a34 8256531d5a4a16d083601fcc0d3d3accccc631562e5948b26ae2b0111dd19c6c +lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll 15e720c364638c14fad9dcca4f6627572423718189678c7252a462400cebd56e 7bafd93d6ec9e1196917becd6679778e552f5bc3d58537801071f957d77e61ba +lib/codeql/rust/elements/internal/generated/SourceFile.qll 3080dd8948cf1752819cf9168b003479d5733088e9ae426b1180fd8baa34126f 56fc68a8e9e64592a8cb6b2cdef15a8474d4f016a98c74bde1dee5280672c149 +lib/codeql/rust/elements/internal/generated/Static.qll e5e0c498cc2f484f2f34fc76342bcf3eaba33b4d076fc2780651a4f6f5aa19a5 119c3a069402fc0493efc4004aaa7d13f6335242b9d03a02cba969b258828b93 lib/codeql/rust/elements/internal/generated/Stmt.qll 8473ff532dd5cc9d7decaddcd174b94d610f6ca0aec8e473cc051dad9f3db917 6ef7d2b5237c2dbdcacbf7d8b39109d4dc100229f2b28b5c9e3e4fbf673ba72b -lib/codeql/rust/elements/internal/generated/StmtList.qll 834b87cd93f0c5b41736fb52a6c25fd0e3bdce41d5a64cb3d0810c54e90507f4 ec42f2dfa322044ceaaf90d278f0e7e751d63710facbaf3f5ee69ca3c64ecd06 +lib/codeql/rust/elements/internal/generated/StmtList.qll 6825e8b8b04e001ec8ae1cee416ea7eb240f306d2d586a1648395ec520e620d6 1d65eab64a80356d8a97412a21504df004cc87a71899a85a09be92843ffa2c77 lib/codeql/rust/elements/internal/generated/Struct.qll 56775b98f793c108bd0eb8f35dbbc4983c170138e92c7378c24f45d2e612ca39 7bd83f2686f2f7a6b55b82156028c1951fde4c3ac9fc0248b1bb28f35b949fd4 lib/codeql/rust/elements/internal/generated/StructExpr.qll e77702890561102af38f52d836729e82569c964f8d4c7e680b27992c1ff0f141 23dc51f68107ab0e5c9dd88a6bcc85bb66e8e0f4064cb4d416f50f2ba5db698c -lib/codeql/rust/elements/internal/generated/StructExprField.qll 6bdc52ed325fd014495410c619536079b8c404e2247bd2435aa7685dd56c3833 501a30650cf813176ff325a1553da6030f78d14be3f84fea6d38032f4262c6b0 -lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll 298d33442d1054922d2f97133a436ee559f1f35b7708523284d1f7eee7ebf443 7febe38a79fadf3dcb53fb8f8caf4c2780f5df55a1f8336269c7b674d53c6272 -lib/codeql/rust/elements/internal/generated/StructField.qll 23c5a0b26936582f43b8bb567825257aab29ee8a3d4ff646ca1dff2e3063bf41 163c446ae52519fd77c1108719e014c41caad205b303848782c45fa50b37b254 -lib/codeql/rust/elements/internal/generated/StructFieldList.qll 5da528a51a6a5db9d245772aec462d1767bcc7341e5bedd1dc1bbedd3e4ab920 dac4cee3280eef1136ffc7fbc11b84b754eb6290fc159c6397a39ae91ceeaa13 +lib/codeql/rust/elements/internal/generated/StructExprField.qll 57d2f65527189accc061dad65076faea36285164ae4ba983e8cbc804eae82783 4de4689ea56c1477a7e8df27be6398abf10ec39f22a42d13c4d8064a56665a3b +lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll 599aeb4e8737093743db7477a1b423b61a2f4a53b094bc10df15c9cfd4aa3bc3 4a021e1534ce4c140280bc8d63e87c10b23620f30daaf1d29bf201588d2e310c +lib/codeql/rust/elements/internal/generated/StructField.qll 08fa20cc832a014f78f37079becc64de95d0111f6022bdf0d5a6793167ab7a0f 2041f5bef78d589e5e53daf44e9f11796b40510bd0b5d44ae55a0ac7b49c42dd +lib/codeql/rust/elements/internal/generated/StructFieldList.qll 2abf0688ca9659d205d8dabb98724b656493f4529e54e6d2a83f7073929ed5ef f2542e614e258845325e9103c26d50304fe45d21c4ce0630b52c91c8ce01a3dd 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 f3914d3d346fe9dad959b7c7fa88a791860284c848aaa339b800e521195dde08 87a338c138bc8322ddc34b7a265232be294cf7b0a07944b478b8ee9531841e6a -lib/codeql/rust/elements/internal/generated/SynthConstructors.qll aea619227c640e27d715bf57c00bfde840a31d28addc8baee3b38aeb16bdf721 aea619227c640e27d715bf57c00bfde840a31d28addc8baee3b38aeb16bdf721 +lib/codeql/rust/elements/internal/generated/StructPatField.qll 65fd5e42e0cb513ee2d5179d37169c02fcf91360aa2294a61657892939187b4a df48d60618f3319f544123fc615178689ceff848078bbb7b5d2c4d9f8feb0dd0 +lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll 342ca25fbd8bf8fef84d06e263f59f010e21418658c1f79f40c52e5ce76ca158 c950a39a946904b84a2557fb1febd59906e42e5de4903e88d0da67ba3e14a250 +lib/codeql/rust/elements/internal/generated/Synth.qll 360a0ce21e748dfbb5842548c0b4e7c867c9ec0a4670350b5b0c6a072f0ef313 1a1bfe65be484d44b08c27447b40bb7a31e6011690e5b97f493ac920b7828691 +lib/codeql/rust/elements/internal/generated/SynthConstructors.qll 371d10d1ddae6bf7de8d4760d21d1a550c9b18c86272930a118aad9c647afd0d 371d10d1ddae6bf7de8d4760d21d1a550c9b18c86272930a118aad9c647afd0d lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b -lib/codeql/rust/elements/internal/generated/TokenTree.qll 1a3c4f5f30659738641abdd28cb793dab3cfde484196b59656fc0a2767e53511 de2ebb210c7759ef7a6f7ee9f805e1cac879221287281775fc80ba34a5492edf -lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll 6952cd186e38c4a41131f93754010c8af3c210324d5a8ce3831694aa6be9f2aa 7a23c380fc8aa02c53370e0c68536a7e9fed8aad58185cb0f6110093c3067543 -lib/codeql/rust/elements/internal/generated/Trait.qll 8fa41b50fa0f68333534f2b66bb4ec8e103ff09ac8fa5c2cc64bc04beafec205 ce1c9aa6d0e2f05d28aab8e1165c3b9fb8e24681ade0cf6a9df2e8617abeae7e -lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll 812cc73a945abaa51054e7261daf4dc10912f1e331f202186001ed087a962696 a76457699f3f6bc1373276a0de2f14365e573d34e82fd292c6c9261612c0f17e -lib/codeql/rust/elements/internal/generated/TryExpr.qll 73052d7d309427a30019ad962ee332d22e7e48b9cc98ee60261ca2df2f433f93 d9dd70bf69eaa22475acd78bea504341e3574742a51ad9118566f39038a02d85 -lib/codeql/rust/elements/internal/generated/TupleExpr.qll 98f10bc72d09f98e3be87f41b1a3cbf037f4a7e3d3560dfa6d5759905a8177a5 6a9eb5568c518876b2912371e2b7b774cf5245097c5a0206eda35b749995f00b -lib/codeql/rust/elements/internal/generated/TupleField.qll 121f7b35e28b86592f83e00993f9041acbe7ab636db894d03055149c7f15fd32 b1ba9e1182307a44bb5afc11e92d62e7eb2c819ccdfb28ef54943b6fec676827 -lib/codeql/rust/elements/internal/generated/TupleFieldList.qll e7874518ce353f58312b02fb646f19eb109b3d868f8b550c84b7d6fc3a85fd5a f4bff793bbdbc252688296953116146f5c9a0894e14a7d3e4883a5ac211c122f -lib/codeql/rust/elements/internal/generated/TuplePat.qll 4e13b509e1c9dd1581a9dc50d38e0a6e36abc1254ea9c732b5b3e6503335afeb 298028df9eb84e106e625ed09d6b20038ad47bfc2faf634a0ffea50b17b5805d +lib/codeql/rust/elements/internal/generated/TokenTree.qll 3d855014747ae2996375f05bdaef1dd07464692ea09f47174a92f705a5ef63bb b85fed50862f97bce98fb4cbd3f275b553ef3e8dedf215915736197078867427 +lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll 390121812f4f16753747d1eca17580a16385332e49fa93de89a5a5dc029a3a36 fa1e30306690fef85c6f455f4b51b1b14efd046b862e0160b311469da14ac98d +lib/codeql/rust/elements/internal/generated/Trait.qll 210be3b1552348a94c6ef05d69b389d67734d505a9f0c7cfe621786569aadbe6 7f72b8d3a96e216fcf1ad3b0e03c3684cb6057654e097cafc1aebe46ca4c1a9e +lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll d2ddf8ab5b06d2236acbfef8edade7f669f8a01b2fda2b5c7a2a5821f3cf2075 b8e5d3d057d425508dadb6c620b3e09d05ceb36fdf94dc1276157c6d8c5edec6 +lib/codeql/rust/elements/internal/generated/TryExpr.qll 5b3b2e3a7aa92627a8fc165399cb0f216ae2dd6bce1b18e0c564505736ec0ace 9cae4d39c9b6aa4f500aa5b0daf589ec2946949a2a6e4ff707bc501585017efa +lib/codeql/rust/elements/internal/generated/TupleExpr.qll 4671e41bf6f9f14819859febb89693ac41d1b442460213ee7933765f106c7c79 af129da49edb15f8b6f54a21cd9fa9275b1de3f706f3420aa6294fed7da392fc +lib/codeql/rust/elements/internal/generated/TupleField.qll 0090091ee333a9dfdca4900f94adea8c6b24a75b14e61b29b7d0963301fa09d0 1a36b0e1c9bdb63845af7f3f5b1b695bbca79620cd3934e06dd6f9b1130a8ad1 +lib/codeql/rust/elements/internal/generated/TupleFieldList.qll ef5453baded5c9d7f6f358e096ef0bd67ed3062bdd41e07cbba7495e6f27ea8c e0add270f62a397de4ce53fa207d6ce4e6bbd5229d9cac7ab172b07de1dcba6c +lib/codeql/rust/elements/internal/generated/TuplePat.qll 583d3a449745b81bf1c3c79b85add13067579226b85a7b005561ec55c5ffae8e c454a0b18086c687702d3146776727f15f9c1326c0806d90ff7797d41bc69e75 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 0d0c97d9e9213b8f0390b3456737d4611701a570b9943bb20b348c4efc8e4693 a83c701c0d8914e01517dfa9253a12be962f0a7ed2f75fbaae25a13432db403f -lib/codeql/rust/elements/internal/generated/TypeArg.qll 80245e4b52bef30e5033d4c765c72531324385deea1435dc623290271ff05b1d 097926e918dcd897ea1609010c5490dbf45d4d8f4cffb9166bcadf316a2f1558 -lib/codeql/rust/elements/internal/generated/TypeBound.qll ed27681b76b8f3ad790daad4a08f3bc243452821246bcb240b1d925bc1c362a3 8fdc0caf91f1894d8711d68547185eb029446898b66f60fc0d10ef862cd6292e +lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll f6b0db3882b09b914c98c2c96b249416773bf6509a90028bae14dabc2194ad21 66fd831c7a75fd28cf374d8c89069861b69140baf9c912635a3e18d23c9e8414 +lib/codeql/rust/elements/internal/generated/TypeAlias.qll 3ce9173a983ca7131591fdc3abf0f30adcac10bd22e36851b91114f9f32f59a1 97b9b3f3a74805ef27870e43509a69e5efb9b154019f0759b566025d0a06e19d +lib/codeql/rust/elements/internal/generated/TypeArg.qll 87f9aa99436eacc911d3cd52b3572a940c6fa291ab3e61cc9ef8477546d4caa1 f0a45180180871aa629e81ea63ffaac0966f2f1c333a7e0bac3a6ad043629be8 +lib/codeql/rust/elements/internal/generated/TypeBound.qll 80863e417e974265101a64401e70537c3377b324fb85d0efba6c8bd51b7a5b93 5da768b567e354be82919d213e3d860d06a6ed769d72974259820fccfb09118f lib/codeql/rust/elements/internal/generated/TypeBoundList.qll c5d43dc27075a0d5370ba4bc56b4e247357af5d2989625deff284e7846a3a48b c33c87d080e6eb6df01e98b8b0031d780472fcaf3a1ed156a038669c0e05bf0a -lib/codeql/rust/elements/internal/generated/TypeItem.qll 940b197a06b11621db980ae8ff8c0c6684cebeff62987ad8267f3838aa768d0a ab0e3b6e23acd1970ea4e2a32bef3cced27072ec9c5d16428626ec2632b33d14 -lib/codeql/rust/elements/internal/generated/TypeParam.qll 81a8d39f1e227de031187534e5d8e2c34f42ad3433061d686cadfbdd0df54285 893795d62b5b89997574e9057701d308bea2c4dca6053042c5308c512137e697 +lib/codeql/rust/elements/internal/generated/TypeItem.qll 6e2733ff2d3e1403efa4d46db2a4cd229ccddfb4e50f2bd0ae9c9ed018d7bb62 8cd3dec69fe3e88886303748f51247915068b499234f5c7acbb77512dbf49172 +lib/codeql/rust/elements/internal/generated/TypeParam.qll 2fbfba8adae62bd8f73abd0d93381376c4a496d2e04409ff30465b711b506315 d540d7e0c85943e692d229b2f38d5f116b7ad0c11a76a9ef520d96d75f3ee9d0 lib/codeql/rust/elements/internal/generated/TypeRepr.qll 1e7b9d2ddab86e35dad7c31a6453a2a60747420f8bc2e689d5163cab4fec71bb eb80e3947649e511e7f3555ffc1fd87199e7a32624449ca80ffad996cdf9e2f3 -lib/codeql/rust/elements/internal/generated/UnderscoreExpr.qll b3780c99c5d57159bef4c6bd2fd8ec44ebd1854c892c1ca776c740f71249e58c 2fd451cbf0a779e8042e439882e7d9cadc19d1e596df3bbb086d16f2596407c7 +lib/codeql/rust/elements/internal/generated/UnderscoreExpr.qll 6f60133a61d099449bf268fda7941f016e16b9b1c52d6239720df87a8245bbda 3e5d7cb1ed0755f74482127317569881df09aa131e9a61cb032587dbc3442f47 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/Unimplemented.qll 7f81857a0a4e993697cdb05fa7ef16d041fff9e5ed491e34102b846cfa12434c fba05d2e35cc04ad2fbbf34d92af8db85f5d518dadd0e484bef2f7dde5f8490a lib/codeql/rust/elements/internal/generated/Union.qll 4df8fc632f7bcc0cbd564cd1c148c1a2438f26e6a83cd6470e15870120f677fe c74dea0a4ddfd581b9208d7907ea134219cafd217294315acf5c595de38a61f3 -lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll ec5515798be2395a1256460d9272fe023bc604d952eba5d18e13d3e43fc801ff 3ece9a326a7c91d49395e3dc6687a38e2e2736cc20e4b7c534eb7a4e73613264 -lib/codeql/rust/elements/internal/generated/Use.qll cf95b5c4756b25bee74113207786e37464ffbc0fb5f776a04c651300afc53753 1fe26b3904db510184cb688cb0eeb0a8dbac7ac15e27a3b572d839743c738393 +lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll 4ae970d7db0093a1ecf82f429cb307b38327b618d3a3eddb70b4ec650d58f6fc 2fb1ceac4b60218e55240d30f1ecaf950a4697b49680b2787618bc5a45530e67 +lib/codeql/rust/elements/internal/generated/Use.qll 124d3af15c56aa62b98bf365350df6571a898b133b5690a304ae7a808254d42d c0d514e7c3def97239bb1e9e18324cc1022f5dd6e9ab20476ec37ec7a7bad747 lib/codeql/rust/elements/internal/generated/UseBoundGenericArg.qll 69162794e871291545ea04f61259b2d000671a96f7ca129f7dd9ed6e984067c4 31de9ebc0634b38e2347e0608b4ea888892f1f2732a2892464078cd8a07b4ee8 -lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll cedde7ccf689e3a2a246113be94544c206c56fb1c01b83b074e1f6edd3acfced f022ea4c653d1b5f311917efde8e59be27394ce7f6abf2561bb1e42f93f74adf +lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll cdf4253b51aa9fb1639089f73f17640f1732e099644d7e8c5f527b5b04175b52 228df08b8597069d7b11aa6b03b35e0d749d32802eb4d2239ba8dd22def5f0e6 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 7a1aedf6518780d1534147d5a52d14542698befe1d8eb8b78eb10d2664c3a69b 180d6de0826b1a75bf8b1853d539f605bff2eb3794ccb57ff23e5b3ee3171956 -lib/codeql/rust/elements/internal/generated/VariantList.qll 3f70bfde982e5c5e8ee45da6ebe149286214f8d40377d5bc5e25df6ae8f3e2d1 22e5f428bf64fd3fd21c537bfa69a46089aad7c363d72c6566474fbe1d75859e -lib/codeql/rust/elements/internal/generated/Visibility.qll af1069733c0120fae8610b3ebbcdcebe4b4c9ce4c3e3d9be3f82a93541873625 266106bdff4d7041d017871d755c011e7dd396c5999803d9e46725b6a03a2458 -lib/codeql/rust/elements/internal/generated/WhereClause.qll aec72d358689d99741c769b6e8e72b92c1458138c097ec2380e917aa68119ff0 81bb9d303bc0c8d2513dc7a2b8802ec15345b364e6c1e8b300f7860aac219c36 -lib/codeql/rust/elements/internal/generated/WherePred.qll 73b28efc1682bf527bdc97a07568d08666d61686940400c99095cb9593bc8df3 2ec1fb5577d033c120d31f1620753b3618fcb7f384a35a6d3e6b5e0bb375a8a5 -lib/codeql/rust/elements/internal/generated/WhileExpr.qll 0353aab87c49569e1fbf5828b8f44457230edfa6b408fb5ec70e3d9b70f2e277 e1ba7c9c41ff150b9aaa43642c0714def4407850f2149232260c1a2672dd574a +lib/codeql/rust/elements/internal/generated/UseTreeList.qll c8fa4298bd1dc476a16c8b0c2b043674bde9d7360f53eb8a215170fffd32317b 18aa0c886a1f0d805d9fc1771fe73ff1cf3796183ba1e1f5a9408ae359b556c5 +lib/codeql/rust/elements/internal/generated/Variant.qll b98e89a7bd18f21b92479de422e6c1ca56bef067e34a3fd2539b31cfda93039c e6b54bc66c92d7627457c6a2f0d328bc65fc514420bbe578d0ff6bf88ea2f26c +lib/codeql/rust/elements/internal/generated/VariantList.qll 7d5ffa311b62ecd8d263c8dd843d76b5d7f5f306b6702cbc49d574a3af7fdd5b 947abb4cd46ad3265473fcb29287da4782f932ecd571da0170abed63e1b830e0 +lib/codeql/rust/elements/internal/generated/Visibility.qll c6c3099cb563c010e18012772c57bea636967e30f0f90b026f744441fb4c9263 f0db2927498fd5900eedacaaec5f3f538829c1f46306b593ff95699fa6535f68 +lib/codeql/rust/elements/internal/generated/VisibilityInner.qll c5117329df3fda9a02095f4084c95a7f8ad68f742ba7ee13d5f06e1abae33fc2 2bde934b77717cd74b59735cbe8f3ae5f700325c3e8176a04d8aabe7548c7ec1 +lib/codeql/rust/elements/internal/generated/WhereClause.qll f1ddc9cee259e4d6d9799e2d72bf2e0acb09926246cdb0d8d1914c0cb907bd71 0924e2b188bb20a652f366fafaa6afc251502a0c2bc048204111ba8e18209cd2 +lib/codeql/rust/elements/internal/generated/WherePred.qll 373edb54ae03834e6f69a0d3ab08a0392ea35bc20012e4df71d29d401ac49c63 15fcae3f3bc4baf3569ee0f361fc6117ce8cb55ed7152f1c04ee67da909dc4ee +lib/codeql/rust/elements/internal/generated/WhileExpr.qll e45b9ceafee6e933e37d70ea2e9c37da6c5054e2c89bcca850c4dc3dd69c5421 7caf1d3215b74741d96f23814642d09eb806f04d87a4d1b8fadcf9599349959e 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 55ccf59deeb718517703e2aa9e90452736de118032d3bdad4b4ab7295cbb795a 55ccf59deeb718517703e2aa9e90452736de118032d3bdad4b4ab7295cbb795a +lib/codeql/rust/elements/internal/generated/YeetExpr.qll c45a2a3c691b03c80aff5d1fdebe94c46856c1a00d42d6eaefec7f17222751d5 6c8e54035a6454a91f93d94e325f79dad275c7b86cdad2295248c94ebb0c5b00 +lib/codeql/rust/elements/internal/generated/YieldExpr.qll ff60cf5a7c074117c3ea6721567944caa3d77034373d2fb31db8307aa9ffb4e6 39ec18ce5702bbac2580ab464dee1f6afc0a7dfbb7cc314b6ec8fb4efacba69e +lib/codeql/rust/elements.qll ff3bff2097f812d00926d00857ac925131757b056423458d91a09744f4194e80 ff3bff2097f812d00926d00857ac925131757b056423458d91a09744f4194e80 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/ArrayListExpr/ArrayListExpr.ql 97d27b10e3b76f90538102014b45b254bc223e9bac17bd8059bdaeb063b2f734 b28efee84fdb8a4a0290110fc7820dfdbc934d02ab38813dd1074f9dcf5a6b03 +test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql 307d1105ca74175e7568fbdcd8d426aa1ee6498632d389f69ace64ef0404e22f bc9cd9725453440224b9884d1ba60fdf7f1f6bb5ee5b04ddce6faafee7b374ae test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.ql b262300235ab5bf4fe7712c0208390c7e876413a37a433340fbc078318233e83 68cfb18e8fb73b53cf8a8e73e8bf5e7ba11f32ca6b4695a64ebab51ac7d58d1b -test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql adfcfcdc6ac2a9a4849ea592e37da4221b6279cf2ea1112d32b6c89fda33e85e 7438490536e27b7173dec731f6925531a0e3fa839639c97a53905ba72d7efbe5 +test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql 4fe5dc0154fd8a95192b56eedeaa989d2e3b11725afe6b4d670dd6123a45e850 95b1198060308efe3de18166c24c260ba8eb23767af54b3edb978dd6fd4f686c 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 817faad3ea0b9da9a12026a8cfd91a0363595ce594fc5bc6ac43b112f911b2cd f0d5866dec3474f13fc85686aeb63e2fa8079b8f2774f0185959be00314eff87 +test/extractor-tests/generated/AsmExpr/AsmExpr.ql 650eb94d97cffe68e5e48a3145bdbd42655f1d978c8b721322c4faa22983741a 962c38da1012fb0292dedbe6e3f0cf96dff7bdfd12938574b3c2c755c66fe207 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/AsmOperandNamed/AsmOperandNamed.ql 5479a45903e7c56b2b0fc3175f84cb05afa2f52a6794b26ec8015afdda4545f2 be9a958cfcb98fe77d278c33bc7f08fe6a4438013997b08f0671033ed14aee65 test/extractor-tests/generated/AsmOption/AsmOption.ql d613c40391f4985414cc3541f900b6e3f5f9ef157d2bfb96a773710af4b059ed 8450ef57a5a891db514e8340151d161e515b59ae7b963fd5eebf3bf862eaff08 -test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql e0e76f1d6e454c60db632baabd29642f315c4bf9284bab9ff8368604df15e77a 8450851f062232e7ea92845f406287f945c16e1e1a69a3189773e6e86df8a64f +test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql 50d7539422fdc5ac45925c27fcec21f92b719bdb8f6f217300c8b00fc2c1ed9b 74bde7d8b414df196019653503ba08cff0f09ee40ce5600ce89311bd549ac2ee 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 d2917477f9cf09e1548fdbf9a5d835a1c0cec14705b3cbd16831c6a169050339 85937baa90543dc63407c53d69090d16134591f5f0baaf32c927105fb3bab865 +test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql d1d5308b57f929629000db9363da4fa38dea479586581c7eb7f2b1049714482c 2167562066d145f944e41ff7bc88bc0a02dde54840c780c16fb0f21c92a0f293 +test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql 859216d35d0f497de51fbdcc0bd7d92c52226de6f8d448bc083fd364b5a5729a 4e590d3baaa46e2e92f91d94eb95cdb0ab43c5c55cac7349e2e69f77d62dfd1e +test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql 7b427e2d8c1b903e4ccb0ff3d57ab9af8dadcebe7df277b7581cf05f2bb37681 beb8cc33b2fc9c00e704c693f14fe091a846e6efb880249cfc674a84f5c01513 +test/extractor-tests/generated/BlockExpr/BlockExpr.ql b989734c229b1f25184f5bdc875098231bfe80e26fc6e47b349f83c7c60a064a 6b8e98e81edcf98b905670646ab9127ec186c372ed8a48a30c898933f872bb46 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 16d85d6e5cb68384d0b932fb4506c1855019b819f2c5faa39a4472f39427623a 14df8383948cedaff88f514f7239c1ec8c424720d24e3546cbcd0b689acecdb1 -test/extractor-tests/generated/CastExpr/CastExpr.ql 3480ec51072399409b7553ab6139c832db6ed4ca991f3a7a2282a39afe07c6f2 614c8ea7a2fe30d57583dbf84ed7a12743c2aba49d8c6252d31af3ed10853a39 +test/extractor-tests/generated/BreakExpr/BreakExpr.ql 0b37a56f98b38a6b027f136efe3d42011fe1a152a9dc80d19515ea3eb39fa461 95ec2437898817b6baae4fdb4bf2e64ecb6f159d3659c63d5f308e7aaade4258 +test/extractor-tests/generated/CallExpr/CallExpr.ql 112f1774333114a7e7bd70ee1f9478a794af1b85a0bf7220c12783e26544405a 35b9aa4ccbeab68daf406c4f90373fd785641e3e8e987115164bd512b7d2a1ad +test/extractor-tests/generated/CastExpr/CastExpr.ql 683e56fc7598a151c1c54f255359b61b7c619f9ce9ff4f5463c0bccca226d40d b9e2915bdc4f4c315fafb1afe215c90e66924f1c6ed6c9236e2ddd339f31ef23 test/extractor-tests/generated/CfgAtom/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/CfgAttrMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/CfgComposite/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/CfgMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql 675ae07193241fbd710ece4f74f86e9b00f47841299b1c5934f55dbf13a4b4af 21fb0664619c9c889e9491bfd651c2814dcf0f158dd6269937bd0acc18be6b0e +test/extractor-tests/generated/CfgPredExpr/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/CfgPredPat/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql 1fe39a8ba8256bcac2d741a74d5414e4e8b329459d1747daf948f57b8d321d19 5e2296d89e386cf4b789ad8afe102d3ede78011224fe6f182b235d1550ec5e6e test/extractor-tests/generated/Comment/Comment.ql 0e0454911d2cf2e7ef5c6d860b84c57b9d490090914ebcf4fa0e8a70f777f066 cbd1c195276ef163f8d3c122344738c884dc9fb70eb2f9b7067829d735d48c4c -test/extractor-tests/generated/Const/Const.ql 97797a56743b519c1990682ccb22af6d997ed5eea1e280b52ad31b16a5836f9e e5289ebcb71a25b7ac0a7e1aa0111e4f3ec83d26b7f83e819509c9b9d756921d +test/extractor-tests/generated/Const/Const.ql d554b324b7ae3ed9265fea942782adf05bd1e6b7d0b3308b393b2484e4adaf68 2c4aef753236468c2b602f572dabc2fd7d8e2c137536badaba14c08d30475fc2 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/ConstParam/ConstParam.ql f998c3ba95e7f566c22ea088f1ead3dc0a78b33c34361f0ca079af8bcf19067e 1e9ab5b815930f0d5653a161312fd645d5e51e7f6fdc9ef7370be89f6e1a4a08 +test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql 5f96fd36affb6c55faf1e77d67d93764df72b002fd5f8ecc32373cce4553cd88 fb733d9ea135b27fa486f93fe7c8352680f1a021d03e3ef6102a9b15d807e5aa test/extractor-tests/generated/Crate/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/DerefPat/DerefPat.ql 6e2d15d74675242430b923155a79162d97b526c2642dc81485d1c34d883881a9 c102390dc801bda5816506e00a295ec10a5866233c4a980735e42cc3cefd6d07 +test/extractor-tests/generated/DocComment/DocComment.ql 91a38ef6538f64af675ea8310dc7c391b5620a5013ffa8b6d2c08f51b14fa361 a2d16fee3451ceab43083f312b2b11a88b551800ee33efbfd2782499a88362e3 test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.ql ff54195d2e09424faaac4e145a40208bf0e57acc57dfa8247b3751862a317c4b 583d5b98aa31a9af6ad73df000ca529f57f67aa6daaa50ca5673a56eb57bf507 -test/extractor-tests/generated/Enum/Enum.ql 9a612c818952e867e2665d8c919905d563bb76191f3f522370c7344863589205 c32cf1973082f5d519e3eb04fca0309b3dd9637cf34e58c10a8e34cd9fe36d2d +test/extractor-tests/generated/Enum/Enum.ql 19a1c7c6f559c347f87dc647a3b893ebd106f0f2692e3f417df4e8326d1217eb 721c935ff4e1a8a3be12de54251b77cddac7462df69ebc16a8ea5bc39bf5ffc2 test/extractor-tests/generated/ExprStmt/ExprStmt.ql 7c62a97f7f910ae6e0e9aff7fdd78b369d21257ccab52afe6307ddea2e15dad1 2d32a366c4acbea3136ff1f9f9dadf76b148f82ad1d7170f02efd977d8a07ae9 -test/extractor-tests/generated/ExternBlock/ExternBlock.ql b61e37f1c387bc91be127b5425089f9f1d687f4f1708cad334c0bb00dba5bae3 dc03f0f0912b2cfbce74c3bc31d261cdbea740847212ac3472ecf719d8eb71f7 -test/extractor-tests/generated/ExternCrate/ExternCrate.ql 55d2d9d32cb5e894cc2ee5242d688aaa8428ba7757cccea67d1c064db6de2514 46a2c57660a42ee6eaa532b0c86f4cc2d3de795c33ee7cadbff650bd0f23206b -test/extractor-tests/generated/ExternItemList/ExternItemList.ql 7f4d538d8878a0166b1868f391abf34df1d5e986a7a2e9ceaddb36d95bc7f46c 37072596f5a1e28ad98cc87dbfed00afadd83fa007f03d5b17d4dee8922b100f -test/extractor-tests/generated/FieldExpr/FieldExpr.ql 2a04baaf57a22b65bd5b9e142e59cc2b7d3dd3174910ddc0c2510094f2dd32b1 d8e4fb4384aade1770c907d16795a4af9884051390a5a05935ad4b4df2e757a0 +test/extractor-tests/generated/ExternBlock/ExternBlock.ql 0e9842ba53d4dbd0e42f1c12c164319d384b00ad1be25115926a189cc4cf1d1f f3ff8106b119d9876a7b0d7c6346642722cf119ea4ef53fc08227b05dce578d2 +test/extractor-tests/generated/ExternCrate/ExternCrate.ql 6466d46c3a0e3aab15850a2b95c374ca849dc028c810e7407d23c471be9c2ce9 1a8f9da387e6b6bd96528502934ea5dad09a3e0bb972d98827dc347b5a0ab1f6 +test/extractor-tests/generated/ExternItemList/ExternItemList.ql de065a5fd32fde533bb7bfffee1ac1e5fd64c7b83141f70da3a0ff2005d41f65 4120c181d384e256d5e6025f9bcafaf1d3fb8ccd6b52543c51e58c2218de9650 +test/extractor-tests/generated/FieldExpr/FieldExpr.ql 93d337168561b96d086669611e7a4c64427076421aac15d79d501216f67273af a15279adafef8225d6bd041527cbcc1048b0425988fdd07cda8a4c45c0c3b468 test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.ql 1501730f1e02e9d22b07b18bb42a5372e1d327bda62bdc81d75f9966946cb97d 28625f0b7ee4d7ab37fc13206585961e89a5e509a93215c16136d2382418b7af test/extractor-tests/generated/ForBinder/ForBinder.ql c95fd006eaddb9535eda0d527d71cdd5d3745fe464fd809a8d58b8c4dfc8790e 1d8b38059b8a25965eab9a8a1286384aa994d7cac7414b70b63c6a3d6bcf3c39 -test/extractor-tests/generated/ForExpr/ForExpr.ql 3bac38bf33e140ae9f88371ec90409f7de867e39cdea46f02b15519b236b57cb aade1baf6e6081b3b9bce5b7e95fe4b7ffe00ea9450fd6e1d6692ad97cf93fe9 +test/extractor-tests/generated/ForExpr/ForExpr.ql 8309bdb427278c87e0d5a7027fee03e63c46f9ec393fe761a1527b8fccc6a160 b55d13f8cdbae222b67654e0035f753c2bef7e223cd2f69bf9d5ee42a9ee15b2 test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql 5961055988b3a7749fb80e24d924bf1b67b0c52a6c895379beedd66a34bad04f d8ab72fac742314ead1aa0e1fed2535cc6597d278f3eef017bc9f8fd8cde83e7 -test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/FormatArgsExpr/Format.ql 237ed2e01d9a75ee8521d6578333a7b1d566f09ef2102c4efcbb34ea58f2f9e8 09007ce4de701c0d1c0967f4f728ea9e627d9db19431bd9caebbf28ee51a1f36 -test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql 30e57945c51bfde4c0cf69e404741548c899450e5dd6622b8caabd1394b10eaf d6d38db1e2ea20ce5f0cd858817fe306397a9ba50eb9be08e132eaf897cb5592 -test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql 243c2f9d830f1eae915749e81ac78d3c140280385b0002d10fcc4d2feaf14711 72b90a99a8b1c16baf1e254e1e3463c3ce5409624a2a90829122717d4e5a2b74 +test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql 5abcb565dcd2822e2ea142d19b8c92194ee17c71c3db7595248690034559d174 1ffa743fc678701ffeefff6c14c1414bb9158e6756f32380dd590ff44b19ca5a +test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql 100d407c3c561f16ce2634c7a035a3455a66b3d01cc7364bf8af527867a4f04d 5e0541628095b9159e377b3c3aaa37579a29a66243465c7a16a4db33deea3203 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 a98895a935f82c61538a93ad981d55a049dfc44eb7f4a28b0b3d611247617518 ed9e9b3d3804e83a40fe3d39888efb308eb2eb9d99c7a1adc5ab821cff2a44c0 +test/extractor-tests/generated/Function/Function.ql abfa9cffbbcf15975dfd5c9b0512419bfeb0826453c34dd13396c28e2afbeaa3 9fdda768f863f3671989fabc9c87b963945bcea70e3147b8fad6f71e72b582e1 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 c96ec30d703aa607b7aad9f6eaca1b0069799cdefcc1481f4aa4f7378f477f7f 3528e1502b6f7b323d964630ecfb8255f683486b75300457e2a2d95aa36771f3 +test/extractor-tests/generated/IdentPat/IdentPat.ql 939ce994f33455e8f23b43bb61f3a09af13b37f1475ac0a726bb683ac9a13ab8 13733894a584d379766905bafb5f643dbeeb05b9ea2f7cb87a68aec5f8a8e7d6 +test/extractor-tests/generated/IfExpr/IfExpr.ql bf727b0a8bbd6d571c0efd32d5137c66a9868aaddba6bdcd4dcab399f6b8c04c b062e3c30f5465806bfdf28407757111b5cabaa880e0f4f2a759d32230b435d5 +test/extractor-tests/generated/Impl/Impl.ql dcc9ae900f73e6631eb5d1aa0a4ad52287ced67e8c347ce34a6d1b65f296686d f89d2442181b6289ec2177d7e2e1f5ed7baca0d36a526a4611281ef6804de557 +test/extractor-tests/generated/ImplRestriction/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql 311c6c1e18bd74fbcd367f940d2cf91777eaba6b3d6307149beb529216d086fb 16c7c81618d7f49da30b4f026dcacfb23ed130dbfcfa19b5cb44dc6e15101401 -test/extractor-tests/generated/IndexExpr/IndexExpr.ql ecfca80175a78b633bf41684a0f8f5eebe0b8a23f8de9ff27142936687711263 27d4832911f7272376a199550d57d8488e75e0eeeeb7abbfb3b135350a30d277 +test/extractor-tests/generated/IncludeBytesExpr/IncludeBytesExpr.ql 88ce15de29b08d5a09791b7bace113d0a742a9dc80f8e677289fa93f68f90ab5 e2315f877371632c7c606ffec092dbb4dba2a5c8ed5b898ba049d1d5d34e3665 +test/extractor-tests/generated/IndexExpr/IndexExpr.ql f7a495ab23e11c8390a892d5041ee6493b040215f898e193e9730ebbf1a5ba34 18c9d2260a60197f286a2957d95f12762f25bff3c5727180b51e1fef2337078a test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql 6ba01a9e229e7dfdb2878a0bdbeb6c0888c4a068984b820e7a48d4b84995daa2 7120cafd267e956dbb4af5e19d57237275d334ffe5ff0fb635d65d309381aa46 -test/extractor-tests/generated/ItemList/ItemList.ql e29302a9212b07fdaf93618852be30adfac64b292e9a0ddbf63addb803daaa98 7e69a78b0f58ef9344892113799092149024c1352b0965a6326d8a45cd44771a +test/extractor-tests/generated/ItemList/ItemList.ql 49aff38f3cc3d3f48f2ae916d773f8fbd04ee4d2e6f8ab7fc9f37e65aa7dcccf fe015eb77d633fd8115963d3a4d5344e28c598dea994209d1a095c6cc5bb0ed3 test/extractor-tests/generated/KeyValueMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 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/LetExpr/LetExpr.ql be466576ff713715a38349f3a7d2130d416ab37144f09b4adf0a18ea52b8d73f 612f181d772df00e2d5a166e419dd0517aadab0561f8d08cd0d364267f12a843 +test/extractor-tests/generated/LetStmt/LetStmt.ql d89d5d8ff566fb78724039fa0e53a52b7e6c71b77257c09965eedad6a8da8886 46be6bdff454dc90164f5a914cacc0a2e11059f3f1d781fdb4d18eeb8e7a6013 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/LifetimeParam/LifetimeParam.ql b9c38b067aad4738f19d71b88b8b17d10ddced1ec33cd4fc5b720712e378cd0f 9e9a51c81cd45edcd67d625929c8015989f4dc850cce7db34b7774d40b6b07d9 +test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql f7980d574dcd77629f26dc5838c090665a6550772116072c42d23dff3bb363b0 19bfdd781be84635234ebfdf265f7bbd9d18125e8374acea8b381e07af1c84d7 test/extractor-tests/generated/LiteralPat/LiteralPat.ql 863d4902e7e22de3176398cbb908e6f5f487b3d22c0f9f7a5498a1ebc112c0fd 47e3f70c5c32f17050d3ca8c8b42d94ecd38e378627880d8100b7ca182cfa793 -test/extractor-tests/generated/LoopExpr/LoopExpr.ql a178e25f63b4d517482ec63e5dfb6903dd41dadd8db39be2dd2a831e8456811f f34165f78179960cc7e5876dac26a1d0f6f67933eff9a015b92ca0e2872b63e8 -test/extractor-tests/generated/MacroCall/MacroCall.ql 28abee68c0681334e4ffd412f1b9b9b0fe844a6ae6c915ec18ea186b4766f58e c8c73902827d69a4b903ab3028408086b64b9f5d9a4da97620a2100f45ceaf69 -test/extractor-tests/generated/MacroDef/MacroDef.ql edcdd65706641c2827cac546091a99e0a1473ff8d383efd968023db411591197 b7832c67c6dd32e9e5ecfa4b6256e7cd820f55d49c44458a140cbf4d46542eb3 +test/extractor-tests/generated/LoopExpr/LoopExpr.ql beb3084530fe1d1a10cff5dae4402d814f1f9b008b0e0e74d0b50c71a83e6500 4d2c666bae06e3f8bdd82db23d0783f2d8aa62feaf3a63cb4e5a19b092071b0c +test/extractor-tests/generated/MacroCall/MacroCall.ql c2cda717672182b654354a1b8984e4cf7723422e1ffda98316ebbfb2f6648824 cd2a0a521dd59d15d903263c4151e7ec4e72837ef03069a86163a33cbc2eea2f +test/extractor-tests/generated/MacroDef/MacroDef.ql 9a5711012579011338674ac11cb41693a4a670eb978f97b68f518797e368cfc4 fac93bddd68cde5131e0719461403b788af9326ff0361bc0517f6335ea33c955 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 9a6d5d9ec6cc77dd2f893e5315910c73f2ae2fc418b4a3a172799a16fefea456 413c8005e02dc1d79e6710e7dfc184cfa0e6bfb34d172b6b97bd7fa81ccd2594 +test/extractor-tests/generated/MacroRules/MacroRules.ql 942f1400cecada57d75624c52361afe1668005cbfd4de150ffa3b77c4c771675 3aee2d699f7f0e38e326f66742fbb2d219010da7f27ee2eced760b03ac01b0fa 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/MatchArm/MatchArm.ql 1f5c87e967303558919212909553f2bb39dda5a7cc58358cc89c3fce94b34f72 5f60f7ec2fa1fb53bc59e0658078bed926764a18d6a2ecdb319d1356e793656f +test/extractor-tests/generated/MatchArmList/MatchArmList.ql 6b02e3342635eeae31e658de7b42cf05603aa10e84231daaf84f280292817342 218d9a94833311186e4bf9c913a3462329a47168db2045711378e2950ee9841c +test/extractor-tests/generated/MatchExpr/MatchExpr.ql 9e5c80747c92f47f7ac2fe117883e4dcb1de8bad6e44b5cb32ab2ff5c0494b8d c7d051194e36e96bdd1595510df8d177e53b578948a7252be5d975a5136329f7 test/extractor-tests/generated/MatchGuard/MatchGuard.ql 91de18a0a18d120db568b2c329e5cb26f83e327cf22c5825c555ea17249d7d23 0bcdb25895362128517227c860b9dad76851215c2cdf9b2d0e5cc3534278f4ec -test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql 9d5af6b4771a8725fa5b56ccb3e2a33158b18c876546b88e6dc63da1f887910a 494c8c2fe5584aac45c828b38d8bb20c113927a1e909773d4a2dbd3965d26170 -test/extractor-tests/generated/Module/Module.ql d7c442fd1b1f4f00da87e2228fc1aeeab0bb86648b2aa06a9dd6f40dbae1ee28 3229388727d14048e87238bcda5fde1bed503e5cac088922381e5833cfc32fa9 +test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql 92814b91df080cd9c26aa3e94b96b544e889c810d7604328108a0301a1f75e19 b143b64546d80c0cedc1cdfffb239dbd276c7c6f5b96596f32d1c4df2d6d9190 +test/extractor-tests/generated/Module/Module.ql cd8477839d3d78ad34bee8064d8f3fc2f5583f74d048645a9acdb210be86c21c 5450373d5d30984a639397d0479289cc290be917c96ea7b43127d5acec2c6c31 +test/extractor-tests/generated/MutRestriction/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 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/NotNull/NotNull.ql d79c3007161f3296a4e0516e3edf8e33152a6e359bc241b0f532b0058442e59b 3c991600d3fe64df36e0c00d38e4e31a1d796eec6ad47e2d34a8619b7e9c7afc +test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql 247b7daa146ed7b46db84db57b562acc072601656184e6bbf71f08ac9d59375e f14087a794840c8398a65dbd6b796fe37812b12bc5bab2bf04843afc1f950227 test/extractor-tests/generated/OrPat/OrPat.ql 8742e1708da0bcc172c8cc637082672c92a136aa50bb2f0ef928387337aefa3e 1901c223502e8cc046c233a10d923226373bad0837264e2b837fd549929020e3 -test/extractor-tests/generated/Param/Param.ql de90709cbd61e1852c857ffb6cedd17818464c93bb7bdc92c900ee04f4d2a27c a105ee30716345987989d48c4fa6194c34741fc48528515aeca673662b5259cb +test/extractor-tests/generated/Param/Param.ql 853cea9f6ceeec98bf861721aebe575971ad1e04eb216fbd8246ece46af9c7bf f43b20554b36209e1234cd62f01945df48490a8d8e629c501cb954ca40b30832 test/extractor-tests/generated/ParamList/ParamList.ql 015cfeec048fc89698d75a04492a0e39303b1264f80e2b6977d178aba18a745d 349455ea6fe026a482bf9d63e9581ed2f368de3331bd2f0b9591ec20ee2a5f21 -test/extractor-tests/generated/ParenExpr/ParenExpr.ql 5ac9654a149f32638a663894db769152ce5a5abff7051e4d865bf0ac2485759a 3fa0afc9522c241d7530cc6d1e52b662d920f0459684bec82fcfda30d2ec9871 +test/extractor-tests/generated/ParenExpr/ParenExpr.ql c7fce3be4c5f81d7e98f8fbc9da420e0bcfb31b9e256a316374de82dbba5c325 59936708b20c82e80d4d25c1d9b46653a4ae310cc05e9ef2239fc0b3bcd85947 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 caa2a41b5cc3af837fcf52b49abc5f45ba924821ea0f75d5b25daa8d2b6d4b66 7c2d587d7a73c21dcc0a85c38baa0adcd64826719b2f12f92ae758d290f37706 +test/extractor-tests/generated/Path/PathExpr.ql 8b073ac78a95a08f7be4fd62b659ffe4a736f3e481de6ab80535a96caa560c62 3d3aece2b05ad0f59e4756003b2c35ffc3b768edc776457f385a8c1af8f79a98 test/extractor-tests/generated/Path/PathPat.ql 8a6a759f4bbf4fa9c23fd235ce4d63f04bd715a86a6e71bba0a324fe1231d947 be23d83e4f6ac209f3f7c382fce6b9bc57db17a26b236bdf8215848285e345ff test/extractor-tests/generated/Path/PathSegment.ql 87774cc2e9d1be7aaf8748d418b151d7ec03fb20fda9430ebabd86ddaebf5538 699545d8eb2d6325bcd2c253d56339bd71170b34e80efe5155189fbbdde9fbbc test/extractor-tests/generated/Path/PathTypeRepr.ql 32023340cb9aa1fbf52a1a3e330c6f3206e1c64c9dce2f795d9e434aa5a1533b f451de0d4941ab79014d2883b46291f9f05f79d479fcdcab387020ab3ed68703 test/extractor-tests/generated/PathMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql 63e9dbae0d0b46d5e9d60c313e408c4c7ee1a93c5a26fe4c01a632911de961d0 09fcc28bb22553356aebf9ea93811703e5404b88022be8dab61ac81d3b187b75 +test/extractor-tests/generated/PatternTypeRepr/PatternTypeRepr.ql ada52e0ac5a61244cec32e185a968eaf2aa7c3237126d9cd57646cab0d63d950 c8169395b50236ba21fb7703206a57a98c3919a68f75c792cf387b14351c2018 +test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql 915562efc4c7cff5e8ecc68ffd5276bb8af86e7ae0c7c9f161c1bd1d30c15982 cfd7ca44581a6b910d4bfb3d46094b37dd691854f2eede739f790dc5ceecdb25 test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql d9289bfe1e72d9560b3878e4557f8cfda578ef7bce67eb29d7320921c0ba46a5 f3ea108aa25635bffa7673bb66b2581ce246d3aae86edf878c6f1abca2493c16 -test/extractor-tests/generated/RangeExpr/RangeExpr.ql c9776706d933606d1463bb08ed76457ac03a9558f6dac0218ef2012bc5e8e48f 77cafee86abc2680e1f9c925fbe664c05ba1b9a2533b1873242ef01dde1ce308 +test/extractor-tests/generated/RangeExpr/RangeExpr.ql d004ebc71854d6faffe830bff4e9b22b047ff41ee709c1d5947306b5e887f47d 938bba2d631b410580d6e2b44d24a57f6d6cbf4915852611dccb5cc8ee23698e test/extractor-tests/generated/RangePat/RangePat.ql 72b6a5e250fcec844f96623f265762462966775326ad0ad4df03203ff17f0066 04c375e98d6c7d336ebf7dee522f0fc716b7ec8141752534ed083c5d2550c679 -test/extractor-tests/generated/RefExpr/RefExpr.ql 4359b9e10727fc505213a896c4c8761258f355b572e11675a5081d811affb4ea 0c46fcbd866334d168e1c4c481b4ad419df048e4ba74488875b2799d316291a7 +test/extractor-tests/generated/RefExpr/RefExpr.ql 411a1626e83cd9bcf539e161243658cbf89a9b4d053bd7134850cf692567deac 60ec15387cfa0a108c1b80babf94017b78a0502c7bdfd8c02ec503cabb1559f7 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/RestPat/RestPat.ql ddfa54457f4c5be5d518608b45411184efc42cc8dfbdf0133a91280181d1cdd6 67f9e2d39f8b528e89b7154f261bb1534f00f82790156aef3b26d5e7d563e2d3 test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.ql a6a8ad01a54f8f4384d3e1ab6352cca1e55c9041673705658b9feec3e3a1d3b4 d9ba5a13087e7731019d947219f20af547664965b2b304bd23155994ea1aa397 -test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql b44ca36c30cd584c9f976e625a6bc09242792016d5e78057f9ec4174f3a0341f f61dcce549d282a9b7f0bbdcb612909799156231f22f2b5824ec6083630013ec +test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql f246c95e9897958b75ff487f918d05c1b15b2c05efdaeba01e87f77ea61be139 b3d7537a1285949c7449f3c624210e27d5f2aa0aa933633ab0ffaba1b01c1851 test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.ql b08a4d4ad63ea6e62f8b9646fd838cac9d122a93f5716ee91ff7c62fa987a1d0 264d485a301f4220eaa580ae90964b05c1a2b19b898698e7cdcc86b624ba3aba -test/extractor-tests/generated/SelfParam/SelfParam.ql 7e57dd845ddc9142cce250c7e67e36044f2cc27b618a3b8876db7a6ac336d3e3 e546b5a690770e57bcfb07a662430f62128a3fed4eb46bd17c60c9e4595154ba +test/extractor-tests/generated/SelfParam/SelfParam.ql f7a9e0f0ef2cff8491a8b1e8a56a78de50121b3a49231dd2284b5c4420e196d8 1293a235bc9338e8d3cd4334f167237b888e5a3feae6898e7bc321ee12f97eae 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 ec2e5cf081453bbae16216d1250f5d8324be81d1d6ad8744e969934d2ef21b0d 7bde1afbafdc16f9c999e902626c77dc0efe3f1b3d687e9fe1a3e9db6b1f62a9 -test/extractor-tests/generated/StmtList/StmtList.ql 4c6b9d5d8fd7535f97d81b968d4f67fc50e10c5d0f980e7c2704bbf5cd07481e ad972adb8d9a7892e6f8a12d96649340441f947afc99e633ea438c4d5c795ce4 -test/extractor-tests/generated/Struct/Struct.ql 57e837e3c665d24870d99492c8874441ce1445b314863ae405cc6f721d2ac14c ddeee05945e91356a1dc66976ef4830230b1c024ace02f974ff42c8193fd3464 +test/extractor-tests/generated/SourceFile/SourceFile.ql cbff8d6579c058a7bf4035f92861a0d9e2a989026c3756d298f84bae5aa023f1 b870df0a46c9d01162423152286480ea4fea47a10ec76e073c4b72eca2e79372 +test/extractor-tests/generated/Static/Static.ql e40778afa94a6d9dbc8ada23b70d0816729a6161725db5a64b85229cf7fdbee9 228d1367e6337d9ee48efd31bb2026793442e1cdf818bb97370c482ef2ca2d8a +test/extractor-tests/generated/StmtList/StmtList.ql 6b12ed68dd446435724880f6bd10e07449830bb42fa86d7190085e9a5bb5342d 0ea0478d6c953ccd5bde4a0d2ffb35393ccc5e1887c51bb4fd98fdcaddf4764a +test/extractor-tests/generated/Struct/Struct.ql 540c85ec92138c1bacf7023cff7371abb24f4068211e9f0967784b1b075fa6a0 43e599ab89f973d68187e5e560c56a969fb1ef836f16966cfb55817d93430231 test/extractor-tests/generated/StructExpr/StructExpr.ql 3b98205260e750cc7adc42b318deef2854cc3b4f921cbcfffc6d701553af3903 368bccf01db2fa069dca30d9fb0878f8e6a88d4ce58b333b24a18620933e4c91 -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 322229f824f2e2e2c4fb76ff35e343559bbe986982d40ca8739a071ee9778de4 535c3958f316c7106de50aa507f159b99b58cef4707e1f6b0a5ea48913d9c49c +test/extractor-tests/generated/StructExprField/StructExprField.ql b6c5ffb51b457579bc378993a4e8d8e76104892da3e09b896571de194a507995 00b1c17c432c44da9c84ed9f41ad48cd98a899b43d7b9bdd634570e6bba06a3d +test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql 94a52f44be3a1bd8a2245849dfeb00df7c8e274afbd60ad980030dc563ab8fa9 6dc9414b678d6811069e405d42916d603c98e591b7807d214f86b0e7ba836206 +test/extractor-tests/generated/StructField/StructField.ql 40205d6adadd24ca678bb6512246c6d0ce612045bca9958f739ff0a5d8832341 cf52647e60f8ee502469fba9c1fb19d49964a2196537f04d782275693e9a84a0 test/extractor-tests/generated/StructFieldList/StructFieldList.ql 292170b20f3a55c0cd6a8d78ce99474ca68daf6fb380cffe00b2bd7074e1b73a 404bab780f290ae04d1d71d3c6d4e0092bb3d8c55e956168d2a445cbd6d1f06d test/extractor-tests/generated/StructPat/StructPat.ql 894babd64d3def35717cbeed6eb4799cf9f52e73992822b72fc521c93efb4935 5bd1502b69014d70464b4b76795e1732ac2a6db5d028bea52929cf1998af5f07 -test/extractor-tests/generated/StructPatField/StructPatField.ql 92cb6a4b5234359c02d66085b10d41f37b77370491ed478ad6d4d9b12b943ecf 14bc2079763b53bc6ab11356f3bb21820ae9e4dd1b2a42a78665c32181c4ef92 +test/extractor-tests/generated/StructPatField/StructPatField.ql 6676040c60c361ef7727fb54efae39c19374d3f27b62c97fb0dccb9fdbd3f87b 71418d75796d9ee63f71b2a91638459bbb8b7066f343f4b60770d17cbf200a80 test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql a3ba3e99d3c87d5e0ae0ad82cbea3600ac1745e9364d54d8d51224b51a5a09a5 5942ed2722c006bae99de9174249110bfc79594c5ef9a6dfc098ae2be269b8f3 test/extractor-tests/generated/TokenTree/TokenTree.ql 55592f43a6fe99045d0b0b1e2323211d3a3fd64a8c7d2b083f2518d4c3e2e4b0 8eeef2060c80b0918857ba9b3a8543a4b866ca04be3d5ca18aae8a26cbdb836e test/extractor-tests/generated/TokenTreeMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/Trait/AssocItemList.ql 065c4903992500423d796800e7dc9a5835a07cbada595108f3af6efa72517782 aa797bf5ddefb800d5ca7f49c19c5124b1007e1658129b27c8c3de34427c7f08 -test/extractor-tests/generated/Trait/Trait.ql e59d9d97baedc5691f9fb837e3600b1b33808c598971d8abe28121a9c70292b4 0da2808421a1e1acbc61076d4b50c559f2abf02cbd5f69ba15a65457887ff435 +test/extractor-tests/generated/Trait/AssocItemList.ql bd5c8c66ea5c2ffb77642317d4654d679ca7ca677a727fd1ce35c16069d5a860 fa29f18e30bded6c591fd0e0dcf674ea9db4c8a73d3c13388239e259fc27c59e +test/extractor-tests/generated/Trait/Trait.ql e7e22e1b42cd1f181519bcfcfa8c5a55e70f8c9d6a8c24f4233c506f67511f02 8d9d9607691a45434d7922aa46fda1a553a89beec2c6fae5747425f7f0cd040c test/extractor-tests/generated/TryBlockModifier/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -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/TryExpr/TryExpr.ql 3351b3100138ffecd80b28b0d7cb82faed4b7537db106bb8913a9dde92630833 3b66ced56613a6f985e2768f940a3ef9baf3c48eabe2e3bfbcd9667f35a433a6 +test/extractor-tests/generated/TupleExpr/TupleExpr.ql 913d873a72d3a6451c42280cd6970dc9df37dbfe764d92c14883aee526d15e72 4e170c90e62a1dff01700b9cb143a7d21da556576a6f01d72d30d6bdec2e1566 +test/extractor-tests/generated/TupleField/TupleField.ql 28f5d9be1f8371630803cf3b6f16bcfe31780ef1cc2edd83e274bbcc862b789e 010ab34b303a55876c525a3b7f7ff1c4fa5595a93bdeba460de2780cd7a64f5c 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 ea588383e16328486156e872f4d6f999a35534cde49d69b66a6186f01b1c2581 2a2e179b4241a4ff7d486e987cb667ba62025bc8dd48a507142cfec882bd35cc test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.ql 2f1503734d272cd0616e5885cd344659cbd0ae7309a375c8351f57f2b86c3302 276a4fe91b8dc64cdca4467343e2bb2e240c66ec1e4e11bf8cba73819c6532cc -test/extractor-tests/generated/TypeAlias/TypeAlias.ql cbd2ed23ffff6bae81b121e32c9a7efce43c23d33f82fbfcee833b1043892c60 abf9779da9ee2b267a3dc3be7143f111cac8441c378828329749457bb56aeee3 +test/extractor-tests/generated/TypeAlias/TypeAlias.ql 1a58ab02f37709f2e5840da18630834296d02d9b54f481ff2ede92ebf1b014bb 17cd7b4d501d04abe132379f090599ebd24f08587e09af77af223a49659fee1f test/extractor-tests/generated/TypeArg/TypeArg.ql e1ca286c03bd2d44054f5dd75aac250382037f243046c49ec752ad8d65e4c0ba f316d5fa84a721427c0aadf6bfa0ed4cfd86e4d318cfb0fe82efc52e65c4733b test/extractor-tests/generated/TypeBound/TypeBound.ql 41d0a7b6538de12797c5aa4152ea701517abe685b1160615f2d74203e7a00d34 f57128c66df37791f93db269451b1c617c991d8723ecb9efe4b8ff8b2559472c 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 427757ef5aa4e95fde8f5047263cbbbc7e2614f9efabc51c9a5f9ba8d9b68310 d1d8840a4324e5727e1ecf6e696741e902b807b39ec82686b94211803eb2d0ba +test/extractor-tests/generated/TypeParam/TypeParam.ql ac6d88dacb41679d83738b81a6a800d8cc8318d92bbe611cc9f4146b07b90a31 ca3244dbce2863a28668a144f41ff317f049fdaa32ea1095f12ef2ff87a553ac +test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql 56e017d8b13ff3707d3bbf4a7e3739d02bc3947de85c88418918ee7771920281 8d02bd73453c528828e0afca32e9c512dd2f9ff359b333c6464c83591f8b1d65 +test/extractor-tests/generated/Union/Union.ql c2d924a62918580209b46d0e115c7f22db04360c402c2b9fa30e87f1c338d9af 80bad77b2316b536068e3d082769b87071220462ee223890276e541f430da44c test/extractor-tests/generated/UnsafeMeta/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/Use/Use.ql 1f084f3b49c910c6e01d2a81be2443e84c2836a5855b89874965efaf25d17511 d5bf37ba65f4d280312ca798bae22d2735c00cf91ff05ed6321f69b76b4551bc +test/extractor-tests/generated/Use/Use.ql 8ad25a5c136252e18e551251bc22228c8853e05f3a8935f2f3fad5b2e86283d6 a7b98e9802b4095e9d501aefd7d47583c20ea0eb85cb01fd7e750ba60aafb9e3 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 0de458e2d04e40e9a0c036e423d05af3617f4423b967e287f0800ccffd345633 921a8ca71390812f174c5220d54dfcfc7105e57ba3c301f5c86301a19d089bda +test/extractor-tests/generated/Variant/Variant.ql b5d1bf573a46b31d759ff9613c8367f06c3118f4df5d13e51c6cd73dca447a65 7ed1d0339d5aa8fa60832deaa63be9856696f85b2e5b67cbbbc176ebd2c6f05b test/extractor-tests/generated/VariantList/VariantList.ql 1c1d82ce3ecfa7daaae1920662510e81892ed899a3c2f785e2ff3670245a03cd 29d4c5ab2b737a92c7525789e10a4aa9848f1a327e34f4e9543018021106b303 -test/extractor-tests/generated/Visibility/Visibility.ql 725d47d7444332133df603f9b06592dc40b0f83bf5e21ad4781c5658e001a3aa 2d65a30702a8bb5bc91caf6ae2d0e4c769b3eeb0d72ffbd9cdb81048be4061ad +test/extractor-tests/generated/Visibility/Visibility.ql 3bdf8f1ff70f62eabda19086d2c6b2c7e9cf4f7bb327b053a0115089d4aa9f56 7f89b2519ac4ef8e3afdfce58aa66edc921d36ecf28550f5cc3bce190db752e8 +test/extractor-tests/generated/VisibilityInner/VisibilityInner.ql c71530193ac5395f4b6b0b57efaf0c0076a9e4c115bfbd38a41546045dfa0d75 059ad90ec71d5339928f79338bd7d459d24881762f65d1534b5ded860b533ced test/extractor-tests/generated/WhereClause/WhereClause.ql a6f0e69ffa6b997cac04d4da442eb8bde517a576840c953abcc40863b9099ba1 7ce888fffc3038d5b18f8c94d3b045815cd45500e1bb3849c05fc874edbeb695 test/extractor-tests/generated/WherePred/WherePred.ql 8f73500a04f8748221b181bb9a51bef6c09d5ddf046488303594821e3191b370 8fb51d095a3c39b51ec8b4515fc02474ba36067ca4dfd48dff7e14d1c3881ea3 -test/extractor-tests/generated/WhileExpr/WhileExpr.ql dcfe1ed375514a7b7513272767ed195cdbf339b56e00e62d207ca1eee080f164 f067283510655f0cf810cae834ac29ad2c6007ba312d027ebcdf695a23ec33e4 +test/extractor-tests/generated/WhileExpr/WhileExpr.ql af3616d65bad6e81ef6db0463d68bf5b198e179e3ebb1ef191d235abe62068a7 2e4399a7ff4ca3fce4c14420b1004e901ae55307a6fd87dcc456660b1b0338ac 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 +test/extractor-tests/generated/YeetExpr/YeetExpr.ql 445f8bae65c2da84237018e6ff1d630da45446e4741e0217fe76bfc8b73ea5e5 b64c617171b727998e47994f052f217652b794f2cdd9799c0dd1ba0b34e2113d +test/extractor-tests/generated/YieldExpr/YieldExpr.ql 2a257abc729331574a58c12192b2473554930a9c89d05646b030f067ff11e886 ae825976b44270c28ae41be8d0856efbdeab8bcacf20cd56ba1932dfec35a7c7 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index 2ae7fd51d450..f0e39bc72b63 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/AnyAttr.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 @@ -40,6 +41,8 @@ /lib/codeql/rust/elements/CfgAttrMeta.qll linguist-generated /lib/codeql/rust/elements/CfgComposite.qll linguist-generated /lib/codeql/rust/elements/CfgMeta.qll linguist-generated +/lib/codeql/rust/elements/CfgPredExpr.qll linguist-generated +/lib/codeql/rust/elements/CfgPredPat.qll linguist-generated /lib/codeql/rust/elements/CfgPredicate.qll linguist-generated /lib/codeql/rust/elements/ClosureExpr.qll linguist-generated /lib/codeql/rust/elements/Comment.qll linguist-generated @@ -49,6 +52,8 @@ /lib/codeql/rust/elements/ConstParam.qll linguist-generated /lib/codeql/rust/elements/ContinueExpr.qll linguist-generated /lib/codeql/rust/elements/Crate.qll linguist-generated +/lib/codeql/rust/elements/DerefPat.qll linguist-generated +/lib/codeql/rust/elements/DocComment.qll linguist-generated /lib/codeql/rust/elements/DynTraitTypeRepr.qll linguist-generated /lib/codeql/rust/elements/Element.qll linguist-generated /lib/codeql/rust/elements/Enum.qll linguist-generated @@ -66,7 +71,6 @@ /lib/codeql/rust/elements/ForTypeRepr.qll linguist-generated /lib/codeql/rust/elements/Format.qll linguist-generated /lib/codeql/rust/elements/FormatArgsArg.qll linguist-generated -/lib/codeql/rust/elements/FormatArgsArgName.qll linguist-generated /lib/codeql/rust/elements/FormatArgsExpr.qll linguist-generated /lib/codeql/rust/elements/FormatArgument.qll linguist-generated /lib/codeql/rust/elements/FormatTemplateVariableAccess.qll linguist-generated @@ -78,7 +82,9 @@ /lib/codeql/rust/elements/IdentPat.qll linguist-generated /lib/codeql/rust/elements/IfExpr.qll linguist-generated /lib/codeql/rust/elements/Impl.qll linguist-generated +/lib/codeql/rust/elements/ImplRestriction.qll linguist-generated /lib/codeql/rust/elements/ImplTraitTypeRepr.qll linguist-generated +/lib/codeql/rust/elements/IncludeBytesExpr.qll linguist-generated /lib/codeql/rust/elements/IndexExpr.qll linguist-generated /lib/codeql/rust/elements/InferTypeRepr.qll linguist-generated /lib/codeql/rust/elements/Item.qll linguist-generated @@ -112,9 +118,11 @@ /lib/codeql/rust/elements/MethodCallExpr.qll linguist-generated /lib/codeql/rust/elements/Missing.qll linguist-generated /lib/codeql/rust/elements/Module.qll linguist-generated +/lib/codeql/rust/elements/MutRestriction.qll linguist-generated /lib/codeql/rust/elements/Name.qll linguist-generated /lib/codeql/rust/elements/NameRef.qll linguist-generated /lib/codeql/rust/elements/NeverTypeRepr.qll linguist-generated +/lib/codeql/rust/elements/NotNull.qll linguist-generated /lib/codeql/rust/elements/OffsetOfExpr.qll linguist-generated /lib/codeql/rust/elements/OrPat.qll linguist-generated /lib/codeql/rust/elements/Param.qll linguist-generated @@ -133,6 +141,7 @@ /lib/codeql/rust/elements/PathPat.qll linguist-generated /lib/codeql/rust/elements/PathSegment.qll linguist-generated /lib/codeql/rust/elements/PathTypeRepr.qll linguist-generated +/lib/codeql/rust/elements/PatternTypeRepr.qll linguist-generated /lib/codeql/rust/elements/PrefixExpr.qll linguist-generated /lib/codeql/rust/elements/PtrTypeRepr.qll linguist-generated /lib/codeql/rust/elements/RangeExpr.qll linguist-generated @@ -193,6 +202,7 @@ /lib/codeql/rust/elements/Variant.qll linguist-generated /lib/codeql/rust/elements/VariantList.qll linguist-generated /lib/codeql/rust/elements/Visibility.qll linguist-generated +/lib/codeql/rust/elements/VisibilityInner.qll linguist-generated /lib/codeql/rust/elements/WhereClause.qll linguist-generated /lib/codeql/rust/elements/WherePred.qll linguist-generated /lib/codeql/rust/elements/WhileExpr.qll linguist-generated @@ -201,6 +211,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/AnyAttrImpl.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 @@ -256,6 +267,10 @@ /lib/codeql/rust/elements/internal/CfgCompositeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/CfgMetaConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CfgMetaImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgPredExprConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgPredExprImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgPredPatConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/CfgPredPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/CfgPredicateImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ClosureExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CommentConstructor.qll linguist-generated @@ -268,6 +283,10 @@ /lib/codeql/rust/elements/internal/ConstParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ContinueExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CrateConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/DerefPatConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/DerefPatImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/DocCommentConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/DocCommentImpl.qll linguist-generated /lib/codeql/rust/elements/internal/DynTraitTypeReprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/EnumConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ExprImpl.qll linguist-generated @@ -292,8 +311,6 @@ /lib/codeql/rust/elements/internal/ForTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/FormatArgsArgConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll linguist-generated -/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll linguist-generated /lib/codeql/rust/elements/internal/FormatArgsExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/FunctionConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/GenericArgImpl.qll linguist-generated @@ -303,7 +320,11 @@ /lib/codeql/rust/elements/internal/IdentPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/IfExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ImplConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/ImplRestrictionConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/ImplRestrictionImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ImplTraitTypeReprConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/IncludeBytesExprConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/IncludeBytesExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/IndexExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/InferTypeReprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ItemListConstructor.qll linguist-generated @@ -346,12 +367,16 @@ /lib/codeql/rust/elements/internal/MissingConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MissingImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ModuleConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/MutRestrictionConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/MutRestrictionImpl.qll linguist-generated /lib/codeql/rust/elements/internal/NameConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/NameRefConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/NamedCrate.qll linguist-generated /lib/codeql/rust/elements/internal/NamedCrateConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/NamedCrateImpl.qll linguist-generated /lib/codeql/rust/elements/internal/NeverTypeReprConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/NotNullConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/NotNullImpl.qll linguist-generated /lib/codeql/rust/elements/internal/OffsetOfExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/OrPatConstructor.qll linguist-generated @@ -371,6 +396,8 @@ /lib/codeql/rust/elements/internal/PathPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathSegmentConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathTypeReprConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/PatternTypeReprConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/PatternTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PrefixExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PtrTypeReprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll linguist-generated @@ -457,6 +484,8 @@ /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 +/lib/codeql/rust/elements/internal/VisibilityInnerConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/VisibilityInnerImpl.qll linguist-generated /lib/codeql/rust/elements/internal/WhereClauseConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/WhereClauseImpl.qll linguist-generated /lib/codeql/rust/elements/internal/WherePredConstructor.qll linguist-generated @@ -469,6 +498,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/AnyAttr.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 @@ -507,6 +537,8 @@ /lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll linguist-generated /lib/codeql/rust/elements/internal/generated/CfgComposite.qll linguist-generated /lib/codeql/rust/elements/internal/generated/CfgMeta.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/CfgPredExpr.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/CfgPredPat.qll linguist-generated /lib/codeql/rust/elements/internal/generated/CfgPredicate.qll linguist-generated /lib/codeql/rust/elements/internal/generated/ClosureExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Comment.qll linguist-generated @@ -516,6 +548,8 @@ /lib/codeql/rust/elements/internal/generated/ConstParam.qll linguist-generated /lib/codeql/rust/elements/internal/generated/ContinueExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Crate.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/DerefPat.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/DocComment.qll linguist-generated /lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Element.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Enum.qll linguist-generated @@ -534,7 +568,6 @@ /lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Format.qll linguist-generated /lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll linguist-generated -/lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll linguist-generated /lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/FormatArgument.qll linguist-generated /lib/codeql/rust/elements/internal/generated/FormatTemplateVariableAccess.qll linguist-generated @@ -546,7 +579,9 @@ /lib/codeql/rust/elements/internal/generated/IdentPat.qll linguist-generated /lib/codeql/rust/elements/internal/generated/IfExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Impl.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/ImplRestriction.qll linguist-generated /lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/IncludeBytesExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/IndexExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Item.qll linguist-generated @@ -580,10 +615,12 @@ /lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Missing.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Module.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/MutRestriction.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Name.qll linguist-generated /lib/codeql/rust/elements/internal/generated/NameRef.qll linguist-generated /lib/codeql/rust/elements/internal/generated/NamedCrate.qll linguist-generated /lib/codeql/rust/elements/internal/generated/NeverTypeRepr.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/NotNull.qll linguist-generated /lib/codeql/rust/elements/internal/generated/OffsetOfExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/OrPat.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Param.qll linguist-generated @@ -603,6 +640,7 @@ /lib/codeql/rust/elements/internal/generated/PathPat.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PathSegment.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/PatternTypeRepr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PrefixExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll linguist-generated @@ -667,6 +705,7 @@ /lib/codeql/rust/elements/internal/generated/Variant.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/VisibilityInner.qll linguist-generated /lib/codeql/rust/elements/internal/generated/WhereClause.qll linguist-generated /lib/codeql/rust/elements/internal/generated/WherePred.qll linguist-generated /lib/codeql/rust/elements/internal/generated/WhileExpr.qll linguist-generated @@ -705,6 +744,8 @@ /test/extractor-tests/generated/CfgAttrMeta/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/CfgComposite/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/CfgMeta/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/CfgPredExpr/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/CfgPredPat/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql linguist-generated /test/extractor-tests/generated/Comment/Comment.ql linguist-generated /test/extractor-tests/generated/Const/Const.ql linguist-generated @@ -713,6 +754,8 @@ /test/extractor-tests/generated/ConstParam/ConstParam.ql linguist-generated /test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql linguist-generated /test/extractor-tests/generated/Crate/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/DerefPat/DerefPat.ql linguist-generated +/test/extractor-tests/generated/DocComment/DocComment.ql linguist-generated /test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.ql linguist-generated /test/extractor-tests/generated/Enum/Enum.ql linguist-generated /test/extractor-tests/generated/ExprStmt/ExprStmt.ql linguist-generated @@ -724,7 +767,6 @@ /test/extractor-tests/generated/ForBinder/ForBinder.ql linguist-generated /test/extractor-tests/generated/ForExpr/ForExpr.ql linguist-generated /test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.ql linguist-generated -/test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt 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/FormatArgsExpr.ql linguist-generated @@ -736,7 +778,9 @@ /test/extractor-tests/generated/IdentPat/IdentPat.ql linguist-generated /test/extractor-tests/generated/IfExpr/IfExpr.ql linguist-generated /test/extractor-tests/generated/Impl/Impl.ql linguist-generated +/test/extractor-tests/generated/ImplRestriction/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql linguist-generated +/test/extractor-tests/generated/IncludeBytesExpr/IncludeBytesExpr.ql linguist-generated /test/extractor-tests/generated/IndexExpr/IndexExpr.ql linguist-generated /test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql linguist-generated /test/extractor-tests/generated/ItemList/ItemList.ql linguist-generated @@ -764,9 +808,11 @@ /test/extractor-tests/generated/MatchGuard/MatchGuard.ql linguist-generated /test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql linguist-generated /test/extractor-tests/generated/Module/Module.ql linguist-generated +/test/extractor-tests/generated/MutRestriction/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/Name/Name.ql linguist-generated /test/extractor-tests/generated/NameRef/NameRef.ql linguist-generated /test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.ql linguist-generated +/test/extractor-tests/generated/NotNull/NotNull.ql linguist-generated /test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql linguist-generated /test/extractor-tests/generated/OrPat/OrPat.ql linguist-generated /test/extractor-tests/generated/Param/Param.ql linguist-generated @@ -781,6 +827,7 @@ /test/extractor-tests/generated/Path/PathSegment.ql linguist-generated /test/extractor-tests/generated/Path/PathTypeRepr.ql linguist-generated /test/extractor-tests/generated/PathMeta/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/PatternTypeRepr/PatternTypeRepr.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql linguist-generated /test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql linguist-generated /test/extractor-tests/generated/RangeExpr/RangeExpr.ql linguist-generated @@ -835,6 +882,7 @@ /test/extractor-tests/generated/Variant/Variant.ql linguist-generated /test/extractor-tests/generated/VariantList/VariantList.ql linguist-generated /test/extractor-tests/generated/Visibility/Visibility.ql linguist-generated +/test/extractor-tests/generated/VisibilityInner/VisibilityInner.ql linguist-generated /test/extractor-tests/generated/WhereClause/WhereClause.ql linguist-generated /test/extractor-tests/generated/WherePred/WherePred.ql linguist-generated /test/extractor-tests/generated/WhileExpr/WhileExpr.ql linguist-generated diff --git a/rust/ql/consistency-queries/SsaConsistency.ql b/rust/ql/consistency-queries/SsaConsistency.ql index 1774f269749c..4cbce78c5207 100644 --- a/rust/ql/consistency-queries/SsaConsistency.ql +++ b/rust/ql/consistency-queries/SsaConsistency.ql @@ -8,3 +8,4 @@ import codeql.rust.dataflow.Ssa import codeql.rust.dataflow.internal.SsaImpl import Consistency +import DataFlowIntegration::DfConsistency diff --git a/rust/ql/integration-tests/conftest.py b/rust/ql/integration-tests/conftest.py index 578a81a849a9..d7d6738100ab 100644 --- a/rust/ql/integration-tests/conftest.py +++ b/rust/ql/integration-tests/conftest.py @@ -5,6 +5,16 @@ import tomllib +def pytest_configure(config): + # Install the fixed toolchain used by the extractor before xdist starts its + # workers to avoid concurrent rustup downloads. The version here should + # match `FIXED_RUST_TOOLCHAIN`. + if not hasattr(config, "workerinput"): + commands.run( + "rustup toolchain install 1.99.0 --profile minimal --component rust-src" + ) + + @pytest.fixture(params=[2018, 2021, 2024]) def rust_edition(request): return request.param diff --git a/rust/ql/integration-tests/rust-version/Cargo.toml b/rust/ql/integration-tests/rust-version/Cargo.toml new file mode 100644 index 000000000000..a723b83f36e8 --- /dev/null +++ b/rust/ql/integration-tests/rust-version/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "rust-version" +version = "0.1.0" +edition = "2024" +rust-version = "1.999.0" + +[dependencies] +macros = { path = "macros" } + +[workspace] +members = ["macros"] diff --git a/rust/ql/integration-tests/rust-version/build.rs b/rust/ql/integration-tests/rust-version/build.rs new file mode 100644 index 000000000000..524bc147a5e7 --- /dev/null +++ b/rust/ql/integration-tests/rust-version/build.rs @@ -0,0 +1,9 @@ +fn main() { + let out_dir = std::env::var("OUT_DIR").unwrap(); + std::fs::write( + std::path::Path::new(&out_dir).join("generated.rs"), + "pub fn from_build_script() -> u32 { 42 }\n", + ) + .unwrap(); + println!("cargo:rerun-if-changed=build.rs"); +} diff --git a/rust/ql/integration-tests/rust-version/functions.expected b/rust/ql/integration-tests/rust-version/functions.expected new file mode 100644 index 000000000000..120f73681b6f --- /dev/null +++ b/rust/ql/integration-tests/rust-version/functions.expected @@ -0,0 +1,2 @@ +| from_build_script | +| from_proc_macro | diff --git a/rust/ql/integration-tests/rust-version/functions.ql b/rust/ql/integration-tests/rust-version/functions.ql new file mode 100644 index 000000000000..cf3a29569257 --- /dev/null +++ b/rust/ql/integration-tests/rust-version/functions.ql @@ -0,0 +1,5 @@ +import rust + +from Function f +where f.fromSource() and f.getName().getText() = ["from_build_script", "from_proc_macro"] +select f.getName().getText() diff --git a/rust/ql/integration-tests/rust-version/macros/Cargo.toml b/rust/ql/integration-tests/rust-version/macros/Cargo.toml new file mode 100644 index 000000000000..a49335042bcd --- /dev/null +++ b/rust/ql/integration-tests/rust-version/macros/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "macros" +version = "0.1.0" +edition = "2024" + +[lib] +proc-macro = true diff --git a/rust/ql/integration-tests/rust-version/macros/src/lib.rs b/rust/ql/integration-tests/rust-version/macros/src/lib.rs new file mode 100644 index 000000000000..75f199d1b10c --- /dev/null +++ b/rust/ql/integration-tests/rust-version/macros/src/lib.rs @@ -0,0 +1,6 @@ +extern crate proc_macro; + +#[proc_macro] +pub fn generate(_: proc_macro::TokenStream) -> proc_macro::TokenStream { + "pub fn from_proc_macro() -> u32 { 43 }".parse().unwrap() +} diff --git a/rust/ql/integration-tests/rust-version/src/main.rs b/rust/ql/integration-tests/rust-version/src/main.rs new file mode 100644 index 000000000000..a51c9de834aa --- /dev/null +++ b/rust/ql/integration-tests/rust-version/src/main.rs @@ -0,0 +1,7 @@ +include!(concat!(env!("OUT_DIR"), "/generated.rs")); + +macros::generate!(); + +fn main() { + println!("{} {}", from_build_script(), from_proc_macro()); +} diff --git a/rust/ql/integration-tests/rust-version/test_rust_version.py b/rust/ql/integration-tests/rust-version/test_rust_version.py new file mode 100644 index 000000000000..d334187ca5a6 --- /dev/null +++ b/rust/ql/integration-tests/rust-version/test_rust_version.py @@ -0,0 +1,10 @@ +import pytest + + +@pytest.mark.parametrize("rust_edition", [2024]) +@pytest.mark.parametrize("extra_args", [None, "--offline", "--ignore-rust-version"]) +def test_rust_version(codeql, rust, cargo, extra_args): + env = {} + if extra_args is not None: + env["CODEQL_EXTRACTOR_RUST_OPTION_CARGO_EXTRA_ARGS"] = extra_args + codeql.database.create(_env=env) diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 26e0631f2ced..6cafc9fb900c 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,25 @@ +## 0.2.24 + +### Minor Analysis Improvements + +* The Rust extractor has been upgraded to use `rust-analyzer` version 0.0.357. As a result, the AST exposed by the Rust libraries now includes the `CfgPredExpr` and `CfgPredPat` classes. + +## 0.2.23 + +### Minor Analysis Improvements + +* The Rust extractor has been upgraded to use `rust-analyzer` version 0.0.352. As a result, the AST exposed by the Rust libraries now includes the `AnyAttr` and `DocComment` classes. +* Improve data flow for async blocks when used with `await`. +* Added new flow summary models for the `native-tls`, `async-native-tls`, and `tokio-native-tls` crates. + +## 0.2.22 + +### Minor Analysis Improvements + +* Fix path resolution for `m::{self}` paths where `m` is a trait. +* Added data-flow models for `core::fmt::Write`. This may improve detection of vulnerabilities where tainted data is written to a formatted output buffer. +* The Rust extractor has been upgraded to use `rust-analyzer` version 0.0.347. As a result, the AST exposed by the Rust libraries has changed: new `DerefPat`, `ImplRestriction`, `IncludeBytesExpr`, `MutRestriction`, `NotNull`, `PatternTypeRepr`, and `VisibilityInner` classes have been added; the `FormatArgsArgName` class has been removed in favour of `FormatArgsArg.getName()`, which now returns a `Name`; `Visibility.getPath()` has been moved onto the new `VisibilityInner` class, reachable via `Visibility.getVisibilityInner()`; and `attrs` have been added to the inline assembly nodes, `getMutRestriction()` to `StructField` and `TupleField`, and `getImplRestriction()` to `Trait`. + ## 0.2.21 ### Minor Analysis Improvements diff --git a/rust/ql/lib/change-notes/released/0.2.22.md b/rust/ql/lib/change-notes/released/0.2.22.md new file mode 100644 index 000000000000..e23bf68bd293 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.2.22.md @@ -0,0 +1,7 @@ +## 0.2.22 + +### Minor Analysis Improvements + +* Fix path resolution for `m::{self}` paths where `m` is a trait. +* Added data-flow models for `core::fmt::Write`. This may improve detection of vulnerabilities where tainted data is written to a formatted output buffer. +* The Rust extractor has been upgraded to use `rust-analyzer` version 0.0.347. As a result, the AST exposed by the Rust libraries has changed: new `DerefPat`, `ImplRestriction`, `IncludeBytesExpr`, `MutRestriction`, `NotNull`, `PatternTypeRepr`, and `VisibilityInner` classes have been added; the `FormatArgsArgName` class has been removed in favour of `FormatArgsArg.getName()`, which now returns a `Name`; `Visibility.getPath()` has been moved onto the new `VisibilityInner` class, reachable via `Visibility.getVisibilityInner()`; and `attrs` have been added to the inline assembly nodes, `getMutRestriction()` to `StructField` and `TupleField`, and `getImplRestriction()` to `Trait`. diff --git a/rust/ql/lib/change-notes/released/0.2.23.md b/rust/ql/lib/change-notes/released/0.2.23.md new file mode 100644 index 000000000000..06b7df3d1796 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.2.23.md @@ -0,0 +1,7 @@ +## 0.2.23 + +### Minor Analysis Improvements + +* The Rust extractor has been upgraded to use `rust-analyzer` version 0.0.352. As a result, the AST exposed by the Rust libraries now includes the `AnyAttr` and `DocComment` classes. +* Improve data flow for async blocks when used with `await`. +* Added new flow summary models for the `native-tls`, `async-native-tls`, and `tokio-native-tls` crates. diff --git a/rust/ql/lib/change-notes/released/0.2.24.md b/rust/ql/lib/change-notes/released/0.2.24.md new file mode 100644 index 000000000000..311b37f0a6e5 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.2.24.md @@ -0,0 +1,5 @@ +## 0.2.24 + +### Minor Analysis Improvements + +* The Rust extractor has been upgraded to use `rust-analyzer` version 0.0.357. As a result, the AST exposed by the Rust libraries now includes the `CfgPredExpr` and `CfgPredPat` classes. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index 8d4f094a4664..e4d3f20b369f 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.21 +lastReleaseVersion: 0.2.24 diff --git a/rust/ql/lib/codeql/files/FileSystem.qll b/rust/ql/lib/codeql/files/FileSystem.qll index 93ff7be604e0..883ef83ae546 100644 --- a/rust/ql/lib/codeql/files/FileSystem.qll +++ b/rust/ql/lib/codeql/files/FileSystem.qll @@ -5,6 +5,7 @@ private import codeql.util.FileSystem private import codeql.rust.elements.SourceFile private import codeql.rust.elements.AstNode private import codeql.rust.elements.Comment +private import codeql.rust.elements.DocComment private import codeql.rust.Diagnostics private import codeql.rust.elements.internal.ExtractorStep @@ -66,6 +67,7 @@ class File extends Container, Impl::File { count(int line | exists(AstNode node, Location loc | not node instanceof Comment and + not node instanceof DocComment and not node instanceof SourceFile and loc = node.getLocation() | diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll index f8a182685b64..e7f3c2a4b084 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll @@ -624,6 +624,10 @@ module PatternTrees { override Pat getPat(int i) { i = 0 and result = this.getPat() } } + class DerefPatTree extends PreOrderPatTree, DerefPat { + override Pat getPat(int i) { i = 0 and result = this.getPat() } + } + class RestPatTree extends LeafTree, RestPat { } class LiteralPatTree extends StandardPostOrderTree, LiteralPat { 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 c8b4117a9abb..4bac01f686f9 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll @@ -115,12 +115,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this array expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this array expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this array expression. @@ -229,12 +229,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this asm expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this asm expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this asm expression. @@ -287,12 +287,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this await expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this await expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this await expression. @@ -343,12 +343,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this become expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this become expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this become expression. @@ -399,12 +399,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this binary expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this binary expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this binary expression. @@ -475,12 +475,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this block expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this block expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this block expression. @@ -615,12 +615,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this break expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this break expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this break expression. @@ -691,12 +691,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this call expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this call expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this call expression. @@ -741,12 +741,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this cast expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this cast expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this cast expression. @@ -776,6 +776,56 @@ module MakeCfgNodes Input> { predicate hasTypeRepr() { exists(this.getTypeRepr()) } } + final private class ParentCfgPredExpr extends ParentAstNode, CfgPredExpr { + override predicate relevantChild(AstNode child) { none() } + } + + /** + */ + final class CfgPredExprCfgNode extends CfgNodeFinal, ExprCfgNode { + private CfgPredExpr node; + + CfgPredExprCfgNode() { node = this.getAstNode() } + + /** Gets the underlying `CfgPredExpr`. */ + CfgPredExpr getCfgPredExpr() { result = node } + + /** + * Gets the cfg predicate of this cfg pred expression, if it exists. + */ + CfgPredicate getCfgPredicate() { result = node.getCfgPredicate() } + + /** + * Holds if `getCfgPredicate()` exists. + */ + predicate hasCfgPredicate() { exists(this.getCfgPredicate()) } + } + + final private class ParentCfgPredPat extends ParentAstNode, CfgPredPat { + override predicate relevantChild(AstNode child) { none() } + } + + /** + */ + final class CfgPredPatCfgNode extends CfgNodeFinal, PatCfgNode { + private CfgPredPat node; + + CfgPredPatCfgNode() { node = this.getAstNode() } + + /** Gets the underlying `CfgPredPat`. */ + CfgPredPat getCfgPredPat() { result = node } + + /** + * Gets the cfg predicate of this cfg pred pattern, if it exists. + */ + CfgPredicate getCfgPredicate() { result = node.getCfgPredicate() } + + /** + * Holds if `getCfgPredicate()` exists. + */ + predicate hasCfgPredicate() { exists(this.getCfgPredicate()) } + } + final private class ParentConstBlockPat extends ParentAstNode, ConstBlockPat { override predicate relevantChild(AstNode child) { none() @@ -851,12 +901,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this continue expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this continue expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this continue expression. @@ -874,6 +924,46 @@ module MakeCfgNodes Input> { predicate hasLifetime() { exists(this.getLifetime()) } } + final private class ParentDerefPat extends ParentAstNode, DerefPat { + override predicate relevantChild(AstNode child) { + none() + or + child = this.getPat() + } + } + + /** + * A deref pattern, matching the value behind a smart pointer. This is an experimental + * Rust feature that cannot be written directly in stable Rust; the example below uses + * rust-analyzer's canonical `builtin#deref` syntax for such patterns: + * ```rust + * match x { + * builtin#deref(y) => y, + * _ => 0, + * }; + * ``` + */ + final class DerefPatCfgNode extends CfgNodeFinal, PatCfgNode { + private DerefPat node; + + DerefPatCfgNode() { node = this.getAstNode() } + + /** Gets the underlying `DerefPat`. */ + DerefPat getDerefPat() { result = node } + + /** + * Gets the pattern of this deref pattern, if it exists. + */ + PatCfgNode getPat() { + any(ChildMapping mapping).hasCfgChild(node, node.getPat(), this, result) + } + + /** + * Holds if `getPat()` exists. + */ + predicate hasPat() { exists(this.getPat()) } + } + final private class ParentExpr extends ParentAstNode, Expr { override predicate relevantChild(AstNode child) { none() } } @@ -915,12 +1005,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this field expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this field expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this field expression. @@ -981,12 +1071,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this for expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this for expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this for expression. @@ -1023,6 +1113,8 @@ module MakeCfgNodes Input> { none() or child = this.getExpr() + or + child = this.getName() } } @@ -1041,26 +1133,28 @@ module MakeCfgNodes Input> { FormatArgsArg getFormatArgsArg() { result = node } /** - * Gets the argument name of this format arguments argument, if it exists. + * Gets the expression of this format arguments argument, if it exists. */ - FormatArgsArgName getArgName() { result = node.getArgName() } + ExprCfgNode getExpr() { + any(ChildMapping mapping).hasCfgChild(node, node.getExpr(), this, result) + } /** - * Holds if `getArgName()` exists. + * Holds if `getExpr()` exists. */ - predicate hasArgName() { exists(this.getArgName()) } + predicate hasExpr() { exists(this.getExpr()) } /** - * Gets the expression of this format arguments argument, if it exists. + * Gets the name of this format arguments argument, if it exists. */ - ExprCfgNode getExpr() { - any(ChildMapping mapping).hasCfgChild(node, node.getExpr(), this, result) + NameCfgNode getName() { + any(ChildMapping mapping).hasCfgChild(node, node.getName(), this, result) } /** - * Holds if `getExpr()` exists. + * Holds if `getName()` exists. */ - predicate hasExpr() { exists(this.getExpr()) } + predicate hasName() { exists(this.getName()) } } final private class ParentFormatArgsExpr extends ParentAstNode, FormatArgsExpr { @@ -1111,12 +1205,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this format arguments expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this format arguments expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this format arguments expression. @@ -1204,12 +1298,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this ident pattern (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this ident pattern. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this ident pattern. @@ -1289,12 +1383,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this if expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this if expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this if expression. @@ -1338,6 +1432,25 @@ module MakeCfgNodes Input> { predicate hasThen() { exists(this.getThen()) } } + final private class ParentIncludeBytesExpr extends ParentAstNode, IncludeBytesExpr { + override predicate relevantChild(AstNode child) { none() } + } + + /** + * An expression produced by the built-in `include_bytes!` macro, embedding the contents of a file as a byte array. For example: + * ```rust + * let data = include_bytes!("data.bin"); + * ``` + */ + final class IncludeBytesExprCfgNode extends CfgNodeFinal, ExprCfgNode { + private IncludeBytesExpr node; + + IncludeBytesExprCfgNode() { node = this.getAstNode() } + + /** Gets the underlying `IncludeBytesExpr`. */ + IncludeBytesExpr getIncludeBytesExpr() { result = node } + } + final private class ParentIndexExpr extends ParentAstNode, IndexExpr { override predicate relevantChild(AstNode child) { none() @@ -1366,12 +1479,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this index expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this index expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this index expression. @@ -1458,12 +1571,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this let expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this let expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this let expression. @@ -1529,12 +1642,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this let statement (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this let statement. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this let statement. @@ -1614,12 +1727,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this literal expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this literal expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this literal expression. @@ -1714,12 +1827,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this loop expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this loop expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this loop expression. @@ -1782,12 +1895,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this macro call (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this macro call. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this macro call. @@ -1942,12 +2055,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this match expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this match expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this match expression. @@ -2017,12 +2130,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this method call expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this method call expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this method call expression. @@ -2094,6 +2207,28 @@ module MakeCfgNodes Input> { predicate hasText() { exists(this.getText()) } } + final private class ParentNotNull extends ParentAstNode, NotNull { + override predicate relevantChild(AstNode child) { none() } + } + + /** + * The `!null` pattern used in a pattern type to denote a non-null value. Pattern types + * are an experimental, mostly compiler-internal feature (used in the standard library for + * types such as `NonZero` and `NonNull`) and cannot be written directly in stable Rust; + * the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + * ```rust + * type NonNull = builtin#pattern_type(*const () is !null); + * ``` + */ + final class NotNullCfgNode extends CfgNodeFinal, PatCfgNode { + private NotNull node; + + NotNullCfgNode() { node = this.getAstNode() } + + /** Gets the underlying `NotNull`. */ + NotNull getNotNull() { result = node } + } + final private class ParentOffsetOfExpr extends ParentAstNode, OffsetOfExpr { override predicate relevantChild(AstNode child) { none() } } @@ -2115,12 +2250,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this offset of expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this offset of expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this offset of expression. @@ -2250,12 +2385,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this parameter base (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this parameter base. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this parameter base. @@ -2313,12 +2448,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this path expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this path expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this path expression. @@ -2391,12 +2526,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this prefix expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this prefix expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this prefix expression. @@ -2458,12 +2593,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this range expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this range expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this range expression. @@ -2596,12 +2731,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this reference expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this reference expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this reference expression. @@ -2703,12 +2838,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this rest pattern (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this rest pattern. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this rest pattern. @@ -2748,12 +2883,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this return expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this return expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this return expression. @@ -2971,12 +3106,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this try expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this try expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this try expression. @@ -3023,12 +3158,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this tuple expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this tuple expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this tuple expression. @@ -3159,12 +3294,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this underscore expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this underscore expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this underscore expression. @@ -3201,12 +3336,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this while expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this while expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this while expression. @@ -3272,12 +3407,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this yeet expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this yeet expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this yeet expression. @@ -3325,12 +3460,12 @@ module MakeCfgNodes Input> { /** * Gets the `index`th attr of this yield expression (0-based). */ - Attr getAttr(int index) { result = node.getAttr(index) } + AnyAttr getAttr(int index) { result = node.getAttr(index) } /** * Gets any of the attrs of this yield expression. */ - Attr getAnAttr() { result = this.getAttr(_) } + AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this yield expression. @@ -3511,6 +3646,18 @@ module MakeCfgNodes Input> { cfgNode ) or + pred = "getPat" and + parent = + any(Nodes::DerefPatCfgNode cfgNode, DerefPat astNode | + astNode = cfgNode.getDerefPat() and + child = getDesugared(astNode.getPat()) and + i = -1 and + hasCfgNode(child) and + not child = cfgNode.getPat().getAstNode() + | + cfgNode + ) + or pred = "getContainer" and parent = any(Nodes::FieldExprCfgNode cfgNode, FieldExpr astNode | @@ -3559,6 +3706,18 @@ module MakeCfgNodes Input> { cfgNode ) or + pred = "getName" and + parent = + any(Nodes::FormatArgsArgCfgNode cfgNode, FormatArgsArg astNode | + astNode = cfgNode.getFormatArgsArg() and + child = getDesugared(astNode.getName()) and + i = -1 and + hasCfgNode(child) and + not child = cfgNode.getName().getAstNode() + | + cfgNode + ) + or pred = "getArg" and parent = any(Nodes::FormatArgsExprCfgNode cfgNode, FormatArgsExpr astNode | diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index bf6076e09055..60ec0fca820f 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -62,6 +62,9 @@ final class DataFlowCall extends TDataFlowCall { /** Gets the underlying call, if any. */ Call asCall() { this = TCall(result) } + /** Gets the underlying await expression, if any. */ + AwaitExpr asAwaitExpr() { this = TAwaitExpr(result) } + predicate isImplicitDerefCall(Expr e, DerefChain derefChain, int i, Function target) { this = TImplicitDerefCall(e, derefChain, i, target) } @@ -73,7 +76,8 @@ final class DataFlowCall extends TDataFlowCall { } DataFlowCallable getEnclosingCallable() { - result.asCfgScope() = this.asCall().getEnclosingCfgScope() + result.asCfgScope() = + [this.asCall().getEnclosingCfgScope(), this.asAwaitExpr().getEnclosingCfgScope()] or result.asCfgScope() = any(Expr e | this.isImplicitDerefCall(e, _, _, _)).getEnclosingCfgScope() or @@ -81,7 +85,7 @@ final class DataFlowCall extends TDataFlowCall { } string toString() { - result = this.asCall().toString() + result = [this.asCall().toString(), this.asAwaitExpr().toString()] or exists(Expr e, DerefChain derefChain, int i | this.isImplicitDerefCall(e, derefChain, i, _) and @@ -97,7 +101,7 @@ final class DataFlowCall extends TDataFlowCall { } Location getLocation() { - result = this.asCall().getLocation() + result = [this.asCall().getLocation(), this.asAwaitExpr().getLocation()] or result = any(Expr e | this.isImplicitDerefCall(e, _, _, _)).getLocation() } @@ -1004,7 +1008,11 @@ module RustDataFlowGen implements InputSig */ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { ( - receiver.asExpr() = call.asCall().(CallExprImpl::DynamicCallExpr).getFunction() + receiver.asExpr() = + [ + call.asCall().(CallExprImpl::DynamicCallExpr).getFunction(), + call.asAwaitExpr().getExpr() + ] or call.isSummaryCall(_, receiver.(FlowSummaryNode).getSummaryNode()) ) and @@ -1176,6 +1184,7 @@ private module Cached { Stages::DataFlowStage::ref() and call.hasEnclosingCfgScope() } or + TAwaitExpr(AwaitExpr await) { await.hasEnclosingCfgScope() } or TImplicitDerefCall(Expr e, DerefChain derefChain, int i, Function target) { TypeInference::implicitDerefChainBorrow(e, derefChain, _) and target = derefChain.getElement(i).getDerefFunction() and diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll index cbe638d430c4..b82c0f9221a1 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll @@ -435,6 +435,20 @@ final class ClosureArgumentNode extends ArgumentNode, ExprNode { } } +/** + * A data flow node that represents the run-time representation of an async + * block passed into its body when awaited. + */ +final class AsyncBlockArgumentNode extends ArgumentNode, ExprNode { + private AwaitExpr await; + + AsyncBlockArgumentNode() { this.asExpr() = await.getExpr() } + + override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { + call.asAwaitExpr() = await and pos.isClosureSelf() + } +} + /** An SSA node. */ class SsaNode extends Node, TSsaNode { SsaImpl::DataFlowIntegration::SsaNode node; @@ -485,12 +499,17 @@ final private class ExprOutNode extends ExprNode, OutNode { not call instanceof DerefExpr and // Handled by `DerefOutNode` not call instanceof IndexExpr // Handled by `IndexOutNode` ) + or + this.asExpr() instanceof AwaitExpr } /** Gets the underlying call node that includes this out node. */ override DataFlowCall getCall(ReturnKind kind) { result.asCall() = n and kind = TNormalReturnKind() + or + result.asAwaitExpr() = n and + kind = TNormalReturnKind() } } diff --git a/rust/ql/lib/codeql/rust/elements.qll b/rust/ql/lib/codeql/rust/elements.qll index fdfe2c0cacf0..10107841d52d 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.AnyAttr import codeql.rust.elements.ArgList import codeql.rust.elements.ArrayExpr import codeql.rust.elements.ArrayListExpr @@ -43,6 +44,8 @@ import codeql.rust.elements.CfgAtom import codeql.rust.elements.CfgAttrMeta import codeql.rust.elements.CfgComposite import codeql.rust.elements.CfgMeta +import codeql.rust.elements.CfgPredExpr +import codeql.rust.elements.CfgPredPat import codeql.rust.elements.CfgPredicate import codeql.rust.elements.ClosureExpr import codeql.rust.elements.Comment @@ -52,6 +55,8 @@ import codeql.rust.elements.ConstBlockPat import codeql.rust.elements.ConstParam import codeql.rust.elements.ContinueExpr import codeql.rust.elements.Crate +import codeql.rust.elements.DerefPat +import codeql.rust.elements.DocComment import codeql.rust.elements.DynTraitTypeRepr import codeql.rust.elements.Element import codeql.rust.elements.Enum @@ -69,7 +74,6 @@ import codeql.rust.elements.ForExpr import codeql.rust.elements.ForTypeRepr import codeql.rust.elements.Format import codeql.rust.elements.FormatArgsArg -import codeql.rust.elements.FormatArgsArgName import codeql.rust.elements.FormatArgsExpr import codeql.rust.elements.FormatArgument import codeql.rust.elements.FormatTemplateVariableAccess @@ -81,7 +85,9 @@ import codeql.rust.elements.GenericParamList import codeql.rust.elements.IdentPat import codeql.rust.elements.IfExpr import codeql.rust.elements.Impl +import codeql.rust.elements.ImplRestriction import codeql.rust.elements.ImplTraitTypeRepr +import codeql.rust.elements.IncludeBytesExpr import codeql.rust.elements.IndexExpr import codeql.rust.elements.InferTypeRepr import codeql.rust.elements.Item @@ -115,9 +121,11 @@ import codeql.rust.elements.Meta import codeql.rust.elements.MethodCallExpr import codeql.rust.elements.Missing import codeql.rust.elements.Module +import codeql.rust.elements.MutRestriction import codeql.rust.elements.Name import codeql.rust.elements.NameRef import codeql.rust.elements.NeverTypeRepr +import codeql.rust.elements.NotNull import codeql.rust.elements.OffsetOfExpr import codeql.rust.elements.OrPat import codeql.rust.elements.Param @@ -136,6 +144,7 @@ import codeql.rust.elements.PathMeta import codeql.rust.elements.PathPat import codeql.rust.elements.PathSegment import codeql.rust.elements.PathTypeRepr +import codeql.rust.elements.PatternTypeRepr import codeql.rust.elements.PrefixExpr import codeql.rust.elements.PtrTypeRepr import codeql.rust.elements.RangeExpr @@ -196,6 +205,7 @@ import codeql.rust.elements.UseTreeList import codeql.rust.elements.Variant import codeql.rust.elements.VariantList import codeql.rust.elements.Visibility +import codeql.rust.elements.VisibilityInner import codeql.rust.elements.WhereClause import codeql.rust.elements.WherePred import codeql.rust.elements.WhileExpr diff --git a/rust/ql/lib/codeql/rust/elements/AnyAttr.qll b/rust/ql/lib/codeql/rust/elements/AnyAttr.qll new file mode 100644 index 000000000000..45ab68eaa5a6 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/AnyAttr.qll @@ -0,0 +1,9 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `AnyAttr`. + */ + +private import internal.AnyAttrImpl +import codeql.rust.elements.AstNode + +final class AnyAttr = Impl::AnyAttr; diff --git a/rust/ql/lib/codeql/rust/elements/ArrayExpr.qll b/rust/ql/lib/codeql/rust/elements/ArrayExpr.qll index b1895a1295a0..11880de78c6a 100644 --- a/rust/ql/lib/codeql/rust/elements/ArrayExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/ArrayExpr.qll @@ -4,7 +4,7 @@ */ private import internal.ArrayExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll b/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll index 253dcdfc9fa4..d49527e50132 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll @@ -4,6 +4,7 @@ */ private import internal.AsmClobberAbiImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AsmPiece /** diff --git a/rust/ql/lib/codeql/rust/elements/AsmExpr.qll b/rust/ql/lib/codeql/rust/elements/AsmExpr.qll index a4b588ff985b..cdd114c0c987 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmExpr.qll @@ -4,8 +4,8 @@ */ private import internal.AsmExprImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AsmPiece -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.Item diff --git a/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll b/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll index cb54a585539a..b650aa27c662 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll @@ -4,6 +4,7 @@ */ private import internal.AsmOperandNamedImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AsmOperand import codeql.rust.elements.AsmPiece import codeql.rust.elements.Name diff --git a/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll b/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll index dc82f9cb4afd..045de1fecce3 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll @@ -4,6 +4,7 @@ */ private import internal.AsmOptionsListImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AsmOption import codeql.rust.elements.AsmPiece diff --git a/rust/ql/lib/codeql/rust/elements/AssocItemList.qll b/rust/ql/lib/codeql/rust/elements/AssocItemList.qll index 86ae3df7a6b1..ae0be6b190f2 100644 --- a/rust/ql/lib/codeql/rust/elements/AssocItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/AssocItemList.qll @@ -4,9 +4,9 @@ */ private import internal.AssocItemListImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AssocItem import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr /** * A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. diff --git a/rust/ql/lib/codeql/rust/elements/Attr.qll b/rust/ql/lib/codeql/rust/elements/Attr.qll index 176d8987f7f0..b97465119278 100644 --- a/rust/ql/lib/codeql/rust/elements/Attr.qll +++ b/rust/ql/lib/codeql/rust/elements/Attr.qll @@ -4,7 +4,7 @@ */ private import internal.AttrImpl -import codeql.rust.elements.AstNode +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Meta /** diff --git a/rust/ql/lib/codeql/rust/elements/AwaitExpr.qll b/rust/ql/lib/codeql/rust/elements/AwaitExpr.qll index 16c6790294c2..606aceee2e12 100644 --- a/rust/ql/lib/codeql/rust/elements/AwaitExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/AwaitExpr.qll @@ -4,7 +4,7 @@ */ private import internal.AwaitExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/BecomeExpr.qll b/rust/ql/lib/codeql/rust/elements/BecomeExpr.qll index 0348b8628497..1de66d732ba3 100644 --- a/rust/ql/lib/codeql/rust/elements/BecomeExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/BecomeExpr.qll @@ -4,7 +4,7 @@ */ private import internal.BecomeExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/BinaryExpr.qll b/rust/ql/lib/codeql/rust/elements/BinaryExpr.qll index 39df861aba8d..d36afaaad8e4 100644 --- a/rust/ql/lib/codeql/rust/elements/BinaryExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/BinaryExpr.qll @@ -4,7 +4,7 @@ */ private import internal.BinaryExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/BlockExpr.qll b/rust/ql/lib/codeql/rust/elements/BlockExpr.qll index 8a85ca21310f..30bd15e08c4f 100644 --- a/rust/ql/lib/codeql/rust/elements/BlockExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/BlockExpr.qll @@ -4,7 +4,7 @@ */ private import internal.BlockExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.LabelableExpr import codeql.rust.elements.StmtList import codeql.rust.elements.TryBlockModifier diff --git a/rust/ql/lib/codeql/rust/elements/BreakExpr.qll b/rust/ql/lib/codeql/rust/elements/BreakExpr.qll index 8aec2220dc7a..5e0fb18eb93e 100644 --- a/rust/ql/lib/codeql/rust/elements/BreakExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/BreakExpr.qll @@ -4,7 +4,7 @@ */ private import internal.BreakExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.Lifetime diff --git a/rust/ql/lib/codeql/rust/elements/CallExpr.qll b/rust/ql/lib/codeql/rust/elements/CallExpr.qll index 1344af3a124a..cd245a0cf9c1 100644 --- a/rust/ql/lib/codeql/rust/elements/CallExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/CallExpr.qll @@ -4,8 +4,8 @@ */ private import internal.CallExprImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ArgList -import codeql.rust.elements.Attr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/Callable.qll b/rust/ql/lib/codeql/rust/elements/Callable.qll index b2088f08f66a..7b6789d135f4 100644 --- a/rust/ql/lib/codeql/rust/elements/Callable.qll +++ b/rust/ql/lib/codeql/rust/elements/Callable.qll @@ -4,8 +4,8 @@ */ private import internal.CallableImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.Param import codeql.rust.elements.ParamList diff --git a/rust/ql/lib/codeql/rust/elements/CastExpr.qll b/rust/ql/lib/codeql/rust/elements/CastExpr.qll index 968a6062a15e..2b40353d3574 100644 --- a/rust/ql/lib/codeql/rust/elements/CastExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/CastExpr.qll @@ -4,7 +4,7 @@ */ private import internal.CastExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.TypeRepr diff --git a/rust/ql/lib/codeql/rust/elements/CfgPredExpr.qll b/rust/ql/lib/codeql/rust/elements/CfgPredExpr.qll new file mode 100644 index 000000000000..955cd49e4c15 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/CfgPredExpr.qll @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `CfgPredExpr`. + */ + +private import internal.CfgPredExprImpl +import codeql.rust.elements.CfgPredicate +import codeql.rust.elements.Expr + +final class CfgPredExpr = Impl::CfgPredExpr; diff --git a/rust/ql/lib/codeql/rust/elements/CfgPredPat.qll b/rust/ql/lib/codeql/rust/elements/CfgPredPat.qll new file mode 100644 index 000000000000..1a6dfe04135b --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/CfgPredPat.qll @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `CfgPredPat`. + */ + +private import internal.CfgPredPatImpl +import codeql.rust.elements.CfgPredicate +import codeql.rust.elements.Pat + +final class CfgPredPat = Impl::CfgPredPat; diff --git a/rust/ql/lib/codeql/rust/elements/Comment.qll b/rust/ql/lib/codeql/rust/elements/Comment.qll index 9a830ad29d97..c1c801a8bf6d 100644 --- a/rust/ql/lib/codeql/rust/elements/Comment.qll +++ b/rust/ql/lib/codeql/rust/elements/Comment.qll @@ -12,6 +12,7 @@ import codeql.rust.elements.Token * ```rust * // this is a comment * /// This is a doc comment + * fn documented() {} * ``` */ final class Comment = Impl::Comment; diff --git a/rust/ql/lib/codeql/rust/elements/Const.qll b/rust/ql/lib/codeql/rust/elements/Const.qll index 39aea3e25dc4..383995338a8e 100644 --- a/rust/ql/lib/codeql/rust/elements/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/Const.qll @@ -4,8 +4,8 @@ */ private import internal.ConstImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AssocItem -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.GenericParamList import codeql.rust.elements.Name diff --git a/rust/ql/lib/codeql/rust/elements/ConstParam.qll b/rust/ql/lib/codeql/rust/elements/ConstParam.qll index c0135100863f..5c1fe12d6277 100644 --- a/rust/ql/lib/codeql/rust/elements/ConstParam.qll +++ b/rust/ql/lib/codeql/rust/elements/ConstParam.qll @@ -4,7 +4,7 @@ */ private import internal.ConstParamImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ConstArg import codeql.rust.elements.GenericParam import codeql.rust.elements.Name diff --git a/rust/ql/lib/codeql/rust/elements/ContinueExpr.qll b/rust/ql/lib/codeql/rust/elements/ContinueExpr.qll index 7db17ff82777..ac5f512ca916 100644 --- a/rust/ql/lib/codeql/rust/elements/ContinueExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/ContinueExpr.qll @@ -4,7 +4,7 @@ */ private import internal.ContinueExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.Lifetime diff --git a/rust/ql/lib/codeql/rust/elements/DerefPat.qll b/rust/ql/lib/codeql/rust/elements/DerefPat.qll new file mode 100644 index 000000000000..ba4364e92962 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/DerefPat.qll @@ -0,0 +1,20 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `DerefPat`. + */ + +private import internal.DerefPatImpl +import codeql.rust.elements.Pat + +/** + * A deref pattern, matching the value behind a smart pointer. This is an experimental + * Rust feature that cannot be written directly in stable Rust; the example below uses + * rust-analyzer's canonical `builtin#deref` syntax for such patterns: + * ```rust + * match x { + * builtin#deref(y) => y, + * _ => 0, + * }; + * ``` + */ +final class DerefPat = Impl::DerefPat; diff --git a/rust/ql/lib/codeql/rust/elements/DocComment.qll b/rust/ql/lib/codeql/rust/elements/DocComment.qll new file mode 100644 index 000000000000..ef2e3d7762a3 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/DocComment.qll @@ -0,0 +1,18 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `DocComment`. + */ + +private import internal.DocCommentImpl +import codeql.rust.elements.AnyAttr + +/** + * A documentation comment. + * + * For example: + * ```rust + * /// Documents `documented`. + * fn documented() {} + * ``` + */ +final class DocComment = Impl::DocComment; diff --git a/rust/ql/lib/codeql/rust/elements/ExternBlock.qll b/rust/ql/lib/codeql/rust/elements/ExternBlock.qll index 7b191ae07a64..dc90cfe32095 100644 --- a/rust/ql/lib/codeql/rust/elements/ExternBlock.qll +++ b/rust/ql/lib/codeql/rust/elements/ExternBlock.qll @@ -5,7 +5,7 @@ private import internal.ExternBlockImpl import codeql.rust.elements.Abi -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ExternItemList import codeql.rust.elements.Item diff --git a/rust/ql/lib/codeql/rust/elements/ExternCrate.qll b/rust/ql/lib/codeql/rust/elements/ExternCrate.qll index b54450cadf43..949d30c8f2d4 100644 --- a/rust/ql/lib/codeql/rust/elements/ExternCrate.qll +++ b/rust/ql/lib/codeql/rust/elements/ExternCrate.qll @@ -4,7 +4,7 @@ */ private import internal.ExternCrateImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Item import codeql.rust.elements.NameRef import codeql.rust.elements.Rename diff --git a/rust/ql/lib/codeql/rust/elements/ExternItemList.qll b/rust/ql/lib/codeql/rust/elements/ExternItemList.qll index fa6aee3d1ee7..11243a98fe51 100644 --- a/rust/ql/lib/codeql/rust/elements/ExternItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/ExternItemList.qll @@ -4,8 +4,8 @@ */ private import internal.ExternItemListImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.ExternItem /** diff --git a/rust/ql/lib/codeql/rust/elements/FieldExpr.qll b/rust/ql/lib/codeql/rust/elements/FieldExpr.qll index ab8a9594954c..0ddfac6524c4 100644 --- a/rust/ql/lib/codeql/rust/elements/FieldExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/FieldExpr.qll @@ -4,7 +4,7 @@ */ private import internal.FieldExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.NameRef diff --git a/rust/ql/lib/codeql/rust/elements/ForExpr.qll b/rust/ql/lib/codeql/rust/elements/ForExpr.qll index 10247d0b909b..0702aa5e7942 100644 --- a/rust/ql/lib/codeql/rust/elements/ForExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/ForExpr.qll @@ -4,7 +4,7 @@ */ private import internal.ForExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.LoopingExpr import codeql.rust.elements.Pat diff --git a/rust/ql/lib/codeql/rust/elements/FormatArgsArg.qll b/rust/ql/lib/codeql/rust/elements/FormatArgsArg.qll index 2cb12d291fb1..4946f9789304 100644 --- a/rust/ql/lib/codeql/rust/elements/FormatArgsArg.qll +++ b/rust/ql/lib/codeql/rust/elements/FormatArgsArg.qll @@ -6,7 +6,7 @@ private import internal.FormatArgsArgImpl import codeql.rust.elements.AstNode import codeql.rust.elements.Expr -import codeql.rust.elements.FormatArgsArgName +import codeql.rust.elements.Name /** * A FormatArgsArg. For example the `"world"` in: diff --git a/rust/ql/lib/codeql/rust/elements/FormatArgsArgName.qll b/rust/ql/lib/codeql/rust/elements/FormatArgsArgName.qll deleted file mode 100644 index 93c5b2185701..000000000000 --- a/rust/ql/lib/codeql/rust/elements/FormatArgsArgName.qll +++ /dev/null @@ -1,9 +0,0 @@ -// generated by codegen, do not edit -/** - * This module provides the public class `FormatArgsArgName`. - */ - -private import internal.FormatArgsArgNameImpl -import codeql.rust.elements.AstNode - -final class FormatArgsArgName = Impl::FormatArgsArgName; diff --git a/rust/ql/lib/codeql/rust/elements/FormatArgsExpr.qll b/rust/ql/lib/codeql/rust/elements/FormatArgsExpr.qll index 419a48a53351..850944f426c6 100644 --- a/rust/ql/lib/codeql/rust/elements/FormatArgsExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/FormatArgsExpr.qll @@ -4,7 +4,7 @@ */ private import internal.FormatArgsExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.Format import codeql.rust.elements.FormatArgsArg diff --git a/rust/ql/lib/codeql/rust/elements/IdentPat.qll b/rust/ql/lib/codeql/rust/elements/IdentPat.qll index 91ad47b42e1f..5b4431d39cbc 100644 --- a/rust/ql/lib/codeql/rust/elements/IdentPat.qll +++ b/rust/ql/lib/codeql/rust/elements/IdentPat.qll @@ -4,7 +4,7 @@ */ private import internal.IdentPatImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Name import codeql.rust.elements.Pat diff --git a/rust/ql/lib/codeql/rust/elements/IfExpr.qll b/rust/ql/lib/codeql/rust/elements/IfExpr.qll index d3689b9957a8..628154204726 100644 --- a/rust/ql/lib/codeql/rust/elements/IfExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/IfExpr.qll @@ -4,7 +4,7 @@ */ private import internal.IfExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.BlockExpr import codeql.rust.elements.Expr diff --git a/rust/ql/lib/codeql/rust/elements/Impl.qll b/rust/ql/lib/codeql/rust/elements/Impl.qll index 3324e05dc516..b21dac93e3f3 100644 --- a/rust/ql/lib/codeql/rust/elements/Impl.qll +++ b/rust/ql/lib/codeql/rust/elements/Impl.qll @@ -4,8 +4,8 @@ */ private import internal.ImplImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AssocItemList -import codeql.rust.elements.Attr import codeql.rust.elements.GenericParamList import codeql.rust.elements.Item import codeql.rust.elements.TypeRepr diff --git a/rust/ql/lib/codeql/rust/elements/ImplRestriction.qll b/rust/ql/lib/codeql/rust/elements/ImplRestriction.qll new file mode 100644 index 000000000000..23bd1c0ace6e --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/ImplRestriction.qll @@ -0,0 +1,13 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `ImplRestriction`. + */ + +private import internal.ImplRestrictionImpl +import codeql.rust.elements.AstNode +import codeql.rust.elements.VisibilityInner + +/** + * An implementation restriction, limiting where a trait can be implemented. For example the `impl(crate)` restriction (an unstable feature). + */ +final class ImplRestriction = Impl::ImplRestriction; diff --git a/rust/ql/lib/codeql/rust/elements/IncludeBytesExpr.qll b/rust/ql/lib/codeql/rust/elements/IncludeBytesExpr.qll new file mode 100644 index 000000000000..f6aff4cf27f0 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/IncludeBytesExpr.qll @@ -0,0 +1,15 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `IncludeBytesExpr`. + */ + +private import internal.IncludeBytesExprImpl +import codeql.rust.elements.Expr + +/** + * An expression produced by the built-in `include_bytes!` macro, embedding the contents of a file as a byte array. For example: + * ```rust + * let data = include_bytes!("data.bin"); + * ``` + */ +final class IncludeBytesExpr = Impl::IncludeBytesExpr; diff --git a/rust/ql/lib/codeql/rust/elements/IndexExpr.qll b/rust/ql/lib/codeql/rust/elements/IndexExpr.qll index ea19aad353d0..27a192be611c 100644 --- a/rust/ql/lib/codeql/rust/elements/IndexExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/IndexExpr.qll @@ -4,7 +4,7 @@ */ private import internal.IndexExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/ItemList.qll b/rust/ql/lib/codeql/rust/elements/ItemList.qll index fe912d5402ad..bdbef5fdf87d 100644 --- a/rust/ql/lib/codeql/rust/elements/ItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/ItemList.qll @@ -4,8 +4,8 @@ */ private import internal.ItemListImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.Item /** diff --git a/rust/ql/lib/codeql/rust/elements/LetExpr.qll b/rust/ql/lib/codeql/rust/elements/LetExpr.qll index 0792a10cbb7b..7fd4fcc6bb55 100644 --- a/rust/ql/lib/codeql/rust/elements/LetExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/LetExpr.qll @@ -4,7 +4,7 @@ */ private import internal.LetExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.Pat diff --git a/rust/ql/lib/codeql/rust/elements/LetStmt.qll b/rust/ql/lib/codeql/rust/elements/LetStmt.qll index 48960e3a5c60..0af452514ef4 100644 --- a/rust/ql/lib/codeql/rust/elements/LetStmt.qll +++ b/rust/ql/lib/codeql/rust/elements/LetStmt.qll @@ -4,7 +4,7 @@ */ private import internal.LetStmtImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.LetElse import codeql.rust.elements.Pat diff --git a/rust/ql/lib/codeql/rust/elements/LifetimeParam.qll b/rust/ql/lib/codeql/rust/elements/LifetimeParam.qll index c47be28fee71..7cb12444bd39 100644 --- a/rust/ql/lib/codeql/rust/elements/LifetimeParam.qll +++ b/rust/ql/lib/codeql/rust/elements/LifetimeParam.qll @@ -4,7 +4,7 @@ */ private import internal.LifetimeParamImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.GenericParam import codeql.rust.elements.Lifetime import codeql.rust.elements.TypeBoundList diff --git a/rust/ql/lib/codeql/rust/elements/LiteralExpr.qll b/rust/ql/lib/codeql/rust/elements/LiteralExpr.qll index 91fcd8910cef..691d3ce1981d 100644 --- a/rust/ql/lib/codeql/rust/elements/LiteralExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/LiteralExpr.qll @@ -4,7 +4,7 @@ */ private import internal.LiteralExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/LoopExpr.qll b/rust/ql/lib/codeql/rust/elements/LoopExpr.qll index cdb6d743b50f..21e01a5c2d66 100644 --- a/rust/ql/lib/codeql/rust/elements/LoopExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/LoopExpr.qll @@ -4,7 +4,7 @@ */ private import internal.LoopExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.LoopingExpr /** diff --git a/rust/ql/lib/codeql/rust/elements/MacroCall.qll b/rust/ql/lib/codeql/rust/elements/MacroCall.qll index 240ff7ab97d5..6f3e8d33e212 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroCall.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroCall.qll @@ -4,9 +4,9 @@ */ private import internal.MacroCallImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AssocItem import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.ExternItem import codeql.rust.elements.Path import codeql.rust.elements.TokenTree diff --git a/rust/ql/lib/codeql/rust/elements/MacroDef.qll b/rust/ql/lib/codeql/rust/elements/MacroDef.qll index 9bd06c4d156c..60d96843b2b4 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroDef.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroDef.qll @@ -4,7 +4,7 @@ */ private import internal.MacroDefImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Item import codeql.rust.elements.Name import codeql.rust.elements.TokenTree diff --git a/rust/ql/lib/codeql/rust/elements/MacroRules.qll b/rust/ql/lib/codeql/rust/elements/MacroRules.qll index 776069c2eb9c..78048a772329 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroRules.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroRules.qll @@ -4,7 +4,7 @@ */ private import internal.MacroRulesImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Item import codeql.rust.elements.Name import codeql.rust.elements.TokenTree diff --git a/rust/ql/lib/codeql/rust/elements/MatchArm.qll b/rust/ql/lib/codeql/rust/elements/MatchArm.qll index 39505198021f..893280e2fbb7 100644 --- a/rust/ql/lib/codeql/rust/elements/MatchArm.qll +++ b/rust/ql/lib/codeql/rust/elements/MatchArm.qll @@ -4,8 +4,8 @@ */ private import internal.MatchArmImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.MatchGuard import codeql.rust.elements.Pat diff --git a/rust/ql/lib/codeql/rust/elements/MatchArmList.qll b/rust/ql/lib/codeql/rust/elements/MatchArmList.qll index 664db7b53f2b..0133dbe18fdf 100644 --- a/rust/ql/lib/codeql/rust/elements/MatchArmList.qll +++ b/rust/ql/lib/codeql/rust/elements/MatchArmList.qll @@ -4,8 +4,8 @@ */ private import internal.MatchArmListImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.MatchArm /** diff --git a/rust/ql/lib/codeql/rust/elements/MatchExpr.qll b/rust/ql/lib/codeql/rust/elements/MatchExpr.qll index ec1a5c538a4f..02d54ac281eb 100644 --- a/rust/ql/lib/codeql/rust/elements/MatchExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/MatchExpr.qll @@ -4,7 +4,7 @@ */ private import internal.MatchExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.MatchArmList diff --git a/rust/ql/lib/codeql/rust/elements/MethodCallExpr.qll b/rust/ql/lib/codeql/rust/elements/MethodCallExpr.qll index 3ac0fccc42d5..b9157530b3c2 100644 --- a/rust/ql/lib/codeql/rust/elements/MethodCallExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/MethodCallExpr.qll @@ -4,8 +4,8 @@ */ private import internal.MethodCallExprImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ArgList -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.GenericArgList import codeql.rust.elements.NameRef diff --git a/rust/ql/lib/codeql/rust/elements/Module.qll b/rust/ql/lib/codeql/rust/elements/Module.qll index efb31c3e74f6..233c7973cd0f 100644 --- a/rust/ql/lib/codeql/rust/elements/Module.qll +++ b/rust/ql/lib/codeql/rust/elements/Module.qll @@ -4,7 +4,7 @@ */ private import internal.ModuleImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Item import codeql.rust.elements.ItemList import codeql.rust.elements.Name diff --git a/rust/ql/lib/codeql/rust/elements/MutRestriction.qll b/rust/ql/lib/codeql/rust/elements/MutRestriction.qll new file mode 100644 index 000000000000..57a938005b1d --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/MutRestriction.qll @@ -0,0 +1,13 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `MutRestriction`. + */ + +private import internal.MutRestrictionImpl +import codeql.rust.elements.AstNode +import codeql.rust.elements.VisibilityInner + +/** + * A mutability restriction, limiting where a field can be mutated. For example the `mut(crate)` restriction (an unstable feature). + */ +final class MutRestriction = Impl::MutRestriction; diff --git a/rust/ql/lib/codeql/rust/elements/NotNull.qll b/rust/ql/lib/codeql/rust/elements/NotNull.qll new file mode 100644 index 000000000000..62489c2da7b3 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/NotNull.qll @@ -0,0 +1,18 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `NotNull`. + */ + +private import internal.NotNullImpl +import codeql.rust.elements.Pat + +/** + * The `!null` pattern used in a pattern type to denote a non-null value. Pattern types + * are an experimental, mostly compiler-internal feature (used in the standard library for + * types such as `NonZero` and `NonNull`) and cannot be written directly in stable Rust; + * the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + * ```rust + * type NonNull = builtin#pattern_type(*const () is !null); + * ``` + */ +final class NotNull = Impl::NotNull; diff --git a/rust/ql/lib/codeql/rust/elements/OffsetOfExpr.qll b/rust/ql/lib/codeql/rust/elements/OffsetOfExpr.qll index 4136158913a4..6194776ad332 100644 --- a/rust/ql/lib/codeql/rust/elements/OffsetOfExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/OffsetOfExpr.qll @@ -4,7 +4,7 @@ */ private import internal.OffsetOfExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.NameRef import codeql.rust.elements.TypeRepr diff --git a/rust/ql/lib/codeql/rust/elements/ParamBase.qll b/rust/ql/lib/codeql/rust/elements/ParamBase.qll index ca46906a14fe..27729d6acfa4 100644 --- a/rust/ql/lib/codeql/rust/elements/ParamBase.qll +++ b/rust/ql/lib/codeql/rust/elements/ParamBase.qll @@ -4,8 +4,8 @@ */ private import internal.ParamBaseImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.TypeRepr /** diff --git a/rust/ql/lib/codeql/rust/elements/ParenExpr.qll b/rust/ql/lib/codeql/rust/elements/ParenExpr.qll index 1233ac2b6af2..27da607e861c 100644 --- a/rust/ql/lib/codeql/rust/elements/ParenExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/ParenExpr.qll @@ -4,7 +4,7 @@ */ private import internal.ParenExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/PathExpr.qll b/rust/ql/lib/codeql/rust/elements/PathExpr.qll index 8d423d766875..99d20ebc2fb9 100644 --- a/rust/ql/lib/codeql/rust/elements/PathExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/PathExpr.qll @@ -4,7 +4,7 @@ */ private import internal.PathExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.PathAstNode import codeql.rust.elements.PathExprBase diff --git a/rust/ql/lib/codeql/rust/elements/PatternTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/PatternTypeRepr.qll new file mode 100644 index 000000000000..c54b6b806af8 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/PatternTypeRepr.qll @@ -0,0 +1,18 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `PatternTypeRepr`. + */ + +private import internal.PatternTypeReprImpl +import codeql.rust.elements.Pat +import codeql.rust.elements.TypeRepr + +/** + * A pattern type, constraining a type to values matching a pattern. Pattern types are an + * experimental, mostly compiler-internal feature and cannot be written directly in stable + * Rust; the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + * ```rust + * type NonZero = builtin#pattern_type(u32 is 1..); + * ``` + */ +final class PatternTypeRepr = Impl::PatternTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/PrefixExpr.qll b/rust/ql/lib/codeql/rust/elements/PrefixExpr.qll index 8bc627a39e7d..3c19b77a9495 100644 --- a/rust/ql/lib/codeql/rust/elements/PrefixExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/PrefixExpr.qll @@ -4,7 +4,7 @@ */ private import internal.PrefixExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/RangeExpr.qll b/rust/ql/lib/codeql/rust/elements/RangeExpr.qll index 78fec598e0cd..05aabde10f3b 100644 --- a/rust/ql/lib/codeql/rust/elements/RangeExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/RangeExpr.qll @@ -4,7 +4,7 @@ */ private import internal.RangeExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/RefExpr.qll b/rust/ql/lib/codeql/rust/elements/RefExpr.qll index 8bbc0a8c87ec..5ff1a527d641 100644 --- a/rust/ql/lib/codeql/rust/elements/RefExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/RefExpr.qll @@ -4,7 +4,7 @@ */ private import internal.RefExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/RestPat.qll b/rust/ql/lib/codeql/rust/elements/RestPat.qll index 9c20f0c5c9b6..313ebd83765b 100644 --- a/rust/ql/lib/codeql/rust/elements/RestPat.qll +++ b/rust/ql/lib/codeql/rust/elements/RestPat.qll @@ -4,7 +4,7 @@ */ private import internal.RestPatImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Pat /** diff --git a/rust/ql/lib/codeql/rust/elements/ReturnExpr.qll b/rust/ql/lib/codeql/rust/elements/ReturnExpr.qll index 73a499ec7876..5db2b121054c 100644 --- a/rust/ql/lib/codeql/rust/elements/ReturnExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/ReturnExpr.qll @@ -4,7 +4,7 @@ */ private import internal.ReturnExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/SourceFile.qll b/rust/ql/lib/codeql/rust/elements/SourceFile.qll index aaa7f1d7be48..e94ef5ce5595 100644 --- a/rust/ql/lib/codeql/rust/elements/SourceFile.qll +++ b/rust/ql/lib/codeql/rust/elements/SourceFile.qll @@ -4,8 +4,8 @@ */ private import internal.SourceFileImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.Item /** diff --git a/rust/ql/lib/codeql/rust/elements/Static.qll b/rust/ql/lib/codeql/rust/elements/Static.qll index ae6e8b3b6a46..74a9e2fe8472 100644 --- a/rust/ql/lib/codeql/rust/elements/Static.qll +++ b/rust/ql/lib/codeql/rust/elements/Static.qll @@ -4,7 +4,7 @@ */ private import internal.StaticImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.ExternItem import codeql.rust.elements.Name diff --git a/rust/ql/lib/codeql/rust/elements/StmtList.qll b/rust/ql/lib/codeql/rust/elements/StmtList.qll index 9401cb99084c..924529584e8a 100644 --- a/rust/ql/lib/codeql/rust/elements/StmtList.qll +++ b/rust/ql/lib/codeql/rust/elements/StmtList.qll @@ -4,8 +4,8 @@ */ private import internal.StmtListImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.Stmt diff --git a/rust/ql/lib/codeql/rust/elements/StructExprField.qll b/rust/ql/lib/codeql/rust/elements/StructExprField.qll index eb63860cf9a4..7ee69ef661c4 100644 --- a/rust/ql/lib/codeql/rust/elements/StructExprField.qll +++ b/rust/ql/lib/codeql/rust/elements/StructExprField.qll @@ -4,8 +4,8 @@ */ private import internal.StructExprFieldImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.NameRef diff --git a/rust/ql/lib/codeql/rust/elements/StructExprFieldList.qll b/rust/ql/lib/codeql/rust/elements/StructExprFieldList.qll index 091460538fc3..696043288ebb 100644 --- a/rust/ql/lib/codeql/rust/elements/StructExprFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/StructExprFieldList.qll @@ -4,8 +4,8 @@ */ private import internal.StructExprFieldListImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.StructExprField diff --git a/rust/ql/lib/codeql/rust/elements/StructField.qll b/rust/ql/lib/codeql/rust/elements/StructField.qll index d02d9418049c..1940db3f7229 100644 --- a/rust/ql/lib/codeql/rust/elements/StructField.qll +++ b/rust/ql/lib/codeql/rust/elements/StructField.qll @@ -4,9 +4,10 @@ */ private import internal.StructFieldImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.ConstArg +import codeql.rust.elements.MutRestriction import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility diff --git a/rust/ql/lib/codeql/rust/elements/StructPatField.qll b/rust/ql/lib/codeql/rust/elements/StructPatField.qll index f8584d6e4f8c..dbf52ba10af2 100644 --- a/rust/ql/lib/codeql/rust/elements/StructPatField.qll +++ b/rust/ql/lib/codeql/rust/elements/StructPatField.qll @@ -4,8 +4,8 @@ */ private import internal.StructPatFieldImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr import codeql.rust.elements.NameRef import codeql.rust.elements.Pat diff --git a/rust/ql/lib/codeql/rust/elements/Trait.qll b/rust/ql/lib/codeql/rust/elements/Trait.qll index ee1166922ccd..de90f54c9ff4 100644 --- a/rust/ql/lib/codeql/rust/elements/Trait.qll +++ b/rust/ql/lib/codeql/rust/elements/Trait.qll @@ -4,9 +4,10 @@ */ private import internal.TraitImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AssocItemList -import codeql.rust.elements.Attr import codeql.rust.elements.GenericParamList +import codeql.rust.elements.ImplRestriction import codeql.rust.elements.Item import codeql.rust.elements.Name import codeql.rust.elements.TypeBoundList diff --git a/rust/ql/lib/codeql/rust/elements/TryExpr.qll b/rust/ql/lib/codeql/rust/elements/TryExpr.qll index 683b302528f6..1e7d3cb2ac7b 100644 --- a/rust/ql/lib/codeql/rust/elements/TryExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/TryExpr.qll @@ -4,7 +4,7 @@ */ private import internal.TryExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/TupleExpr.qll b/rust/ql/lib/codeql/rust/elements/TupleExpr.qll index 471abb51a3b2..9c388f26d20f 100644 --- a/rust/ql/lib/codeql/rust/elements/TupleExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/TupleExpr.qll @@ -4,7 +4,7 @@ */ private import internal.TupleExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/TupleField.qll b/rust/ql/lib/codeql/rust/elements/TupleField.qll index 3e63f377aeb6..8e16df5d387c 100644 --- a/rust/ql/lib/codeql/rust/elements/TupleField.qll +++ b/rust/ql/lib/codeql/rust/elements/TupleField.qll @@ -4,8 +4,9 @@ */ private import internal.TupleFieldImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AstNode -import codeql.rust.elements.Attr +import codeql.rust.elements.MutRestriction import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility diff --git a/rust/ql/lib/codeql/rust/elements/TypeAlias.qll b/rust/ql/lib/codeql/rust/elements/TypeAlias.qll index 051b381003bc..79b2ddb18c44 100644 --- a/rust/ql/lib/codeql/rust/elements/TypeAlias.qll +++ b/rust/ql/lib/codeql/rust/elements/TypeAlias.qll @@ -4,8 +4,8 @@ */ private import internal.TypeAliasImpl +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AssocItem -import codeql.rust.elements.Attr import codeql.rust.elements.ExternItem import codeql.rust.elements.GenericParamList import codeql.rust.elements.Name diff --git a/rust/ql/lib/codeql/rust/elements/TypeItem.qll b/rust/ql/lib/codeql/rust/elements/TypeItem.qll index 48d22478df05..44987602e40b 100644 --- a/rust/ql/lib/codeql/rust/elements/TypeItem.qll +++ b/rust/ql/lib/codeql/rust/elements/TypeItem.qll @@ -4,7 +4,7 @@ */ private import internal.TypeItemImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.GenericParamList import codeql.rust.elements.Item import codeql.rust.elements.MacroItems diff --git a/rust/ql/lib/codeql/rust/elements/TypeParam.qll b/rust/ql/lib/codeql/rust/elements/TypeParam.qll index 126892685cd4..7a710c459b5d 100644 --- a/rust/ql/lib/codeql/rust/elements/TypeParam.qll +++ b/rust/ql/lib/codeql/rust/elements/TypeParam.qll @@ -4,7 +4,7 @@ */ private import internal.TypeParamImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.GenericParam import codeql.rust.elements.Name import codeql.rust.elements.TypeBoundList diff --git a/rust/ql/lib/codeql/rust/elements/UnderscoreExpr.qll b/rust/ql/lib/codeql/rust/elements/UnderscoreExpr.qll index 14d9a39d55f0..61beeffbfa89 100644 --- a/rust/ql/lib/codeql/rust/elements/UnderscoreExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/UnderscoreExpr.qll @@ -4,7 +4,7 @@ */ private import internal.UnderscoreExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/Use.qll b/rust/ql/lib/codeql/rust/elements/Use.qll index 4d5f9bd3948f..817c53dc141f 100644 --- a/rust/ql/lib/codeql/rust/elements/Use.qll +++ b/rust/ql/lib/codeql/rust/elements/Use.qll @@ -4,7 +4,7 @@ */ private import internal.UseImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Item import codeql.rust.elements.UseTree import codeql.rust.elements.Visibility diff --git a/rust/ql/lib/codeql/rust/elements/Variant.qll b/rust/ql/lib/codeql/rust/elements/Variant.qll index 983488da4032..918ff71d9746 100644 --- a/rust/ql/lib/codeql/rust/elements/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/Variant.qll @@ -5,7 +5,7 @@ private import internal.VariantImpl import codeql.rust.elements.Addressable -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ConstArg import codeql.rust.elements.FieldList import codeql.rust.elements.Name diff --git a/rust/ql/lib/codeql/rust/elements/Visibility.qll b/rust/ql/lib/codeql/rust/elements/Visibility.qll index 9fd60b6ba27c..fe62d91fb18d 100644 --- a/rust/ql/lib/codeql/rust/elements/Visibility.qll +++ b/rust/ql/lib/codeql/rust/elements/Visibility.qll @@ -5,7 +5,7 @@ private import internal.VisibilityImpl import codeql.rust.elements.AstNode -import codeql.rust.elements.Path +import codeql.rust.elements.VisibilityInner /** * A visibility modifier. diff --git a/rust/ql/lib/codeql/rust/elements/VisibilityInner.qll b/rust/ql/lib/codeql/rust/elements/VisibilityInner.qll new file mode 100644 index 000000000000..f17c65ff6dec --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/VisibilityInner.qll @@ -0,0 +1,17 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `VisibilityInner`. + */ + +private import internal.VisibilityInnerImpl +import codeql.rust.elements.AstNode +import codeql.rust.elements.Path + +/** + * The parenthesized inner part of a visibility modifier or restriction, such as the `(in path)` in `pub(in path)`, or the `(crate)` in `pub(crate)`. For example the `(in foo::bar)` in: + * ```rust + * pub(in foo::bar) struct S; + * // ^^^^^^^^^^^^ + * ``` + */ +final class VisibilityInner = Impl::VisibilityInner; diff --git a/rust/ql/lib/codeql/rust/elements/WhileExpr.qll b/rust/ql/lib/codeql/rust/elements/WhileExpr.qll index 2103d983e70f..0eb6b01423db 100644 --- a/rust/ql/lib/codeql/rust/elements/WhileExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/WhileExpr.qll @@ -4,7 +4,7 @@ */ private import internal.WhileExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.LoopingExpr diff --git a/rust/ql/lib/codeql/rust/elements/YeetExpr.qll b/rust/ql/lib/codeql/rust/elements/YeetExpr.qll index c7e9f8ebdb75..e76e1d6dc956 100644 --- a/rust/ql/lib/codeql/rust/elements/YeetExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/YeetExpr.qll @@ -4,7 +4,7 @@ */ private import internal.YeetExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/YieldExpr.qll b/rust/ql/lib/codeql/rust/elements/YieldExpr.qll index f156071d6f3a..47dde4b2a602 100644 --- a/rust/ql/lib/codeql/rust/elements/YieldExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/YieldExpr.qll @@ -4,7 +4,7 @@ */ private import internal.YieldExprImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/AnyAttrImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AnyAttrImpl.qll new file mode 100644 index 000000000000..2fd999cf17e9 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/AnyAttrImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `AnyAttr`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.AnyAttr + +/** + * INTERNAL: This module contains the customizable definition of `AnyAttr` and should not + * be referenced directly. + */ +module Impl { + class AnyAttr extends Generated::AnyAttr { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/ArrayExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ArrayExprImpl.qll index 97f237e47723..b39f7397b127 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ArrayExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ArrayExprImpl.qll @@ -7,6 +7,7 @@ private import codeql.rust.elements.internal.generated.ArrayExpr private import codeql.rust.elements.internal.generated.Raw private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.AnyAttr /** * INTERNAL: This module contains the customizable definition of `ArrayExpr` and should not @@ -31,8 +32,8 @@ module Impl { result = Synth::convertExprFromRaw(this.getUnderlyingEntity().getExpr(index)) } - override Attr getAttr(int index) { - result = Synth::convertAttrFromRaw(this.getUnderlyingEntity().getAttr(index)) + override AnyAttr getAttr(int index) { + result = Synth::convertAnyAttrFromRaw(this.getUnderlyingEntity().getAttr(index)) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternal.qll b/rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternal.qll index d904ecd23e8c..543b7220191e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternal.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternal.qll @@ -4,7 +4,7 @@ */ private import ArrayExprInternalImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgPredExprConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgPredExprConstructor.qll new file mode 100644 index 000000000000..93c1466a6c6c --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgPredExprConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `CfgPredExpr` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `CfgPredExpr` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructCfgPredExpr(Raw::CfgPredExpr id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgPredExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgPredExprImpl.qll new file mode 100644 index 000000000000..0dd2a9c0aa0b --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgPredExprImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `CfgPredExpr`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.CfgPredExpr + +/** + * INTERNAL: This module contains the customizable definition of `CfgPredExpr` and should not + * be referenced directly. + */ +module Impl { + class CfgPredExpr extends Generated::CfgPredExpr { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgPredPatConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgPredPatConstructor.qll new file mode 100644 index 000000000000..d3066b0f1dd1 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgPredPatConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `CfgPredPat` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `CfgPredPat` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructCfgPredPat(Raw::CfgPredPat id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgPredPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgPredPatImpl.qll new file mode 100644 index 000000000000..8cf8e83faeff --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgPredPatImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `CfgPredPat`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.CfgPredPat + +/** + * INTERNAL: This module contains the customizable definition of `CfgPredPat` and should not + * be referenced directly. + */ +module Impl { + class CfgPredPat extends Generated::CfgPredPat { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll index cef396dea18b..b55fc8aca390 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll @@ -28,7 +28,9 @@ module Impl { * ``` */ class ClosureExpr extends Generated::ClosureExpr { - override string toStringImpl() { result = "|...| " + this.getBody().toAbbreviatedString() } + override string toStringImpl() { + result = "|...| " + concat(this.getBody().toAbbreviatedString()) + } override Expr getBody() { result = this.getClosureBody() } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CommentImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CommentImpl.qll index 77972720b02f..922763c089f1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CommentImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CommentImpl.qll @@ -17,6 +17,7 @@ module Impl { * ```rust * // this is a comment * /// This is a doc comment + * fn documented() {} * ``` */ class Comment extends Generated::Comment { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index e90ae6217798..c71260913f79 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -28,7 +28,7 @@ module Impl { /** Gets an access to this constant item. */ ConstAccess getAnAccess() { this = result.getConst() } - override string toStringImpl() { result = "const " + this.getName().getText() } + override string toStringImpl() { result = "const " + concat(this.getName().getText()) } } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/DerefPatConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/DerefPatConstructor.qll new file mode 100644 index 000000000000..8c195ffea0c5 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/DerefPatConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `DerefPat` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `DerefPat` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructDerefPat(Raw::DerefPat id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/DerefPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/DerefPatImpl.qll new file mode 100644 index 000000000000..ec44a20c2b5e --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/DerefPatImpl.qll @@ -0,0 +1,27 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `DerefPat`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.DerefPat + +/** + * INTERNAL: This module contains the customizable definition of `DerefPat` and should not + * be referenced directly. + */ +module Impl { + /** + * A deref pattern, matching the value behind a smart pointer. This is an experimental + * Rust feature that cannot be written directly in stable Rust; the example below uses + * rust-analyzer's canonical `builtin#deref` syntax for such patterns: + * ```rust + * match x { + * builtin#deref(y) => y, + * _ => 0, + * }; + * ``` + */ + class DerefPat extends Generated::DerefPat { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/DocCommentConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/DocCommentConstructor.qll new file mode 100644 index 000000000000..2d62b9d56c1d --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/DocCommentConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `DocComment` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `DocComment` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructDocComment(Raw::DocComment id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/DocCommentImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/DocCommentImpl.qll new file mode 100644 index 000000000000..5b43fb6fb6fb --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/DocCommentImpl.qll @@ -0,0 +1,25 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `DocComment`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.DocComment + +/** + * INTERNAL: This module contains the customizable definition of `DocComment` and should not + * be referenced directly. + */ +module Impl { + /** + * A documentation comment. + * + * For example: + * ```rust + * /// Documents `documented`. + * fn documented() {} + * ``` + */ + class DocComment extends Generated::DocComment { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll index 277e77d8eab5..56ce9c6b7322 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll @@ -124,7 +124,7 @@ module Impl { class Element extends Generated::Element { Element() { MacroExpansion::isRelevantElement(this) } - override string toStringImpl() { result = this.getAPrimaryQlClass() } + override string toStringImpl() { none() } /** * INTERNAL: Do not use. diff --git a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll index 3862cc42137e..568dae0e7df0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll @@ -23,7 +23,7 @@ module Impl { * ``` */ class Enum extends Generated::Enum { - override string toStringImpl() { result = "enum " + this.getName().getText() } + override string toStringImpl() { result = "enum " + concat(this.getName().getText()) } /** Gets the variant named `name`, if any. */ pragma[nomagic] diff --git a/rust/ql/lib/codeql/rust/elements/internal/FieldExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FieldExprImpl.qll index db5578b835ae..29591826d0e6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FieldExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FieldExprImpl.qll @@ -31,7 +31,7 @@ module Impl { override string toStringImpl() { exists(string abbr, string name | abbr = this.getContainer().toAbbreviatedString() and - name = this.getIdentifier().getText() and + name = concat(this.getIdentifier().getText()) and if abbr = "..." then result = "... ." + name else result = abbr + "." + name ) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll deleted file mode 100644 index fbed7006a8aa..000000000000 --- a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll +++ /dev/null @@ -1,14 +0,0 @@ -// generated by codegen, remove this comment if you wish to edit this file -/** - * This module defines the hook used internally to tweak the characteristic predicate of - * `FormatArgsArgName` synthesized instances. - * INTERNAL: Do not use. - */ - -private import codeql.rust.elements.internal.generated.Raw - -/** - * The characteristic predicate of `FormatArgsArgName` synthesized instances. - * INTERNAL: Do not use. - */ -predicate constructFormatArgsArgName(Raw::FormatArgsArgName id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.qll deleted file mode 100644 index 31ead66d0ac2..000000000000 --- a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameImpl.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 `FormatArgsArgName`. - * - * INTERNAL: Do not use. - */ - -private import codeql.rust.elements.internal.generated.FormatArgsArgName - -/** - * INTERNAL: This module contains the customizable definition of `FormatArgsArgName` and should not - * be referenced directly. - */ -module Impl { - class FormatArgsArgName extends Generated::FormatArgsArgName { } -} diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessConstructor.qll index 95f01f85c953..b7a4e9ae0be1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessConstructor.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessConstructor.qll @@ -36,7 +36,7 @@ private predicate formatArgsHasArg( pragma[nomagic] private predicate formatArgsHasArgName(Raw::FormatArgsExpr parent) { - exists(parent.getArg(_).getArgName()) + exists(parent.getArg(_).getName()) } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll index 69b85bb1ee24..c5d3d9c5379a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll @@ -27,7 +27,7 @@ module Impl { * ``` */ class Function extends Generated::Function { - override string toStringImpl() { result = "fn " + this.getName().getText() } + override string toStringImpl() { result = "fn " + concat(this.getName().getText()) } pragma[nomagic] private predicate hasPotentialCommentAt(File f, int line) { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll index 4c039a6f957f..e8a0ad279130 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll @@ -34,7 +34,7 @@ module Impl { or not this.hasTraitTy() and trait = "" ) and - result = "impl " + trait + this.getSelfTy().toAbbreviatedString() + " { ... }" + result = "impl " + trait + concat(this.getSelfTy().toAbbreviatedString()) + " { ... }" ) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ImplRestrictionConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/ImplRestrictionConstructor.qll new file mode 100644 index 000000000000..0e0a7a420efc --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/ImplRestrictionConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `ImplRestriction` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `ImplRestriction` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructImplRestriction(Raw::ImplRestriction id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ImplRestrictionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ImplRestrictionImpl.qll new file mode 100644 index 000000000000..7240c6a6bcea --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/ImplRestrictionImpl.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 `ImplRestriction`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.ImplRestriction + +/** + * INTERNAL: This module contains the customizable definition of `ImplRestriction` and should not + * be referenced directly. + */ +module Impl { + /** + * An implementation restriction, limiting where a trait can be implemented. For example the `impl(crate)` restriction (an unstable feature). + */ + class ImplRestriction extends Generated::ImplRestriction { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/IncludeBytesExprConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/IncludeBytesExprConstructor.qll new file mode 100644 index 000000000000..52ba275a28f4 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/IncludeBytesExprConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `IncludeBytesExpr` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `IncludeBytesExpr` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructIncludeBytesExpr(Raw::IncludeBytesExpr id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/IncludeBytesExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/IncludeBytesExprImpl.qll new file mode 100644 index 000000000000..750abcb2f098 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/IncludeBytesExprImpl.qll @@ -0,0 +1,22 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `IncludeBytesExpr`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.IncludeBytesExpr + +/** + * INTERNAL: This module contains the customizable definition of `IncludeBytesExpr` and should not + * be referenced directly. + */ +module Impl { + /** + * An expression produced by the built-in `include_bytes!` macro, embedding the contents of a file as a byte array. For example: + * ```rust + * let data = include_bytes!("data.bin"); + * ``` + */ + class IncludeBytesExpr extends Generated::IncludeBytesExpr { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll index 46e554e4b420..0edbad6d2b86 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll @@ -22,11 +22,11 @@ module Impl { * enum E {} * ``` */ - class Item extends Generated::Item { } - - private class ItemWithAttributeMacroExpansion extends Item { - ItemWithAttributeMacroExpansion() { this.hasAttributeMacroExpansion() } - - override string toStringImpl() { result = "(item with attribute macro expansion)" } + class Item extends Generated::Item { + override string toStringImpl() { + if this.hasAttributeMacroExpansion() + then result = "(item with attribute macro expansion)" + else result = super.toStringImpl() + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll index 8e048517f63c..b5c22bfb69dc 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll @@ -24,7 +24,9 @@ module Impl { * ``` */ class MacroCall extends Generated::MacroCall { - override string toStringImpl() { result = this.getPath().toAbbreviatedString() + "!..." } + override string toStringImpl() { + result = concat(this.getPath().toAbbreviatedString()) + "!..." + } /** * Gets the macro definition that this macro call resolves to. diff --git a/rust/ql/lib/codeql/rust/elements/internal/ModuleImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ModuleImpl.qll index 19f63f0790fa..bf1a1b12817d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ModuleImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ModuleImpl.qll @@ -24,6 +24,6 @@ module Impl { * ``` */ class Module extends Generated::Module { - override string toStringImpl() { result = "mod " + this.getName().getText() } + override string toStringImpl() { result = "mod " + concat(this.getName().getText()) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MutRestrictionConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/MutRestrictionConstructor.qll new file mode 100644 index 000000000000..57f71b2319a5 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/MutRestrictionConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `MutRestriction` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `MutRestriction` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructMutRestriction(Raw::MutRestriction id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MutRestrictionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MutRestrictionImpl.qll new file mode 100644 index 000000000000..6d8722a09e6c --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/MutRestrictionImpl.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 `MutRestriction`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.MutRestriction + +/** + * INTERNAL: This module contains the customizable definition of `MutRestriction` and should not + * be referenced directly. + */ +module Impl { + /** + * A mutability restriction, limiting where a field can be mutated. For example the `mut(crate)` restriction (an unstable feature). + */ + class MutRestriction extends Generated::MutRestriction { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/NotNullConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/NotNullConstructor.qll new file mode 100644 index 000000000000..6c7de057d9af --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/NotNullConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `NotNull` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `NotNull` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructNotNull(Raw::NotNull id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/NotNullImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/NotNullImpl.qll new file mode 100644 index 000000000000..19365f23a2d5 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/NotNullImpl.qll @@ -0,0 +1,25 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `NotNull`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.NotNull + +/** + * INTERNAL: This module contains the customizable definition of `NotNull` and should not + * be referenced directly. + */ +module Impl { + /** + * The `!null` pattern used in a pattern type to denote a non-null value. Pattern types + * are an experimental, mostly compiler-internal feature (used in the standard library for + * types such as `NonZero` and `NonNull`) and cannot be written directly in stable Rust; + * the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + * ```rust + * type NonNull = builtin#pattern_type(*const () is !null); + * ``` + */ + class NotNull extends Generated::NotNull { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenTypeReprImpl.qll index c96bae09eeb3..8db0462f6b0c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenTypeReprImpl.qll @@ -22,6 +22,8 @@ module Impl { * ``` */ class ParenTypeRepr extends Generated::ParenTypeRepr { - override string toStringImpl() { result = "(" + this.getTypeRepr().toAbbreviatedString() + ")" } + override string toStringImpl() { + result = "(" + concat(this.getTypeRepr().toAbbreviatedString()) + ")" + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll index 42c32802bc2c..6512d8dd805c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll @@ -22,7 +22,7 @@ module Impl { * - `` */ class PathSegment extends Generated::PathSegment { - override string toStringImpl() { result = this.toAbbreviatedString() } + override string toStringImpl() { result = concat(this.toAbbreviatedString()) } override string toAbbreviatedString() { result = strictconcat(int i | | this.toAbbreviatedStringPart(i), "::" order by i) diff --git a/rust/ql/lib/codeql/rust/elements/internal/PatternTypeReprConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/PatternTypeReprConstructor.qll new file mode 100644 index 000000000000..00878cb3430d --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/PatternTypeReprConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `PatternTypeRepr` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `PatternTypeRepr` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructPatternTypeRepr(Raw::PatternTypeRepr id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PatternTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PatternTypeReprImpl.qll new file mode 100644 index 000000000000..16cb9358ebae --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/PatternTypeReprImpl.qll @@ -0,0 +1,24 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `PatternTypeRepr`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.PatternTypeRepr + +/** + * INTERNAL: This module contains the customizable definition of `PatternTypeRepr` and should not + * be referenced directly. + */ +module Impl { + /** + * A pattern type, constraining a type to values matching a pattern. Pattern types are an + * experimental, mostly compiler-internal feature and cannot be written directly in stable + * Rust; the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + * ```rust + * type NonZero = builtin#pattern_type(u32 is 1..); + * ``` + */ + class PatternTypeRepr extends Generated::PatternTypeRepr { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/StaticImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StaticImpl.qll index 8002947bae8e..69696d243bff 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StaticImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StaticImpl.qll @@ -28,7 +28,7 @@ module Impl { /** Gets an access to this static item. */ StaticAccess getAnAccess() { this = result.getStatic() } - override string toStringImpl() { result = "static " + this.getName().getText() } + override string toStringImpl() { result = "static " + concat(this.getName().getText()) } } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll index 23fa1e76d9a8..4a33d26b06ac 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll @@ -23,7 +23,7 @@ module Impl { * ``` */ class Struct extends Generated::Struct { - override string toStringImpl() { result = "struct " + this.getName().getText() } + override string toStringImpl() { result = "struct " + concat(this.getName().getText()) } /** Gets the record field named `name`, if any. */ pragma[nomagic] diff --git a/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll index bb9ffa83244f..8fb9ea0f1329 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll @@ -26,7 +26,7 @@ module Impl { * ``` */ class Trait extends Generated::Trait { - override string toStringImpl() { result = "trait " + this.getName().getText() } + override string toStringImpl() { result = "trait " + concat(this.getName().getText()) } /** * Gets the number of generic parameters of this trait. diff --git a/rust/ql/lib/codeql/rust/elements/internal/TypeBoundListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TypeBoundListImpl.qll index 0d386b6edb05..f5676dd6dfed 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TypeBoundListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TypeBoundListImpl.qll @@ -22,7 +22,7 @@ module Impl { * ``` */ class TypeBoundList extends Generated::TypeBoundList { - override string toStringImpl() { result = this.toAbbreviatedString() } + override string toStringImpl() { result = concat(this.toAbbreviatedString()) } private string toAbbreviatedStringPart(int index) { result = this.getBound(index).toAbbreviatedString() diff --git a/rust/ql/lib/codeql/rust/elements/internal/UseImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UseImpl.qll index a5baa18b81c0..78fb41812580 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UseImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UseImpl.qll @@ -19,6 +19,8 @@ module Impl { * ``` */ class Use extends Generated::Use { - override string toStringImpl() { result = "use " + this.getUseTree().toAbbreviatedString() } + override string toStringImpl() { + result = "use " + concat(this.getUseTree().toAbbreviatedString()) + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VisibilityImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VisibilityImpl.qll index e2bc7140b59e..7fb16d018736 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VisibilityImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VisibilityImpl.qll @@ -25,9 +25,9 @@ module Impl { override string toStringImpl() { result = this.toAbbreviatedString() } override string toAbbreviatedString() { - result = "pub(" + this.getPath().toAbbreviatedString() + ")" + result = "pub(" + this.getVisibilityInner().getPath().toAbbreviatedString() + ")" or - not this.hasPath() and result = "pub" + not exists(this.getVisibilityInner().getPath()) and result = "pub" } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VisibilityInnerConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/VisibilityInnerConstructor.qll new file mode 100644 index 000000000000..c6eca06336a8 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/VisibilityInnerConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `VisibilityInner` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.Raw + +/** + * The characteristic predicate of `VisibilityInner` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructVisibilityInner(Raw::VisibilityInner id) { any() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VisibilityInnerImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VisibilityInnerImpl.qll new file mode 100644 index 000000000000..ad896e5dcd25 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/VisibilityInnerImpl.qll @@ -0,0 +1,23 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `VisibilityInner`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.VisibilityInner + +/** + * INTERNAL: This module contains the customizable definition of `VisibilityInner` and should not + * be referenced directly. + */ +module Impl { + /** + * The parenthesized inner part of a visibility modifier or restriction, such as the `(in path)` in `pub(in path)`, or the `(crate)` in `pub(crate)`. For example the `(in foo::bar)` in: + * ```rust + * pub(in foo::bar) struct S; + * // ^^^^^^^^^^^^ + * ``` + */ + class VisibilityInner extends Generated::VisibilityInner { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Abi.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Abi.qll index 0f1089c4284a..6db2656c06f8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Abi.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Abi.qll @@ -27,6 +27,8 @@ module Generated { class Abi extends Synth::TAbi, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "Abi" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the abi string of this abi, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AnyAttr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AnyAttr.qll new file mode 100644 index 000000000000..58ab955fb673 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AnyAttr.qll @@ -0,0 +1,21 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `AnyAttr`. + * 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 `AnyAttr` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::AnyAttr` class directly. + * Use the subclass `AnyAttr`, where the following predicates are available. + */ + class AnyAttr extends Synth::TAnyAttr, AstNodeImpl::AstNode { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ArgList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ArgList.qll index c75d722e7938..e20cb6bab8cd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ArgList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ArgList.qll @@ -28,6 +28,8 @@ module Generated { class ArgList extends Synth::TArgList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "ArgList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th argument of this argument list (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExpr.qll index cb6d92d0dd5f..cd1af8bd6a36 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -43,12 +43,12 @@ module Generated { /** * Gets the `index`th attr of this array expression (0-based). */ - Attr getAttr(int index) { none() } + AnyAttr getAttr(int index) { none() } /** * Gets any of the attrs of this array expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this array expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll index 15c86caa17b1..e628c7498a9c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExprInternal.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -22,12 +22,14 @@ module Generated { class ArrayExprInternal extends Synth::TArrayExprInternal, ExprImpl::Expr { override string getAPrimaryQlClass() { result = "ArrayExprInternal" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this array expression internal (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertArrayExprInternalToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertArrayExprInternalToRaw(this) .(Raw::ArrayExprInternal) .getAttr(index)) } @@ -35,7 +37,7 @@ module Generated { /** * Gets any of the attrs of this array expression internal. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this array expression internal. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll index c8e682937108..4d4d9addec92 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll @@ -29,6 +29,8 @@ module Generated { class ArrayTypeRepr extends Synth::TArrayTypeRepr, TypeReprImpl::TypeRepr { override string getAPrimaryQlClass() { result = "ArrayTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the const argument of this array type representation, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll index 9a47d6081123..b6e7388fd167 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll @@ -6,6 +6,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AsmPieceImpl::Impl as AsmPieceImpl /** @@ -27,5 +28,27 @@ module Generated { */ class AsmClobberAbi extends Synth::TAsmClobberAbi, AsmPieceImpl::AsmPiece { override string getAPrimaryQlClass() { result = "AsmClobberAbi" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + + /** + * Gets the `index`th attr of this asm clobber abi (0-based). + */ + AnyAttr getAttr(int index) { + result = + Synth::convertAnyAttrFromRaw(Synth::convertAsmClobberAbiToRaw(this) + .(Raw::AsmClobberAbi) + .getAttr(index)) + } + + /** + * Gets any of the attrs of this asm clobber abi. + */ + final AnyAttr getAnAttr() { result = this.getAttr(_) } + + /** + * Gets the number of attrs of this asm clobber abi. + */ + final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmConst.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmConst.qll index eb685ef2deb8..fc6fb8a03b1e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmConst.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmConst.qll @@ -29,6 +29,8 @@ module Generated { class AsmConst extends Synth::TAsmConst, AsmOperandImpl::AsmOperand { override string getAPrimaryQlClass() { result = "AsmConst" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the expression of this asm const, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll index 520e2d88ad66..4560dc7b24ce 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll @@ -27,5 +27,7 @@ module Generated { */ class AsmDirSpec extends Synth::TAsmDirSpec, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "AsmDirSpec" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmExpr.qll index 95e4d08aa406..094727bbcdc2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmExpr.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AsmPiece -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl @@ -31,6 +31,8 @@ module Generated { class AsmExpr extends Synth::TAsmExpr, ExprImpl::Expr, ItemImpl::Item { override string getAPrimaryQlClass() { result = "AsmExpr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th asm piece of this asm expression (0-based). */ @@ -54,15 +56,15 @@ module Generated { /** * Gets the `index`th attr of this asm expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertAsmExprToRaw(this).(Raw::AsmExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertAsmExprToRaw(this).(Raw::AsmExpr).getAttr(index)) } /** * Gets any of the attrs of this asm expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this asm expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmLabel.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmLabel.qll index 7d5f750f098c..991e7b5b6342 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmLabel.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmLabel.qll @@ -32,6 +32,8 @@ module Generated { class AsmLabel extends Synth::TAsmLabel, AsmOperandImpl::AsmOperand { override string getAPrimaryQlClass() { result = "AsmLabel" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the block expression of this asm label, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll index 5f5fd7ff09d1..194b8a939c58 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll @@ -29,6 +29,8 @@ module Generated { class AsmOperandExpr extends Synth::TAsmOperandExpr, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "AsmOperandExpr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the in expression of this asm operand expression, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll index 158acb3aa48d..f3ba52d8b80f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll @@ -6,6 +6,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AsmOperand import codeql.rust.elements.internal.AsmPieceImpl::Impl as AsmPieceImpl import codeql.rust.elements.Name @@ -30,6 +31,8 @@ module Generated { class AsmOperandNamed extends Synth::TAsmOperandNamed, AsmPieceImpl::AsmPiece { override string getAPrimaryQlClass() { result = "AsmOperandNamed" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the asm operand of this asm operand named, if it exists. */ @@ -45,6 +48,26 @@ module Generated { */ final predicate hasAsmOperand() { exists(this.getAsmOperand()) } + /** + * Gets the `index`th attr of this asm operand named (0-based). + */ + AnyAttr getAttr(int index) { + result = + Synth::convertAnyAttrFromRaw(Synth::convertAsmOperandNamedToRaw(this) + .(Raw::AsmOperandNamed) + .getAttr(index)) + } + + /** + * Gets any of the attrs of this asm operand named. + */ + final AnyAttr getAnAttr() { result = this.getAttr(_) } + + /** + * Gets the number of attrs of this asm operand named. + */ + final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } + /** * Gets the name of this asm operand named, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOption.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOption.qll index 9c3d309f3078..0c9c861a662d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOption.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOption.qll @@ -28,6 +28,8 @@ module Generated { class AsmOption extends Synth::TAsmOption, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "AsmOption" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Holds if this asm option is raw. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll index de8f7bccb0f8..caf46d05f1d3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll @@ -6,6 +6,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AsmOption import codeql.rust.elements.internal.AsmPieceImpl::Impl as AsmPieceImpl @@ -29,6 +30,8 @@ module Generated { class AsmOptionsList extends Synth::TAsmOptionsList, AsmPieceImpl::AsmPiece { override string getAPrimaryQlClass() { result = "AsmOptionsList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th asm option of this asm options list (0-based). */ @@ -48,5 +51,25 @@ module Generated { * Gets the number of asm options of this asm options list. */ final int getNumberOfAsmOptions() { result = count(int i | exists(this.getAsmOption(i))) } + + /** + * Gets the `index`th attr of this asm options list (0-based). + */ + AnyAttr getAttr(int index) { + result = + Synth::convertAnyAttrFromRaw(Synth::convertAsmOptionsListToRaw(this) + .(Raw::AsmOptionsList) + .getAttr(index)) + } + + /** + * Gets any of the attrs of this asm options list. + */ + final AnyAttr getAnAttr() { result = this.getAttr(_) } + + /** + * Gets the number of attrs of this asm options list. + */ + final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll index a294732fd96b..a66d2cbf867c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll @@ -31,6 +31,8 @@ module Generated { class AsmRegOperand extends Synth::TAsmRegOperand, AsmOperandImpl::AsmOperand { override string getAPrimaryQlClass() { result = "AsmRegOperand" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the asm dir spec of this asm reg operand, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll index 60f0c5803fe9..610a8624606d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll @@ -29,6 +29,8 @@ module Generated { class AsmRegSpec extends Synth::TAsmRegSpec, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "AsmRegSpec" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the identifier of this asm reg spec, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmSym.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmSym.qll index 269b6721eb1e..ff21032734a6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmSym.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmSym.qll @@ -29,6 +29,8 @@ module Generated { class AsmSym extends Synth::TAsmSym, AsmOperandImpl::AsmOperand { override string getAPrimaryQlClass() { result = "AsmSym" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the path of this asm sym, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItemList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItemList.qll index 8a6dc5a43eda..42c6e17b2967 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItemList.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.AnyAttr import codeql.rust.elements.AssocItem import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr /** * INTERNAL: This module contains the fully generated definition of `AssocItemList` and should not @@ -23,6 +23,8 @@ module Generated { class AssocItemList extends Synth::TAssocItemList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "AssocItemList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th assoc item of this assoc item list (0-based). */ @@ -46,9 +48,9 @@ module Generated { /** * Gets the `index`th attr of this assoc item list (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertAssocItemListToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertAssocItemListToRaw(this) .(Raw::AssocItemList) .getAttr(index)) } @@ -56,7 +58,7 @@ module Generated { /** * Gets any of the attrs of this assoc item list. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this assoc item list. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll index 50e5fb32fe6e..cffbdb25b299 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll @@ -40,6 +40,8 @@ module Generated { class AssocTypeArg extends Synth::TAssocTypeArg, GenericArgImpl::GenericArg { override string getAPrimaryQlClass() { result = "AssocTypeArg" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the const argument of this assoc type argument, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Attr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Attr.qll index 351b77154e3d..2bd74215afe4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Attr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Attr.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.AnyAttrImpl::Impl as AnyAttrImpl import codeql.rust.elements.Meta /** @@ -26,9 +26,11 @@ module Generated { * INTERNAL: Do not reference the `Generated::Attr` class directly. * Use the subclass `Attr`, where the following predicates are available. */ - class Attr extends Synth::TAttr, AstNodeImpl::AstNode { + class Attr extends Synth::TAttr, AnyAttrImpl::AnyAttr { override string getAPrimaryQlClass() { result = "Attr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the meta of this attr, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AwaitExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AwaitExpr.qll index baef03315c92..68939224b243 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AwaitExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AwaitExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -32,15 +32,17 @@ module Generated { /** * Gets the `index`th attr of this await expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertAwaitExprToRaw(this).(Raw::AwaitExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertAwaitExprToRaw(this) + .(Raw::AwaitExpr) + .getAttr(index)) } /** * Gets any of the attrs of this await expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this await expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/BecomeExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/BecomeExpr.qll index 7fdd78fcbee9..966b6f1361c7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/BecomeExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/BecomeExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -35,9 +35,9 @@ module Generated { /** * Gets the `index`th attr of this become expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertBecomeExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertBecomeExprToRaw(this) .(Raw::BecomeExpr) .getAttr(index)) } @@ -45,7 +45,7 @@ module Generated { /** * Gets any of the attrs of this become expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this become expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/BinaryExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/BinaryExpr.qll index 68e7d391e396..111428d0a208 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/BinaryExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/BinaryExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -33,9 +33,9 @@ module Generated { /** * Gets the `index`th attr of this binary expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertBinaryExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertBinaryExprToRaw(this) .(Raw::BinaryExpr) .getAttr(index)) } @@ -43,7 +43,7 @@ module Generated { /** * Gets any of the attrs of this binary expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this binary expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll index e448e321e646..0a2f8c903213 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.LabelableExprImpl::Impl as LabelableExprImpl import codeql.rust.elements.StmtList import codeql.rust.elements.TryBlockModifier @@ -38,15 +38,17 @@ module Generated { /** * Gets the `index`th attr of this block expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertBlockExprToRaw(this).(Raw::BlockExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertBlockExprToRaw(this) + .(Raw::BlockExpr) + .getAttr(index)) } /** * Gets any of the attrs of this block expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this block expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/BreakExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/BreakExpr.qll index dae4a83377cf..3425bc0bad60 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/BreakExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/BreakExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.Lifetime @@ -49,15 +49,17 @@ module Generated { /** * Gets the `index`th attr of this break expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertBreakExprToRaw(this).(Raw::BreakExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertBreakExprToRaw(this) + .(Raw::BreakExpr) + .getAttr(index)) } /** * Gets any of the attrs of this break expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this break expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CallExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CallExpr.qll index 196b78c1bde1..785f22044206 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/CallExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CallExpr.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ArgList -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -49,15 +49,17 @@ module Generated { /** * Gets the `index`th attr of this call expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertCallExprToRaw(this).(Raw::CallExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertCallExprToRaw(this) + .(Raw::CallExpr) + .getAttr(index)) } /** * Gets any of the attrs of this call expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this call expression. 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 b2eb4d96d91f..2d608f9e7b01 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.Param import codeql.rust.elements.ParamList @@ -41,15 +41,17 @@ module Generated { /** * Gets the `index`th attr of this callable (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertCallableToRaw(this).(Raw::Callable).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertCallableToRaw(this) + .(Raw::Callable) + .getAttr(index)) } /** * Gets any of the attrs of this callable. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this callable. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CastExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CastExpr.qll index a3725ff1a45f..cc6ea30fff00 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/CastExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CastExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.TypeRepr @@ -30,15 +30,17 @@ module Generated { /** * Gets the `index`th attr of this cast expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertCastExprToRaw(this).(Raw::CastExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertCastExprToRaw(this) + .(Raw::CastExpr) + .getAttr(index)) } /** * Gets any of the attrs of this cast expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this cast expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAtom.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAtom.qll index 8243d5ba14a7..2943c4c6ae06 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAtom.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAtom.qll @@ -19,5 +19,7 @@ module Generated { */ class CfgAtom extends Synth::TCfgAtom, CfgPredicateImpl::CfgPredicate { override string getAPrimaryQlClass() { result = "CfgAtom" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll index 0b972b413c53..e92309bff64d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgAttrMeta.qll @@ -22,6 +22,8 @@ module Generated { class CfgAttrMeta extends Synth::TCfgAttrMeta, MetaImpl::Meta { override string getAPrimaryQlClass() { result = "CfgAttrMeta" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the cfg predicate of this cfg attr meta, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgComposite.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgComposite.qll index 65a5a672baf9..1000b1b2528d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgComposite.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgComposite.qll @@ -21,6 +21,8 @@ module Generated { class CfgComposite extends Synth::TCfgComposite, CfgPredicateImpl::CfgPredicate { override string getAPrimaryQlClass() { result = "CfgComposite" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th cfg predicate of this cfg composite (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgMeta.qll index d65162b85dda..7a76175fe25a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgMeta.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgMeta.qll @@ -21,6 +21,8 @@ module Generated { class CfgMeta extends Synth::TCfgMeta, MetaImpl::Meta { override string getAPrimaryQlClass() { result = "CfgMeta" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the cfg predicate of this cfg meta, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredExpr.qll new file mode 100644 index 000000000000..5c2c473c1edd --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredExpr.qll @@ -0,0 +1,41 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `CfgPredExpr`. + * 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.CfgPredicate +import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl + +/** + * INTERNAL: This module contains the fully generated definition of `CfgPredExpr` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::CfgPredExpr` class directly. + * Use the subclass `CfgPredExpr`, where the following predicates are available. + */ + class CfgPredExpr extends Synth::TCfgPredExpr, ExprImpl::Expr { + override string getAPrimaryQlClass() { result = "CfgPredExpr" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + + /** + * Gets the cfg predicate of this cfg pred expression, if it exists. + */ + CfgPredicate getCfgPredicate() { + result = + Synth::convertCfgPredicateFromRaw(Synth::convertCfgPredExprToRaw(this) + .(Raw::CfgPredExpr) + .getCfgPredicate()) + } + + /** + * Holds if `getCfgPredicate()` exists. + */ + final predicate hasCfgPredicate() { exists(this.getCfgPredicate()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredPat.qll new file mode 100644 index 000000000000..a6637a55d4aa --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CfgPredPat.qll @@ -0,0 +1,41 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `CfgPredPat`. + * 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.CfgPredicate +import codeql.rust.elements.internal.PatImpl::Impl as PatImpl + +/** + * INTERNAL: This module contains the fully generated definition of `CfgPredPat` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::CfgPredPat` class directly. + * Use the subclass `CfgPredPat`, where the following predicates are available. + */ + class CfgPredPat extends Synth::TCfgPredPat, PatImpl::Pat { + override string getAPrimaryQlClass() { result = "CfgPredPat" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + + /** + * Gets the cfg predicate of this cfg pred pattern, if it exists. + */ + CfgPredicate getCfgPredicate() { + result = + Synth::convertCfgPredicateFromRaw(Synth::convertCfgPredPatToRaw(this) + .(Raw::CfgPredPat) + .getCfgPredicate()) + } + + /** + * Holds if `getCfgPredicate()` exists. + */ + final predicate hasCfgPredicate() { exists(this.getCfgPredicate()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Comment.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Comment.qll index 7a4ca595f113..1d763f81f416 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Comment.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Comment.qll @@ -19,6 +19,7 @@ module Generated { * ```rust * // this is a comment * /// This is a doc comment + * fn documented() {} * ``` * INTERNAL: Do not reference the `Generated::Comment` class directly. * Use the subclass `Comment`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll index 07ffd9058bba..1ffbf0a5ce8c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AssocItemImpl::Impl as AssocItemImpl -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.GenericParamList import codeql.rust.elements.Name @@ -36,14 +36,15 @@ module Generated { /** * Gets the `index`th attr of this const (0-based). */ - Attr getAttr(int index) { - result = Synth::convertAttrFromRaw(Synth::convertConstToRaw(this).(Raw::Const).getAttr(index)) + AnyAttr getAttr(int index) { + result = + Synth::convertAnyAttrFromRaw(Synth::convertConstToRaw(this).(Raw::Const).getAttr(index)) } /** * Gets any of the attrs of this const. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this const. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstArg.qll index d9a9ee1d8553..2ed69e654c86 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstArg.qll @@ -28,6 +28,8 @@ module Generated { class ConstArg extends Synth::TConstArg, GenericArgImpl::GenericArg { override string getAPrimaryQlClass() { result = "ConstArg" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the expression of this const argument, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll index 971308952917..d75a9b25c6f9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll @@ -28,6 +28,8 @@ module Generated { class ConstBlockPat extends Synth::TConstBlockPat, PatImpl::Pat { override string getAPrimaryQlClass() { result = "ConstBlockPat" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the block expression of this const block pattern, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstParam.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstParam.qll index c2268deec020..a0899b6b55ee 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstParam.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstParam.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ConstArg import codeql.rust.elements.internal.GenericParamImpl::Impl as GenericParamImpl import codeql.rust.elements.Name @@ -31,12 +31,14 @@ module Generated { class ConstParam extends Synth::TConstParam, GenericParamImpl::GenericParam { override string getAPrimaryQlClass() { result = "ConstParam" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this const parameter (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertConstParamToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertConstParamToRaw(this) .(Raw::ConstParam) .getAttr(index)) } @@ -44,7 +46,7 @@ module Generated { /** * Gets any of the attrs of this const parameter. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this const parameter. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ContinueExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ContinueExpr.qll index 9e8df8e22e6b..806598159cca 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ContinueExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ContinueExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.Lifetime @@ -40,9 +40,9 @@ module Generated { /** * Gets the `index`th attr of this continue expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertContinueExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertContinueExprToRaw(this) .(Raw::ContinueExpr) .getAttr(index)) } @@ -50,7 +50,7 @@ module Generated { /** * Gets any of the attrs of this continue expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this continue expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/DerefPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/DerefPat.qll new file mode 100644 index 000000000000..99cd951ee8d7 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/DerefPat.qll @@ -0,0 +1,47 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `DerefPat`. + * 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.Pat +import codeql.rust.elements.internal.PatImpl::Impl as PatImpl + +/** + * INTERNAL: This module contains the fully generated definition of `DerefPat` and should not + * be referenced directly. + */ +module Generated { + /** + * A deref pattern, matching the value behind a smart pointer. This is an experimental + * Rust feature that cannot be written directly in stable Rust; the example below uses + * rust-analyzer's canonical `builtin#deref` syntax for such patterns: + * ```rust + * match x { + * builtin#deref(y) => y, + * _ => 0, + * }; + * ``` + * INTERNAL: Do not reference the `Generated::DerefPat` class directly. + * Use the subclass `DerefPat`, where the following predicates are available. + */ + class DerefPat extends Synth::TDerefPat, PatImpl::Pat { + override string getAPrimaryQlClass() { result = "DerefPat" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + + /** + * Gets the pattern of this deref pattern, if it exists. + */ + Pat getPat() { + result = Synth::convertPatFromRaw(Synth::convertDerefPatToRaw(this).(Raw::DerefPat).getPat()) + } + + /** + * Holds if `getPat()` exists. + */ + final predicate hasPat() { exists(this.getPat()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/DocComment.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/DocComment.qll new file mode 100644 index 000000000000..bfa1ca1f8d86 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/DocComment.qll @@ -0,0 +1,32 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `DocComment`. + * 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.AnyAttrImpl::Impl as AnyAttrImpl + +/** + * INTERNAL: This module contains the fully generated definition of `DocComment` and should not + * be referenced directly. + */ +module Generated { + /** + * A documentation comment. + * + * For example: + * ```rust + * /// Documents `documented`. + * fn documented() {} + * ``` + * INTERNAL: Do not reference the `Generated::DocComment` class directly. + * Use the subclass `DocComment`, where the following predicates are available. + */ + class DocComment extends Synth::TDocComment, AnyAttrImpl::AnyAttr { + override string getAPrimaryQlClass() { result = "DocComment" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll index 8e82d3f428c6..2f65e909d553 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll @@ -28,6 +28,8 @@ module Generated { class DynTraitTypeRepr extends Synth::TDynTraitTypeRepr, TypeReprImpl::TypeRepr { override string getAPrimaryQlClass() { result = "DynTraitTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the type bound list of this dyn trait type representation, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ExprStmt.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ExprStmt.qll index 23396d0c9042..fda34aec572a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ExprStmt.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ExprStmt.qll @@ -27,6 +27,8 @@ module Generated { class ExprStmt extends Synth::TExprStmt, StmtImpl::Stmt { override string getAPrimaryQlClass() { result = "ExprStmt" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the expression of this expression statement, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternBlock.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternBlock.qll index 9b769440bd3b..2fd7276f3832 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternBlock.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternBlock.qll @@ -7,7 +7,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.Abi -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ExternItemList import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl @@ -31,6 +31,8 @@ module Generated { class ExternBlock extends Synth::TExternBlock, ItemImpl::Item { override string getAPrimaryQlClass() { result = "ExternBlock" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the abi of this extern block, if it exists. */ @@ -47,9 +49,9 @@ module Generated { /** * Gets the `index`th attr of this extern block (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertExternBlockToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertExternBlockToRaw(this) .(Raw::ExternBlock) .getAttr(index)) } @@ -57,7 +59,7 @@ module Generated { /** * Gets any of the attrs of this extern block. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this extern block. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternCrate.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternCrate.qll index 3484139b9fc2..86f458498c26 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternCrate.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternCrate.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.NameRef import codeql.rust.elements.Rename @@ -30,12 +30,14 @@ module Generated { class ExternCrate extends Synth::TExternCrate, ItemImpl::Item { override string getAPrimaryQlClass() { result = "ExternCrate" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this extern crate (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertExternCrateToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertExternCrateToRaw(this) .(Raw::ExternCrate) .getAttr(index)) } @@ -43,7 +45,7 @@ module Generated { /** * Gets any of the attrs of this extern crate. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this extern crate. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItemList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItemList.qll index 250fe549b52f..dd383f8812a8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItemList.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.ExternItem /** @@ -31,12 +31,14 @@ module Generated { class ExternItemList extends Synth::TExternItemList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "ExternItemList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this extern item list (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertExternItemListToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertExternItemListToRaw(this) .(Raw::ExternItemList) .getAttr(index)) } @@ -44,7 +46,7 @@ module Generated { /** * Gets any of the attrs of this extern item list. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this extern item list. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/FieldExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FieldExpr.qll index acb19cd2a52e..78777854304e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/FieldExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/FieldExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.NameRef @@ -30,15 +30,17 @@ module Generated { /** * Gets the `index`th attr of this field expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertFieldExprToRaw(this).(Raw::FieldExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertFieldExprToRaw(this) + .(Raw::FieldExpr) + .getAttr(index)) } /** * Gets any of the attrs of this field expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this field expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll index c250406e68c9..9139b1616f11 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll @@ -30,6 +30,8 @@ module Generated { class FnPtrTypeRepr extends Synth::TFnPtrTypeRepr, TypeReprImpl::TypeRepr { override string getAPrimaryQlClass() { result = "FnPtrTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the abi of this fn ptr type representation, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll index 6089b1b73ba5..e6882d093f6b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.LoopingExprImpl::Impl as LoopingExprImpl import codeql.rust.elements.Pat @@ -34,15 +34,15 @@ module Generated { /** * Gets the `index`th attr of this for expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertForExprToRaw(this).(Raw::ForExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertForExprToRaw(this).(Raw::ForExpr).getAttr(index)) } /** * Gets any of the attrs of this for expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this for expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll index 56745b56f009..ecf9924b26d0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll @@ -29,6 +29,8 @@ module Generated { class ForTypeRepr extends Synth::TForTypeRepr, TypeReprImpl::TypeRepr { override string getAPrimaryQlClass() { result = "ForTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the for binder of this for type representation, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll index 2c5ab6fe693c..6cc08f872a91 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll @@ -8,7 +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.Expr -import codeql.rust.elements.FormatArgsArgName +import codeql.rust.elements.Name /** * INTERNAL: This module contains the fully generated definition of `FormatArgsArg` and should not @@ -26,34 +26,36 @@ module Generated { class FormatArgsArg extends Synth::TFormatArgsArg, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "FormatArgsArg" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** - * Gets the argument name of this format arguments argument, if it exists. + * Gets the expression of this format arguments argument, if it exists. */ - FormatArgsArgName getArgName() { + Expr getExpr() { result = - Synth::convertFormatArgsArgNameFromRaw(Synth::convertFormatArgsArgToRaw(this) + Synth::convertExprFromRaw(Synth::convertFormatArgsArgToRaw(this) .(Raw::FormatArgsArg) - .getArgName()) + .getExpr()) } /** - * Holds if `getArgName()` exists. + * Holds if `getExpr()` exists. */ - final predicate hasArgName() { exists(this.getArgName()) } + final predicate hasExpr() { exists(this.getExpr()) } /** - * Gets the expression of this format arguments argument, if it exists. + * Gets the name of this format arguments argument, if it exists. */ - Expr getExpr() { + Name getName() { result = - Synth::convertExprFromRaw(Synth::convertFormatArgsArgToRaw(this) + Synth::convertNameFromRaw(Synth::convertFormatArgsArgToRaw(this) .(Raw::FormatArgsArg) - .getExpr()) + .getName()) } /** - * Holds if `getExpr()` exists. + * Holds if `getName()` exists. */ - final predicate hasExpr() { exists(this.getExpr()) } + final predicate hasName() { exists(this.getName()) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll deleted file mode 100644 index ce83c40e161a..000000000000 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArgName.qll +++ /dev/null @@ -1,23 +0,0 @@ -// generated by codegen, do not edit -/** - * This module provides the generated definition of `FormatArgsArgName`. - * 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 `FormatArgsArgName` and should not - * be referenced directly. - */ -module Generated { - /** - * INTERNAL: Do not reference the `Generated::FormatArgsArgName` class directly. - * Use the subclass `FormatArgsArgName`, where the following predicates are available. - */ - class FormatArgsArgName extends Synth::TFormatArgsArgName, AstNodeImpl::AstNode { - override string getAPrimaryQlClass() { result = "FormatArgsArgName" } - } -} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll index 38034779e053..e722b445a474 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.Format @@ -32,6 +32,8 @@ module Generated { class FormatArgsExpr extends Synth::TFormatArgsExpr, ExprImpl::Expr { override string getAPrimaryQlClass() { result = "FormatArgsExpr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th argument of this format arguments expression (0-based). */ @@ -55,9 +57,9 @@ module Generated { /** * Gets the `index`th attr of this format arguments expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertFormatArgsExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertFormatArgsExprToRaw(this) .(Raw::FormatArgsExpr) .getAttr(index)) } @@ -65,7 +67,7 @@ module Generated { /** * Gets any of the attrs of this format arguments expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this format arguments expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/IdentPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/IdentPat.qll index d016899bc01d..80c74776b0d0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/IdentPat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/IdentPat.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Name import codeql.rust.elements.Pat import codeql.rust.elements.internal.PatImpl::Impl as PatImpl @@ -39,15 +39,17 @@ module Generated { /** * Gets the `index`th attr of this ident pattern (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertIdentPatToRaw(this).(Raw::IdentPat).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertIdentPatToRaw(this) + .(Raw::IdentPat) + .getAttr(index)) } /** * Gets any of the attrs of this ident pattern. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this ident pattern. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/IfExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/IfExpr.qll index 57d726b6210e..cb0207b69e7d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/IfExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/IfExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.BlockExpr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -39,15 +39,15 @@ module Generated { /** * Gets the `index`th attr of this if expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertIfExprToRaw(this).(Raw::IfExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertIfExprToRaw(this).(Raw::IfExpr).getAttr(index)) } /** * Gets any of the attrs of this if expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this if expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Impl.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Impl.qll index 915e8940fb0e..2394ea45aba8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Impl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Impl.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AssocItemList -import codeql.rust.elements.Attr import codeql.rust.elements.GenericParamList import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.TypeRepr @@ -52,14 +52,15 @@ module Generated { /** * Gets the `index`th attr of this impl (0-based). */ - Attr getAttr(int index) { - result = Synth::convertAttrFromRaw(Synth::convertImplToRaw(this).(Raw::Impl).getAttr(index)) + AnyAttr getAttr(int index) { + result = + Synth::convertAnyAttrFromRaw(Synth::convertImplToRaw(this).(Raw::Impl).getAttr(index)) } /** * Gets any of the attrs of this impl. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this impl. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ImplRestriction.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ImplRestriction.qll new file mode 100644 index 000000000000..29d077d8795c --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ImplRestriction.qll @@ -0,0 +1,42 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `ImplRestriction`. + * 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 +import codeql.rust.elements.VisibilityInner + +/** + * INTERNAL: This module contains the fully generated definition of `ImplRestriction` and should not + * be referenced directly. + */ +module Generated { + /** + * An implementation restriction, limiting where a trait can be implemented. For example the `impl(crate)` restriction (an unstable feature). + * INTERNAL: Do not reference the `Generated::ImplRestriction` class directly. + * Use the subclass `ImplRestriction`, where the following predicates are available. + */ + class ImplRestriction extends Synth::TImplRestriction, AstNodeImpl::AstNode { + override string getAPrimaryQlClass() { result = "ImplRestriction" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + + /** + * Gets the visibility inner of this impl restriction, if it exists. + */ + VisibilityInner getVisibilityInner() { + result = + Synth::convertVisibilityInnerFromRaw(Synth::convertImplRestrictionToRaw(this) + .(Raw::ImplRestriction) + .getVisibilityInner()) + } + + /** + * Holds if `getVisibilityInner()` exists. + */ + final predicate hasVisibilityInner() { exists(this.getVisibilityInner()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/IncludeBytesExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/IncludeBytesExpr.qll new file mode 100644 index 000000000000..23af5459aa6e --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/IncludeBytesExpr.qll @@ -0,0 +1,29 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `IncludeBytesExpr`. + * 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.ExprImpl::Impl as ExprImpl + +/** + * INTERNAL: This module contains the fully generated definition of `IncludeBytesExpr` and should not + * be referenced directly. + */ +module Generated { + /** + * An expression produced by the built-in `include_bytes!` macro, embedding the contents of a file as a byte array. For example: + * ```rust + * let data = include_bytes!("data.bin"); + * ``` + * INTERNAL: Do not reference the `Generated::IncludeBytesExpr` class directly. + * Use the subclass `IncludeBytesExpr`, where the following predicates are available. + */ + class IncludeBytesExpr extends Synth::TIncludeBytesExpr, ExprImpl::Expr { + override string getAPrimaryQlClass() { result = "IncludeBytesExpr" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/IndexExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/IndexExpr.qll index 51a9cd393e42..04ffbc070c9c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/IndexExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/IndexExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -30,15 +30,17 @@ module Generated { /** * Gets the `index`th attr of this index expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertIndexExprToRaw(this).(Raw::IndexExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertIndexExprToRaw(this) + .(Raw::IndexExpr) + .getAttr(index)) } /** * Gets any of the attrs of this index expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this index expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ItemList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ItemList.qll index 5d470ac9a779..9f3bc8d1205b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ItemList.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.Item /** @@ -31,18 +31,22 @@ module Generated { class ItemList extends Synth::TItemList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "ItemList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this item list (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertItemListToRaw(this).(Raw::ItemList).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertItemListToRaw(this) + .(Raw::ItemList) + .getAttr(index)) } /** * Gets any of the attrs of this item list. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this item list. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll index fba14fb3fc4d..cae2b17bf00d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/KeyValueMeta.qll @@ -22,6 +22,8 @@ module Generated { class KeyValueMeta extends Synth::TKeyValueMeta, MetaImpl::Meta { override string getAPrimaryQlClass() { result = "KeyValueMeta" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the expression of this key value meta, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LetExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LetExpr.qll index 45e0fa589dab..77833e329bff 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LetExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LetExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.Pat @@ -32,15 +32,15 @@ module Generated { /** * Gets the `index`th attr of this let expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertLetExprToRaw(this).(Raw::LetExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertLetExprToRaw(this).(Raw::LetExpr).getAttr(index)) } /** * Gets any of the attrs of this let expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this let expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LetStmt.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LetStmt.qll index c971a1548a56..81acdb5b7d53 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LetStmt.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LetStmt.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.LetElse import codeql.rust.elements.Pat @@ -39,15 +39,15 @@ module Generated { /** * Gets the `index`th attr of this let statement (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertLetStmtToRaw(this).(Raw::LetStmt).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertLetStmtToRaw(this).(Raw::LetStmt).getAttr(index)) } /** * Gets any of the attrs of this let statement. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this let statement. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeArg.qll index 7ae2873fa606..c17a9e391299 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeArg.qll @@ -28,6 +28,8 @@ module Generated { class LifetimeArg extends Synth::TLifetimeArg, GenericArgImpl::GenericArg { override string getAPrimaryQlClass() { result = "LifetimeArg" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the lifetime of this lifetime argument, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeParam.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeParam.qll index a293bfd54276..f1459f7c6804 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeParam.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeParam.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.GenericParamImpl::Impl as GenericParamImpl import codeql.rust.elements.Lifetime import codeql.rust.elements.TypeBoundList @@ -30,12 +30,14 @@ module Generated { class LifetimeParam extends Synth::TLifetimeParam, GenericParamImpl::GenericParam { override string getAPrimaryQlClass() { result = "LifetimeParam" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this lifetime parameter (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertLifetimeParamToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertLifetimeParamToRaw(this) .(Raw::LifetimeParam) .getAttr(index)) } @@ -43,7 +45,7 @@ module Generated { /** * Gets any of the attrs of this lifetime parameter. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this lifetime parameter. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LiteralExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LiteralExpr.qll index 57967d06538e..82ccf7256602 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LiteralExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LiteralExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl /** @@ -35,9 +35,9 @@ module Generated { /** * Gets the `index`th attr of this literal expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertLiteralExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertLiteralExprToRaw(this) .(Raw::LiteralExpr) .getAttr(index)) } @@ -45,7 +45,7 @@ module Generated { /** * Gets any of the attrs of this literal expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this literal expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LoopExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LoopExpr.qll index 510c3dedb683..7264047a41a2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LoopExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LoopExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.LoopingExprImpl::Impl as LoopingExprImpl /** @@ -46,15 +46,17 @@ module Generated { /** * Gets the `index`th attr of this loop expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertLoopExprToRaw(this).(Raw::LoopExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertLoopExprToRaw(this) + .(Raw::LoopExpr) + .getAttr(index)) } /** * Gets any of the attrs of this loop expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this loop expression. 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 bcca8b8deef3..c9ab7696a850 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroCall.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroCall.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.AnyAttr 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.Path import codeql.rust.elements.TokenTree @@ -34,15 +34,17 @@ module Generated { /** * Gets the `index`th attr of this macro call (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertMacroCallToRaw(this).(Raw::MacroCall).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertMacroCallToRaw(this) + .(Raw::MacroCall) + .getAttr(index)) } /** * Gets any of the attrs of this macro call. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this macro call. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroDef.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroDef.qll index b10858d06854..90a598c561f8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroDef.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroDef.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name import codeql.rust.elements.TokenTree @@ -32,6 +32,8 @@ module Generated { class MacroDef extends Synth::TMacroDef, ItemImpl::Item { override string getAPrimaryQlClass() { result = "MacroDef" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the arguments of this macro def, if it exists. */ @@ -48,15 +50,17 @@ module Generated { /** * Gets the `index`th attr of this macro def (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertMacroDefToRaw(this).(Raw::MacroDef).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertMacroDefToRaw(this) + .(Raw::MacroDef) + .getAttr(index)) } /** * Gets any of the attrs of this macro def. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this macro def. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroExpr.qll index 60e6ae6708eb..21118262a248 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroExpr.qll @@ -27,6 +27,8 @@ module Generated { class MacroExpr extends Synth::TMacroExpr, ExprImpl::Expr { override string getAPrimaryQlClass() { result = "MacroExpr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the macro call of this macro expression, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroItems.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroItems.qll index 5dc115ecba4f..2a30b7db55c6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroItems.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroItems.qll @@ -35,6 +35,8 @@ module Generated { class MacroItems extends Synth::TMacroItems, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "MacroItems" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th item of this macro items (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroPat.qll index e967082bc775..2710500847e6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroPat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroPat.qll @@ -36,6 +36,8 @@ module Generated { class MacroPat extends Synth::TMacroPat, PatImpl::Pat { override string getAPrimaryQlClass() { result = "MacroPat" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the macro call of this macro pattern, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroRules.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroRules.qll index d7c915a9363e..0bf5ab98b3ba 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroRules.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroRules.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name import codeql.rust.elements.TokenTree @@ -32,12 +32,14 @@ module Generated { class MacroRules extends Synth::TMacroRules, ItemImpl::Item { override string getAPrimaryQlClass() { result = "MacroRules" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this macro rules (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertMacroRulesToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertMacroRulesToRaw(this) .(Raw::MacroRules) .getAttr(index)) } @@ -45,7 +47,7 @@ module Generated { /** * Gets any of the attrs of this macro rules. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this macro rules. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll index e6b901ba3d97..ead66c1d8639 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll @@ -31,6 +31,8 @@ module Generated { class MacroTypeRepr extends Synth::TMacroTypeRepr, TypeReprImpl::TypeRepr { override string getAPrimaryQlClass() { result = "MacroTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the macro call of this macro type representation, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArm.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArm.qll index 47782a2accb1..f45fafe2aea4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArm.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArm.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.MatchGuard import codeql.rust.elements.Pat @@ -40,15 +40,17 @@ module Generated { /** * Gets the `index`th attr of this match arm (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertMatchArmToRaw(this).(Raw::MatchArm).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertMatchArmToRaw(this) + .(Raw::MatchArm) + .getAttr(index)) } /** * Gets any of the attrs of this match arm. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this match arm. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArmList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArmList.qll index b3b97b7a1751..a96e6286111c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArmList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArmList.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.MatchArm /** @@ -33,6 +33,8 @@ module Generated { class MatchArmList extends Synth::TMatchArmList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "MatchArmList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th arm of this match arm list (0-based). */ @@ -56,9 +58,9 @@ module Generated { /** * Gets the `index`th attr of this match arm list (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertMatchArmListToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertMatchArmListToRaw(this) .(Raw::MatchArmList) .getAttr(index)) } @@ -66,7 +68,7 @@ module Generated { /** * Gets any of the attrs of this match arm list. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this match arm list. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchExpr.qll index 8f49407e5f9e..8dd6a058765b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.MatchArmList @@ -39,15 +39,17 @@ module Generated { /** * Gets the `index`th attr of this match expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertMatchExprToRaw(this).(Raw::MatchExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertMatchExprToRaw(this) + .(Raw::MatchExpr) + .getAttr(index)) } /** * Gets any of the attrs of this match expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this match expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchGuard.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchGuard.qll index b0b52879f52c..e0ab9e2ed245 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchGuard.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchGuard.qll @@ -31,6 +31,8 @@ module Generated { class MatchGuard extends Synth::TMatchGuard, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "MatchGuard" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the condition of this match guard, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll index 18d6803211b3..e3f874f366be 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ArgList -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.GenericArgList @@ -52,9 +52,9 @@ module Generated { /** * Gets the `index`th attr of this method call expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertMethodCallExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertMethodCallExprToRaw(this) .(Raw::MethodCallExpr) .getAttr(index)) } @@ -62,7 +62,7 @@ module Generated { /** * Gets any of the attrs of this method call expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this method call expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Missing.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Missing.qll index 9eff62a26c46..6011345a730e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Missing.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Missing.qll @@ -20,5 +20,7 @@ module Generated { */ class Missing extends Synth::TMissing, UnextractedImpl::Unextracted { override string getAPrimaryQlClass() { result = "Missing" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Module.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Module.qll index b4513c9ae855..7c27a66ff614 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Module.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Module.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.ItemList import codeql.rust.elements.Name @@ -36,15 +36,15 @@ module Generated { /** * Gets the `index`th attr of this module (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertModuleToRaw(this).(Raw::Module).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertModuleToRaw(this).(Raw::Module).getAttr(index)) } /** * Gets any of the attrs of this module. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this module. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MutRestriction.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MutRestriction.qll new file mode 100644 index 000000000000..8213b036b8b3 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MutRestriction.qll @@ -0,0 +1,47 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `MutRestriction`. + * 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 +import codeql.rust.elements.VisibilityInner + +/** + * INTERNAL: This module contains the fully generated definition of `MutRestriction` and should not + * be referenced directly. + */ +module Generated { + /** + * A mutability restriction, limiting where a field can be mutated. For example the `mut(crate)` restriction (an unstable feature). + * INTERNAL: Do not reference the `Generated::MutRestriction` class directly. + * Use the subclass `MutRestriction`, where the following predicates are available. + */ + class MutRestriction extends Synth::TMutRestriction, AstNodeImpl::AstNode { + override string getAPrimaryQlClass() { result = "MutRestriction" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + + /** + * Holds if this mut restriction is mut. + */ + predicate isMut() { Synth::convertMutRestrictionToRaw(this).(Raw::MutRestriction).isMut() } + + /** + * Gets the visibility inner of this mut restriction, if it exists. + */ + VisibilityInner getVisibilityInner() { + result = + Synth::convertVisibilityInnerFromRaw(Synth::convertMutRestrictionToRaw(this) + .(Raw::MutRestriction) + .getVisibilityInner()) + } + + /** + * Holds if `getVisibilityInner()` exists. + */ + final predicate hasVisibilityInner() { exists(this.getVisibilityInner()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/NamedCrate.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/NamedCrate.qll index 8068f52970eb..9670f154299b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/NamedCrate.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/NamedCrate.qll @@ -21,6 +21,8 @@ module Generated { class NamedCrate extends Synth::TNamedCrate, ElementImpl::Element { override string getAPrimaryQlClass() { result = "NamedCrate" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the name of this named crate. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/NotNull.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/NotNull.qll new file mode 100644 index 000000000000..467a1ba73a09 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/NotNull.qll @@ -0,0 +1,32 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `NotNull`. + * 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.PatImpl::Impl as PatImpl + +/** + * INTERNAL: This module contains the fully generated definition of `NotNull` and should not + * be referenced directly. + */ +module Generated { + /** + * The `!null` pattern used in a pattern type to denote a non-null value. Pattern types + * are an experimental, mostly compiler-internal feature (used in the standard library for + * types such as `NonZero` and `NonNull`) and cannot be written directly in stable Rust; + * the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + * ```rust + * type NonNull = builtin#pattern_type(*const () is !null); + * ``` + * INTERNAL: Do not reference the `Generated::NotNull` class directly. + * Use the subclass `NotNull`, where the following predicates are available. + */ + class NotNull extends Synth::TNotNull, PatImpl::Pat { + override string getAPrimaryQlClass() { result = "NotNull" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/OffsetOfExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/OffsetOfExpr.qll index c66a1af823a3..206897a9659d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/OffsetOfExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/OffsetOfExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl import codeql.rust.elements.NameRef import codeql.rust.elements.TypeRepr @@ -27,12 +27,14 @@ module Generated { class OffsetOfExpr extends Synth::TOffsetOfExpr, ExprImpl::Expr { override string getAPrimaryQlClass() { result = "OffsetOfExpr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this offset of expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertOffsetOfExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertOffsetOfExprToRaw(this) .(Raw::OffsetOfExpr) .getAttr(index)) } @@ -40,7 +42,7 @@ module Generated { /** * Gets any of the attrs of this offset of expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this offset of expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParamBase.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParamBase.qll index 3202b2149e41..325a0441317d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParamBase.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParamBase.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.TypeRepr /** @@ -24,15 +24,17 @@ module Generated { /** * Gets the `index`th attr of this parameter base (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertParamBaseToRaw(this).(Raw::ParamBase).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertParamBaseToRaw(this) + .(Raw::ParamBase) + .getAttr(index)) } /** * Gets any of the attrs of this parameter base. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this parameter base. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParamList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParamList.qll index 1e13899b9a57..110cbcc396fb 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParamList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParamList.qll @@ -29,6 +29,8 @@ module Generated { class ParamList extends Synth::TParamList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "ParamList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th parameter of this parameter list (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenExpr.qll index 560398ca7f29..d02e79bb34fa 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -31,15 +31,17 @@ module Generated { /** * Gets the `index`th attr of this paren expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertParenExprToRaw(this).(Raw::ParenExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertParenExprToRaw(this) + .(Raw::ParenExpr) + .getAttr(index)) } /** * Gets any of the attrs of this paren expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this paren expression. 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 c76fc01aecef..4d917343d90d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -140,18 +140,6 @@ private module Impl { ) } - private Element getImmediateChildOfAttr(Attr e, int index, string partialPredicateCall) { - exists(int n, int nMeta | - n = 0 and - nMeta = n + 1 and - ( - none() - or - index = n and result = e.getMeta() and partialPredicateCall = "Meta()" - ) - ) - } - private Element getImmediateChildOfExternItemList( ExternItemList e, int index, string partialPredicateCall ) { @@ -188,26 +176,20 @@ private module Impl { private Element getImmediateChildOfFormatArgsArg( FormatArgsArg e, int index, string partialPredicateCall ) { - exists(int n, int nArgName, int nExpr | + exists(int n, int nExpr, int nName | n = 0 and - nArgName = n + 1 and - nExpr = nArgName + 1 and + nExpr = n + 1 and + nName = nExpr + 1 and ( none() or - index = n and result = e.getArgName() and partialPredicateCall = "ArgName()" + index = n and result = e.getExpr() and partialPredicateCall = "Expr()" or - index = nArgName and result = e.getExpr() and partialPredicateCall = "Expr()" + index = nExpr and result = e.getName() and partialPredicateCall = "Name()" ) ) } - private Element getImmediateChildOfFormatArgsArgName( - FormatArgsArgName e, int index, string partialPredicateCall - ) { - none() - } - private Element getImmediateChildOfGenericArgList( GenericArgList e, int index, string partialPredicateCall ) { @@ -238,6 +220,20 @@ private module Impl { ) } + private Element getImmediateChildOfImplRestriction( + ImplRestriction e, int index, string partialPredicateCall + ) { + exists(int n, int nVisibilityInner | + n = 0 and + nVisibilityInner = n + 1 and + ( + none() + or + index = n and result = e.getVisibilityInner() and partialPredicateCall = "VisibilityInner()" + ) + ) + } + private Element getImmediateChildOfItemList(ItemList e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nItem | n = 0 and @@ -345,6 +341,20 @@ private module Impl { ) } + private Element getImmediateChildOfMutRestriction( + MutRestriction e, int index, string partialPredicateCall + ) { + exists(int n, int nVisibilityInner | + n = 0 and + nVisibilityInner = n + 1 and + ( + none() + or + index = n and result = e.getVisibilityInner() and partialPredicateCall = "VisibilityInner()" + ) + ) + } + private Element getImmediateChildOfName(Name e, int index, string partialPredicateCall) { none() } private Element getImmediateChildOfParamList(ParamList e, int index, string partialPredicateCall) { @@ -555,11 +565,15 @@ private module Impl { private Element getImmediateChildOfStructField( StructField e, int index, string partialPredicateCall ) { - exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr, int nVisibility | + exists( + int n, int nAttr, int nDefaultVal, int nMutRestriction, int nName, int nTypeRepr, + int nVisibility + | n = 0 and nAttr = n + e.getNumberOfAttrs() and nDefaultVal = nAttr + 1 and - nName = nDefaultVal + 1 and + nMutRestriction = nDefaultVal + 1 and + nName = nMutRestriction + 1 and nTypeRepr = nName + 1 and nVisibility = nTypeRepr + 1 and ( @@ -570,7 +584,11 @@ private module Impl { or index = nAttr and result = e.getDefaultVal() and partialPredicateCall = "DefaultVal()" or - index = nDefaultVal and result = e.getName() and partialPredicateCall = "Name()" + index = nDefaultVal and + result = e.getMutRestriction() and + partialPredicateCall = "MutRestriction()" + or + index = nMutRestriction and result = e.getName() and partialPredicateCall = "Name()" or index = nName and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" or @@ -637,10 +655,11 @@ private module Impl { } private Element getImmediateChildOfTupleField(TupleField e, int index, string partialPredicateCall) { - exists(int n, int nAttr, int nTypeRepr, int nVisibility | + exists(int n, int nAttr, int nMutRestriction, int nTypeRepr, int nVisibility | n = 0 and nAttr = n + e.getNumberOfAttrs() and - nTypeRepr = nAttr + 1 and + nMutRestriction = nAttr + 1 and + nTypeRepr = nMutRestriction + 1 and nVisibility = nTypeRepr + 1 and ( none() @@ -648,7 +667,11 @@ private module Impl { result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or - index = nAttr and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" + index = nAttr and + result = e.getMutRestriction() and + partialPredicateCall = "MutRestriction()" + or + index = nMutRestriction and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" or index = nTypeRepr and result = e.getVisibility() and partialPredicateCall = "Visibility()" ) @@ -757,6 +780,20 @@ private module Impl { } private Element getImmediateChildOfVisibility(Visibility e, int index, string partialPredicateCall) { + exists(int n, int nVisibilityInner | + n = 0 and + nVisibilityInner = n + 1 and + ( + none() + or + index = n and result = e.getVisibilityInner() and partialPredicateCall = "VisibilityInner()" + ) + ) + } + + private Element getImmediateChildOfVisibilityInner( + VisibilityInner e, int index, string partialPredicateCall + ) { exists(int n, int nPath | n = 0 and nPath = n + 1 and @@ -847,7 +884,16 @@ private module Impl { private Element getImmediateChildOfAsmClobberAbi( AsmClobberAbi e, int index, string partialPredicateCall ) { - none() + exists(int n, int nAttr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAttr(index - n) and + partialPredicateCall = "Attr(" + (index - n).toString() + ")" + ) + ) } private Element getImmediateChildOfAsmConst(AsmConst e, int index, string partialPredicateCall) { @@ -877,16 +923,20 @@ private module Impl { private Element getImmediateChildOfAsmOperandNamed( AsmOperandNamed e, int index, string partialPredicateCall ) { - exists(int n, int nAsmOperand, int nName | + exists(int n, int nAsmOperand, int nAttr, int nName | n = 0 and nAsmOperand = n + 1 and - nName = nAsmOperand + 1 and + nAttr = nAsmOperand + e.getNumberOfAttrs() and + nName = nAttr + 1 and ( none() or index = n and result = e.getAsmOperand() and partialPredicateCall = "AsmOperand()" or - index = nAsmOperand and result = e.getName() and partialPredicateCall = "Name()" + result = e.getAttr(index - nAsmOperand) and + partialPredicateCall = "Attr(" + (index - nAsmOperand).toString() + ")" + or + index = nAttr and result = e.getName() and partialPredicateCall = "Name()" ) ) } @@ -894,14 +944,18 @@ private module Impl { private Element getImmediateChildOfAsmOptionsList( AsmOptionsList e, int index, string partialPredicateCall ) { - exists(int n, int nAsmOption | + exists(int n, int nAsmOption, int nAttr | n = 0 and nAsmOption = n + e.getNumberOfAsmOptions() and + nAttr = nAsmOption + e.getNumberOfAttrs() and ( none() or result = e.getAsmOption(index - n) and partialPredicateCall = "AsmOption(" + (index - n).toString() + ")" + or + result = e.getAttr(index - nAsmOption) and + partialPredicateCall = "Attr(" + (index - nAsmOption).toString() + ")" ) ) } @@ -990,6 +1044,18 @@ private module Impl { ) } + private Element getImmediateChildOfAttr(Attr e, int index, string partialPredicateCall) { + exists(int n, int nMeta | + n = 0 and + nMeta = n + 1 and + ( + none() + or + index = n and result = e.getMeta() and partialPredicateCall = "Meta()" + ) + ) + } + private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and @@ -1159,6 +1225,32 @@ private module Impl { ) } + private Element getImmediateChildOfCfgPredExpr( + CfgPredExpr e, int index, string partialPredicateCall + ) { + exists(int n, int nCfgPredicate | + n = 0 and + nCfgPredicate = n + 1 and + ( + none() + or + index = n and result = e.getCfgPredicate() and partialPredicateCall = "CfgPredicate()" + ) + ) + } + + private Element getImmediateChildOfCfgPredPat(CfgPredPat e, int index, string partialPredicateCall) { + exists(int n, int nCfgPredicate | + n = 0 and + nCfgPredicate = n + 1 and + ( + none() + or + index = n and result = e.getCfgPredicate() and partialPredicateCall = "CfgPredicate()" + ) + ) + } + private Element getImmediateChildOfClosureExpr( ClosureExpr e, int index, string partialPredicateCall ) { @@ -1256,6 +1348,22 @@ private module Impl { ) } + private Element getImmediateChildOfDerefPat(DerefPat e, int index, string partialPredicateCall) { + exists(int n, int nPat | + n = 0 and + nPat = n + 1 and + ( + none() + or + index = n and result = e.getPat() and partialPredicateCall = "Pat()" + ) + ) + } + + private Element getImmediateChildOfDocComment(DocComment e, int index, string partialPredicateCall) { + none() + } + private Element getImmediateChildOfDynTraitTypeRepr( DynTraitTypeRepr e, int index, string partialPredicateCall ) { @@ -1419,6 +1527,12 @@ private module Impl { ) } + private Element getImmediateChildOfIncludeBytesExpr( + IncludeBytesExpr e, int index, string partialPredicateCall + ) { + none() + } + private Element getImmediateChildOfIndexExpr(IndexExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nBase, int nIndex | n = 0 and @@ -1673,6 +1787,10 @@ private module Impl { none() } + private Element getImmediateChildOfNotNull(NotNull e, int index, string partialPredicateCall) { + none() + } + private Element getImmediateChildOfOffsetOfExpr( OffsetOfExpr e, int index, string partialPredicateCall ) { @@ -1807,6 +1925,23 @@ private module Impl { ) } + private Element getImmediateChildOfPatternTypeRepr( + PatternTypeRepr e, int index, string partialPredicateCall + ) { + exists(int n, int nPat, int nTypeRepr | + n = 0 and + nPat = n + 1 and + nTypeRepr = nPat + 1 and + ( + none() + or + index = n and result = e.getPat() and partialPredicateCall = "Pat()" + or + index = nPat and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" + ) + ) + } + private Element getImmediateChildOfPrefixExpr(PrefixExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and @@ -2596,14 +2731,15 @@ private module Impl { private Element getImmediateChildOfTrait(Trait e, int index, string partialPredicateCall) { exists( int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, - int nName, int nTypeBoundList, int nVisibility, int nWhereClause + int nImplRestriction, int nName, int nTypeBoundList, int nVisibility, int nWhereClause | n = 0 and nAttributeMacroExpansion = n + 1 and nAssocItemList = nAttributeMacroExpansion + 1 and nAttr = nAssocItemList + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and - nName = nGenericParamList + 1 and + nImplRestriction = nGenericParamList + 1 and + nName = nImplRestriction + 1 and nTypeBoundList = nName + 1 and nVisibility = nTypeBoundList + 1 and nWhereClause = nVisibility + 1 and @@ -2625,7 +2761,11 @@ private module Impl { result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" or - index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()" + index = nGenericParamList and + result = e.getImplRestriction() and + partialPredicateCall = "ImplRestriction()" + or + index = nImplRestriction and result = e.getName() and partialPredicateCall = "Name()" or index = nName and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" or @@ -3109,20 +3249,18 @@ private module Impl { or result = getImmediateChildOfAssocItemList(e, index, partialAccessor) or - result = getImmediateChildOfAttr(e, index, partialAccessor) - or result = getImmediateChildOfExternItemList(e, index, partialAccessor) or result = getImmediateChildOfForBinder(e, index, partialAccessor) or result = getImmediateChildOfFormatArgsArg(e, index, partialAccessor) or - result = getImmediateChildOfFormatArgsArgName(e, index, partialAccessor) - or result = getImmediateChildOfGenericArgList(e, index, partialAccessor) or result = getImmediateChildOfGenericParamList(e, index, partialAccessor) or + result = getImmediateChildOfImplRestriction(e, index, partialAccessor) + or result = getImmediateChildOfItemList(e, index, partialAccessor) or result = getImmediateChildOfLabel(e, index, partialAccessor) @@ -3137,6 +3275,8 @@ private module Impl { or result = getImmediateChildOfMatchGuard(e, index, partialAccessor) or + result = getImmediateChildOfMutRestriction(e, index, partialAccessor) + or result = getImmediateChildOfName(e, index, partialAccessor) or result = getImmediateChildOfParamList(e, index, partialAccessor) @@ -3187,6 +3327,8 @@ private module Impl { or result = getImmediateChildOfVisibility(e, index, partialAccessor) or + result = getImmediateChildOfVisibilityInner(e, index, partialAccessor) + or result = getImmediateChildOfWhereClause(e, index, partialAccessor) or result = getImmediateChildOfWherePred(e, index, partialAccessor) @@ -3211,6 +3353,8 @@ private module Impl { or result = getImmediateChildOfAssocTypeArg(e, index, partialAccessor) or + result = getImmediateChildOfAttr(e, index, partialAccessor) + or result = getImmediateChildOfAwaitExpr(e, index, partialAccessor) or result = getImmediateChildOfBecomeExpr(e, index, partialAccessor) @@ -3233,6 +3377,10 @@ private module Impl { or result = getImmediateChildOfCfgMeta(e, index, partialAccessor) or + result = getImmediateChildOfCfgPredExpr(e, index, partialAccessor) + or + result = getImmediateChildOfCfgPredPat(e, index, partialAccessor) + or result = getImmediateChildOfClosureExpr(e, index, partialAccessor) or result = getImmediateChildOfComment(e, index, partialAccessor) @@ -3245,6 +3393,10 @@ private module Impl { or result = getImmediateChildOfContinueExpr(e, index, partialAccessor) or + result = getImmediateChildOfDerefPat(e, index, partialAccessor) + or + result = getImmediateChildOfDocComment(e, index, partialAccessor) + or result = getImmediateChildOfDynTraitTypeRepr(e, index, partialAccessor) or result = getImmediateChildOfExprStmt(e, index, partialAccessor) @@ -3263,6 +3415,8 @@ private module Impl { or result = getImmediateChildOfImplTraitTypeRepr(e, index, partialAccessor) or + result = getImmediateChildOfIncludeBytesExpr(e, index, partialAccessor) + or result = getImmediateChildOfIndexExpr(e, index, partialAccessor) or result = getImmediateChildOfInferTypeRepr(e, index, partialAccessor) @@ -3297,6 +3451,8 @@ private module Impl { or result = getImmediateChildOfNeverTypeRepr(e, index, partialAccessor) or + result = getImmediateChildOfNotNull(e, index, partialAccessor) + or result = getImmediateChildOfOffsetOfExpr(e, index, partialAccessor) or result = getImmediateChildOfOrPat(e, index, partialAccessor) @@ -3315,6 +3471,8 @@ private module Impl { or result = getImmediateChildOfPathTypeRepr(e, index, partialAccessor) or + result = getImmediateChildOfPatternTypeRepr(e, index, partialAccessor) + or result = getImmediateChildOfPrefixExpr(e, index, partialAccessor) or result = getImmediateChildOfPtrTypeRepr(e, index, partialAccessor) diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll index 6057a7eb3269..637f927914dd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll @@ -33,6 +33,8 @@ module Generated { class ParenthesizedArgList extends Synth::TParenthesizedArgList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "ParenthesizedArgList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th type argument of this parenthesized argument list (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PathExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PathExpr.qll index 7409a2854534..8c27fefce3e4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/PathExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PathExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.PathAstNodeImpl::Impl as PathAstNodeImpl import codeql.rust.elements.internal.PathExprBaseImpl::Impl as PathExprBaseImpl @@ -34,15 +34,17 @@ module Generated { /** * Gets the `index`th attr of this path expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertPathExprToRaw(this).(Raw::PathExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertPathExprToRaw(this) + .(Raw::PathExpr) + .getAttr(index)) } /** * Gets any of the attrs of this path expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this path expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PathMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PathMeta.qll index f568d2407e13..bfc707da0dcf 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/PathMeta.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PathMeta.qll @@ -21,6 +21,8 @@ module Generated { class PathMeta extends Synth::TPathMeta, MetaImpl::Meta { override string getAPrimaryQlClass() { result = "PathMeta" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the path of this path meta, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PatternTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PatternTypeRepr.qll new file mode 100644 index 000000000000..fc7446d80515 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PatternTypeRepr.qll @@ -0,0 +1,63 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `PatternTypeRepr`. + * 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.Pat +import codeql.rust.elements.TypeRepr +import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl + +/** + * INTERNAL: This module contains the fully generated definition of `PatternTypeRepr` and should not + * be referenced directly. + */ +module Generated { + /** + * A pattern type, constraining a type to values matching a pattern. Pattern types are an + * experimental, mostly compiler-internal feature and cannot be written directly in stable + * Rust; the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + * ```rust + * type NonZero = builtin#pattern_type(u32 is 1..); + * ``` + * INTERNAL: Do not reference the `Generated::PatternTypeRepr` class directly. + * Use the subclass `PatternTypeRepr`, where the following predicates are available. + */ + class PatternTypeRepr extends Synth::TPatternTypeRepr, TypeReprImpl::TypeRepr { + override string getAPrimaryQlClass() { result = "PatternTypeRepr" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + + /** + * Gets the pattern of this pattern type representation, if it exists. + */ + Pat getPat() { + result = + Synth::convertPatFromRaw(Synth::convertPatternTypeReprToRaw(this) + .(Raw::PatternTypeRepr) + .getPat()) + } + + /** + * Holds if `getPat()` exists. + */ + final predicate hasPat() { exists(this.getPat()) } + + /** + * Gets the type representation of this pattern type representation, if it exists. + */ + TypeRepr getTypeRepr() { + result = + Synth::convertTypeReprFromRaw(Synth::convertPatternTypeReprToRaw(this) + .(Raw::PatternTypeRepr) + .getTypeRepr()) + } + + /** + * Holds if `getTypeRepr()` exists. + */ + final predicate hasTypeRepr() { exists(this.getTypeRepr()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PrefixExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PrefixExpr.qll index d8c4bc290515..3d969c5fab0e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/PrefixExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PrefixExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -31,9 +31,9 @@ module Generated { /** * Gets the `index`th attr of this prefix expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertPrefixExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertPrefixExprToRaw(this) .(Raw::PrefixExpr) .getAttr(index)) } @@ -41,7 +41,7 @@ module Generated { /** * Gets any of the attrs of this prefix expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this prefix expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll index 34c116a037e0..c9af74c2d9cd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll @@ -29,6 +29,8 @@ module Generated { class PtrTypeRepr extends Synth::TPtrTypeRepr, TypeReprImpl::TypeRepr { override string getAPrimaryQlClass() { result = "PtrTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Holds if this ptr type representation is const. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RangeExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RangeExpr.qll index 06595838c222..e2aff274200b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RangeExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RangeExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -34,15 +34,17 @@ module Generated { /** * Gets the `index`th attr of this range expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertRangeExprToRaw(this).(Raw::RangeExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertRangeExprToRaw(this) + .(Raw::RangeExpr) + .getAttr(index)) } /** * Gets any of the attrs of this range expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this range expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RangePat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RangePat.qll index 60ea7b90fd7d..c4b7f6f23292 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RangePat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RangePat.qll @@ -29,6 +29,8 @@ module Generated { class RangePat extends Synth::TRangePat, PatImpl::Pat { override string getAPrimaryQlClass() { result = "RangePat" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the end of this range pattern, if it exists. */ 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 3caf2b58e28e..e05baeebf6f0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -165,6 +165,11 @@ module Raw { */ class Addressable extends @addressable, AstNode { } + /** + * INTERNAL: Do not use. + */ + class AnyAttr extends @any_attr, AstNode { } + /** * INTERNAL: Do not use. * A list of arguments in a function or method call. @@ -342,7 +347,7 @@ module Raw { /** * Gets the `index`th attr of this assoc item list (0-based). */ - Attr getAttr(int index) { assoc_item_list_attrs(this, index, result) } + AnyAttr getAttr(int index) { assoc_item_list_attrs(this, index, result) } /** * Gets the number of attrs of this assoc item list. @@ -365,38 +370,6 @@ module Raw { ) } - /** - * INTERNAL: Do not use. - * An attribute applied to an item. - * - * For example: - * ```rust - * #[derive(Debug)] - * //^^^^^^^^^^^^^ - * struct S; - * ``` - */ - class Attr extends @attr, AstNode { - override string toString() { result = "Attr" } - - /** - * Gets the meta of this attr, if it exists. - */ - Meta getMeta() { attr_meta(this, result) } - } - - private Element getImmediateChildOfAttr(Attr e, int index) { - exists(int n, int nMeta | - n = 0 and - nMeta = n + 1 and - ( - none() - or - index = n and result = e.getMeta() - ) - ) - } - /** * INTERNAL: Do not use. * A callable. Either a `Function` or a `ClosureExpr`. @@ -410,7 +383,7 @@ module Raw { /** * Gets the `index`th attr of this callable (0-based). */ - Attr getAttr(int index) { callable_attrs(this, index, result) } + AnyAttr getAttr(int index) { callable_attrs(this, index, result) } /** * Gets the number of attrs of this callable. @@ -447,7 +420,7 @@ module Raw { /** * Gets the `index`th attr of this extern item list (0-based). */ - Attr getAttr(int index) { extern_item_list_attrs(this, index, result) } + AnyAttr getAttr(int index) { extern_item_list_attrs(this, index, result) } /** * Gets the number of attrs of this extern item list. @@ -543,40 +516,31 @@ module Raw { override string toString() { result = "FormatArgsArg" } /** - * Gets the argument name of this format arguments argument, if it exists. + * Gets the expression of this format arguments argument, if it exists. */ - FormatArgsArgName getArgName() { format_args_arg_arg_names(this, result) } + Expr getExpr() { format_args_arg_exprs(this, result) } /** - * Gets the expression of this format arguments argument, if it exists. + * Gets the name of this format arguments argument, if it exists. */ - Expr getExpr() { format_args_arg_exprs(this, result) } + Name getName() { format_args_arg_names(this, result) } } private Element getImmediateChildOfFormatArgsArg(FormatArgsArg e, int index) { - exists(int n, int nArgName, int nExpr | + exists(int n, int nExpr, int nName | n = 0 and - nArgName = n + 1 and - nExpr = nArgName + 1 and + nExpr = n + 1 and + nName = nExpr + 1 and ( none() or - index = n and result = e.getArgName() + index = n and result = e.getExpr() or - index = nArgName and result = e.getExpr() + index = nExpr and result = e.getName() ) ) } - /** - * INTERNAL: Do not use. - */ - class FormatArgsArgName extends @format_args_arg_name, AstNode { - override string toString() { result = "FormatArgsArgName" } - } - - private Element getImmediateChildOfFormatArgsArgName(FormatArgsArgName e, int index) { none() } - /** * INTERNAL: Do not use. * A generic argument in a generic argument list. @@ -676,6 +640,31 @@ module Raw { ) } + /** + * INTERNAL: Do not use. + * An implementation restriction, limiting where a trait can be implemented. For example the `impl(crate)` restriction (an unstable feature). + */ + class ImplRestriction extends @impl_restriction, AstNode { + override string toString() { result = "ImplRestriction" } + + /** + * Gets the visibility inner of this impl restriction, if it exists. + */ + VisibilityInner getVisibilityInner() { impl_restriction_visibility_inners(this, result) } + } + + private Element getImmediateChildOfImplRestriction(ImplRestriction e, int index) { + exists(int n, int nVisibilityInner | + n = 0 and + nVisibilityInner = n + 1 and + ( + none() + or + index = n and result = e.getVisibilityInner() + ) + ) + } + /** * INTERNAL: Do not use. * A list of items in a module or block. @@ -694,7 +683,7 @@ module Raw { /** * Gets the `index`th attr of this item list (0-based). */ - Attr getAttr(int index) { item_list_attrs(this, index, result) } + AnyAttr getAttr(int index) { item_list_attrs(this, index, result) } /** * Gets the number of attrs of this item list. @@ -856,7 +845,7 @@ module Raw { /** * Gets the `index`th attr of this match arm (0-based). */ - Attr getAttr(int index) { match_arm_attrs(this, index, result) } + AnyAttr getAttr(int index) { match_arm_attrs(this, index, result) } /** * Gets the number of attrs of this match arm. @@ -930,7 +919,7 @@ module Raw { /** * Gets the `index`th attr of this match arm list (0-based). */ - Attr getAttr(int index) { match_arm_list_attrs(this, index, result) } + AnyAttr getAttr(int index) { match_arm_list_attrs(this, index, result) } /** * Gets the number of attrs of this match arm list. @@ -1004,6 +993,36 @@ module Raw { */ class Meta extends @meta, AstNode { } + /** + * INTERNAL: Do not use. + * A mutability restriction, limiting where a field can be mutated. For example the `mut(crate)` restriction (an unstable feature). + */ + class MutRestriction extends @mut_restriction, AstNode { + override string toString() { result = "MutRestriction" } + + /** + * Holds if this mut restriction is mut. + */ + predicate isMut() { mut_restriction_is_mut(this) } + + /** + * Gets the visibility inner of this mut restriction, if it exists. + */ + VisibilityInner getVisibilityInner() { mut_restriction_visibility_inners(this, result) } + } + + private Element getImmediateChildOfMutRestriction(MutRestriction e, int index) { + exists(int n, int nVisibilityInner | + n = 0 and + nVisibilityInner = n + 1 and + ( + none() + or + index = n and result = e.getVisibilityInner() + ) + ) + } + /** * INTERNAL: Do not use. * An identifier name. @@ -1033,7 +1052,7 @@ module Raw { /** * Gets the `index`th attr of this parameter base (0-based). */ - Attr getAttr(int index) { param_base_attrs(this, index, result) } + AnyAttr getAttr(int index) { param_base_attrs(this, index, result) } /** * Gets the number of attrs of this parameter base. @@ -1375,7 +1394,7 @@ module Raw { /** * Gets the `index`th attr of this source file (0-based). */ - Attr getAttr(int index) { source_file_attrs(this, index, result) } + AnyAttr getAttr(int index) { source_file_attrs(this, index, result) } /** * Gets the number of attrs of this source file. @@ -1435,7 +1454,7 @@ module Raw { /** * Gets the `index`th attr of this statement list (0-based). */ - Attr getAttr(int index) { stmt_list_attrs(this, index, result) } + AnyAttr getAttr(int index) { stmt_list_attrs(this, index, result) } /** * Gets the number of attrs of this statement list. @@ -1495,7 +1514,7 @@ module Raw { /** * Gets the `index`th attr of this struct expression field (0-based). */ - Attr getAttr(int index) { struct_expr_field_attrs(this, index, result) } + AnyAttr getAttr(int index) { struct_expr_field_attrs(this, index, result) } /** * Gets the number of attrs of this struct expression field. @@ -1547,7 +1566,7 @@ module Raw { /** * Gets the `index`th attr of this struct expression field list (0-based). */ - Attr getAttr(int index) { struct_expr_field_list_attrs(this, index, result) } + AnyAttr getAttr(int index) { struct_expr_field_list_attrs(this, index, result) } /** * Gets the number of attrs of this struct expression field list. @@ -1604,7 +1623,7 @@ module Raw { /** * Gets the `index`th attr of this struct field (0-based). */ - Attr getAttr(int index) { struct_field_attrs(this, index, result) } + AnyAttr getAttr(int index) { struct_field_attrs(this, index, result) } /** * Gets the number of attrs of this struct field. @@ -1621,6 +1640,11 @@ module Raw { */ predicate isUnsafe() { struct_field_is_unsafe(this) } + /** + * Gets the mut restriction of this struct field, if it exists. + */ + MutRestriction getMutRestriction() { struct_field_mut_restrictions(this, result) } + /** * Gets the name of this struct field, if it exists. */ @@ -1638,11 +1662,15 @@ module Raw { } private Element getImmediateChildOfStructField(StructField e, int index) { - exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr, int nVisibility | + exists( + int n, int nAttr, int nDefaultVal, int nMutRestriction, int nName, int nTypeRepr, + int nVisibility + | n = 0 and nAttr = n + e.getNumberOfAttrs() and nDefaultVal = nAttr + 1 and - nName = nDefaultVal + 1 and + nMutRestriction = nDefaultVal + 1 and + nName = nMutRestriction + 1 and nTypeRepr = nName + 1 and nVisibility = nTypeRepr + 1 and ( @@ -1652,7 +1680,9 @@ module Raw { or index = nAttr and result = e.getDefaultVal() or - index = nDefaultVal and result = e.getName() + index = nDefaultVal and result = e.getMutRestriction() + or + index = nMutRestriction and result = e.getName() or index = nName and result = e.getTypeRepr() or @@ -1674,7 +1704,7 @@ module Raw { /** * Gets the `index`th attr of this struct pattern field (0-based). */ - Attr getAttr(int index) { struct_pat_field_attrs(this, index, result) } + AnyAttr getAttr(int index) { struct_pat_field_attrs(this, index, result) } /** * Gets the number of attrs of this struct pattern field. @@ -1825,13 +1855,18 @@ module Raw { /** * Gets the `index`th attr of this tuple field (0-based). */ - Attr getAttr(int index) { tuple_field_attrs(this, index, result) } + AnyAttr getAttr(int index) { tuple_field_attrs(this, index, result) } /** * Gets the number of attrs of this tuple field. */ int getNumberOfAttrs() { result = count(int i | tuple_field_attrs(this, i, _)) } + /** + * Gets the mut restriction of this tuple field, if it exists. + */ + MutRestriction getMutRestriction() { tuple_field_mut_restrictions(this, result) } + /** * Gets the type representation of this tuple field, if it exists. */ @@ -1844,17 +1879,20 @@ module Raw { } private Element getImmediateChildOfTupleField(TupleField e, int index) { - exists(int n, int nAttr, int nTypeRepr, int nVisibility | + exists(int n, int nAttr, int nMutRestriction, int nTypeRepr, int nVisibility | n = 0 and nAttr = n + e.getNumberOfAttrs() and - nTypeRepr = nAttr + 1 and + nMutRestriction = nAttr + 1 and + nTypeRepr = nMutRestriction + 1 and nVisibility = nTypeRepr + 1 and ( none() or result = e.getAttr(index - n) or - index = nAttr and result = e.getTypeRepr() + index = nAttr and result = e.getMutRestriction() + or + index = nMutRestriction and result = e.getTypeRepr() or index = nTypeRepr and result = e.getVisibility() ) @@ -2158,12 +2196,41 @@ module Raw { override string toString() { result = "Visibility" } /** - * Gets the path of this visibility, if it exists. + * Gets the visibility inner of this visibility, if it exists. */ - Path getPath() { visibility_paths(this, result) } + VisibilityInner getVisibilityInner() { visibility_visibility_inners(this, result) } } private Element getImmediateChildOfVisibility(Visibility e, int index) { + exists(int n, int nVisibilityInner | + n = 0 and + nVisibilityInner = n + 1 and + ( + none() + or + index = n and result = e.getVisibilityInner() + ) + ) + } + + /** + * INTERNAL: Do not use. + * The parenthesized inner part of a visibility modifier or restriction, such as the `(in path)` in `pub(in path)`, or the `(crate)` in `pub(crate)`. For example the `(in foo::bar)` in: + * ```rust + * pub(in foo::bar) struct S; + * // ^^^^^^^^^^^^ + * ``` + */ + class VisibilityInner extends @visibility_inner, AstNode { + override string toString() { result = "VisibilityInner" } + + /** + * Gets the path of this visibility inner, if it exists. + */ + Path getPath() { visibility_inner_paths(this, result) } + } + + private Element getImmediateChildOfVisibilityInner(VisibilityInner e, int index) { exists(int n, int nPath | n = 0 and nPath = n + 1 and @@ -2277,7 +2344,7 @@ module Raw { /** * Gets the `index`th attr of this array expression internal (0-based). */ - Attr getAttr(int index) { array_expr_internal_attrs(this, index, result) } + AnyAttr getAttr(int index) { array_expr_internal_attrs(this, index, result) } /** * Gets the number of attrs of this array expression internal. @@ -2367,9 +2434,29 @@ module Raw { */ class AsmClobberAbi extends @asm_clobber_abi, AsmPiece { override string toString() { result = "AsmClobberAbi" } + + /** + * Gets the `index`th attr of this asm clobber abi (0-based). + */ + AnyAttr getAttr(int index) { asm_clobber_abi_attrs(this, index, result) } + + /** + * Gets the number of attrs of this asm clobber abi. + */ + int getNumberOfAttrs() { result = count(int i | asm_clobber_abi_attrs(this, i, _)) } } - private Element getImmediateChildOfAsmClobberAbi(AsmClobberAbi e, int index) { none() } + private Element getImmediateChildOfAsmClobberAbi(AsmClobberAbi e, int index) { + exists(int n, int nAttr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAttr(index - n) + ) + ) + } /** * INTERNAL: Do not use. @@ -2462,6 +2549,16 @@ module Raw { */ AsmOperand getAsmOperand() { asm_operand_named_asm_operands(this, result) } + /** + * Gets the `index`th attr of this asm operand named (0-based). + */ + AnyAttr getAttr(int index) { asm_operand_named_attrs(this, index, result) } + + /** + * Gets the number of attrs of this asm operand named. + */ + int getNumberOfAttrs() { result = count(int i | asm_operand_named_attrs(this, i, _)) } + /** * Gets the name of this asm operand named, if it exists. */ @@ -2469,16 +2566,19 @@ module Raw { } private Element getImmediateChildOfAsmOperandNamed(AsmOperandNamed e, int index) { - exists(int n, int nAsmOperand, int nName | + exists(int n, int nAsmOperand, int nAttr, int nName | n = 0 and nAsmOperand = n + 1 and - nName = nAsmOperand + 1 and + nAttr = nAsmOperand + e.getNumberOfAttrs() and + nName = nAttr + 1 and ( none() or index = n and result = e.getAsmOperand() or - index = nAsmOperand and result = e.getName() + result = e.getAttr(index - nAsmOperand) + or + index = nAttr and result = e.getName() ) ) } @@ -2506,16 +2606,29 @@ module Raw { * Gets the number of asm options of this asm options list. */ int getNumberOfAsmOptions() { result = count(int i | asm_options_list_asm_options(this, i, _)) } + + /** + * Gets the `index`th attr of this asm options list (0-based). + */ + AnyAttr getAttr(int index) { asm_options_list_attrs(this, index, result) } + + /** + * Gets the number of attrs of this asm options list. + */ + int getNumberOfAttrs() { result = count(int i | asm_options_list_attrs(this, i, _)) } } private Element getImmediateChildOfAsmOptionsList(AsmOptionsList e, int index) { - exists(int n, int nAsmOption | + exists(int n, int nAsmOption, int nAttr | n = 0 and nAsmOption = n + e.getNumberOfAsmOptions() and + nAttr = nAsmOption + e.getNumberOfAttrs() and ( none() or result = e.getAsmOption(index - n) + or + result = e.getAttr(index - nAsmOption) ) ) } @@ -2695,6 +2808,38 @@ module Raw { ) } + /** + * INTERNAL: Do not use. + * An attribute applied to an item. + * + * For example: + * ```rust + * #[derive(Debug)] + * //^^^^^^^^^^^^^ + * struct S; + * ``` + */ + class Attr extends @attr, AnyAttr { + override string toString() { result = "Attr" } + + /** + * Gets the meta of this attr, if it exists. + */ + Meta getMeta() { attr_meta(this, result) } + } + + private Element getImmediateChildOfAttr(Attr e, int index) { + exists(int n, int nMeta | + n = 0 and + nMeta = n + 1 and + ( + none() + or + index = n and result = e.getMeta() + ) + ) + } + /** * INTERNAL: Do not use. * An `await` expression. For example: @@ -2711,7 +2856,7 @@ module Raw { /** * Gets the `index`th attr of this await expression (0-based). */ - Attr getAttr(int index) { await_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { await_expr_attrs(this, index, result) } /** * Gets the number of attrs of this await expression. @@ -2758,7 +2903,7 @@ module Raw { /** * Gets the `index`th attr of this become expression (0-based). */ - Attr getAttr(int index) { become_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { become_expr_attrs(this, index, result) } /** * Gets the number of attrs of this become expression. @@ -2803,7 +2948,7 @@ module Raw { /** * Gets the `index`th attr of this binary expression (0-based). */ - Attr getAttr(int index) { binary_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { binary_expr_attrs(this, index, result) } /** * Gets the number of attrs of this binary expression. @@ -2907,7 +3052,7 @@ module Raw { /** * Gets the `index`th attr of this break expression (0-based). */ - Attr getAttr(int index) { break_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { break_expr_attrs(this, index, result) } /** * Gets the number of attrs of this break expression. @@ -2967,7 +3112,7 @@ module Raw { /** * Gets the `index`th attr of this call expression (0-based). */ - Attr getAttr(int index) { call_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { call_expr_attrs(this, index, result) } /** * Gets the number of attrs of this call expression. @@ -3011,7 +3156,7 @@ module Raw { /** * Gets the `index`th attr of this cast expression (0-based). */ - Attr getAttr(int index) { cast_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { cast_expr_attrs(this, index, result) } /** * Gets the number of attrs of this cast expression. @@ -3148,6 +3293,54 @@ module Raw { ) } + /** + * INTERNAL: Do not use. + */ + class CfgPredExpr extends @cfg_pred_expr, Expr { + override string toString() { result = "CfgPredExpr" } + + /** + * Gets the cfg predicate of this cfg pred expression, if it exists. + */ + CfgPredicate getCfgPredicate() { cfg_pred_expr_cfg_predicates(this, result) } + } + + private Element getImmediateChildOfCfgPredExpr(CfgPredExpr e, int index) { + exists(int n, int nCfgPredicate | + n = 0 and + nCfgPredicate = n + 1 and + ( + none() + or + index = n and result = e.getCfgPredicate() + ) + ) + } + + /** + * INTERNAL: Do not use. + */ + class CfgPredPat extends @cfg_pred_pat, Pat { + override string toString() { result = "CfgPredPat" } + + /** + * Gets the cfg predicate of this cfg pred pattern, if it exists. + */ + CfgPredicate getCfgPredicate() { cfg_pred_pat_cfg_predicates(this, result) } + } + + private Element getImmediateChildOfCfgPredPat(CfgPredPat e, int index) { + exists(int n, int nCfgPredicate | + n = 0 and + nCfgPredicate = n + 1 and + ( + none() + or + index = n and result = e.getCfgPredicate() + ) + ) + } + /** * INTERNAL: Do not use. * A closure expression. For example: @@ -3238,6 +3431,7 @@ module Raw { * ```rust * // this is a comment * /// This is a doc comment + * fn documented() {} * ``` */ class Comment extends @comment, Token { @@ -3339,7 +3533,7 @@ module Raw { /** * Gets the `index`th attr of this const parameter (0-based). */ - Attr getAttr(int index) { const_param_attrs(this, index, result) } + AnyAttr getAttr(int index) { const_param_attrs(this, index, result) } /** * Gets the number of attrs of this const parameter. @@ -3412,7 +3606,7 @@ module Raw { /** * Gets the `index`th attr of this continue expression (0-based). */ - Attr getAttr(int index) { continue_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { continue_expr_attrs(this, index, result) } /** * Gets the number of attrs of this continue expression. @@ -3440,6 +3634,55 @@ module Raw { ) } + /** + * INTERNAL: Do not use. + * A deref pattern, matching the value behind a smart pointer. This is an experimental + * Rust feature that cannot be written directly in stable Rust; the example below uses + * rust-analyzer's canonical `builtin#deref` syntax for such patterns: + * ```rust + * match x { + * builtin#deref(y) => y, + * _ => 0, + * }; + * ``` + */ + class DerefPat extends @deref_pat, Pat { + override string toString() { result = "DerefPat" } + + /** + * Gets the pattern of this deref pattern, if it exists. + */ + Pat getPat() { deref_pat_pats(this, result) } + } + + private Element getImmediateChildOfDerefPat(DerefPat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + 1 and + ( + none() + or + index = n and result = e.getPat() + ) + ) + } + + /** + * INTERNAL: Do not use. + * A documentation comment. + * + * For example: + * ```rust + * /// Documents `documented`. + * fn documented() {} + * ``` + */ + class DocComment extends @doc_comment, AnyAttr { + override string toString() { result = "DocComment" } + } + + private Element getImmediateChildOfDocComment(DocComment e, int index) { none() } + /** * INTERNAL: Do not use. * A dynamic trait object type. @@ -3514,7 +3757,7 @@ module Raw { /** * Gets the `index`th attr of this field expression (0-based). */ - Attr getAttr(int index) { field_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { field_expr_attrs(this, index, result) } /** * Gets the number of attrs of this field expression. @@ -3678,7 +3921,7 @@ module Raw { /** * Gets the `index`th attr of this format arguments expression (0-based). */ - Attr getAttr(int index) { format_args_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { format_args_expr_attrs(this, index, result) } /** * Gets the number of attrs of this format arguments expression. @@ -3732,7 +3975,7 @@ module Raw { /** * Gets the `index`th attr of this ident pattern (0-based). */ - Attr getAttr(int index) { ident_pat_attrs(this, index, result) } + AnyAttr getAttr(int index) { ident_pat_attrs(this, index, result) } /** * Gets the number of attrs of this ident pattern. @@ -3800,7 +4043,7 @@ module Raw { /** * Gets the `index`th attr of this if expression (0-based). */ - Attr getAttr(int index) { if_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { if_expr_attrs(this, index, result) } /** * Gets the number of attrs of this if expression. @@ -3875,6 +4118,19 @@ module Raw { ) } + /** + * INTERNAL: Do not use. + * An expression produced by the built-in `include_bytes!` macro, embedding the contents of a file as a byte array. For example: + * ```rust + * let data = include_bytes!("data.bin"); + * ``` + */ + class IncludeBytesExpr extends @include_bytes_expr, Expr { + override string toString() { result = "IncludeBytesExpr" } + } + + private Element getImmediateChildOfIncludeBytesExpr(IncludeBytesExpr e, int index) { none() } + /** * INTERNAL: Do not use. * An index expression. For example: @@ -3889,7 +4145,7 @@ module Raw { /** * Gets the `index`th attr of this index expression (0-based). */ - Attr getAttr(int index) { index_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { index_expr_attrs(this, index, result) } /** * Gets the number of attrs of this index expression. @@ -4017,7 +4273,7 @@ module Raw { /** * Gets the `index`th attr of this let expression (0-based). */ - Attr getAttr(int index) { let_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { let_expr_attrs(this, index, result) } /** * Gets the number of attrs of this let expression. @@ -4073,7 +4329,7 @@ module Raw { /** * Gets the `index`th attr of this let statement (0-based). */ - Attr getAttr(int index) { let_stmt_attrs(this, index, result) } + AnyAttr getAttr(int index) { let_stmt_attrs(this, index, result) } /** * Gets the number of attrs of this let statement. @@ -4193,7 +4449,7 @@ module Raw { /** * Gets the `index`th attr of this lifetime parameter (0-based). */ - Attr getAttr(int index) { lifetime_param_attrs(this, index, result) } + AnyAttr getAttr(int index) { lifetime_param_attrs(this, index, result) } /** * Gets the number of attrs of this lifetime parameter. @@ -4249,7 +4505,7 @@ module Raw { /** * Gets the `index`th attr of this literal expression (0-based). */ - Attr getAttr(int index) { literal_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { literal_expr_attrs(this, index, result) } /** * Gets the number of attrs of this literal expression. @@ -4430,7 +4686,7 @@ module Raw { /** * Gets the `index`th attr of this match expression (0-based). */ - Attr getAttr(int index) { match_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { match_expr_attrs(this, index, result) } /** * Gets the number of attrs of this match expression. @@ -4489,7 +4745,7 @@ module Raw { /** * Gets the `index`th attr of this method call expression (0-based). */ - Attr getAttr(int index) { method_call_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { method_call_expr_attrs(this, index, result) } /** * Gets the number of attrs of this method call expression. @@ -4573,6 +4829,22 @@ module Raw { private Element getImmediateChildOfNeverTypeRepr(NeverTypeRepr e, int index) { none() } + /** + * INTERNAL: Do not use. + * The `!null` pattern used in a pattern type to denote a non-null value. Pattern types + * are an experimental, mostly compiler-internal feature (used in the standard library for + * types such as `NonZero` and `NonNull`) and cannot be written directly in stable Rust; + * the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + * ```rust + * type NonNull = builtin#pattern_type(*const () is !null); + * ``` + */ + class NotNull extends @not_null, Pat { + override string toString() { result = "NotNull" } + } + + private Element getImmediateChildOfNotNull(NotNull e, int index) { none() } + /** * INTERNAL: Do not use. * An `offset_of` expression. For example: @@ -4586,7 +4858,7 @@ module Raw { /** * Gets the `index`th attr of this offset of expression (0-based). */ - Attr getAttr(int index) { offset_of_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { offset_of_expr_attrs(this, index, result) } /** * Gets the number of attrs of this offset of expression. @@ -4713,7 +4985,7 @@ module Raw { /** * Gets the `index`th attr of this paren expression (0-based). */ - Attr getAttr(int index) { paren_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { paren_expr_attrs(this, index, result) } /** * Gets the number of attrs of this paren expression. @@ -4888,6 +5160,44 @@ module Raw { ) } + /** + * INTERNAL: Do not use. + * A pattern type, constraining a type to values matching a pattern. Pattern types are an + * experimental, mostly compiler-internal feature and cannot be written directly in stable + * Rust; the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + * ```rust + * type NonZero = builtin#pattern_type(u32 is 1..); + * ``` + */ + class PatternTypeRepr extends @pattern_type_repr, TypeRepr { + override string toString() { result = "PatternTypeRepr" } + + /** + * Gets the pattern of this pattern type representation, if it exists. + */ + Pat getPat() { pattern_type_repr_pats(this, result) } + + /** + * Gets the type representation of this pattern type representation, if it exists. + */ + TypeRepr getTypeRepr() { pattern_type_repr_type_reprs(this, result) } + } + + private Element getImmediateChildOfPatternTypeRepr(PatternTypeRepr e, int index) { + exists(int n, int nPat, int nTypeRepr | + n = 0 and + nPat = n + 1 and + nTypeRepr = nPat + 1 and + ( + none() + or + index = n and result = e.getPat() + or + index = nPat and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A unary operation expression. For example: @@ -4903,7 +5213,7 @@ module Raw { /** * Gets the `index`th attr of this prefix expression (0-based). */ - Attr getAttr(int index) { prefix_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { prefix_expr_attrs(this, index, result) } /** * Gets the number of attrs of this prefix expression. @@ -4996,7 +5306,7 @@ module Raw { /** * Gets the `index`th attr of this range expression (0-based). */ - Attr getAttr(int index) { range_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { range_expr_attrs(this, index, result) } /** * Gets the number of attrs of this range expression. @@ -5098,7 +5408,7 @@ module Raw { /** * Gets the `index`th attr of this reference expression (0-based). */ - Attr getAttr(int index) { ref_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { ref_expr_attrs(this, index, result) } /** * Gets the number of attrs of this reference expression. @@ -5238,7 +5548,7 @@ module Raw { /** * Gets the `index`th attr of this rest pattern (0-based). */ - Attr getAttr(int index) { rest_pat_attrs(this, index, result) } + AnyAttr getAttr(int index) { rest_pat_attrs(this, index, result) } /** * Gets the number of attrs of this rest pattern. @@ -5278,7 +5588,7 @@ module Raw { /** * Gets the `index`th attr of this return expression (0-based). */ - Attr getAttr(int index) { return_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { return_expr_attrs(this, index, result) } /** * Gets the number of attrs of this return expression. @@ -5587,7 +5897,7 @@ module Raw { /** * Gets the `index`th attr of this try expression (0-based). */ - Attr getAttr(int index) { try_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { try_expr_attrs(this, index, result) } /** * Gets the number of attrs of this try expression. @@ -5630,7 +5940,7 @@ module Raw { /** * Gets the `index`th attr of this tuple expression (0-based). */ - Attr getAttr(int index) { tuple_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { tuple_expr_attrs(this, index, result) } /** * Gets the number of attrs of this tuple expression. @@ -5856,7 +6166,7 @@ module Raw { /** * Gets the `index`th attr of this type parameter (0-based). */ - Attr getAttr(int index) { type_param_attrs(this, index, result) } + AnyAttr getAttr(int index) { type_param_attrs(this, index, result) } /** * Gets the number of attrs of this type parameter. @@ -5913,7 +6223,7 @@ module Raw { /** * Gets the `index`th attr of this underscore expression (0-based). */ - Attr getAttr(int index) { underscore_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { underscore_expr_attrs(this, index, result) } /** * Gets the number of attrs of this underscore expression. @@ -5978,7 +6288,7 @@ module Raw { /** * Gets the `index`th attr of this variant (0-based). */ - Attr getAttr(int index) { variant_attrs(this, index, result) } + AnyAttr getAttr(int index) { variant_attrs(this, index, result) } /** * Gets the number of attrs of this variant. @@ -6058,7 +6368,7 @@ module Raw { /** * Gets the `index`th attr of this yeet expression (0-based). */ - Attr getAttr(int index) { yeet_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { yeet_expr_attrs(this, index, result) } /** * Gets the number of attrs of this yeet expression. @@ -6102,7 +6412,7 @@ module Raw { /** * Gets the `index`th attr of this yield expression (0-based). */ - Attr getAttr(int index) { yield_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { yield_expr_attrs(this, index, result) } /** * Gets the number of attrs of this yield expression. @@ -6156,7 +6466,7 @@ module Raw { /** * Gets the `index`th attr of this asm expression (0-based). */ - Attr getAttr(int index) { asm_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { asm_expr_attrs(this, index, result) } /** * Gets the number of attrs of this asm expression. @@ -6228,7 +6538,7 @@ module Raw { /** * Gets the `index`th attr of this block expression (0-based). */ - Attr getAttr(int index) { block_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { block_expr_attrs(this, index, result) } /** * Gets the number of attrs of this block expression. @@ -6314,7 +6624,7 @@ module Raw { /** * Gets the `index`th attr of this extern block (0-based). */ - Attr getAttr(int index) { extern_block_attrs(this, index, result) } + AnyAttr getAttr(int index) { extern_block_attrs(this, index, result) } /** * Gets the number of attrs of this extern block. @@ -6368,7 +6678,7 @@ module Raw { /** * Gets the `index`th attr of this extern crate (0-based). */ - Attr getAttr(int index) { extern_crate_attrs(this, index, result) } + AnyAttr getAttr(int index) { extern_crate_attrs(this, index, result) } /** * Gets the number of attrs of this extern crate. @@ -6453,7 +6763,7 @@ module Raw { /** * Gets the `index`th attr of this impl (0-based). */ - Attr getAttr(int index) { impl_attrs(this, index, result) } + AnyAttr getAttr(int index) { impl_attrs(this, index, result) } /** * Gets the number of attrs of this impl. @@ -6570,7 +6880,7 @@ module Raw { /** * Gets the `index`th attr of this macro def (0-based). */ - Attr getAttr(int index) { macro_def_attrs(this, index, result) } + AnyAttr getAttr(int index) { macro_def_attrs(this, index, result) } /** * Gets the number of attrs of this macro def. @@ -6640,7 +6950,7 @@ module Raw { /** * Gets the `index`th attr of this macro rules (0-based). */ - Attr getAttr(int index) { macro_rules_attrs(this, index, result) } + AnyAttr getAttr(int index) { macro_rules_attrs(this, index, result) } /** * Gets the number of attrs of this macro rules. @@ -6707,7 +7017,7 @@ module Raw { /** * Gets the `index`th attr of this module (0-based). */ - Attr getAttr(int index) { module_attrs(this, index, result) } + AnyAttr getAttr(int index) { module_attrs(this, index, result) } /** * Gets the number of attrs of this module. @@ -6772,7 +7082,7 @@ module Raw { /** * Gets the `index`th attr of this path expression (0-based). */ - Attr getAttr(int index) { path_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { path_expr_attrs(this, index, result) } /** * Gets the number of attrs of this path expression. @@ -6819,7 +7129,7 @@ module Raw { /** * Gets the `index`th attr of this trait (0-based). */ - Attr getAttr(int index) { trait_attrs(this, index, result) } + AnyAttr getAttr(int index) { trait_attrs(this, index, result) } /** * Gets the number of attrs of this trait. @@ -6831,6 +7141,11 @@ module Raw { */ GenericParamList getGenericParamList() { trait_generic_param_lists(this, result) } + /** + * Gets the impl restriction of this trait, if it exists. + */ + ImplRestriction getImplRestriction() { trait_impl_restrictions(this, result) } + /** * Holds if this trait is auto. */ @@ -6865,14 +7180,15 @@ module Raw { private Element getImmediateChildOfTrait(Trait e, int index) { exists( int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, - int nName, int nTypeBoundList, int nVisibility, int nWhereClause + int nImplRestriction, int nName, int nTypeBoundList, int nVisibility, int nWhereClause | n = 0 and nAttributeMacroExpansion = n + 1 and nAssocItemList = nAttributeMacroExpansion + 1 and nAttr = nAssocItemList + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and - nName = nGenericParamList + 1 and + nImplRestriction = nGenericParamList + 1 and + nName = nImplRestriction + 1 and nTypeBoundList = nName + 1 and nVisibility = nTypeBoundList + 1 and nWhereClause = nVisibility + 1 and @@ -6887,7 +7203,9 @@ module Raw { or index = nAttr and result = e.getGenericParamList() or - index = nGenericParamList and result = e.getName() + index = nGenericParamList and result = e.getImplRestriction() + or + index = nImplRestriction and result = e.getName() or index = nName and result = e.getTypeBoundList() or @@ -6920,7 +7238,7 @@ module Raw { /** * Gets the `index`th attr of this type item (0-based). */ - Attr getAttr(int index) { type_item_attrs(this, index, result) } + AnyAttr getAttr(int index) { type_item_attrs(this, index, result) } /** * Gets the number of attrs of this type item. @@ -6961,7 +7279,7 @@ module Raw { /** * Gets the `index`th attr of this use (0-based). */ - Attr getAttr(int index) { use_attrs(this, index, result) } + AnyAttr getAttr(int index) { use_attrs(this, index, result) } /** * Gets the number of attrs of this use. @@ -7015,7 +7333,7 @@ module Raw { /** * Gets the `index`th attr of this const (0-based). */ - Attr getAttr(int index) { const_attrs(this, index, result) } + AnyAttr getAttr(int index) { const_attrs(this, index, result) } /** * Gets the number of attrs of this const. @@ -7178,7 +7496,7 @@ module Raw { /** * Gets the `index`th attr of this for expression (0-based). */ - Attr getAttr(int index) { for_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { for_expr_attrs(this, index, result) } /** * Gets the number of attrs of this for expression. @@ -7378,7 +7696,7 @@ module Raw { /** * Gets the `index`th attr of this loop expression (0-based). */ - Attr getAttr(int index) { loop_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { loop_expr_attrs(this, index, result) } /** * Gets the number of attrs of this loop expression. @@ -7419,7 +7737,7 @@ module Raw { /** * Gets the `index`th attr of this macro call (0-based). */ - Attr getAttr(int index) { macro_call_attrs(this, index, result) } + AnyAttr getAttr(int index) { macro_call_attrs(this, index, result) } /** * Gets the number of attrs of this macro call. @@ -7484,7 +7802,7 @@ module Raw { /** * Gets the `index`th attr of this static (0-based). */ - Attr getAttr(int index) { static_attrs(this, index, result) } + AnyAttr getAttr(int index) { static_attrs(this, index, result) } /** * Gets the number of attrs of this static. @@ -7630,7 +7948,7 @@ module Raw { /** * Gets the `index`th attr of this type alias (0-based). */ - Attr getAttr(int index) { type_alias_attrs(this, index, result) } + AnyAttr getAttr(int index) { type_alias_attrs(this, index, result) } /** * Gets the number of attrs of this type alias. @@ -7780,7 +8098,7 @@ module Raw { /** * Gets the `index`th attr of this while expression (0-based). */ - Attr getAttr(int index) { while_expr_attrs(this, index, result) } + AnyAttr getAttr(int index) { while_expr_attrs(this, index, result) } /** * Gets the number of attrs of this while expression. @@ -7847,20 +8165,18 @@ module Raw { or result = getImmediateChildOfAssocItemList(e, index) or - result = getImmediateChildOfAttr(e, index) - or result = getImmediateChildOfExternItemList(e, index) or result = getImmediateChildOfForBinder(e, index) or result = getImmediateChildOfFormatArgsArg(e, index) or - result = getImmediateChildOfFormatArgsArgName(e, index) - or result = getImmediateChildOfGenericArgList(e, index) or result = getImmediateChildOfGenericParamList(e, index) or + result = getImmediateChildOfImplRestriction(e, index) + or result = getImmediateChildOfItemList(e, index) or result = getImmediateChildOfLabel(e, index) @@ -7875,6 +8191,8 @@ module Raw { or result = getImmediateChildOfMatchGuard(e, index) or + result = getImmediateChildOfMutRestriction(e, index) + or result = getImmediateChildOfName(e, index) or result = getImmediateChildOfParamList(e, index) @@ -7925,6 +8243,8 @@ module Raw { or result = getImmediateChildOfVisibility(e, index) or + result = getImmediateChildOfVisibilityInner(e, index) + or result = getImmediateChildOfWhereClause(e, index) or result = getImmediateChildOfWherePred(e, index) @@ -7949,6 +8269,8 @@ module Raw { or result = getImmediateChildOfAssocTypeArg(e, index) or + result = getImmediateChildOfAttr(e, index) + or result = getImmediateChildOfAwaitExpr(e, index) or result = getImmediateChildOfBecomeExpr(e, index) @@ -7971,6 +8293,10 @@ module Raw { or result = getImmediateChildOfCfgMeta(e, index) or + result = getImmediateChildOfCfgPredExpr(e, index) + or + result = getImmediateChildOfCfgPredPat(e, index) + or result = getImmediateChildOfClosureExpr(e, index) or result = getImmediateChildOfComment(e, index) @@ -7983,6 +8309,10 @@ module Raw { or result = getImmediateChildOfContinueExpr(e, index) or + result = getImmediateChildOfDerefPat(e, index) + or + result = getImmediateChildOfDocComment(e, index) + or result = getImmediateChildOfDynTraitTypeRepr(e, index) or result = getImmediateChildOfExprStmt(e, index) @@ -8001,6 +8331,8 @@ module Raw { or result = getImmediateChildOfImplTraitTypeRepr(e, index) or + result = getImmediateChildOfIncludeBytesExpr(e, index) + or result = getImmediateChildOfIndexExpr(e, index) or result = getImmediateChildOfInferTypeRepr(e, index) @@ -8035,6 +8367,8 @@ module Raw { or result = getImmediateChildOfNeverTypeRepr(e, index) or + result = getImmediateChildOfNotNull(e, index) + or result = getImmediateChildOfOffsetOfExpr(e, index) or result = getImmediateChildOfOrPat(e, index) @@ -8053,6 +8387,8 @@ module Raw { or result = getImmediateChildOfPathTypeRepr(e, index) or + result = getImmediateChildOfPatternTypeRepr(e, index) + or result = getImmediateChildOfPrefixExpr(e, index) or result = getImmediateChildOfPtrTypeRepr(e, index) diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RefExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RefExpr.qll index 4eef67e3ed17..2958a3cb5d5e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RefExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RefExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -32,15 +32,15 @@ module Generated { /** * Gets the `index`th attr of this reference expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertRefExprToRaw(this).(Raw::RefExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertRefExprToRaw(this).(Raw::RefExpr).getAttr(index)) } /** * Gets any of the attrs of this reference expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this reference expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll index b770a268431d..df8567ceb556 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll @@ -30,6 +30,8 @@ module Generated { class RefTypeRepr extends Synth::TRefTypeRepr, TypeReprImpl::TypeRepr { override string getAPrimaryQlClass() { result = "RefTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Holds if this reference type representation is mut. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Rename.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Rename.qll index 31dfe0d307cc..2b477678488a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Rename.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Rename.qll @@ -28,6 +28,8 @@ module Generated { class Rename extends Synth::TRename, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "Rename" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the name of this rename, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RestPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RestPat.qll index 0134255b8285..2c90825335ed 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RestPat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RestPat.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.PatImpl::Impl as PatImpl /** @@ -31,15 +31,15 @@ module Generated { /** * Gets the `index`th attr of this rest pattern (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertRestPatToRaw(this).(Raw::RestPat).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertRestPatToRaw(this).(Raw::RestPat).getAttr(index)) } /** * Gets any of the attrs of this rest pattern. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this rest pattern. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll index 1589d16f20d6..d54da0d2f4a3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll @@ -28,6 +28,8 @@ module Generated { class RetTypeRepr extends Synth::TRetTypeRepr, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "RetTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the type representation of this ret type representation, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnExpr.qll index 184b14b8fcf0..5d74d2b9f1ac 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -36,9 +36,9 @@ module Generated { /** * Gets the `index`th attr of this return expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertReturnExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertReturnExprToRaw(this) .(Raw::ReturnExpr) .getAttr(index)) } @@ -46,7 +46,7 @@ module Generated { /** * Gets any of the attrs of this return expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this return expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll index 9b8a30c800ad..fdf9167b2e59 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll @@ -36,5 +36,7 @@ module Generated { */ class ReturnTypeSyntax extends Synth::TReturnTypeSyntax, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "ReturnTypeSyntax" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/SelfParam.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/SelfParam.qll index 1092de3cc08c..ec408668e296 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/SelfParam.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/SelfParam.qll @@ -33,6 +33,8 @@ module Generated { class SelfParam extends Synth::TSelfParam, ParamBaseImpl::ParamBase { override string getAPrimaryQlClass() { result = "SelfParam" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Holds if this self parameter is reference. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/SlicePat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/SlicePat.qll index 2a2521248722..b11fa654b956 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/SlicePat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/SlicePat.qll @@ -29,6 +29,8 @@ module Generated { class SlicePat extends Synth::TSlicePat, PatImpl::Pat { override string getAPrimaryQlClass() { result = "SlicePat" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th pattern of this slice pattern (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll index 176b4e699e43..3c772c0f04bd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll @@ -28,6 +28,8 @@ module Generated { class SliceTypeRepr extends Synth::TSliceTypeRepr, TypeReprImpl::TypeRepr { override string getAPrimaryQlClass() { result = "SliceTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the type representation of this slice type representation, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/SourceFile.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/SourceFile.qll index 64854b410cad..6369b1dc8714 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/SourceFile.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/SourceFile.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.Item /** @@ -29,12 +29,14 @@ module Generated { class SourceFile extends Synth::TSourceFile, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "SourceFile" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this source file (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertSourceFileToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertSourceFileToRaw(this) .(Raw::SourceFile) .getAttr(index)) } @@ -42,7 +44,7 @@ module Generated { /** * Gets any of the attrs of this source file. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this source file. 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 075b48c42e31..fec03b164e38 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Static.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Static.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExternItemImpl::Impl as ExternItemImpl import codeql.rust.elements.Name @@ -34,15 +34,15 @@ module Generated { /** * Gets the `index`th attr of this static (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertStaticToRaw(this).(Raw::Static).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertStaticToRaw(this).(Raw::Static).getAttr(index)) } /** * Gets any of the attrs of this static. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this static. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StmtList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StmtList.qll index 26a7f1f363a4..8ad2c09784ac 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StmtList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StmtList.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.Stmt @@ -35,18 +35,22 @@ module Generated { class StmtList extends Synth::TStmtList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "StmtList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this statement list (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertStmtListToRaw(this).(Raw::StmtList).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertStmtListToRaw(this) + .(Raw::StmtList) + .getAttr(index)) } /** * Gets any of the attrs of this statement list. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this statement list. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprField.qll index 16dfbd946af1..98a085d30597 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprField.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprField.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.NameRef @@ -30,9 +30,9 @@ module Generated { /** * Gets the `index`th attr of this struct expression field (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertStructExprFieldToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertStructExprFieldToRaw(this) .(Raw::StructExprField) .getAttr(index)) } @@ -40,7 +40,7 @@ module Generated { /** * Gets any of the attrs of this struct expression field. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this struct expression field. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll index 66ab2785d422..670afb51129d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.StructExprField @@ -30,12 +30,14 @@ module Generated { class StructExprFieldList extends Synth::TStructExprFieldList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "StructExprFieldList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this struct expression field list (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertStructExprFieldListToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertStructExprFieldListToRaw(this) .(Raw::StructExprFieldList) .getAttr(index)) } @@ -43,7 +45,7 @@ module Generated { /** * Gets any of the attrs of this struct expression field list. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this struct expression field list. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll index bbad0ec97fc7..0bedf9aff6d6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll @@ -6,9 +6,10 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.ConstArg +import codeql.rust.elements.MutRestriction import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility @@ -35,9 +36,9 @@ module Generated { /** * Gets the `index`th attr of this struct field (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertStructFieldToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertStructFieldToRaw(this) .(Raw::StructField) .getAttr(index)) } @@ -45,7 +46,7 @@ module Generated { /** * Gets any of the attrs of this struct field. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this struct field. @@ -72,6 +73,21 @@ module Generated { */ predicate isUnsafe() { Synth::convertStructFieldToRaw(this).(Raw::StructField).isUnsafe() } + /** + * Gets the mut restriction of this struct field, if it exists. + */ + MutRestriction getMutRestriction() { + result = + Synth::convertMutRestrictionFromRaw(Synth::convertStructFieldToRaw(this) + .(Raw::StructField) + .getMutRestriction()) + } + + /** + * Holds if `getMutRestriction()` exists. + */ + final predicate hasMutRestriction() { exists(this.getMutRestriction()) } + /** * Gets the name of this struct field, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructFieldList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructFieldList.qll index 624391a3da6f..7222c1877537 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructFieldList.qll @@ -28,6 +28,8 @@ module Generated { class StructFieldList extends Synth::TStructFieldList, FieldListImpl::FieldList { override string getAPrimaryQlClass() { result = "StructFieldList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th field of this struct field list (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatField.qll index 40a2d3f74d52..996db9e8f888 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatField.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatField.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr import codeql.rust.elements.NameRef import codeql.rust.elements.Pat @@ -30,9 +30,9 @@ module Generated { /** * Gets the `index`th attr of this struct pattern field (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertStructPatFieldToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertStructPatFieldToRaw(this) .(Raw::StructPatField) .getAttr(index)) } @@ -40,7 +40,7 @@ module Generated { /** * Gets any of the attrs of this struct pattern field. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this struct pattern field. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll index 46a5407626ba..ec2afa90be46 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll @@ -29,6 +29,8 @@ module Generated { class StructPatFieldList extends Synth::TStructPatFieldList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "StructPatFieldList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th field of this struct pattern field list (0-based). */ 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 bff6809686f8..f498377b7d1c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll @@ -146,6 +146,14 @@ module Synth { * INTERNAL: Do not use. */ TCfgMeta(Raw::CfgMeta id) { constructCfgMeta(id) } or + /** + * INTERNAL: Do not use. + */ + TCfgPredExpr(Raw::CfgPredExpr id) { constructCfgPredExpr(id) } or + /** + * INTERNAL: Do not use. + */ + TCfgPredPat(Raw::CfgPredPat id) { constructCfgPredPat(id) } or /** * INTERNAL: Do not use. */ @@ -178,6 +186,14 @@ module Synth { * INTERNAL: Do not use. */ TCrate(Raw::Crate id) { constructCrate(id) } or + /** + * INTERNAL: Do not use. + */ + TDerefPat(Raw::DerefPat id) { constructDerefPat(id) } or + /** + * INTERNAL: Do not use. + */ + TDocComment(Raw::DocComment id) { constructDocComment(id) } or /** * INTERNAL: Do not use. */ @@ -236,10 +252,6 @@ module Synth { * INTERNAL: Do not use. */ TFormatArgsArg(Raw::FormatArgsArg id) { constructFormatArgsArg(id) } or - /** - * INTERNAL: Do not use. - */ - TFormatArgsArgName(Raw::FormatArgsArgName id) { constructFormatArgsArgName(id) } or /** * INTERNAL: Do not use. */ @@ -282,10 +294,18 @@ module Synth { * INTERNAL: Do not use. */ TImpl(Raw::Impl id) { constructImpl(id) } or + /** + * INTERNAL: Do not use. + */ + TImplRestriction(Raw::ImplRestriction id) { constructImplRestriction(id) } or /** * INTERNAL: Do not use. */ TImplTraitTypeRepr(Raw::ImplTraitTypeRepr id) { constructImplTraitTypeRepr(id) } or + /** + * INTERNAL: Do not use. + */ + TIncludeBytesExpr(Raw::IncludeBytesExpr id) { constructIncludeBytesExpr(id) } or /** * INTERNAL: Do not use. */ @@ -398,6 +418,10 @@ module Synth { * INTERNAL: Do not use. */ TModule(Raw::Module id) { constructModule(id) } or + /** + * INTERNAL: Do not use. + */ + TMutRestriction(Raw::MutRestriction id) { constructMutRestriction(id) } or /** * INTERNAL: Do not use. */ @@ -414,6 +438,10 @@ module Synth { * INTERNAL: Do not use. */ TNeverTypeRepr(Raw::NeverTypeRepr id) { constructNeverTypeRepr(id) } or + /** + * INTERNAL: Do not use. + */ + TNotNull(Raw::NotNull id) { constructNotNull(id) } or /** * INTERNAL: Do not use. */ @@ -470,6 +498,10 @@ module Synth { * INTERNAL: Do not use. */ TPathTypeRepr(Raw::PathTypeRepr id) { constructPathTypeRepr(id) } or + /** + * INTERNAL: Do not use. + */ + TPatternTypeRepr(Raw::PatternTypeRepr id) { constructPatternTypeRepr(id) } or /** * INTERNAL: Do not use. */ @@ -686,6 +718,10 @@ module Synth { * INTERNAL: Do not use. */ TVisibility(Raw::Visibility id) { constructVisibility(id) } or + /** + * INTERNAL: Do not use. + */ + TVisibilityInner(Raw::VisibilityInner id) { constructVisibilityInner(id) } or /** * INTERNAL: Do not use. */ @@ -716,6 +752,11 @@ module Synth { */ class TAddressable = TItem or TVariant; + /** + * INTERNAL: Do not use. + */ + class TAnyAttr = TAttr or TDocComment; + /** * INTERNAL: Do not use. */ @@ -740,18 +781,18 @@ module Synth { * INTERNAL: Do not use. */ class TAstNode = - TAbi or TAddressable or TArgList or TAsmDirSpec or TAsmOperand or TAsmOperandExpr or - TAsmOption or TAsmPiece or TAsmRegSpec or TAssocItemList or TAttr or TCallable or - TCfgPredicate or TExpr or TExternItemList or TFieldList or TForBinder or TFormatArgsArg or - TFormatArgsArgName 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 TPathAstNode or TPathSegment or TRename 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 TTryBlockModifier or TTupleField or - TTypeBound or TTypeBoundList or TTypeRepr or TUseBoundGenericArg or TUseBoundGenericArgs or - TUseTree or TUseTreeList or TVariantList or TVisibility or TWhereClause or TWherePred; + TAbi or TAddressable or TAnyAttr or TArgList or TAsmDirSpec or TAsmOperand or TAsmOperandExpr or + TAsmOption or TAsmPiece or TAsmRegSpec or TAssocItemList or TCallable or TCfgPredicate or + TExpr or TExternItemList or TFieldList or TForBinder or TFormatArgsArg or TGenericArg or + TGenericArgList or TGenericParam or TGenericParamList or TImplRestriction or TItemList or + TLabel or TLetElse or TMacroItems or TMatchArm or TMatchArmList or TMatchGuard or TMeta or + TMutRestriction or TName or TParamBase or TParamList or TParenthesizedArgList or TPat or + TPath or TPathAstNode or TPathSegment or TRename 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 + TTryBlockModifier or TTupleField or TTypeBound or TTypeBoundList or TTypeRepr or + TUseBoundGenericArg or TUseBoundGenericArgs or TUseTree or TUseTreeList or TVariantList or + TVisibility or TVisibilityInner or TWhereClause or TWherePred; /** * INTERNAL: Do not use. @@ -768,11 +809,12 @@ module Synth { */ class TExpr = TArrayExpr or TArrayExprInternal or TAsmExpr or TAwaitExpr or TBecomeExpr or TBinaryExpr or - TBreakExpr or TCallExpr or TCastExpr or TClosureExpr or TContinueExpr or TFieldExpr or - TFormatArgsExpr or TIfExpr or TIndexExpr or TLabelableExpr or TLetExpr or TLiteralExpr or - TMacroExpr or TMatchExpr or TMethodCallExpr or TOffsetOfExpr or TParenExpr or - TPathExprBase or TPrefixExpr or TRangeExpr or TRefExpr or TReturnExpr or TStructExpr or - TTryExpr or TTupleExpr or TUnderscoreExpr or TYeetExpr or TYieldExpr; + TBreakExpr or TCallExpr or TCastExpr or TCfgPredExpr or TClosureExpr or TContinueExpr or + TFieldExpr or TFormatArgsExpr or TIfExpr or TIncludeBytesExpr or TIndexExpr or + TLabelableExpr or TLetExpr or TLiteralExpr or TMacroExpr or TMatchExpr or TMethodCallExpr or + TOffsetOfExpr or TParenExpr or TPathExprBase or TPrefixExpr or TRangeExpr or TRefExpr or + TReturnExpr or TStructExpr or TTryExpr or TTupleExpr or TUnderscoreExpr or TYeetExpr or + TYieldExpr; /** * INTERNAL: Do not use. @@ -831,9 +873,9 @@ module Synth { * INTERNAL: Do not use. */ class TPat = - TBoxPat or TConstBlockPat or TIdentPat or TLiteralPat or TMacroPat or TOrPat or TParenPat or - TPathPat or TRangePat or TRefPat or TRestPat or TSlicePat or TStructPat or TTuplePat or - TTupleStructPat or TWildcardPat; + TBoxPat or TCfgPredPat or TConstBlockPat or TDerefPat or TIdentPat or TLiteralPat or + TMacroPat or TNotNull or TOrPat or TParenPat or TPathPat or TRangePat or TRefPat or + TRestPat or TSlicePat or TStructPat or TTuplePat or TTupleStructPat or TWildcardPat; /** * INTERNAL: Do not use. @@ -866,7 +908,7 @@ module Synth { class TTypeRepr = TArrayTypeRepr or TDynTraitTypeRepr or TFnPtrTypeRepr or TForTypeRepr or TImplTraitTypeRepr or TInferTypeRepr or TMacroTypeRepr or TNeverTypeRepr or TParenTypeRepr or TPathTypeRepr or - TPtrTypeRepr or TRefTypeRepr or TSliceTypeRepr or TTupleTypeRepr; + TPatternTypeRepr or TPtrTypeRepr or TRefTypeRepr or TSliceTypeRepr or TTupleTypeRepr; /** * INTERNAL: Do not use. @@ -1126,6 +1168,20 @@ module Synth { */ TCfgMeta convertCfgMetaFromRaw(Raw::Element e) { result = TCfgMeta(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TCfgPredExpr`, if possible. + */ + TCfgPredExpr convertCfgPredExprFromRaw(Raw::Element e) { result = TCfgPredExpr(e) } + + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TCfgPredPat`, if possible. + */ + TCfgPredPat convertCfgPredPatFromRaw(Raw::Element e) { result = TCfgPredPat(e) } + /** * INTERNAL: Do not use. * @@ -1182,6 +1238,20 @@ module Synth { */ TCrate convertCrateFromRaw(Raw::Element e) { result = TCrate(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TDerefPat`, if possible. + */ + TDerefPat convertDerefPatFromRaw(Raw::Element e) { result = TDerefPat(e) } + + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TDocComment`, if possible. + */ + TDocComment convertDocCommentFromRaw(Raw::Element e) { result = TDocComment(e) } + /** * INTERNAL: Do not use. * @@ -1280,15 +1350,6 @@ module Synth { */ TFormatArgsArg convertFormatArgsArgFromRaw(Raw::Element e) { result = TFormatArgsArg(e) } - /** - * INTERNAL: Do not use. - * - * Converts a raw element to a synthesized `TFormatArgsArgName`, if possible. - */ - TFormatArgsArgName convertFormatArgsArgNameFromRaw(Raw::Element e) { - result = TFormatArgsArgName(e) - } - /** * INTERNAL: Do not use. * @@ -1354,6 +1415,13 @@ module Synth { */ TImpl convertImplFromRaw(Raw::Element e) { result = TImpl(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TImplRestriction`, if possible. + */ + TImplRestriction convertImplRestrictionFromRaw(Raw::Element e) { result = TImplRestriction(e) } + /** * INTERNAL: Do not use. * @@ -1363,6 +1431,13 @@ module Synth { result = TImplTraitTypeRepr(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TIncludeBytesExpr`, if possible. + */ + TIncludeBytesExpr convertIncludeBytesExprFromRaw(Raw::Element e) { result = TIncludeBytesExpr(e) } + /** * INTERNAL: Do not use. * @@ -1559,6 +1634,13 @@ module Synth { */ TModule convertModuleFromRaw(Raw::Element e) { result = TModule(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TMutRestriction`, if possible. + */ + TMutRestriction convertMutRestrictionFromRaw(Raw::Element e) { result = TMutRestriction(e) } + /** * INTERNAL: Do not use. * @@ -1587,6 +1669,13 @@ module Synth { */ TNeverTypeRepr convertNeverTypeReprFromRaw(Raw::Element e) { result = TNeverTypeRepr(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TNotNull`, if possible. + */ + TNotNull convertNotNullFromRaw(Raw::Element e) { result = TNotNull(e) } + /** * INTERNAL: Do not use. * @@ -1687,6 +1776,13 @@ module Synth { */ TPathTypeRepr convertPathTypeReprFromRaw(Raw::Element e) { result = TPathTypeRepr(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TPatternTypeRepr`, if possible. + */ + TPatternTypeRepr convertPatternTypeReprFromRaw(Raw::Element e) { result = TPatternTypeRepr(e) } + /** * INTERNAL: Do not use. * @@ -2071,6 +2167,13 @@ module Synth { */ TVisibility convertVisibilityFromRaw(Raw::Element e) { result = TVisibility(e) } + /** + * INTERNAL: Do not use. + * + * Converts a raw element to a synthesized `TVisibilityInner`, if possible. + */ + TVisibilityInner convertVisibilityInnerFromRaw(Raw::Element e) { result = TVisibilityInner(e) } + /** * INTERNAL: Do not use. * @@ -2123,6 +2226,16 @@ module Synth { result = convertVariantFromRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a raw DB element to a synthesized `TAnyAttr`, if possible. + */ + TAnyAttr convertAnyAttrFromRaw(Raw::Element e) { + result = convertAttrFromRaw(e) + or + result = convertDocCommentFromRaw(e) + } + /** * INTERNAL: Do not use. * Converts a raw DB element to a synthesized `TArrayExpr`, if possible. @@ -2182,6 +2295,8 @@ module Synth { or result = convertAddressableFromRaw(e) or + result = convertAnyAttrFromRaw(e) + or result = convertArgListFromRaw(e) or result = convertAsmDirSpecFromRaw(e) @@ -2198,8 +2313,6 @@ module Synth { or result = convertAssocItemListFromRaw(e) or - result = convertAttrFromRaw(e) - or result = convertCallableFromRaw(e) or result = convertCfgPredicateFromRaw(e) @@ -2214,8 +2327,6 @@ module Synth { or result = convertFormatArgsArgFromRaw(e) or - result = convertFormatArgsArgNameFromRaw(e) - or result = convertGenericArgFromRaw(e) or result = convertGenericArgListFromRaw(e) @@ -2224,6 +2335,8 @@ module Synth { or result = convertGenericParamListFromRaw(e) or + result = convertImplRestrictionFromRaw(e) + or result = convertItemListFromRaw(e) or result = convertLabelFromRaw(e) @@ -2240,6 +2353,8 @@ module Synth { or result = convertMetaFromRaw(e) or + result = convertMutRestrictionFromRaw(e) + or result = convertNameFromRaw(e) or result = convertParamBaseFromRaw(e) @@ -2304,6 +2419,8 @@ module Synth { or result = convertVisibilityFromRaw(e) or + result = convertVisibilityInnerFromRaw(e) + or result = convertWhereClauseFromRaw(e) or result = convertWherePredFromRaw(e) @@ -2366,6 +2483,8 @@ module Synth { or result = convertCastExprFromRaw(e) or + result = convertCfgPredExprFromRaw(e) + or result = convertClosureExprFromRaw(e) or result = convertContinueExprFromRaw(e) @@ -2376,6 +2495,8 @@ module Synth { or result = convertIfExprFromRaw(e) or + result = convertIncludeBytesExprFromRaw(e) + or result = convertIndexExprFromRaw(e) or result = convertLabelableExprFromRaw(e) @@ -2568,14 +2689,20 @@ module Synth { TPat convertPatFromRaw(Raw::Element e) { result = convertBoxPatFromRaw(e) or + result = convertCfgPredPatFromRaw(e) + or result = convertConstBlockPatFromRaw(e) or + result = convertDerefPatFromRaw(e) + or result = convertIdentPatFromRaw(e) or result = convertLiteralPatFromRaw(e) or result = convertMacroPatFromRaw(e) or + result = convertNotNullFromRaw(e) + or result = convertOrPatFromRaw(e) or result = convertParenPatFromRaw(e) @@ -2680,6 +2807,8 @@ module Synth { or result = convertPathTypeReprFromRaw(e) or + result = convertPatternTypeReprFromRaw(e) + or result = convertPtrTypeReprFromRaw(e) or result = convertRefTypeReprFromRaw(e) @@ -2909,6 +3038,18 @@ module Synth { */ Raw::Element convertCfgMetaToRaw(TCfgMeta e) { e = TCfgMeta(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TCfgPredExpr` to a raw DB element, if possible. + */ + Raw::Element convertCfgPredExprToRaw(TCfgPredExpr e) { e = TCfgPredExpr(result) } + + /** + * INTERNAL: Do not use. + * Converts a synthesized `TCfgPredPat` to a raw DB element, if possible. + */ + Raw::Element convertCfgPredPatToRaw(TCfgPredPat e) { e = TCfgPredPat(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TClosureExpr` to a raw DB element, if possible. @@ -2957,6 +3098,18 @@ module Synth { */ Raw::Element convertCrateToRaw(TCrate e) { e = TCrate(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TDerefPat` to a raw DB element, if possible. + */ + Raw::Element convertDerefPatToRaw(TDerefPat e) { e = TDerefPat(result) } + + /** + * INTERNAL: Do not use. + * Converts a synthesized `TDocComment` to a raw DB element, if possible. + */ + Raw::Element convertDocCommentToRaw(TDocComment e) { e = TDocComment(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TDynTraitTypeRepr` to a raw DB element, if possible. @@ -3041,14 +3194,6 @@ module Synth { */ Raw::Element convertFormatArgsArgToRaw(TFormatArgsArg e) { e = TFormatArgsArg(result) } - /** - * INTERNAL: Do not use. - * Converts a synthesized `TFormatArgsArgName` to a raw DB element, if possible. - */ - Raw::Element convertFormatArgsArgNameToRaw(TFormatArgsArgName e) { - e = TFormatArgsArgName(result) - } - /** * INTERNAL: Do not use. * Converts a synthesized `TFormatArgsExpr` to a raw DB element, if possible. @@ -3103,6 +3248,12 @@ module Synth { */ Raw::Element convertImplToRaw(TImpl e) { e = TImpl(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TImplRestriction` to a raw DB element, if possible. + */ + Raw::Element convertImplRestrictionToRaw(TImplRestriction e) { e = TImplRestriction(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TImplTraitTypeRepr` to a raw DB element, if possible. @@ -3111,6 +3262,12 @@ module Synth { e = TImplTraitTypeRepr(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TIncludeBytesExpr` to a raw DB element, if possible. + */ + Raw::Element convertIncludeBytesExprToRaw(TIncludeBytesExpr e) { e = TIncludeBytesExpr(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TIndexExpr` to a raw DB element, if possible. @@ -3279,6 +3436,12 @@ module Synth { */ Raw::Element convertModuleToRaw(TModule e) { e = TModule(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TMutRestriction` to a raw DB element, if possible. + */ + Raw::Element convertMutRestrictionToRaw(TMutRestriction e) { e = TMutRestriction(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TName` to a raw DB element, if possible. @@ -3303,6 +3466,12 @@ module Synth { */ Raw::Element convertNeverTypeReprToRaw(TNeverTypeRepr e) { e = TNeverTypeRepr(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TNotNull` to a raw DB element, if possible. + */ + Raw::Element convertNotNullToRaw(TNotNull e) { e = TNotNull(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TOffsetOfExpr` to a raw DB element, if possible. @@ -3389,6 +3558,12 @@ module Synth { */ Raw::Element convertPathTypeReprToRaw(TPathTypeRepr e) { e = TPathTypeRepr(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TPatternTypeRepr` to a raw DB element, if possible. + */ + Raw::Element convertPatternTypeReprToRaw(TPatternTypeRepr e) { e = TPatternTypeRepr(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TPrefixExpr` to a raw DB element, if possible. @@ -3719,6 +3894,12 @@ module Synth { */ Raw::Element convertVisibilityToRaw(TVisibility e) { e = TVisibility(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TVisibilityInner` to a raw DB element, if possible. + */ + Raw::Element convertVisibilityInnerToRaw(TVisibilityInner e) { e = TVisibilityInner(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TWhereClause` to a raw DB element, if possible. @@ -3765,6 +3946,16 @@ module Synth { result = convertVariantToRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TAnyAttr` to a raw DB element, if possible. + */ + Raw::Element convertAnyAttrToRaw(TAnyAttr e) { + result = convertAttrToRaw(e) + or + result = convertDocCommentToRaw(e) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TArrayExpr` to a raw DB element, if possible. @@ -3824,6 +4015,8 @@ module Synth { or result = convertAddressableToRaw(e) or + result = convertAnyAttrToRaw(e) + or result = convertArgListToRaw(e) or result = convertAsmDirSpecToRaw(e) @@ -3840,8 +4033,6 @@ module Synth { or result = convertAssocItemListToRaw(e) or - result = convertAttrToRaw(e) - or result = convertCallableToRaw(e) or result = convertCfgPredicateToRaw(e) @@ -3856,8 +4047,6 @@ module Synth { or result = convertFormatArgsArgToRaw(e) or - result = convertFormatArgsArgNameToRaw(e) - or result = convertGenericArgToRaw(e) or result = convertGenericArgListToRaw(e) @@ -3866,6 +4055,8 @@ module Synth { or result = convertGenericParamListToRaw(e) or + result = convertImplRestrictionToRaw(e) + or result = convertItemListToRaw(e) or result = convertLabelToRaw(e) @@ -3882,6 +4073,8 @@ module Synth { or result = convertMetaToRaw(e) or + result = convertMutRestrictionToRaw(e) + or result = convertNameToRaw(e) or result = convertParamBaseToRaw(e) @@ -3946,6 +4139,8 @@ module Synth { or result = convertVisibilityToRaw(e) or + result = convertVisibilityInnerToRaw(e) + or result = convertWhereClauseToRaw(e) or result = convertWherePredToRaw(e) @@ -4008,6 +4203,8 @@ module Synth { or result = convertCastExprToRaw(e) or + result = convertCfgPredExprToRaw(e) + or result = convertClosureExprToRaw(e) or result = convertContinueExprToRaw(e) @@ -4018,6 +4215,8 @@ module Synth { or result = convertIfExprToRaw(e) or + result = convertIncludeBytesExprToRaw(e) + or result = convertIndexExprToRaw(e) or result = convertLabelableExprToRaw(e) @@ -4210,14 +4409,20 @@ module Synth { Raw::Element convertPatToRaw(TPat e) { result = convertBoxPatToRaw(e) or + result = convertCfgPredPatToRaw(e) + or result = convertConstBlockPatToRaw(e) or + result = convertDerefPatToRaw(e) + or result = convertIdentPatToRaw(e) or result = convertLiteralPatToRaw(e) or result = convertMacroPatToRaw(e) or + result = convertNotNullToRaw(e) + or result = convertOrPatToRaw(e) or result = convertParenPatToRaw(e) @@ -4322,6 +4527,8 @@ module Synth { or result = convertPathTypeReprToRaw(e) or + result = convertPatternTypeReprToRaw(e) + or result = convertPtrTypeReprToRaw(e) or result = convertRefTypeReprToRaw(e) diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll index 40d7f1c5acd7..e2a18a0bb2b8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll @@ -36,6 +36,8 @@ import codeql.rust.elements.internal.CfgAtomConstructor import codeql.rust.elements.internal.CfgAttrMetaConstructor import codeql.rust.elements.internal.CfgCompositeConstructor import codeql.rust.elements.internal.CfgMetaConstructor +import codeql.rust.elements.internal.CfgPredExprConstructor +import codeql.rust.elements.internal.CfgPredPatConstructor import codeql.rust.elements.internal.ClosureExprConstructor import codeql.rust.elements.internal.CommentConstructor import codeql.rust.elements.internal.ConstConstructor @@ -44,6 +46,8 @@ import codeql.rust.elements.internal.ConstBlockPatConstructor import codeql.rust.elements.internal.ConstParamConstructor import codeql.rust.elements.internal.ContinueExprConstructor import codeql.rust.elements.internal.CrateConstructor +import codeql.rust.elements.internal.DerefPatConstructor +import codeql.rust.elements.internal.DocCommentConstructor import codeql.rust.elements.internal.DynTraitTypeReprConstructor import codeql.rust.elements.internal.EnumConstructor import codeql.rust.elements.internal.ExprStmtConstructor @@ -58,7 +62,6 @@ import codeql.rust.elements.internal.ForExprConstructor import codeql.rust.elements.internal.ForTypeReprConstructor import codeql.rust.elements.internal.FormatConstructor import codeql.rust.elements.internal.FormatArgsArgConstructor -import codeql.rust.elements.internal.FormatArgsArgNameConstructor import codeql.rust.elements.internal.FormatArgsExprConstructor import codeql.rust.elements.internal.FormatArgumentConstructor import codeql.rust.elements.internal.FormatTemplateVariableAccessConstructor @@ -68,7 +71,9 @@ import codeql.rust.elements.internal.GenericParamListConstructor import codeql.rust.elements.internal.IdentPatConstructor import codeql.rust.elements.internal.IfExprConstructor import codeql.rust.elements.internal.ImplConstructor +import codeql.rust.elements.internal.ImplRestrictionConstructor import codeql.rust.elements.internal.ImplTraitTypeReprConstructor +import codeql.rust.elements.internal.IncludeBytesExprConstructor import codeql.rust.elements.internal.IndexExprConstructor import codeql.rust.elements.internal.InferTypeReprConstructor import codeql.rust.elements.internal.ItemListConstructor @@ -97,10 +102,12 @@ import codeql.rust.elements.internal.MatchGuardConstructor import codeql.rust.elements.internal.MethodCallExprConstructor import codeql.rust.elements.internal.MissingConstructor import codeql.rust.elements.internal.ModuleConstructor +import codeql.rust.elements.internal.MutRestrictionConstructor import codeql.rust.elements.internal.NameConstructor import codeql.rust.elements.internal.NameRefConstructor import codeql.rust.elements.internal.NamedCrateConstructor import codeql.rust.elements.internal.NeverTypeReprConstructor +import codeql.rust.elements.internal.NotNullConstructor import codeql.rust.elements.internal.OffsetOfExprConstructor import codeql.rust.elements.internal.OrPatConstructor import codeql.rust.elements.internal.ParamConstructor @@ -115,6 +122,7 @@ import codeql.rust.elements.internal.PathMetaConstructor import codeql.rust.elements.internal.PathPatConstructor import codeql.rust.elements.internal.PathSegmentConstructor import codeql.rust.elements.internal.PathTypeReprConstructor +import codeql.rust.elements.internal.PatternTypeReprConstructor import codeql.rust.elements.internal.PrefixExprConstructor import codeql.rust.elements.internal.PtrTypeReprConstructor import codeql.rust.elements.internal.RangeExprConstructor @@ -169,6 +177,7 @@ import codeql.rust.elements.internal.UseTreeListConstructor import codeql.rust.elements.internal.VariantConstructor import codeql.rust.elements.internal.VariantListConstructor import codeql.rust.elements.internal.VisibilityConstructor +import codeql.rust.elements.internal.VisibilityInnerConstructor import codeql.rust.elements.internal.WhereClauseConstructor import codeql.rust.elements.internal.WherePredConstructor import codeql.rust.elements.internal.WhileExprConstructor diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTree.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTree.qll index 258a730ec643..f15483c9073d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTree.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTree.qll @@ -30,5 +30,7 @@ module Generated { */ class TokenTree extends Synth::TTokenTree, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "TokenTree" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll index b6d7d0a676a3..1aa4c6048f63 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTreeMeta.qll @@ -22,6 +22,8 @@ module Generated { class TokenTreeMeta extends Synth::TTokenTreeMeta, MetaImpl::Meta { override string getAPrimaryQlClass() { result = "TokenTreeMeta" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the path of this token tree meta, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Trait.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Trait.qll index fff0363a3c75..87df0ae058c9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Trait.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Trait.qll @@ -6,9 +6,10 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.AssocItemList -import codeql.rust.elements.Attr import codeql.rust.elements.GenericParamList +import codeql.rust.elements.ImplRestriction import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name import codeql.rust.elements.TypeBoundList @@ -55,14 +56,15 @@ module Generated { /** * Gets the `index`th attr of this trait (0-based). */ - Attr getAttr(int index) { - result = Synth::convertAttrFromRaw(Synth::convertTraitToRaw(this).(Raw::Trait).getAttr(index)) + AnyAttr getAttr(int index) { + result = + Synth::convertAnyAttrFromRaw(Synth::convertTraitToRaw(this).(Raw::Trait).getAttr(index)) } /** * Gets any of the attrs of this trait. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this trait. @@ -84,6 +86,21 @@ module Generated { */ final predicate hasGenericParamList() { exists(this.getGenericParamList()) } + /** + * Gets the impl restriction of this trait, if it exists. + */ + ImplRestriction getImplRestriction() { + result = + Synth::convertImplRestrictionFromRaw(Synth::convertTraitToRaw(this) + .(Raw::Trait) + .getImplRestriction()) + } + + /** + * Holds if `getImplRestriction()` exists. + */ + final predicate hasImplRestriction() { exists(this.getImplRestriction()) } + /** * Holds if this trait is auto. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll index e058784736b8..a1fcc4faa355 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TryBlockModifier.qll @@ -21,6 +21,8 @@ module Generated { class TryBlockModifier extends Synth::TTryBlockModifier, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "TryBlockModifier" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Holds if this try block modifier is try. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TryExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TryExpr.qll index f4c5bbf6e9be..3c39a95d946c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TryExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TryExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -29,18 +29,20 @@ module Generated { class TryExpr extends Synth::TTryExpr, ExprImpl::Expr { override string getAPrimaryQlClass() { result = "TryExpr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this try expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertTryExprToRaw(this).(Raw::TryExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertTryExprToRaw(this).(Raw::TryExpr).getAttr(index)) } /** * Gets any of the attrs of this try expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this try expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleExpr.qll index 9a3b414dda0e..4ca4c2db4acf 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -28,18 +28,22 @@ module Generated { class TupleExpr extends Synth::TTupleExpr, ExprImpl::Expr { override string getAPrimaryQlClass() { result = "TupleExpr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this tuple expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertTupleExprToRaw(this).(Raw::TupleExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertTupleExprToRaw(this) + .(Raw::TupleExpr) + .getAttr(index)) } /** * Gets any of the attrs of this tuple expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this tuple expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll index 8d39a116f5c0..ea1d1f7a204e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll @@ -6,8 +6,9 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.MutRestriction import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility @@ -30,12 +31,14 @@ module Generated { class TupleField extends Synth::TTupleField, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "TupleField" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this tuple field (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertTupleFieldToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertTupleFieldToRaw(this) .(Raw::TupleField) .getAttr(index)) } @@ -43,13 +46,28 @@ module Generated { /** * Gets any of the attrs of this tuple field. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this tuple field. */ final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } + /** + * Gets the mut restriction of this tuple field, if it exists. + */ + MutRestriction getMutRestriction() { + result = + Synth::convertMutRestrictionFromRaw(Synth::convertTupleFieldToRaw(this) + .(Raw::TupleField) + .getMutRestriction()) + } + + /** + * Holds if `getMutRestriction()` exists. + */ + final predicate hasMutRestriction() { exists(this.getMutRestriction()) } + /** * Gets the type representation of this tuple field, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleFieldList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleFieldList.qll index 6d68797e64b0..57de287b3622 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleFieldList.qll @@ -28,6 +28,8 @@ module Generated { class TupleFieldList extends Synth::TTupleFieldList, FieldListImpl::FieldList { override string getAPrimaryQlClass() { result = "TupleFieldList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th field of this tuple field list (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TuplePat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TuplePat.qll index 724a827f7c3b..a17a085f3ac7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TuplePat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TuplePat.qll @@ -26,6 +26,8 @@ module Generated { class TuplePat extends Synth::TTuplePat, PatImpl::Pat { override string getAPrimaryQlClass() { result = "TuplePat" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th field of this tuple pattern (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll index dead3a445e73..132f3bdabe83 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll @@ -28,6 +28,8 @@ module Generated { class TupleTypeRepr extends Synth::TTupleTypeRepr, TypeReprImpl::TypeRepr { override string getAPrimaryQlClass() { result = "TupleTypeRepr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th field of this tuple type representation (0-based). */ 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 063658e0a7bc..1be6bb72dd8a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeAlias.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeAlias.qll @@ -6,8 +6,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.AnyAttr 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.Name @@ -40,15 +40,17 @@ module Generated { /** * Gets the `index`th attr of this type alias (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertTypeAliasToRaw(this).(Raw::TypeAlias).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertTypeAliasToRaw(this) + .(Raw::TypeAlias) + .getAttr(index)) } /** * Gets any of the attrs of this type alias. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this type alias. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeArg.qll index 1b6b1c13219a..97896e199a83 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeArg.qll @@ -28,6 +28,8 @@ module Generated { class TypeArg extends Synth::TTypeArg, GenericArgImpl::GenericArg { override string getAPrimaryQlClass() { result = "TypeArg" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the type representation of this type argument, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBound.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBound.qll index 958867911ce8..a262298cc03d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBound.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBound.qll @@ -33,6 +33,8 @@ module Generated { class TypeBound extends Synth::TTypeBound, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "TypeBound" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the for binder of this type bound, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeItem.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeItem.qll index 5bc8bfb3c775..89689198e1c1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeItem.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeItem.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.GenericParamList import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.MacroItems @@ -50,15 +50,17 @@ module Generated { /** * Gets the `index`th attr of this type item (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertTypeItemToRaw(this).(Raw::TypeItem).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertTypeItemToRaw(this) + .(Raw::TypeItem) + .getAttr(index)) } /** * Gets any of the attrs of this type item. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this type item. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeParam.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeParam.qll index 5379ca78306e..4f1bab54291f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeParam.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeParam.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.GenericParamImpl::Impl as GenericParamImpl import codeql.rust.elements.Name import codeql.rust.elements.TypeBoundList @@ -34,15 +34,17 @@ module Generated { /** * Gets the `index`th attr of this type parameter (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertTypeParamToRaw(this).(Raw::TypeParam).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertTypeParamToRaw(this) + .(Raw::TypeParam) + .getAttr(index)) } /** * Gets any of the attrs of this type parameter. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this type parameter. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/UnderscoreExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/UnderscoreExpr.qll index 89cc654eb17c..3bef3093824a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/UnderscoreExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/UnderscoreExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl /** @@ -28,9 +28,9 @@ module Generated { /** * Gets the `index`th attr of this underscore expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertUnderscoreExprToRaw(this) + Synth::convertAnyAttrFromRaw(Synth::convertUnderscoreExprToRaw(this) .(Raw::UnderscoreExpr) .getAttr(index)) } @@ -38,7 +38,7 @@ module Generated { /** * Gets any of the attrs of this underscore expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this underscore expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Unimplemented.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Unimplemented.qll index 04e38d47781d..8b6d1e3bf263 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Unimplemented.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Unimplemented.qll @@ -20,5 +20,7 @@ module Generated { */ class Unimplemented extends Synth::TUnimplemented, UnextractedImpl::Unextracted { override string getAPrimaryQlClass() { result = "Unimplemented" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll index e701e6bb1fb8..4af13f9e9a68 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/UnsafeMeta.qll @@ -21,6 +21,8 @@ module Generated { class UnsafeMeta extends Synth::TUnsafeMeta, MetaImpl::Meta { override string getAPrimaryQlClass() { result = "UnsafeMeta" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Holds if this unsafe meta is unsafe. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Use.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Use.qll index ba3cc1de397b..d37aba410806 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Use.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Use.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.UseTree import codeql.rust.elements.Visibility @@ -30,14 +30,14 @@ module Generated { /** * Gets the `index`th attr of this use (0-based). */ - Attr getAttr(int index) { - result = Synth::convertAttrFromRaw(Synth::convertUseToRaw(this).(Raw::Use).getAttr(index)) + AnyAttr getAttr(int index) { + result = Synth::convertAnyAttrFromRaw(Synth::convertUseToRaw(this).(Raw::Use).getAttr(index)) } /** * Gets any of the attrs of this use. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this use. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll index 3f76518c2404..600a9270b883 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll @@ -28,6 +28,8 @@ module Generated { class UseBoundGenericArgs extends Synth::TUseBoundGenericArgs, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "UseBoundGenericArgs" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th use bound generic argument of this use bound generic arguments (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/UseTreeList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/UseTreeList.qll index bb21ec82936f..03e21bc1fc91 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/UseTreeList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/UseTreeList.qll @@ -28,6 +28,8 @@ module Generated { class UseTreeList extends Synth::TUseTreeList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "UseTreeList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th use tree of this use tree list (0-based). */ 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 c37995f77a0f..6a01ee479782 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll @@ -7,7 +7,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AddressableImpl::Impl as AddressableImpl -import codeql.rust.elements.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.ConstArg import codeql.rust.elements.FieldList import codeql.rust.elements.Name @@ -35,15 +35,15 @@ module Generated { /** * Gets the `index`th attr of this variant (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertVariantToRaw(this).(Raw::Variant).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertVariantToRaw(this).(Raw::Variant).getAttr(index)) } /** * Gets any of the attrs of this variant. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this variant. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/VariantList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/VariantList.qll index e0ba8bfab156..a0347ac51c5e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/VariantList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/VariantList.qll @@ -28,6 +28,8 @@ module Generated { class VariantList extends Synth::TVariantList, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "VariantList" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th variant of this variant list (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Visibility.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Visibility.qll index 340f53af63c9..e37eff57a895 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Visibility.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Visibility.qll @@ -7,7 +7,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.Path +import codeql.rust.elements.VisibilityInner /** * INTERNAL: This module contains the fully generated definition of `Visibility` and should not @@ -29,16 +29,18 @@ module Generated { override string getAPrimaryQlClass() { result = "Visibility" } /** - * Gets the path of this visibility, if it exists. + * Gets the visibility inner of this visibility, if it exists. */ - Path getPath() { + VisibilityInner getVisibilityInner() { result = - Synth::convertPathFromRaw(Synth::convertVisibilityToRaw(this).(Raw::Visibility).getPath()) + Synth::convertVisibilityInnerFromRaw(Synth::convertVisibilityToRaw(this) + .(Raw::Visibility) + .getVisibilityInner()) } /** - * Holds if `getPath()` exists. + * Holds if `getVisibilityInner()` exists. */ - final predicate hasPath() { exists(this.getPath()) } + final predicate hasVisibilityInner() { exists(this.getVisibilityInner()) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/VisibilityInner.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/VisibilityInner.qll new file mode 100644 index 000000000000..4d6956f0657f --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/VisibilityInner.qll @@ -0,0 +1,46 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `VisibilityInner`. + * 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 +import codeql.rust.elements.Path + +/** + * INTERNAL: This module contains the fully generated definition of `VisibilityInner` and should not + * be referenced directly. + */ +module Generated { + /** + * The parenthesized inner part of a visibility modifier or restriction, such as the `(in path)` in `pub(in path)`, or the `(crate)` in `pub(crate)`. For example the `(in foo::bar)` in: + * ```rust + * pub(in foo::bar) struct S; + * // ^^^^^^^^^^^^ + * ``` + * INTERNAL: Do not reference the `Generated::VisibilityInner` class directly. + * Use the subclass `VisibilityInner`, where the following predicates are available. + */ + class VisibilityInner extends Synth::TVisibilityInner, AstNodeImpl::AstNode { + override string getAPrimaryQlClass() { result = "VisibilityInner" } + + override string toStringImpl() { result = this.getAPrimaryQlClass() } + + /** + * Gets the path of this visibility inner, if it exists. + */ + Path getPath() { + result = + Synth::convertPathFromRaw(Synth::convertVisibilityInnerToRaw(this) + .(Raw::VisibilityInner) + .getPath()) + } + + /** + * Holds if `getPath()` exists. + */ + final predicate hasPath() { exists(this.getPath()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/WhereClause.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/WhereClause.qll index 5b7080a7afaf..59cc942ead6d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/WhereClause.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/WhereClause.qll @@ -28,6 +28,8 @@ module Generated { class WhereClause extends Synth::TWhereClause, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "WhereClause" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th predicate of this where clause (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/WherePred.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/WherePred.qll index 7a96b326f1c2..a33f78c430d5 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/WherePred.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/WherePred.qll @@ -33,6 +33,8 @@ module Generated { class WherePred extends Synth::TWherePred, AstNodeImpl::AstNode { override string getAPrimaryQlClass() { result = "WherePred" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the for binder of this where pred, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll index b62e1256d618..ff711730b790 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.LoopingExprImpl::Impl as LoopingExprImpl @@ -33,15 +33,17 @@ module Generated { /** * Gets the `index`th attr of this while expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertWhileExprToRaw(this).(Raw::WhileExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertWhileExprToRaw(this) + .(Raw::WhileExpr) + .getAttr(index)) } /** * Gets any of the attrs of this while expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this while expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/YeetExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/YeetExpr.qll index a9bd1e991d55..d4817bc25b71 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/YeetExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/YeetExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -28,18 +28,22 @@ module Generated { class YeetExpr extends Synth::TYeetExpr, ExprImpl::Expr { override string getAPrimaryQlClass() { result = "YeetExpr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this yeet expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertYeetExprToRaw(this).(Raw::YeetExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertYeetExprToRaw(this) + .(Raw::YeetExpr) + .getAttr(index)) } /** * Gets any of the attrs of this yeet expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this yeet expression. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/YieldExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/YieldExpr.qll index 03541b83cfb6..e2705af69fa3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/YieldExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/YieldExpr.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.Attr +import codeql.rust.elements.AnyAttr import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl @@ -29,18 +29,22 @@ module Generated { class YieldExpr extends Synth::TYieldExpr, ExprImpl::Expr { override string getAPrimaryQlClass() { result = "YieldExpr" } + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th attr of this yield expression (0-based). */ - Attr getAttr(int index) { + AnyAttr getAttr(int index) { result = - Synth::convertAttrFromRaw(Synth::convertYieldExprToRaw(this).(Raw::YieldExpr).getAttr(index)) + Synth::convertAnyAttrFromRaw(Synth::convertYieldExprToRaw(this) + .(Raw::YieldExpr) + .getAttr(index)) } /** * Gets any of the attrs of this yield expression. */ - final Attr getAnAttr() { result = this.getAttr(_) } + final AnyAttr getAnAttr() { result = this.getAttr(_) } /** * Gets the number of attrs of this yield expression. diff --git a/rust/ql/lib/codeql/rust/frameworks/axum.model.yml b/rust/ql/lib/codeql/rust/frameworks/axum.model.yml index 7ae7dec36359..55783beebf41 100644 --- a/rust/ql/lib/codeql/rust/frameworks/axum.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/axum.model.yml @@ -20,4 +20,9 @@ extensions: - ["::patch", "Argument[0].Parameter[0..7]", "remote", "manual"] # on - ["axum::routing::method_routing::on", "Argument[1].Parameter[0..7]", "remote", "manual"] - - ["::on", "Argument[1].Parameter[0..7]", "remote", "manual"] \ No newline at end of file + - ["::on", "Argument[1].Parameter[0..7]", "remote", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: excludeFieldTaintStep + data: + - ["axum::extract::state::State(0)"] diff --git a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml index 7b1aaab494fd..b608ae46f5f5 100644 --- a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml @@ -6,6 +6,7 @@ extensions: - ["futures_executor::local_pool::block_on", "Argument[0]", "ReturnValue", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue", "taint", "manual"] - ["::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/log.model.yml b/rust/ql/lib/codeql/rust/frameworks/log.model.yml index 6c60ddaa726b..0237a6399a29 100644 --- a/rust/ql/lib/codeql/rust/frameworks/log.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/log.model.yml @@ -14,6 +14,10 @@ extensions: - ["::write_all", "Argument[0]", "log-injection", "manual"] - ["::write", "Argument[0]", "log-injection", "manual"] - ["::write_all", "Argument[0]", "log-injection", "manual"] + - ["::write", "Argument[0]", "log-injection", "manual"] + - ["::write_all", "Argument[0]", "log-injection", "manual"] + - ["::write", "Argument[0]", "log-injection", "manual"] + - ["::write_all", "Argument[0]", "log-injection", "manual"] - ["core::panicking::panic_fmt", "Argument[0]", "log-injection", "manual"] - ["core::panicking::assert_failed", "Argument[3].Field[core::option::Option::Some(0)]", "log-injection", "manual"] - ["::expect", "Argument[0]", "log-injection", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml index 1da63eb7961a..4d142efbd62c 100644 --- a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml @@ -7,3 +7,11 @@ extensions: - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::connect", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["async_native_tls::connect::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml index 738c2c2072aa..67edf4eadfaf 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml @@ -15,6 +15,7 @@ extensions: - ["alloc::alloc::realloc", "Argument[2]", "alloc-size", "manual"] - ["::alloc", "Argument[0]", "alloc-layout", "manual"] - ["::alloc_zeroed", "Argument[0]", "alloc-layout", "manual"] + - ["::realloc", "Argument[2]", "alloc-size", "manual"] - ["::allocate", "Argument[0]", "alloc-layout", "manual"] - ["::allocate_zeroed", "Argument[0]", "alloc-layout", "manual"] - ["::grow", "Argument[2]", "alloc-layout", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index cc59fe4082e7..604b92f33d1a 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -7,6 +7,8 @@ extensions: - ["<& as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "manual"] - ["<&mut as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "manual"] - ["::deref", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"] + # for the pseudo implementation in `builtins/types.rs` + - ["<[;] as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue.Reference", "value", "manual"] # Index - ["::index", "Argument[self].Reference.Element", "ReturnValue.Reference", "value", "manual"] - ["::index_mut", "Argument[self].Reference.Element", "ReturnValue.Reference", "value", "manual"] @@ -98,7 +100,6 @@ extensions: - ["::next", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - - ["::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["::chain", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - ["::take", "Argument[self]", "ReturnValue", "taint", "manual"] @@ -110,6 +111,7 @@ extensions: # This model is not precise, but helps in cases where a `Pin` is implicitly dereferenced. - ["::new", "Argument[0].Reference", "ReturnValue", "value", "manual"] - ["::new_unchecked", "Argument[0]", "ReturnValue.Field[core::pin::Pin::pointer]", "value", "manual"] + - ["core::pin::pin_new_unchecked_in_helper", "Argument[0].Reference.Field[core::pin::PinMacroHelper::value]", "ReturnValue.Field[core::pin::Pin::pointer].Reference", "value", "manual"] - ["::into_inner", "Argument[0].Field[core::pin::Pin::pointer]", "ReturnValue", "value", "manual"] - ["::into_inner_unchecked", "Argument[0].Field[core::pin::Pin::pointer]", "ReturnValue", "value", "manual"] - ["::set", "Argument[0]", "Argument[self].Reference.Field[core::pin::Pin::pointer]", "value", "manual"] @@ -129,12 +131,19 @@ extensions: - ["::parse", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::trim", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"] - ["::to_string", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + # Fmt + - ["::write_fmt", "Argument[0]", "Argument[self].Reference", "taint", "manual"] + - ["::write_str", "Argument[0].Reference", "Argument[self].Reference", "taint", "manual"] + - ["::write_char", "Argument[0]", "Argument[self].Reference", "taint", "manual"] + - ["core::fmt::write", "Argument[1]", "Argument[0].Reference", "taint", "manual"] # Ord - ["::min", "Argument[self,0]", "ReturnValue", "value", "manual"] - ["::max", "Argument[self,0]", "ReturnValue", "value", "manual"] - ["::clamp", "Argument[self,0,1]", "ReturnValue", "value", "manual"] # Slice - ["<[]>::get", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "manual"] + - ["<[]>::iter", "Argument[self].Reference.Element", "ReturnValue.Element.Reference", "value", "manual"] + - ["<[]>::iter_mut", "Argument[self].Reference.Element", "ReturnValue.Element.Reference", "value", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel 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 96f32915f739..a9c108102acf 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml @@ -89,4 +89,6 @@ extensions: # Overwrite generated models - ["::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] \ No newline at end of file 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 fb7ff0da28e5..779d0dc2a1fd 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml @@ -41,3 +41,34 @@ extensions: - ["::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + # Rust 1.99 moved the shared I/O implementation from `std` to `alloc`. + - ["::new", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["::fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::buffer", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"] + - ["::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] + - ["::split", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::lines", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::bytes", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::chain", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::chain", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["::take", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::next", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "value", "manual"] + - ["::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_string", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::read_exact", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["::fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/internal/AstConsistency.qll b/rust/ql/lib/codeql/rust/internal/AstConsistency.qll index 97f49a42560c..75a87c4e2866 100644 --- a/rust/ql/lib/codeql/rust/internal/AstConsistency.qll +++ b/rust/ql/lib/codeql/rust/internal/AstConsistency.qll @@ -5,6 +5,16 @@ private import rust private import codeql.rust.elements.internal.generated.ParentChild +private predicate missingToString(Element e) { not exists(e.toString()) } + +/** + * Holds if `e` lacks a `toString()` result. + */ +query predicate missingToString(Element e, string cls) { + missingToString(e) and + cls = e.getPrimaryQlClasses() +} + private predicate multipleToStrings(Element e) { strictcount(e.toString()) > 1 } /** @@ -86,6 +96,9 @@ query predicate multipleVariableTargets(VariableAccess va, Variable v1) { */ int getAstInconsistencyCounts(string type) { // total results from all the AST consistency query predicates. + type = "Missing toString" and + result = count(Element e | missingToString(e) | e) + or type = "Multiple toStrings" and result = count(Element e | multipleToStrings(e) | e) or diff --git a/rust/ql/lib/codeql/rust/internal/CachedStages.qll b/rust/ql/lib/codeql/rust/internal/CachedStages.qll index 4e3874a9282a..020cf83188e7 100644 --- a/rust/ql/lib/codeql/rust/internal/CachedStages.qll +++ b/rust/ql/lib/codeql/rust/internal/CachedStages.qll @@ -30,6 +30,8 @@ import rust * The `backref` predicate starts with `1 = 1 or` to ensure that the predicate will be optimized down to a constant by the optimizer. */ module Stages { + private import codeql.rust.internal.typeinference.TypeInference as TypeInference + /** * The abstract syntex tree (AST) stage. */ @@ -126,35 +128,7 @@ module Stages { /** * The type inference stage. */ - cached - module TypeInferenceStage { - private import codeql.rust.internal.typeinference.Type - private import codeql.rust.internal.typeinference.TypeInference - private import codeql.rust.dataflow.internal.ModelsAsData - - /** - * Always holds. - * Ensures that a predicate is evaluated as part of the type inference stage. - */ - cached - predicate ref() { 1 = 1 } - - /** - * DO NOT USE! - * - * Contains references to each predicate that use the above `ref` predicate. - */ - cached - predicate backref() { - 1 = 1 - or - exists(Type t) - or - exists(inferType(_)) - or - mayInvokeCallback(_, _) - } - } + module TypeInferenceStage = TypeInference::CachedStage; /** * The data flow stage. diff --git a/rust/ql/lib/codeql/rust/internal/Definitions.qll b/rust/ql/lib/codeql/rust/internal/Definitions.qll index aa0c5146b41f..6055e1a9965b 100644 --- a/rust/ql/lib/codeql/rust/internal/Definitions.qll +++ b/rust/ql/lib/codeql/rust/internal/Definitions.qll @@ -8,7 +8,7 @@ private import codeql.rust.elements.Variable private import codeql.rust.elements.Locatable private import codeql.rust.elements.FormatArgsExpr private import codeql.rust.elements.FormatArgsArg -private import codeql.rust.elements.FormatArgsArgName +private import codeql.rust.elements.Name private import codeql.rust.elements.Format private import codeql.rust.elements.MacroCall private import codeql.rust.elements.NamedFormatArgument @@ -34,7 +34,7 @@ private module Cached { cached newtype TDef = TVariable(Variable v) or - TFormatArgsArgDef(FormatArgsArgName name) { name = any(FormatArgsArg a).getArgName() } or + TFormatArgsArgDef(Name name) { name = any(FormatArgsArg a).getName() } or TFormatArgsArgIndex(Expr e) { e = any(FormatArgsArg a).getExpr() } or TItemNode(ItemNode i) @@ -68,7 +68,7 @@ class Definition extends Cached::TDef { Variable asVariable() { this = Cached::TVariable(result) } /** Gets this definition as a format argument name */ - FormatArgsArgName asFormatArgsArgName() { this = Cached::TFormatArgsArgDef(result) } + Name asFormatArgsArgName() { this = Cached::TFormatArgsArgDef(result) } /** Gets this definition as an `Expr` */ Expr asExpr() { this = Cached::TFormatArgsArgIndex(result) } @@ -96,12 +96,12 @@ private class LocalVariableUse extends Use instanceof VariableAccess { } private class NamedFormatArgumentUse extends Use instanceof NamedFormatArgument { - private FormatArgsArgName def; + private Name def; NamedFormatArgumentUse() { exists(FormatArgsExpr parent | parent = this.getParent().getParent() and - parent.getAnArg().getArgName() = def + parent.getAnArg().getName() = def ) } diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index f62262f7423f..30ddb6f12c36 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -427,7 +427,7 @@ abstract class ItemNode extends Locatable { if this instanceof Module or this instanceof Enum or - this instanceof Struct or + this instanceof Trait or this instanceof Crate then ( kind.isBoth() and @@ -1400,7 +1400,7 @@ private predicate fileModuleInlineLate(SourceFile f, string name, Folder folder) * [1]: https://doc.rust-lang.org/reference/items/modules.html#r-items.mod.outlined.path */ private Meta getPathAttrMeta(Module m) { - result = m.getAnAttr().getMeta() and + result = m.getAnAttr().(Attr).getMeta() and result.getMetaPath().getText() = "path" } @@ -1983,7 +1983,7 @@ private predicate pathUsesNamespace(PathExt p, Namespace n) { or n.isType() and ( - p = any(Visibility v).getPath() + p = any(Visibility v).getVisibilityInner().getPath() or p = any(StructExpr re).getPath() or diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll index 7c56300f3581..68242aa41d36 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll @@ -96,8 +96,7 @@ module SatisfiesBlanketConstraint< Type getTypeAt(TypePath path) { result = at.getTypeAt(blanketPath.appendInverse(path)) and - not result = TNeverType() and - not result = TUnknownType() + not result instanceof PseudoType } string toString() { result = at.toString() + " [blanket at " + blanketPath.toString() + "]" } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll index 5c40f623f170..f71bb093c3b7 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll @@ -60,7 +60,10 @@ private module UnboundListInput implements UnboundListImpl::InputSig { class Element = DerefImplItemNode; - int getId(Element e) { idOfRaw(Synth::convertAstNodeToRaw(e), result) } + int getId(Element e) { + CachedStage::ref() and + idOfRaw(Synth::convertAstNodeToRaw(e), result) + } string getElementString(Element e) { result = e.resolveSelfTy().getName() } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll index 9af026149cc9..6f7aa7b50f33 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll @@ -166,9 +166,9 @@ predicate traitTypeParameterOccurrence( } pragma[nomagic] -private predicate functionResolutionDependsOnArgumentCand( - ImplItemNode impl, Function f, string functionName, TypeParameter traitTp, FunctionPosition pos, - TypePath path +predicate functionResolutionDependsOnArgumentCand( + ImplItemNode impl, Function f, string functionName, TypeParamTypeParameter traitTp, + FunctionPosition pos, TypePath path ) { /* * As seen in the example below, when an implementation has a sibling for a @@ -199,12 +199,14 @@ private predicate functionResolutionDependsOnArgumentCand( ) } -private predicate functionResolutionDependsOnPositionalArgumentCand( - ImplItemNode impl, Function f, string functionName, TypeParameter traitTp +pragma[nomagic] +predicate functionResolutionDependsOnPositionalArgumentCand( + ImplItemNode impl, Function f, string functionName, TypeParamTypeParameter traitTp, int pos, + TypePath path ) { - exists(FunctionPosition pos | - functionResolutionDependsOnArgumentCand(impl, f, functionName, traitTp, pos, _) and - pos.isPosition() + exists(FunctionPosition pos0 | + functionResolutionDependsOnArgumentCand(impl, f, functionName, traitTp, pos0, path) and + pos = pos0.asPosition() ) } @@ -223,7 +225,7 @@ private Type getAssocFunctionNonTypeParameterTypeAt( */ pragma[nomagic] private predicate hasEquivalentPositionalSibling( - ImplItemNode impl, ImplItemNode sibling, Function f, TypeParameter traitTp + ImplItemNode impl, ImplItemNode sibling, Function f, TypeParamTypeParameter traitTp ) { exists(string functionName, FunctionPosition pos, TypePath path | functionResolutionDependsOnArgumentCand(impl, f, functionName, traitTp, pos, path) and @@ -255,7 +257,7 @@ private predicate hasEquivalentPositionalSibling( * * `traitTp` is a type parameter of the trait being implemented by `impl`, and * we need to check that the type of `f` corresponding to `traitTp` is satisfied - * at any one of the positions `pos` in which that type occurs in `f`. + * at any one of the positions `pos` in which that type occurs at `path` in `f`. * * Type parameters that only occur in return positions are only included when * all other type parameters that occur in a positional position are insufficient @@ -283,19 +285,20 @@ private predicate hasEquivalentPositionalSibling( */ pragma[nomagic] predicate functionResolutionDependsOnArgument( - ImplItemNode impl, Function f, TypeParameter traitTp, FunctionPosition pos + ImplItemNode impl, Function f, TypeParamTypeParameter traitTp, FunctionPosition pos, TypePath path ) { exists(string functionName | - functionResolutionDependsOnArgumentCand(impl, f, functionName, traitTp, pos, _) + functionResolutionDependsOnArgumentCand(impl, f, functionName, traitTp, pos, path) | - if functionResolutionDependsOnPositionalArgumentCand(impl, f, functionName, traitTp) + if functionResolutionDependsOnPositionalArgumentCand(impl, f, functionName, traitTp, _, _) then any() else // `traitTp` only occurs in return position; check that it is indeed needed for disambiguation exists(ImplItemNode sibling | implSiblings(_, impl, sibling) and - forall(TypeParameter otherTraitTp | - functionResolutionDependsOnPositionalArgumentCand(impl, f, functionName, otherTraitTp) + forall(TypeParamTypeParameter otherTraitTp | + functionResolutionDependsOnPositionalArgumentCand(impl, f, functionName, otherTraitTp, _, + _) | hasEquivalentPositionalSibling(impl, sibling, f, otherTraitTp) ) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index d128875eda7e..730be63db6a6 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -329,8 +329,7 @@ module ArgIsInstantiationOf { private import Type as T private import codeql.rust.elements.internal.generated.Raw @@ -37,63 +29,14 @@ private module Input1 implements InputSig1 { class Type = T::Type; - predicate isPseudoType(Type t) { - t instanceof UnknownType or - t instanceof NeverType - } + class PseudoType = T::PseudoType; class TypeParameter = T::TypeParameter; class TypeAbstraction = TA::TypeAbstraction; - class TypeArgumentPosition extends TTypeArgumentPosition { - int asMethodTypeArgumentPosition() { this = TMethodTypeArgumentPosition(result) } - - TypeParam asTypeParam() { this = TTypeParamTypeArgumentPosition(result) } - - string toString() { - result = this.asMethodTypeArgumentPosition().toString() - or - result = this.asTypeParam().toString() - } - } - - private newtype TTypeParameterPosition = - TTypeParamTypeParameterPosition(TypeParam tp) or - TImplicitTypeParameterPosition() - - class TypeParameterPosition extends TTypeParameterPosition { - TypeParam asTypeParam() { this = TTypeParamTypeParameterPosition(result) } - - /** - * Holds if this is the implicit type parameter position used to represent - * parameters that are never passed explicitly as arguments. - */ - predicate isImplicit() { this = TImplicitTypeParameterPosition() } - - string toString() { - result = this.asTypeParam().toString() - or - result = "Implicit" and this.isImplicit() - } - } - - /** Holds if `typeParam`, `param` and `ppos` all concern the same `TypeParam`. */ - additional predicate typeParamMatchPosition( - TypeParam typeParam, TypeParamTypeParameter param, TypeParameterPosition ppos - ) { - typeParam = param.getTypeParam() and typeParam = ppos.asTypeParam() - } - - bindingset[apos] - bindingset[ppos] - predicate typeArgumentParameterPositionMatch(TypeArgumentPosition apos, TypeParameterPosition ppos) { - apos.asTypeParam() = ppos.asTypeParam() - or - apos.asMethodTypeArgumentPosition() = ppos.asTypeParam().getPosition() - } - int getTypeParameterId(TypeParameter tp) { + CachedStage::ref() and tp = rank[result](TypeParameter tp0, int kind, int id1, int id2 | kind = 1 and @@ -272,26 +215,6 @@ private module M2 = Make2; import M2 -module Consistency { - import M2::Consistency - - private Type inferCertainTypeAdj(AstNode n, TypePath path) { - result = CertainTypeInference::inferCertainType(n, path) and - not result = TNeverType() - } - - predicate nonUniqueCertainType(AstNode n, TypePath path, Type t) { - strictcount(inferCertainTypeAdj(n, path)) > 1 and - t = inferCertainTypeAdj(n, path) and - // Suppress the inconsistency if `n` is a self parameter and the type - // mention for the self type has multiple types for a path. - not exists(ImplItemNode impl, TypePath selfTypePath | - n = impl.getAnAssocItem().(Function).getSelfParam() and - strictcount(impl.(Impl).getSelfTy().(TypeMention).getTypeAt(selfTypePath)) > 1 - ) - } -} - /** A function without a `self` parameter. */ private class NonMethodFunction extends Function { NonMethodFunction() { not this.hasSelfParam() } @@ -329,933 +252,182 @@ private class FunctionDeclaration extends Function { or this = i.asSome().getAnAssocItem() } - - TypeParam getTypeParam(ImplOrTraitItemNodeOption i) { - i = parent and - result = [this.getGenericParamList().getATypeParam(), i.asSome().getTypeParam(_)] - } - - TypeParameter getTypeParameter(ImplOrTraitItemNodeOption i, TypeParameterPosition ppos) { - typeParamMatchPosition(this.getTypeParam(i), result, ppos) - or - // For every `TypeParam` of this function, any associated types accessed on - // the type parameter are also type parameters. - ppos.isImplicit() and - result.(TypeParamAssociatedTypeTypeParameter).getTypeParam() = this.getTypeParam(i) - or - i = parent and - ( - ppos.isImplicit() and result = TSelfTypeParameter(i.asSome()) - or - ppos.isImplicit() and result.(AssociatedTypeTypeParameter).getTrait() = i.asSome() - or - ppos.isImplicit() and this = result.(ImplTraitTypeTypeParameter).getFunction() - ) - } - - pragma[nomagic] - Type getParameterType(ImplOrTraitItemNodeOption i, FunctionPosition pos, TypePath path) { - i = parent and - ( - not pos.isReturn() and - result = getAssocFunctionTypeAt(this, i.asSome(), pos, path) - or - i.isNone() and - result = this.getParam(pos.asPosition()).getTypeRepr().(TypeMention).getTypeAt(path) - ) - } - - private Type resolveRetType(ImplOrTraitItemNodeOption i, TypePath path) { - i = parent and - ( - result = - getAssocFunctionTypeAt(this, i.asSome(), any(FunctionPosition ret | ret.isReturn()), path) - or - i.isNone() and - result = getReturnTypeMention(this).getTypeAt(path) - ) - } - - Type getReturnType(ImplOrTraitItemNodeOption i, TypePath path) { - if this.isAsync() - then - i = parent and - path.isEmpty() and - result = getFutureTraitType() - or - exists(TypePath suffix | - result = this.resolveRetType(i, suffix) and - path = TypePath::cons(getDynFutureOutputTypeParameter(), suffix) - ) - else result = this.resolveRetType(i, path) - } - - string toStringExt(ImplOrTraitItemNode i) { - i = parent.asSome() and - if this = i.getAnAssocItem() - then result = this.toString() - else - result = this + " [" + [i.(Impl).getSelfTy().toString(), i.(Trait).getName().toString()] + "]" - } } private class AssocFunctionDeclaration extends FunctionDeclaration { AssocFunctionDeclaration() { this.isAssoc(_) } } +/** + * Holds if `me` is a call to the `panic!` macro. + * + * `panic!` needs special treatment, because it expands to a block expression + * that looks like it should have type `()` instead of the correct `!` type. + */ pragma[nomagic] -private TypeMention getCallExprTypeMentionArgument(CallExpr ce, TypeArgumentPosition apos) { - exists(Path p, int i | p = CallExprImpl::getFunctionPath(ce) | - apos.asTypeParam() = resolvePath(p).getTypeParam(pragma[only_bind_into](i)) and - result = getPathTypeArgument(p, pragma[only_bind_into](i)) - ) +private predicate isPanicMacroCall(MacroExpr me) { + me.getMacroCall().resolveMacro().(MacroRules).getName().getText() = "panic" } -pragma[nomagic] -private Type getCallExprTypeArgument(CallExpr ce, TypeArgumentPosition apos, TypePath path) { - result = getCallExprTypeMentionArgument(ce, apos).getTypeAt(path) - or - // Handle constructions that use `Self(...)` syntax - exists(Path p, TypePath path0 | - p = CallExprImpl::getFunctionPath(ce) and - result = p.(TypeMention).getTypeAt(path0) and - path0.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) - ) +private Type inferStructExprType(StructExpr se, TypePath path) { + result = se.getPath().(TypeMention).getTypeAt(path) } -/** Gets the type annotation that applies to `n`, if any. */ -private TypeMention getTypeAnnotation(AstNode n) { - exists(LetStmt let | - n = let.getPat() and - result = let.getTypeRepr() - ) - or - result = n.(SelfParam).getTypeRepr() - or - exists(Param p | - n = p.getPat() and - result = p.getTypeRepr() - ) +private Type inferStructPatType(StructPat sp, TypePath path) { + result = sp.getPath().(TypeMention).getTypeAt(path) } -/** Gets the type of `n`, which has an explicit type annotation. */ pragma[nomagic] -private Type inferAnnotatedType(AstNode n, TypePath path) { - result = getTypeAnnotation(n).getTypeAt(path) +private Struct getRangeType(RangeExpr re) { + re instanceof RangeFromExpr and + result instanceof RangeFromStruct + or + re instanceof RangeToExpr and + result instanceof RangeToStruct + or + re instanceof RangeFromToExpr and + result instanceof RangeStruct + or + re instanceof RangeInclusiveExpr and + result instanceof RangeInclusiveStruct or - result = n.(ShorthandSelfParameterMention).getTypeAt(path) + re instanceof RangeToInclusiveExpr and + result instanceof RangeToInclusiveStruct } pragma[nomagic] -private Type inferFunctionBodyType(AstNode n, TypePath path) { - exists(Function f | - n = f.getFunctionBody() and - result = getReturnTypeMention(f).getTypeAt(path) and - not exists(ImplTraitReturnType i | i.getFunction() = f | - result = i or result = i.getATypeParameter() - ) - ) +private DataType inferRangeFullExprType(RangeFullExpr re) { + exists(re) and result.getTypeItem() instanceof RangeFullStruct } -/** - * Holds if `me` is a call to the `panic!` macro. - * - * `panic!` needs special treatment, because it expands to a block expression - * that looks like it should have type `()` instead of the correct `!` type. - */ pragma[nomagic] -private predicate isPanicMacroCall(MacroExpr me) { - me.getMacroCall().resolveMacro().(MacroRules).getName().getText() = "panic" +private TupleType inferTupleRootType(AstNode n) { + result.getArity() = [n.(TupleExpr).getNumberOfFields(), n.(TuplePat).getTupleArity()] } -// Due to "binding modes" the type of the pattern is not necessarily the -// same as the type of the initializer. However, when the pattern is an -// identifier pattern, its type is guaranteed to be the same as the type of the -// initializer. -private predicate identLetStmt(LetStmt let, IdentPat lhs, Expr rhs) { - let.getPat() = lhs and - let.getInitializer() = rhs +pragma[nomagic] +private Path getCallExprPathQualifier(CallExpr ce) { + result = CallExprImpl::getFunctionPath(ce).getQualifier() } /** - * Gets the root type of a closure. + * Gets the type qualifier of function call `ce`, if any. + * + * For example, the type qualifier of `Foo::::default()` is `Foo::`, + * but only when `Foo` is not a trait. The type qualifier of `::baz()` + * is `Foo`. * - * We model closures as `dyn Fn` trait object types. A closure might implement - * only `Fn`, `FnMut`, or `FnOnce`. But since `Fn` is a subtrait of the others, - * giving closures the type `dyn Fn` works well in practice -- even if not - * entirely accurate. + * `isDefaultTypeArg` indicates whether the returned type is a default type + * argument, for example in `Vec::new()` the default type for the type parameter + * `A` of `Vec` is `Global`. */ -private DynTraitType closureRootType() { - result = TDynTraitType(any(FnTrait t)) // always exists because of the mention in `builtins/mentions.rs` -} - -/** Gets the path to a closure's return type. */ -private TypePath closureReturnPath() { - result = - TypePath::singleton(TDynTraitTypeParameter(any(FnTrait t), any(FnOnceTrait t).getOutputType())) +pragma[nomagic] +private Type getCallExprTypeQualifier(CallExpr ce, TypePath path, boolean isDefaultTypeArg) { + exists(Path p, TypeMention tm | + p = getCallExprPathQualifier(ce) and + tm = [p.(AstNode), p.getSegment().getTypeRepr()] + | + result = tm.getTypeAt(path) and + not resolvePath(tm) instanceof Trait and + isDefaultTypeArg = false + or + exists(TypeParameter tp, TypePath suffix | + result = + tm.(NonAliasPathTypeMention).getDefaultTypeForTypeParameterInNonAnnotationAt(tp, suffix) and + path = TypePath::cons(tp, suffix) and + isDefaultTypeArg = true + ) + ) } -/** Gets the path to a closure's `index`th parameter type, where the arity is `arity`. */ +/** + * Gets the trait qualifier of function call `ce`, if any. + * + * For example, the trait qualifier of `Default::::default()` is `Default`. + */ pragma[nomagic] -private TypePath closureParameterPath(int arity, int index) { - result = - TypePath::cons(TDynTraitTypeParameter(_, any(FnTrait t).getTypeParam()), - TypePath::singleton(getTupleTypeParameter(arity, index))) +private Trait getCallExprTraitQualifier(CallExpr ce) { + exists(PathExt qualifierPath | + qualifierPath = getCallExprPathQualifier(ce) and + result = resolvePath(qualifierPath) 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. + not qualifierPath.isUnqualified("Self") + ) } -/** Module for inferring certain type information. */ -module CertainTypeInference { - pragma[nomagic] - private predicate callResolvesTo(CallExpr ce, Path p, Function f) { - p = CallExprImpl::getFunctionPath(ce) and - f = resolvePath(p) - } +pragma[nomagic] +private predicate nonAssocFunction(ItemNode i) { not i instanceof AssocFunctionDeclaration } - pragma[nomagic] - private Type getCallExprType(CallExpr ce, Path p, FunctionDeclaration f, TypePath path) { - exists(ImplOrTraitItemNodeOption i | - callResolvesTo(ce, p, f) and - result = f.getReturnType(i, path) and - f.isDirectlyFor(i) - ) +/** + * A call expression that can only resolve to something that is not an associated + * function, and hence does not need type inference for resolution. + */ +private class NonAssocCallExpr extends CallExpr { + NonAssocCallExpr() { + forex(ItemNode i | i = CallExprImpl::getResolvedFunction(this) | nonAssocFunction(i)) } - pragma[nomagic] - private Type getCertainCallExprType(CallExpr ce, Path p, TypePath tp) { - forex(Function f | callResolvesTo(ce, p, f) | result = getCallExprType(ce, p, f, tp)) - } + /** + * Gets the target of this call, which can be resolved using only path resolution. + */ + ItemNode resolveCallTargetViaPathResolution() { result = CallExprImpl::getResolvedFunction(this) } - pragma[nomagic] - private TypePath getPathToImplSelfTypeParam(TypeParam tp) { - exists(ImplItemNode impl | - tp = impl.getTypeParam(_) and - TTypeParamTypeParameter(tp) = impl.(Impl).getSelfTy().(TypeMention).getTypeAt(result) + Expr getArgument(int i) { + exists(ArgumentPosition pos | + i = pos.asPosition() and + result = this.getSyntacticArgument(pos) ) } +} - pragma[nomagic] - private Type inferCertainCallExprType(CallExpr ce, TypePath path) { - exists(Type ty, TypePath prefix, Path p | ty = getCertainCallExprType(ce, p, prefix) | - exists(TypePath suffix, TypeParam tp | - tp = ty.(TypeParamTypeParameter).getTypeParam() and - path = prefix.append(suffix) - | - // For type parameters of the `impl` block we must resolve their - // instantiation from the path. For instance, for `impl for Foo` - // and the path `Foo::bar` we must resolve `A` to `i64`. - exists(TypePath pathToTp | - pathToTp = getPathToImplSelfTypeParam(tp) and - result = p.getQualifier().(TypeMention).getTypeAt(pathToTp.appendInverse(suffix)) - ) - or - // For type parameters of the function we must resolve their - // instantiation from the path. For instance, for `fn bar(a: A) -> A` - // and the path `bar`, we must resolve `A` to `i64`. - result = getCallExprTypeArgument(ce, TTypeParamTypeArgumentPosition(tp), suffix) - ) - or - not ty instanceof TypeParameter and - result = ty and - path = prefix - ) - } +/** + * Holds if the type path `path` pointing to `type` is stripped of any leading + * complex root type allowed for `self` parameters, such as `&`, `Box`, `Rc`, + * `Arc`, and `Pin`. + * + * We strip away the complex root type for performance reasons only, which will + * allow us to construct a much smaller set of candidate call targets (otherwise, + * for example _a lot_ of methods have a `self` parameter with a `&` root type). + */ +bindingset[path, type] +private predicate isComplexRootStripped(TypePath path, Type type) { + path.isEmpty() and + not validSelfType(type) + or + exists(TypeParameter tp | + complexSelfRoot(_, tp) and + path = TypePath::singleton(tp) and + exists(type) + ) +} - private Type inferCertainStructExprType(StructExpr se, TypePath path) { - result = se.getPath().(TypeMention).getTypeAt(path) - } +private newtype TBorrowKind = + TNoBorrowKind() or + TSomeBorrowKind(Boolean isMutable) - private Type inferCertainStructPatType(StructPat sp, TypePath path) { - result = sp.getPath().(TypeMention).getTypeAt(path) - } +private class BorrowKind extends TBorrowKind { + predicate isNoBorrow() { this = TNoBorrowKind() } - predicate certainTypeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2) { - prefix1.isEmpty() and - prefix2.isEmpty() and - ( - exists(Variable v | n1 = v.getAnAccess() | - n2 = v.getPat().getName() or n2 = v.getParameter().(SelfParam) - ) - or - // A `let` statement with a type annotation is a coercion site and hence - // is not a certain type equality. - exists(LetStmt let | - not let.hasTypeRepr() and - identLetStmt(let, n1, n2) - ) - or - exists(LetExpr let | - // Similarly as for let statements, we need to rule out binding modes - // changing the type. - let.getPat().(IdentPat) = n1 and - let.getScrutinee() = n2 - ) - or - n1 = n2.(ParenExpr).getExpr() - ) - or - n1 = - any(IdentPat ip | - n2 = ip.getName() and - prefix1.isEmpty() and - if ip.isRef() - then - exists(boolean isMutable | if ip.isMut() then isMutable = true else isMutable = false | - prefix2 = TypePath::singleton(getRefTypeParameter(isMutable)) - ) - else prefix2.isEmpty() - ) - or - exists(CallExprImpl::DynamicCallExpr dce, TupleType tt, int i | - n1 = dce.getArgList() and - tt.getArity() = dce.getNumberOfSyntacticArguments() and - n2 = dce.getSyntacticPositionalArgument(i) and - prefix1 = TypePath::singleton(tt.getPositionalTypeParameter(i)) and - prefix2.isEmpty() - ) - or - exists(ClosureExpr ce, int index | - n1 = ce and - n2 = ce.getParam(index).getPat() and - prefix1 = closureParameterPath(ce.getNumberOfParams(), index) and - prefix2.isEmpty() - ) - } + predicate isSharedBorrow() { this = TSomeBorrowKind(false) } - pragma[nomagic] - private Type inferCertainTypeEquality(AstNode n, TypePath path) { - exists(TypePath prefix1, AstNode n2, TypePath prefix2, TypePath suffix | - result = inferCertainType(n2, prefix2.appendInverse(suffix)) and - path = prefix1.append(suffix) - | - certainTypeEquality(n, prefix1, n2, prefix2) - or - certainTypeEquality(n2, prefix2, n, prefix1) + predicate isMutableBorrow() { this = TSomeBorrowKind(true) } + + RefType getRefType() { + exists(boolean isMutable | + this = TSomeBorrowKind(isMutable) and + result = getRefType(isMutable) ) } - /** - * Holds if `n` has complete and certain type information and if `n` has the - * resulting type at `path`. - */ - cached - Type inferCertainType(AstNode n, TypePath path) { - result = inferAnnotatedType(n, path) and - Stages::TypeInferenceStage::ref() - or - result = inferFunctionBodyType(n, path) - or - result = inferCertainCallExprType(n, path) - or - result = inferCertainTypeEquality(n, path) - or - result = inferLiteralType(n, path, true) - or - result = inferRefPatType(n) and - path.isEmpty() - or - result = inferRefExprType(n) and - path.isEmpty() - or - result = inferLogicalOperationType(n, path) - or - result = inferCertainStructExprType(n, path) + string toString() { + this.isNoBorrow() and + result = "" or - result = inferCertainStructPatType(n, path) - or - result = inferRangeExprType(n) and - path.isEmpty() - or - result = inferTupleRootType(n) and - path.isEmpty() - or - result = inferBlockExprType(n, path) - or - result = inferArrayExprType(n) and - path.isEmpty() - or - result = inferCastExprType(n, path) - or - exprHasUnitType(n) and - path.isEmpty() and - result instanceof UnitType - or - isPanicMacroCall(n) and - path.isEmpty() and - result instanceof NeverType - or - n instanceof ClosureExpr and - path.isEmpty() and - result = closureRootType() - or - infersCertainTypeAt(n, path, result.getATypeParameter()) - } - - /** - * Holds if `n` has complete and certain type information at the type path - * `prefix.tp`. This entails that the type at `prefix` must be the type - * that declares `tp`. - */ - pragma[nomagic] - private predicate infersCertainTypeAt(AstNode n, TypePath prefix, TypeParameter tp) { - exists(TypePath path | - exists(inferCertainType(n, path)) and - path.isSnoc(prefix, tp) - ) - } - - /** - * Holds if `n` has complete and certain type information at `path`. - */ - pragma[nomagic] - predicate hasInferredCertainType(AstNode n, TypePath path) { exists(inferCertainType(n, path)) } - - /** - * Holds if `n` having type `t` at `path` conflicts with certain type information - * at `prefix`. - */ - bindingset[n, prefix, path, t] - pragma[inline_late] - predicate certainTypeConflict(AstNode n, TypePath prefix, TypePath path, Type t) { - inferCertainType(n, path) != t - or - // If we infer that `n` has _some_ type at `T1.T2....Tn`, and we also - // know that `n` certainly has type `certainType` at `T1.T2...Ti`, `0 <= i < n`, - // then it must be the case that `T(i+1)` is a type parameter of `certainType`, - // otherwise there is a conflict. - // - // Below, `prefix` is `T1.T2...Ti` and `tp` is `T(i+1)`. - exists(TypePath suffix, TypeParameter tp, Type certainType | - path = prefix.appendInverse(suffix) and - tp = suffix.getHead() and - inferCertainType(n, prefix) = certainType and - not certainType.getATypeParameter() = tp - ) - } -} - -private Type inferLogicalOperationType(AstNode n, TypePath path) { - exists(Builtins::Bool t, BinaryLogicalOperation be | - n = [be, be.getLhs(), be.getRhs()] and - path.isEmpty() and - result = TDataType(t) - ) -} - -private Type inferAssignmentOperationType(AstNode n, TypePath path) { - n instanceof AssignmentOperation and - path.isEmpty() and - result instanceof UnitType -} - -pragma[nomagic] -private Struct getRangeType(RangeExpr re) { - re instanceof RangeFromExpr and - result instanceof RangeFromStruct - or - re instanceof RangeToExpr and - result instanceof RangeToStruct - or - re instanceof RangeFullExpr and - result instanceof RangeFullStruct - or - re instanceof RangeFromToExpr and - result instanceof RangeStruct - or - re instanceof RangeInclusiveExpr and - result instanceof RangeInclusiveStruct - or - re instanceof RangeToInclusiveExpr and - result instanceof RangeToInclusiveStruct -} - -private predicate bodyReturns(Expr body, Expr e) { - exists(ReturnExpr re, Callable c | - e = re.getExpr() and - c = re.getEnclosingCallable() and - body = c.getBody() - ) -} - -/** - * Holds if the type tree of `n1` at `prefix1` should be equal to the type tree - * of `n2` at `prefix2` and type information should propagate in both directions - * through the type equality. - */ -private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2) { - CertainTypeInference::certainTypeEquality(n1, prefix1, n2, prefix2) - or - prefix1.isEmpty() and - prefix2.isEmpty() and - ( - exists(LetStmt let | - let.getPat() = n1 and - let.getInitializer() = n2 - ) - or - n2 = - any(MatchExpr me | - n1 = me.getAnArm().getExpr() and - me.getNumberOfArms() = 1 - ) - or - exists(LetExpr let | - n1 = let.getScrutinee() and - n2 = let.getPat() - ) - or - exists(MatchExpr me | - n1 = me.getScrutinee() and - n2 = me.getAnArm().getPat() - ) - or - n1 = n2.(OrPat).getAPat() - or - n1 = n2.(ParenPat).getPat() - or - n1 = n2.(LiteralPat).getLiteral() - or - exists(BreakExpr break | - break.getExpr() = n1 and - break.getTarget() = n2.(LoopExpr) - ) - or - exists(AssignmentExpr be | - n1 = be.getLhs() and - n2 = be.getRhs() - ) - or - n1 = n2.(MacroExpr).getMacroCall().getMacroCallExpansion() and - not isPanicMacroCall(n2) - or - n1 = n2.(MacroPat).getMacroCall().getMacroCallExpansion() - or - bodyReturns(n1, n2) and - strictcount(Expr e | bodyReturns(n1, e)) = 1 - ) - or - n2 = - any(RefExpr re | - n1 = re.getExpr() and - prefix1.isEmpty() and - prefix2 = TypePath::singleton(inferRefExprType(re).getPositionalTypeParameter(0)) - ) - or - n2 = - any(RefPat rp | - n1 = rp.getPat() and - prefix1.isEmpty() and - exists(boolean isMutable | if rp.isMut() then isMutable = true else isMutable = false | - prefix2 = TypePath::singleton(getRefTypeParameter(isMutable)) - ) - ) - or - exists(int i, int arity | - prefix1.isEmpty() and - prefix2 = TypePath::singleton(getTupleTypeParameter(arity, i)) - | - arity = n2.(TupleExpr).getNumberOfFields() and - n1 = n2.(TupleExpr).getField(i) - or - arity = n2.(TuplePat).getTupleArity() and - n1 = n2.(TuplePat).getField(i) - ) - or - exists(BlockExpr be | - n1 = be and - n2 = be.getStmtList().getTailExpr() and - if be.isAsync() - then - prefix1 = TypePath::singleton(getDynFutureOutputTypeParameter()) and - prefix2.isEmpty() - else ( - prefix1.isEmpty() and - prefix2.isEmpty() - ) - ) - or - // an array list expression with only one element (such as `[1]`) has type from that element - n1 = - any(ArrayListExpr ale | - ale.getAnExpr() = n2 and - ale.getNumberOfExprs() = 1 - ) and - prefix1 = TypePath::singleton(getArrayTypeParameter()) and - prefix2.isEmpty() - or - // an array repeat expression (`[1; 3]`) has the type of the repeat operand - n1.(ArrayRepeatExpr).getRepeatOperand() = n2 and - prefix1 = TypePath::singleton(getArrayTypeParameter()) and - prefix2.isEmpty() -} - -/** - * Holds if `child` is a child of `parent`, and the Rust compiler applies [least - * upper bound (LUB) coercion][1] to infer the type of `parent` from the type of - * `child`. - * - * In this case, we want type information to only flow from `child` to `parent`, - * to avoid (a) either having to model LUB coercions, or (b) risk combinatorial - * explosion in inferred types. - * - * [1]: https://doc.rust-lang.org/reference/type-coercions.html#r-coerce.least-upper-bound - */ -private predicate lubCoercion(AstNode parent, AstNode child, TypePath prefix) { - child = parent.(IfExpr).getABranch() and - prefix.isEmpty() - or - parent = - any(MatchExpr me | - child = me.getAnArm().getExpr() and - me.getNumberOfArms() > 1 - ) and - prefix.isEmpty() - or - parent = - any(ArrayListExpr ale | - child = ale.getAnExpr() and - ale.getNumberOfExprs() > 1 - ) and - prefix = TypePath::singleton(getArrayTypeParameter()) - or - bodyReturns(parent, child) and - strictcount(Expr e | bodyReturns(parent, e)) > 1 and - prefix.isEmpty() - or - parent = any(ClosureExpr ce | not ce.hasRetType() and ce.getClosureBody() = child) and - prefix = closureReturnPath() - or - exists(Struct s | - child = [parent.(RangeExpr).getStart(), parent.(RangeExpr).getEnd()] and - prefix = TypePath::singleton(TTypeParamTypeParameter(s.getGenericParamList().getATypeParam())) and - s = getRangeType(parent) - ) -} - -private Type inferUnknownTypeFromAnnotation(AstNode n, TypePath path) { - inferType(n, path) = TUnknownType() and - // Normally, these are coercion sites, but in case a type is unknown we - // allow for type information to flow from the type annotation. - exists(TypeMention tm | result = tm.getTypeAt(path) | - tm = any(LetStmt let | identLetStmt(let, _, n)).getTypeRepr() - or - tm = any(ClosureExpr ce | n = ce.getBody()).getRetType().getTypeRepr() - or - tm = getReturnTypeMention(any(Function f | n = f.getBody())) - ) -} - -/** - * Holds if the type tree of `n1` at `prefix1` should be equal to the type tree - * of `n2` at `prefix2`, but type information should only propagate from `n1` to - * `n2`. - */ -private predicate typeEqualityAsymmetric(AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2) { - lubCoercion(n2, n1, prefix2) and - prefix1.isEmpty() - or - exists(AstNode mid, TypePath prefixMid, TypePath suffix | - typeEquality(n1, prefixMid, mid, prefix2) or - typeEquality(mid, prefix2, n1, prefixMid) - | - lubCoercion(mid, n2, suffix) and - not lubCoercion(mid, n1, _) and - prefix1 = prefixMid.append(suffix) - ) - or - // When `n2` is `*n1` propagate type information from a raw pointer type - // parameter at `n1`. The other direction is handled in - // `inferDereferencedExprPtrType`. - n1 = n2.(DerefExpr).getExpr() and - prefix1 = TypePath::singleton(getPtrTypeParameter()) and - prefix2.isEmpty() -} - -pragma[nomagic] -private Type inferTypeEquality(AstNode n, TypePath path) { - exists(TypePath prefix1, AstNode n2, TypePath prefix2, TypePath suffix | - result = inferType(n2, prefix2.appendInverse(suffix)) and - path = prefix1.append(suffix) - | - typeEquality(n, prefix1, n2, prefix2) - or - typeEquality(n2, prefix2, n, prefix1) - or - typeEqualityAsymmetric(n2, prefix2, n, prefix1) - ) -} - -pragma[nomagic] -private TupleType inferTupleRootType(AstNode n) { - // `typeEquality` handles the non-root cases - result.getArity() = [n.(TupleExpr).getNumberOfFields(), n.(TuplePat).getTupleArity()] -} - -pragma[nomagic] -private Path getCallExprPathQualifier(CallExpr ce) { - result = CallExprImpl::getFunctionPath(ce).getQualifier() -} - -/** - * Gets the type qualifier of function call `ce`, if any. - * - * For example, the type qualifier of `Foo::::default()` is `Foo::`, - * but only when `Foo` is not a trait. The type qualifier of `::baz()` - * is `Foo`. - * - * `isDefaultTypeArg` indicates whether the returned type is a default type - * argument, for example in `Vec::new()` the default type for the type parameter - * `A` of `Vec` is `Global`. - */ -pragma[nomagic] -private Type getCallExprTypeQualifier(CallExpr ce, TypePath path, boolean isDefaultTypeArg) { - exists(Path p, TypeMention tm | - p = getCallExprPathQualifier(ce) and - tm = [p.(AstNode), p.getSegment().getTypeRepr()] - | - result = tm.getTypeAt(path) and - not resolvePath(tm) instanceof Trait and - isDefaultTypeArg = false - or - exists(TypeParameter tp, TypePath suffix | - result = - tm.(NonAliasPathTypeMention).getDefaultTypeForTypeParameterInNonAnnotationAt(tp, suffix) and - path = TypePath::cons(tp, suffix) and - isDefaultTypeArg = true - ) - ) -} - -/** - * Gets the trait qualifier of function call `ce`, if any. - * - * For example, the trait qualifier of `Default::::default()` is `Default`. - */ -pragma[nomagic] -private Trait getCallExprTraitQualifier(CallExpr ce) { - exists(PathExt qualifierPath | - qualifierPath = getCallExprPathQualifier(ce) and - result = resolvePath(qualifierPath) 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. - not qualifierPath.isUnqualified("Self") - ) -} - -pragma[nomagic] -private predicate nonAssocFunction(ItemNode i) { not i instanceof AssocFunctionDeclaration } - -/** - * A call expression that can only resolve to something that is not an associated - * function, and hence does not need type inference for resolution. - */ -private class NonAssocCallExpr extends CallExpr { - NonAssocCallExpr() { - forex(ItemNode i | i = CallExprImpl::getResolvedFunction(this) | nonAssocFunction(i)) - } - - /** - * Gets the target of this call, which can be resolved using only path resolution. - */ - ItemNode resolveCallTargetViaPathResolution() { result = CallExprImpl::getResolvedFunction(this) } - - pragma[nomagic] - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - result = getCallExprTypeArgument(this, apos, path) - } - - AstNode getNodeAt(FunctionPosition pos) { - result = this.getSyntacticArgument(pos.asArgumentPosition()) - or - result = this and pos.isReturn() - } - - pragma[nomagic] - Type getInferredType(FunctionPosition pos, TypePath path) { - pos.isTypeQualifier() and - result = getCallExprTypeQualifier(this, path, false) - or - result = inferType(this.getNodeAt(pos), path) - } -} - -/** - * Provides functionality related to context-based typing of calls. - */ -private module ContextTyping { - /** - * Holds if `f` mentions type parameter `tp` at some non-return position, - * possibly via a constraint on another mentioned type parameter. - */ - pragma[nomagic] - private predicate assocFunctionMentionsTypeParameterAtNonRetPos( - ImplOrTraitItemNode i, Function f, TypeParameter tp - ) { - exists(FunctionPosition nonRetPos | - not nonRetPos.isReturn() and - not nonRetPos.isTypeQualifier() and - tp = getAssocFunctionTypeAt(f, i, nonRetPos, _) - ) - or - exists(TypeParameter mid | - assocFunctionMentionsTypeParameterAtNonRetPos(i, f, mid) and - tp = getATypeParameterConstraint(mid).getTypeAt(_) - ) - } - - /** - * Holds if the return type of the function `f` inside `i` at `path` is type - * parameter `tp`, and `tp` does not appear in the type of any parameter of - * `f`. - * - * In this case, the context in which `f` is called may be needed to infer - * the instantiation of `tp`. - * - * This covers functions like `Default::default` and `Vec::new`. - */ - pragma[nomagic] - private predicate assocFunctionReturnContextTypedAt( - ImplOrTraitItemNode i, Function f, FunctionPosition pos, TypePath path, TypeParameter tp - ) { - pos.isReturn() and - tp = getAssocFunctionTypeAt(f, i, pos, path) and - not assocFunctionMentionsTypeParameterAtNonRetPos(i, f, tp) - } - - /** - * A call where the type of the result may have to be inferred from the - * context in which the call appears, for example a call like - * `Default::default()`. - */ - abstract class ContextTypedCallCand extends AstNode { - abstract Type getTypeArgument(TypeArgumentPosition apos, TypePath path); - - predicate hasTypeArgument(TypeArgumentPosition apos) { exists(this.getTypeArgument(apos, _)) } - - /** - * Holds if this call resolves to `target` inside `i`, and the return type - * at `pos` and `path` may have to be inferred from the context. - */ - bindingset[this, i, target] - predicate hasUnknownTypeAt( - ImplOrTraitItemNode i, Function target, FunctionPosition pos, TypePath path - ) { - exists(TypeParameter tp | - assocFunctionReturnContextTypedAt(i, target, pos, path, tp) and - // check that no explicit type arguments have been supplied for `tp` - not exists(TypeArgumentPosition tapos | this.hasTypeArgument(tapos) | - exists(int j | - j = tapos.asMethodTypeArgumentPosition() and - tp = TTypeParamTypeParameter(target.getGenericParamList().getTypeParam(j)) - ) - or - TTypeParamTypeParameter(tapos.asTypeParam()) = tp - ) and - not ( - tp instanceof TSelfTypeParameter and - exists(getCallExprTypeQualifier(this, _, _)) - ) - ) - } - } - - pragma[nomagic] - private predicate hasUnknownTypeAt(AstNode n, TypePath path) { - inferType(n, path) = TUnknownType() - } - - pragma[nomagic] - private predicate hasUnknownType(AstNode n) { hasUnknownTypeAt(n, _) } - - newtype FunctionPositionKind = - SelfKind() or - ReturnKind() or - PositionalKind() - - signature Type inferCallTypeSig(AstNode n, FunctionPositionKind kind, TypePath path); - - /** - * Given a predicate `inferCallType` for inferring the type of a call at a given - * position, this module exposes the predicate `check`, which wraps the input - * predicate and checks that types are only propagated into arguments when they - * are context-typed. - */ - module CheckContextTyping { - pragma[nomagic] - private Type inferCallNonReturnType( - AstNode n, FunctionPositionKind kind, TypePath prefix, TypePath path - ) { - result = inferCallType(n, kind, path) and - hasUnknownType(n) and - kind != ReturnKind() and - prefix = path.getAPrefix() - } - - pragma[nomagic] - Type check(AstNode n, TypePath path) { - result = inferCallType(n, ReturnKind(), path) - or - exists(FunctionPositionKind kind, TypePath prefix | - result = inferCallNonReturnType(n, kind, prefix, path) and - hasUnknownTypeAt(n, prefix) - | - // Never propagate type information directly into the receiver, since its type - // must already have been known in order to resolve the call - if kind = SelfKind() then not prefix.isEmpty() else any() - ) - } - } -} - -/** - * Holds if the type path `path` pointing to `type` is stripped of any leading - * complex root type allowed for `self` parameters, such as `&`, `Box`, `Rc`, - * `Arc`, and `Pin`. - * - * We strip away the complex root type for performance reasons only, which will - * allow us to construct a much smaller set of candidate call targets (otherwise, - * for example _a lot_ of methods have a `self` parameter with a `&` root type). - */ -bindingset[path, type] -private predicate isComplexRootStripped(TypePath path, Type type) { - ( - path.isEmpty() and - not validSelfType(type) - or - exists(TypeParameter tp | - complexSelfRoot(_, tp) and - path = TypePath::singleton(tp) and - exists(type) - ) - ) and - type != TNeverType() -} - -private newtype TBorrowKind = - TNoBorrowKind() or - TSomeBorrowKind(Boolean isMutable) - -private class BorrowKind extends TBorrowKind { - predicate isNoBorrow() { this = TNoBorrowKind() } - - predicate isSharedBorrow() { this = TSomeBorrowKind(false) } - - predicate isMutableBorrow() { this = TSomeBorrowKind(true) } - - RefType getRefType() { - exists(boolean isMutable | - this = TSomeBorrowKind(isMutable) and - result = getRefType(isMutable) - ) - } - - string toString() { - this.isNoBorrow() and - result = "" - or - this.isMutableBorrow() and - result = "&mut" + this.isMutableBorrow() and + result = "&mut" or this.isSharedBorrow() and result = "&" @@ -1698,8 +870,7 @@ private module AssocFunctionResolution { not this.hasReceiver() and exists(TypePath strippedTypePath, Type strippedType | strippedType = substituteLookupTraits(this, this.getTypeAt(selfPos, strippedTypePath)) and - strippedType != TNeverType() and - strippedType != TUnknownType() + not strippedType instanceof PseudoType | nonBlanketLikeCandidate(this, _, selfPos, _, _, strippedTypePath, strippedType) or @@ -1795,8 +966,7 @@ private module AssocFunctionResolution { FunctionPosition selfPos, DerefChain derefChain, BorrowKind borrow, TypePath path ) { result = this.getSelfTypeAt(selfPos, derefChain, borrow, path) and - result != TNeverType() and - result != TUnknownType() + not result instanceof PseudoType } pragma[nomagic] @@ -1926,6 +1096,14 @@ private module AssocFunctionResolution { ) } + pragma[nomagic] + predicate resolutionDependsOnReturnType(TypePath path) { + exists(AssocFunctionCallCand afcc | + afcc = MkAssocFunctionCallCand(this, _, _, _) and + afcc.resolutionDependsOnReturnType(path) + ) + } + /** * Holds if the argument `arg` of this call has been implicitly dereferenced * and borrowed according to `derefChain` and `borrow`, in order to be able to @@ -2036,7 +1214,7 @@ private module AssocFunctionResolution { result = this.getOperand(pos.asPosition()) } - private predicate implicitBorrowAt(FunctionPosition pos, boolean isMutable) { + predicate implicitBorrowAt(FunctionPosition pos, boolean isMutable) { exists(int borrows | this.isOverloaded(_, _, borrows) | pos.asPosition() = 0 and borrows >= 1 and @@ -2401,11 +1579,65 @@ private module AssocFunctionResolution { pragma[nomagic] AssocFunctionDeclaration resolveCallTarget(ImplOrTraitItemNode i) { result = this.resolveCallTargetCand(i) and - not FunctionOverloading::functionResolutionDependsOnArgument(i, result, _, _) + not FunctionOverloading::functionResolutionDependsOnArgument(i, result, _, _, _) or OverloadedCallArgsAreInstantiationsOf::argsAreInstantiationsOf(this, i, result) } + pragma[nomagic] + private predicate hasUnknownTypeAtPos(int pos, TypePath path) { + exists(FunctionPosition pos0 | + inferType(afc_.getNodeAt(pos0), path) = TUnknownType() and + pos = pos0.asPosition() + ) + } + + pragma[nomagic] + private predicate resolutionDependsOnReturnTypeCand( + ImplOrTraitItemNode i, AssocFunctionDeclaration target, TypeParameter traitTp, TypePath path + ) { + exists(FunctionPosition pos | + target = this.resolveCallTargetCand(i) and + FunctionOverloading::functionResolutionDependsOnArgument(i, target, traitTp, pos, path) and + pos.isReturn() + ) + } + + pragma[nomagic] + private predicate resolutionDependsOnPositionalAndReturnTypeCand( + ImplOrTraitItemNode i, AssocFunctionDeclaration target, TypePath path, int pos0, + TypePath prefix + ) { + exists(TypeParameter traitTp, TypePath path0 | + this.resolutionDependsOnReturnTypeCand(i, target, traitTp, path) and + FunctionOverloading::functionResolutionDependsOnPositionalArgumentCand(i, target, _, + traitTp, pos0, path0) and + prefix = path0.getAPrefix() + ) + } + + /** + * Holds if resolving this call requires contextual information about the + * return type at `path`. + */ + pragma[nomagic] + predicate resolutionDependsOnReturnType(TypePath path) { + exists(ImplOrTraitItemNode i, AssocFunctionDeclaration target | + exists(TypeParameter traitTp | + this.resolutionDependsOnReturnTypeCand(i, target, traitTp, path) and + not FunctionOverloading::functionResolutionDependsOnPositionalArgumentCand(i, target, _, + traitTp, _, _) + ) + or + // when `traitTp` is also mentioned in a parameter, require that typing of the + // corresponding argument also needs contextual typing + exists(int pos0, TypePath prefix | + this.resolutionDependsOnPositionalAndReturnTypeCand(i, target, path, pos0, prefix) and + this.hasUnknownTypeAtPos(pos0, prefix) + ) + ) + } + string toString() { result = afc_ + " at " + selfPos_ + " [" + derefChain.toString() + "; " + borrow + "]" } @@ -2435,8 +1667,7 @@ private module AssocFunctionResolution { Type getTypeAt(TypePath path) { result = substituteLookupTraits(afc, afc.getSelfTypeAtNoBorrow(selfPos, derefChain, path)) and - result != TNeverType() and - result != TUnknownType() + not result instanceof PseudoType } string toString() { result = afc + " [" + derefChain.toString() + "]" } @@ -2631,7 +1862,7 @@ private module AssocFunctionResolution { ArgsAreInstantiationsOfInputSig { predicate toCheck(ImplOrTraitItemNode i, Function f, TypeParameter traitTp, FunctionPosition pos) { - FunctionOverloading::functionResolutionDependsOnArgument(i, f, traitTp, pos) + FunctionOverloading::functionResolutionDependsOnArgument(i, f, traitTp, pos, _) } class Call extends AssocFunctionCallCand { @@ -2655,1287 +1886,1288 @@ private module AssocFunctionResolution { } } -/** - * A matching configuration for resolving types of function call expressions - * like `foo.bar(baz)` and `Foo::bar(baz)`. - */ -private module FunctionCallMatchingInput implements MatchingWithEnvironmentInputSig { - import FunctionPositionMatchingInput - - private newtype TDeclaration = - TFunctionDeclaration(ImplOrTraitItemNodeOption i, FunctionDeclaration f) { f.isFor(i) } - - final class Declaration extends TFunctionDeclaration { - ImplOrTraitItemNodeOption i; - FunctionDeclaration f; +pragma[nomagic] +private Type getFieldExprLookupType(FieldExpr fe, string name, DerefChain derefChain) { + exists(TypePath path | + result = inferType(fe.getContainer(), path) and + name = fe.getIdentifier().getText() and + isComplexRootStripped(path, result) + | + // TODO: Support full derefence chains as for method calls + path.isEmpty() and + derefChain = DerefChain::nil() + or + exists(DerefImplItemNode impl, TypeParamTypeParameter tp | + tp = impl.getFirstSelfTypeParameter() and + path.getHead() = tp and + derefChain = DerefChain::singleton(impl) + ) + ) +} + +pragma[nomagic] +private Type getTupleFieldExprLookupType(FieldExpr fe, int pos, DerefChain derefChain) { + exists(string name | + result = getFieldExprLookupType(fe, name, derefChain) and + pos = name.toInt() + ) +} - Declaration() { this = TFunctionDeclaration(i, f) } +/** Gets the root type of the reference expression `ref`. */ +pragma[nomagic] +private Type inferRefExprType(RefExpr ref) { + if ref.isRaw() + then + ref.isMut() and result instanceof PtrMutType + or + ref.isConst() and result instanceof PtrConstType + else + if ref.isMut() + then result instanceof RefMutType + else result instanceof RefSharedType +} - FunctionDeclaration getFunction() { result = f } +/** Gets the root type of the reference node `ref`. */ +pragma[nomagic] +private Type inferRefPatType(AstNode ref) { + exists(boolean isMut | + ref = + any(IdentPat ip | + ip.isRef() and + if ip.isMut() then isMut = true else isMut = false + ).getName() + or + ref = any(RefPat rp | if rp.isMut() then isMut = true else isMut = false) + | + result = getRefType(isMut) + ) +} - predicate isAssocFunction(ImplOrTraitItemNode i_, Function f_) { - i_ = i.asSome() and - f_ = f - } +pragma[nomagic] +private StructType getStrStruct() { result = TDataType(any(Builtins::Str s)) } - TypeParameter getTypeParameter(TypeParameterPosition ppos) { - result = f.getTypeParameter(i, ppos) - } +pragma[nomagic] +private Type inferLiteralType(LiteralExpr le, TypePath path, boolean certain) { + path.isEmpty() and + exists(Builtins::BuiltinType t | result = TDataType(t) | + le instanceof CharLiteralExpr and + t instanceof Builtins::Char and + certain = true + or + le = + any(NumberLiteralExpr ne | + t.getName() = ne.getSuffix() and + certain = true + or + // When a number literal has no suffix, the type may depend on the context. + // For simplicity, we assume either `i32` or `f64`. + not exists(ne.getSuffix()) and + certain = false and + ( + ne instanceof IntegerLiteralExpr and + t instanceof Builtins::I32 + or + ne instanceof FloatLiteralExpr and + t instanceof Builtins::F64 + ) + ) + or + le instanceof BooleanLiteralExpr and + t instanceof Builtins::Bool and + certain = true + ) + or + le instanceof StringLiteralExpr and + ( + path.isEmpty() and result instanceof RefSharedType + or + path = TypePath::singleton(getRefTypeParameter(false)) and + result = getStrStruct() + ) and + certain = true +} - Type getDeclaredType(FunctionPosition pos, TypePath path) { - result = f.getParameterType(i, pos, path) - or - pos.isReturn() and - result = f.getReturnType(i, path) - } +pragma[nomagic] +private DynTraitType getFutureTraitType() { result.getTrait() instanceof FutureTrait } - string toString() { - i.isNone() and result = f.toString() - or - result = f.toStringExt(i.asSome()) - } +pragma[nomagic] +private AssociatedTypeTypeParameter getFutureOutputTypeParameter() { + result = getAssociatedTypeTypeParameter(any(FutureTrait ft).getOutputType()) +} - Location getLocation() { result = f.getLocation() } - } +pragma[nomagic] +private DynTraitTypeParameter getDynFutureOutputTypeParameter() { + result.getTraitTypeParameter() = getFutureOutputTypeParameter() +} - pragma[nomagic] - private TypeMention getAdditionalTypeParameterConstraint(TypeParameter tp, Declaration decl) { - result = - tp.(TypeParamTypeParameter) - .getTypeParam() - .getAdditionalTypeBound(decl.getFunction(), _) - .getTypeRepr() - } +pragma[nomagic] +predicate isUnitBlockExpr(BlockExpr be) { + not be.getStmtList().hasTailExpr() and + not exists(Callable c | + be = c.getBody() and + c = any(ReturnExpr re).getEnclosingCallable() + ) and + not be.hasLabel() +} - bindingset[decl] - TypeMention getATypeParameterConstraint(TypeParameter tp, Declaration decl) { - result = Input2::getATypeParameterConstraint(tp) and - exists(decl) - or - result = getAdditionalTypeParameterConstraint(tp, decl) - } +pragma[nomagic] +private Type inferAsyncUnitBlockExprType(AsyncBlockExpr be, TypePath path) { + isUnitBlockExpr(be) and + path = TypePath::singleton(getDynFutureOutputTypeParameter()) and + result instanceof UnitType +} - class AccessEnvironment = string; +pragma[nomagic] +private predicate exprHasUnitType(AstNode e) { + e = any(IfExpr ie | not ie.hasElse()) + or + e instanceof WhileExpr + or + e instanceof ForExpr + or + e instanceof AssignmentOperation + or + e = any(BlockExpr be | isUnitBlockExpr(be) and not be.isAsync()) + or + exists(CallExprImpl::DynamicCallExpr dce | + e = dce.getArgList() and + dce.getNumberOfSyntacticArguments() = 0 + ) +} - bindingset[derefChain, borrow] - private AccessEnvironment encodeDerefChainBorrow(DerefChain derefChain, BorrowKind borrow) { - result = derefChain + ";" + borrow - } +final private class AwaitTarget extends Expr { + AwaitTarget() { this = any(AwaitExpr ae).getExpr() } - bindingset[derefChainBorrow] - additional predicate decodeDerefChainBorrow( - string derefChainBorrow, DerefChain derefChain, BorrowKind borrow - ) { - exists(int i | - i = derefChainBorrow.indexOf(";") and - derefChain = derefChainBorrow.prefix(i) and - borrow.toString() = derefChainBorrow.suffix(i + 1) - ) - } + Type getTypeAt(TypePath path) { result = inferType(this, path) } +} - private string noDerefChainBorrow() { - exists(DerefChain derefChain, BorrowKind borrow | - derefChain.isEmpty() and - borrow.isNoBorrow() and - result = encodeDerefChainBorrow(derefChain, borrow) - ) +private module AwaitSatisfiesTypeInput implements SatisfiesTypeInputSig { + pragma[nomagic] + predicate relevantConstraint(AwaitTarget term, Type constraint) { + exists(term) and + constraint.(TraitType).getTrait() instanceof FutureTrait } +} - abstract class Access extends ContextTyping::ContextTypedCallCand { - abstract AstNode getNodeAt(FunctionPosition pos); - - bindingset[derefChainBorrow] - abstract Type getInferredType(string derefChainBorrow, FunctionPosition pos, TypePath path); +private module AwaitSatisfiesType = SatisfiesType; - abstract Declaration getTarget(string derefChainBorrow); +pragma[nomagic] +private Type inferAwaitExprType(AstNode n, TypePath path) { + exists(TypePath exprPath | + AwaitSatisfiesType::satisfiesConstraint(n.(AwaitExpr).getExpr(), _, exprPath, result) and + exprPath.isCons(getFutureOutputTypeParameter(), path) + ) +} - /** - * Holds if the return type of this call at `path` may have to be inferred - * from the context. - */ - abstract predicate hasUnknownTypeAt(string derefChainBorrow, FunctionPosition pos, TypePath path); - } +pragma[nomagic] +private Type inferEmptyArrayListExprType(ArrayListExpr ae) { + ae.getNumberOfExprs() = 0 and result instanceof ArrayType +} - private class AssocFunctionCallAccess extends Access instanceof AssocFunctionResolution::AssocFunctionCall - { - AssocFunctionCallAccess() { - // handled in the `OperationMatchingInput` module - not this instanceof Operation - } +/** + * A matching configuration for resolving types of deconstruction patterns like + * `let Foo { bar } = ...` or `let Some(x) = ...`. + */ +private module DeconstructionPatMatchingInput implements MatchingInputSig { + import FunctionPositionMatchingInput - pragma[nomagic] - override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - result = - this.(MethodCallExpr) - .getGenericArgList() - .getTypeArg(apos.asMethodTypeArgumentPosition()) - .(TypeMention) - .getTypeAt(path) + class Declaration extends Input3::Constructor { + Type getDeclaredType(FunctionPosition pos, TypePath path) { + result = this.getParameter(pos.asPosition()).getType().getTypeAt(path) or - result = getCallExprTypeArgument(this, apos, path) + pos.isReturn() and + result = this.getType().getTypeAt(path) } + } - override AstNode getNodeAt(FunctionPosition pos) { - result = AssocFunctionResolution::AssocFunctionCall.super.getNodeAt(pos) - } + class Access extends Pat instanceof PathAstNode { + Access() { this instanceof TupleStructPat or this instanceof StructPat } - pragma[nomagic] - private Type getInferredSelfType(FunctionPosition pos, string derefChainBorrow, TypePath path) { - exists(DerefChain derefChain, BorrowKind borrow | - result = super.getSelfTypeAt(pos, derefChain, borrow, path) and - derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and - super.hasReceiverAtPos(pos) - ) - } + Type getTypeArgument(int pos, TypePath path) { none() } - pragma[nomagic] - private Type getInferredNonSelfType(FunctionPosition pos, TypePath path) { - if - // index expression `x[i]` desugars to `*x.index(i)`, so we must account for - // the implicit deref - pos.isReturn() and - this instanceof IndexExpr - then - path.isEmpty() and - result instanceof RefType - or - exists(TypePath suffix | - result = super.getTypeAt(pos, suffix) and - path = TypePath::cons(getRefTypeParameter(_), suffix) + AstNode getNodeAt(AccessPosition apos) { + this = + any(StructPat sp | + result = + sp.getPatField(pragma[only_bind_into](sp.getNthStructField(apos.asPosition()) + .getName() + .getText())).getPat() ) - else ( - not super.hasReceiverAtPos(pos) and - result = super.getTypeAt(pos, path) - ) - } - - bindingset[derefChainBorrow] - override Type getInferredType(string derefChainBorrow, FunctionPosition pos, TypePath path) { - result = this.getInferredSelfType(pos, derefChainBorrow, path) or - result = this.getInferredNonSelfType(pos, path) - } - - private AssocFunctionDeclaration getTarget(ImplOrTraitItemNode i, string derefChainBorrow) { - exists(DerefChain derefChain, BorrowKind borrow | - derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and - result = super.resolveCallTarget(i, _, derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa - ) - } - - override Declaration getTarget(string derefChainBorrow) { - exists(ImplOrTraitItemNode i | result.isAssocFunction(i, this.getTarget(i, derefChainBorrow))) + result = this.(TupleStructPat).getField(apos.asPosition()) + or + result = this and + apos.isReturn() } - pragma[nomagic] - override predicate hasUnknownTypeAt(string derefChainBorrow, FunctionPosition pos, TypePath path) { - exists(ImplOrTraitItemNode i | - this.hasUnknownTypeAt(i, this.getTarget(i, derefChainBorrow), pos, path) - ) + Type getInferredType(AccessPosition apos, TypePath path) { + result = inferType(this.getNodeAt(apos), path) or - derefChainBorrow = noDerefChainBorrow() and - forex(ImplOrTraitItemNode i, Function f | - f = CallExprImpl::getResolvedFunction(this) and - f = i.getAnAssocItem() - | - this.hasUnknownTypeAt(i, f, pos, path) - ) + // The struct/enum type is supplied explicitly as a type qualifier, e.g. + // `let Foo::::Variant { ... } = ...` or + // `let Option::::Some(x) = ...`. + apos.isReturn() and + result = super.getPath().(TypeMention).getTypeAt(path) } + + Declaration getTarget() { result = resolvePath(super.getPath()) } } +} - private class NonAssocFunctionCallAccess extends Access instanceof NonAssocCallExpr, - CallExprImpl::CallExprCall - { - pragma[nomagic] - override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - result = NonAssocCallExpr.super.getTypeArgument(apos, path) - } +private module DeconstructionPatMatching = Matching; - override AstNode getNodeAt(FunctionPosition pos) { - result = NonAssocCallExpr.super.getNodeAt(pos) - } +/** + * Gets the type of `n` at `path`, where `n` is a pattern for a constructor, + * either a struct pattern or a tuple-struct pattern. + */ +pragma[nomagic] +private Type inferDeconstructionPatType(AstNode n, TypePath path) { + exists(DeconstructionPatMatchingInput::Access a, FunctionPosition apos | + n = a.getNodeAt(apos) and + result = DeconstructionPatMatching::inferAccessType(a, apos, path) + ) +} - pragma[nomagic] - private Type getInferredType(FunctionPosition pos, TypePath path) { - result = super.getInferredType(pos, path) - } +final private class ForIterableExpr extends Expr { + ForIterableExpr() { this = any(ForExpr fe).getIterable() } - bindingset[derefChainBorrow] - override Type getInferredType(string derefChainBorrow, FunctionPosition pos, TypePath path) { - exists(derefChainBorrow) and - result = this.getInferredType(pos, path) - } + Type getTypeAt(TypePath path) { result = inferType(this, path) } +} - pragma[nomagic] - private Declaration getTarget() { - result = - TFunctionDeclaration(ImplOrTraitItemNodeOption::none_(), - super.resolveCallTargetViaPathResolution()) - } +private module ForIterableSatisfiesTypeInput implements SatisfiesTypeInputSig { + predicate relevantConstraint(ForIterableExpr term, Type constraint) { + exists(term) and + exists(Trait t | t = constraint.(TraitType).getTrait() | + // TODO: Remove the line below once we can handle the `impl IntoIterator for I` implementation + t instanceof IteratorTrait or + t instanceof IntoIteratorTrait + ) + } +} - override Declaration getTarget(string derefChainBorrow) { - result = this.getTarget() and - derefChainBorrow = noDerefChainBorrow() - } +pragma[nomagic] +private AssociatedTypeTypeParameter getIteratorItemTypeParameter() { + result = getAssociatedTypeTypeParameter(any(IteratorTrait t).getItemType()) +} - pragma[nomagic] - override predicate hasUnknownTypeAt(string derefChainBorrow, FunctionPosition pos, TypePath path) { - derefChainBorrow = noDerefChainBorrow() and - exists(FunctionDeclaration f, TypeParameter tp | - f = super.resolveCallTargetViaPathResolution() and - pos.isReturn() and - tp = f.getReturnType(_, path) and - not tp = f.getParameterType(_, _, _) and - // check that no explicit type arguments have been supplied for `tp` - not exists(TypeArgumentPosition tapos | - this.hasTypeArgument(tapos) and - TTypeParamTypeParameter(tapos.asTypeParam()) = tp - ) - ) - } - } +pragma[nomagic] +private AssociatedTypeTypeParameter getIntoIteratorItemTypeParameter() { + result = getAssociatedTypeTypeParameter(any(IntoIteratorTrait t).getItemType()) } -private module FunctionCallMatching = MatchingWithEnvironment; +private module ForIterableSatisfiesType = + SatisfiesType; pragma[nomagic] -private Type inferFunctionCallType0( - FunctionCallMatchingInput::Access call, FunctionPosition pos, AstNode n, DerefChain derefChain, - BorrowKind borrow, TypePath path -) { - exists(TypePath path0 | - n = call.getNodeAt(pos) and - exists(string derefChainBorrow | - FunctionCallMatchingInput::decodeDerefChainBorrow(derefChainBorrow, derefChain, borrow) - | - result = FunctionCallMatching::inferAccessType(call, derefChainBorrow, pos, path0) - or - call.hasUnknownTypeAt(derefChainBorrow, pos, path0) and - result = TUnknownType() - ) +private Type inferForLoopExprType(AstNode n, TypePath path) { + // type of iterable -> type of pattern (loop variable) + exists(ForExpr fe, TypePath exprPath, AssociatedTypeTypeParameter tp | + n = fe.getPat() and + ForIterableSatisfiesType::satisfiesConstraint(fe.getIterable(), _, exprPath, result) and + exprPath.isCons(tp, path) | - if - // index expression `x[i]` desugars to `*x.index(i)`, so we must account for - // the implicit deref - pos.isReturn() and - call instanceof IndexExpr - then path0.isCons(getRefTypeParameter(_), path) - else path = path0 + tp = getIntoIteratorItemTypeParameter() + or + // TODO: Remove once we can handle the `impl IntoIterator for I` implementation + tp = getIteratorItemTypeParameter() and + inferType(fe.getIterable()) != getArrayTypeParameter() ) } -pragma[nomagic] -private Type inferFunctionCallTypeNonSelf(AstNode n, FunctionPosition pos, TypePath path) { - exists(FunctionCallMatchingInput::Access call | - result = inferFunctionCallType0(call, pos, n, _, _, path) and - not call.(AssocFunctionResolution::AssocFunctionCall).hasReceiverAtPos(pos) +/** Holds if `n` is implicitly dereferenced and/or borrowed. */ +cached +predicate implicitDerefChainBorrow(Expr e, DerefChain derefChain, boolean borrow) { + CachedStage::ref() and + exists(BorrowKind bk | + any(AssocFunctionResolution::AssocFunctionCall afc) + .argumentHasImplicitDerefChainBorrow(e, derefChain, bk) and + if bk.isNoBorrow() then borrow = false else borrow = true ) + or + e = + any(FieldExpr fe | + exists(resolveStructFieldExpr(fe, derefChain)) + or + exists(resolveTupleFieldExpr(fe, derefChain)) + ).getContainer() and + not derefChain.isEmpty() and + borrow = false } /** - * Gets the type of `n` at `path` after applying `derefChain`, where `n` is the - * `self` argument of a method call. + * Gets an item (function or tuple struct/variant) that `call` resolves to, if + * any. * - * The predicate recursively pops the head of `derefChain` until it becomes - * empty, at which point the inferred type can be applied back to `n`. + * The parameter `dispatch` is `true` if and only if the resolved target is a + * trait item because a precise target could not be determined from the + * types (for instance in the presence of generics or `dyn` types) */ -pragma[nomagic] -private Type inferFunctionCallTypeSelf( - FunctionCallMatchingInput::Access call, AstNode n, DerefChain derefChain, TypePath path -) { - exists(FunctionPosition pos, BorrowKind borrow, TypePath path0 | - call.(AssocFunctionResolution::AssocFunctionCall).hasReceiverAtPos(pos) and - result = inferFunctionCallType0(call, pos, n, derefChain, borrow, path0) - | - borrow.isNoBorrow() and - path = path0 - or - // adjust for implicit borrow - exists(TypePath prefix | - prefix = TypePath::singleton(borrow.getRefType().getPositionalTypeParameter(0)) and - path0 = prefix.appendInverse(path) - ) - ) +cached +Addressable resolveCallTarget(InvocationExpr call, boolean dispatch) { + CachedStage::ref() and + dispatch = false and + result = call.(NonAssocCallExpr).resolveCallTargetViaPathResolution() or - // adjust for implicit deref - exists( - DerefChain derefChain0, Type t0, TypePath path0, DerefImplItemNode impl, Type selfParamType, - TypePath selfPath - | - t0 = inferFunctionCallTypeSelf(call, n, derefChain0, path0) and - derefChain0.isCons(impl, derefChain) and - selfParamType = impl.resolveSelfTypeAt(selfPath) - | - result = selfParamType and - path = selfPath and - not result instanceof TypeParameter + exists(ImplOrTraitItemNode i | + i instanceof TraitItemNode and dispatch = true or - exists(TypePath pathToTypeParam, TypePath suffix | - impl.targetHasTypeParameterAt(pathToTypeParam, selfParamType) and - path0 = pathToTypeParam.appendInverse(suffix) and - result = t0 and - path = selfPath.append(suffix) - ) + i instanceof ImplItemNode and dispatch = false + | + result = call.(AssocFunctionResolution::AssocFunctionCall).resolveCallTarget(i, _, _, _) and + not call instanceof CallExprImpl::DynamicCallExpr and + not i instanceof Builtins::BuiltinImpl ) } -private Type inferFunctionCallTypePreCheck( - AstNode n, ContextTyping::FunctionPositionKind kind, TypePath path -) { - exists(FunctionPosition pos | - result = inferFunctionCallTypeNonSelf(n, pos, path) and - if pos.isPosition() - then kind = ContextTyping::PositionalKind() - else kind = ContextTyping::ReturnKind() - ) - or - exists(FunctionCallMatchingInput::Access a | - result = inferFunctionCallTypeSelf(a, n, DerefChain::nil(), path) and - if a.(AssocFunctionResolution::AssocFunctionCall).hasReceiver() - then kind = ContextTyping::SelfKind() - else kind = ContextTyping::PositionalKind() +/** + * Gets the struct field that the field expression `fe` resolves to, if any. + */ +cached +StructField resolveStructFieldExpr(FieldExpr fe, DerefChain derefChain) { + CachedStage::ref() and + exists(string name, DataType ty | + ty = getFieldExprLookupType(fe, pragma[only_bind_into](name), derefChain) + | + result = ty.(StructType).getTypeItem().getStructField(pragma[only_bind_into](name)) or + result = ty.(UnionType).getTypeItem().getStructField(pragma[only_bind_into](name)) ) } /** - * Gets the type of `n` at `path`, where `n` is either a function call or an - * argument/receiver of a function call. + * Gets the tuple field that the field expression `fe` resolves to, if any. */ -private predicate inferFunctionCallType = - ContextTyping::CheckContextTyping::check/2; +cached +TupleField resolveTupleFieldExpr(FieldExpr fe, DerefChain derefChain) { + CachedStage::ref() and + exists(int i | + result = + getTupleFieldExprLookupType(fe, pragma[only_bind_into](i), derefChain) + .(StructType) + .getTypeItem() + .getTupleField(pragma[only_bind_into](i)) + ) +} -abstract private class Constructor extends Addressable { - final TypeParameter getTypeParameter(TypeParameterPosition ppos) { - typeParamMatchPosition(this.getTypeItem().getGenericParamList().getATypeParam(), result, ppos) +private module Input3 implements InputSig3 { + private import rust as Rust + private import codeql.rust.dataflow.internal.ModelsAsData + + predicate cacheRevRef() { + (implicitDerefChainBorrow(_, _, _) implies any()) + or + (exists(resolveCallTarget(_, _)) implies any()) + or + (exists(resolveStructFieldExpr(_, _)) implies any()) + or + (exists(resolveTupleFieldExpr(_, _)) implies any()) + or + (mayInvokeCallback(_, _) implies any()) } - abstract TypeItem getTypeItem(); + predicate inferTypeForDefaults = M3::inferType/2; - abstract TypeRepr getParameterTypeRepr(int pos); + class UnknownType = T::UnknownType; - Type getReturnType(TypePath path) { - result = TDataType(this.getTypeItem()) and - path.isEmpty() - or - result = TTypeParamTypeParameter(this.getTypeItem().getGenericParamList().getATypeParam()) and - path = TypePath::singleton(result) + class BoolType extends DataType { + BoolType() { this.getTypeItem() instanceof Builtins::Bool } } - Type getDeclaredType(FunctionPosition pos, TypePath path) { - result = this.getParameterType(pos.asPosition(), path) - or - pos.isReturn() and - result = this.getReturnType(path) - } + class AstNode = Rust::AstNode; - Type getParameterType(int pos, TypePath path) { - result = this.getParameterTypeRepr(pos).(TypeMention).getTypeAt(path) - } -} + final class Expr = ExprImpl; + + abstract private class ExprImpl extends AstNode { } -private class StructConstructor extends Constructor instanceof Struct { - override TypeItem getTypeItem() { result = this } + private class ExprExpr extends ExprImpl, Rust::Expr { } - override TypeRepr getParameterTypeRepr(int i) { - result = [super.getTupleField(i).getTypeRepr(), super.getNthStructField(i).getTypeRepr()] + private class ArgListExpr extends ExprImpl, ArgList { } + + class Cast extends Expr, CastExpr { + TypeMention getType() { result = this.getTypeRepr() } } -} -private class VariantConstructor extends Constructor instanceof Variant { - override TypeItem getTypeItem() { result = super.getEnum() } + class Switch extends Rust::MatchExpr { + Expr getExpr() { result = this.getScrutinee() } - override TypeRepr getParameterTypeRepr(int i) { - result = [super.getTupleField(i).getTypeRepr(), super.getNthStructField(i).getTypeRepr()] + Case getCase(int index) { result = this.getArm(index) } } -} -/** - * A matching configuration for resolving types of constructions of enums and - * structs, such as `Result::Ok(42)`, `Foo { bar: 1 }` and `None`. - */ -private module ConstructionMatchingInput implements MatchingInputSig { - import FunctionPositionMatchingInput + class Case extends Rust::MatchArm { + AstNode getAPattern() { result = this.getPat() } - class Declaration = Constructor; + AstNode getBody() { result = this.getExpr() } + } - abstract class Access extends AstNode { - abstract Type getInferredType(FunctionPosition pos, TypePath path); + class ConditionalExpr extends Expr instanceof IfExpr { + Expr getCondition() { result = super.getCondition() } - abstract Declaration getTarget(); + Expr getThen() { result = super.getThen() } - abstract AstNode getNodeAt(AccessPosition apos); + Expr getElse() { result = super.getElse() } + } - abstract Type getTypeArgument(TypeArgumentPosition apos, TypePath path); + class BinaryExpr extends Expr, Rust::BinaryExpr { + Expr getLeftOperand() { result = super.getLhs() } - /** - * Holds if the return type of this construction expression at `path` may - * have to be inferred from the context. For example in `Result::Ok(42)` the - * error type has to be inferred from the context. - */ - pragma[nomagic] - predicate hasUnknownTypeAt(FunctionPosition pos, TypePath path) { - exists(Declaration d, TypeParameter tp | - d = this.getTarget() and - pos.isReturn() and - tp = d.getReturnType(path) and - not exists(FunctionPosition pos2 | not pos2.isReturn() and tp = d.getDeclaredType(pos2, _)) and - // check that no explicit type arguments have been supplied for `tp` - not exists(TypeArgumentPosition tapos | - exists(this.getTypeArgument(tapos, _)) and - TTypeParamTypeParameter(tapos.asTypeParam()) = tp - ) - ) - } + Expr getRightOperand() { result = super.getRhs() } } - private class NonAssocCallAccess extends Access, NonAssocCallExpr, - ContextTyping::ContextTypedCallCand - { - NonAssocCallAccess() { - this instanceof CallExprImpl::TupleStructExpr or - this instanceof CallExprImpl::TupleVariantExpr - } + class LogicalAndExpr extends BinaryExpr, Rust::LogicalAndExpr { } - override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - result = NonAssocCallExpr.super.getTypeArgument(apos, path) - } + class LogicalOrExpr extends BinaryExpr, Rust::LogicalOrExpr { } - override AstNode getNodeAt(AccessPosition apos) { - result = NonAssocCallExpr.super.getNodeAt(apos) - } + final class Assignment = AssignmentImpl; - override Type getInferredType(FunctionPosition pos, TypePath path) { - result = NonAssocCallExpr.super.getInferredType(pos, path) - } + abstract private class AssignmentImpl extends BinaryExpr { } + + class AssignExpr extends AssignmentImpl, Rust::AssignmentExpr { } - override Declaration getTarget() { result = this.resolveCallTargetViaPathResolution() } + class ParenExpr extends Expr instanceof Rust::ParenExpr { + Expr getExpr() { result = super.getExpr() } } - abstract private class StructAccess extends Access instanceof PathAstNode { - pragma[nomagic] - override Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) - } + final class Declaration = DeclarationImpl; - pragma[nomagic] - override Declaration getTarget() { result = resolvePath(super.getPath()) } + abstract private class DeclarationImpl extends AstNode { + abstract TypeMention getDeclaringType(); - pragma[nomagic] - override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - // Handle constructions that use `Self {...}` syntax - exists(TypeMention tm, TypePath path0 | - tm = super.getPath() and - result = tm.getTypeAt(path0) and - path0.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) - ) - } + abstract TypeMention getType(); } - private class StructExprAccess extends StructAccess, StructExpr { - override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - result = super.getTypeArgument(apos, path) - or - exists(TypePath suffix | - suffix.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) and - result = CertainTypeInference::inferCertainType(this, suffix) - ) + private newtype TVariable = + TVariableVariable(Rust::Variable v) or + TConstVariable(Const c) or + TStaticVariable(Static s) + + class Variable extends TVariable { + Rust::Variable asLocalVariable() { this = TVariableVariable(result) } + + Const asConst() { this = TConstVariable(result) } + + Static asStatic() { this = TStaticVariable(result) } + + AstNode getDefiningNode() { + result = this.asLocalVariable().getPat().getName() or + result = this.asLocalVariable().getParameter().(SelfParam) or + result = this.asConst().getName() or + result = this.asStatic().getName() } - override AstNode getNodeAt(AccessPosition apos) { - result = - this.getFieldExpr(pragma[only_bind_into](this.getNthStructField(apos.asPosition()) - .getName() - .getText())).getExpr() + Expr getAnAccess() { + result = this.asLocalVariable().getAnAccess() + or + result = this.asConst().getAnAccess() or - result = this and apos.isReturn() + result = this.asStatic().getAnAccess() } + + string toString() { result = this.getDefiningNode().toString() } + + Location getLocation() { result = this.getDefiningNode().getLocation() } } - /** A potential nullary struct/variant construction such as `None`. */ - private class PathExprAccess extends StructAccess, PathExpr { - PathExprAccess() { not exists(CallExpr ce | this = ce.getFunction()) } + final class VariableDeclaration = VariableDeclarationImpl; + + abstract private class VariableDeclarationImpl extends DeclarationImpl { + abstract predicate preservesInitializerType(); - override AstNode getNodeAt(AccessPosition apos) { result = this and apos.isReturn() } + abstract AstNode getPattern(); + + abstract AstNode getInitializer(); + + override TypeMention getDeclaringType() { none() } } -} -private module ConstructionMatching = Matching; + private class LetExprDeclaration extends VariableDeclarationImpl instanceof LetExpr { + override predicate preservesInitializerType() { super.getPat() instanceof IdentPat } -pragma[nomagic] -private Type inferConstructionTypePreCheck( - AstNode n, ContextTyping::FunctionPositionKind kind, TypePath path -) { - exists(ConstructionMatchingInput::Access a, FunctionPosition pos | - n = a.getNodeAt(pos) and - if pos.isPosition() - then kind = ContextTyping::PositionalKind() - else kind = ContextTyping::ReturnKind() - | - result = ConstructionMatching::inferAccessType(a, pos, path) - or - a.hasUnknownTypeAt(pos, path) and - result = TUnknownType() - ) -} + override TypeMention getType() { none() } -private predicate inferConstructionType = - ContextTyping::CheckContextTyping::check/2; + override AstNode getPattern() { result = super.getPat() } -/** - * A matching configuration for resolving types of operations like `a + b`. - */ -private module OperationMatchingInput implements MatchingInputSig { - private import codeql.rust.elements.internal.OperationImpl::Impl as OperationImpl - import FunctionPositionMatchingInput + override AstNode getInitializer() { result = super.getScrutinee() } + } - class Declaration extends FunctionCallMatchingInput::Declaration { - private Method getSelfOrImpl() { - result = f - or - f.implements(result) + private class LetStmtDeclaration extends VariableDeclarationImpl instanceof LetStmt { + override predicate preservesInitializerType() { + not super.hasTypeRepr() and + // Due to "binding modes" the type of the pattern is not necessarily the + // same as the type of the initializer. However, when the pattern is an + // identifier pattern, its type is guaranteed to be the same as the type of the + // initializer. + super.getPat() instanceof IdentPat } - pragma[nomagic] - private predicate borrowsAt(FunctionPosition pos) { - exists(TraitItemNode t, string path, string method | - this.getSelfOrImpl() = t.getAssocItem(method) and - path = t.getCanonicalPath(_) and - exists(int borrows | OperationImpl::isOverloaded(_, _, path, method, borrows) | - pos.asPosition() = 0 and borrows >= 1 - or - pos.asPosition() = 1 and - borrows >= 2 - ) - ) - } + override TypeMention getType() { result = super.getTypeRepr() } - pragma[nomagic] - private predicate derefsReturn() { this.getSelfOrImpl() = any(DerefTrait t).getDerefFunction() } + override AstNode getPattern() { result = super.getPat() } - Type getDeclaredType(FunctionPosition pos, TypePath path) { - exists(TypePath path0 | - result = super.getDeclaredType(pos, path0) and - if - this.borrowsAt(pos) - or - pos.isReturn() and this.derefsReturn() - then path0.isCons(getRefTypeParameter(_), path) - else path0 = path - ) - } + override AstNode getInitializer() { result = LetStmt.super.getInitializer() } } - class Access extends AssocFunctionResolution::OperationAssocFunctionCall { - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } + private class ConstDeclaration extends VariableDeclarationImpl instanceof Const { + override predicate preservesInitializerType() { none() } - pragma[nomagic] - Type getInferredType(FunctionPosition pos, TypePath path) { - result = inferType(this.getNodeAt(pos), path) - } + override TypeMention getType() { result = super.getTypeRepr() } - Declaration getTarget() { - exists(ImplOrTraitItemNode i | - result.isAssocFunction(i, this.resolveCallTarget(i, _, _, _)) // mutual recursion - ) - } + override AstNode getPattern() { result = super.getName() } + + override AstNode getInitializer() { result = super.getBody() } } -} -private module OperationMatching = Matching; + private class StaticDeclaration extends VariableDeclarationImpl instanceof Static { + override predicate preservesInitializerType() { none() } -pragma[nomagic] -private Type inferOperationTypePreCheck( - AstNode n, ContextTyping::FunctionPositionKind kind, TypePath path -) { - exists(OperationMatchingInput::Access a, FunctionPosition pos | - n = a.getNodeAt(pos) and - result = OperationMatching::inferAccessType(a, pos, path) and - if pos.asPosition() = 0 - then kind = ContextTyping::SelfKind() - else - if pos.isPosition() - then kind = ContextTyping::PositionalKind() - else kind = ContextTyping::ReturnKind() - ) -} + override TypeMention getType() { result = super.getTypeRepr() } -private predicate inferOperationType = - ContextTyping::CheckContextTyping::check/2; + override AstNode getPattern() { result = super.getName() } -pragma[nomagic] -private Type getFieldExprLookupType(FieldExpr fe, string name, DerefChain derefChain) { - exists(TypePath path | - result = inferType(fe.getContainer(), path) and - name = fe.getIdentifier().getText() and - isComplexRootStripped(path, result) - | - // TODO: Support full derefence chains as for method calls - path.isEmpty() and - derefChain = DerefChain::nil() - or - exists(DerefImplItemNode impl, TypeParamTypeParameter tp | - tp = impl.getFirstSelfTypeParameter() and - path.getHead() = tp and - derefChain = DerefChain::singleton(impl) - ) - ) -} + override AstNode getInitializer() { result = super.getBody() } + } -pragma[nomagic] -private Type getTupleFieldExprLookupType(FieldExpr fe, int pos, DerefChain derefChain) { - exists(string name | - result = getFieldExprLookupType(fe, name, derefChain) and - pos = name.toInt() - ) -} + final class Field = FieldImpl; -/** - * A matching configuration for resolving types of field expressions like `x.field`. - */ -private module FieldExprMatchingInput implements MatchingInputSig { - private newtype TDeclarationPosition = - TSelfDeclarationPosition() or - TFieldPos() + abstract private class FieldImpl extends DeclarationImpl { + // no case for variants as those can only be destructured using pattern matching + abstract Struct getStruct(); - class DeclarationPosition extends TDeclarationPosition { - predicate isSelf() { this = TSelfDeclarationPosition() } + override TypeMention getDeclaringType() { result = this.getStruct() } + } - predicate isField() { this = TFieldPos() } + private class StructFieldDecl extends FieldImpl instanceof StructField { + override Struct getStruct() { this = result.getAStructField() } - string toString() { - this.isSelf() and - result = "self" - or - this.isField() and - result = "(field)" - } + override TypeMention getType() { result = StructField.super.getTypeRepr() } } - private newtype TDeclaration = - TStructFieldDecl(StructField sf) or - TTupleFieldDecl(TupleField tf) + private class TupleFieldDecl extends FieldImpl instanceof TupleField { + override Struct getStruct() { this = result.getATupleField() } - abstract class Declaration extends TDeclaration { - TypeParameter getTypeParameter(TypeParameterPosition ppos) { none() } + override TypeMention getType() { result = TupleField.super.getTypeRepr() } + } - abstract Type getDeclaredType(DeclarationPosition dpos, TypePath path); + class FieldAccess extends Expr, FieldExpr { + Expr getReceiver() { result = this.getContainer() } - abstract string toString(); + Field getField() { + // mutual recursion; resolving fields requires resolving types and vice versa + result = + [ + resolveStructFieldExpr(this, _).(AstNode), + resolveTupleFieldExpr(this, _) + ] + } + } - abstract Location getLocation(); + Type inferFieldAccessReceiverType(FieldAccess fa, TypePath path) { + exists(TypePath path0 | result = inferType(fa.getReceiver(), path0) | + // adjust for implicit deref + path0.isCons(getRefTypeParameter(_), path) + or + not path0.isCons(getRefTypeParameter(_), _) and + not (result instanceof RefType and path0.isEmpty()) and + path = path0 + ) } - abstract private class StructOrTupleFieldDecl extends Declaration { - abstract AstNode getAstNode(); + Type inferFieldAccessReceiverTypeContextual(Expr receiver, TypePath path) { + exists(TypePath path0, Type receiverType | + result = M3::inferFieldAccessReceiverTypeContextualDefault(_, receiver, path0) and + receiverType = inferType(receiver) and + not path0.isEmpty() + | + // adjust for implicit deref + path = TypePath::cons(receiverType.(RefType).getPositionalTypeParameter(0), path0) + or + not receiverType instanceof RefType and + path = path0 + ) + } - abstract TypeRepr getTypeRepr(); + class Return extends ReturnExpr { + Expr getExpr() { result = super.getExpr() } + } - override Type getDeclaredType(DeclarationPosition dpos, TypePath path) { - dpos.isSelf() and - // no case for variants as those can only be destructured using pattern matching - exists(Struct s | this.getAstNode() = [s.getStructField(_).(AstNode), s.getTupleField(_)] | - result = TDataType(s) and - path.isEmpty() - or - result = TTypeParamTypeParameter(s.getGenericParamList().getATypeParam()) and - path = TypePath::singleton(result) - ) - or - dpos.isField() and - result = this.getTypeRepr().(TypeMention).getTypeAt(path) - } + final class Parameter = ParameterImpl; - override string toString() { result = this.getAstNode().toString() } + abstract private class ParameterImpl extends VariableDeclarationImpl { + override predicate preservesInitializerType() { none() } // doesn't really matter, since there are no initializers/default values - override Location getLocation() { result = this.getAstNode().getLocation() } + override AstNode getInitializer() { none() } } - private class StructFieldDecl extends StructOrTupleFieldDecl, TStructFieldDecl { - private StructField sf; + private class SelfParamParameter extends ParameterImpl, SelfParam { + override AstNode getPattern() { result = this } - StructFieldDecl() { this = TStructFieldDecl(sf) } + override TypeMention getType() { result = getSelfParamTypeMention(this) } + } - override AstNode getAstNode() { result = sf } + private class ParamParameter extends ParameterImpl, Param { + override AstNode getPattern() { result = this.getPat() } - override TypeRepr getTypeRepr() { result = sf.getTypeRepr() } + override TypeMention getType() { result = this.getTypeRepr() } } - private class TupleFieldDecl extends StructOrTupleFieldDecl, TTupleFieldDecl { - private TupleField tf; + private class TupleFieldParameter extends ParameterImpl instanceof TupleField { + override AstNode getPattern() { none() } - TupleFieldDecl() { this = TTupleFieldDecl(tf) } + override TypeMention getType() { result = super.getTypeRepr() } + } - override AstNode getAstNode() { result = tf } + private class StructFieldParameter extends ParameterImpl instanceof StructField { + override AstNode getPattern() { none() } - override TypeRepr getTypeRepr() { result = tf.getTypeRepr() } + override TypeMention getType() { result = super.getTypeRepr() } } - class AccessPosition = DeclarationPosition; + final class Callable = CallableImpl; - class Access extends FieldExpr { - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } + abstract private class CallableImpl extends DeclarationImpl { + abstract TypeParameter getTypeParameter(int pos); - AstNode getNodeAt(AccessPosition apos) { - result = this.getContainer() and - apos.isSelf() - or - result = this and - apos.isField() - } + abstract TypeMention getAdditionalTypeParameterConstraint(TypeParameter tp); - Type getInferredType(AccessPosition apos, TypePath path) { - exists(TypePath path0 | result = inferType(this.getNodeAt(apos), path0) | - if apos.isSelf() - then - // adjust for implicit deref - path0.isCons(getRefTypeParameter(_), path) - or - not path0.isCons(getRefTypeParameter(_), _) and - not (result instanceof RefType and path0.isEmpty()) and - path = path0 - else path = path0 + abstract Parameter getParameter(int i); + + abstract AstNode getBody(); + } + + private class CallableCallable extends CallableImpl instanceof Rust::Callable { + override TypeMention getDeclaringType() { + exists(ImplOrTraitItemNode implOrTrait | this = implOrTrait.getAnAssocItem() | + result = implOrTrait.(Impl).getSelfTy() or + result = implOrTrait.(Trait) ) } - Declaration getTarget() { - // mutual recursion; resolving fields requires resolving types and vice versa + override TypeParameter getTypeParameter(int pos) { + result = TTypeParamTypeParameter(this.(Function).getGenericParamList().getTypeParam(pos)) + } + + override TypeMention getAdditionalTypeParameterConstraint(TypeParameter tp) { result = - [ - TStructFieldDecl(resolveStructFieldExpr(this, _)).(TDeclaration), - TTupleFieldDecl(resolveTupleFieldExpr(this, _)) - ] + tp.(TypeParamTypeParameter).getTypeParam().getAdditionalTypeBound(this, _).getTypeRepr() + } + + override Parameter getParameter(int i) { + i = 0 and + result = super.getSelfParam() + or + exists(int pos | result = super.getParam(pos) | + if this instanceof Method then i = pos + 1 else i = pos + ) } - } - predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { - apos = dpos + override TypeMention getType() { result = getReturnTypeMention(this) } + + override AstNode getBody() { result = Rust::Callable.super.getBody() } } -} -private module FieldExprMatching = Matching; + Callable getEnclosingCallable(AstNode node) { result = node.getEnclosingCallable() } -/** - * Gets the type of `n` at `path`, where `n` is either a field expression or - * the receiver of field expression call. - */ -pragma[nomagic] -private Type inferFieldExprType(AstNode n, TypePath path) { - exists( - FieldExprMatchingInput::Access a, FieldExprMatchingInput::AccessPosition apos, TypePath path0 - | - n = a.getNodeAt(apos) and - result = FieldExprMatching::inferAccessType(a, apos, path0) - | - if apos.isSelf() - then - exists(Type receiverType | receiverType = inferType(n) | - if receiverType instanceof RefType - then - // adjust for implicit deref - not path0.isCons(getRefTypeParameter(_), _) and - not (path0.isEmpty() and result instanceof RefType) and - path = TypePath::cons(getRefTypeParameter(_), path0) - else path = path0 - ) - else path = path0 - ) -} + additional final class Constructor = ConstructorImpl; + + abstract private class ConstructorImpl extends CallableImpl { + abstract TypeItem getTypeItem(); -/** Gets the root type of the reference expression `ref`. */ -pragma[nomagic] -private Type inferRefExprType(RefExpr ref) { - if ref.isRaw() - then - ref.isMut() and result instanceof PtrMutType - or - ref.isConst() and result instanceof PtrConstType - else - if ref.isMut() - then result instanceof RefMutType - else result instanceof RefSharedType -} + override TypeMention getDeclaringType() { result = this.getTypeItem() } -/** Gets the root type of the reference node `ref`. */ -pragma[nomagic] -private Type inferRefPatType(AstNode ref) { - exists(boolean isMut | - ref = - any(IdentPat ip | - ip.isRef() and - if ip.isMut() then isMut = true else isMut = false - ).getName() - or - ref = any(RefPat rp | if rp.isMut() then isMut = true else isMut = false) - | - result = getRefType(isMut) - ) -} + override TypeMention getAdditionalTypeParameterConstraint(TypeParameter tp) { none() } -pragma[nomagic] -private Type inferTryExprType(TryExpr te, TypePath path) { - exists(TypeParam tp, TypePath path0 | - result = inferType(te.getExpr(), path0) and - path0.isCons(TTypeParamTypeParameter(tp), path) - | - tp = any(ResultEnum r).getGenericParamList().getGenericParam(0) - or - tp = any(OptionEnum o).getGenericParamList().getGenericParam(0) - ) -} + override TypeParameter getTypeParameter(int pos) { + result = TTypeParamTypeParameter(this.getTypeItem().getGenericParamList().getTypeParam(pos)) + } -pragma[nomagic] -private StructType getStrStruct() { result = TDataType(any(Builtins::Str s)) } + override TypeMention getType() { result = this.getTypeItem() } -pragma[nomagic] -private Type inferLiteralType(LiteralExpr le, TypePath path, boolean certain) { - path.isEmpty() and - exists(Builtins::BuiltinType t | result = TDataType(t) | - le instanceof CharLiteralExpr and - t instanceof Builtins::Char and - certain = true + override AstNode getBody() { none() } + } + + private class StructConstructor extends ConstructorImpl instanceof Struct { + override TypeItem getTypeItem() { result = this } + + override Parameter getParameter(int i) { + result = [super.getTupleField(i).(AstNode), super.getNthStructField(i)] + } + } + + private class VariantConstructor extends ConstructorImpl instanceof Variant { + override TypeItem getTypeItem() { result = super.getEnum() } + + override Parameter getParameter(int i) { + result = [super.getTupleField(i).(AstNode), super.getNthStructField(i)] + } + } + + Type getCallableReturnType(Callable c, TypePath path) { + result = c.(Constructor).getType().getTypeAt(path) or - le = - any(NumberLiteralExpr ne | - t.getName() = ne.getSuffix() and - certain = true - or - // When a number literal has no suffix, the type may depend on the context. - // For simplicity, we assume either `i32` or `f64`. - not exists(ne.getSuffix()) and - certain = false and - ( - ne instanceof IntegerLiteralExpr and - t instanceof Builtins::I32 - or - ne instanceof FloatLiteralExpr and - t instanceof Builtins::F64 - ) + if c.(Function).isAsync() or c.(ClosureExpr).isAsync() + then + path.isEmpty() and + result = getFutureTraitType() + or + exists(TypePath suffix | + result = getReturnTypeMention(c).getTypeAt(suffix) and + path = TypePath::cons(getDynFutureOutputTypeParameter(), suffix) ) - or - le instanceof BooleanLiteralExpr and - t instanceof Builtins::Bool and - certain = true - ) - or - le instanceof StringLiteralExpr and - ( - path.isEmpty() and result instanceof RefSharedType - or - path = TypePath::singleton(getRefTypeParameter(false)) and - result = getStrStruct() - ) and - certain = true -} + else result = getReturnTypeMention(c).getTypeAt(path) + } -pragma[nomagic] -private DynTraitType getFutureTraitType() { result.getTrait() instanceof FutureTrait } + class InvocationResolutionContext = string; -pragma[nomagic] -private AssociatedTypeTypeParameter getFutureOutputTypeParameter() { - result = getAssociatedTypeTypeParameter(any(FutureTrait ft).getOutputType()) -} + bindingset[derefChain, borrow] + private InvocationResolutionContext encodeDerefChainBorrow( + DerefChain derefChain, BorrowKind borrow + ) { + result = derefChain + ";" + borrow + } -pragma[nomagic] -private DynTraitTypeParameter getDynFutureOutputTypeParameter() { - result.getTraitTypeParameter() = getFutureOutputTypeParameter() -} + bindingset[derefChainBorrow] + private predicate decodeDerefChainBorrow( + string derefChainBorrow, DerefChain derefChain, BorrowKind borrow + ) { + exists(int i | + i = derefChainBorrow.indexOf(";") and + derefChain = derefChainBorrow.prefix(i) and + borrow.toString() = derefChainBorrow.suffix(i + 1) + ) + } -pragma[nomagic] -predicate isUnitBlockExpr(BlockExpr be) { - not be.getStmtList().hasTailExpr() and - not be = any(Callable c).getBody() and - not be.hasLabel() -} + private string noDerefChainBorrow() { + exists(DerefChain derefChain, BorrowKind borrow | + derefChain.isEmpty() and + borrow.isNoBorrow() and + result = encodeDerefChainBorrow(derefChain, borrow) + ) + } -pragma[nomagic] -private Type inferBlockExprType(BlockExpr be, TypePath path) { - // `typeEquality` handles the non-root case - if be instanceof AsyncBlockExpr - then ( - path.isEmpty() and - result = getFutureTraitType() - or - isUnitBlockExpr(be) and - path = TypePath::singleton(getDynFutureOutputTypeParameter()) and - result instanceof UnitType - ) else ( - isUnitBlockExpr(be) and - path.isEmpty() and - result instanceof UnitType - ) -} + final class Invocation = InvocationImpl; -pragma[nomagic] -private predicate exprHasUnitType(Expr e) { - e = any(IfExpr ie | not ie.hasElse()) - or - e instanceof WhileExpr - or - e instanceof ForExpr -} + abstract private class InvocationImpl extends Expr { + abstract Type getTypeQualifier(TypePath path); -final private class AwaitTarget extends Expr { - AwaitTarget() { this = any(AwaitExpr ae).getExpr() } + abstract Type getTypeArgument(int pos, TypePath path); - Type getTypeAt(TypePath path) { result = inferType(this, path) } -} + abstract Expr getArgument(int i); + + abstract Callable getTarget(string derefChainBorrow); + + abstract Callable getATargetForTypeQualifierMatching(); + } -private module AwaitSatisfiesTypeInput implements SatisfiesTypeInputSig { pragma[nomagic] - predicate relevantConstraint(AwaitTarget term, Type constraint) { - exists(term) and - constraint.(TraitType).getTrait() instanceof FutureTrait + private Type getCallExprTypeArgument(CallExpr ce, int pos, TypePath path) { + exists(Path p | + p = CallExprImpl::getFunctionPath(ce) and + result = getPathTypeArgument(p, pos).getTypeAt(path) + ) } -} -private module AwaitSatisfiesType = SatisfiesType; + private class AssocFunctionCall extends InvocationImpl instanceof AssocFunctionResolution::AssocFunctionCall + { + override Type getTypeQualifier(TypePath path) { + result = getCallExprTypeQualifier(this, path, _) + } -pragma[nomagic] -private Type inferAwaitExprType(AstNode n, TypePath path) { - exists(TypePath exprPath | - AwaitSatisfiesType::satisfiesConstraint(n.(AwaitExpr).getExpr(), _, exprPath, result) and - exprPath.isCons(getFutureOutputTypeParameter(), path) - ) -} + pragma[nomagic] + override Type getTypeArgument(int pos, TypePath path) { + result = getCallExprTypeArgument(this, pos, path) + or + result = + this.(MethodCallExpr).getGenericArgList().getTypeArg(pos).(TypeMention).getTypeAt(path) + } -/** - * Gets the root type of the array expression `ae`. - */ -pragma[nomagic] -private Type inferArrayExprType(ArrayExpr ae) { exists(ae) and result instanceof ArrayType } + override Expr getArgument(int i) { + exists(FunctionPosition pos | + i = pos.asPosition() and + result = super.getNodeAt(pos) + ) + } -/** - * Gets the root type of the range expression `re`. - */ -pragma[nomagic] -private Type inferRangeExprType(RangeExpr re) { result = TDataType(getRangeType(re)) } + pragma[nomagic] + Type getInferredSelfType(int pos, string derefChainBorrow, TypePath path) { + exists(FunctionPosition fpos, DerefChain derefChain, BorrowKind borrow | + result = super.getSelfTypeAt(fpos, derefChain, borrow, path) and + derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and + super.hasReceiverAtPos(fpos) and + pos = fpos.asPosition() + ) + } -pragma[nomagic] -private Type getInferredDerefType(DerefExpr de, TypePath path) { result = inferType(de, path) } + pragma[nomagic] + Type getInferredNonSelfType(int pos, TypePath path) { + exists(FunctionPosition fpos | + not super.hasReceiverAtPos(fpos) and + result = super.getTypeAt(fpos, path) and + pos = fpos.asPosition() + ) + } -pragma[nomagic] -private PtrType getInferredDerefExprPtrType(DerefExpr de) { result = inferType(de.getExpr()) } + override Callable getTarget(string derefChainBorrow) { + exists(DerefChain derefChain, BorrowKind borrow | + derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and + result = super.resolveCallTarget(_, _, derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa + ) + } -/** - * Gets the inferred type of `n` at `path` when `n` occurs in a dereference - * expression `*n` and when `n` is known to have a raw pointer type. - * - * The other direction is handled in `typeEqualityAsymmetric`. - */ -private Type inferDereferencedExprPtrType(AstNode n, TypePath path) { - exists(DerefExpr de, PtrType type, TypePath suffix | - de.getExpr() = n and - type = getInferredDerefExprPtrType(de) and - result = getInferredDerefType(de, suffix) and - path = TypePath::cons(type.getPositionalTypeParameter(0), suffix) - ) -} + override Callable getATargetForTypeQualifierMatching() { + result = CallExprImpl::getResolvedFunction(this) + } + } -/** - * A matching configuration for resolving types of deconstruction patterns like - * `let Foo { bar } = ...` or `let Some(x) = ...`. - */ -private module DeconstructionPatMatchingInput implements MatchingInputSig { - import FunctionPositionMatchingInput + private class NonAssocFunctionCall extends InvocationImpl instanceof NonAssocCallExpr, + CallExprImpl::CallExprCall + { + override Type getTypeQualifier(TypePath path) { none() } - class Declaration = ConstructionMatchingInput::Declaration; + pragma[nomagic] + override Type getTypeArgument(int pos, TypePath path) { + result = getCallExprTypeArgument(this, pos, path) + } - class Access extends Pat instanceof PathAstNode { - Access() { this instanceof TupleStructPat or this instanceof StructPat } + override Expr getArgument(int i) { result = NonAssocCallExpr.super.getArgument(i) } - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } + pragma[nomagic] + private Callable getTarget() { result = super.resolveCallTargetViaPathResolution() } - AstNode getNodeAt(AccessPosition apos) { - this = - any(StructPat sp | - result = - sp.getPatField(pragma[only_bind_into](sp.getNthStructField(apos.asPosition()) - .getName() - .getText())).getPat() - ) - or - result = this.(TupleStructPat).getField(apos.asPosition()) - or - result = this and - apos.isReturn() + override Callable getTarget(string derefChainBorrow) { + result = this.getTarget() and + derefChainBorrow = noDerefChainBorrow() } - Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) - or - // The struct/enum type is supplied explicitly as a type qualifier, e.g. - // `let Foo::::Variant { ... } = ...` or - // `let Option::::Some(x) = ...`. - apos.isReturn() and - result = super.getPath().(TypeMention).getTypeAt(path) + override Callable getATargetForTypeQualifierMatching() { + none() // non-assoc function calls cannot have type qualifiers } - - Declaration getTarget() { result = resolvePath(super.getPath()) } } -} -private module DeconstructionPatMatching = Matching; + abstract private class Construction extends InvocationImpl { + abstract Constructor getTarget(); -/** - * Gets the type of `n` at `path`, where `n` is a pattern for a constructor, - * either a struct pattern or a tuple-struct pattern. - */ -pragma[nomagic] -private Type inferDeconstructionPatType(AstNode n, TypePath path) { - exists(DeconstructionPatMatchingInput::Access a, FunctionPosition apos | - n = a.getNodeAt(apos) and - result = DeconstructionPatMatching::inferAccessType(a, apos, path) - ) -} + override Callable getTarget(string derefChainBorrow) { + result = this.getTarget() and + derefChainBorrow = noDerefChainBorrow() + } + + override Callable getATargetForTypeQualifierMatching() { result = this.getTarget() } + } + + private class NonAssocCallConstruction extends Construction instanceof NonAssocCallExpr { + NonAssocCallConstruction() { + this instanceof CallExprImpl::TupleStructExpr or + this instanceof CallExprImpl::TupleVariantExpr + } -final private class ForIterableExpr extends Expr { - ForIterableExpr() { this = any(ForExpr fe).getIterable() } + override Type getTypeQualifier(TypePath path) { + result = CallExprImpl::getFunctionPath(this).(TypeMention).getTypeAt(path) + } - Type getTypeAt(TypePath path) { result = inferType(this, path) } -} + override Type getTypeArgument(int pos, TypePath path) { none() } -private module ForIterableSatisfiesTypeInput implements SatisfiesTypeInputSig { - predicate relevantConstraint(ForIterableExpr term, Type constraint) { - exists(term) and - exists(Trait t | t = constraint.(TraitType).getTrait() | - // TODO: Remove the line below once we can handle the `impl IntoIterator for I` implementation - t instanceof IteratorTrait or - t instanceof IntoIteratorTrait - ) + override Expr getArgument(int i) { result = NonAssocCallExpr.super.getArgument(i) } + + override Constructor getTarget() { result = super.resolveCallTargetViaPathResolution() } } -} -pragma[nomagic] -private AssociatedTypeTypeParameter getIteratorItemTypeParameter() { - result = getAssociatedTypeTypeParameter(any(IteratorTrait t).getItemType()) -} + abstract private class StructConstruction extends Construction instanceof PathAstNode { + pragma[nomagic] + override Constructor getTarget() { result = resolvePath(super.getPath()) } -pragma[nomagic] -private AssociatedTypeTypeParameter getIntoIteratorItemTypeParameter() { - result = getAssociatedTypeTypeParameter(any(IntoIteratorTrait t).getItemType()) -} + override Type getTypeQualifier(TypePath path) { + result = super.getPath().(TypeMention).getTypeAt(path) + } -private module ForIterableSatisfiesType = - SatisfiesType; + pragma[nomagic] + override Type getTypeArgument(int pos, TypePath path) { none() } + } -pragma[nomagic] -private Type inferForLoopExprType(AstNode n, TypePath path) { - // type of iterable -> type of pattern (loop variable) - exists(ForExpr fe, TypePath exprPath, AssociatedTypeTypeParameter tp | - n = fe.getPat() and - ForIterableSatisfiesType::satisfiesConstraint(fe.getIterable(), _, exprPath, result) and - exprPath.isCons(tp, path) - | - tp = getIntoIteratorItemTypeParameter() - or - // TODO: Remove once we can handle the `impl IntoIterator for I` implementation - tp = getIteratorItemTypeParameter() and - inferType(fe.getIterable()) != getArrayTypeParameter() - ) -} + private class StructExprConstruction extends StructConstruction, StructExpr { + override Expr getArgument(int i) { + result = + this.getFieldExpr(pragma[only_bind_into](this.getNthStructField(i).getName().getText())) + .getExpr() + } + } -pragma[nomagic] -private Type inferClosureExprType(AstNode n, TypePath path) { - exists(ClosureExpr ce | - n = ce and - ( - path = TypePath::singleton(TDynTraitTypeParameter(_, any(FnTrait t).getTypeParam())) and - result.(TupleType).getArity() = ce.getNumberOfParams() - or - exists(TypePath path0 | - result = ce.getRetType().getTypeRepr().(TypeMention).getTypeAt(path0) and - path = closureReturnPath().append(path0) - ) - ) - or - exists(Param p | - p = ce.getAParam() and - not p.hasTypeRepr() and - n = p.getPat() and - result = TUnknownType() and - path.isEmpty() - ) - ) -} + /** A potential nullary struct/variant construction such as `None`. */ + private class PathExprConstruction extends StructConstruction, PathExpr { + PathExprConstruction() { not exists(CallExpr ce | this = ce.getFunction()) } -pragma[nomagic] -private TupleType inferArgList(ArgList args, TypePath path) { - exists(CallExprImpl::DynamicCallExpr dce | - args = dce.getArgList() and - result.getArity() = dce.getNumberOfSyntacticArguments() and - path.isEmpty() - ) -} + override Expr getArgument(int i) { none() } + } -pragma[nomagic] -private Type inferCastExprType(CastExpr ce, TypePath path) { - result = ce.getTypeRepr().(TypeMention).getTypeAt(path) -} + pragma[nomagic] + private Type inferNonAssocFunctionCallArgumentType(Invocation invocation, int pos, TypePath path) { + not invocation instanceof AssocFunctionCall and + result = inferType(invocation.getArgument(pos), path) + } -cached -private module Cached { - /** Holds if `n` is implicitly dereferenced and/or borrowed. */ - cached - predicate implicitDerefChainBorrow(Expr e, DerefChain derefChain, boolean borrow) { - exists(BorrowKind bk | - any(AssocFunctionResolution::AssocFunctionCall afc) - .argumentHasImplicitDerefChainBorrow(e, derefChain, bk) and - if bk.isNoBorrow() then borrow = false else borrow = true - ) + bindingset[derefChainBorrow] + Type inferInvocationArgumentType( + Invocation invocation, string derefChainBorrow, int pos, TypePath path + ) { + result = inferNonAssocFunctionCallArgumentType(invocation, pos, path) or - e = - any(FieldExpr fe | - exists(resolveStructFieldExpr(fe, derefChain)) + invocation = + any(AssocFunctionCall afc | + result = afc.getInferredSelfType(pos, derefChainBorrow, path) or - exists(resolveTupleFieldExpr(fe, derefChain)) - ).getContainer() and - not derefChain.isEmpty() and - borrow = false + result = afc.getInferredNonSelfType(pos, path) + ) + } + + pragma[nomagic] + private Type inferInvocationArgumentTypeContextualDefault( + Invocation invocation, int pos, Expr arg, DerefChain derefChain, BorrowKind borrow, + TypePath path + ) { + exists(string derefChainBorrow | + decodeDerefChainBorrow(derefChainBorrow, derefChain, borrow) and + result = + M3::inferInvocationArgumentTypeContextualDefault(invocation, derefChainBorrow, pos, arg, + path) + ) } /** - * Gets an item (function or tuple struct/variant) that `call` resolves to, if - * any. + * Gets the type of `receiver` at `path` after applying `derefChain`, where + * `receiver` is the `self` argument of a method call. * - * The parameter `dispatch` is `true` if and only if the resolved target is a - * trait item because a precise target could not be determined from the - * types (for instance in the presence of generics or `dyn` types) + * The predicate recursively pops the head of `derefChain` until it becomes + * empty, at which point the inferred type can be applied back to `receiver`. */ - cached - Addressable resolveCallTarget(InvocationExpr call, boolean dispatch) { - dispatch = false and - result = call.(NonAssocCallExpr).resolveCallTargetViaPathResolution() - or - exists(ImplOrTraitItemNode i | - i instanceof TraitItemNode and dispatch = true + pragma[nomagic] + private Type inferInvocationSelfArgumentTypeContextual( + Invocation invocation, Expr receiver, DerefChain derefChain, TypePath path + ) { + exists(FunctionPosition pos, BorrowKind borrow, TypePath path0 | + invocation.(AssocFunctionResolution::AssocFunctionCall).hasReceiverAtPos(pos) and + result = + inferInvocationArgumentTypeContextualDefault(invocation, pos.asPosition(), receiver, + derefChain, borrow, path0) + | + borrow.isNoBorrow() and + path = path0 or - i instanceof ImplItemNode and dispatch = false + // adjust for implicit borrow + exists(TypePath prefix | + prefix = TypePath::singleton(borrow.getRefType().getPositionalTypeParameter(0)) and + path0 = prefix.appendInverse(path) + ) + ) + or + // adjust for implicit deref + exists( + DerefChain derefChain0, Type t0, TypePath path0, DerefImplItemNode impl, Type selfParamType, + TypePath selfPath + | + t0 = inferInvocationSelfArgumentTypeContextual(invocation, receiver, derefChain0, path0) and + derefChain0.isCons(impl, derefChain) and + selfParamType = impl.resolveSelfTypeAt(selfPath) | - result = call.(AssocFunctionResolution::AssocFunctionCall).resolveCallTarget(i, _, _, _) and - not call instanceof CallExprImpl::DynamicCallExpr and - not i instanceof Builtins::BuiltinImpl + result = selfParamType and + path = selfPath and + not result instanceof TypeParameter + or + exists(TypePath pathToTypeParam, TypePath suffix | + impl.targetHasTypeParameterAt(pathToTypeParam, selfParamType) and + path0 = pathToTypeParam.appendInverse(suffix) and + result = t0 and + path = selfPath.append(suffix) + ) ) } - /** - * Gets the struct field that the field expression `fe` resolves to, if any. - */ - cached - StructField resolveStructFieldExpr(FieldExpr fe, DerefChain derefChain) { - exists(string name, DataType ty | - ty = getFieldExprLookupType(fe, pragma[only_bind_into](name), derefChain) + Type inferInvocationArgumentTypeContextual(Expr arg, TypePath path) { + exists(Invocation invocation, FunctionPosition pos, TypePath path0 | + result = + inferInvocationArgumentTypeContextualDefault(invocation, pos.asPosition(), arg, _, _, path0) and + not invocation.(AssocFunctionResolution::AssocFunctionCall).hasReceiverAtPos(pos) + or + pos.asPosition() = 0 and + result = inferInvocationSelfArgumentTypeContextual(invocation, arg, DerefChain::nil(), path0) and + not path0.isEmpty() | - result = ty.(StructType).getTypeItem().getStructField(pragma[only_bind_into](name)) or - result = ty.(UnionType).getTypeItem().getStructField(pragma[only_bind_into](name)) + if invocation.(AssocFunctionResolution::OperationAssocFunctionCall).implicitBorrowAt(pos, _) + then + // adjust for implicit borrow + path0.isCons(getRefTypeParameter(_), path) + else path = path0 ) } - /** - * Gets the tuple field that the field expression `fe` resolves to, if any. - */ - cached - TupleField resolveTupleFieldExpr(FieldExpr fe, DerefChain derefChain) { - exists(int i | - result = - getTupleFieldExprLookupType(fe, pragma[only_bind_into](i), derefChain) - .(StructType) - .getTypeItem() - .getTupleField(pragma[only_bind_into](i)) + Type inferInvocationType(Invocation invocation, TypePath path) { + exists(TypePath path0 | + result = M3::inferInvocationTypeDefault(invocation, _, path0) and + // index expression `x[i]` desugars to `*x.index(i)`, so we must account for + // the implicit deref + if invocation instanceof IndexExpr or invocation instanceof DerefExpr + then path0.isCons(getRefTypeParameter(_), path) + else path = path0 + ) + } + + Type inferInvocationTypeContextual(Invocation invocation, TypePath path) { + exists(TypePath path0 | + result = inferType(invocation, path0) and + // index expression `x[i]` desugars to `*x.index(i)`, so we must account for + // the implicit deref + if invocation instanceof IndexExpr or invocation instanceof DerefExpr + then path = TypePath::cons(getRefTypeParameter(_), path0) + else path = path0 ) } + class Closure extends Expr, Callable instanceof Rust::ClosureExpr { + Expr getDefiningExpr() { result = this } + } + + class ClosureParameterPseudoType extends T::ClosureParameterPseudoType { + Parameter getParameter() { result = this.getParam() } + } + /** - * Gets a type at `path` that `n` infers to, if any. - * - * The type inference implementation works by computing all possible types, so - * the result is not necessarily unique. For example, in - * - * ```rust - * trait MyTrait { - * fn foo(&self) -> &Self; - * - * fn bar(&self) -> &Self { - * self.foo() - * } - * } - * - * struct MyStruct; + * Gets the root type of a closure. * - * impl MyTrait for MyStruct { - * fn foo(&self) -> &MyStruct { - * self - * } - * } - * - * fn baz() { - * let x = MyStruct; - * x.bar(); - * } - * ``` - * - * the type inference engine will roughly make the following deductions: - * - * 1. `MyStruct` has type `MyStruct`. - * 2. `x` has type `MyStruct` (via 1.). - * 3. The return type of `bar` is `&Self`. - * 3. `x.bar()` has type `&MyStruct` (via 2 and 3, by matching the implicit `Self` - * type parameter with `MyStruct`.). - * 4. The return type of `bar` is `&MyTrait`. - * 5. `x.bar()` has type `&MyTrait` (via 2 and 4). + * We model closures as `dyn Fn` trait object types. A closure might implement + * only `Fn`, `FnMut`, or `FnOnce`. But since `Fn` is a subtrait of the others, + * giving closures the type `dyn Fn` works well in practice -- even if not + * entirely accurate. */ - cached - Type inferType(AstNode n, TypePath path) { - Stages::TypeInferenceStage::ref() and - result = CertainTypeInference::inferCertainType(n, path) + pragma[nomagic] + private Type closureRootType() { + result = TDynTraitType(any(FnTrait t)) // always exists because of the mention in `builtins/mentions.rs` + } + + bindingset[c] + Type getClosureType(Closure c) { + result = closureRootType() and + exists(c) + } + + /** Gets the path to a closure's `index`th parameter type, where the arity is `arity`. */ + pragma[nomagic] + private TypePath closureParameterPath(int arity, int index) { + result = + TypePath::cons(TDynTraitTypeParameter(_, any(FnTrait t).getTypeParam()), + TypePath::singleton(getTupleTypeParameter(arity, index))) + } + + TypePath getClosureParameterTypePath(Parameter p) { + exists(ClosureExpr ce, int index | + p = ce.getParam(index) and + result = closureParameterPath(ce.getNumberOfParams(), index) + ) + } + + /** Gets the path to a closure's return type. */ + pragma[nomagic] + private TypePath closureReturnPath() { + result = + TypePath::singleton(TDynTraitTypeParameter(any(FnTrait t), any(FnOnceTrait t).getOutputType())) + } + + bindingset[c] + TypePath getClosureReturnTypePath(Closure c) { + result = closureReturnPath() and + exists(c) + } + + pragma[nomagic] + private Type inferClosureArgsType(ClosureExpr ce, TypePath path) { + path = TypePath::singleton(TDynTraitTypeParameter(_, any(FnTrait t).getTypeParam())) and + result.(TupleType).getArity() = ce.getNumberOfParams() + } + + predicate stepLanguageSpecific(AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2) { + // When `n2` is `*n1` propagate type information from a raw pointer type + // parameter at `n1` (all other deref expressions are handled as calls) + n1 = n2.(DerefExpr).getExpr() and + prefix1 = TypePath::singleton(getPtrTypeParameter()) and + prefix2.isEmpty() or - // Don't propagate type information into a node which conflicts with certain - // type information. - forall(TypePath prefix | - CertainTypeInference::hasInferredCertainType(n, prefix) and - prefix.isPrefixOf(path) - | - not CertainTypeInference::certainTypeConflict(n, prefix, path, result) - ) and + prefix1.isEmpty() and ( - result = inferAssignmentOperationType(n, path) - or - result = inferTypeEquality(n, path) - or - result = inferFunctionCallType(n, path) - or - result = inferConstructionType(n, path) - or - result = inferOperationType(n, path) - or - result = inferFieldExprType(n, path) + prefix2 = TypePath::singleton(getArrayTypeParameter()) and + ( + n1 = n2.(ArrayListExpr).getAnExpr() + or + n2.(ArrayRepeatExpr).getRepeatOperand() = n1 + ) or - result = inferTryExprType(n, path) + exists(Struct s | + n1 = [n2.(RangeExpr).getStart(), n2.(RangeExpr).getEnd()] and + prefix2 = + TypePath::singleton(TTypeParamTypeParameter(s.getGenericParamList().getATypeParam())) and + s = getRangeType(n2) + ) or - result = inferLiteralType(n, path, false) + n2 = + any(RefExpr re | + n1 = re.getExpr() and + prefix2 = TypePath::singleton(inferRefExprType(re).getPositionalTypeParameter(0)) + ) or - result = inferAwaitExprType(n, path) + exists(BlockExpr be | + n2 = be and + n1 = be.getStmtList().getTailExpr() and + if be.isAsync() + then prefix2 = TypePath::singleton(getDynFutureOutputTypeParameter()) + else prefix2.isEmpty() + ) or - result = inferDereferencedExprPtrType(n, path) + // Rust closure types like `Fn(A, B) -> C` are syntactic sugar for `Fn`, + // so in calls to a closure, we consider the entire argument list as a single tuple argument. + exists(CallExprImpl::DynamicCallExpr dce, TupleType tt, int i | + n1 = dce.getSyntacticPositionalArgument(i) and + n2 = dce.getArgList() and + tt.getArity() = dce.getNumberOfSyntacticArguments() and + prefix2 = TypePath::singleton(tt.getPositionalTypeParameter(i)) + ) or - result = inferForLoopExprType(n, path) + n1 = + any(IdentPat ip | + n2 = ip.getName() and + if ip.isRef() + then + exists(boolean isMutable | if ip.isMut() then isMutable = true else isMutable = false | + prefix2 = TypePath::singleton(getRefTypeParameter(isMutable)) + ) + else prefix2.isEmpty() + ) or - result = inferClosureExprType(n, path) + prefix2.isEmpty() and + ( + n2 = n1.(OrPat).getAPat() + or + n2 = n1.(ParenPat).getPat() + or + n2 = n1.(LiteralPat).getLiteral() + or + exists(BreakExpr break | + break.getExpr() = n1 and + break.getTarget() = n2.(LoopExpr) + ) + or + n1 = n2.(MacroExpr).getMacroCall().getMacroCallExpansion() and + not isPanicMacroCall(n2) + or + n1 = n2.(MacroPat).getMacroCall().getMacroCallExpansion() + ) + ) + or + n1 = + any(RefPat rp | + n2 = rp.getPat() and + prefix2.isEmpty() and + exists(boolean isMutable | if rp.isMut() then isMutable = true else isMutable = false | + prefix1 = TypePath::singleton(getRefTypeParameter(isMutable)) + ) + ) + or + exists(int i, int arity, TypePath path | + path = TypePath::singleton(getTupleTypeParameter(arity, i)) + | + arity = n2.(TupleExpr).getNumberOfFields() and + n1 = n2.(TupleExpr).getField(i) and + prefix1.isEmpty() and + prefix2 = path or - result = inferArgList(n, path) + arity = n1.(TuplePat).getTupleArity() and + n2 = n1.(TuplePat).getField(i) and + prefix2.isEmpty() and + prefix1 = path + ) + or + exists(TypeParam tp, Enum e | + n1 = n2.(TryExpr).getExpr() and + tp = e.getGenericParamList().getGenericParam(0) and + prefix1 = TypePath::singleton(TTypeParamTypeParameter(tp)) and + prefix2.isEmpty() + | + e instanceof ResultEnum or - result = inferDeconstructionPatType(n, path) + e instanceof OptionEnum + ) + } + + pragma[nomagic] + private Type inferUnknownType(AstNode n, TypePath path) { + result = TUnknownType() and + ( + n.(AssocFunctionResolution::AssocFunctionCall).resolutionDependsOnReturnType(path) or - result = inferUnknownTypeFromAnnotation(n, path) + n.(ArrayListExpr).getNumberOfExprs() = 0 and + path = TypePath::singleton(getArrayTypeParameter()) ) } + + pragma[nomagic] + Type inferTypeLanguageSpecific(AstNode n, TypePath path) { + result = inferLiteralType(n, path, false) + or + result = inferAwaitExprType(n, path) + or + result = inferForLoopExprType(n, path) + or + result = inferDeconstructionPatType(n, path) + or + result = inferUnknownType(n, path) + } + + pragma[nomagic] + Type inferTypeCertainLanguageSpecific(AstNode n, TypePath path) { + result = inferLiteralType(n, path, true) + or + result = inferRefPatType(n) and + path.isEmpty() + or + result = inferStructExprType(n, path) + or + result = inferStructPatType(n, path) + or + result = inferEmptyArrayListExprType(n) and + path.isEmpty() + or + result = inferRangeFullExprType(n) and + path.isEmpty() + or + result = inferTupleRootType(n) and + path.isEmpty() + or + result = inferAsyncUnitBlockExprType(n, path) + or + exprHasUnitType(n) and + path.isEmpty() and + result instanceof UnitType + or + result = inferClosureArgsType(n, path) + } } -import Cached +private module M3 = Make3; -/** - * Gets a type that `n` infers to, if any. - */ -Type inferType(AstNode n) { result = inferType(n, TypePath::nil()) } +predicate inferType = M3::inferType/1; + +predicate inferType = M3::inferType/2; + +predicate inferTypeCertain = M3::inferTypeCertain/2; + +module Consistency = M3::Consistency; + +module CachedStage = M3::CachedStage; + +private predicate typeTestAstNodeRepr(AstNode n, string repr) { + repr = [n.toString(), n.(IdentPat).getName().getText()] +} + +module TypeTest implements TestSig { + private module M = M3::TypeTest; + + import M + + predicate hasOptionalResult = M::hasOptionalResult/4; +} /** Provides predicates for debugging the type inference implementation. */ private module Debug { @@ -3969,81 +3201,31 @@ private module Debug { t = self.getTypeAt(path) } - predicate debugInferFunctionCallType(AstNode n, TypePath path, Type t) { - n = getRelevantLocatable() and - t = inferFunctionCallType(n, path) - } - - predicate debugInferConstructionType(AstNode n, TypePath path, Type t) { - n = getRelevantLocatable() and - t = inferConstructionType(n, path) - } - predicate debugTypeMention(TypeMention tm, TypePath path, Type type) { tm = getRelevantLocatable() and tm.getTypeAt(path) = type } - Type debugInferAnnotatedType(AstNode n, TypePath path) { - n = getRelevantLocatable() and - result = inferAnnotatedType(n, path) - } - - pragma[nomagic] - private int countTypesAtPath(AstNode n, TypePath path, Type t) { - t = inferType(n, path) and - result = strictcount(Type t0 | t0 = inferType(n, path)) - } - - pragma[nomagic] - private predicate atLimit(AstNode n) { - exists(TypePath path0 | exists(inferType(n, path0)) and path0.length() >= getTypePathLimit()) - } - - Type debugInferTypeForNodeAtLimit(AstNode n, TypePath path) { - result = inferType(n, path) and - atLimit(n) - } - - predicate countTypesForNodeAtLimit(AstNode n, int c) { - n = getRelevantLocatable() and - c = strictcount(Type t, TypePath path | t = debugInferTypeForNodeAtLimit(n, path)) - } + predicate atLimit = M3::Debug::atLimit/1; - predicate maxTypes(AstNode n, TypePath path, Type t, int c) { - c = countTypesAtPath(n, path, t) and - c = max(countTypesAtPath(_, _, _)) - } + predicate inferTypeForNodeAtLimit = M3::Debug::inferTypeForNodeAtLimit/2; - pragma[nomagic] - private predicate typePathLength(AstNode n, TypePath path, Type t, int len) { - t = inferType(n, path) and - len = path.length() - } + predicate countTypesForNodeAtLimit = M3::Debug::countTypesForNodeAtLimit/2; - predicate maxTypePath(AstNode n, TypePath path, Type t, int len) { - typePathLength(n, path, t, len) and - len = max(int i | typePathLength(_, _, _, i)) - } + predicate maxTypes = M3::Debug::maxTypes/4; - pragma[nomagic] - private int countTypePaths(AstNode n, TypePath path, Type t) { - t = inferType(n, path) and - result = strictcount(TypePath path0, Type t0 | t0 = inferType(n, path0)) - } + predicate maxTypePath = M3::Debug::maxTypePath/4; - predicate maxTypePaths(AstNode n, TypePath path, Type t, int c) { - c = countTypePaths(n, path, t) and - c = max(countTypePaths(_, _, _)) - } + predicate maxTypePaths = M3::Debug::maxTypePaths/4; - Type debugInferCertainType(AstNode n, TypePath path) { + Type debugInferTypeCertain(AstNode n, TypePath path) { n = getRelevantLocatable() and - result = CertainTypeInference::inferCertainType(n, path) + result = inferTypeCertain(n, path) } Type debugInferCertainNonUniqueType(AstNode n, TypePath path) { n = getRelevantLocatable() and - Consistency::nonUniqueCertainType(n, path, result) + Consistency::nonUniqueCertainType(n, path) and + result = inferTypeCertain(n, path) } } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/TypeInferenceConsistency.qll b/rust/ql/lib/codeql/rust/internal/typeinference/TypeInferenceConsistency.qll index 96e0bea2f189..6aff8c2ad531 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/TypeInferenceConsistency.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/TypeInferenceConsistency.qll @@ -10,11 +10,8 @@ private import TypeInference::Consistency as Consistency import TypeInference::Consistency query predicate illFormedTypeMention(TypeMention tm) { - // NOTE: We do not use `illFormedTypeMention` from the shared library as it is - // instantiated with `PreTypeMention` and we are interested in inconsistencies - // for `TypeMention`. - not exists(tm.getTypeAt(TypePath::nil())) and - exists(tm.getLocation()) and + Consistency::illFormedTypeMention(tm) and + not tm instanceof NeverTypeReprMention and // avoid overlap with `PathTypeMention` not tm instanceof PathTypeReprMention and // known limitation for type mentions that would mention an escaping type parameter @@ -31,7 +28,7 @@ query predicate illFormedTypeMention(TypeMention tm) { } query predicate nonUniqueCertainType(AstNode n, TypePath path) { - Consistency::nonUniqueCertainType(n, path, _) and + Consistency::nonUniqueCertainType(n, path) and n.fromSource() // Only include inconsistencies in the source. } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/typeinference/TypeMention.qll index c4650f97c34b..b124e6405d87 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/TypeMention.qll @@ -601,10 +601,12 @@ private module MkTypeMention; + +class TNewElement = @element or Fresh::EntityId; + +class NewElement extends TNewElement { + string toString() { none() } +} + +query predicate new_visibility_inners(Fresh::EntityId id) { id = Fresh::map(TVisibilityInner(_)) } + +query predicate new_visibility_visibility_inners(Element visibility, Fresh::EntityId inner) { + inner = Fresh::map(TVisibilityInner(visibility)) +} + +query predicate new_visibility_inner_paths(Fresh::EntityId inner, Element path) { + exists(Element visibility | + inner = Fresh::map(TVisibilityInner(visibility)) and + visibility_paths(visibility, path) + ) +} + +// The old schema represented a format argument's name as a dedicated text-less +// `@format_args_arg_name` placeholder (entity table `format_args_arg_names`, linked to the arg via +// `format_args_arg_arg_names`). The new schema uses a regular `@name` node instead, so we repurpose +// the placeholder ids as `@name`s by adding them to `names`. They carry no text; re-extraction +// recovers it. +query predicate new_names(Element id) { names(id) or format_args_arg_names(id) } + +query predicate new_format_args_arg_names(Element arg, Element name) { + format_args_arg_arg_names(arg, name) +} + +query predicate new_locatable_locations(NewElement id, Location location) { + locatable_locations(id, location) + or + exists(Element visibility | + id = Fresh::map(TVisibilityInner(visibility)) and + locatable_locations(visibility, location) + ) +} diff --git a/rust/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/rust/ql/lib/utils/test/InlineExpectationsTestQuery.ql index e5821ba4f50c..d97f49cb382f 100644 --- a/rust/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/rust/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import rust private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/rust/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/rust/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index c189e1c7e80e..5dc1dbaeb03d 100644 --- a/rust/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/rust/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -11,4 +11,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = R::Location; + + string getRelativeUrl(Location location) { + exists(R::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index 91b75ac72346..99917aab6973 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.1.45 + +No user-facing changes. + +## 0.1.44 + +No user-facing changes. + +## 0.1.43 + +No user-facing changes. + ## 0.1.42 ### New Queries diff --git a/rust/ql/src/change-notes/released/0.1.43.md b/rust/ql/src/change-notes/released/0.1.43.md new file mode 100644 index 000000000000..d398bbdfcd6c --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.43.md @@ -0,0 +1,3 @@ +## 0.1.43 + +No user-facing changes. diff --git a/rust/ql/src/change-notes/released/0.1.44.md b/rust/ql/src/change-notes/released/0.1.44.md new file mode 100644 index 000000000000..63fb6aebea79 --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.44.md @@ -0,0 +1,3 @@ +## 0.1.44 + +No user-facing changes. diff --git a/rust/ql/src/change-notes/released/0.1.45.md b/rust/ql/src/change-notes/released/0.1.45.md new file mode 100644 index 000000000000..ed391d81b27d --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.45.md @@ -0,0 +1,3 @@ +## 0.1.45 + +No user-facing changes. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index 55593f737cc9..3dc3f878c936 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.42 +lastReleaseVersion: 0.1.45 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index 2e13de282d58..f1105d9b88c3 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.42 +version: 0.1.45 groups: - rust - queries diff --git a/rust/ql/test/.gitignore b/rust/ql/test/.gitignore index 29291fe2d12c..9ea6b0797852 100644 --- a/rust/ql/test/.gitignore +++ b/rust/ql/test/.gitignore @@ -6,4 +6,3 @@ Cargo.toml lib.rs .proc_macro/ .lib/ - diff --git a/rust/ql/test/extractor-tests/crate_graph/crates.expected b/rust/ql/test/extractor-tests/crate_graph/crates.expected index f4bd0ae031ba..1f9dfe24c2ed 100644 --- a/rust/ql/test/extractor-tests/crate_graph/crates.expected +++ b/rust/ql/test/extractor-tests/crate_graph/crates.expected @@ -17,7 +17,7 @@ #-----| std -> Crate(std@0.0.0) #-----| test -> Crate(test@0.0.0) -#-----| Crate(cfg_if@1.0.1) +#-----| Crate(cfg_if@1.0.4) #-----| core -> Crate(core@0.0.0) #-----| Crate(compiler_builtins@0.1.160) @@ -43,6 +43,8 @@ #-----| block_buffer -> Crate(block_buffer@0.10.4) #-----| crypto_common -> Crate(crypto_common@0.1.6) +#-----| Crate(foldhash@0.2.0) + #-----| Crate(generic_array@0.14.7) #-----| proc_macro -> Crate(proc_macro@0.0.0) #-----| alloc -> Crate(alloc@0.0.0) @@ -51,16 +53,16 @@ #-----| test -> Crate(test@0.0.0) #-----| typenum -> Crate(typenum@1.18.0) -#-----| Crate(getopts@0.2.23) +#-----| Crate(getopts@0.2.24) #-----| core -> Crate(core@0.0.0) #-----| std -> Crate(std@0.0.0) -#-----| unicode_width -> Crate(unicode_width@0.2.1) -#-----| Crate(hashbrown@0.15.4) +#-----| Crate(hashbrown@0.17.1) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) +#-----| foldhash -> Crate(foldhash@0.2.0) -#-----| Crate(libc@0.2.174) +#-----| Crate(libc@0.2.189) #-----| rustc_std_workspace_core -> Crate(core@0.0.0) main.rs: @@ -96,55 +98,52 @@ main.rs: #-----| Crate(panic_unwind@0.0.0) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| cfg_if -> Crate(cfg_if@1.0.1) -#-----| libc -> Crate(libc@0.2.174) +#-----| libc -> Crate(libc@0.2.189) #-----| unwind -> Crate(unwind@0.0.0) #-----| Crate(proc_macro@0.0.0) #-----| core -> Crate(core@0.0.0) #-----| std -> Crate(std@0.0.0) -#-----| rustc_literal_escaper -> Crate(rustc_literal_escaper@0.0.5) +#-----| rustc_literal_escaper -> Crate(rustc_literal_escaper@0.0.8) -#-----| Crate(rand@0.9.2) -#-----| rand_core -> Crate(rand_core@0.9.3) +#-----| Crate(rand@0.9.5) +#-----| rand_core -> Crate(rand_core@0.9.5) -#-----| Crate(rand_core@0.9.3) +#-----| Crate(rand_core@0.9.5) #-----| Crate(rand_xorshift@0.4.0) -#-----| rand_core -> Crate(rand_core@0.9.3) +#-----| rand_core -> Crate(rand_core@0.9.5) -#-----| Crate(rustc_demangle@0.1.25) +#-----| Crate(rustc_demangle@0.1.28) #-----| core -> Crate(core@0.0.0) -#-----| Crate(rustc_literal_escaper@0.0.5) +#-----| Crate(rustc_literal_escaper@0.0.8) #-----| core -> Crate(core@0.0.0) -#-----| std -> Crate(std@0.0.0) #-----| Crate(std@0.0.0) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| cfg_if -> Crate(cfg_if@1.0.1) -#-----| hashbrown -> Crate(hashbrown@0.15.4) -#-----| libc -> Crate(libc@0.2.174) -#-----| rand -> Crate(rand@0.9.2) -#-----| rand_xorshift -> Crate(rand_xorshift@0.4.0) -#-----| rustc_demangle -> Crate(rustc_demangle@0.1.25) #-----| panic_abort -> Crate(panic_abort@0.0.0) +#-----| libc -> Crate(libc@0.2.189) #-----| unwind -> Crate(unwind@0.0.0) #-----| panic_unwind -> Crate(panic_unwind@0.0.0) #-----| std_detect -> Crate(std_detect@0.1.5) +#-----| cfg_if -> Crate(cfg_if@1.0.4) +#-----| hashbrown -> Crate(hashbrown@0.17.1) +#-----| rand -> Crate(rand@0.9.5) +#-----| rand_xorshift -> Crate(rand_xorshift@0.4.0) +#-----| rustc_demangle -> Crate(rustc_demangle@0.1.28) #-----| Crate(std_detect@0.1.5) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| cfg_if -> Crate(cfg_if@1.0.1) -#-----| libc -> Crate(libc@0.2.174) +#-----| libc -> Crate(libc@0.2.189) #-----| Crate(test@0.0.0) #-----| core -> Crate(core@0.0.0) #-----| std -> Crate(std@0.0.0) -#-----| getopts -> Crate(getopts@0.2.23) -#-----| libc -> Crate(libc@0.2.174) +#-----| libc -> Crate(libc@0.2.189) +#-----| getopts -> Crate(getopts@0.2.24) lib.rs: # 0| Crate(test@0.0.1) @@ -163,14 +162,9 @@ lib.rs: #-----| std -> Crate(std@0.0.0) #-----| test -> Crate(test@0.0.0) -#-----| Crate(unicode_width@0.2.1) -#-----| core -> Crate(core@0.0.0) -#-----| std -> Crate(std@0.0.0) - #-----| Crate(unwind@0.0.0) #-----| core -> Crate(core@0.0.0) -#-----| cfg_if -> Crate(cfg_if@1.0.1) -#-----| libc -> Crate(libc@0.2.174) +#-----| libc -> Crate(libc@0.2.189) #-----| Crate(version_check@0.9.5) #-----| proc_macro -> Crate(proc_macro@0.0.0) diff --git a/rust/ql/test/extractor-tests/generated/.generated_tests.list b/rust/ql/test/extractor-tests/generated/.generated_tests.list index 42c79ede411d..c2efb431fe12 100644 --- a/rust/ql/test/extractor-tests/generated/.generated_tests.list +++ b/rust/ql/test/extractor-tests/generated/.generated_tests.list @@ -26,12 +26,14 @@ BreakExpr/gen_break_expr.rs aacdf9df7fc51d19742b9e813835c0bd0913017e8d62765960e0 CallExpr/gen_call_expr.rs 228705e9b0c46d34aa035da3c139a8c3e93fb144d3310592d5bad38ac97382c2 228705e9b0c46d34aa035da3c139a8c3e93fb144d3310592d5bad38ac97382c2 CastExpr/gen_cast_expr.rs c3892211fbae4fed7cb1f25ff1679fd79d2878bf0bf2bd4b7982af23d00129f5 c3892211fbae4fed7cb1f25ff1679fd79d2878bf0bf2bd4b7982af23d00129f5 ClosureExpr/gen_closure_expr.rs bd95408103b7f2084e526e6d35cf3319b2e9d7219aff4c80e4e6691180c549b4 bd95408103b7f2084e526e6d35cf3319b2e9d7219aff4c80e4e6691180c549b4 -Comment/gen_comment.rs 1e1f9f43161a79c096c2056e8b7f5346385ab7addcdec68c2d53b383dd3debe6 1e1f9f43161a79c096c2056e8b7f5346385ab7addcdec68c2d53b383dd3debe6 +Comment/gen_comment.rs cfe4ffad0c027a138894f6730e754ece90e0ecd38efc8d893aba966024d6153b cfe4ffad0c027a138894f6730e754ece90e0ecd38efc8d893aba966024d6153b Const/gen_const.rs a3b971134a4204d0da12563fcefa9ab72f3f2f2e957e82b70c8548b5807f375f a3b971134a4204d0da12563fcefa9ab72f3f2f2e957e82b70c8548b5807f375f ConstArg/gen_const_arg.rs 6a15d099c61ffa814e8e0e0fca2d8ff481d73ad81959064e0a214d3172a9d49e 6a15d099c61ffa814e8e0e0fca2d8ff481d73ad81959064e0a214d3172a9d49e ConstBlockPat/gen_const_block_pat.rs 7e3057cd24d22e752354369cf7e08e9536642812c0947b36aa5d8290a45476fd 7e3057cd24d22e752354369cf7e08e9536642812c0947b36aa5d8290a45476fd ConstParam/gen_const_param.rs 71f22d907b0011dafc333f37635f0ee5b1eef2313b5a26cd2a21508a8e96c19a 71f22d907b0011dafc333f37635f0ee5b1eef2313b5a26cd2a21508a8e96c19a ContinueExpr/gen_continue_expr.rs 63840dcd8440aaf1b96b713b80eb2b56acb1639d3200b3c732b45291a071b5ff 63840dcd8440aaf1b96b713b80eb2b56acb1639d3200b3c732b45291a071b5ff +DerefPat/gen_deref_pat.rs a9452902f0913a52d4d19abe37d510086897032d5da2517a4e3f75a478f5f77a a9452902f0913a52d4d19abe37d510086897032d5da2517a4e3f75a478f5f77a +DocComment/gen_doc_comment.rs fe6c28b0d26f396598fc57aea8dcbdba0f9f43eae0d59a833426de8cfc47e299 fe6c28b0d26f396598fc57aea8dcbdba0f9f43eae0d59a833426de8cfc47e299 DynTraitTypeRepr/gen_dyn_trait_type_repr.rs 1864f3900bdae6f4a0a428e0b2a1266b758dfa8f27059353a639612d8829f4dd 1864f3900bdae6f4a0a428e0b2a1266b758dfa8f27059353a639612d8829f4dd Enum/gen_enum.rs 59c6dc0185c6b0dd877ce1b2291d3b8ab05041194b7bfc948e97baa4908605fa 59c6dc0185c6b0dd877ce1b2291d3b8ab05041194b7bfc948e97baa4908605fa ExprStmt/gen_expr_stmt.rs 6ce47428a8d33b902c1f14b06cc375d08eff95251e4a81dac2fa51872b7649b1 6ce47428a8d33b902c1f14b06cc375d08eff95251e4a81dac2fa51872b7649b1 @@ -54,6 +56,7 @@ IdentPat/gen_ident_pat.rs 87f9201ca47683ff6f12a0c844c062fdedb6d86546794522d358b1 IfExpr/gen_if_expr.rs 2df66735394ebb20db29d3fbf2721ad4812afbe8d4614d03f26265c1f481f1e8 2df66735394ebb20db29d3fbf2721ad4812afbe8d4614d03f26265c1f481f1e8 Impl/gen_impl.rs a3f91dbcbb89f660e1c67eb6211def495cced5ab069515c6151e442365f64899 a3f91dbcbb89f660e1c67eb6211def495cced5ab069515c6151e442365f64899 ImplTraitTypeRepr/gen_impl_trait_type_repr.rs ebfa4d350ae5759bf7df6adf790d2d892c7a0d708f3340ccf3e12a681cb78f00 ebfa4d350ae5759bf7df6adf790d2d892c7a0d708f3340ccf3e12a681cb78f00 +IncludeBytesExpr/gen_include_bytes_expr.rs d993b5155810929c79b485f270707540cee3cbd24f667962d7279da4a2497548 d993b5155810929c79b485f270707540cee3cbd24f667962d7279da4a2497548 IndexExpr/gen_index_expr.rs 22d7f81ba43dc63f1f49e21a2c25ce25a1b8f6e8e95e1a66f518f010a4d73c61 22d7f81ba43dc63f1f49e21a2c25ce25a1b8f6e8e95e1a66f518f010a4d73c61 InferTypeRepr/gen_infer_type_repr.rs cd50eaeffdf16e0e896b14b665590251a4d383c123502ed667d8b1f75000f559 cd50eaeffdf16e0e896b14b665590251a4d383c123502ed667d8b1f75000f559 ItemList/gen_item_list.rs 5da9f631030568c80aa0b126369990070cebcd1805827a8077320d4bec789a4e 5da9f631030568c80aa0b126369990070cebcd1805827a8077320d4bec789a4e @@ -83,6 +86,7 @@ Module/gen_module.rs 815605a604fea1d9276684f8d6738a4e833eacad57ceeb27e2095fc4502 Name/gen_name.rs 8a7fe65ee632a47d12eaa313e7248ac9210e5a381e9522499ca68f94c39e72c0 8a7fe65ee632a47d12eaa313e7248ac9210e5a381e9522499ca68f94c39e72c0 NameRef/gen_name_ref.rs c8c922e77a7d62b8272359ccdabbf7e15411f31ca85f15a3afdd94bec7ec64e7 c8c922e77a7d62b8272359ccdabbf7e15411f31ca85f15a3afdd94bec7ec64e7 NeverTypeRepr/gen_never_type_repr.rs cc7d1c861eaf89772109f142815839976f25f89956ed1b11822df5e7e333d6d4 cc7d1c861eaf89772109f142815839976f25f89956ed1b11822df5e7e333d6d4 +NotNull/gen_not_null.rs 3cc516b4fcf50ef6c45452158820e5386883cafa759480d41c896c21f559a979 3cc516b4fcf50ef6c45452158820e5386883cafa759480d41c896c21f559a979 OffsetOfExpr/gen_offset_of_expr.rs 8e2077b4d7b85c91c17c3630511bc4f929950e9007261cbf0471c4a064c4b934 8e2077b4d7b85c91c17c3630511bc4f929950e9007261cbf0471c4a064c4b934 OrPat/gen_or_pat.rs 71feef6e056bfe4cc8c22c9eb54fa3fecef613606769061d0efd059adbbd6f56 71feef6e056bfe4cc8c22c9eb54fa3fecef613606769061d0efd059adbbd6f56 Param/gen_param.rs 39f3979d6cb10e4c43e0b5601af2a92b7520a75a104211955bbbb5e6f13e9db9 39f3979d6cb10e4c43e0b5601af2a92b7520a75a104211955bbbb5e6f13e9db9 @@ -95,6 +99,7 @@ Path/gen_path.rs 490268d6bfb1635883b8bdefc683d59c4dd0e9c7f86c2e55954661efb3ab025 Path/gen_path_expr.rs dcc9cc16cafff0e2225c1853a91612d3f666016c53fcb4ab5716ed31a33a41cd dcc9cc16cafff0e2225c1853a91612d3f666016c53fcb4ab5716ed31a33a41cd Path/gen_path_pat.rs fd7f941f8b33f19d3693be1fdb595c2fb2e85e8296702b82bf12bcd44632f371 fd7f941f8b33f19d3693be1fdb595c2fb2e85e8296702b82bf12bcd44632f371 Path/gen_path_type_repr.rs 2a59f36d62a8a6e0e2caacd2b7a78943ddb48af2bb2d82b0e63b387ec24e052d 2a59f36d62a8a6e0e2caacd2b7a78943ddb48af2bb2d82b0e63b387ec24e052d +PatternTypeRepr/gen_pattern_type_repr.rs 7e98df3851d63ed6509b7e634e8854dbf3294ed5cfc275b50bbbff55bf431f5e 7e98df3851d63ed6509b7e634e8854dbf3294ed5cfc275b50bbbff55bf431f5e PrefixExpr/gen_prefix_expr.rs c4b53e87f370713b9a9e257be26d082b0761497bac19b1d7401a31b22b30d1ab c4b53e87f370713b9a9e257be26d082b0761497bac19b1d7401a31b22b30d1ab PtrTypeRepr/gen_ptr_type_repr.rs b833d2a02add897c53ad5f0d436e1f5fa8919809592e1ded56b0c1c99b8344bd b833d2a02add897c53ad5f0d436e1f5fa8919809592e1ded56b0c1c99b8344bd RangeExpr/gen_range_expr.rs 3f27cff9cc76b2703beff622d1453b84121e1970a869e45f9428deac92c4ecb0 3f27cff9cc76b2703beff622d1453b84121e1970a869e45f9428deac92c4ecb0 @@ -145,6 +150,7 @@ UseTreeList/gen_use_tree_list.rs 2494aadcec03a3f7a6e2ae448ee70ec6774f840e9519c66 Variant/gen_variant.rs fa3d3a9e3e0c3aa565b965fad9c3dc2ffd5a8d82963e3a55a9acbb0f14b603d6 fa3d3a9e3e0c3aa565b965fad9c3dc2ffd5a8d82963e3a55a9acbb0f14b603d6 VariantList/gen_variant_list.rs a1faa4d59b072f139d14cb8a6d63a0ce8c473170d6320a07ce6bb9d517f8486d a1faa4d59b072f139d14cb8a6d63a0ce8c473170d6320a07ce6bb9d517f8486d Visibility/gen_visibility.rs cfa4b05fa7ba7c4ffa8f9c880b13792735e4f7e92a648f43110e914075e97a52 cfa4b05fa7ba7c4ffa8f9c880b13792735e4f7e92a648f43110e914075e97a52 +VisibilityInner/gen_visibility_inner.rs d392d92d56b4da0bb7ba1d4fc6aecf0932e4174e7ccd2fc64ea68d659aca1ee7 d392d92d56b4da0bb7ba1d4fc6aecf0932e4174e7ccd2fc64ea68d659aca1ee7 WhereClause/gen_where_clause.rs 22522c933be47f8f7f9d0caddfa41925c08df343c564baad2fe2daa14f1bfb1a 22522c933be47f8f7f9d0caddfa41925c08df343c564baad2fe2daa14f1bfb1a WherePred/gen_where_pred.rs 7036e34f1a1f77c5cf031f385be4583472ea4f99e8b4b4ec3c72a65c23e418bb 7036e34f1a1f77c5cf031f385be4583472ea4f99e8b4b4ec3c72a65c23e418bb WhileExpr/gen_while_expr.rs 97276c5946a36001638491c99a36170d22bc6011c5e59f621b37c7a2d7737879 97276c5946a36001638491c99a36170d22bc6011c5e59f621b37c7a2d7737879 diff --git a/rust/ql/test/extractor-tests/generated/.gitattributes b/rust/ql/test/extractor-tests/generated/.gitattributes index 7ac64a528a53..b70a7552e136 100644 --- a/rust/ql/test/extractor-tests/generated/.gitattributes +++ b/rust/ql/test/extractor-tests/generated/.gitattributes @@ -34,6 +34,8 @@ /ConstBlockPat/gen_const_block_pat.rs linguist-generated /ConstParam/gen_const_param.rs linguist-generated /ContinueExpr/gen_continue_expr.rs linguist-generated +/DerefPat/gen_deref_pat.rs linguist-generated +/DocComment/gen_doc_comment.rs linguist-generated /DynTraitTypeRepr/gen_dyn_trait_type_repr.rs linguist-generated /Enum/gen_enum.rs linguist-generated /ExprStmt/gen_expr_stmt.rs linguist-generated @@ -56,6 +58,7 @@ /IfExpr/gen_if_expr.rs linguist-generated /Impl/gen_impl.rs linguist-generated /ImplTraitTypeRepr/gen_impl_trait_type_repr.rs linguist-generated +/IncludeBytesExpr/gen_include_bytes_expr.rs linguist-generated /IndexExpr/gen_index_expr.rs linguist-generated /InferTypeRepr/gen_infer_type_repr.rs linguist-generated /ItemList/gen_item_list.rs linguist-generated @@ -85,6 +88,7 @@ /Name/gen_name.rs linguist-generated /NameRef/gen_name_ref.rs linguist-generated /NeverTypeRepr/gen_never_type_repr.rs linguist-generated +/NotNull/gen_not_null.rs linguist-generated /OffsetOfExpr/gen_offset_of_expr.rs linguist-generated /OrPat/gen_or_pat.rs linguist-generated /Param/gen_param.rs linguist-generated @@ -97,6 +101,7 @@ /Path/gen_path_expr.rs linguist-generated /Path/gen_path_pat.rs linguist-generated /Path/gen_path_type_repr.rs linguist-generated +/PatternTypeRepr/gen_pattern_type_repr.rs linguist-generated /PrefixExpr/gen_prefix_expr.rs linguist-generated /PtrTypeRepr/gen_ptr_type_repr.rs linguist-generated /RangeExpr/gen_range_expr.rs linguist-generated @@ -147,6 +152,7 @@ /Variant/gen_variant.rs linguist-generated /VariantList/gen_variant_list.rs linguist-generated /Visibility/gen_visibility.rs linguist-generated +/VisibilityInner/gen_visibility_inner.rs linguist-generated /WhereClause/gen_where_clause.rs linguist-generated /WherePred/gen_where_pred.rs linguist-generated /WhileExpr/gen_while_expr.rs linguist-generated diff --git a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql index 36f7bb41db93..aa65ae36d0e5 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql @@ -8,6 +8,6 @@ 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) { +query predicate getAttr(ArrayListExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql index 7f337fc87b55..e4fd0bd28375 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql @@ -18,6 +18,6 @@ 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) { +query predicate getAttr(ArrayRepeatExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.expected b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.expected index 10f3409cc794..bc4d5d6e3f8f 100644 --- a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.expected +++ b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.expected @@ -1 +1,3 @@ +instances | gen_asm_clobber_abi.rs:8:14:8:29 | AsmClobberAbi | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql index 65680442dfb8..140d39dbcd6b 100644 --- a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql +++ b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql @@ -3,3 +3,7 @@ import codeql.rust.elements import TestUtils query predicate instances(AsmClobberAbi x) { toBeTested(x) and not x.isUnknown() } + +query predicate getAttr(AsmClobberAbi x, int index, AnyAttr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.ql b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.ql index e802491c3262..4169fb61ee54 100644 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.ql +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.ql @@ -14,7 +14,7 @@ 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) { +query predicate getAttr(AsmExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected index c8aec731ff8c..36351bbf80ae 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected @@ -4,5 +4,6 @@ instances 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 | +getAttr 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 9c900afe42e1..cb72ad4ac5f9 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql @@ -8,6 +8,10 @@ query predicate getAsmOperand(AsmOperandNamed x, AsmOperand getAsmOperand) { toBeTested(x) and not x.isUnknown() and getAsmOperand = x.getAsmOperand() } +query predicate getAttr(AsmOperandNamed x, int index, AnyAttr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + 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/AsmOptionsList/AsmOptionsList.expected b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected index cf9ec35d070e..c0634930367a 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected @@ -3,3 +3,4 @@ instances 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 | +getAttr diff --git a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql index a4806cce3535..c8edb669a4d4 100644 --- a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql @@ -7,3 +7,7 @@ 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) } + +query predicate getAttr(AsmOptionsList x, int index, AnyAttr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql index d98d833c9515..67f77a98a5a7 100644 --- a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql +++ b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(AwaitExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(AwaitExpr x, int index, Attr getAttr) { +query predicate getAttr(AwaitExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql index d8b5775da70f..1a89ccf2d3d1 100644 --- a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(BecomeExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(BecomeExpr x, int index, Attr getAttr) { +query predicate getAttr(BecomeExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql index 6b5bf4ba206b..a85b69df6c69 100644 --- a/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(BinaryExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(BinaryExpr x, int index, Attr getAttr) { +query predicate getAttr(BinaryExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql index b93c97029d36..f0fd854a784f 100644 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql @@ -25,7 +25,7 @@ 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) { +query predicate getAttr(BlockExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.ql b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.ql index c9d9fb9ee66a..e00123f75038 100644 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(BreakExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(BreakExpr x, int index, Attr getAttr) { +query predicate getAttr(BreakExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql index 4d3b26f2f788..939fc70213e8 100644 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql @@ -8,7 +8,7 @@ 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) { +query predicate getAttr(CallExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.ql b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.ql index 46c06b4c21cd..319cfb40888a 100644 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.ql +++ b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(CastExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(CastExpr x, int index, Attr getAttr) { +query predicate getAttr(CastExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/CfgPredExpr/MISSING_SOURCE.txt similarity index 100% rename from rust/ql/test/extractor-tests/generated/FormatArgsArgName/MISSING_SOURCE.txt rename to rust/ql/test/extractor-tests/generated/CfgPredExpr/MISSING_SOURCE.txt diff --git a/rust/ql/test/extractor-tests/generated/CfgPredPat/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/CfgPredPat/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/CfgPredPat/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql index 1d7a9412b163..9c7daaa37791 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql @@ -25,7 +25,7 @@ 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) { +query predicate getAttr(ClosureExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Comment/Comment.expected b/rust/ql/test/extractor-tests/generated/Comment/Comment.expected index 24e95f123d8c..63e22a39a90f 100644 --- a/rust/ql/test/extractor-tests/generated/Comment/Comment.expected +++ b/rust/ql/test/extractor-tests/generated/Comment/Comment.expected @@ -1,7 +1,4 @@ -| comments.rs:1:1:3:2 | /**...*/ | getParent: | comments.rs:1:1:9:1 | fn foo | getText: | /** \n* A doc comment\n*/ | | comments.rs:6:17:6:34 | //... | getParent: | comments.rs:6:17:8:16 | fn nested | getText: | // print some text | -| comments.rs:7:3:7:31 | ///... | getParent: | comments.rs:6:17:8:16 | fn nested | getText: | /// This is a nested function | -| gen_comment.rs:1:1:1:36 | //... | getParent: | gen_comment.rs:1:1:7:2 | SourceFile | getText: | // generated by codegen, do not edit | -| gen_comment.rs:4:5:4:30 | //... | getParent: | gen_comment.rs:3:25:7:1 | StmtList | getText: | // A comment. For example: | -| gen_comment.rs:5:5:5:24 | //... | getParent: | gen_comment.rs:3:25:7:1 | StmtList | getText: | // this is a comment | -| gen_comment.rs:6:5:6:29 | ///... | getParent: | gen_comment.rs:3:25:7:1 | StmtList | getText: | /// This is a doc comment | +| gen_comment.rs:1:1:1:36 | //... | getParent: | gen_comment.rs:1:1:8:2 | SourceFile | getText: | // generated by codegen, do not edit | +| gen_comment.rs:4:5:4:30 | //... | getParent: | gen_comment.rs:4:5:7:22 | fn documented | getText: | // A comment. For example: | +| gen_comment.rs:5:5:5:24 | //... | getParent: | gen_comment.rs:4:5:7:22 | fn documented | getText: | // this is a comment | diff --git a/rust/ql/test/extractor-tests/generated/Comment/gen_comment.rs b/rust/ql/test/extractor-tests/generated/Comment/gen_comment.rs index 1e9682754d8b..9570180a25ec 100644 --- a/rust/ql/test/extractor-tests/generated/Comment/gen_comment.rs +++ b/rust/ql/test/extractor-tests/generated/Comment/gen_comment.rs @@ -4,4 +4,5 @@ fn test_comment() -> () { // A comment. For example: // this is a comment /// This is a doc comment + fn documented() {} } diff --git a/rust/ql/test/extractor-tests/generated/Const/Const.ql b/rust/ql/test/extractor-tests/generated/Const/Const.ql index 70420980d67d..820c85ef1601 100644 --- a/rust/ql/test/extractor-tests/generated/Const/Const.ql +++ b/rust/ql/test/extractor-tests/generated/Const/Const.ql @@ -22,7 +22,7 @@ query predicate getAttributeMacroExpansion(Const x, MacroItems getAttributeMacro getAttributeMacroExpansion = x.getAttributeMacroExpansion() } -query predicate getAttr(Const x, int index, Attr getAttr) { +query predicate getAttr(Const x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.ql b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.ql index cfbf6f3cc45a..cd2f1e32ba6b 100644 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.ql +++ b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.ql @@ -9,7 +9,7 @@ query predicate instances(ConstParam x, string isConst__label, string isConst) { if x.isConst() then isConst = "yes" else isConst = "no" } -query predicate getAttr(ConstParam x, int index, Attr getAttr) { +query predicate getAttr(ConstParam x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql index 590b8d1faa50..2f12bb4e77b3 100644 --- a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(ContinueExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(ContinueExpr x, int index, Attr getAttr) { +query predicate getAttr(ContinueExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/DerefPat/DerefPat.expected b/rust/ql/test/extractor-tests/generated/DerefPat/DerefPat.expected new file mode 100644 index 000000000000..30bba2359390 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/DerefPat/DerefPat.expected @@ -0,0 +1,4 @@ +instances +| gen_deref_pat.rs:8:9:8:24 | DerefPat | +getPat +| gen_deref_pat.rs:8:9:8:24 | DerefPat | gen_deref_pat.rs:8:23:8:23 | y | diff --git a/rust/ql/test/extractor-tests/generated/DerefPat/DerefPat.ql b/rust/ql/test/extractor-tests/generated/DerefPat/DerefPat.ql new file mode 100644 index 000000000000..f17a3c41f132 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/DerefPat/DerefPat.ql @@ -0,0 +1,9 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +query predicate instances(DerefPat x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPat(DerefPat x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} diff --git a/rust/ql/test/extractor-tests/generated/DerefPat/gen_deref_pat.rs b/rust/ql/test/extractor-tests/generated/DerefPat/gen_deref_pat.rs new file mode 100644 index 000000000000..b8c06cc3cc15 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/DerefPat/gen_deref_pat.rs @@ -0,0 +1,11 @@ +// generated by codegen, do not edit + +fn test_deref_pat() -> () { + // A deref pattern, matching the value behind a smart pointer. This is an experimental + // Rust feature that cannot be written directly in stable Rust; the example below uses + // rust-analyzer's canonical `builtin#deref` syntax for such patterns: + match x { + builtin#deref(y) => y, + _ => 0, + }; +} diff --git a/rust/ql/test/extractor-tests/generated/DocComment/DocComment.expected b/rust/ql/test/extractor-tests/generated/DocComment/DocComment.expected new file mode 100644 index 000000000000..f6d50c75a94b --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/DocComment/DocComment.expected @@ -0,0 +1 @@ +| gen_doc_comment.rs:7:5:7:31 | DocComment | diff --git a/rust/ql/test/extractor-tests/generated/DocComment/DocComment.ql b/rust/ql/test/extractor-tests/generated/DocComment/DocComment.ql new file mode 100644 index 000000000000..ce4a0407e4f9 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/DocComment/DocComment.ql @@ -0,0 +1,5 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +query predicate instances(DocComment x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/DocComment/gen_doc_comment.rs b/rust/ql/test/extractor-tests/generated/DocComment/gen_doc_comment.rs new file mode 100644 index 000000000000..99a2adc1bfa9 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/DocComment/gen_doc_comment.rs @@ -0,0 +1,9 @@ +// generated by codegen, do not edit + +fn test_doc_comment() -> () { + // A documentation comment. + // + // For example: + /// Documents `documented`. + fn documented() {} +} diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum.expected index de3c33c0a7c3..b4c9b900914d 100644 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum.expected +++ b/rust/ql/test/extractor-tests/generated/Enum/Enum.expected @@ -6,7 +6,7 @@ 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 +getVariantList +| 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.ql b/rust/ql/test/extractor-tests/generated/Enum/Enum.ql index d9843feecc36..6a7c5f4b4727 100644 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum.ql +++ b/rust/ql/test/extractor-tests/generated/Enum/Enum.ql @@ -14,7 +14,7 @@ query predicate getDeriveMacroExpansion(Enum x, int index, MacroItems getDeriveM toBeTested(x) and not x.isUnknown() and getDeriveMacroExpansion = x.getDeriveMacroExpansion(index) } -query predicate getAttr(Enum x, int index, Attr getAttr) { +query predicate getAttr(Enum x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.ql b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.ql index 9769e173593c..55304733bcef 100644 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.ql +++ b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.ql @@ -19,7 +19,7 @@ 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) { +query predicate getAttr(ExternBlock x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.ql b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.ql index 2898d60f487a..91f32acdad59 100644 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.ql +++ b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.ql @@ -10,7 +10,7 @@ query predicate getAttributeMacroExpansion(ExternCrate x, MacroItems getAttribut getAttributeMacroExpansion = x.getAttributeMacroExpansion() } -query predicate getAttr(ExternCrate x, int index, Attr getAttr) { +query predicate getAttr(ExternCrate x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.ql b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.ql index b947daaff649..ed34935cf56d 100644 --- a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.ql +++ b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(ExternItemList x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(ExternItemList x, int index, Attr getAttr) { +query predicate getAttr(ExternItemList x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.ql b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.ql index 49780f145b8f..f0a1eccf6b41 100644 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.ql +++ b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(FieldExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(FieldExpr x, int index, Attr getAttr) { +query predicate getAttr(FieldExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql index 1bb7bba5c49b..c4455587eff2 100644 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql @@ -12,7 +12,7 @@ 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) { +query predicate getAttr(ForExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected index 01c549f29a1a..32a73ae1c7c4 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.expected @@ -15,9 +15,6 @@ instances | 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 | -getArgName -| gen_format_args_expr.rs:7:35:7:37 | FormatArgsArg | gen_format_args_expr.rs:7:35:7:36 | FormatArgsArgName | -| gen_format_args_expr.rs:7:40:7:42 | FormatArgsArg | gen_format_args_expr.rs:7:40:7:41 | FormatArgsArgName | 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 | @@ -35,3 +32,6 @@ getExpr | 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 d445d40234d6..d3931f985113 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql @@ -4,10 +4,10 @@ import TestUtils query predicate instances(FormatArgsArg x) { toBeTested(x) and not x.isUnknown() } -query predicate getArgName(FormatArgsArg x, FormatArgsArgName getArgName) { - toBeTested(x) and not x.isUnknown() and getArgName = x.getArgName() -} - 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/FormatArgsExpr.ql b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql index 04e7a007e677..6b4acc184c81 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql @@ -8,7 +8,7 @@ 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) { +query predicate getAttr(FormatArgsExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.ql b/rust/ql/test/extractor-tests/generated/Function/Function.ql index ca2bf4d5f704..df05aaf4ca9a 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.ql +++ b/rust/ql/test/extractor-tests/generated/Function/Function.ql @@ -33,7 +33,7 @@ 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) { +query predicate getAttr(Function x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.ql b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.ql index a70bc32ca79c..08edaba54285 100644 --- a/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.ql +++ b/rust/ql/test/extractor-tests/generated/IdentPat/IdentPat.ql @@ -13,7 +13,7 @@ query predicate instances( if x.isRef() then isRef = "yes" else isRef = "no" } -query predicate getAttr(IdentPat x, int index, Attr getAttr) { +query predicate getAttr(IdentPat x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.ql b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.ql index c41248fa322e..679fd4ab7ca1 100644 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.ql +++ b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(IfExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(IfExpr x, int index, Attr getAttr) { +query predicate getAttr(IfExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl.ql b/rust/ql/test/extractor-tests/generated/Impl/Impl.ql index 0a791b4659dc..5bae361644d6 100644 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl.ql +++ b/rust/ql/test/extractor-tests/generated/Impl/Impl.ql @@ -26,7 +26,7 @@ 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) { +query predicate getAttr(Impl x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ImplRestriction/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/ImplRestriction/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ImplRestriction/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/IncludeBytesExpr/IncludeBytesExpr.expected b/rust/ql/test/extractor-tests/generated/IncludeBytesExpr/IncludeBytesExpr.expected new file mode 100644 index 000000000000..bb50091ec579 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/IncludeBytesExpr/IncludeBytesExpr.expected @@ -0,0 +1 @@ +| gen_include_bytes_expr.rs:5:16:5:29 | IncludeBytesExpr | diff --git a/rust/ql/test/extractor-tests/generated/IncludeBytesExpr/IncludeBytesExpr.ql b/rust/ql/test/extractor-tests/generated/IncludeBytesExpr/IncludeBytesExpr.ql new file mode 100644 index 000000000000..389544ae9961 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/IncludeBytesExpr/IncludeBytesExpr.ql @@ -0,0 +1,5 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +query predicate instances(IncludeBytesExpr x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/IncludeBytesExpr/gen_include_bytes_expr.rs b/rust/ql/test/extractor-tests/generated/IncludeBytesExpr/gen_include_bytes_expr.rs new file mode 100644 index 000000000000..620437fe24db --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/IncludeBytesExpr/gen_include_bytes_expr.rs @@ -0,0 +1,6 @@ +// generated by codegen, do not edit + +fn test_include_bytes_expr() -> () { + // An expression produced by the built-in `include_bytes!` macro, embedding the contents of a file as a byte array. For example: + let data = include_bytes!("data.bin"); +} diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.ql b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.ql index a7a870b1423f..d74f88370548 100644 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.ql +++ b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(IndexExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(IndexExpr x, int index, Attr getAttr) { +query predicate getAttr(IndexExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ItemList/ItemList.ql b/rust/ql/test/extractor-tests/generated/ItemList/ItemList.ql index 015b8f79125d..b98c99f621f2 100644 --- a/rust/ql/test/extractor-tests/generated/ItemList/ItemList.ql +++ b/rust/ql/test/extractor-tests/generated/ItemList/ItemList.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(ItemList x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(ItemList x, int index, Attr getAttr) { +query predicate getAttr(ItemList x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.ql b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.ql index 2f8de7cd2d75..4fa3ee0b9a48 100644 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.ql +++ b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(LetExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(LetExpr x, int index, Attr getAttr) { +query predicate getAttr(LetExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.ql b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.ql index 07feca933996..6ed5bdbb2487 100644 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.ql +++ b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(LetStmt x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(LetStmt x, int index, Attr getAttr) { +query predicate getAttr(LetStmt x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql index bddc4418ba46..f9ce69ca0e20 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql +++ b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(LifetimeParam x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(LifetimeParam x, int index, Attr getAttr) { +query predicate getAttr(LifetimeParam x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql index 0b49e28cff23..25b73d9b5548 100644 --- a/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql +++ b/rust/ql/test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(LiteralExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(LiteralExpr x, int index, Attr getAttr) { +query predicate getAttr(LiteralExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql index c266b1c064e2..6121f2fec46b 100644 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql +++ b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql @@ -12,6 +12,6 @@ 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) { +query predicate getAttr(LoopExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.ql b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.ql index 5081eca422e2..97c8427f7e84 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.ql +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.ql @@ -10,7 +10,7 @@ query predicate getAttributeMacroExpansion(MacroCall x, MacroItems getAttributeM getAttributeMacroExpansion = x.getAttributeMacroExpansion() } -query predicate getAttr(MacroCall x, int index, Attr getAttr) { +query predicate getAttr(MacroCall x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.ql b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.ql index 18aece7ccb5a..c501d29a5901 100644 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.ql +++ b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.ql @@ -14,7 +14,7 @@ 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) { +query predicate getAttr(MacroDef x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.ql b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.ql index 4dc862c73d72..b9008136eb5c 100644 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.ql +++ b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.ql @@ -10,7 +10,7 @@ query predicate getAttributeMacroExpansion(MacroRules x, MacroItems getAttribute getAttributeMacroExpansion = x.getAttributeMacroExpansion() } -query predicate getAttr(MacroRules x, int index, Attr getAttr) { +query predicate getAttr(MacroRules x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.ql b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.ql index 11450061ab03..afee0c3752a3 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.ql +++ b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(MatchArm x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(MatchArm x, int index, Attr getAttr) { +query predicate getAttr(MatchArm x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.ql b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.ql index 5565aeafc7d2..23c9001cb230 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.ql +++ b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.ql @@ -8,6 +8,6 @@ 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) { +query predicate getAttr(MatchArmList x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.ql b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.ql index c8cc9448d5e2..f6bead25f6b7 100644 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.ql +++ b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(MatchExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(MatchExpr x, int index, Attr getAttr) { +query predicate getAttr(MatchExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql index 8ecc14ee820f..326cde39ab9f 100644 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql @@ -8,7 +8,7 @@ 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) { +query predicate getAttr(MethodCallExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Module/Module.ql b/rust/ql/test/extractor-tests/generated/Module/Module.ql index 8bd4b7af92f5..6b95c094b3ee 100644 --- a/rust/ql/test/extractor-tests/generated/Module/Module.ql +++ b/rust/ql/test/extractor-tests/generated/Module/Module.ql @@ -10,7 +10,7 @@ query predicate getAttributeMacroExpansion(Module x, MacroItems getAttributeMacr getAttributeMacroExpansion = x.getAttributeMacroExpansion() } -query predicate getAttr(Module x, int index, Attr getAttr) { +query predicate getAttr(Module x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/MutRestriction/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/MutRestriction/MISSING_SOURCE.txt new file mode 100644 index 000000000000..7f96b17b1f3c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MutRestriction/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen, do not edit + +After a source file is added in this directory and codegen is run again, test queries +will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.expected b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.expected index 7e8d7f8718b1..c02b6c823544 100644 --- a/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.expected @@ -1,2 +1 @@ | gen_never_type_repr.rs:7:17:7:17 | ! | -| gen_never_type_repr.rs:7:21:7:26 | ! | diff --git a/rust/ql/test/extractor-tests/generated/NotNull/NotNull.expected b/rust/ql/test/extractor-tests/generated/NotNull/NotNull.expected new file mode 100644 index 000000000000..cde11bfed217 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/NotNull/NotNull.expected @@ -0,0 +1 @@ +| gen_not_null.rs:8:54:8:58 | NotNull | diff --git a/rust/ql/test/extractor-tests/generated/NotNull/NotNull.ql b/rust/ql/test/extractor-tests/generated/NotNull/NotNull.ql new file mode 100644 index 000000000000..2c8a984917cd --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/NotNull/NotNull.ql @@ -0,0 +1,5 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +query predicate instances(NotNull x) { toBeTested(x) and not x.isUnknown() } diff --git a/rust/ql/test/extractor-tests/generated/NotNull/gen_not_null.rs b/rust/ql/test/extractor-tests/generated/NotNull/gen_not_null.rs new file mode 100644 index 000000000000..f7bdf40318d2 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/NotNull/gen_not_null.rs @@ -0,0 +1,9 @@ +// generated by codegen, do not edit + +fn test_not_null() -> () { + // The `!null` pattern used in a pattern type to denote a non-null value. Pattern types + // are an experimental, mostly compiler-internal feature (used in the standard library for + // types such as `NonZero` and `NonNull`) and cannot be written directly in stable Rust; + // the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + type NonNull = builtin#pattern_type(*const () is !null); +} diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql index 64208e34bbf0..ab07dd52f9f0 100644 --- a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql +++ b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(OffsetOfExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(OffsetOfExpr x, int index, Attr getAttr) { +query predicate getAttr(OffsetOfExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Param/Param.ql b/rust/ql/test/extractor-tests/generated/Param/Param.ql index ff1a261ef04d..eb1721256d7d 100644 --- a/rust/ql/test/extractor-tests/generated/Param/Param.ql +++ b/rust/ql/test/extractor-tests/generated/Param/Param.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(Param x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(Param x, int index, Attr getAttr) { +query predicate getAttr(Param x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.ql b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.ql index 1074fc3cd009..d62c0964705a 100644 --- a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(ParenExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(ParenExpr x, int index, Attr getAttr) { +query predicate getAttr(ParenExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr.ql b/rust/ql/test/extractor-tests/generated/Path/PathExpr.ql index 87017b801ec5..9f2e9598d7fb 100644 --- a/rust/ql/test/extractor-tests/generated/Path/PathExpr.ql +++ b/rust/ql/test/extractor-tests/generated/Path/PathExpr.ql @@ -8,6 +8,6 @@ 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) { +query predicate getAttr(PathExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/PatternTypeRepr/PatternTypeRepr.expected b/rust/ql/test/extractor-tests/generated/PatternTypeRepr/PatternTypeRepr.expected new file mode 100644 index 000000000000..9e50c1315f74 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/PatternTypeRepr/PatternTypeRepr.expected @@ -0,0 +1,6 @@ +instances +| gen_pattern_type_repr.rs:7:20:7:51 | PatternTypeRepr | +getPat +| gen_pattern_type_repr.rs:7:20:7:51 | PatternTypeRepr | gen_pattern_type_repr.rs:7:48:7:50 | RangePat | +getTypeRepr +| gen_pattern_type_repr.rs:7:20:7:51 | PatternTypeRepr | gen_pattern_type_repr.rs:7:41:7:43 | u32 | diff --git a/rust/ql/test/extractor-tests/generated/PatternTypeRepr/PatternTypeRepr.ql b/rust/ql/test/extractor-tests/generated/PatternTypeRepr/PatternTypeRepr.ql new file mode 100644 index 000000000000..eb0f19358068 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/PatternTypeRepr/PatternTypeRepr.ql @@ -0,0 +1,13 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +query predicate instances(PatternTypeRepr x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPat(PatternTypeRepr x, Pat getPat) { + toBeTested(x) and not x.isUnknown() and getPat = x.getPat() +} + +query predicate getTypeRepr(PatternTypeRepr x, TypeRepr getTypeRepr) { + toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() +} diff --git a/rust/ql/test/extractor-tests/generated/PatternTypeRepr/gen_pattern_type_repr.rs b/rust/ql/test/extractor-tests/generated/PatternTypeRepr/gen_pattern_type_repr.rs new file mode 100644 index 000000000000..ac721868a8e1 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/PatternTypeRepr/gen_pattern_type_repr.rs @@ -0,0 +1,8 @@ +// generated by codegen, do not edit + +fn test_pattern_type_repr() -> () { + // A pattern type, constraining a type to values matching a pattern. Pattern types are an + // experimental, mostly compiler-internal feature and cannot be written directly in stable + // Rust; the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + type NonZero = builtin#pattern_type(u32 is 1..); +} diff --git a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql index 0765d6e07d98..381e78667243 100644 --- a/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql +++ b/rust/ql/test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(PrefixExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(PrefixExpr x, int index, Attr getAttr) { +query predicate getAttr(PrefixExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.ql b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.ql index 69a699f14be5..51ab448b3513 100644 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.ql +++ b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(RangeExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(RangeExpr x, int index, Attr getAttr) { +query predicate getAttr(RangeExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.ql b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.ql index a9ae1f9ae8d4..75fb6437cfba 100644 --- a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.ql +++ b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.ql @@ -16,7 +16,7 @@ query predicate instances( if x.isRaw() then isRaw = "yes" else isRaw = "no" } -query predicate getAttr(RefExpr x, int index, Attr getAttr) { +query predicate getAttr(RefExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/RestPat/RestPat.ql b/rust/ql/test/extractor-tests/generated/RestPat/RestPat.ql index 3754d7fd2f23..503d3a0f561b 100644 --- a/rust/ql/test/extractor-tests/generated/RestPat/RestPat.ql +++ b/rust/ql/test/extractor-tests/generated/RestPat/RestPat.ql @@ -4,6 +4,6 @@ import TestUtils query predicate instances(RestPat x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(RestPat x, int index, Attr getAttr) { +query predicate getAttr(RestPat x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql index 11eeed2222cb..a83dc49b9b70 100644 --- a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(ReturnExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(ReturnExpr x, int index, Attr getAttr) { +query predicate getAttr(ReturnExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.ql b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.ql index 07dd03a406f1..4e7a446bfabe 100644 --- a/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.ql +++ b/rust/ql/test/extractor-tests/generated/SelfParam/SelfParam.ql @@ -13,7 +13,7 @@ query predicate instances( if x.isMut() then isMut = "yes" else isMut = "no" } -query predicate getAttr(SelfParam x, int index, Attr getAttr) { +query predicate getAttr(SelfParam x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.ql b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.ql index 257752e706e6..23afc0e4a34d 100644 --- a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.ql +++ b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(SourceFile x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(SourceFile x, int index, Attr getAttr) { +query predicate getAttr(SourceFile x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Static/Static.ql b/rust/ql/test/extractor-tests/generated/Static/Static.ql index dfd2dd939182..bcc2aaa66b82 100644 --- a/rust/ql/test/extractor-tests/generated/Static/Static.ql +++ b/rust/ql/test/extractor-tests/generated/Static/Static.ql @@ -22,7 +22,7 @@ query predicate getAttributeMacroExpansion(Static x, MacroItems getAttributeMacr getAttributeMacroExpansion = x.getAttributeMacroExpansion() } -query predicate getAttr(Static x, int index, Attr getAttr) { +query predicate getAttr(Static x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/StmtList/StmtList.ql b/rust/ql/test/extractor-tests/generated/StmtList/StmtList.ql index 1dcc1ce6db1e..64896338509a 100644 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList.ql +++ b/rust/ql/test/extractor-tests/generated/StmtList/StmtList.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(StmtList x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(StmtList x, int index, Attr getAttr) { +query predicate getAttr(StmtList x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct.expected index 040a035c249c..a703bbc2d072 100644 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct.expected +++ b/rust/ql/test/extractor-tests/generated/Struct/Struct.expected @@ -3,10 +3,10 @@ instances 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 +getFieldList +| 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.ql b/rust/ql/test/extractor-tests/generated/Struct/Struct.ql index a4cf01bbfdc7..73a8ee4c18b4 100644 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct.ql +++ b/rust/ql/test/extractor-tests/generated/Struct/Struct.ql @@ -14,7 +14,7 @@ query predicate getDeriveMacroExpansion(Struct x, int index, MacroItems getDeriv toBeTested(x) and not x.isUnknown() and getDeriveMacroExpansion = x.getDeriveMacroExpansion(index) } -query predicate getAttr(Struct x, int index, Attr getAttr) { +query predicate getAttr(Struct x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.ql b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.ql index 4b4703c88287..2d912a64e7f5 100644 --- a/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.ql +++ b/rust/ql/test/extractor-tests/generated/StructExprField/StructExprField.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(StructExprField x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(StructExprField x, int index, Attr getAttr) { +query predicate getAttr(StructExprField x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql index dfa2ea4c324a..7f55585646e8 100644 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql +++ b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(StructExprFieldList x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(StructExprFieldList x, int index, Attr getAttr) { +query predicate getAttr(StructExprFieldList x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField.expected index 981fafb354ca..e9bd7c377576 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField.expected +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField.expected @@ -2,6 +2,7 @@ instances | gen_struct_field.rs:7:16:7:21 | x: i32 | isUnsafe: | no | getAttr getDefaultVal +getMutRestriction getName | gen_struct_field.rs:7:16:7:21 | x: i32 | gen_struct_field.rs:7:16:7:16 | x | getTypeRepr diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField.ql b/rust/ql/test/extractor-tests/generated/StructField/StructField.ql index 6db753a5808b..d4dc086c3161 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField.ql +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField.ql @@ -9,7 +9,7 @@ query predicate instances(StructField x, string isUnsafe__label, string isUnsafe if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no" } -query predicate getAttr(StructField x, int index, Attr getAttr) { +query predicate getAttr(StructField x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } @@ -17,6 +17,10 @@ query predicate getDefaultVal(StructField x, ConstArg getDefaultVal) { toBeTested(x) and not x.isUnknown() and getDefaultVal = x.getDefaultVal() } +query predicate getMutRestriction(StructField x, MutRestriction getMutRestriction) { + toBeTested(x) and not x.isUnknown() and getMutRestriction = x.getMutRestriction() +} + query predicate getName(StructField x, Name getName) { toBeTested(x) and not x.isUnknown() and getName = x.getName() } diff --git a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.ql b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.ql index 4b3c605590d5..0c9b71df3dd7 100644 --- a/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.ql +++ b/rust/ql/test/extractor-tests/generated/StructPatField/StructPatField.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(StructPatField x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(StructPatField x, int index, Attr getAttr) { +query predicate getAttr(StructPatField x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.ql b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.ql index bbef174971fe..b04cd6e432e4 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.ql +++ b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList.ql @@ -8,6 +8,6 @@ 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) { +query predicate getAttr(AssocItemList x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait.expected index 9e8d41cb5ff5..c93a13757517 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait.expected @@ -8,6 +8,7 @@ getAssocItemList getAttr getGenericParamList | gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:14:10:30 | <...> | +getImplRestriction 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 | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait.ql b/rust/ql/test/extractor-tests/generated/Trait/Trait.ql index 20e9b7f1e240..dfe87d9bd5a3 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait.ql +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait.ql @@ -23,7 +23,7 @@ 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) { +query predicate getAttr(Trait x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } @@ -31,6 +31,10 @@ query predicate getGenericParamList(Trait x, GenericParamList getGenericParamLis toBeTested(x) and not x.isUnknown() and getGenericParamList = x.getGenericParamList() } +query predicate getImplRestriction(Trait x, ImplRestriction getImplRestriction) { + toBeTested(x) and not x.isUnknown() and getImplRestriction = x.getImplRestriction() +} + query predicate getName(Trait x, Name getName) { toBeTested(x) and not x.isUnknown() and getName = x.getName() } diff --git a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.ql b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.ql index fc42bca14a93..9c24d794602d 100644 --- a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.ql +++ b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(TryExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(TryExpr x, int index, Attr getAttr) { +query predicate getAttr(TryExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.ql b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.ql index 0b49fca4cee8..3fc780bfc5c7 100644 --- a/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.ql +++ b/rust/ql/test/extractor-tests/generated/TupleExpr/TupleExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(TupleExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(TupleExpr x, int index, Attr getAttr) { +query predicate getAttr(TupleExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected index 6c653a9c37f4..56f7369b8ec5 100644 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected +++ b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected @@ -2,6 +2,7 @@ instances | gen_tuple_field.rs:7:14:7:16 | TupleField | | gen_tuple_field.rs:7:19:7:24 | TupleField | getAttr +getMutRestriction 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 | diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql index 01c15ace3ddf..91f5db297d96 100644 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql +++ b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql @@ -4,10 +4,14 @@ import TestUtils query predicate instances(TupleField x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(TupleField x, int index, Attr getAttr) { +query predicate getAttr(TupleField x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } +query predicate getMutRestriction(TupleField x, MutRestriction getMutRestriction) { + toBeTested(x) and not x.isUnknown() and getMutRestriction = x.getMutRestriction() +} + query predicate getTypeRepr(TupleField x, TypeRepr getTypeRepr) { toBeTested(x) and not x.isUnknown() and getTypeRepr = x.getTypeRepr() } diff --git a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.ql b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.ql index 925be1f44a30..4d337609cddf 100644 --- a/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.ql +++ b/rust/ql/test/extractor-tests/generated/TypeAlias/TypeAlias.ql @@ -15,7 +15,7 @@ query predicate getAttributeMacroExpansion(TypeAlias x, MacroItems getAttributeM getAttributeMacroExpansion = x.getAttributeMacroExpansion() } -query predicate getAttr(TypeAlias x, int index, Attr getAttr) { +query predicate getAttr(TypeAlias x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.ql b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.ql index 61f38aab8352..a2be2a61baf0 100644 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.ql +++ b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(TypeParam x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(TypeParam x, int index, Attr getAttr) { +query predicate getAttr(TypeParam x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql index 13324f21bf24..b17002defbc6 100644 --- a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql +++ b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql @@ -4,6 +4,6 @@ import TestUtils query predicate instances(UnderscoreExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(UnderscoreExpr x, int index, Attr getAttr) { +query predicate getAttr(UnderscoreExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Union/Union.expected b/rust/ql/test/extractor-tests/generated/Union/Union.expected index b83a39b708da..b52769ad2fbe 100644 --- a/rust/ql/test/extractor-tests/generated/Union/Union.expected +++ b/rust/ql/test/extractor-tests/generated/Union/Union.expected @@ -6,7 +6,7 @@ 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 +getStructFieldList +| 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.ql b/rust/ql/test/extractor-tests/generated/Union/Union.ql index 922e8ef4a591..da29f652ce2f 100644 --- a/rust/ql/test/extractor-tests/generated/Union/Union.ql +++ b/rust/ql/test/extractor-tests/generated/Union/Union.ql @@ -14,7 +14,7 @@ query predicate getDeriveMacroExpansion(Union x, int index, MacroItems getDerive toBeTested(x) and not x.isUnknown() and getDeriveMacroExpansion = x.getDeriveMacroExpansion(index) } -query predicate getAttr(Union x, int index, Attr getAttr) { +query predicate getAttr(Union x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Use/Use.ql b/rust/ql/test/extractor-tests/generated/Use/Use.ql index e6940ef9e245..119943bb7d71 100644 --- a/rust/ql/test/extractor-tests/generated/Use/Use.ql +++ b/rust/ql/test/extractor-tests/generated/Use/Use.ql @@ -10,7 +10,7 @@ query predicate getAttributeMacroExpansion(Use x, MacroItems getAttributeMacroEx getAttributeMacroExpansion = x.getAttributeMacroExpansion() } -query predicate getAttr(Use x, int index, Attr getAttr) { +query predicate getAttr(Use x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant.ql b/rust/ql/test/extractor-tests/generated/Variant/Variant.ql index b5e63ff3ceff..9e4b13be85e9 100644 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant.ql +++ b/rust/ql/test/extractor-tests/generated/Variant/Variant.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(Variant x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(Variant x, int index, Attr getAttr) { +query predicate getAttr(Variant x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected index 2d032d6eee46..b843c1448381 100644 --- a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected +++ b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected @@ -1,4 +1,4 @@ instances | gen_visibility.rs:7:7:7:9 | pub | | lib.rs:1:1:1:3 | pub | -getPath +getVisibilityInner diff --git a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.ql b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.ql index 651d0aecb2f3..c3093262904b 100644 --- a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.ql +++ b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.ql @@ -4,6 +4,6 @@ import TestUtils 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() +query predicate getVisibilityInner(Visibility x, VisibilityInner getVisibilityInner) { + toBeTested(x) and not x.isUnknown() and getVisibilityInner = x.getVisibilityInner() } diff --git a/rust/ql/test/extractor-tests/generated/VisibilityInner/VisibilityInner.expected b/rust/ql/test/extractor-tests/generated/VisibilityInner/VisibilityInner.expected new file mode 100644 index 000000000000..c2de2f439823 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/VisibilityInner/VisibilityInner.expected @@ -0,0 +1,4 @@ +instances +| gen_visibility_inner.rs:5:8:5:20 | VisibilityInner | +getPath +| gen_visibility_inner.rs:5:8:5:20 | VisibilityInner | gen_visibility_inner.rs:5:12:5:19 | ...::bar | diff --git a/rust/ql/test/extractor-tests/generated/VisibilityInner/VisibilityInner.ql b/rust/ql/test/extractor-tests/generated/VisibilityInner/VisibilityInner.ql new file mode 100644 index 000000000000..9bc1434fce57 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/VisibilityInner/VisibilityInner.ql @@ -0,0 +1,9 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +query predicate instances(VisibilityInner x) { toBeTested(x) and not x.isUnknown() } + +query predicate getPath(VisibilityInner x, Path getPath) { + toBeTested(x) and not x.isUnknown() and getPath = x.getPath() +} diff --git a/rust/ql/test/extractor-tests/generated/VisibilityInner/gen_visibility_inner.rs b/rust/ql/test/extractor-tests/generated/VisibilityInner/gen_visibility_inner.rs new file mode 100644 index 000000000000..70dd4bad6820 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/VisibilityInner/gen_visibility_inner.rs @@ -0,0 +1,7 @@ +// generated by codegen, do not edit + +fn test_visibility_inner() -> () { + // The parenthesized inner part of a visibility modifier or restriction, such as the `(in path)` in `pub(in path)`, or the `(crate)` in `pub(crate)`. For example the `(in foo::bar)` in: + pub(in foo::bar) struct S; + // ^^^^^^^^^^^^ +} diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql index 67a0dc562ad2..47b19361ed83 100644 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql +++ b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql @@ -12,7 +12,7 @@ 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) { +query predicate getAttr(WhileExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.ql b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.ql index 88d4e570a1e8..64db2d71ae3e 100644 --- a/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.ql +++ b/rust/ql/test/extractor-tests/generated/YeetExpr/YeetExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(YeetExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(YeetExpr x, int index, Attr getAttr) { +query predicate getAttr(YeetExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.ql b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.ql index 68281d39d9e9..4680d571066f 100644 --- a/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.ql +++ b/rust/ql/test/extractor-tests/generated/YieldExpr/YieldExpr.ql @@ -4,7 +4,7 @@ import TestUtils query predicate instances(YieldExpr x) { toBeTested(x) and not x.isUnknown() } -query predicate getAttr(YieldExpr x, int index, Attr getAttr) { +query predicate getAttr(YieldExpr x, int index, AnyAttr getAttr) { toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) } diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index 53067409287f..a21af0bfc183 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -174,7 +174,7 @@ macro_expansion.rs: # 1| getPath(): [Path] MyTrait # 1| getSegment(): [PathSegment] MyTrait # 1| getIdentifier(): [NameRef] MyTrait -# 3| getItem(1): [Function] (item with attribute macro expansion) +# 3| getItem(1): [Function] fn # 4| getAttributeMacroExpansion(): [MacroItems] MacroItems # 4| getItem(0): [Function] fn foo # 4| getParamList(): [ParamList] ParamList @@ -190,7 +190,7 @@ macro_expansion.rs: # 5| getIdentifier(): [NameRef] concat # 5| getTokenTree(): [TokenTree] TokenTree # 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" -# 7| getStatement(1): [Function] (item with attribute macro expansion) +# 7| getStatement(1): [Function] fn # 8| getAttributeMacroExpansion(): [MacroItems] MacroItems # 8| getItem(0): [Function] fn inner_0 # 8| getParamList(): [ParamList] ParamList @@ -238,7 +238,7 @@ macro_expansion.rs: # 5| getIdentifier(): [NameRef] concat # 5| getTokenTree(): [TokenTree] TokenTree # 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" -# 7| getStatement(1): [Function] (item with attribute macro expansion) +# 7| getStatement(1): [Function] fn # 8| getAttributeMacroExpansion(): [MacroItems] MacroItems # 8| getItem(0): [Function] fn inner_0 # 8| getParamList(): [ParamList] ParamList @@ -277,9 +277,9 @@ macro_expansion.rs: # 3| getPath(): [Path] add_one # 3| getSegment(): [PathSegment] add_one # 3| getIdentifier(): [NameRef] add_one -# 14| getItem(2): [Function] (item with attribute macro expansion) +# 14| getItem(2): [Function] fn # 15| getAttributeMacroExpansion(): [MacroItems] MacroItems -# 15| getItem(0): [Function] (item with attribute macro expansion) +# 15| getItem(0): [Function] fn # 16| getAttributeMacroExpansion(): [MacroItems] MacroItems # 16| getItem(0): [Function] fn bar_0 # 16| getParamList(): [ParamList] ParamList @@ -298,7 +298,7 @@ macro_expansion.rs: # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 15| getItem(1): [Function] (item with attribute macro expansion) +# 15| getItem(1): [Function] fn # 16| getAttributeMacroExpansion(): [MacroItems] MacroItems # 16| getItem(0): [Function] fn bar_1 # 16| getParamList(): [ParamList] ParamList @@ -328,7 +328,7 @@ macro_expansion.rs: # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 18| getItem(3): [Function] (item with attribute macro expansion) +# 18| getItem(3): [Function] fn # 18| getAttributeMacroExpansion(): [MacroItems] MacroItems # 18| getAttr(0): [Attr] Attr # 18| getMeta(): [PathMeta] PathMeta @@ -343,7 +343,7 @@ macro_expansion.rs: # 28| getVisibility(): [Visibility] pub # 30| getItem(6): [Impl] impl S { ... } # 30| getAssocItemList(): [AssocItemList] AssocItemList -# 31| getAssocItem(0): [Function] (item with attribute macro expansion) +# 31| getAssocItem(0): [Function] fn # 32| getAttributeMacroExpansion(): [MacroItems] MacroItems # 32| getItem(0): [Function] fn bzz_0 # 32| getParamList(): [ParamList] ParamList diff --git a/rust/ql/test/extractor-tests/macro-expansion/test.expected b/rust/ql/test/extractor-tests/macro-expansion/test.expected index 108fa52ced94..65ee3f3e7fad 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/test.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/test.expected @@ -1,19 +1,19 @@ attribute_macros -| macro_expansion.rs:3:1:12:1 | (item with attribute macro expansion) | 0 | macro_expansion.rs:4:1:12:1 | fn foo | -| macro_expansion.rs:3:1:12:1 | (item with attribute macro expansion) | 1 | macro_expansion.rs:4:1:12:1 | fn foo_new | -| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | -| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | -| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | -| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | -| macro_expansion.rs:14:1:16:15 | (item with attribute macro expansion) | 0 | macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | -| macro_expansion.rs:14:1:16:15 | (item with attribute macro expansion) | 1 | macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | -| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 0 | macro_expansion.rs:16:1:16:15 | fn bar_0 | -| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 0 | macro_expansion.rs:16:1:16:15 | fn bar_1 | -| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 1 | macro_expansion.rs:16:1:16:15 | fn bar_0_new | -| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 1 | macro_expansion.rs:16:1:16:15 | fn bar_1_new | -| macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 0 | macro_expansion.rs:32:5:34:5 | fn bzz_0 | -| macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 1 | macro_expansion.rs:32:5:34:5 | fn bzz_1 | -| macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 2 | macro_expansion.rs:32:5:34:5 | fn bzz_2 | +| macro_expansion.rs:3:1:12:1 | fn | 0 | macro_expansion.rs:4:1:12:1 | fn foo | +| macro_expansion.rs:3:1:12:1 | fn | 1 | macro_expansion.rs:4:1:12:1 | fn foo_new | +| macro_expansion.rs:7:5:8:17 | fn | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | +| macro_expansion.rs:7:5:8:17 | fn | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | +| macro_expansion.rs:7:5:8:17 | fn | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | +| macro_expansion.rs:7:5:8:17 | fn | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | +| macro_expansion.rs:14:1:16:15 | fn | 0 | macro_expansion.rs:15:1:16:15 | fn | +| macro_expansion.rs:14:1:16:15 | fn | 1 | macro_expansion.rs:15:1:16:15 | fn | +| macro_expansion.rs:15:1:16:15 | fn | 0 | macro_expansion.rs:16:1:16:15 | fn bar_0 | +| macro_expansion.rs:15:1:16:15 | fn | 0 | macro_expansion.rs:16:1:16:15 | fn bar_1 | +| macro_expansion.rs:15:1:16:15 | fn | 1 | macro_expansion.rs:16:1:16:15 | fn bar_0_new | +| macro_expansion.rs:15:1:16:15 | fn | 1 | macro_expansion.rs:16:1:16:15 | fn bar_1_new | +| macro_expansion.rs:31:5:34:5 | fn | 0 | macro_expansion.rs:32:5:34:5 | fn bzz_0 | +| macro_expansion.rs:31:5:34:5 | fn | 1 | macro_expansion.rs:32:5:34:5 | fn bzz_1 | +| macro_expansion.rs:31:5:34:5 | fn | 2 | macro_expansion.rs:32:5:34:5 | fn bzz_2 | derive_macros | macro_expansion.rs:83:1:86:1 | struct MyDerive | 0 | 0 | macro_expansion.rs:83:1:86:1 | impl ...::Debug for MyDerive::<...> { ... } | | macro_expansion.rs:88:1:92:1 | enum MyDeriveEnum | 0 | 0 | macro_expansion.rs:88:1:92:1 | impl ...::PartialEq for MyDeriveEnum::<...> { ... } | diff --git a/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected b/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected index 78b3d8cc786e..8f167fdbb3ba 100644 --- a/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected @@ -5,7 +5,7 @@ lib.rs: # 1| getVisibility(): [Visibility] pub macro_in_library.rs: # 1| [SourceFile] SourceFile -# 1| getItem(0): [MacroCall] (item with attribute macro expansion) +# 1| getItem(0): [MacroCall] !... # 2| getAttributeMacroExpansion(): [MacroItems] MacroItems # 2| getItem(0): [Function] fn foo # 2| getParamList(): [ParamList] ParamList diff --git a/rust/ql/test/library-tests/controlflow/BasicBlocks.expected b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected index 80357ae29f86..94760d6875e1 100644 --- a/rust/ql/test/library-tests/controlflow/BasicBlocks.expected +++ b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected @@ -743,7 +743,6 @@ dominates | test.rs:529:5:537:5 | enter fn const_block_assert | test.rs:533:21:533:48 | [boolean(true)] ! ... | | test.rs:529:5:537:5 | enter fn const_block_assert | test.rs:533:21:533:48 | if ... {...} | | test.rs:533:13:533:19 | ExprStmt | test.rs:533:13:533:19 | ExprStmt | -| test.rs:533:13:533:19 | enter fn panic_cold_explicit | test.rs:533:13:533:19 | enter fn panic_cold_explicit | | test.rs:533:21:533:48 | [boolean(false)] ! ... | test.rs:533:21:533:48 | [boolean(false)] ! ... | | test.rs:533:21:533:48 | [boolean(true)] ! ... | test.rs:533:13:533:19 | ExprStmt | | test.rs:533:21:533:48 | [boolean(true)] ! ... | test.rs:533:21:533:48 | [boolean(true)] ! ... | @@ -751,7 +750,6 @@ dominates | test.rs:539:5:548:5 | enter fn const_block_panic | test.rs:539:5:548:5 | enter fn const_block_panic | | test.rs:539:5:548:5 | enter fn const_block_panic | test.rs:541:9:546:9 | if false {...} | | test.rs:541:9:546:9 | if false {...} | test.rs:541:9:546:9 | if false {...} | -| test.rs:544:17:544:22 | enter fn panic_cold_explicit | test.rs:544:17:544:22 | enter fn panic_cold_explicit | | test.rs:551:1:556:1 | enter fn dead_code | test.rs:551:1:556:1 | enter fn dead_code | | test.rs:551:1:556:1 | enter fn dead_code | test.rs:553:9:553:17 | ExprStmt | | test.rs:553:9:553:17 | ExprStmt | test.rs:553:9:553:17 | ExprStmt | @@ -1424,7 +1422,6 @@ postDominance | test.rs:529:5:537:5 | enter fn const_block_assert | test.rs:529:5:537:5 | enter fn const_block_assert | | test.rs:533:13:533:19 | ExprStmt | test.rs:533:13:533:19 | ExprStmt | | test.rs:533:13:533:19 | ExprStmt | test.rs:533:21:533:48 | [boolean(true)] ! ... | -| test.rs:533:13:533:19 | enter fn panic_cold_explicit | test.rs:533:13:533:19 | enter fn panic_cold_explicit | | test.rs:533:21:533:48 | [boolean(false)] ! ... | test.rs:533:21:533:48 | [boolean(false)] ! ... | | test.rs:533:21:533:48 | [boolean(true)] ! ... | test.rs:533:21:533:48 | [boolean(true)] ! ... | | test.rs:533:21:533:48 | if ... {...} | test.rs:529:5:537:5 | enter fn const_block_assert | @@ -1435,7 +1432,6 @@ postDominance | test.rs:539:5:548:5 | enter fn const_block_panic | test.rs:539:5:548:5 | enter fn const_block_panic | | test.rs:541:9:546:9 | if false {...} | test.rs:539:5:548:5 | enter fn const_block_panic | | test.rs:541:9:546:9 | if false {...} | test.rs:541:9:546:9 | if false {...} | -| test.rs:544:17:544:22 | enter fn panic_cold_explicit | test.rs:544:17:544:22 | enter fn panic_cold_explicit | | test.rs:551:1:556:1 | enter fn dead_code | test.rs:551:1:556:1 | enter fn dead_code | | test.rs:553:9:553:17 | ExprStmt | test.rs:551:1:556:1 | enter fn dead_code | | test.rs:553:9:553:17 | ExprStmt | test.rs:553:9:553:17 | ExprStmt | diff --git a/rust/ql/test/library-tests/controlflow/Cfg.expected b/rust/ql/test/library-tests/controlflow/Cfg.expected index 2d1036c93c93..7517c8be81f5 100644 --- a/rust/ql/test/library-tests/controlflow/Cfg.expected +++ b/rust/ql/test/library-tests/controlflow/Cfg.expected @@ -1288,20 +1288,13 @@ edges | test.rs:529:41:537:5 | { ... } | test.rs:529:5:537:5 | exit fn const_block_assert (normal) | | | test.rs:532:9:534:9 | ExprStmt | test.rs:533:13:533:50 | ExprStmt | | | test.rs:532:9:534:9 | { ... } | test.rs:536:9:536:10 | 42 | | +| test.rs:533:13:533:19 | "explicit panic" | test.rs:533:13:533:19 | ...::panic(...) | | +| test.rs:533:13:533:19 | ...::panic | test.rs:533:13:533:19 | "explicit panic" | | +| test.rs:533:13:533:19 | ...::panic(...) | test.rs:533:13:533:19 | { ... } | | | test.rs:533:13:533:19 | ...::panic_2021!... | test.rs:533:13:533:19 | MacroExpr | | -| test.rs:533:13:533:19 | ...::panic_explicit | test.rs:533:13:533:19 | ...::panic_explicit(...) | | -| test.rs:533:13:533:19 | ...::panic_explicit(...) | test.rs:533:13:533:19 | { ... } | | -| test.rs:533:13:533:19 | ExprStmt | test.rs:533:13:533:19 | fn panic_cold_explicit | | -| test.rs:533:13:533:19 | ExprStmt | test.rs:533:13:533:19 | panic_cold_explicit | | +| test.rs:533:13:533:19 | ExprStmt | test.rs:533:13:533:19 | ...::panic | | | test.rs:533:13:533:19 | MacroExpr | test.rs:533:13:533:19 | { ... } | | -| test.rs:533:13:533:19 | enter fn panic_cold_explicit | test.rs:533:13:533:19 | ...::panic_explicit | | -| test.rs:533:13:533:19 | exit fn panic_cold_explicit (normal) | test.rs:533:13:533:19 | exit fn panic_cold_explicit | | -| test.rs:533:13:533:19 | fn panic_cold_explicit | test.rs:533:13:533:19 | ExprStmt | | -| test.rs:533:13:533:19 | panic_cold_explicit | test.rs:533:13:533:19 | panic_cold_explicit(...) | | -| test.rs:533:13:533:19 | panic_cold_explicit(...) | test.rs:533:13:533:19 | { ... } | | | test.rs:533:13:533:19 | { ... } | test.rs:533:13:533:19 | ...::panic_2021!... | | -| test.rs:533:13:533:19 | { ... } | test.rs:533:13:533:19 | exit fn panic_cold_explicit (normal) | | -| test.rs:533:13:533:19 | { ... } | test.rs:533:13:533:19 | { ... } | | | test.rs:533:13:533:19 | { ... } | test.rs:533:21:533:48 | if ... {...} | | | test.rs:533:13:533:49 | MacroExpr | test.rs:532:9:534:9 | { ... } | | | test.rs:533:13:533:49 | assert!... | test.rs:533:13:533:49 | MacroExpr | | @@ -1323,11 +1316,6 @@ edges | test.rs:541:9:546:9 | ExprStmt | test.rs:541:12:541:16 | false | | | test.rs:541:9:546:9 | if false {...} | test.rs:547:9:547:9 | N | | | test.rs:541:12:541:16 | false | test.rs:541:9:546:9 | if false {...} | false | -| test.rs:544:17:544:22 | ...::panic_explicit | test.rs:544:17:544:22 | ...::panic_explicit(...) | | -| test.rs:544:17:544:22 | ...::panic_explicit(...) | test.rs:544:17:544:22 | { ... } | | -| test.rs:544:17:544:22 | enter fn panic_cold_explicit | test.rs:544:17:544:22 | ...::panic_explicit | | -| test.rs:544:17:544:22 | exit fn panic_cold_explicit (normal) | test.rs:544:17:544:22 | exit fn panic_cold_explicit | | -| test.rs:544:17:544:22 | { ... } | test.rs:544:17:544:22 | exit fn panic_cold_explicit (normal) | | | test.rs:547:9:547:9 | N | test.rs:539:35:548:5 | { ... } | | | test.rs:551:1:556:1 | enter fn dead_code | test.rs:552:5:554:5 | ExprStmt | | | test.rs:551:1:556:1 | exit fn dead_code (normal) | test.rs:551:1:556:1 | exit fn dead_code | | 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 e13411a7ab03..6fe331bb4d9b 100644 --- a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected @@ -196,7 +196,9 @@ edges | main.rs:342:9:342:9 | a | main.rs:343:10:343:10 | a | provenance | | | main.rs:342:13:342:26 | async_source(...) | main.rs:342:9:342:9 | a | provenance | | | main.rs:346:13:346:13 | c | main.rs:347:14:347:14 | c | provenance | | +| main.rs:346:13:346:13 | c | main.rs:348:9:348:9 | c | provenance | | | main.rs:346:17:346:25 | source(...) | main.rs:346:13:346:13 | c | provenance | | +| main.rs:348:9:348:9 | c | main.rs:350:10:350:16 | await b | provenance | | | main.rs:354:9:354:9 | a | main.rs:355:10:355:10 | a | provenance | | | main.rs:354:13:354:55 | ...::block_on(...) | main.rs:354:9:354:9 | a | provenance | | | main.rs:354:41:354:54 | async_source(...) | main.rs:354:13:354:55 | ...::block_on(...) | provenance | MaD:3 | @@ -443,6 +445,8 @@ nodes | main.rs:346:13:346:13 | c | semmle.label | c | | main.rs:346:17:346:25 | source(...) | semmle.label | source(...) | | main.rs:347:14:347:14 | c | semmle.label | c | +| main.rs:348:9:348:9 | c | semmle.label | c | +| main.rs:350:10:350:16 | await b | semmle.label | await b | | main.rs:354:9:354:9 | a | semmle.label | a | | main.rs:354:13:354:55 | ...::block_on(...) | semmle.label | ...::block_on(...) | | main.rs:354:41:354:54 | async_source(...) | semmle.label | async_source(...) | @@ -539,6 +543,7 @@ testFailures | main.rs:337:10:337:10 | a | main.rs:336:13:336:21 | source(...) | main.rs:337:10:337:10 | a | $@ | main.rs:336:13:336:21 | source(...) | source(...) | | main.rs:343:10:343:10 | a | main.rs:336:13:336:21 | source(...) | main.rs:343:10:343:10 | a | $@ | main.rs:336:13:336:21 | source(...) | source(...) | | main.rs:347:14:347:14 | c | main.rs:346:17:346:25 | source(...) | main.rs:347:14:347:14 | c | $@ | main.rs:346:17:346:25 | source(...) | source(...) | +| main.rs:350:10:350:16 | await b | main.rs:346:17:346:25 | source(...) | main.rs:350:10:350:16 | await b | $@ | main.rs:346:17:346:25 | source(...) | source(...) | | main.rs:355:10:355:10 | a | main.rs:336:13:336:21 | source(...) | main.rs:355:10:355:10 | a | $@ | main.rs:336:13:336:21 | source(...) | source(...) | | main.rs:404:14:404:15 | n1 | main.rs:379:13:379:21 | source(...) | main.rs:404:14:404:15 | n1 | $@ | main.rs:379:13:379:21 | source(...) | source(...) | | main.rs:408:14:408:15 | n2 | main.rs:379:13:379:21 | source(...) | main.rs:408:14:408:15 | n2 | $@ | main.rs:379:13:379: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 b3a3af1be95e..2d8975e153a5 100644 --- a/rust/ql/test/library-tests/dataflow/global/main.rs +++ b/rust/ql/test/library-tests/dataflow/global/main.rs @@ -347,7 +347,7 @@ async fn test_async_await_async_part() { sink(c); // $ hasValueFlow=2 c }; - sink(b.await); // $ MISSING: hasValueFlow=2 + sink(b.await); // $ hasValueFlow=2 } fn test_async_await() { diff --git a/rust/ql/test/library-tests/dataflow/lambdas/Cargo.lock b/rust/ql/test/library-tests/dataflow/lambdas/Cargo.lock index b9856cfaf77d..5786eb119a9a 100644 --- a/rust/ql/test/library-tests/dataflow/lambdas/Cargo.lock +++ b/rust/ql/test/library-tests/dataflow/lambdas/Cargo.lock @@ -2,6 +2,150 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "futures" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-executor" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" + +[[package]] +name = "futures-macro" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "syn" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "test" version = "0.0.1" +dependencies = [ + "futures", +] + +[[package]] +name = "unicode-ident" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" diff --git a/rust/ql/test/library-tests/dataflow/lambdas/inline-flow.expected b/rust/ql/test/library-tests/dataflow/lambdas/inline-flow.expected index 08fb2a66015e..6b9075dd7b0e 100644 --- a/rust/ql/test/library-tests/dataflow/lambdas/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/lambdas/inline-flow.expected @@ -63,6 +63,14 @@ edges | main.rs:111:26:111:36 | \|...\| ... : ... => .. [captured a] | main.rs:111:35:111:35 | a | provenance | heuristic-callback | | main.rs:112:26:112:36 | \|...\| ... : ... => .. [captured a] | main.rs:112:35:112:35 | a | provenance | heuristic-callback | | main.rs:113:26:113:36 | \|...\| ... : ... => .. [captured a] | main.rs:113:35:113:35 | a | provenance | heuristic-callback | +| main.rs:120:30:120:40 | source(...) | main.rs:121:14:121:25 | await future | provenance | | +| main.rs:125:20:125:30 | source(...) | main.rs:126:9:128:9 | { ... } : ... => .. [captured data] | provenance | | +| main.rs:126:9:128:9 | { ... } : ... => .. [captured data] | main.rs:127:18:127:21 | data | provenance | | +| main.rs:133:20:133:30 | source(...) | main.rs:135:14:135:19 | future [captured data] | provenance | | +| main.rs:135:14:135:19 | future [captured data] | main.rs:134:30:134:33 | data | provenance | | +| main.rs:135:14:135:19 | future [captured data] | main.rs:135:14:135:25 | await future | provenance | | +| main.rs:141:9:143:9 | [post] { ... } : ... => .. [captured captured] | main.rs:145:14:145:21 | captured | provenance | | +| main.rs:142:24:142:34 | source(...) | main.rs:141:9:143:9 | [post] { ... } : ... => .. [captured captured] | provenance | | nodes | main.rs:10:20:10:52 | if cond {...} else {...} | semmle.label | if cond {...} else {...} | | main.rs:10:30:10:39 | source(...) | semmle.label | source(...) | @@ -138,9 +146,22 @@ nodes | main.rs:112:35:112:35 | a | semmle.label | a | | main.rs:113:26:113:36 | \|...\| ... : ... => .. [captured a] | semmle.label | \|...\| ... : ... => .. [captured a] | | main.rs:113:35:113:35 | a | semmle.label | a | +| main.rs:120:30:120:40 | source(...) | semmle.label | source(...) | +| main.rs:121:14:121:25 | await future | semmle.label | await future | +| main.rs:125:20:125:30 | source(...) | semmle.label | source(...) | +| main.rs:126:9:128:9 | { ... } : ... => .. [captured data] | semmle.label | { ... } : ... => .. [captured data] | +| main.rs:127:18:127:21 | data | semmle.label | data | +| main.rs:133:20:133:30 | source(...) | semmle.label | source(...) | +| main.rs:134:30:134:33 | data | semmle.label | data | +| main.rs:135:14:135:19 | future [captured data] | semmle.label | future [captured data] | +| main.rs:135:14:135:25 | await future | semmle.label | await future | +| main.rs:141:9:143:9 | [post] { ... } : ... => .. [captured captured] | semmle.label | [post] { ... } : ... => .. [captured captured] | +| main.rs:142:24:142:34 | source(...) | semmle.label | source(...) | +| main.rs:145:14:145:21 | captured | semmle.label | captured | subpaths | main.rs:29:21:29:21 | a | main.rs:27:20:27:23 | ... | main.rs:27:26:27:52 | if cond {...} else {...} | main.rs:29:13:29:22 | f(...) | | main.rs:77:21:77:21 | a | main.rs:66:24:66:32 | ...: i64 | main.rs:66:42:72:1 | { ... } | main.rs:77:13:77:22 | f(...) | +| main.rs:135:14:135:19 | future [captured data] | main.rs:134:30:134:33 | data | main.rs:134:30:134:33 | data | main.rs:135:14:135:25 | await future | testFailures #select | main.rs:11:10:11:16 | f(...) | main.rs:10:30:10:39 | source(...) | main.rs:11:10:11:16 | f(...) | $@ | main.rs:10:30:10:39 | source(...) | source(...) | @@ -161,3 +182,7 @@ testFailures | main.rs:111:35:111:35 | a | main.rs:109:13:109:22 | source(...) | main.rs:111:35:111:35 | a | $@ | main.rs:109:13:109:22 | source(...) | source(...) | | main.rs:112:35:112:35 | a | main.rs:109:13:109:22 | source(...) | main.rs:112:35:112:35 | a | $@ | main.rs:109:13:109:22 | source(...) | source(...) | | main.rs:113:35:113:35 | a | main.rs:109:13:109:22 | source(...) | main.rs:113:35:113:35 | a | $@ | main.rs:109:13:109:22 | source(...) | source(...) | +| main.rs:121:14:121:25 | await future | main.rs:120:30:120:40 | source(...) | main.rs:121:14:121:25 | await future | $@ | main.rs:120:30:120:40 | source(...) | source(...) | +| main.rs:127:18:127:21 | data | main.rs:125:20:125:30 | source(...) | main.rs:127:18:127:21 | data | $@ | main.rs:125:20:125:30 | source(...) | source(...) | +| main.rs:135:14:135:25 | await future | main.rs:133:20:133:30 | source(...) | main.rs:135:14:135:25 | await future | $@ | main.rs:133:20:133:30 | source(...) | source(...) | +| main.rs:145:14:145:21 | captured | main.rs:142:24:142:34 | source(...) | main.rs:145:14:145:21 | captured | $@ | main.rs:142:24:142:34 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/lambdas/main.rs b/rust/ql/test/library-tests/dataflow/lambdas/main.rs index 742974eaab9c..650734bdd149 100644 --- a/rust/ql/test/library-tests/dataflow/lambdas/main.rs +++ b/rust/ql/test/library-tests/dataflow/lambdas/main.rs @@ -113,6 +113,61 @@ fn test_external_call() { may_invoke_callback4(|x| sink(a)); // $ hasValueFlow=81 } +mod async_blocks { + use super::{sink, source}; + + async fn async_block_flow_out() { + let future = async { source(206) }; + sink(future.await); // $ hasValueFlow=206 + } + + async fn async_block_flow_in() { + let data = source(207); + async { + sink(data); // $ hasValueFlow=207 + } + .await; + } + + async fn async_block_flow_through() { + let data = source(208); + let future = async { data }; + sink(future.await); // $ hasValueFlow=208 + } + + async fn async_block_captured_variable() { + let mut captured = 1; + sink(captured); + async { + captured = source(209); + } + .await; + sink(captured); // $ hasValueFlow=209 + } + + async fn boxed_async_block_captured_variable() { + let mut captured = 1; + sink(captured); + Box::pin(async { + captured = source(210); + }) + .await; + sink(captured); // $ MISSING: hasValueFlow=210 + } + + async fn test_async_blocks() { + async_block_flow_out().await; + async_block_flow_in().await; + async_block_flow_through().await; + async_block_captured_variable().await; + boxed_async_block_captured_variable().await; + } + + pub fn main() { + futures::executor::block_on(test_async_blocks()); + } +} + fn main() { closure_flow_out(); closure_flow_in(); @@ -123,4 +178,5 @@ fn main() { function_flows_through(); test_apply(); test_apply_wrap(); + async_blocks::main(); } diff --git a/rust/ql/test/library-tests/dataflow/lambdas/options.yml b/rust/ql/test/library-tests/dataflow/lambdas/options.yml new file mode 100644 index 000000000000..72214fcdfc77 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/lambdas/options.yml @@ -0,0 +1,3 @@ +qltest_cargo_check: true +qltest_dependencies: + - futures = { version = "0.3" } diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 8f50c8d56e97..c6984639dcef 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -763,6 +763,7 @@ localStep | main.rs:535:20:535:20 | x | main.rs:535:20:535:20 | x | | main.rs:536:5:536:6 | [post] vs | main.rs:538:14:538:15 | vs | | main.rs:536:5:536:6 | vs | main.rs:538:14:538:15 | vs | +| main.rs:536:24:536:35 | \|...\| ... | main.rs:536:24:536:35 | \|...\| ... | | main.rs:536:25:536:25 | ... | main.rs:536:25:536:25 | x | | main.rs:536:25:536:25 | [SSA] x | main.rs:536:34:536:34 | x | | main.rs:536:25:536:25 | x | main.rs:536:25:536:25 | [SSA] x | @@ -944,26 +945,57 @@ readStep | main.rs:519:10:519:11 | [post] vs [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:519:10:519:11 | [post] vs | | main.rs:519:10:519:14 | vs[0] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:519:10:519:14 | vs[0] | | main.rs:520:10:520:35 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:520:10:520:35 | * ... | +| main.rs:520:11:520:12 | [post] vs [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:520:11:520:12 | [post] vs [implicit deref 0 in state after deref] | +| main.rs:520:11:520:12 | [post] vs [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:520:11:520:12 | [post] vs | +| main.rs:520:11:520:12 | vs [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:520:11:520:12 | vs [implicit deref 0 in state after deref] | +| main.rs:520:11:520:19 | [post] vs.iter() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:520:11:520:19 | [post] vs.iter() | | main.rs:520:11:520:35 | [post] ... .unwrap() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | [post] ... .unwrap() | | main.rs:521:10:521:35 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:521:10:521:35 | * ... | +| main.rs:521:11:521:12 | [post] vs [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:521:11:521:12 | [post] vs [implicit deref 0 in state after deref] | +| main.rs:521:11:521:12 | [post] vs [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:521:11:521:12 | [post] vs | +| main.rs:521:11:521:12 | vs [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:521:11:521:12 | vs [implicit deref 0 in state after deref] | +| main.rs:521:11:521:19 | [post] vs.iter() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:521:11:521:19 | [post] vs.iter() | | main.rs:521:11:521:35 | [post] ... .unwrap() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | [post] ... .unwrap() | | main.rs:523:14:523:15 | vs | file://:0:0:0:0 | element | main.rs:523:9:523:9 | v | | main.rs:526:9:526:10 | &... | file://:0:0:0:0 | &ref | main.rs:526:10:526:10 | v | +| main.rs:526:15:526:16 | [post] vs [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:526:15:526:16 | [post] vs [implicit deref 0 in state after deref] | +| main.rs:526:15:526:16 | [post] vs [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:526:15:526:16 | [post] vs | +| main.rs:526:15:526:16 | vs [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:526:15:526:16 | vs [implicit deref 0 in state after deref] | | main.rs:526:15:526:23 | vs.iter() | file://:0:0:0:0 | element | main.rs:526:9:526:10 | &... | +| main.rs:530:26:530:27 | [post] vs [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:530:26:530:27 | [post] vs [implicit deref 0 in state after deref] | +| main.rs:530:26:530:27 | [post] vs [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:530:26:530:27 | [post] vs | +| main.rs:530:26:530:27 | vs [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:530:26:530:27 | vs [implicit deref 0 in state after deref] | | main.rs:531:9:531:10 | &... | file://:0:0:0:0 | &ref | main.rs:531:10:531:10 | v | | main.rs:531:15:531:17 | vs2 | file://:0:0:0:0 | element | main.rs:531:9:531:10 | &... | +| main.rs:535:5:535:6 | [post] vs [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:535:5:535:6 | [post] vs [implicit deref 0 in state after deref] | +| main.rs:535:5:535:6 | [post] vs [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:535:5:535:6 | [post] vs | +| main.rs:535:5:535:6 | vs [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:535:5:535:6 | vs [implicit deref 0 in state after deref] | | main.rs:535:28:535:29 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:535:28:535:29 | * ... | | main.rs:535:29:535:29 | [post] x [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | [post] x | +| main.rs:536:5:536:6 | [post] vs [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:536:5:536:6 | [post] vs [implicit deref 0 in state after deref] | +| main.rs:536:5:536:6 | [post] vs [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:536:5:536:6 | [post] vs | +| main.rs:536:5:536:6 | vs [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:536:5:536:6 | vs [implicit deref 0 in state after deref] | | main.rs:536:33:536:34 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:536:33:536:34 | * ... | | main.rs:536:34:536:34 | [post] x [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | [post] x | | main.rs:538:14:538:27 | vs.into_iter() | file://:0:0:0:0 | element | main.rs:538:9:538:9 | v | | main.rs:544:10:544:15 | [post] vs_mut [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:544:10:544:15 | [post] vs_mut | | main.rs:544:10:544:18 | vs_mut[0] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:544:10:544:18 | vs_mut[0] | | main.rs:545:10:545:39 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:545:10:545:39 | * ... | +| main.rs:545:11:545:16 | [post] vs_mut [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:545:11:545:16 | [post] vs_mut [implicit deref 0 in state after deref] | +| main.rs:545:11:545:16 | [post] vs_mut [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:545:11:545:16 | [post] vs_mut | +| main.rs:545:11:545:16 | vs_mut [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:545:11:545:16 | vs_mut [implicit deref 0 in state after deref] | +| main.rs:545:11:545:23 | [post] vs_mut.iter() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:545:11:545:23 | [post] vs_mut.iter() | | main.rs:545:11:545:39 | [post] ... .unwrap() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | [post] ... .unwrap() | | main.rs:546:10:546:39 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:546:10:546:39 | * ... | +| main.rs:546:11:546:16 | [post] vs_mut [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:546:11:546:16 | [post] vs_mut [implicit deref 0 in state after deref] | +| main.rs:546:11:546:16 | [post] vs_mut [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:546:11:546:16 | [post] vs_mut | +| main.rs:546:11:546:16 | vs_mut [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:546:11:546:16 | vs_mut [implicit deref 0 in state after deref] | +| main.rs:546:11:546:23 | [post] vs_mut.iter() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:546:11:546:23 | [post] vs_mut.iter() | | main.rs:546:11:546:39 | [post] ... .unwrap() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | [post] ... .unwrap() | | main.rs:548:9:548:14 | &mut ... | file://:0:0:0:0 | &ref | main.rs:548:14:548:14 | v | +| main.rs:548:19:548:24 | [post] vs_mut [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:548:19:548:24 | [post] vs_mut [implicit deref 0 in state after deref] | +| main.rs:548:19:548:24 | [post] vs_mut [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:548:19:548:24 | [post] vs_mut | +| main.rs:548:19:548:24 | vs_mut [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:548:19:548:24 | vs_mut [implicit deref 0 in state after deref] | | main.rs:548:19:548:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:548:9:548:14 | &mut ... | | main.rs:562:10:562:15 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:562:10:562:15 | * ... | | main.rs:562:11:562:15 | [post] c_ref [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | [post] c_ref | @@ -1069,17 +1101,39 @@ storeStep | main.rs:517:30:517:30 | 3 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:33:517:33 | 4 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:519:10:519:11 | vs | file://:0:0:0:0 | &ref | main.rs:519:10:519:11 | vs [implicit borrow] | +| main.rs:520:11:520:12 | vs | file://:0:0:0:0 | &ref | main.rs:520:11:520:12 | vs [implicit deref 0 in state after borrow] | +| main.rs:520:11:520:12 | vs [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:520:11:520:12 | vs [implicit borrow] | +| main.rs:520:11:520:19 | vs.iter() | file://:0:0:0:0 | &ref | main.rs:520:11:520:19 | vs.iter() [implicit borrow] | | main.rs:520:11:520:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | ... .unwrap() [implicit borrow] | +| main.rs:521:11:521:12 | vs | file://:0:0:0:0 | &ref | main.rs:521:11:521:12 | vs [implicit deref 0 in state after borrow] | +| main.rs:521:11:521:12 | vs [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:521:11:521:12 | vs [implicit borrow] | +| main.rs:521:11:521:19 | vs.iter() | file://:0:0:0:0 | &ref | main.rs:521:11:521:19 | vs.iter() [implicit borrow] | | main.rs:521:11:521:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | ... .unwrap() [implicit borrow] | +| main.rs:526:15:526:16 | vs | file://:0:0:0:0 | &ref | main.rs:526:15:526:16 | vs [implicit deref 0 in state after borrow] | +| main.rs:526:15:526:16 | vs [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:526:15:526:16 | vs [implicit borrow] | +| main.rs:530:26:530:27 | vs | file://:0:0:0:0 | &ref | main.rs:530:26:530:27 | vs [implicit deref 0 in state after borrow] | +| main.rs:530:26:530:27 | vs [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:530:26:530:27 | vs [implicit borrow] | +| main.rs:535:5:535:6 | vs | file://:0:0:0:0 | &ref | main.rs:535:5:535:6 | vs [implicit deref 0 in state after borrow] | +| main.rs:535:5:535:6 | vs [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:535:5:535:6 | vs [implicit borrow] | | main.rs:535:29:535:29 | x | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | x [implicit borrow] | +| main.rs:536:5:536:6 | vs | file://:0:0:0:0 | &ref | main.rs:536:5:536:6 | vs [implicit deref 0 in state after borrow] | +| main.rs:536:5:536:6 | vs [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:536:5:536:6 | vs [implicit borrow] | | main.rs:536:34:536:34 | x | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | x [implicit borrow] | | main.rs:542:23:542:32 | source(...) | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:35:542:35 | 2 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:38:542:38 | 3 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:41:542:41 | 4 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:544:10:544:15 | vs_mut | file://:0:0:0:0 | &ref | main.rs:544:10:544:15 | vs_mut [implicit borrow] | +| main.rs:545:11:545:16 | vs_mut | file://:0:0:0:0 | &ref | main.rs:545:11:545:16 | vs_mut [implicit deref 0 in state after borrow] | +| main.rs:545:11:545:16 | vs_mut [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:545:11:545:16 | vs_mut [implicit borrow] | +| main.rs:545:11:545:23 | vs_mut.iter() | file://:0:0:0:0 | &ref | main.rs:545:11:545:23 | vs_mut.iter() [implicit borrow] | | main.rs:545:11:545:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | ... .unwrap() [implicit borrow] | +| main.rs:546:11:546:16 | vs_mut | file://:0:0:0:0 | &ref | main.rs:546:11:546:16 | vs_mut [implicit deref 0 in state after borrow] | +| main.rs:546:11:546:16 | vs_mut [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:546:11:546:16 | vs_mut [implicit borrow] | +| main.rs:546:11:546:23 | vs_mut.iter() | file://:0:0:0:0 | &ref | main.rs:546:11:546:23 | vs_mut.iter() [implicit borrow] | | main.rs:546:11:546:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | ... .unwrap() [implicit borrow] | +| main.rs:548:19:548:24 | vs_mut | file://:0:0:0:0 | &ref | main.rs:548:19:548:24 | vs_mut [implicit deref 0 in state after borrow] | +| main.rs:548:19:548:24 | vs_mut [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:548:19:548:24 | vs_mut [implicit borrow] | | main.rs:557:18:557:18 | c | file://:0:0:0:0 | &ref | main.rs:557:17:557:18 | &c | | main.rs:560:15:560:15 | b | file://:0:0:0:0 | &ref | main.rs:560:14:560:15 | &b | | main.rs:562:11:562:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | c_ref [implicit borrow] | 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 3dbfa8da04d9..0ffebef2f4b2 100644 --- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected @@ -1,23 +1,28 @@ models | 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value | -| 2 | Summary: ::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value | -| 3 | Summary: ::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value | -| 4 | Summary: ::deref; Argument[self]; ReturnValue; value | -| 5 | Summary: ::to_string; Argument[self].Reference; ReturnValue; taint | -| 6 | Summary: ::into; Argument[self].Element; ReturnValue.Element; taint | -| 7 | Summary: ::into; Argument[self].Reference.Element; ReturnValue.Element; taint | -| 8 | Summary: ::from; Argument[0]; ReturnValue; taint | -| 9 | Summary: ::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 10 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 11 | Summary: ::unwrap_or; Argument[0]; ReturnValue; value | -| 12 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 13 | Summary: ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | -| 14 | Summary: ::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 15 | Summary: ::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 16 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 17 | Summary: ::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value | -| 18 | Summary: ::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 19 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 2 | Summary: <[;] as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; value | +| 3 | Summary: ::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value | +| 4 | Summary: ::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value | +| 5 | Summary: ::deref; Argument[self]; ReturnValue; value | +| 6 | Summary: ::to_string; Argument[self].Reference; ReturnValue; taint | +| 7 | Summary: ::into; Argument[self].Element; ReturnValue.Element; taint | +| 8 | Summary: ::into; Argument[self].Reference.Element; ReturnValue.Element; taint | +| 9 | Summary: ::from; Argument[0]; ReturnValue; taint | +| 10 | Summary: ::collect; Argument[self].Element; ReturnValue.Element; value | +| 11 | Summary: ::map; Argument[self].Element; Argument[0].Parameter[0]; value | +| 12 | Summary: ::next; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 13 | Summary: ::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 14 | Summary: ::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 15 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 16 | Summary: ::unwrap_or; Argument[0]; ReturnValue; value | +| 17 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 18 | Summary: ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | +| 19 | Summary: ::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 20 | Summary: ::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 21 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 22 | Summary: ::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value | +| 23 | Summary: ::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 24 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | edges | main.rs:23:9:23:9 | s | main.rs:24:10:24:10 | s | provenance | | | main.rs:23:9:23:9 | s | main.rs:26:12:26:12 | x | provenance | | @@ -45,8 +50,8 @@ edges | main.rs:82:5:82:5 | l | main.rs:83:10:83:10 | l | provenance | | | main.rs:115:9:115:9 | i [Box(0)] | main.rs:116:11:116:11 | i [Box(0)] | provenance | | | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | main.rs:115:9:115:9 | i [Box(0)] | provenance | | -| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | provenance | MaD:3 | -| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:2 | +| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | provenance | MaD:4 | +| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:3 | | main.rs:123:9:123:9 | a [tuple.0] | main.rs:124:10:124:10 | a [tuple.0] | provenance | | | main.rs:123:13:123:26 | TupleExpr [tuple.0] | main.rs:123:9:123:9 | a [tuple.0] | provenance | | | main.rs:123:14:123:22 | source(...) | main.rs:123:13:123:26 | TupleExpr [tuple.0] | provenance | | @@ -129,17 +134,17 @@ edges | main.rs:278:9:278:10 | s1 [Some] | main.rs:279:10:279:11 | s1 [Some] | provenance | | | main.rs:278:14:278:29 | Some(...) [Some] | main.rs:278:9:278:10 | s1 [Some] | provenance | | | main.rs:278:19:278:28 | source(...) | main.rs:278:14:278:29 | Some(...) [Some] | provenance | | -| main.rs:279:10:279:11 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:10 | +| main.rs:279:10:279:11 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:15 | | main.rs:283:9:283:10 | s1 [Some] | main.rs:284:10:284:11 | s1 [Some] | provenance | | | main.rs:283:14:283:29 | Some(...) [Some] | main.rs:283:9:283:10 | s1 [Some] | provenance | | | main.rs:283:19:283:28 | source(...) | main.rs:283:14:283:29 | Some(...) [Some] | provenance | | -| main.rs:284:10:284:11 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:12 | -| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:11 | +| main.rs:284:10:284:11 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:17 | +| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:16 | | main.rs:291:9:291:10 | s1 [Some] | main.rs:292:10:292:11 | s1 [Some] | provenance | | | main.rs:291:14:291:29 | Some(...) [Some] | main.rs:291:9:291:10 | s1 [Some] | provenance | | | main.rs:291:19:291:28 | source(...) | main.rs:291:14:291:29 | Some(...) [Some] | provenance | | -| main.rs:292:10:292:11 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:14 | -| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:13 | +| main.rs:292:10:292:11 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:19 | +| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:18 | | main.rs:299:9:299:10 | s1 [Some] | main.rs:301:14:301:15 | s1 [Some] | provenance | | | main.rs:299:14:299:29 | Some(...) [Some] | main.rs:299:9:299:10 | s1 [Some] | provenance | | | main.rs:299:19:299:28 | source(...) | main.rs:299:14:299:29 | Some(...) [Some] | provenance | | @@ -150,16 +155,16 @@ edges | main.rs:308:32:308:45 | Ok(...) [Ok] | main.rs:308:9:308:10 | r1 [Ok] | provenance | | | main.rs:308:35:308:44 | source(...) | main.rs:308:32:308:45 | Ok(...) [Ok] | provenance | | | main.rs:309:9:309:11 | o1a [Some] | main.rs:311:10:311:12 | o1a [Some] | provenance | | -| main.rs:309:28:309:29 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:18 | +| main.rs:309:28:309:29 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:23 | | main.rs:309:28:309:34 | r1.ok() [Some] | main.rs:309:9:309:11 | o1a [Some] | provenance | | -| main.rs:311:10:311:12 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:10 | +| main.rs:311:10:311:12 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:15 | | main.rs:314:9:314:10 | r2 [Err] | main.rs:316:28:316:29 | r2 [Err] | provenance | | | main.rs:314:32:314:46 | Err(...) [Err] | main.rs:314:9:314:10 | r2 [Err] | provenance | | | main.rs:314:36:314:45 | source(...) | main.rs:314:32:314:46 | Err(...) [Err] | provenance | | | main.rs:316:9:316:11 | o2b [Some] | main.rs:318:10:318:12 | o2b [Some] | provenance | | -| main.rs:316:28:316:29 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:15 | +| main.rs:316:28:316:29 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:20 | | main.rs:316:28:316:35 | r2.err() [Some] | main.rs:316:9:316:11 | o2b [Some] | provenance | | -| main.rs:318:10:318:12 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:10 | +| main.rs:318:10:318:12 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:15 | | main.rs:322:9:322:10 | s1 [Ok] | main.rs:325:14:325:15 | s1 [Ok] | provenance | | | main.rs:322:32:322:45 | Ok(...) [Ok] | main.rs:322:9:322:10 | s1 [Ok] | provenance | | | main.rs:322:35:322:44 | source(...) | main.rs:322:32:322:45 | Ok(...) [Ok] | provenance | | @@ -169,11 +174,11 @@ edges | main.rs:335:9:335:10 | s1 [Ok] | main.rs:336:10:336:11 | s1 [Ok] | provenance | | | main.rs:335:32:335:45 | Ok(...) [Ok] | main.rs:335:9:335:10 | s1 [Ok] | provenance | | | main.rs:335:35:335:44 | source(...) | main.rs:335:32:335:45 | Ok(...) [Ok] | provenance | | -| main.rs:336:10:336:11 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:16 | +| main.rs:336:10:336:11 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:21 | | main.rs:339:9:339:10 | s2 [Err] | main.rs:341:10:341:11 | s2 [Err] | provenance | | | main.rs:339:32:339:46 | Err(...) [Err] | main.rs:339:9:339:10 | s2 [Err] | provenance | | | main.rs:339:36:339:45 | source(...) | main.rs:339:32:339:46 | Err(...) [Err] | provenance | | -| main.rs:341:10:341:11 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:17 | +| main.rs:341:10:341:11 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:22 | | main.rs:350:9:350:10 | s1 [A] | main.rs:352:11:352:12 | s1 [A] | provenance | | | main.rs:350:14:350:39 | ...::A(...) [A] | main.rs:350:9:350:10 | s1 [A] | provenance | | | main.rs:350:29:350:38 | source(...) | main.rs:350:14:350:39 | ...::A(...) [A] | provenance | | @@ -222,13 +227,13 @@ edges | main.rs:430:16:430:33 | [...] [element] | main.rs:430:9:430:12 | arr1 [element] | provenance | | | main.rs:430:23:430:32 | source(...) | main.rs:430:16:430:33 | [...] [element] | provenance | | | main.rs:431:9:431:10 | n1 | main.rs:432:10:432:11 | n1 | provenance | | -| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | MaD:9 | +| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | MaD:14 | | main.rs:431:14:431:20 | arr1[2] | main.rs:431:9:431:10 | n1 | provenance | | | main.rs:434:9:434:12 | arr2 [element] | main.rs:435:14:435:17 | arr2 [element] | provenance | | | main.rs:434:16:434:31 | [...; 10] [element] | main.rs:434:9:434:12 | arr2 [element] | provenance | | | main.rs:434:17:434:26 | source(...) | main.rs:434:16:434:31 | [...; 10] [element] | provenance | | | main.rs:435:9:435:10 | n2 | main.rs:436:10:436:11 | n2 | provenance | | -| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | MaD:9 | +| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | MaD:14 | | main.rs:435:14:435:20 | arr2[4] | main.rs:435:9:435:10 | n2 | provenance | | | main.rs:444:9:444:12 | arr1 [element] | main.rs:445:15:445:18 | arr1 [element] | provenance | | | main.rs:444:16:444:33 | [...] [element] | main.rs:444:9:444:12 | arr1 [element] | provenance | | @@ -249,9 +254,9 @@ edges | main.rs:470:5:470:11 | [post] mut_arr [element] | main.rs:473:10:473:16 | mut_arr [element] | provenance | | | main.rs:470:18:470:27 | source(...) | main.rs:470:5:470:11 | [post] mut_arr [element] | provenance | | | main.rs:471:9:471:9 | d | main.rs:472:10:472:10 | d | provenance | | -| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | MaD:9 | +| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | MaD:14 | | main.rs:471:13:471:22 | mut_arr[1] | main.rs:471:9:471:9 | d | provenance | | -| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | MaD:9 | +| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | MaD:14 | | main.rs:496:9:496:9 | s | main.rs:497:10:497:10 | s | provenance | | | main.rs:496:25:496:26 | source(...) | main.rs:496:9:496:9 | s | provenance | | | main.rs:505:9:505:9 | a | main.rs:506:13:506:13 | a | provenance | | @@ -260,27 +265,70 @@ edges | main.rs:506:9:506:9 | b | main.rs:507:13:507:13 | b | provenance | | | main.rs:506:9:506:9 | b | main.rs:508:18:508:18 | b | provenance | | | main.rs:506:9:506:9 | b | main.rs:511:17:511:17 | b | provenance | | -| main.rs:506:13:506:13 | a | main.rs:506:13:506:25 | a.to_string() | provenance | MaD:5 | +| main.rs:506:13:506:13 | a | main.rs:506:13:506:25 | a.to_string() | provenance | MaD:6 | | main.rs:506:13:506:25 | a.to_string() | main.rs:506:9:506:9 | b | provenance | | | main.rs:507:9:507:9 | c | main.rs:512:10:512:10 | c | provenance | | -| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:4 | -| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:19 | +| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:5 | +| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:24 | | main.rs:507:13:507:37 | ... .unwrap() | main.rs:507:9:507:9 | c | provenance | | | main.rs:508:9:508:9 | d | main.rs:513:10:513:10 | d | provenance | | -| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:4 | -| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:19 | +| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:5 | +| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:24 | | main.rs:508:18:508:35 | ... .unwrap() | main.rs:508:9:508:9 | d | provenance | | | main.rs:517:9:517:10 | vs [element] | main.rs:519:10:519:11 | vs [element] | provenance | | +| main.rs:517:9:517:10 | vs [element] | main.rs:520:11:520:12 | vs [element] | provenance | | +| main.rs:517:9:517:10 | vs [element] | main.rs:521:11:521:12 | vs [element] | provenance | | | main.rs:517:9:517:10 | vs [element] | main.rs:523:14:523:15 | vs [element] | provenance | | +| main.rs:517:9:517:10 | vs [element] | main.rs:526:15:526:16 | vs [element] | provenance | | +| main.rs:517:9:517:10 | vs [element] | main.rs:530:26:530:27 | vs [element] | provenance | | +| main.rs:517:9:517:10 | vs [element] | main.rs:535:5:535:6 | vs [element] | provenance | | | main.rs:517:14:517:34 | [...] [element] | main.rs:517:9:517:10 | vs [element] | provenance | | | main.rs:517:15:517:24 | source(...) | main.rs:517:14:517:34 | [...] [element] | provenance | | -| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | MaD:9 | +| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | MaD:14 | +| main.rs:520:11:520:12 | vs [element] | main.rs:520:11:520:19 | vs.iter() [element, &ref] | provenance | MaD:2 | +| main.rs:520:11:520:19 | vs.iter() [element, &ref] | main.rs:520:11:520:26 | ... .next() [Some, &ref] | provenance | MaD:12 | +| main.rs:520:11:520:26 | ... .next() [Some, &ref] | main.rs:520:11:520:35 | ... .unwrap() [&ref] | provenance | MaD:15 | +| main.rs:520:11:520:35 | ... .unwrap() [&ref] | main.rs:520:10:520:35 | * ... | provenance | MaD:1 | +| main.rs:521:11:521:12 | vs [element] | main.rs:521:11:521:19 | vs.iter() [element, &ref] | provenance | MaD:2 | +| main.rs:521:11:521:19 | vs.iter() [element, &ref] | main.rs:521:11:521:26 | ... .nth(...) [Some, &ref] | provenance | MaD:13 | +| main.rs:521:11:521:26 | ... .nth(...) [Some, &ref] | main.rs:521:11:521:35 | ... .unwrap() [&ref] | provenance | MaD:15 | +| main.rs:521:11:521:35 | ... .unwrap() [&ref] | main.rs:521:10:521:35 | * ... | provenance | MaD:1 | | main.rs:523:9:523:9 | v | main.rs:524:14:524:14 | v | provenance | | | main.rs:523:14:523:15 | vs [element] | main.rs:523:9:523:9 | v | provenance | | +| main.rs:526:9:526:10 | &... [&ref] | main.rs:526:10:526:10 | v | provenance | | +| main.rs:526:10:526:10 | v | main.rs:527:14:527:14 | v | provenance | | +| main.rs:526:15:526:16 | vs [element] | main.rs:526:15:526:23 | vs.iter() [element, &ref] | provenance | MaD:2 | +| main.rs:526:15:526:23 | vs.iter() [element, &ref] | main.rs:526:9:526:10 | &... [&ref] | provenance | | +| main.rs:530:9:530:11 | vs2 [element, &ref] | main.rs:531:15:531:17 | vs2 [element, &ref] | provenance | | +| main.rs:530:26:530:27 | vs [element] | main.rs:530:26:530:34 | vs.iter() [element, &ref] | provenance | MaD:2 | +| main.rs:530:26:530:34 | vs.iter() [element, &ref] | main.rs:530:26:530:44 | ... .collect() [element, &ref] | provenance | MaD:10 | +| main.rs:530:26:530:44 | ... .collect() [element, &ref] | main.rs:530:9:530:11 | vs2 [element, &ref] | provenance | | +| main.rs:531:9:531:10 | &... [&ref] | main.rs:531:10:531:10 | v | provenance | | +| main.rs:531:10:531:10 | v | main.rs:532:14:532:14 | v | provenance | | +| main.rs:531:15:531:17 | vs2 [element, &ref] | main.rs:531:9:531:10 | &... [&ref] | provenance | | +| main.rs:535:5:535:6 | vs [element] | main.rs:535:5:535:13 | vs.iter() [element, &ref] | provenance | MaD:2 | +| main.rs:535:5:535:13 | vs.iter() [element, &ref] | main.rs:535:20:535:20 | ... [&ref] | provenance | MaD:11 | +| main.rs:535:20:535:20 | ... [&ref] | main.rs:535:29:535:29 | x [&ref] | provenance | | +| main.rs:535:29:535:29 | x [&ref] | main.rs:535:28:535:29 | * ... | provenance | MaD:1 | | main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:544:10:544:15 | vs_mut [element] | provenance | | +| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:545:11:545:16 | vs_mut [element] | provenance | | +| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:546:11:546:16 | vs_mut [element] | provenance | | +| main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:548:19:548:24 | vs_mut [element] | provenance | | | main.rs:542:22:542:42 | [...] [element] | main.rs:542:9:542:18 | mut vs_mut [element] | provenance | | | main.rs:542:23:542:32 | source(...) | main.rs:542:22:542:42 | [...] [element] | provenance | | -| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:9 | +| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:14 | +| main.rs:545:11:545:16 | vs_mut [element] | main.rs:545:11:545:23 | vs_mut.iter() [element, &ref] | provenance | MaD:2 | +| main.rs:545:11:545:23 | vs_mut.iter() [element, &ref] | main.rs:545:11:545:30 | ... .next() [Some, &ref] | provenance | MaD:12 | +| main.rs:545:11:545:30 | ... .next() [Some, &ref] | main.rs:545:11:545:39 | ... .unwrap() [&ref] | provenance | MaD:15 | +| main.rs:545:11:545:39 | ... .unwrap() [&ref] | main.rs:545:10:545:39 | * ... | provenance | MaD:1 | +| main.rs:546:11:546:16 | vs_mut [element] | main.rs:546:11:546:23 | vs_mut.iter() [element, &ref] | provenance | MaD:2 | +| main.rs:546:11:546:23 | vs_mut.iter() [element, &ref] | main.rs:546:11:546:30 | ... .nth(...) [Some, &ref] | provenance | MaD:13 | +| main.rs:546:11:546:30 | ... .nth(...) [Some, &ref] | main.rs:546:11:546:39 | ... .unwrap() [&ref] | provenance | MaD:15 | +| main.rs:546:11:546:39 | ... .unwrap() [&ref] | main.rs:546:10:546:39 | * ... | provenance | MaD:1 | +| main.rs:548:9:548:14 | &mut ... [&ref] | main.rs:548:14:548:14 | v | provenance | | +| main.rs:548:14:548:14 | v | main.rs:549:14:549:14 | v | provenance | | +| main.rs:548:19:548:24 | vs_mut [element] | main.rs:548:19:548:35 | vs_mut.iter_mut() [element, &ref] | provenance | MaD:2 | +| main.rs:548:19:548:35 | vs_mut.iter_mut() [element, &ref] | main.rs:548:9:548:14 | &mut ... [&ref] | provenance | | | main.rs:554:9:554:9 | a | main.rs:559:10:559:10 | a | provenance | | | main.rs:554:13:554:22 | source(...) | main.rs:554:9:554:9 | a | provenance | | | main.rs:555:9:555:9 | b | main.rs:560:15:560:15 | b | provenance | | @@ -297,16 +345,16 @@ edges | main.rs:566:9:566:9 | a | main.rs:569:10:569:10 | a | provenance | | | main.rs:566:9:566:9 | a | main.rs:570:20:570:20 | a | provenance | | | main.rs:566:18:566:27 | source(...) | main.rs:566:9:566:9 | a | provenance | | -| main.rs:569:10:569:10 | a | main.rs:569:10:569:17 | a.into() | provenance | MaD:6 | | main.rs:569:10:569:10 | a | main.rs:569:10:569:17 | a.into() | provenance | MaD:7 | +| main.rs:569:10:569:10 | a | main.rs:569:10:569:17 | a.into() | provenance | MaD:8 | | main.rs:570:20:570:20 | a | main.rs:570:10:570:21 | ...::from(...) | provenance | ReflexiveFrom | | main.rs:572:9:572:9 | b | main.rs:574:10:574:17 | b as i64 | provenance | | | main.rs:572:9:572:9 | b | main.rs:575:10:575:10 | b | provenance | | | main.rs:572:9:572:9 | b | main.rs:576:20:576:20 | b | provenance | | | main.rs:572:18:572:27 | source(...) | main.rs:572:9:572:9 | b | provenance | | -| main.rs:575:10:575:10 | b | main.rs:575:10:575:17 | b.into() | provenance | MaD:6 | | main.rs:575:10:575:10 | b | main.rs:575:10:575:17 | b.into() | provenance | MaD:7 | -| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:8 | +| main.rs:575:10:575:10 | b | main.rs:575:10:575:17 | b.into() | provenance | MaD:8 | +| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:9 | nodes | main.rs:19:10:19:18 | source(...) | semmle.label | source(...) | | main.rs:23:9:23:9 | s | semmle.label | s | @@ -609,14 +657,57 @@ nodes | main.rs:517:15:517:24 | source(...) | semmle.label | source(...) | | main.rs:519:10:519:11 | vs [element] | semmle.label | vs [element] | | main.rs:519:10:519:14 | vs[0] | semmle.label | vs[0] | +| main.rs:520:10:520:35 | * ... | semmle.label | * ... | +| main.rs:520:11:520:12 | vs [element] | semmle.label | vs [element] | +| main.rs:520:11:520:19 | vs.iter() [element, &ref] | semmle.label | vs.iter() [element, &ref] | +| main.rs:520:11:520:26 | ... .next() [Some, &ref] | semmle.label | ... .next() [Some, &ref] | +| main.rs:520:11:520:35 | ... .unwrap() [&ref] | semmle.label | ... .unwrap() [&ref] | +| main.rs:521:10:521:35 | * ... | semmle.label | * ... | +| main.rs:521:11:521:12 | vs [element] | semmle.label | vs [element] | +| main.rs:521:11:521:19 | vs.iter() [element, &ref] | semmle.label | vs.iter() [element, &ref] | +| main.rs:521:11:521:26 | ... .nth(...) [Some, &ref] | semmle.label | ... .nth(...) [Some, &ref] | +| main.rs:521:11:521:35 | ... .unwrap() [&ref] | semmle.label | ... .unwrap() [&ref] | | main.rs:523:9:523:9 | v | semmle.label | v | | main.rs:523:14:523:15 | vs [element] | semmle.label | vs [element] | | main.rs:524:14:524:14 | v | semmle.label | v | +| main.rs:526:9:526:10 | &... [&ref] | semmle.label | &... [&ref] | +| main.rs:526:10:526:10 | v | semmle.label | v | +| main.rs:526:15:526:16 | vs [element] | semmle.label | vs [element] | +| main.rs:526:15:526:23 | vs.iter() [element, &ref] | semmle.label | vs.iter() [element, &ref] | +| main.rs:527:14:527:14 | v | semmle.label | v | +| main.rs:530:9:530:11 | vs2 [element, &ref] | semmle.label | vs2 [element, &ref] | +| main.rs:530:26:530:27 | vs [element] | semmle.label | vs [element] | +| main.rs:530:26:530:34 | vs.iter() [element, &ref] | semmle.label | vs.iter() [element, &ref] | +| main.rs:530:26:530:44 | ... .collect() [element, &ref] | semmle.label | ... .collect() [element, &ref] | +| main.rs:531:9:531:10 | &... [&ref] | semmle.label | &... [&ref] | +| main.rs:531:10:531:10 | v | semmle.label | v | +| main.rs:531:15:531:17 | vs2 [element, &ref] | semmle.label | vs2 [element, &ref] | +| main.rs:532:14:532:14 | v | semmle.label | v | +| main.rs:535:5:535:6 | vs [element] | semmle.label | vs [element] | +| main.rs:535:5:535:13 | vs.iter() [element, &ref] | semmle.label | vs.iter() [element, &ref] | +| main.rs:535:20:535:20 | ... [&ref] | semmle.label | ... [&ref] | +| main.rs:535:28:535:29 | * ... | semmle.label | * ... | +| main.rs:535:29:535:29 | x [&ref] | semmle.label | x [&ref] | | main.rs:542:9:542:18 | mut vs_mut [element] | semmle.label | mut vs_mut [element] | | main.rs:542:22:542:42 | [...] [element] | semmle.label | [...] [element] | | main.rs:542:23:542:32 | source(...) | semmle.label | source(...) | | main.rs:544:10:544:15 | vs_mut [element] | semmle.label | vs_mut [element] | | main.rs:544:10:544:18 | vs_mut[0] | semmle.label | vs_mut[0] | +| main.rs:545:10:545:39 | * ... | semmle.label | * ... | +| main.rs:545:11:545:16 | vs_mut [element] | semmle.label | vs_mut [element] | +| main.rs:545:11:545:23 | vs_mut.iter() [element, &ref] | semmle.label | vs_mut.iter() [element, &ref] | +| main.rs:545:11:545:30 | ... .next() [Some, &ref] | semmle.label | ... .next() [Some, &ref] | +| main.rs:545:11:545:39 | ... .unwrap() [&ref] | semmle.label | ... .unwrap() [&ref] | +| main.rs:546:10:546:39 | * ... | semmle.label | * ... | +| main.rs:546:11:546:16 | vs_mut [element] | semmle.label | vs_mut [element] | +| main.rs:546:11:546:23 | vs_mut.iter() [element, &ref] | semmle.label | vs_mut.iter() [element, &ref] | +| main.rs:546:11:546:30 | ... .nth(...) [Some, &ref] | semmle.label | ... .nth(...) [Some, &ref] | +| main.rs:546:11:546:39 | ... .unwrap() [&ref] | semmle.label | ... .unwrap() [&ref] | +| main.rs:548:9:548:14 | &mut ... [&ref] | semmle.label | &mut ... [&ref] | +| main.rs:548:14:548:14 | v | semmle.label | v | +| main.rs:548:19:548:24 | vs_mut [element] | semmle.label | vs_mut [element] | +| main.rs:548:19:548:35 | vs_mut.iter_mut() [element, &ref] | semmle.label | vs_mut.iter_mut() [element, &ref] | +| main.rs:549:14:549:14 | v | semmle.label | v | | main.rs:554:9:554:9 | a | semmle.label | a | | main.rs:554:13:554:22 | source(...) | semmle.label | source(...) | | main.rs:555:9:555:9 | b | semmle.label | b | @@ -711,8 +802,16 @@ testFailures | main.rs:512:10:512:10 | c | main.rs:505:13:505:22 | source(...) | main.rs:512:10:512:10 | c | $@ | main.rs:505:13:505:22 | source(...) | source(...) | | main.rs:513:10:513:10 | d | main.rs:505:13:505:22 | source(...) | main.rs:513:10:513:10 | d | $@ | main.rs:505:13:505:22 | source(...) | source(...) | | main.rs:519:10:519:14 | vs[0] | main.rs:517:15:517:24 | source(...) | main.rs:519:10:519:14 | vs[0] | $@ | main.rs:517:15:517:24 | source(...) | source(...) | +| main.rs:520:10:520:35 | * ... | main.rs:517:15:517:24 | source(...) | main.rs:520:10:520:35 | * ... | $@ | main.rs:517:15:517:24 | source(...) | source(...) | +| main.rs:521:10:521:35 | * ... | main.rs:517:15:517:24 | source(...) | main.rs:521:10:521:35 | * ... | $@ | main.rs:517:15:517:24 | source(...) | source(...) | | main.rs:524:14:524:14 | v | main.rs:517:15:517:24 | source(...) | main.rs:524:14:524:14 | v | $@ | main.rs:517:15:517:24 | source(...) | source(...) | +| main.rs:527:14:527:14 | v | main.rs:517:15:517:24 | source(...) | main.rs:527:14:527:14 | v | $@ | main.rs:517:15:517:24 | source(...) | source(...) | +| main.rs:532:14:532:14 | v | main.rs:517:15:517:24 | source(...) | main.rs:532:14:532:14 | v | $@ | main.rs:517:15:517:24 | source(...) | source(...) | +| main.rs:535:28:535:29 | * ... | main.rs:517:15:517:24 | source(...) | main.rs:535:28:535:29 | * ... | $@ | main.rs:517:15:517:24 | source(...) | source(...) | | main.rs:544:10:544:18 | vs_mut[0] | main.rs:542:23:542:32 | source(...) | main.rs:544:10:544:18 | vs_mut[0] | $@ | main.rs:542:23:542:32 | source(...) | source(...) | +| main.rs:545:10:545:39 | * ... | main.rs:542:23:542:32 | source(...) | main.rs:545:10:545:39 | * ... | $@ | main.rs:542:23:542:32 | source(...) | source(...) | +| main.rs:546:10:546:39 | * ... | main.rs:542:23:542:32 | source(...) | main.rs:546:10:546:39 | * ... | $@ | main.rs:542:23:542:32 | source(...) | source(...) | +| main.rs:549:14:549:14 | v | main.rs:542:23:542:32 | source(...) | main.rs:549:14:549:14 | v | $@ | main.rs:542:23:542:32 | source(...) | source(...) | | main.rs:559:10:559:10 | a | main.rs:554:13:554:22 | source(...) | main.rs:559:10:559:10 | a | $@ | main.rs:554:13:554:22 | source(...) | source(...) | | main.rs:560:14:560:15 | &b | main.rs:555:13:555:22 | source(...) | main.rs:560:14:560:15 | &b | $@ | main.rs:555:13:555:22 | source(...) | source(...) | | main.rs:561:14:561:18 | c_ref | main.rs:556:13:556:22 | source(...) | main.rs:561:14:561:18 | c_ref | $@ | main.rs:556:13:556:22 | 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 41f34da6122d..0a4dbaceee9b 100644 --- a/rust/ql/test/library-tests/dataflow/local/main.rs +++ b/rust/ql/test/library-tests/dataflow/local/main.rs @@ -517,22 +517,22 @@ fn iterators() { let vs = [source(91), 2, 3, 4]; sink(vs[0]); // $ hasValueFlow=91 - sink(*vs.iter().next().unwrap()); // $ MISSING: hasValueFlow=91 - sink(*vs.iter().nth(0).unwrap()); // $ MISSING: hasValueFlow=91 + sink(*vs.iter().next().unwrap()); // $ hasValueFlow=91 + sink(*vs.iter().nth(0).unwrap()); // $ hasValueFlow=91 for v in vs { sink(v); // $ hasValueFlow=91 } for &v in vs.iter() { - sink(v); // $ MISSING: hasValueFlow=91 + sink(v); // $ hasValueFlow=91 } let vs2: Vec<&i64> = vs.iter().collect(); for &v in vs2 { - sink(v); // $ MISSING: hasValueFlow=91 + sink(v); // $ hasValueFlow=91 } - vs.iter().map(|x| sink(*x)); // $ MISSING: hasValueFlow=91 + vs.iter().map(|x| sink(*x)); // $ hasValueFlow=91 vs.iter().for_each(|x| sink(*x)); // $ MISSING: hasValueFlow=91 for v in vs.into_iter() { @@ -542,11 +542,11 @@ fn iterators() { let mut vs_mut = [source(92), 2, 3, 4]; sink(vs_mut[0]); // $ hasValueFlow=92 - sink(*vs_mut.iter().next().unwrap()); // $ MISSING: hasValueFlow=92 - sink(*vs_mut.iter().nth(0).unwrap()); // $ MISSING: hasValueFlow=92 + sink(*vs_mut.iter().next().unwrap()); // $ hasValueFlow=92 + sink(*vs_mut.iter().nth(0).unwrap()); // $ hasValueFlow=92 for &mut v in vs_mut.iter_mut() { - sink(v); // $ MISSING: hasValueFlow=92 + sink(v); // $ hasValueFlow=92 } } diff --git a/rust/ql/test/library-tests/dataflow/local/options.yml b/rust/ql/test/library-tests/dataflow/local/options.yml index a394083e5212..c2541fc242c2 100644 --- a/rust/ql/test/library-tests/dataflow/local/options.yml +++ b/rust/ql/test/library-tests/dataflow/local/options.yml @@ -1 +1,2 @@ qltest_use_nightly: true +qltest_edition: "2024" 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 22ec0b630b32..4bc7d7d98e21 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected @@ -21,8 +21,9 @@ models | 20 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | | 21 | Summary: ::new_unchecked; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | | 22 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 23 | Summary: core::ptr::read; Argument[0].Reference; ReturnValue; value | -| 24 | Summary: core::ptr::write; Argument[1]; Argument[0].Reference; value | +| 23 | Summary: core::pin::pin_new_unchecked_in_helper; Argument[0].Reference.Field[core::pin::PinMacroHelper::value]; ReturnValue.Field[core::pin::Pin::pointer].Reference; value | +| 24 | Summary: core::ptr::read; Argument[0].Reference; ReturnValue; value | +| 25 | Summary: core::ptr::write; Argument[1]; Argument[0].Reference; value | edges | main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:10 | a [Some] | provenance | | | main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:13 | a [Some] | provenance | | @@ -83,12 +84,12 @@ edges | main.rs:79:33:79:46 | ... + ... | main.rs:79:17:79:47 | a.map_or(...) | provenance | MaD:12 | | main.rs:79:37:79:46 | source(...) | main.rs:79:33:79:46 | ... + ... | provenance | MaD:11 | | 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:24 | -| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:23 | +| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:25 | +| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:24 | | 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 | | -| main.rs:108:13:108:17 | mut i | main.rs:112:24:112:27 | mut pinned | provenance | | +| main.rs:108:13:108:17 | mut i | main.rs:112:29:112:29 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:113:14:113:14 | i | provenance | | | main.rs:108:21:108:30 | source(...) | main.rs:108:13:108:17 | mut i | provenance | | | main.rs:109:13:109:20 | mut pin1 | main.rs:114:15:114:18 | pin1 | provenance | | @@ -108,10 +109,12 @@ edges | main.rs:111:38:111:48 | ...::new(...) [Box(0)] | main.rs:111:24:111:49 | ...::into_pin(...) [Pin, Box(0)] | provenance | MaD:2 | | main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [Box(0)] | provenance | MaD:3 | | main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | main.rs:118:15:118:18 | pin4 [Pin, &ref] | provenance | | -| main.rs:112:24:112:27 | &mut pinned [&ref] | main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | provenance | MaD:21 | -| main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | provenance | | -| main.rs:112:24:112:27 | mut pinned | main.rs:112:24:112:27 | pinned | provenance | | -| main.rs:112:24:112:27 | pinned | main.rs:112:24:112:27 | &mut pinned [&ref] | provenance | | +| main.rs:112:24:112:27 | &mut pinned [&ref, PinMacroHelper] | main.rs:112:24:112:27 | ...::pin_new_unchecked_in_helper(...) [Pin, &ref] | provenance | MaD:23 | +| main.rs:112:24:112:27 | ...::pin_new_unchecked_in_helper(...) [Pin, &ref] | main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | provenance | | +| main.rs:112:24:112:27 | mut pinned [PinMacroHelper] | main.rs:112:24:112:27 | pinned [PinMacroHelper] | provenance | | +| main.rs:112:24:112:27 | pinned [PinMacroHelper] | main.rs:112:24:112:27 | &mut pinned [&ref, PinMacroHelper] | provenance | | +| main.rs:112:29:112:29 | ...::PinMacroHelper {...} [PinMacroHelper] | main.rs:112:24:112:27 | mut pinned [PinMacroHelper] | provenance | | +| main.rs:112:29:112:29 | i | main.rs:112:29:112:29 | ...::PinMacroHelper {...} [PinMacroHelper] | provenance | | | main.rs:114:15:114:18 | pin1 | main.rs:114:14:114:18 | * ... | provenance | MaD:15 | | main.rs:114:15:114:18 | pin1 | main.rs:114:14:114:18 | * ... | provenance | MaD:16 | | main.rs:114:15:114:18 | pin1 [Pin, &ref] | main.rs:114:14:114:18 | * ... | provenance | MaD:16 | @@ -253,10 +256,12 @@ nodes | main.rs:111:38:111:48 | ...::new(...) [Box(0)] | semmle.label | ...::new(...) [Box(0)] | | main.rs:111:47:111:47 | i | semmle.label | i | | main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | semmle.label | mut pin4 [Pin, &ref] | -| main.rs:112:24:112:27 | &mut pinned [&ref] | semmle.label | &mut pinned [&ref] | -| main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | semmle.label | ...::new_unchecked(...) [Pin, &ref] | -| main.rs:112:24:112:27 | mut pinned | semmle.label | mut pinned | -| main.rs:112:24:112:27 | pinned | semmle.label | pinned | +| main.rs:112:24:112:27 | &mut pinned [&ref, PinMacroHelper] | semmle.label | &mut pinned [&ref, PinMacroHelper] | +| main.rs:112:24:112:27 | ...::pin_new_unchecked_in_helper(...) [Pin, &ref] | semmle.label | ...::pin_new_unchecked_in_helper(...) [Pin, &ref] | +| main.rs:112:24:112:27 | mut pinned [PinMacroHelper] | semmle.label | mut pinned [PinMacroHelper] | +| main.rs:112:24:112:27 | pinned [PinMacroHelper] | semmle.label | pinned [PinMacroHelper] | +| main.rs:112:29:112:29 | ...::PinMacroHelper {...} [PinMacroHelper] | semmle.label | ...::PinMacroHelper {...} [PinMacroHelper] | +| main.rs:112:29:112:29 | i | semmle.label | i | | main.rs:113:14:113:14 | i | semmle.label | i | | main.rs:114:14:114:18 | * ... | semmle.label | * ... | | main.rs:114:15:114:18 | pin1 | semmle.label | pin1 | 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..432af9baefcd --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,2 @@ +multipleResolvedTargets +| main.rs:220:20:220:25 | ... != ... | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected index 03e1db8d327c..62fc9592cd42 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected @@ -16,21 +16,21 @@ models | 15 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | | 16 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | | 17 | Summary: ::to_mut; Argument[self].Reference.Field[alloc::borrow::Cow::Owned(0)]; ReturnValue.Reference; value | -| 18 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | -| 19 | Summary: ::clone; Argument[self].Reference; ReturnValue; value | -| 20 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 21 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 22 | Summary: ::deref; Argument[self].Reference; ReturnValue.Reference; taint | -| 23 | Summary: ::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 | -| 24 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 25 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | -| 26 | Summary: ::bytes; Argument[self]; ReturnValue; taint | -| 27 | Summary: ::chain; Argument[0]; ReturnValue; taint | -| 28 | Summary: ::chain; Argument[self]; ReturnValue; taint | -| 29 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | -| 30 | Summary: ::read_exact; Argument[self].Reference; Argument[0].Reference; taint | -| 31 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | -| 32 | Summary: ::take; Argument[self]; ReturnValue; taint | +| 18 | Summary: ::bytes; Argument[self]; ReturnValue; taint | +| 19 | Summary: ::chain; Argument[0]; ReturnValue; taint | +| 20 | Summary: ::chain; Argument[self]; ReturnValue; taint | +| 21 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | +| 22 | Summary: ::read_exact; Argument[self].Reference; Argument[0].Reference; taint | +| 23 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 24 | Summary: ::take; Argument[self]; ReturnValue; taint | +| 25 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | +| 26 | Summary: ::clone; Argument[self].Reference; ReturnValue; value | +| 27 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 28 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 29 | Summary: ::deref; Argument[self].Reference; ReturnValue.Reference; taint | +| 30 | Summary: ::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 | +| 31 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 32 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | | 33 | Summary: ::from; Argument[0]; ReturnValue.Field[std::path::PathBuf::inner]; value | | 34 | Summary: ::deref; Argument[self].Reference.Field[std::path::PathBuf::inner]; ReturnValue.Reference; value | | 35 | Summary: ::as_path; Argument[self].Reference; ReturnValue.Reference; value | @@ -71,26 +71,26 @@ edges | test.rs:30:13:30:16 | path | test.rs:41:14:41:17 | path | provenance | | | test.rs:30:13:30:16 | path | test.rs:42:14:42:17 | path | provenance | | | test.rs:30:20:30:27 | e.path() | test.rs:30:13:30:16 | path | provenance | Src:MaD:4 | -| test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:19 | -| test.rs:32:14:32:17 | path | test.rs:32:14:32:25 | path.clone() | provenance | MaD:19 | +| test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:26 | +| test.rs:32:14:32:17 | path | test.rs:32:14:32:25 | path.clone() | provenance | MaD:26 | | test.rs:32:14:32:25 | path.clone() | test.rs:32:14:32:35 | ... .as_path() | provenance | MaD:35 | -| test.rs:33:14:33:17 | path | test.rs:33:14:33:25 | path.clone() | provenance | MaD:19 | +| test.rs:33:14:33:17 | path | test.rs:33:14:33:25 | path.clone() | provenance | MaD:26 | | test.rs:33:14:33:25 | path.clone() | test.rs:33:14:33:42 | ... .into_os_string() | provenance | MaD:37 | -| test.rs:34:39:34:42 | path | test.rs:34:39:34:50 | path.clone() | provenance | MaD:19 | +| test.rs:34:39:34:42 | path | test.rs:34:39:34:50 | path.clone() | provenance | MaD:26 | | test.rs:34:39:34:50 | path.clone() | test.rs:34:39:34:68 | ... .into_boxed_path() [Box(0)] | provenance | MaD:36 | | test.rs:34:39:34:68 | ... .into_boxed_path() [Box(0)] | test.rs:34:14:34:69 | ...::from(...) | provenance | MaD:33 | -| test.rs:35:14:35:17 | path | test.rs:35:14:35:25 | path.clone() | provenance | MaD:19 | +| test.rs:35:14:35:17 | path | test.rs:35:14:35:25 | path.clone() | provenance | MaD:26 | | test.rs:35:14:35:25 | path.clone() | test.rs:35:14:35:37 | ... .as_os_str() | provenance | MaD:34 | -| test.rs:36:14:36:17 | path | test.rs:36:14:36:25 | path.clone() | provenance | MaD:19 | +| test.rs:36:14:36:17 | path | test.rs:36:14:36:25 | path.clone() | provenance | MaD:26 | | test.rs:36:14:36:25 | path.clone() | test.rs:36:14:36:41 | ... .as_mut_os_str() | provenance | MaD:34 | | test.rs:37:14:37:17 | path | test.rs:37:14:37:26 | path.to_str() | provenance | MaD:34 | | test.rs:38:14:38:17 | path | test.rs:38:14:38:31 | path.to_path_buf() | provenance | MaD:34 | | test.rs:39:14:39:17 | path | test.rs:39:14:39:29 | path.file_name() [Some, &ref] | provenance | MaD:34 | -| test.rs:39:14:39:29 | path.file_name() [Some, &ref] | test.rs:39:14:39:38 | ... .unwrap() | provenance | MaD:20 | +| test.rs:39:14:39:29 | path.file_name() [Some, &ref] | test.rs:39:14:39:38 | ... .unwrap() | provenance | MaD:27 | | test.rs:40:14:40:17 | path | test.rs:40:14:40:29 | path.extension() [Some, &ref] | provenance | MaD:34 | -| test.rs:40:14:40:29 | path.extension() [Some, &ref] | test.rs:40:14:40:38 | ... .unwrap() | provenance | MaD:20 | +| test.rs:40:14:40:29 | path.extension() [Some, &ref] | test.rs:40:14:40:38 | ... .unwrap() | provenance | MaD:27 | | test.rs:41:14:41:17 | path | test.rs:41:14:41:32 | path.canonicalize() [Ok] | provenance | MaD:34 | -| test.rs:41:14:41:32 | path.canonicalize() [Ok] | test.rs:41:14:41:41 | ... .unwrap() | provenance | MaD:21 | +| test.rs:41:14:41:32 | path.canonicalize() [Ok] | test.rs:41:14:41:41 | ... .unwrap() | provenance | MaD:28 | | test.rs:44:13:44:21 | file_name | test.rs:45:14:45:22 | file_name | provenance | | | test.rs:44:13:44:21 | file_name | test.rs:46:14:46:22 | file_name | provenance | | | test.rs:44:13:44:21 | file_name | test.rs:47:14:47:22 | file_name | provenance | | @@ -98,16 +98,16 @@ edges | test.rs:44:13:44:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | | test.rs:44:13:44:21 | file_name | test.rs:50:14:50:22 | file_name | provenance | | | test.rs:44:25:44:37 | e.file_name() | test.rs:44:13:44:21 | file_name | provenance | Src:MaD:3 | -| test.rs:45:14:45:22 | file_name | test.rs:45:14:45:30 | file_name.clone() | provenance | MaD:19 | -| test.rs:46:14:46:22 | file_name | test.rs:46:14:46:30 | file_name.clone() | provenance | MaD:19 | -| test.rs:46:14:46:30 | file_name.clone() | test.rs:46:14:46:44 | ... .into_string() [Ok, String] | provenance | MaD:23 | -| test.rs:46:14:46:44 | ... .into_string() [Ok, String] | test.rs:46:14:46:53 | ... .unwrap() | provenance | MaD:21 | -| test.rs:47:14:47:22 | file_name | test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | provenance | MaD:22 | -| test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | test.rs:47:14:47:40 | ... .unwrap() | provenance | MaD:20 | -| test.rs:48:14:48:22 | file_name | test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | provenance | MaD:22 | +| test.rs:45:14:45:22 | file_name | test.rs:45:14:45:30 | file_name.clone() | provenance | MaD:26 | +| test.rs:46:14:46:22 | file_name | test.rs:46:14:46:30 | file_name.clone() | provenance | MaD:26 | +| test.rs:46:14:46:30 | file_name.clone() | test.rs:46:14:46:44 | ... .into_string() [Ok, String] | provenance | MaD:30 | +| test.rs:46:14:46:44 | ... .into_string() [Ok, String] | test.rs:46:14:46:53 | ... .unwrap() | provenance | MaD:28 | +| test.rs:47:14:47:22 | file_name | test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | provenance | MaD:29 | +| test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | test.rs:47:14:47:40 | ... .unwrap() | provenance | MaD:27 | +| test.rs:48:14:48:22 | file_name | test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | provenance | MaD:29 | | test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | test.rs:48:14:48:49 | ... .to_mut() | provenance | MaD:17 | -| test.rs:49:14:49:22 | file_name | test.rs:49:14:49:30 | file_name.clone() | provenance | MaD:19 | -| test.rs:49:14:49:30 | file_name.clone() | test.rs:49:14:49:49 | ... .as_encoded_bytes() | provenance | MaD:22 | +| test.rs:49:14:49:22 | file_name | test.rs:49:14:49:30 | file_name.clone() | provenance | MaD:26 | +| test.rs:49:14:49:30 | file_name.clone() | test.rs:49:14:49:49 | ... .as_encoded_bytes() | provenance | MaD:29 | | test.rs:68:13:68:18 | target | test.rs:69:14:69:19 | target | provenance | | | test.rs:68:22:68:49 | ...::read_link(...) | test.rs:68:22:68:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:12 | | test.rs:68:22:68:49 | ...::read_link(...) [Ok] | test.rs:68:22:68:50 | TryExpr | provenance | | @@ -144,45 +144,45 @@ edges | test.rs:110:20:110:50 | ...::open(...) | test.rs:110:20:110:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:110:20:110:50 | ...::open(...) [Ok] | test.rs:110:20:110:51 | TryExpr | provenance | | | test.rs:110:20:110:51 | TryExpr | test.rs:110:9:110:16 | mut file | provenance | | -| test.rs:114:22:114:25 | file | test.rs:114:32:114:42 | [post] &mut buffer [&ref] | provenance | MaD:29 | +| test.rs:114:22:114:25 | file | test.rs:114:32:114:42 | [post] &mut buffer [&ref] | provenance | MaD:21 | | test.rs:114:32:114:42 | [post] &mut buffer [&ref] | test.rs:114:37:114:42 | [post] buffer | provenance | | | test.rs:114:37:114:42 | [post] buffer | test.rs:115:15:115:20 | buffer | provenance | | | test.rs:115:15:115:20 | buffer | test.rs:115:14:115:20 | &buffer | provenance | | -| test.rs:120:22:120:25 | file | test.rs:120:39:120:49 | [post] &mut buffer [&ref] | provenance | MaD:24 | +| test.rs:120:22:120:25 | file | test.rs:120:39:120:49 | [post] &mut buffer [&ref] | provenance | MaD:31 | | test.rs:120:39:120:49 | [post] &mut buffer [&ref] | test.rs:120:44:120:49 | [post] buffer | provenance | | | test.rs:120:44:120:49 | [post] buffer | test.rs:121:15:121:20 | buffer | provenance | | | test.rs:121:15:121:20 | buffer | test.rs:121:14:121:20 | &buffer | provenance | | -| test.rs:126:22:126:25 | file | test.rs:126:42:126:52 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:126:22:126:25 | file | test.rs:126:42:126:52 | [post] &mut buffer [&ref] | provenance | MaD:32 | | test.rs:126:42:126:52 | [post] &mut buffer [&ref] | test.rs:126:47:126:52 | [post] buffer | provenance | | | test.rs:126:47:126:52 | [post] buffer | test.rs:127:15:127:20 | buffer | provenance | | | test.rs:127:15:127:20 | buffer | test.rs:127:14:127:20 | &buffer | provenance | | -| test.rs:132:9:132:12 | file | test.rs:132:25:132:35 | [post] &mut buffer [&ref] | provenance | MaD:30 | +| test.rs:132:9:132:12 | file | test.rs:132:25:132:35 | [post] &mut buffer [&ref] | provenance | MaD:22 | | test.rs:132:25:132:35 | [post] &mut buffer [&ref] | test.rs:132:30:132:35 | [post] buffer | provenance | | | test.rs:132:30:132:35 | [post] buffer | test.rs:133:15:133:20 | buffer | provenance | | | test.rs:133:15:133:20 | buffer | test.rs:133:14:133:20 | &buffer | provenance | | -| test.rs:136:17:136:20 | file | test.rs:136:17:136:28 | file.bytes() | provenance | MaD:26 | +| test.rs:136:17:136:20 | file | test.rs:136:17:136:28 | file.bytes() | provenance | MaD:18 | | test.rs:136:17:136:28 | file.bytes() | test.rs:137:14:137:17 | byte | provenance | | | test.rs:143:13:143:18 | mut f1 | test.rs:145:22:145:23 | f1 | provenance | | | test.rs:143:22:143:63 | ... .open(...) | test.rs:143:22:143:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:143:22:143:63 | ... .open(...) [Ok] | test.rs:143:22:143:72 | ... .unwrap() | provenance | MaD:21 | +| test.rs:143:22:143:63 | ... .open(...) [Ok] | test.rs:143:22:143:72 | ... .unwrap() | provenance | MaD:28 | | test.rs:143:22:143:72 | ... .unwrap() | test.rs:143:13:143:18 | mut f1 | provenance | | -| test.rs:145:22:145:23 | f1 | test.rs:145:30:145:40 | [post] &mut buffer [&ref] | provenance | MaD:29 | +| test.rs:145:22:145:23 | f1 | test.rs:145:30:145:40 | [post] &mut buffer [&ref] | provenance | MaD:21 | | test.rs:145:30:145:40 | [post] &mut buffer [&ref] | test.rs:145:35:145:40 | [post] buffer | provenance | | | test.rs:145:35:145:40 | [post] buffer | test.rs:146:15:146:20 | buffer | provenance | | | test.rs:146:15:146:20 | buffer | test.rs:146:14:146:20 | &buffer | provenance | | | test.rs:150:13:150:18 | mut f2 | test.rs:155:22:155:23 | f2 | provenance | | | test.rs:150:22:152:27 | ... .open(...) | test.rs:150:22:152:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:150:22:152:27 | ... .open(...) [Ok] | test.rs:150:22:153:21 | ... .unwrap() | provenance | MaD:21 | +| test.rs:150:22:152:27 | ... .open(...) [Ok] | test.rs:150:22:153:21 | ... .unwrap() | provenance | MaD:28 | | test.rs:150:22:153:21 | ... .unwrap() | test.rs:150:13:150:18 | mut f2 | provenance | | -| test.rs:155:22:155:23 | f2 | test.rs:155:30:155:40 | [post] &mut buffer [&ref] | provenance | MaD:29 | +| test.rs:155:22:155:23 | f2 | test.rs:155:30:155:40 | [post] &mut buffer [&ref] | provenance | MaD:21 | | test.rs:155:30:155:40 | [post] &mut buffer [&ref] | test.rs:155:35:155:40 | [post] buffer | provenance | | | test.rs:155:35:155:40 | [post] buffer | test.rs:156:15:156:20 | buffer | provenance | | | test.rs:156:15:156:20 | buffer | test.rs:156:14:156:20 | &buffer | provenance | | | test.rs:160:13:160:18 | mut f3 | test.rs:168:22:168:23 | f3 | provenance | | | test.rs:160:22:165:27 | ... .open(...) | test.rs:160:22:165:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:160:22:165:27 | ... .open(...) [Ok] | test.rs:160:22:166:21 | ... .unwrap() | provenance | MaD:21 | +| test.rs:160:22:165:27 | ... .open(...) [Ok] | test.rs:160:22:166:21 | ... .unwrap() | provenance | MaD:28 | | test.rs:160:22:166:21 | ... .unwrap() | test.rs:160:13:160:18 | mut f3 | provenance | | -| test.rs:168:22:168:23 | f3 | test.rs:168:30:168:40 | [post] &mut buffer [&ref] | provenance | MaD:29 | +| test.rs:168:22:168:23 | f3 | test.rs:168:30:168:40 | [post] &mut buffer [&ref] | provenance | MaD:21 | | test.rs:168:30:168:40 | [post] &mut buffer [&ref] | test.rs:168:35:168:40 | [post] buffer | provenance | | | test.rs:168:35:168:40 | [post] buffer | test.rs:169:15:169:20 | buffer | provenance | | | test.rs:169:15:169:20 | buffer | test.rs:169:14:169:20 | &buffer | provenance | | @@ -195,10 +195,10 @@ edges | test.rs:177:21:177:59 | ...::open(...) [Ok] | test.rs:177:21:177:60 | TryExpr | provenance | | | test.rs:177:21:177:60 | TryExpr | test.rs:177:13:177:17 | file2 | provenance | | | test.rs:178:13:178:22 | mut reader | test.rs:179:9:179:14 | reader | provenance | | -| test.rs:178:26:178:30 | file1 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:28 | +| test.rs:178:26:178:30 | file1 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:20 | | test.rs:178:26:178:43 | file1.chain(...) | test.rs:178:13:178:22 | mut reader | provenance | | -| test.rs:178:38:178:42 | file2 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:27 | -| test.rs:179:9:179:14 | reader | test.rs:179:31:179:41 | [post] &mut buffer [&ref] | provenance | MaD:31 | +| test.rs:178:38:178:42 | file2 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:19 | +| test.rs:179:9:179:14 | reader | test.rs:179:31:179:41 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:179:31:179:41 | [post] &mut buffer [&ref] | test.rs:179:36:179:41 | [post] buffer | provenance | | | test.rs:179:36:179:41 | [post] buffer | test.rs:180:15:180:20 | buffer | provenance | | | test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | | @@ -207,9 +207,9 @@ edges | test.rs:185:21:185:51 | ...::open(...) [Ok] | test.rs:185:21:185:52 | TryExpr | provenance | | | test.rs:185:21:185:52 | TryExpr | test.rs:185:13:185:17 | file1 | provenance | | | test.rs:186:13:186:22 | mut reader | test.rs:187:9:187:14 | reader | provenance | | -| test.rs:186:26:186:30 | file1 | test.rs:186:26:186:40 | file1.take(...) | provenance | MaD:32 | +| test.rs:186:26:186:30 | file1 | test.rs:186:26:186:40 | file1.take(...) | provenance | MaD:24 | | test.rs:186:26:186:40 | file1.take(...) | test.rs:186:13:186:22 | mut reader | provenance | | -| test.rs:187:9:187:14 | reader | test.rs:187:31:187:41 | [post] &mut buffer [&ref] | provenance | MaD:31 | +| test.rs:187:9:187:14 | reader | test.rs:187:31:187:41 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:187:31:187:41 | [post] &mut buffer [&ref] | test.rs:187:36:187:41 | [post] buffer | provenance | | | test.rs:187:36:187:41 | [post] buffer | test.rs:188:15:188:20 | buffer | provenance | | | test.rs:188:15:188:20 | buffer | test.rs:188:14:188:20 | &buffer | provenance | | @@ -280,7 +280,7 @@ edges | test.rs:274:20:274:56 | ...::open(...) [future, Ok] | test.rs:274:20:274:62 | await ... [Ok] | provenance | | | test.rs:274:20:274:62 | await ... [Ok] | test.rs:274:20:274:63 | TryExpr | provenance | | | test.rs:274:20:274:63 | TryExpr | test.rs:274:9:274:16 | mut file | provenance | | -| test.rs:278:22:278:25 | file | test.rs:278:32:278:42 | [post] &mut buffer [&ref] | provenance | MaD:18 | +| test.rs:278:22:278:25 | file | test.rs:278:32:278:42 | [post] &mut buffer [&ref] | provenance | MaD:25 | | test.rs:278:32:278:42 | [post] &mut buffer [&ref] | test.rs:278:37:278:42 | [post] buffer | provenance | | | test.rs:278:37:278:42 | [post] buffer | test.rs:279:15:279:20 | buffer | provenance | | | test.rs:279:15:279:20 | buffer | test.rs:279:14:279:20 | &buffer | provenance | | @@ -289,7 +289,7 @@ edges | test.rs:285:22:285:69 | ... .open(...) [future, Ok] | test.rs:285:22:285:75 | await ... [Ok] | provenance | | | test.rs:285:22:285:75 | await ... [Ok] | test.rs:285:22:285:76 | TryExpr | provenance | | | test.rs:285:22:285:76 | TryExpr | test.rs:285:13:285:18 | mut f1 | provenance | | -| test.rs:287:22:287:23 | f1 | test.rs:287:30:287:40 | [post] &mut buffer [&ref] | provenance | MaD:18 | +| test.rs:287:22:287:23 | f1 | test.rs:287:30:287:40 | [post] &mut buffer [&ref] | provenance | MaD:25 | | test.rs:287:30:287:40 | [post] &mut buffer [&ref] | test.rs:287:35:287:40 | [post] buffer | provenance | | | test.rs:287:35:287:40 | [post] buffer | test.rs:288:15:288:20 | buffer | provenance | | | test.rs:288:15:288:20 | buffer | test.rs:288:14:288:20 | &buffer | provenance | | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock index 27790b8b768d..08dceba92341 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock +++ b/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock @@ -92,6 +92,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-native-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9343dc5acf07e79ff82d0c37899f079db3534d99f189a1837c8e549c99405bec" +dependencies = [ + "futures-util", + "native-tls", + "thiserror", + "url", +] + [[package]] name = "async-std" version = "1.13.2" @@ -1551,6 +1563,7 @@ dependencies = [ name = "test" version = "0.0.1" dependencies = [ + "async-native-tls", "async-std", "futures", "futures-rustls", @@ -1558,11 +1571,32 @@ dependencies = [ "http-body-util", "hyper", "hyper-util", + "native-tls", "reqwest", "rustls", "tokio", ] +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tinystr" version = "0.8.1" diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index 821dd11cda66..eaf74b90ea10 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -7,72 +7,75 @@ models | 6 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | | 7 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | | 8 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 9 | Summary: ::deref; Argument[self].Reference; ReturnValue.Reference; taint | -| 10 | Summary: ::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 11 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 12 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 13 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | -| 14 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 15 | Summary: ::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 16 | Summary: ::poll_read; Argument[self].Reference; Argument[1].Reference; taint | -| 17 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 18 | Summary: ::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 19 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 20 | Summary: ::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 21 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | -| 22 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 23 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 24 | Summary: ::body; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | -| 25 | Summary: ::body_mut; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | -| 26 | Summary: ::into_body; Argument[self].Field[http::response::Response::body]; ReturnValue; value | -| 27 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 28 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 29 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 30 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 31 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 33 | Summary: ::lines; Argument[self]; ReturnValue; taint | -| 34 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 35 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | -| 36 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 37 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | -| 38 | Summary: ::take; Argument[self]; ReturnValue; taint | -| 39 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 40 | Summary: ::try_clone; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 41 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | -| 42 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | -| 43 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | -| 44 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | +| 9 | Summary: ::lines; Argument[self]; ReturnValue; taint | +| 10 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 11 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 12 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | +| 13 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 14 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 15 | Summary: ::take; Argument[self]; ReturnValue; taint | +| 16 | Summary: ::deref; Argument[self].Reference; ReturnValue.Reference; taint | +| 17 | Summary: ::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 18 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 19 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 20 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | +| 21 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 22 | Summary: ::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 23 | Summary: ::poll_read; Argument[self].Reference; Argument[1].Reference; taint | +| 24 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 25 | Summary: ::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 26 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 27 | Summary: ::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 28 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | +| 29 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 30 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 31 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 32 | Summary: ::body; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | +| 33 | Summary: ::body_mut; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | +| 34 | Summary: ::into_body; Argument[self].Field[http::response::Response::body]; ReturnValue; value | +| 35 | Summary: ::connect; Argument[1]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 37 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 38 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 39 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 40 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 41 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 42 | Summary: ::try_clone; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 43 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | +| 44 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | +| 45 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | +| 46 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | +| 47 | Summary: async_native_tls::connect::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | | test.rs:11:26:11:62 | ...::get(...) | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | -| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:31 | +| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:40 | | test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | | test.rs:14:26:14:62 | ...::get(...) | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | -| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:14 | -| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:31 | -| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:14 | +| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:21 | +| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:40 | +| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:21 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | | test.rs:17:26:17:62 | ...::get(...) | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | -| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:14 | -| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:32 | -| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:14 | +| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:21 | +| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:41 | +| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:21 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | | test.rs:20:26:20:62 | ...::get(...) | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | -| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:14 | -| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:30 | -| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:14 | +| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:21 | +| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:39 | +| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:21 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | | test.rs:23:26:23:52 | ...::get(...) | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | | test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | -| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:29 | +| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:38 | | test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | | test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | @@ -80,7 +83,7 @@ edges | test.rs:26:26:26:52 | ...::get(...) | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | | test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | -| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:27 | +| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:36 | | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | | test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | | | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | @@ -90,13 +93,13 @@ edges | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | -| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:28 | +| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:37 | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | -| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:11 | +| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:18 | | test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | -| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:28 | +| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:37 | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | | test.rs:31:29:31:50 | await ... [Ok, Some] | test.rs:31:29:31:51 | TryExpr [Some] | provenance | | | test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | | @@ -116,42 +119,42 @@ edges | test.rs:67:24:67:57 | await ... [Ok] | test.rs:67:24:67:58 | TryExpr | provenance | | | test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | -| test.rs:76:18:76:25 | response | test.rs:76:18:76:32 | response.body() | provenance | MaD:24 | -| test.rs:77:18:77:25 | response | test.rs:77:18:77:36 | response.body_mut() | provenance | MaD:25 | +| test.rs:76:18:76:25 | response | test.rs:76:18:76:32 | response.body() | provenance | MaD:32 | +| test.rs:77:18:77:25 | response | test.rs:77:18:77:36 | response.body_mut() | provenance | MaD:33 | | test.rs:79:17:79:20 | body | test.rs:80:19:80:22 | body | provenance | | -| test.rs:79:24:79:31 | response | test.rs:79:24:79:43 | response.into_body() | provenance | MaD:26 | +| test.rs:79:24:79:31 | response | test.rs:79:24:79:43 | response.into_body() | provenance | MaD:34 | | test.rs:79:24:79:43 | response.into_body() | test.rs:79:17:79:20 | body | provenance | | | test.rs:80:19:80:22 | body | test.rs:80:18:80:22 | &body | provenance | | | test.rs:155:13:155:22 | mut stream | test.rs:162:17:162:22 | stream | provenance | | | test.rs:155:26:155:62 | ...::connect(...) | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:4 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | | test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | -| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:35 | +| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:12 | | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | test.rs:162:34:162:39 | [post] buffer | provenance | | | test.rs:162:34:162:39 | [post] buffer | test.rs:165:15:165:20 | buffer | provenance | | | test.rs:162:34:162:39 | [post] buffer | test.rs:166:14:166:19 | buffer | provenance | | | test.rs:165:15:165:20 | buffer | test.rs:165:14:165:20 | &buffer | provenance | | -| test.rs:166:14:166:19 | buffer | test.rs:166:14:166:22 | buffer[0] | provenance | MaD:10 | +| test.rs:166:14:166:19 | buffer | test.rs:166:14:166:22 | buffer[0] | provenance | MaD:17 | | test.rs:174:13:174:22 | mut stream | test.rs:182:58:182:63 | stream | provenance | | | test.rs:174:13:174:22 | mut stream | test.rs:203:54:203:59 | stream | provenance | | | test.rs:174:26:174:105 | ...::connect_timeout(...) | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:5 | | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | | | test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | | | test.rs:182:21:182:30 | mut reader | test.rs:185:27:185:32 | reader | provenance | | -| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:38 | +| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:15 | | test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | -| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:39 | -| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:34 | +| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:11 | +| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:10 | | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | | test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | | | test.rs:203:21:203:26 | reader | test.rs:204:29:204:34 | reader | provenance | | -| test.rs:203:30:203:73 | ...::new(...) | test.rs:203:30:203:83 | ... .take(...) | provenance | MaD:38 | +| test.rs:203:30:203:73 | ...::new(...) | test.rs:203:30:203:83 | ... .take(...) | provenance | MaD:15 | | test.rs:203:30:203:83 | ... .take(...) | test.rs:203:21:203:26 | reader | provenance | | -| test.rs:203:54:203:59 | stream | test.rs:203:54:203:71 | stream.try_clone() [Ok] | provenance | MaD:40 | +| test.rs:203:54:203:59 | stream | test.rs:203:54:203:71 | stream.try_clone() [Ok] | provenance | MaD:42 | | test.rs:203:54:203:71 | stream.try_clone() [Ok] | test.rs:203:54:203:72 | TryExpr | provenance | | -| test.rs:203:54:203:72 | TryExpr | test.rs:203:30:203:73 | ...::new(...) | provenance | MaD:39 | -| test.rs:204:29:204:34 | reader | test.rs:204:29:204:42 | reader.lines() | provenance | MaD:33 | +| test.rs:203:54:203:72 | TryExpr | test.rs:203:30:203:73 | ...::new(...) | provenance | MaD:11 | +| test.rs:204:29:204:34 | reader | test.rs:204:29:204:42 | reader.lines() | provenance | MaD:9 | | test.rs:204:29:204:42 | reader.lines() | test.rs:205:28:205:37 | Ok(...) | provenance | | | test.rs:205:28:205:37 | Ok(...) | test.rs:207:30:207:35 | string | provenance | | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:17:232:28 | tokio_stream | provenance | | @@ -162,212 +165,254 @@ edges | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | | test.rs:224:28:224:73 | TryExpr | test.rs:224:9:224:24 | mut tokio_stream | provenance | | -| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:42 | +| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:44 | | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | test.rs:232:40:232:46 | [post] buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:239:15:239:21 | buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:240:14:240:20 | buffer1 | provenance | | -| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:41 | +| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:43 | | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | test.rs:236:41:236:47 | [post] buffer2 | provenance | | | test.rs:236:41:236:47 | [post] buffer2 | test.rs:243:15:243:21 | buffer2 | provenance | | | test.rs:236:41:236:47 | [post] buffer2 | test.rs:244:14:244:20 | buffer2 | provenance | | | test.rs:239:15:239:21 | buffer1 | test.rs:239:14:239:21 | &buffer1 | provenance | | -| test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:10 | +| test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:17 | | test.rs:243:15:243:21 | buffer2 | test.rs:243:14:243:21 | &buffer2 | provenance | | -| test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:10 | -| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:43 | +| test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:17 | +| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:45 | | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | test.rs:252:46:252:51 | [post] buffer | provenance | | | test.rs:252:46:252:51 | [post] buffer | test.rs:259:27:259:32 | buffer | provenance | | | test.rs:259:27:259:32 | buffer | test.rs:259:26:259:32 | &buffer | provenance | | -| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:44 | +| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:46 | | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | test.rs:275:50:275:55 | [post] buffer | provenance | | | test.rs:275:50:275:55 | [post] buffer | test.rs:282:27:282:32 | buffer | provenance | | | test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | | | test.rs:332:9:332:18 | mut client | test.rs:333:22:333:27 | client | provenance | | | test.rs:332:22:332:75 | ...::new(...) | test.rs:332:22:332:75 | ...::new(...) [Ok] | provenance | Src:MaD:3 | -| test.rs:332:22:332:75 | ...::new(...) [Ok] | test.rs:332:22:332:84 | ... .unwrap() | provenance | MaD:14 | +| test.rs:332:22:332:75 | ...::new(...) [Ok] | test.rs:332:22:332:84 | ... .unwrap() | provenance | MaD:21 | | test.rs:332:22:332:84 | ... .unwrap() | test.rs:332:9:332:18 | mut client | provenance | | | test.rs:333:9:333:18 | mut reader | test.rs:334:11:334:16 | reader | provenance | | | test.rs:333:9:333:18 | mut reader | test.rs:338:22:338:27 | reader | provenance | | | test.rs:333:9:333:18 | mut reader | test.rs:344:22:344:27 | reader | provenance | | | test.rs:333:9:333:18 | mut reader | test.rs:350:22:350:27 | reader | provenance | | -| test.rs:333:22:333:27 | client | test.rs:333:22:333:36 | client.reader() | provenance | MaD:9 | +| test.rs:333:22:333:27 | client | test.rs:333:22:333:36 | client.reader() | provenance | MaD:16 | | test.rs:333:22:333:36 | client.reader() | test.rs:333:9:333:18 | mut reader | provenance | | | test.rs:334:11:334:16 | reader | test.rs:334:10:334:16 | &reader | provenance | | -| test.rs:338:22:338:27 | reader | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | provenance | MaD:35 | +| test.rs:338:22:338:27 | reader | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | provenance | MaD:12 | | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | test.rs:338:39:338:44 | [post] buffer | provenance | | | test.rs:338:39:338:44 | [post] buffer | test.rs:339:15:339:20 | buffer | provenance | | | test.rs:339:15:339:20 | buffer | test.rs:339:14:339:20 | &buffer | provenance | | -| test.rs:344:22:344:27 | reader | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | provenance | MaD:36 | +| test.rs:344:22:344:27 | reader | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | provenance | MaD:13 | | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | test.rs:344:46:344:51 | [post] buffer | provenance | | | test.rs:344:46:344:51 | [post] buffer | test.rs:345:15:345:20 | buffer | provenance | | | test.rs:345:15:345:20 | buffer | test.rs:345:14:345:20 | &buffer | provenance | | -| test.rs:350:22:350:27 | reader | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | provenance | MaD:37 | +| test.rs:350:22:350:27 | reader | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | provenance | MaD:14 | | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | test.rs:350:49:350:54 | [post] buffer | provenance | | | test.rs:350:49:350:54 | [post] buffer | test.rs:351:15:351:20 | buffer | provenance | | | test.rs:351:15:351:20 | buffer | test.rs:351:14:351:20 | &buffer | provenance | | -| test.rs:373:13:373:15 | tcp | test.rs:374:15:374:17 | tcp | provenance | | -| test.rs:373:13:373:15 | tcp | test.rs:380:57:380:59 | tcp | provenance | | -| test.rs:373:19:373:41 | ...::connect(...) | test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | -| test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | test.rs:373:19:373:47 | await ... [Ok] | provenance | | -| test.rs:373:19:373:47 | await ... [Ok] | test.rs:373:19:373:48 | TryExpr | provenance | | -| test.rs:373:19:373:48 | TryExpr | test.rs:373:13:373:15 | tcp | provenance | | -| test.rs:374:15:374:17 | tcp | test.rs:374:14:374:17 | &tcp | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:381:15:381:20 | reader | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:386:44:386:49 | reader | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:399:68:399:73 | reader | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:403:31:403:36 | reader | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:408:55:408:60 | reader | provenance | | -| test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | test.rs:380:26:380:66 | await ... [Ok] | provenance | | -| test.rs:380:26:380:66 | await ... [Ok] | test.rs:380:26:380:67 | TryExpr | provenance | | -| test.rs:380:26:380:67 | TryExpr | test.rs:380:13:380:22 | mut reader | provenance | | -| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:17 | -| test.rs:381:15:381:20 | reader | test.rs:381:14:381:20 | &reader | provenance | | -| test.rs:386:17:386:26 | mut pinned | test.rs:387:19:387:24 | pinned | provenance | | -| test.rs:386:17:386:26 | mut pinned | test.rs:389:30:389:35 | pinned | provenance | | -| test.rs:386:17:386:26 | mut pinned [Pin, &ref] | test.rs:387:19:387:24 | pinned [Pin, &ref] | provenance | | -| test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | | -| test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | test.rs:386:17:386:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:12 | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | -| test.rs:386:44:386:49 | reader | test.rs:386:39:386:49 | &mut reader [&ref] | provenance | | -| test.rs:387:19:387:24 | pinned | test.rs:387:18:387:24 | &pinned | provenance | | -| test.rs:387:19:387:24 | pinned [Pin, &ref] | test.rs:387:18:387:24 | &pinned | provenance | | -| test.rs:389:30:389:35 | pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:16 | -| test.rs:389:56:389:66 | [post] &mut buffer [&ref] | test.rs:389:61:389:66 | [post] buffer | provenance | | -| test.rs:389:61:389:66 | [post] buffer | test.rs:391:23:391:28 | buffer | provenance | | -| test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:28 | buffer | provenance | | -| test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:33 | buffer[...] | provenance | | -| test.rs:391:23:391:28 | buffer | test.rs:391:22:391:28 | &buffer | provenance | | -| test.rs:392:23:392:28 | buffer | test.rs:392:23:392:33 | buffer[...] | provenance | MaD:10 | -| test.rs:392:23:392:33 | buffer[...] | test.rs:392:22:392:33 | &... | provenance | | -| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:21 | -| test.rs:399:68:399:73 | reader | test.rs:399:63:399:73 | &mut reader [&ref] | provenance | | -| test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | test.rs:399:81:399:87 | [post] buffer1 | provenance | | -| test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:25 | buffer1 | provenance | | -| test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | | -| test.rs:400:19:400:25 | buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | MaD:10 | -| test.rs:400:19:400:40 | buffer1[...] | test.rs:400:18:400:40 | &... | provenance | | -| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:21 | -| test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | test.rs:403:48:403:54 | [post] buffer2 | provenance | | -| test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:25 | buffer2 | provenance | | -| test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | | -| test.rs:405:19:405:25 | buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | MaD:10 | -| test.rs:405:19:405:40 | buffer2[...] | test.rs:405:18:405:40 | &... | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:409:15:409:21 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:423:41:423:47 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:437:26:437:32 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:444:44:444:50 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:457:68:457:74 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:461:31:461:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:467:44:467:50 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:479:26:479:32 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:486:31:486:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:493:31:493:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | | -| test.rs:408:27:408:61 | ...::new(...) | test.rs:408:13:408:23 | mut reader2 | provenance | | -| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:23 | -| test.rs:409:15:409:21 | reader2 | test.rs:409:14:409:21 | &reader2 | provenance | | -| test.rs:413:17:413:26 | mut pinned | test.rs:414:19:414:24 | pinned | provenance | | -| test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:31 | pinned | provenance | | -| test.rs:413:17:413:26 | mut pinned [Pin, &ref] | test.rs:414:19:414:24 | pinned [Pin, &ref] | provenance | | -| test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | | -| test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | test.rs:413:17:413:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:12 | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | -| test.rs:413:44:413:50 | reader2 | test.rs:413:39:413:50 | &mut reader2 [&ref] | provenance | | -| test.rs:414:19:414:24 | pinned | test.rs:414:18:414:24 | &pinned | provenance | | -| test.rs:414:19:414:24 | pinned [Pin, &ref] | test.rs:414:18:414:24 | &pinned | provenance | | -| test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:418:23:418:28 | buffer [Ready, Ok] | provenance | | -| test.rs:416:26:416:31 | pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:15 | -| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:416:17:416:22 | buffer [Ready, Ok] | provenance | | -| test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | test.rs:417:32:417:38 | Ok(...) [Ok] | provenance | | -| test.rs:417:32:417:38 | Ok(...) [Ok] | test.rs:417:35:417:37 | buf | provenance | | -| test.rs:417:35:417:37 | buf | test.rs:419:22:419:24 | buf | provenance | | -| test.rs:418:23:418:28 | buffer [Ready, Ok] | test.rs:418:22:418:28 | &buffer | provenance | | -| test.rs:423:17:423:23 | buffer2 [Ready, Ok] | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:15 | -| test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:12 | -| test.rs:423:41:423:47 | reader2 | test.rs:423:36:423:47 | &mut reader2 [&ref] | provenance | | -| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | provenance | | -| test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | test.rs:425:29:425:35 | Ok(...) [Ok] | provenance | | -| test.rs:425:29:425:35 | Ok(...) [Ok] | test.rs:425:32:425:34 | buf | provenance | | -| test.rs:425:32:425:34 | buf | test.rs:427:26:427:28 | buf | provenance | | -| test.rs:426:27:426:33 | buffer2 [Ready, Ok] | test.rs:426:26:426:33 | &buffer2 | provenance | | -| test.rs:437:17:437:22 | buffer | test.rs:438:18:438:23 | buffer | provenance | | -| test.rs:437:26:437:32 | reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:18 | -| test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | test.rs:437:26:437:49 | await ... [Ok] | provenance | | -| test.rs:437:26:437:49 | await ... [Ok] | test.rs:437:26:437:50 | TryExpr | provenance | | -| test.rs:437:26:437:50 | TryExpr | test.rs:437:17:437:22 | buffer | provenance | | -| test.rs:444:17:444:26 | mut pinned | test.rs:445:19:445:24 | pinned | provenance | | -| test.rs:444:17:444:26 | mut pinned | test.rs:447:30:447:35 | pinned | provenance | | -| test.rs:444:17:444:26 | mut pinned [Pin, &ref] | test.rs:445:19:445:24 | pinned [Pin, &ref] | provenance | | -| test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | | -| test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | test.rs:444:17:444:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:12 | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | -| test.rs:444:44:444:50 | reader2 | test.rs:444:39:444:50 | &mut reader2 [&ref] | provenance | | -| test.rs:445:19:445:24 | pinned | test.rs:445:18:445:24 | &pinned | provenance | | -| test.rs:445:19:445:24 | pinned [Pin, &ref] | test.rs:445:18:445:24 | &pinned | provenance | | -| test.rs:447:30:447:35 | pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:16 | -| test.rs:447:56:447:66 | [post] &mut buffer [&ref] | test.rs:447:61:447:66 | [post] buffer | provenance | | -| test.rs:447:61:447:66 | [post] buffer | test.rs:448:19:448:24 | buffer | provenance | | -| test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:28 | buffer | provenance | | -| test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:33 | buffer[...] | provenance | | -| test.rs:448:19:448:24 | buffer | test.rs:448:18:448:24 | &buffer | provenance | | -| test.rs:450:23:450:28 | buffer | test.rs:450:23:450:33 | buffer[...] | provenance | MaD:10 | -| test.rs:450:23:450:33 | buffer[...] | test.rs:450:22:450:33 | &... | provenance | | -| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:21 | -| test.rs:457:68:457:74 | reader2 | test.rs:457:63:457:74 | &mut reader2 [&ref] | provenance | | -| test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | test.rs:457:82:457:88 | [post] buffer1 | provenance | | -| test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:25 | buffer1 | provenance | | -| test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | | -| test.rs:458:19:458:25 | buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | MaD:10 | -| test.rs:458:19:458:40 | buffer1[...] | test.rs:458:18:458:40 | &... | provenance | | -| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:21 | -| test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | test.rs:461:49:461:55 | [post] buffer2 | provenance | | -| test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:25 | buffer2 | provenance | | -| test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | | -| test.rs:462:19:462:25 | buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | MaD:10 | -| test.rs:462:19:462:40 | buffer2[...] | test.rs:462:18:462:40 | &... | provenance | | -| test.rs:467:17:467:26 | mut pinned | test.rs:468:19:468:24 | pinned | provenance | | -| test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:31 | pinned | provenance | | -| test.rs:467:17:467:26 | mut pinned [Pin, &ref] | test.rs:468:19:468:24 | pinned [Pin, &ref] | provenance | | -| test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | | -| test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:12 | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | provenance | MaD:13 | -| test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | | -| test.rs:468:19:468:24 | pinned | test.rs:468:18:468:24 | &pinned | provenance | | -| test.rs:468:19:468:24 | pinned [Pin, &ref] | test.rs:468:18:468:24 | &pinned | provenance | | -| test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:471:19:471:24 | buffer [Ready, Ok] | provenance | | -| test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:470:26:470:31 | pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:15 | -| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:470:17:470:22 | buffer [Ready, Ok] | provenance | | -| test.rs:471:19:471:24 | buffer [Ready, Ok] | test.rs:471:18:471:24 | &buffer | provenance | | -| test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | test.rs:472:32:472:38 | Ok(...) [Ok] | provenance | | -| test.rs:472:32:472:38 | Ok(...) [Ok] | test.rs:472:35:472:37 | buf | provenance | | -| test.rs:472:35:472:37 | buf | test.rs:473:22:473:24 | buf | provenance | | -| test.rs:479:17:479:22 | buffer | test.rs:480:18:480:23 | buffer | provenance | | -| test.rs:479:26:479:32 | reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:18 | -| test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | test.rs:479:26:479:49 | await ... [Ok] | provenance | | -| test.rs:479:26:479:49 | await ... [Ok] | test.rs:479:26:479:50 | TryExpr | provenance | | -| test.rs:479:26:479:50 | TryExpr | test.rs:479:17:479:22 | buffer | provenance | | -| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:20 | -| test.rs:486:57:486:65 | [post] &mut line [&ref] | test.rs:486:62:486:65 | [post] line | provenance | | -| test.rs:486:62:486:65 | [post] line | test.rs:487:19:487:22 | line | provenance | | -| test.rs:487:19:487:22 | line | test.rs:487:18:487:22 | &line | provenance | | -| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:19 | -| test.rs:493:49:493:57 | [post] &mut line [&ref] | test.rs:493:54:493:57 | [post] line | provenance | | -| test.rs:493:54:493:57 | [post] line | test.rs:494:19:494:22 | line | provenance | | -| test.rs:494:19:494:22 | line | test.rs:494:18:494:22 | &line | provenance | | -| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:22 | -| test.rs:500:51:500:61 | [post] &mut buffer [&ref] | test.rs:500:56:500:61 | [post] buffer | provenance | | -| test.rs:500:56:500:61 | [post] buffer | test.rs:501:19:501:24 | buffer | provenance | | -| test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | | +| test.rs:359:9:359:14 | stream | test.rs:361:59:361:64 | stream | provenance | | +| test.rs:359:18:359:54 | ...::connect(...) | test.rs:359:18:359:54 | ...::connect(...) [Ok] | provenance | Src:MaD:4 | +| test.rs:359:18:359:54 | ...::connect(...) [Ok] | test.rs:359:18:359:55 | TryExpr | provenance | | +| test.rs:359:18:359:55 | TryExpr | test.rs:359:9:359:14 | stream | provenance | | +| test.rs:361:9:361:18 | mut stream | test.rs:362:11:362:16 | stream | provenance | | +| test.rs:361:9:361:18 | mut stream | test.rs:367:22:367:27 | stream | provenance | | +| test.rs:361:9:361:18 | mut stream | test.rs:373:5:373:10 | stream | provenance | | +| test.rs:361:22:361:65 | connector.connect(...) [Ok] | test.rs:361:22:361:66 | TryExpr | provenance | | +| test.rs:361:22:361:66 | TryExpr | test.rs:361:9:361:18 | mut stream | provenance | | +| test.rs:361:59:361:64 | stream | test.rs:361:22:361:65 | connector.connect(...) [Ok] | provenance | MaD:35 | +| test.rs:362:11:362:16 | stream | test.rs:362:10:362:16 | &stream | provenance | | +| test.rs:367:22:367:27 | stream | test.rs:367:34:367:44 | [post] &mut buffer [&ref] | provenance | MaD:12 | +| test.rs:367:34:367:44 | [post] &mut buffer [&ref] | test.rs:367:39:367:44 | [post] buffer | provenance | | +| test.rs:367:39:367:44 | [post] buffer | test.rs:370:11:370:16 | buffer | provenance | | +| test.rs:367:39:367:44 | [post] buffer | test.rs:370:11:370:30 | buffer[...] | provenance | | +| test.rs:370:11:370:16 | buffer | test.rs:370:11:370:30 | buffer[...] | provenance | MaD:17 | +| test.rs:370:11:370:30 | buffer[...] | test.rs:370:10:370:30 | &... | provenance | | +| test.rs:373:5:373:10 | stream | test.rs:373:27:373:39 | [post] &mut response [&ref] | provenance | MaD:14 | +| test.rs:373:27:373:39 | [post] &mut response [&ref] | test.rs:373:32:373:39 | [post] response | provenance | | +| test.rs:373:32:373:39 | [post] response | test.rs:375:10:375:17 | response | provenance | | +| test.rs:384:9:384:15 | stream0 | test.rs:386:67:386:73 | stream0 | provenance | | +| test.rs:384:19:384:61 | ...::connect(...) | test.rs:384:19:384:61 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:384:19:384:61 | ...::connect(...) [future, Ok] | test.rs:384:19:384:67 | await ... [Ok] | provenance | | +| test.rs:384:19:384:67 | await ... [Ok] | test.rs:384:19:384:68 | TryExpr | provenance | | +| test.rs:384:19:384:68 | TryExpr | test.rs:384:9:384:15 | stream0 | provenance | | +| test.rs:386:9:386:18 | mut stream | test.rs:387:11:387:16 | stream | provenance | | +| test.rs:386:9:386:18 | mut stream | test.rs:394:22:394:27 | stream | provenance | | +| test.rs:386:9:386:18 | mut stream | test.rs:400:5:400:10 | stream | provenance | | +| test.rs:386:22:386:74 | ...::connect(...) [future, Ok] | test.rs:386:22:386:80 | await ... [Ok] | provenance | | +| test.rs:386:22:386:80 | await ... [Ok] | test.rs:386:22:386:81 | TryExpr | provenance | | +| test.rs:386:22:386:81 | TryExpr | test.rs:386:9:386:18 | mut stream | provenance | | +| test.rs:386:67:386:73 | stream0 | test.rs:386:22:386:74 | ...::connect(...) [future, Ok] | provenance | MaD:47 | +| test.rs:387:11:387:16 | stream | test.rs:387:10:387:16 | &stream | provenance | | +| test.rs:394:22:394:27 | stream | test.rs:394:34:394:44 | [post] &mut buffer [&ref] | provenance | MaD:28 | +| test.rs:394:34:394:44 | [post] &mut buffer [&ref] | test.rs:394:39:394:44 | [post] buffer | provenance | | +| test.rs:394:39:394:44 | [post] buffer | test.rs:397:11:397:16 | buffer | provenance | | +| test.rs:394:39:394:44 | [post] buffer | test.rs:397:11:397:30 | buffer[...] | provenance | | +| test.rs:397:11:397:16 | buffer | test.rs:397:11:397:30 | buffer[...] | provenance | MaD:17 | +| test.rs:397:11:397:30 | buffer[...] | test.rs:397:10:397:30 | &... | provenance | | +| test.rs:400:5:400:10 | stream | test.rs:400:27:400:39 | [post] &mut response [&ref] | provenance | MaD:30 | +| test.rs:400:27:400:39 | [post] &mut response [&ref] | test.rs:400:32:400:39 | [post] response | provenance | | +| test.rs:400:32:400:39 | [post] response | test.rs:402:10:402:17 | response | provenance | | +| test.rs:423:13:423:15 | tcp | test.rs:424:15:424:17 | tcp | provenance | | +| test.rs:423:13:423:15 | tcp | test.rs:430:57:430:59 | tcp | provenance | | +| test.rs:423:19:423:41 | ...::connect(...) | test.rs:423:19:423:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:423:19:423:41 | ...::connect(...) [future, Ok] | test.rs:423:19:423:47 | await ... [Ok] | provenance | | +| test.rs:423:19:423:47 | await ... [Ok] | test.rs:423:19:423:48 | TryExpr | provenance | | +| test.rs:423:19:423:48 | TryExpr | test.rs:423:13:423:15 | tcp | provenance | | +| test.rs:424:15:424:17 | tcp | test.rs:424:14:424:17 | &tcp | provenance | | +| test.rs:430:13:430:22 | mut reader | test.rs:431:15:431:20 | reader | provenance | | +| test.rs:430:13:430:22 | mut reader | test.rs:436:44:436:49 | reader | provenance | | +| test.rs:430:13:430:22 | mut reader | test.rs:449:68:449:73 | reader | provenance | | +| test.rs:430:13:430:22 | mut reader | test.rs:453:31:453:36 | reader | provenance | | +| test.rs:430:13:430:22 | mut reader | test.rs:458:55:458:60 | reader | provenance | | +| test.rs:430:26:430:60 | connector.connect(...) [future, Ok] | test.rs:430:26:430:66 | await ... [Ok] | provenance | | +| test.rs:430:26:430:66 | await ... [Ok] | test.rs:430:26:430:67 | TryExpr | provenance | | +| test.rs:430:26:430:67 | TryExpr | test.rs:430:13:430:22 | mut reader | provenance | | +| test.rs:430:57:430:59 | tcp | test.rs:430:26:430:60 | connector.connect(...) [future, Ok] | provenance | MaD:24 | +| test.rs:431:15:431:20 | reader | test.rs:431:14:431:20 | &reader | provenance | | +| test.rs:436:17:436:26 | mut pinned | test.rs:437:19:437:24 | pinned | provenance | | +| test.rs:436:17:436:26 | mut pinned | test.rs:439:30:439:35 | pinned | provenance | | +| test.rs:436:17:436:26 | mut pinned [Pin, &ref] | test.rs:437:19:437:24 | pinned [Pin, &ref] | provenance | | +| test.rs:436:30:436:50 | ...::new(...) | test.rs:436:17:436:26 | mut pinned | provenance | | +| test.rs:436:30:436:50 | ...::new(...) [Pin, &ref] | test.rs:436:17:436:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:436:39:436:49 | &mut reader [&ref] | test.rs:436:30:436:50 | ...::new(...) | provenance | MaD:19 | +| test.rs:436:39:436:49 | &mut reader [&ref] | test.rs:436:30:436:50 | ...::new(...) [Pin, &ref] | provenance | MaD:20 | +| test.rs:436:44:436:49 | reader | test.rs:436:39:436:49 | &mut reader [&ref] | provenance | | +| test.rs:437:19:437:24 | pinned | test.rs:437:18:437:24 | &pinned | provenance | | +| test.rs:437:19:437:24 | pinned [Pin, &ref] | test.rs:437:18:437:24 | &pinned | provenance | | +| test.rs:439:30:439:35 | pinned | test.rs:439:56:439:66 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:439:56:439:66 | [post] &mut buffer [&ref] | test.rs:439:61:439:66 | [post] buffer | provenance | | +| test.rs:439:61:439:66 | [post] buffer | test.rs:441:23:441:28 | buffer | provenance | | +| test.rs:439:61:439:66 | [post] buffer | test.rs:442:23:442:28 | buffer | provenance | | +| test.rs:439:61:439:66 | [post] buffer | test.rs:442:23:442:33 | buffer[...] | provenance | | +| test.rs:441:23:441:28 | buffer | test.rs:441:22:441:28 | &buffer | provenance | | +| test.rs:442:23:442:28 | buffer | test.rs:442:23:442:33 | buffer[...] | provenance | MaD:17 | +| test.rs:442:23:442:33 | buffer[...] | test.rs:442:22:442:33 | &... | provenance | | +| test.rs:449:63:449:73 | &mut reader [&ref] | test.rs:449:76:449:87 | [post] &mut buffer1 [&ref] | provenance | MaD:28 | +| test.rs:449:68:449:73 | reader | test.rs:449:63:449:73 | &mut reader [&ref] | provenance | | +| test.rs:449:76:449:87 | [post] &mut buffer1 [&ref] | test.rs:449:81:449:87 | [post] buffer1 | provenance | | +| test.rs:449:81:449:87 | [post] buffer1 | test.rs:450:19:450:25 | buffer1 | provenance | | +| test.rs:449:81:449:87 | [post] buffer1 | test.rs:450:19:450:40 | buffer1[...] | provenance | | +| test.rs:450:19:450:25 | buffer1 | test.rs:450:19:450:40 | buffer1[...] | provenance | MaD:17 | +| test.rs:450:19:450:40 | buffer1[...] | test.rs:450:18:450:40 | &... | provenance | | +| test.rs:453:31:453:36 | reader | test.rs:453:43:453:54 | [post] &mut buffer2 [&ref] | provenance | MaD:28 | +| test.rs:453:43:453:54 | [post] &mut buffer2 [&ref] | test.rs:453:48:453:54 | [post] buffer2 | provenance | | +| test.rs:453:48:453:54 | [post] buffer2 | test.rs:455:19:455:25 | buffer2 | provenance | | +| test.rs:453:48:453:54 | [post] buffer2 | test.rs:455:19:455:40 | buffer2[...] | provenance | | +| test.rs:455:19:455:25 | buffer2 | test.rs:455:19:455:40 | buffer2[...] | provenance | MaD:17 | +| test.rs:455:19:455:40 | buffer2[...] | test.rs:455:18:455:40 | &... | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:459:15:459:21 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:463:44:463:50 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:473:41:473:47 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:487:26:487:32 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:494:44:494:50 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:507:68:507:74 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:511:31:511:37 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:517:44:517:50 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:529:26:529:32 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:536:31:536:37 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:543:31:543:37 | reader2 | provenance | | +| test.rs:458:13:458:23 | mut reader2 | test.rs:550:31:550:37 | reader2 | provenance | | +| test.rs:458:27:458:61 | ...::new(...) | test.rs:458:13:458:23 | mut reader2 | provenance | | +| test.rs:458:55:458:60 | reader | test.rs:458:27:458:61 | ...::new(...) | provenance | MaD:31 | +| test.rs:459:15:459:21 | reader2 | test.rs:459:14:459:21 | &reader2 | provenance | | +| test.rs:463:17:463:26 | mut pinned | test.rs:464:19:464:24 | pinned | provenance | | +| test.rs:463:17:463:26 | mut pinned | test.rs:466:26:466:31 | pinned | provenance | | +| test.rs:463:17:463:26 | mut pinned [Pin, &ref] | test.rs:464:19:464:24 | pinned [Pin, &ref] | provenance | | +| test.rs:463:30:463:51 | ...::new(...) | test.rs:463:17:463:26 | mut pinned | provenance | | +| test.rs:463:30:463:51 | ...::new(...) [Pin, &ref] | test.rs:463:17:463:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:463:39:463:50 | &mut reader2 [&ref] | test.rs:463:30:463:51 | ...::new(...) | provenance | MaD:19 | +| test.rs:463:39:463:50 | &mut reader2 [&ref] | test.rs:463:30:463:51 | ...::new(...) [Pin, &ref] | provenance | MaD:20 | +| test.rs:463:44:463:50 | reader2 | test.rs:463:39:463:50 | &mut reader2 [&ref] | provenance | | +| test.rs:464:19:464:24 | pinned | test.rs:464:18:464:24 | &pinned | provenance | | +| test.rs:464:19:464:24 | pinned [Pin, &ref] | test.rs:464:18:464:24 | &pinned | provenance | | +| test.rs:466:17:466:22 | buffer [Ready, Ok] | test.rs:467:20:467:39 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:466:17:466:22 | buffer [Ready, Ok] | test.rs:468:23:468:28 | buffer [Ready, Ok] | provenance | | +| test.rs:466:26:466:31 | pinned | test.rs:466:26:466:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:22 | +| test.rs:466:26:466:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:466:17:466:22 | buffer [Ready, Ok] | provenance | | +| test.rs:467:20:467:39 | ...::Ready(...) [Ready, Ok] | test.rs:467:32:467:38 | Ok(...) [Ok] | provenance | | +| test.rs:467:32:467:38 | Ok(...) [Ok] | test.rs:467:35:467:37 | buf | provenance | | +| test.rs:467:35:467:37 | buf | test.rs:469:22:469:24 | buf | provenance | | +| test.rs:468:23:468:28 | buffer [Ready, Ok] | test.rs:468:22:468:28 | &buffer | provenance | | +| test.rs:473:17:473:23 | buffer2 [Ready, Ok] | test.rs:474:20:474:26 | buffer2 [Ready, Ok] | provenance | | +| test.rs:473:27:473:48 | ...::new(...) | test.rs:473:27:473:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:22 | +| test.rs:473:27:473:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:473:17:473:23 | buffer2 [Ready, Ok] | provenance | | +| test.rs:473:36:473:47 | &mut reader2 [&ref] | test.rs:473:27:473:48 | ...::new(...) | provenance | MaD:19 | +| test.rs:473:41:473:47 | reader2 | test.rs:473:36:473:47 | &mut reader2 [&ref] | provenance | | +| test.rs:474:20:474:26 | buffer2 [Ready, Ok] | test.rs:475:17:475:36 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:474:20:474:26 | buffer2 [Ready, Ok] | test.rs:476:27:476:33 | buffer2 [Ready, Ok] | provenance | | +| test.rs:475:17:475:36 | ...::Ready(...) [Ready, Ok] | test.rs:475:29:475:35 | Ok(...) [Ok] | provenance | | +| test.rs:475:29:475:35 | Ok(...) [Ok] | test.rs:475:32:475:34 | buf | provenance | | +| test.rs:475:32:475:34 | buf | test.rs:477:26:477:28 | buf | provenance | | +| test.rs:476:27:476:33 | buffer2 [Ready, Ok] | test.rs:476:26:476:33 | &buffer2 | provenance | | +| test.rs:487:17:487:22 | buffer | test.rs:488:18:488:23 | buffer | provenance | | +| test.rs:487:26:487:32 | reader2 | test.rs:487:26:487:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:25 | +| test.rs:487:26:487:43 | reader2.fill_buf() [future, Ok] | test.rs:487:26:487:49 | await ... [Ok] | provenance | | +| test.rs:487:26:487:49 | await ... [Ok] | test.rs:487:26:487:50 | TryExpr | provenance | | +| test.rs:487:26:487:50 | TryExpr | test.rs:487:17:487:22 | buffer | provenance | | +| test.rs:494:17:494:26 | mut pinned | test.rs:495:19:495:24 | pinned | provenance | | +| test.rs:494:17:494:26 | mut pinned | test.rs:497:30:497:35 | pinned | provenance | | +| test.rs:494:17:494:26 | mut pinned [Pin, &ref] | test.rs:495:19:495:24 | pinned [Pin, &ref] | provenance | | +| test.rs:494:30:494:51 | ...::new(...) | test.rs:494:17:494:26 | mut pinned | provenance | | +| test.rs:494:30:494:51 | ...::new(...) [Pin, &ref] | test.rs:494:17:494:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:494:39:494:50 | &mut reader2 [&ref] | test.rs:494:30:494:51 | ...::new(...) | provenance | MaD:19 | +| test.rs:494:39:494:50 | &mut reader2 [&ref] | test.rs:494:30:494:51 | ...::new(...) [Pin, &ref] | provenance | MaD:20 | +| test.rs:494:44:494:50 | reader2 | test.rs:494:39:494:50 | &mut reader2 [&ref] | provenance | | +| test.rs:495:19:495:24 | pinned | test.rs:495:18:495:24 | &pinned | provenance | | +| test.rs:495:19:495:24 | pinned [Pin, &ref] | test.rs:495:18:495:24 | &pinned | provenance | | +| test.rs:497:30:497:35 | pinned | test.rs:497:56:497:66 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:497:56:497:66 | [post] &mut buffer [&ref] | test.rs:497:61:497:66 | [post] buffer | provenance | | +| test.rs:497:61:497:66 | [post] buffer | test.rs:498:19:498:24 | buffer | provenance | | +| test.rs:497:61:497:66 | [post] buffer | test.rs:500:23:500:28 | buffer | provenance | | +| test.rs:497:61:497:66 | [post] buffer | test.rs:500:23:500:33 | buffer[...] | provenance | | +| test.rs:498:19:498:24 | buffer | test.rs:498:18:498:24 | &buffer | provenance | | +| test.rs:500:23:500:28 | buffer | test.rs:500:23:500:33 | buffer[...] | provenance | MaD:17 | +| test.rs:500:23:500:33 | buffer[...] | test.rs:500:22:500:33 | &... | provenance | | +| test.rs:507:63:507:74 | &mut reader2 [&ref] | test.rs:507:77:507:88 | [post] &mut buffer1 [&ref] | provenance | MaD:28 | +| test.rs:507:68:507:74 | reader2 | test.rs:507:63:507:74 | &mut reader2 [&ref] | provenance | | +| test.rs:507:77:507:88 | [post] &mut buffer1 [&ref] | test.rs:507:82:507:88 | [post] buffer1 | provenance | | +| test.rs:507:82:507:88 | [post] buffer1 | test.rs:508:19:508:25 | buffer1 | provenance | | +| test.rs:507:82:507:88 | [post] buffer1 | test.rs:508:19:508:40 | buffer1[...] | provenance | | +| test.rs:508:19:508:25 | buffer1 | test.rs:508:19:508:40 | buffer1[...] | provenance | MaD:17 | +| test.rs:508:19:508:40 | buffer1[...] | test.rs:508:18:508:40 | &... | provenance | | +| test.rs:511:31:511:37 | reader2 | test.rs:511:44:511:55 | [post] &mut buffer2 [&ref] | provenance | MaD:28 | +| test.rs:511:44:511:55 | [post] &mut buffer2 [&ref] | test.rs:511:49:511:55 | [post] buffer2 | provenance | | +| test.rs:511:49:511:55 | [post] buffer2 | test.rs:512:19:512:25 | buffer2 | provenance | | +| test.rs:511:49:511:55 | [post] buffer2 | test.rs:512:19:512:40 | buffer2[...] | provenance | | +| test.rs:512:19:512:25 | buffer2 | test.rs:512:19:512:40 | buffer2[...] | provenance | MaD:17 | +| test.rs:512:19:512:40 | buffer2[...] | test.rs:512:18:512:40 | &... | provenance | | +| test.rs:517:17:517:26 | mut pinned | test.rs:518:19:518:24 | pinned | provenance | | +| test.rs:517:17:517:26 | mut pinned | test.rs:520:26:520:31 | pinned | provenance | | +| test.rs:517:17:517:26 | mut pinned [Pin, &ref] | test.rs:518:19:518:24 | pinned [Pin, &ref] | provenance | | +| test.rs:517:30:517:51 | ...::new(...) | test.rs:517:17:517:26 | mut pinned | provenance | | +| test.rs:517:30:517:51 | ...::new(...) [Pin, &ref] | test.rs:517:17:517:26 | mut pinned [Pin, &ref] | provenance | | +| test.rs:517:39:517:50 | &mut reader2 [&ref] | test.rs:517:30:517:51 | ...::new(...) | provenance | MaD:19 | +| test.rs:517:39:517:50 | &mut reader2 [&ref] | test.rs:517:30:517:51 | ...::new(...) [Pin, &ref] | provenance | MaD:20 | +| test.rs:517:44:517:50 | reader2 | test.rs:517:39:517:50 | &mut reader2 [&ref] | provenance | | +| test.rs:518:19:518:24 | pinned | test.rs:518:18:518:24 | &pinned | provenance | | +| test.rs:518:19:518:24 | pinned [Pin, &ref] | test.rs:518:18:518:24 | &pinned | provenance | | +| test.rs:520:17:520:22 | buffer [Ready, Ok] | test.rs:521:19:521:24 | buffer [Ready, Ok] | provenance | | +| test.rs:520:17:520:22 | buffer [Ready, Ok] | test.rs:522:20:522:39 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:520:26:520:31 | pinned | test.rs:520:26:520:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:22 | +| test.rs:520:26:520:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:520:17:520:22 | buffer [Ready, Ok] | provenance | | +| test.rs:521:19:521:24 | buffer [Ready, Ok] | test.rs:521:18:521:24 | &buffer | provenance | | +| test.rs:522:20:522:39 | ...::Ready(...) [Ready, Ok] | test.rs:522:32:522:38 | Ok(...) [Ok] | provenance | | +| test.rs:522:32:522:38 | Ok(...) [Ok] | test.rs:522:35:522:37 | buf | provenance | | +| test.rs:522:35:522:37 | buf | test.rs:523:22:523:24 | buf | provenance | | +| test.rs:529:17:529:22 | buffer | test.rs:530:18:530:23 | buffer | provenance | | +| test.rs:529:26:529:32 | reader2 | test.rs:529:26:529:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:25 | +| test.rs:529:26:529:43 | reader2.fill_buf() [future, Ok] | test.rs:529:26:529:49 | await ... [Ok] | provenance | | +| test.rs:529:26:529:49 | await ... [Ok] | test.rs:529:26:529:50 | TryExpr | provenance | | +| test.rs:529:26:529:50 | TryExpr | test.rs:529:17:529:22 | buffer | provenance | | +| test.rs:536:31:536:37 | reader2 | test.rs:536:57:536:65 | [post] &mut line [&ref] | provenance | MaD:27 | +| test.rs:536:57:536:65 | [post] &mut line [&ref] | test.rs:536:62:536:65 | [post] line | provenance | | +| test.rs:536:62:536:65 | [post] line | test.rs:537:19:537:22 | line | provenance | | +| test.rs:537:19:537:22 | line | test.rs:537:18:537:22 | &line | provenance | | +| test.rs:543:31:543:37 | reader2 | test.rs:543:49:543:57 | [post] &mut line [&ref] | provenance | MaD:26 | +| test.rs:543:49:543:57 | [post] &mut line [&ref] | test.rs:543:54:543:57 | [post] line | provenance | | +| test.rs:543:54:543:57 | [post] line | test.rs:544:19:544:22 | line | provenance | | +| test.rs:544:19:544:22 | line | test.rs:544:18:544:22 | &line | provenance | | +| test.rs:550:31:550:37 | reader2 | test.rs:550:51:550:61 | [post] &mut buffer [&ref] | provenance | MaD:29 | +| test.rs:550:51:550:61 | [post] &mut buffer [&ref] | test.rs:550:56:550:61 | [post] buffer | provenance | | +| test.rs:550:56:550:61 | [post] buffer | test.rs:551:19:551:24 | buffer | provenance | | +| test.rs:551:19:551:24 | buffer | test.rs:551:18:551:24 | &buffer | provenance | | nodes | test.rs:11:9:11:22 | remote_string1 | semmle.label | remote_string1 | | test.rs:11:26:11:62 | ...::get(...) | semmle.label | ...::get(...) | @@ -543,160 +588,202 @@ nodes | test.rs:350:49:350:54 | [post] buffer | semmle.label | [post] buffer | | test.rs:351:14:351:20 | &buffer | semmle.label | &buffer | | test.rs:351:15:351:20 | buffer | semmle.label | buffer | -| test.rs:373:13:373:15 | tcp | semmle.label | tcp | -| test.rs:373:19:373:41 | ...::connect(...) | semmle.label | ...::connect(...) | -| test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | -| test.rs:373:19:373:47 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:373:19:373:48 | TryExpr | semmle.label | TryExpr | -| test.rs:374:14:374:17 | &tcp | semmle.label | &tcp | -| test.rs:374:15:374:17 | tcp | semmle.label | tcp | -| test.rs:380:13:380:22 | mut reader | semmle.label | mut reader | -| test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | semmle.label | connector.connect(...) [future, Ok] | -| test.rs:380:26:380:66 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:380:26:380:67 | TryExpr | semmle.label | TryExpr | -| test.rs:380:57:380:59 | tcp | semmle.label | tcp | -| test.rs:381:14:381:20 | &reader | semmle.label | &reader | -| test.rs:381:15:381:20 | reader | semmle.label | reader | -| test.rs:386:17:386:26 | mut pinned | semmle.label | mut pinned | -| test.rs:386:17:386:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:386:30:386:50 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:386:39:386:49 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | -| test.rs:386:44:386:49 | reader | semmle.label | reader | -| test.rs:387:18:387:24 | &pinned | semmle.label | &pinned | -| test.rs:387:19:387:24 | pinned | semmle.label | pinned | -| test.rs:387:19:387:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:389:30:389:35 | pinned | semmle.label | pinned | -| test.rs:389:56:389:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:389:61:389:66 | [post] buffer | semmle.label | [post] buffer | -| test.rs:391:22:391:28 | &buffer | semmle.label | &buffer | -| test.rs:391:23:391:28 | buffer | semmle.label | buffer | -| test.rs:392:22:392:33 | &... | semmle.label | &... | -| test.rs:392:23:392:28 | buffer | semmle.label | buffer | -| test.rs:392:23:392:33 | buffer[...] | semmle.label | buffer[...] | -| test.rs:399:63:399:73 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | -| test.rs:399:68:399:73 | reader | semmle.label | reader | -| test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | -| test.rs:399:81:399:87 | [post] buffer1 | semmle.label | [post] buffer1 | -| test.rs:400:18:400:40 | &... | semmle.label | &... | -| test.rs:400:19:400:25 | buffer1 | semmle.label | buffer1 | -| test.rs:400:19:400:40 | buffer1[...] | semmle.label | buffer1[...] | -| test.rs:403:31:403:36 | reader | semmle.label | reader | -| test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | -| test.rs:403:48:403:54 | [post] buffer2 | semmle.label | [post] buffer2 | -| test.rs:405:18:405:40 | &... | semmle.label | &... | -| test.rs:405:19:405:25 | buffer2 | semmle.label | buffer2 | -| test.rs:405:19:405:40 | buffer2[...] | semmle.label | buffer2[...] | -| test.rs:408:13:408:23 | mut reader2 | semmle.label | mut reader2 | -| test.rs:408:27:408:61 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:408:55:408:60 | reader | semmle.label | reader | -| test.rs:409:14:409:21 | &reader2 | semmle.label | &reader2 | -| test.rs:409:15:409:21 | reader2 | semmle.label | reader2 | -| test.rs:413:17:413:26 | mut pinned | semmle.label | mut pinned | -| test.rs:413:17:413:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:413:30:413:51 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:413:44:413:50 | reader2 | semmle.label | reader2 | -| test.rs:414:18:414:24 | &pinned | semmle.label | &pinned | -| test.rs:414:19:414:24 | pinned | semmle.label | pinned | -| test.rs:414:19:414:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:416:17:416:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:416:26:416:31 | pinned | semmle.label | pinned | -| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | -| test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test.rs:417:32:417:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test.rs:417:35:417:37 | buf | semmle.label | buf | -| test.rs:418:22:418:28 | &buffer | semmle.label | &buffer | -| test.rs:418:23:418:28 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:419:22:419:24 | buf | semmle.label | buf | -| test.rs:423:17:423:23 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test.rs:423:27:423:48 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:423:41:423:47 | reader2 | semmle.label | reader2 | -| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test.rs:425:29:425:35 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test.rs:425:32:425:34 | buf | semmle.label | buf | -| test.rs:426:26:426:33 | &buffer2 | semmle.label | &buffer2 | -| test.rs:426:27:426:33 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test.rs:427:26:427:28 | buf | semmle.label | buf | -| test.rs:437:17:437:22 | buffer | semmle.label | buffer | -| test.rs:437:26:437:32 | reader2 | semmle.label | reader2 | -| test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | -| test.rs:437:26:437:49 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:437:26:437:50 | TryExpr | semmle.label | TryExpr | -| test.rs:438:18:438:23 | buffer | semmle.label | buffer | -| test.rs:444:17:444:26 | mut pinned | semmle.label | mut pinned | -| test.rs:444:17:444:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:444:30:444:51 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:444:44:444:50 | reader2 | semmle.label | reader2 | -| test.rs:445:18:445:24 | &pinned | semmle.label | &pinned | -| test.rs:445:19:445:24 | pinned | semmle.label | pinned | -| test.rs:445:19:445:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:447:30:447:35 | pinned | semmle.label | pinned | -| test.rs:447:56:447:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:447:61:447:66 | [post] buffer | semmle.label | [post] buffer | -| test.rs:448:18:448:24 | &buffer | semmle.label | &buffer | -| test.rs:448:19:448:24 | buffer | semmle.label | buffer | -| test.rs:450:22:450:33 | &... | semmle.label | &... | -| test.rs:450:23:450:28 | buffer | semmle.label | buffer | -| test.rs:450:23:450:33 | buffer[...] | semmle.label | buffer[...] | -| test.rs:457:63:457:74 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:457:68:457:74 | reader2 | semmle.label | reader2 | -| test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | -| test.rs:457:82:457:88 | [post] buffer1 | semmle.label | [post] buffer1 | -| test.rs:458:18:458:40 | &... | semmle.label | &... | -| test.rs:458:19:458:25 | buffer1 | semmle.label | buffer1 | -| test.rs:458:19:458:40 | buffer1[...] | semmle.label | buffer1[...] | -| test.rs:461:31:461:37 | reader2 | semmle.label | reader2 | -| test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | -| test.rs:461:49:461:55 | [post] buffer2 | semmle.label | [post] buffer2 | -| test.rs:462:18:462:40 | &... | semmle.label | &... | -| test.rs:462:19:462:25 | buffer2 | semmle.label | buffer2 | -| test.rs:462:19:462:40 | buffer2[...] | semmle.label | buffer2[...] | -| test.rs:467:17:467:26 | mut pinned | semmle.label | mut pinned | -| test.rs:467:17:467:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | -| test.rs:467:30:467:51 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test.rs:467:44:467:50 | reader2 | semmle.label | reader2 | -| test.rs:468:18:468:24 | &pinned | semmle.label | &pinned | -| test.rs:468:19:468:24 | pinned | semmle.label | pinned | -| test.rs:468:19:468:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | -| test.rs:470:17:470:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:470:26:470:31 | pinned | semmle.label | pinned | -| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | -| test.rs:471:18:471:24 | &buffer | semmle.label | &buffer | -| test.rs:471:19:471:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test.rs:472:32:472:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test.rs:472:35:472:37 | buf | semmle.label | buf | -| test.rs:473:22:473:24 | buf | semmle.label | buf | -| test.rs:479:17:479:22 | buffer | semmle.label | buffer | -| test.rs:479:26:479:32 | reader2 | semmle.label | reader2 | -| test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | -| test.rs:479:26:479:49 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:479:26:479:50 | TryExpr | semmle.label | TryExpr | -| test.rs:480:18:480:23 | buffer | semmle.label | buffer | -| test.rs:486:31:486:37 | reader2 | semmle.label | reader2 | -| test.rs:486:57:486:65 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | -| test.rs:486:62:486:65 | [post] line | semmle.label | [post] line | -| test.rs:487:18:487:22 | &line | semmle.label | &line | -| test.rs:487:19:487:22 | line | semmle.label | line | -| test.rs:493:31:493:37 | reader2 | semmle.label | reader2 | -| test.rs:493:49:493:57 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | -| test.rs:493:54:493:57 | [post] line | semmle.label | [post] line | -| test.rs:494:18:494:22 | &line | semmle.label | &line | -| test.rs:494:19:494:22 | line | semmle.label | line | -| test.rs:500:31:500:37 | reader2 | semmle.label | reader2 | -| test.rs:500:51:500:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:500:56:500:61 | [post] buffer | semmle.label | [post] buffer | -| test.rs:501:18:501:24 | &buffer | semmle.label | &buffer | -| test.rs:501:19:501:24 | buffer | semmle.label | buffer | +| test.rs:359:9:359:14 | stream | semmle.label | stream | +| test.rs:359:18:359:54 | ...::connect(...) | semmle.label | ...::connect(...) | +| test.rs:359:18:359:54 | ...::connect(...) [Ok] | semmle.label | ...::connect(...) [Ok] | +| test.rs:359:18:359:55 | TryExpr | semmle.label | TryExpr | +| test.rs:361:9:361:18 | mut stream | semmle.label | mut stream | +| test.rs:361:22:361:65 | connector.connect(...) [Ok] | semmle.label | connector.connect(...) [Ok] | +| test.rs:361:22:361:66 | TryExpr | semmle.label | TryExpr | +| test.rs:361:59:361:64 | stream | semmle.label | stream | +| test.rs:362:10:362:16 | &stream | semmle.label | &stream | +| test.rs:362:11:362:16 | stream | semmle.label | stream | +| test.rs:367:22:367:27 | stream | semmle.label | stream | +| test.rs:367:34:367:44 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:367:39:367:44 | [post] buffer | semmle.label | [post] buffer | +| test.rs:370:10:370:30 | &... | semmle.label | &... | +| test.rs:370:11:370:16 | buffer | semmle.label | buffer | +| test.rs:370:11:370:30 | buffer[...] | semmle.label | buffer[...] | +| test.rs:373:5:373:10 | stream | semmle.label | stream | +| test.rs:373:27:373:39 | [post] &mut response [&ref] | semmle.label | [post] &mut response [&ref] | +| test.rs:373:32:373:39 | [post] response | semmle.label | [post] response | +| test.rs:375:10:375:17 | response | semmle.label | response | +| test.rs:384:9:384:15 | stream0 | semmle.label | stream0 | +| test.rs:384:19:384:61 | ...::connect(...) | semmle.label | ...::connect(...) | +| test.rs:384:19:384:61 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | +| test.rs:384:19:384:67 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:384:19:384:68 | TryExpr | semmle.label | TryExpr | +| test.rs:386:9:386:18 | mut stream | semmle.label | mut stream | +| test.rs:386:22:386:74 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | +| test.rs:386:22:386:80 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:386:22:386:81 | TryExpr | semmle.label | TryExpr | +| test.rs:386:67:386:73 | stream0 | semmle.label | stream0 | +| test.rs:387:10:387:16 | &stream | semmle.label | &stream | +| test.rs:387:11:387:16 | stream | semmle.label | stream | +| test.rs:394:22:394:27 | stream | semmle.label | stream | +| test.rs:394:34:394:44 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:394:39:394:44 | [post] buffer | semmle.label | [post] buffer | +| test.rs:397:10:397:30 | &... | semmle.label | &... | +| test.rs:397:11:397:16 | buffer | semmle.label | buffer | +| test.rs:397:11:397:30 | buffer[...] | semmle.label | buffer[...] | +| test.rs:400:5:400:10 | stream | semmle.label | stream | +| test.rs:400:27:400:39 | [post] &mut response [&ref] | semmle.label | [post] &mut response [&ref] | +| test.rs:400:32:400:39 | [post] response | semmle.label | [post] response | +| test.rs:402:10:402:17 | response | semmle.label | response | +| test.rs:423:13:423:15 | tcp | semmle.label | tcp | +| test.rs:423:19:423:41 | ...::connect(...) | semmle.label | ...::connect(...) | +| test.rs:423:19:423:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | +| test.rs:423:19:423:47 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:423:19:423:48 | TryExpr | semmle.label | TryExpr | +| test.rs:424:14:424:17 | &tcp | semmle.label | &tcp | +| test.rs:424:15:424:17 | tcp | semmle.label | tcp | +| test.rs:430:13:430:22 | mut reader | semmle.label | mut reader | +| test.rs:430:26:430:60 | connector.connect(...) [future, Ok] | semmle.label | connector.connect(...) [future, Ok] | +| test.rs:430:26:430:66 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:430:26:430:67 | TryExpr | semmle.label | TryExpr | +| test.rs:430:57:430:59 | tcp | semmle.label | tcp | +| test.rs:431:14:431:20 | &reader | semmle.label | &reader | +| test.rs:431:15:431:20 | reader | semmle.label | reader | +| test.rs:436:17:436:26 | mut pinned | semmle.label | mut pinned | +| test.rs:436:17:436:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:436:30:436:50 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:436:30:436:50 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:436:39:436:49 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | +| test.rs:436:44:436:49 | reader | semmle.label | reader | +| test.rs:437:18:437:24 | &pinned | semmle.label | &pinned | +| test.rs:437:19:437:24 | pinned | semmle.label | pinned | +| test.rs:437:19:437:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:439:30:439:35 | pinned | semmle.label | pinned | +| test.rs:439:56:439:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:439:61:439:66 | [post] buffer | semmle.label | [post] buffer | +| test.rs:441:22:441:28 | &buffer | semmle.label | &buffer | +| test.rs:441:23:441:28 | buffer | semmle.label | buffer | +| test.rs:442:22:442:33 | &... | semmle.label | &... | +| test.rs:442:23:442:28 | buffer | semmle.label | buffer | +| test.rs:442:23:442:33 | buffer[...] | semmle.label | buffer[...] | +| test.rs:449:63:449:73 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | +| test.rs:449:68:449:73 | reader | semmle.label | reader | +| test.rs:449:76:449:87 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | +| test.rs:449:81:449:87 | [post] buffer1 | semmle.label | [post] buffer1 | +| test.rs:450:18:450:40 | &... | semmle.label | &... | +| test.rs:450:19:450:25 | buffer1 | semmle.label | buffer1 | +| test.rs:450:19:450:40 | buffer1[...] | semmle.label | buffer1[...] | +| test.rs:453:31:453:36 | reader | semmle.label | reader | +| test.rs:453:43:453:54 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | +| test.rs:453:48:453:54 | [post] buffer2 | semmle.label | [post] buffer2 | +| test.rs:455:18:455:40 | &... | semmle.label | &... | +| test.rs:455:19:455:25 | buffer2 | semmle.label | buffer2 | +| test.rs:455:19:455:40 | buffer2[...] | semmle.label | buffer2[...] | +| test.rs:458:13:458:23 | mut reader2 | semmle.label | mut reader2 | +| test.rs:458:27:458:61 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:458:55:458:60 | reader | semmle.label | reader | +| test.rs:459:14:459:21 | &reader2 | semmle.label | &reader2 | +| test.rs:459:15:459:21 | reader2 | semmle.label | reader2 | +| test.rs:463:17:463:26 | mut pinned | semmle.label | mut pinned | +| test.rs:463:17:463:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:463:30:463:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:463:30:463:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:463:39:463:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:463:44:463:50 | reader2 | semmle.label | reader2 | +| test.rs:464:18:464:24 | &pinned | semmle.label | &pinned | +| test.rs:464:19:464:24 | pinned | semmle.label | pinned | +| test.rs:464:19:464:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:466:17:466:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:466:26:466:31 | pinned | semmle.label | pinned | +| test.rs:466:26:466:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | +| test.rs:467:20:467:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:467:32:467:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:467:35:467:37 | buf | semmle.label | buf | +| test.rs:468:22:468:28 | &buffer | semmle.label | &buffer | +| test.rs:468:23:468:28 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:469:22:469:24 | buf | semmle.label | buf | +| test.rs:473:17:473:23 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:473:27:473:48 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:473:27:473:71 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] | +| test.rs:473:36:473:47 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:473:41:473:47 | reader2 | semmle.label | reader2 | +| test.rs:474:20:474:26 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:475:17:475:36 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:475:29:475:35 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:475:32:475:34 | buf | semmle.label | buf | +| test.rs:476:26:476:33 | &buffer2 | semmle.label | &buffer2 | +| test.rs:476:27:476:33 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:477:26:477:28 | buf | semmle.label | buf | +| test.rs:487:17:487:22 | buffer | semmle.label | buffer | +| test.rs:487:26:487:32 | reader2 | semmle.label | reader2 | +| test.rs:487:26:487:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | +| test.rs:487:26:487:49 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:487:26:487:50 | TryExpr | semmle.label | TryExpr | +| test.rs:488:18:488:23 | buffer | semmle.label | buffer | +| test.rs:494:17:494:26 | mut pinned | semmle.label | mut pinned | +| test.rs:494:17:494:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:494:30:494:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:494:30:494:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:494:39:494:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:494:44:494:50 | reader2 | semmle.label | reader2 | +| test.rs:495:18:495:24 | &pinned | semmle.label | &pinned | +| test.rs:495:19:495:24 | pinned | semmle.label | pinned | +| test.rs:495:19:495:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:497:30:497:35 | pinned | semmle.label | pinned | +| test.rs:497:56:497:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:497:61:497:66 | [post] buffer | semmle.label | [post] buffer | +| test.rs:498:18:498:24 | &buffer | semmle.label | &buffer | +| test.rs:498:19:498:24 | buffer | semmle.label | buffer | +| test.rs:500:22:500:33 | &... | semmle.label | &... | +| test.rs:500:23:500:28 | buffer | semmle.label | buffer | +| test.rs:500:23:500:33 | buffer[...] | semmle.label | buffer[...] | +| test.rs:507:63:507:74 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:507:68:507:74 | reader2 | semmle.label | reader2 | +| test.rs:507:77:507:88 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | +| test.rs:507:82:507:88 | [post] buffer1 | semmle.label | [post] buffer1 | +| test.rs:508:18:508:40 | &... | semmle.label | &... | +| test.rs:508:19:508:25 | buffer1 | semmle.label | buffer1 | +| test.rs:508:19:508:40 | buffer1[...] | semmle.label | buffer1[...] | +| test.rs:511:31:511:37 | reader2 | semmle.label | reader2 | +| test.rs:511:44:511:55 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | +| test.rs:511:49:511:55 | [post] buffer2 | semmle.label | [post] buffer2 | +| test.rs:512:18:512:40 | &... | semmle.label | &... | +| test.rs:512:19:512:25 | buffer2 | semmle.label | buffer2 | +| test.rs:512:19:512:40 | buffer2[...] | semmle.label | buffer2[...] | +| test.rs:517:17:517:26 | mut pinned | semmle.label | mut pinned | +| test.rs:517:17:517:26 | mut pinned [Pin, &ref] | semmle.label | mut pinned [Pin, &ref] | +| test.rs:517:30:517:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:517:30:517:51 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | +| test.rs:517:39:517:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:517:44:517:50 | reader2 | semmle.label | reader2 | +| test.rs:518:18:518:24 | &pinned | semmle.label | &pinned | +| test.rs:518:19:518:24 | pinned | semmle.label | pinned | +| test.rs:518:19:518:24 | pinned [Pin, &ref] | semmle.label | pinned [Pin, &ref] | +| test.rs:520:17:520:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:520:26:520:31 | pinned | semmle.label | pinned | +| test.rs:520:26:520:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | +| test.rs:521:18:521:24 | &buffer | semmle.label | &buffer | +| test.rs:521:19:521:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:522:20:522:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:522:32:522:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:522:35:522:37 | buf | semmle.label | buf | +| test.rs:523:22:523:24 | buf | semmle.label | buf | +| test.rs:529:17:529:22 | buffer | semmle.label | buffer | +| test.rs:529:26:529:32 | reader2 | semmle.label | reader2 | +| test.rs:529:26:529:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | +| test.rs:529:26:529:49 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:529:26:529:50 | TryExpr | semmle.label | TryExpr | +| test.rs:530:18:530:23 | buffer | semmle.label | buffer | +| test.rs:536:31:536:37 | reader2 | semmle.label | reader2 | +| test.rs:536:57:536:65 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | +| test.rs:536:62:536:65 | [post] line | semmle.label | [post] line | +| test.rs:537:18:537:22 | &line | semmle.label | &line | +| test.rs:537:19:537:22 | line | semmle.label | line | +| test.rs:543:31:543:37 | reader2 | semmle.label | reader2 | +| test.rs:543:49:543:57 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | +| test.rs:543:54:543:57 | [post] line | semmle.label | [post] line | +| test.rs:544:18:544:22 | &line | semmle.label | &line | +| test.rs:544:19:544:22 | line | semmle.label | line | +| test.rs:550:31:550:37 | reader2 | semmle.label | reader2 | +| test.rs:550:51:550:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:550:56:550:61 | [post] buffer | semmle.label | [post] buffer | +| test.rs:551:18:551:24 | &buffer | semmle.label | &buffer | +| test.rs:551:19:551:24 | buffer | semmle.label | buffer | subpaths testFailures #select @@ -728,29 +815,35 @@ testFailures | test.rs:339:14:339:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:339:14:339:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | | test.rs:345:14:345:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:345:14:345:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | | test.rs:351:14:351:20 | &buffer | test.rs:332:22:332:75 | ...::new(...) | test.rs:351:14:351:20 | &buffer | $@ | test.rs:332:22:332:75 | ...::new(...) | ...::new(...) | -| test.rs:374:14:374:17 | &tcp | test.rs:373:19:373:41 | ...::connect(...) | test.rs:374:14:374:17 | &tcp | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:381:14:381:20 | &reader | test.rs:373:19:373:41 | ...::connect(...) | test.rs:381:14:381:20 | &reader | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:387:18:387:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:387:18:387:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:391:22:391:28 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:391:22:391:28 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:392:22:392:33 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:392:22:392:33 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:400:18:400:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:400:18:400:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:405:18:405:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:405:18:405:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:409:14:409:21 | &reader2 | test.rs:373:19:373:41 | ...::connect(...) | test.rs:409:14:409:21 | &reader2 | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:414:18:414:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:414:18:414:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:418:22:418:28 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:418:22:418:28 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:419:22:419:24 | buf | test.rs:373:19:373:41 | ...::connect(...) | test.rs:419:22:419:24 | buf | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:426:26:426:33 | &buffer2 | test.rs:373:19:373:41 | ...::connect(...) | test.rs:426:26:426:33 | &buffer2 | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:427:26:427:28 | buf | test.rs:373:19:373:41 | ...::connect(...) | test.rs:427:26:427:28 | buf | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:438:18:438:23 | buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:438:18:438:23 | buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:445:18:445:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:445:18:445:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:448:18:448:24 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:448:18:448:24 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:450:22:450:33 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:450:22:450:33 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:458:18:458:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:458:18:458:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:462:18:462:40 | &... | test.rs:373:19:373:41 | ...::connect(...) | test.rs:462:18:462:40 | &... | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:468:18:468:24 | &pinned | test.rs:373:19:373:41 | ...::connect(...) | test.rs:468:18:468:24 | &pinned | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:471:18:471:24 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:471:18:471:24 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:473:22:473:24 | buf | test.rs:373:19:373:41 | ...::connect(...) | test.rs:473:22:473:24 | buf | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:480:18:480:23 | buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:480:18:480:23 | buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:487:18:487:22 | &line | test.rs:373:19:373:41 | ...::connect(...) | test.rs:487:18:487:22 | &line | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:494:18:494:22 | &line | test.rs:373:19:373:41 | ...::connect(...) | test.rs:494:18:494:22 | &line | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | -| test.rs:501:18:501:24 | &buffer | test.rs:373:19:373:41 | ...::connect(...) | test.rs:501:18:501:24 | &buffer | $@ | test.rs:373:19:373:41 | ...::connect(...) | ...::connect(...) | +| test.rs:362:10:362:16 | &stream | test.rs:359:18:359:54 | ...::connect(...) | test.rs:362:10:362:16 | &stream | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | +| test.rs:370:10:370:30 | &... | test.rs:359:18:359:54 | ...::connect(...) | test.rs:370:10:370:30 | &... | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | +| test.rs:375:10:375:17 | response | test.rs:359:18:359:54 | ...::connect(...) | test.rs:375:10:375:17 | response | $@ | test.rs:359:18:359:54 | ...::connect(...) | ...::connect(...) | +| test.rs:387:10:387:16 | &stream | test.rs:384:19:384:61 | ...::connect(...) | test.rs:387:10:387:16 | &stream | $@ | test.rs:384:19:384:61 | ...::connect(...) | ...::connect(...) | +| test.rs:397:10:397:30 | &... | test.rs:384:19:384:61 | ...::connect(...) | test.rs:397:10:397:30 | &... | $@ | test.rs:384:19:384:61 | ...::connect(...) | ...::connect(...) | +| test.rs:402:10:402:17 | response | test.rs:384:19:384:61 | ...::connect(...) | test.rs:402:10:402:17 | response | $@ | test.rs:384:19:384:61 | ...::connect(...) | ...::connect(...) | +| test.rs:424:14:424:17 | &tcp | test.rs:423:19:423:41 | ...::connect(...) | test.rs:424:14:424:17 | &tcp | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:431:14:431:20 | &reader | test.rs:423:19:423:41 | ...::connect(...) | test.rs:431:14:431:20 | &reader | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:437:18:437:24 | &pinned | test.rs:423:19:423:41 | ...::connect(...) | test.rs:437:18:437:24 | &pinned | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:441:22:441:28 | &buffer | test.rs:423:19:423:41 | ...::connect(...) | test.rs:441:22:441:28 | &buffer | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:442:22:442:33 | &... | test.rs:423:19:423:41 | ...::connect(...) | test.rs:442:22:442:33 | &... | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:450:18:450:40 | &... | test.rs:423:19:423:41 | ...::connect(...) | test.rs:450:18:450:40 | &... | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:455:18:455:40 | &... | test.rs:423:19:423:41 | ...::connect(...) | test.rs:455:18:455:40 | &... | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:459:14:459:21 | &reader2 | test.rs:423:19:423:41 | ...::connect(...) | test.rs:459:14:459:21 | &reader2 | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:464:18:464:24 | &pinned | test.rs:423:19:423:41 | ...::connect(...) | test.rs:464:18:464:24 | &pinned | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:468:22:468:28 | &buffer | test.rs:423:19:423:41 | ...::connect(...) | test.rs:468:22:468:28 | &buffer | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:469:22:469:24 | buf | test.rs:423:19:423:41 | ...::connect(...) | test.rs:469:22:469:24 | buf | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:476:26:476:33 | &buffer2 | test.rs:423:19:423:41 | ...::connect(...) | test.rs:476:26:476:33 | &buffer2 | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:477:26:477:28 | buf | test.rs:423:19:423:41 | ...::connect(...) | test.rs:477:26:477:28 | buf | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:488:18:488:23 | buffer | test.rs:423:19:423:41 | ...::connect(...) | test.rs:488:18:488:23 | buffer | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:495:18:495:24 | &pinned | test.rs:423:19:423:41 | ...::connect(...) | test.rs:495:18:495:24 | &pinned | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:498:18:498:24 | &buffer | test.rs:423:19:423:41 | ...::connect(...) | test.rs:498:18:498:24 | &buffer | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:500:22:500:33 | &... | test.rs:423:19:423:41 | ...::connect(...) | test.rs:500:22:500:33 | &... | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:508:18:508:40 | &... | test.rs:423:19:423:41 | ...::connect(...) | test.rs:508:18:508:40 | &... | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:512:18:512:40 | &... | test.rs:423:19:423:41 | ...::connect(...) | test.rs:512:18:512:40 | &... | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:518:18:518:24 | &pinned | test.rs:423:19:423:41 | ...::connect(...) | test.rs:518:18:518:24 | &pinned | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:521:18:521:24 | &buffer | test.rs:423:19:423:41 | ...::connect(...) | test.rs:521:18:521:24 | &buffer | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:523:22:523:24 | buf | test.rs:423:19:423:41 | ...::connect(...) | test.rs:523:22:523:24 | buf | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:530:18:530:23 | buffer | test.rs:423:19:423:41 | ...::connect(...) | test.rs:530:18:530:23 | buffer | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:537:18:537:22 | &line | test.rs:423:19:423:41 | ...::connect(...) | test.rs:537:18:537:22 | &line | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:544:18:544:22 | &line | test.rs:423:19:423:41 | ...::connect(...) | test.rs:544:18:544:22 | &line | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | +| test.rs:551:18:551:24 | &buffer | test.rs:423:19:423:41 | ...::connect(...) | test.rs:551:18:551:24 | &buffer | $@ | test.rs:423:19:423:41 | ...::connect(...) | ...::connect(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected index bf0333168e4b..3c0bd8892d76 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected @@ -13,5 +13,7 @@ | test.rs:224:28:224:66 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:306:22:306:58 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:332:22:332:75 | ...::new(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:373:19:373:41 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:519:16:519:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:359:18:359:54 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:384:19:384:61 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:423:19:423:41 | ...::connect(...) | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:569:16:569:31 | ...::args(...) | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/options.yml b/rust/ql/test/library-tests/dataflow/sources/net/options.yml index 24cda1561c0f..00ae29ae611c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/net/options.yml @@ -10,3 +10,5 @@ qltest_dependencies: - rustls = { version = "0.23.27" } - futures-rustls = { version = "0.26.0" } - async-std = { version = "1.13.1" } + - native-tls = { version = "0.2.14" } + - async-native-tls = { version = "0.5.0" } diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index bb6f54cb913d..81fb1982108c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -354,6 +354,56 @@ fn test_rustls() -> std::io::Result<()> { Ok(()) } +fn test_native_tls() -> Result<(), Box> { + let address = "www.example.com:443"; + let stream = std::net::TcpStream::connect(address)?; // $ Alert[rust/summary/taint-sources] + let connector = native_tls::TlsConnector::new()?; + let mut stream = connector.connect("www.example.com", stream)?; + sink(&stream); // $ hasTaintFlow=address + + stream.write_all(b"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n")?; + + let mut buffer = [0u8; 100]; + let bytes_read = stream.read(&mut buffer)?; + println!("bytes_read = {}", bytes_read); + println!("buffer = {:?}", &buffer[..bytes_read]); + sink(&buffer[..bytes_read]); // $ hasTaintFlow=address + + let mut response = String::new(); + stream.read_to_string(&mut response)?; + println!("rest of response = '{}'", response); + sink(response); // $ hasTaintFlow=address + + Ok(()) +} + +async fn test_async_native_tls() -> Result<(), Box> { + use futures::io::{AsyncReadExt, AsyncWriteExt}; + + let address = "www.example.com:443"; + let stream0 = async_std::net::TcpStream::connect(address).await?; // $ Alert[rust/summary/taint-sources] + let connector = async_native_tls::TlsConnector::new(); + let mut stream = async_native_tls::connect("www.example.com", stream0).await?; + sink(&stream); // $ hasTaintFlow=address + + stream + .write_all(b"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n") + .await?; + + let mut buffer = [0u8; 100]; + let bytes_read = stream.read(&mut buffer).await?; + println!("bytes_read = {}", bytes_read); + println!("buffer = {:?}", &buffer[..bytes_read]); + sink(&buffer[..bytes_read]); // $ hasTaintFlow=address + + let mut response = String::new(); + stream.read_to_string(&mut response).await?; + println!("rest of response = '{}'", response); + sink(response); // $ hasTaintFlow=address + + Ok(()) +} + mod futures_rustls { use async_std::net::TcpStream; use async_std::sync::Arc; @@ -548,6 +598,18 @@ async fn main() -> Result<(), Box> { Err(e) => println!("error: {}", e), } + println!("test_native_tls..."); + match test_native_tls() { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + println!("test_async_native_tls..."); + match futures::executor::block_on(test_async_native_tls()) { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + println!("test_rustls..."); match test_rustls() { Ok(_) => println!("complete"), diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected index ee6f7abf3bca..e517200295b2 100644 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected @@ -1,26 +1,26 @@ models | 1 | Source: std::io::stdio::stdin; ReturnValue; stdin | | 2 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | -| 3 | Summary: ::clone; Argument[self].Reference; ReturnValue; value | -| 4 | Summary: ::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 5 | Summary: ::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 6 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 7 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 8 | Summary: ::lines; Argument[self]; ReturnValue; taint | -| 9 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 10 | Summary: ::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 11 | Summary: ::split; Argument[self]; ReturnValue; taint | -| 12 | Summary: ::bytes; Argument[self]; ReturnValue; taint | -| 13 | Summary: ::next; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | -| 14 | Summary: ::fill_buf; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 15 | Summary: ::buffer; Argument[self].Reference; ReturnValue.Reference; taint | -| 16 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 17 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | -| 18 | Summary: ::read_exact; Argument[self].Reference; Argument[0].Reference; taint | -| 19 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 20 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 3 | Summary: ::lines; Argument[self]; ReturnValue; taint | +| 4 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 5 | Summary: ::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 6 | Summary: ::split; Argument[self]; ReturnValue; taint | +| 7 | Summary: ::fill_buf; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 8 | Summary: ::buffer; Argument[self].Reference; ReturnValue.Reference; taint | +| 9 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 10 | Summary: ::bytes; Argument[self]; ReturnValue; taint | +| 11 | Summary: ::next; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | +| 12 | Summary: ::clone; Argument[self].Reference; ReturnValue; value | +| 13 | Summary: ::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 14 | Summary: ::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 15 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 16 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 17 | Summary: ::read; Argument[self].Reference; Argument[0].Reference; taint | +| 18 | Summary: ::read_exact; Argument[self].Reference; Argument[0].Reference; taint | +| 19 | Summary: ::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 20 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | | 21 | Summary: ::lock; Argument[self].Reference; ReturnValue; taint | -| 22 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 22 | Summary: ::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | | 23 | Summary: ::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 24 | Summary: ::lines; Argument[self]; ReturnValue; taint | | 25 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | @@ -67,74 +67,74 @@ edges | test.rs:37:42:37:47 | [post] buffer | test.rs:38:15:38:20 | buffer | provenance | | | test.rs:38:15:38:20 | buffer | test.rs:38:14:38:20 | &buffer | provenance | | | test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:32 | ...::stdin(...) | provenance | Src:MaD:1 | -| test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:12 | +| test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:10 | | test.rs:41:17:41:40 | ... .bytes() | test.rs:42:14:42:17 | byte | provenance | | | test.rs:48:13:48:22 | mut reader | test.rs:49:20:49:25 | reader | provenance | | | test.rs:48:26:48:66 | ...::new(...) | test.rs:48:13:48:22 | mut reader | provenance | | -| test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:26:48:66 | ...::new(...) | provenance | MaD:16 | +| test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:26:48:66 | ...::new(...) | provenance | MaD:9 | | test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:50:48:65 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:49:13:49:16 | data | test.rs:50:15:50:18 | data | provenance | | -| test.rs:49:20:49:25 | reader | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | provenance | MaD:14 | +| test.rs:49:20:49:25 | reader | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | provenance | MaD:7 | | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | test.rs:49:20:49:37 | TryExpr | provenance | | | test.rs:49:20:49:37 | TryExpr | test.rs:49:13:49:16 | data | provenance | | | test.rs:50:15:50:18 | data | test.rs:50:14:50:18 | &data | provenance | | | test.rs:54:13:54:18 | reader | test.rs:55:20:55:25 | reader | provenance | | | test.rs:54:22:54:62 | ...::new(...) | test.rs:54:13:54:18 | reader | provenance | | -| test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:22:54:62 | ...::new(...) | provenance | MaD:16 | +| test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:22:54:62 | ...::new(...) | provenance | MaD:9 | | test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:46:54:61 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:55:13:55:16 | data [&ref] | test.rs:56:15:56:18 | data [&ref] | provenance | | -| test.rs:55:20:55:25 | reader | test.rs:55:20:55:34 | reader.buffer() [&ref] | provenance | MaD:15 | +| test.rs:55:20:55:25 | reader | test.rs:55:20:55:34 | reader.buffer() [&ref] | provenance | MaD:8 | | test.rs:55:20:55:34 | reader.buffer() [&ref] | test.rs:55:13:55:16 | data [&ref] | provenance | | | test.rs:56:15:56:18 | data [&ref] | test.rs:56:14:56:18 | &data | provenance | | | test.rs:61:13:61:22 | mut reader | test.rs:62:9:62:14 | reader | provenance | | | test.rs:61:26:61:66 | ...::new(...) | test.rs:61:13:61:22 | mut reader | provenance | | -| test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:26:61:66 | ...::new(...) | provenance | MaD:16 | +| test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:26:61:66 | ...::new(...) | provenance | MaD:9 | | test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:50:61:65 | ...::stdin(...) | provenance | Src:MaD:1 | -| test.rs:62:9:62:14 | reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:9 | +| test.rs:62:9:62:14 | reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:4 | | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | test.rs:62:31:62:36 | [post] buffer | provenance | | | test.rs:62:31:62:36 | [post] buffer | test.rs:63:15:63:20 | buffer | provenance | | | test.rs:63:15:63:20 | buffer | test.rs:63:14:63:20 | &buffer | provenance | | | test.rs:68:13:68:22 | mut reader | test.rs:69:9:69:14 | reader | provenance | | | test.rs:68:26:68:66 | ...::new(...) | test.rs:68:13:68:22 | mut reader | provenance | | -| test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:26:68:66 | ...::new(...) | provenance | MaD:16 | +| test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:26:68:66 | ...::new(...) | provenance | MaD:9 | | test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:50:68:65 | ...::stdin(...) | provenance | Src:MaD:1 | -| test.rs:69:9:69:14 | reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:10 | +| test.rs:69:9:69:14 | reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:5 | | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | test.rs:69:38:69:43 | [post] buffer | provenance | | | test.rs:69:38:69:43 | [post] buffer | test.rs:70:15:70:20 | buffer | provenance | | | test.rs:69:38:69:43 | [post] buffer | test.rs:71:14:71:19 | buffer | provenance | | | test.rs:70:15:70:20 | buffer | test.rs:70:14:70:20 | &buffer | provenance | | -| test.rs:71:14:71:19 | buffer | test.rs:71:14:71:22 | buffer[0] | provenance | MaD:5 | +| test.rs:71:14:71:19 | buffer | test.rs:71:14:71:22 | buffer[0] | provenance | MaD:14 | | test.rs:75:13:75:28 | mut reader_split | test.rs:76:14:76:25 | reader_split | provenance | | | test.rs:75:13:75:28 | mut reader_split | test.rs:77:33:77:44 | reader_split | provenance | | -| test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:11 | +| test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:6 | | test.rs:75:32:75:84 | ... .split(...) | test.rs:75:13:75:28 | mut reader_split | provenance | | -| test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:16 | +| test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:9 | | test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:56:75:71 | ...::stdin(...) | provenance | Src:MaD:1 | -| test.rs:76:14:76:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:13 | -| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:6 | -| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:7 | +| test.rs:76:14:76:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:11 | +| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:15 | +| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:16 | | test.rs:77:19:77:29 | Some(...) [Some, Ok] | test.rs:77:24:77:28 | chunk [Ok] | provenance | | | test.rs:77:24:77:28 | chunk [Ok] | test.rs:78:18:78:22 | chunk [Ok] | provenance | | -| test.rs:77:33:77:44 | reader_split | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | provenance | MaD:13 | +| test.rs:77:33:77:44 | reader_split | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | provenance | MaD:11 | | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | test.rs:77:19:77:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:78:18:78:22 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:7 | +| test.rs:78:18:78:22 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:16 | | test.rs:83:13:83:18 | reader | test.rs:84:21:84:26 | reader | provenance | | | test.rs:83:22:83:62 | ...::new(...) | test.rs:83:13:83:18 | reader | provenance | | -| test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:22:83:62 | ...::new(...) | provenance | MaD:16 | +| test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:22:83:62 | ...::new(...) | provenance | MaD:9 | | test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:46:83:61 | ...::stdin(...) | provenance | Src:MaD:1 | -| test.rs:84:21:84:26 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:8 | +| test.rs:84:21:84:26 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:3 | | test.rs:84:21:84:34 | reader.lines() | test.rs:85:18:85:21 | line | provenance | | | test.rs:90:13:90:18 | reader | test.rs:91:20:91:25 | reader | provenance | | | test.rs:90:22:90:62 | ...::new(...) | test.rs:90:13:90:18 | reader | provenance | | -| test.rs:90:46:90:61 | ...::stdin(...) | test.rs:90:22:90:62 | ...::new(...) | provenance | MaD:16 | +| test.rs:90:46:90:61 | ...::stdin(...) | test.rs:90:22:90:62 | ...::new(...) | provenance | MaD:9 | | test.rs:90:46:90:61 | ...::stdin(...) | test.rs:90:46:90:61 | ...::stdin(...) | provenance | Src:MaD:1 | | test.rs:91:13:91:16 | line | test.rs:92:14:92:17 | line | provenance | | -| test.rs:91:20:91:25 | reader | test.rs:91:20:91:33 | reader.lines() | provenance | MaD:8 | -| test.rs:91:20:91:33 | reader.lines() | test.rs:91:20:91:40 | ... .nth(...) [Some] | provenance | MaD:4 | -| test.rs:91:20:91:40 | ... .nth(...) [Some] | test.rs:91:20:91:49 | ... .unwrap() | provenance | MaD:6 | +| test.rs:91:20:91:25 | reader | test.rs:91:20:91:33 | reader.lines() | provenance | MaD:3 | +| test.rs:91:20:91:33 | reader.lines() | test.rs:91:20:91:40 | ... .nth(...) [Some] | provenance | MaD:13 | +| test.rs:91:20:91:40 | ... .nth(...) [Some] | test.rs:91:20:91:49 | ... .unwrap() | provenance | MaD:15 | | test.rs:91:20:91:49 | ... .unwrap() | test.rs:91:13:91:16 | line | provenance | | -| test.rs:92:14:92:17 | line | test.rs:92:14:92:26 | line.unwrap() | provenance | MaD:7 | -| test.rs:92:14:92:26 | line.unwrap() | test.rs:92:14:92:34 | ... .clone() | provenance | MaD:3 | +| test.rs:92:14:92:17 | line | test.rs:92:14:92:26 | line.unwrap() | provenance | MaD:16 | +| test.rs:92:14:92:26 | line.unwrap() | test.rs:92:14:92:34 | ... .clone() | provenance | MaD:12 | | test.rs:109:13:109:21 | mut stdin | test.rs:111:22:111:26 | stdin | provenance | | | test.rs:109:25:109:42 | ...::stdin(...) | test.rs:109:13:109:21 | mut stdin | provenance | Src:MaD:2 | | test.rs:111:22:111:26 | stdin | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | provenance | MaD:28 | @@ -225,7 +225,7 @@ edges | test.rs:179:38:179:43 | [post] buffer | test.rs:180:15:180:20 | buffer | provenance | | | test.rs:179:38:179:43 | [post] buffer | test.rs:181:14:181:19 | buffer | provenance | | | test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | | -| test.rs:181:14:181:19 | buffer | test.rs:181:14:181:22 | buffer[0] | provenance | MaD:5 | +| test.rs:181:14:181:19 | buffer | test.rs:181:14:181:22 | buffer[0] | provenance | MaD:14 | | test.rs:185:13:185:28 | mut reader_split | test.rs:186:14:186:25 | reader_split | provenance | | | test.rs:185:13:185:28 | mut reader_split | test.rs:187:33:187:44 | reader_split | provenance | | | test.rs:185:32:185:76 | ...::new(...) | test.rs:185:32:185:88 | ... .split(...) | provenance | MaD:27 | @@ -235,7 +235,7 @@ edges | test.rs:186:14:186:25 | reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:40 | | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:186:14:186:46 | await ... [Ok, Some] | provenance | | | test.rs:186:14:186:46 | await ... [Ok, Some] | test.rs:186:14:186:47 | TryExpr [Some] | provenance | | -| test.rs:186:14:186:47 | TryExpr [Some] | test.rs:186:14:186:56 | ... .unwrap() | provenance | MaD:6 | +| test.rs:186:14:186:47 | TryExpr [Some] | test.rs:186:14:186:56 | ... .unwrap() | provenance | MaD:15 | | test.rs:187:19:187:29 | Some(...) [Some] | test.rs:187:24:187:28 | chunk | provenance | | | test.rs:187:24:187:28 | chunk | test.rs:188:18:188:22 | chunk | provenance | | | test.rs:187:33:187:44 | reader_split | test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:40 | @@ -253,7 +253,7 @@ edges | test.rs:195:14:195:18 | lines | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:39 | | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | test.rs:195:14:195:36 | await ... [Ok, Some] | provenance | | | test.rs:195:14:195:36 | await ... [Ok, Some] | test.rs:195:14:195:37 | TryExpr [Some] | provenance | | -| test.rs:195:14:195:37 | TryExpr [Some] | test.rs:195:14:195:46 | ... .unwrap() | provenance | MaD:6 | +| test.rs:195:14:195:37 | TryExpr [Some] | test.rs:195:14:195:46 | ... .unwrap() | provenance | MaD:15 | | test.rs:196:19:196:28 | Some(...) [Some] | test.rs:196:24:196:27 | line | provenance | | | test.rs:196:24:196:27 | line | test.rs:197:18:197:21 | line | provenance | | | test.rs:196:32:196:36 | lines | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:39 | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/TypeInferenceConsistency.expected deleted file mode 100644 index f1bdb2cddbd6..000000000000 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/TypeInferenceConsistency.expected +++ /dev/null @@ -1,4 +0,0 @@ -nonUniqueCertainType -| test.rs:131:30:131:39 | ...::get(...) | | -| test.rs:132:34:132:43 | ...::get(...) | | -| test.rs:133:30:133:39 | ...::get(...) | | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected index 965e0c004f88..a32c200ed7fd 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected @@ -39,40 +39,42 @@ edges | test.rs:107:22:107:25 | path | test.rs:107:22:107:38 | path.into_inner() | provenance | MaD:11 | | test.rs:107:22:107:38 | path.into_inner() | test.rs:107:13:107:18 | TuplePat | provenance | | | test.rs:115:33:115:65 | ...: ...::Query::<...> | test.rs:116:14:116:14 | a | provenance | | -| test.rs:122:14:122:31 | my_actix_handler_4 | test.rs:122:33:122:55 | ...: ...::Path::<...> | provenance | Src:MaD:1 | -| test.rs:122:33:122:55 | ...: ...::Path::<...> | test.rs:123:17:123:20 | path | provenance | | -| test.rs:123:13:123:13 | a | test.rs:124:14:124:14 | a | provenance | | -| test.rs:123:17:123:20 | path | test.rs:123:17:123:33 | path.into_inner() | provenance | MaD:11 | -| test.rs:123:17:123:33 | path.into_inner() | test.rs:123:13:123:13 | a | provenance | | -| test.rs:131:44:131:61 | my_actix_handler_1 | test.rs:97:33:97:55 | ...: ...::Path::<...> | provenance | Src:MaD:2 | -| test.rs:132:48:132:65 | my_actix_handler_2 | test.rs:106:33:106:65 | ...: ...::Path::<...> | provenance | Src:MaD:2 | -| test.rs:133:44:133:61 | my_actix_handler_3 | test.rs:115:33:115:65 | ...: ...::Query::<...> | provenance | Src:MaD:2 | -| test.rs:147:32:147:52 | ...: Path::<...> | test.rs:148:14:148:14 | a | provenance | | -| test.rs:147:32:147:52 | ...: Path::<...> | test.rs:149:14:149:14 | a | provenance | | -| test.rs:147:32:147:52 | ...: Path::<...> | test.rs:150:14:150:14 | a | provenance | | -| test.rs:148:14:148:14 | a | test.rs:148:14:148:23 | a.as_str() | provenance | MaD:13 | -| test.rs:149:14:149:14 | a | test.rs:149:14:149:25 | a.as_bytes() | provenance | MaD:12 | -| test.rs:155:32:155:67 | ...: Path::<...> | test.rs:156:14:156:14 | a | provenance | | -| test.rs:155:32:155:67 | ...: Path::<...> | test.rs:157:14:157:14 | b | provenance | | -| test.rs:162:32:162:76 | ...: Query::<...> | test.rs:164:18:164:20 | key | provenance | | -| test.rs:162:32:162:76 | ...: Query::<...> | test.rs:165:18:165:22 | value | provenance | | -| test.rs:179:32:179:69 | ...: Json::<...> | test.rs:181:14:181:20 | payload | provenance | | -| test.rs:186:32:186:43 | ...: String | test.rs:187:14:187:17 | body | provenance | | -| test.rs:192:32:192:43 | ...: String | test.rs:193:14:193:17 | body | provenance | | -| test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:147:32:147:52 | ...: Path::<...> | provenance | Src:MaD:8 | -| test.rs:201:39:201:55 | my_axum_handler_2 | test.rs:155:32:155:67 | ...: Path::<...> | provenance | Src:MaD:9 | -| test.rs:202:33:202:49 | my_axum_handler_3 | test.rs:162:32:162:76 | ...: Query::<...> | provenance | Src:MaD:10 | -| test.rs:205:65:205:81 | my_axum_handler_5 | test.rs:179:32:179:69 | ...: Json::<...> | provenance | Src:MaD:4 | -| test.rs:207:33:207:49 | my_axum_handler_6 | test.rs:186:32:186:43 | ...: String | provenance | Src:MaD:8 | -| test.rs:207:56:207:72 | my_axum_handler_7 | test.rs:192:32:192:43 | ...: String | provenance | Src:MaD:3 | -| test.rs:222:37:227:9 | \|...\| ... | test.rs:222:38:222:46 | ...: String | provenance | Src:MaD:6 | -| test.rs:222:38:222:46 | ...: String | test.rs:224:18:224:18 | a | provenance | | -| test.rs:231:13:235:13 | \|...\| ... | test.rs:231:25:231:33 | ...: String | provenance | Src:MaD:7 | -| test.rs:231:25:231:33 | ...: String | test.rs:232:22:232:22 | a | provenance | | -| test.rs:240:13:248:9 | \|...\| ... | test.rs:240:26:240:32 | ...: u64 | provenance | Src:MaD:5 | -| test.rs:240:26:240:32 | ...: u64 | test.rs:243:22:243:23 | id | provenance | | -| test.rs:253:13:258:14 | \|...\| ... | test.rs:253:15:253:23 | ...: String | provenance | Src:MaD:6 | -| test.rs:253:15:253:23 | ...: String | test.rs:255:22:255:22 | a | provenance | | +| test.rs:123:14:123:31 | my_actix_handler_4 | test.rs:123:33:123:55 | ...: ...::Path::<...> | provenance | Src:MaD:1 | +| test.rs:123:33:123:55 | ...: ...::Path::<...> | test.rs:124:17:124:20 | path | provenance | | +| test.rs:124:13:124:13 | a | test.rs:125:14:125:14 | a | provenance | | +| test.rs:124:17:124:20 | path | test.rs:124:17:124:33 | path.into_inner() | provenance | MaD:11 | +| test.rs:124:17:124:33 | path.into_inner() | test.rs:124:13:124:13 | a | provenance | | +| test.rs:132:44:132:61 | my_actix_handler_1 | test.rs:97:33:97:55 | ...: ...::Path::<...> | provenance | Src:MaD:2 | +| test.rs:133:48:133:65 | my_actix_handler_2 | test.rs:106:33:106:65 | ...: ...::Path::<...> | provenance | Src:MaD:2 | +| test.rs:134:44:134:61 | my_actix_handler_3 | test.rs:115:33:115:65 | ...: ...::Query::<...> | provenance | Src:MaD:2 | +| test.rs:148:32:148:52 | ...: Path::<...> | test.rs:149:14:149:14 | a | provenance | | +| test.rs:148:32:148:52 | ...: Path::<...> | test.rs:150:14:150:14 | a | provenance | | +| test.rs:148:32:148:52 | ...: Path::<...> | test.rs:151:14:151:14 | a | provenance | | +| test.rs:149:14:149:14 | a | test.rs:149:14:149:23 | a.as_str() | provenance | MaD:13 | +| test.rs:150:14:150:14 | a | test.rs:150:14:150:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:156:32:156:67 | ...: Path::<...> | test.rs:157:14:157:14 | a | provenance | | +| test.rs:156:32:156:67 | ...: Path::<...> | test.rs:158:14:158:14 | b | provenance | | +| test.rs:163:32:163:76 | ...: Query::<...> | test.rs:165:18:165:20 | key | provenance | | +| test.rs:163:32:163:76 | ...: Query::<...> | test.rs:166:18:166:22 | value | provenance | | +| test.rs:180:32:180:69 | ...: Json::<...> | test.rs:182:14:182:20 | payload | provenance | | +| test.rs:187:32:187:43 | ...: String | test.rs:188:14:188:17 | body | provenance | | +| test.rs:193:32:193:43 | ...: String | test.rs:194:14:194:17 | body | provenance | | +| test.rs:199:50:199:61 | ...: String | test.rs:201:14:201:17 | body | provenance | | +| test.rs:208:34:208:50 | my_axum_handler_1 | test.rs:148:32:148:52 | ...: Path::<...> | provenance | Src:MaD:8 | +| test.rs:209:39:209:55 | my_axum_handler_2 | test.rs:156:32:156:67 | ...: Path::<...> | provenance | Src:MaD:9 | +| test.rs:210:33:210:49 | my_axum_handler_3 | test.rs:163:32:163:76 | ...: Query::<...> | provenance | Src:MaD:10 | +| test.rs:213:65:213:81 | my_axum_handler_5 | test.rs:180:32:180:69 | ...: Json::<...> | provenance | Src:MaD:4 | +| test.rs:215:33:215:49 | my_axum_handler_6 | test.rs:187:32:187:43 | ...: String | provenance | Src:MaD:8 | +| test.rs:215:56:215:72 | my_axum_handler_7 | test.rs:193:32:193:43 | ...: String | provenance | Src:MaD:3 | +| test.rs:216:33:216:49 | my_axum_handler_8 | test.rs:199:50:199:61 | ...: String | provenance | Src:MaD:8 | +| test.rs:231:37:236:9 | \|...\| ... | test.rs:231:38:231:46 | ...: String | provenance | Src:MaD:6 | +| test.rs:231:38:231:46 | ...: String | test.rs:233:18:233:18 | a | provenance | | +| test.rs:240:13:244:13 | \|...\| ... | test.rs:240:25:240:33 | ...: String | provenance | Src:MaD:7 | +| test.rs:240:25:240:33 | ...: String | test.rs:241:22:241:22 | a | provenance | | +| test.rs:249:13:257:9 | \|...\| ... | test.rs:249:26:249:32 | ...: u64 | provenance | Src:MaD:5 | +| test.rs:249:26:249:32 | ...: u64 | test.rs:252:22:252:23 | id | provenance | | +| test.rs:262:13:267:14 | \|...\| ... | test.rs:262:15:262:23 | ...: String | provenance | Src:MaD:6 | +| test.rs:262:15:262:23 | ...: String | test.rs:264:22:264:22 | a | provenance | | nodes | test.rs:11:31:11:31 | a | semmle.label | a | | test.rs:13:14:13:14 | a | semmle.label | a | @@ -108,51 +110,54 @@ nodes | test.rs:110:14:110:14 | b | semmle.label | b | | test.rs:115:33:115:65 | ...: ...::Query::<...> | semmle.label | ...: ...::Query::<...> | | test.rs:116:14:116:14 | a | semmle.label | a | -| test.rs:122:14:122:31 | my_actix_handler_4 | semmle.label | my_actix_handler_4 | -| test.rs:122:33:122:55 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | -| test.rs:123:13:123:13 | a | semmle.label | a | -| test.rs:123:17:123:20 | path | semmle.label | path | -| test.rs:123:17:123:33 | path.into_inner() | semmle.label | path.into_inner() | -| test.rs:124:14:124:14 | a | semmle.label | a | -| test.rs:131:44:131:61 | my_actix_handler_1 | semmle.label | my_actix_handler_1 | -| test.rs:132:48:132:65 | my_actix_handler_2 | semmle.label | my_actix_handler_2 | -| test.rs:133:44:133:61 | my_actix_handler_3 | semmle.label | my_actix_handler_3 | -| test.rs:147:32:147:52 | ...: Path::<...> | semmle.label | ...: Path::<...> | -| test.rs:148:14:148:14 | a | semmle.label | a | -| test.rs:148:14:148:23 | a.as_str() | semmle.label | a.as_str() | +| test.rs:123:14:123:31 | my_actix_handler_4 | semmle.label | my_actix_handler_4 | +| test.rs:123:33:123:55 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| test.rs:124:13:124:13 | a | semmle.label | a | +| test.rs:124:17:124:20 | path | semmle.label | path | +| test.rs:124:17:124:33 | path.into_inner() | semmle.label | path.into_inner() | +| test.rs:125:14:125:14 | a | semmle.label | a | +| test.rs:132:44:132:61 | my_actix_handler_1 | semmle.label | my_actix_handler_1 | +| test.rs:133:48:133:65 | my_actix_handler_2 | semmle.label | my_actix_handler_2 | +| test.rs:134:44:134:61 | my_actix_handler_3 | semmle.label | my_actix_handler_3 | +| test.rs:148:32:148:52 | ...: Path::<...> | semmle.label | ...: Path::<...> | | test.rs:149:14:149:14 | a | semmle.label | a | -| test.rs:149:14:149:25 | a.as_bytes() | semmle.label | a.as_bytes() | +| test.rs:149:14:149:23 | a.as_str() | semmle.label | a.as_str() | | test.rs:150:14:150:14 | a | semmle.label | a | -| test.rs:155:32:155:67 | ...: Path::<...> | semmle.label | ...: Path::<...> | -| test.rs:156:14:156:14 | a | semmle.label | a | -| test.rs:157:14:157:14 | b | semmle.label | b | -| test.rs:162:32:162:76 | ...: Query::<...> | semmle.label | ...: Query::<...> | -| test.rs:164:18:164:20 | key | semmle.label | key | -| test.rs:165:18:165:22 | value | semmle.label | value | -| test.rs:179:32:179:69 | ...: Json::<...> | semmle.label | ...: Json::<...> | -| test.rs:181:14:181:20 | payload | semmle.label | payload | -| test.rs:186:32:186:43 | ...: String | semmle.label | ...: String | -| test.rs:187:14:187:17 | body | semmle.label | body | -| test.rs:192:32:192:43 | ...: String | semmle.label | ...: String | -| test.rs:193:14:193:17 | body | semmle.label | body | -| test.rs:200:34:200:50 | my_axum_handler_1 | semmle.label | my_axum_handler_1 | -| test.rs:201:39:201:55 | my_axum_handler_2 | semmle.label | my_axum_handler_2 | -| test.rs:202:33:202:49 | my_axum_handler_3 | semmle.label | my_axum_handler_3 | -| test.rs:205:65:205:81 | my_axum_handler_5 | semmle.label | my_axum_handler_5 | -| test.rs:207:33:207:49 | my_axum_handler_6 | semmle.label | my_axum_handler_6 | -| test.rs:207:56:207:72 | my_axum_handler_7 | semmle.label | my_axum_handler_7 | -| test.rs:222:37:227:9 | \|...\| ... | semmle.label | \|...\| ... | -| test.rs:222:38:222:46 | ...: String | semmle.label | ...: String | -| test.rs:224:18:224:18 | a | semmle.label | a | -| test.rs:231:13:235:13 | \|...\| ... | semmle.label | \|...\| ... | -| test.rs:231:25:231:33 | ...: String | semmle.label | ...: String | -| test.rs:232:22:232:22 | a | semmle.label | a | -| test.rs:240:13:248:9 | \|...\| ... | semmle.label | \|...\| ... | -| test.rs:240:26:240:32 | ...: u64 | semmle.label | ...: u64 | -| test.rs:243:22:243:23 | id | semmle.label | id | -| test.rs:253:13:258:14 | \|...\| ... | semmle.label | \|...\| ... | -| test.rs:253:15:253:23 | ...: String | semmle.label | ...: String | -| test.rs:255:22:255:22 | a | semmle.label | a | +| test.rs:150:14:150:25 | a.as_bytes() | semmle.label | a.as_bytes() | +| test.rs:151:14:151:14 | a | semmle.label | a | +| test.rs:156:32:156:67 | ...: Path::<...> | semmle.label | ...: Path::<...> | +| test.rs:157:14:157:14 | a | semmle.label | a | +| test.rs:158:14:158:14 | b | semmle.label | b | +| test.rs:163:32:163:76 | ...: Query::<...> | semmle.label | ...: Query::<...> | +| test.rs:165:18:165:20 | key | semmle.label | key | +| test.rs:166:18:166:22 | value | semmle.label | value | +| test.rs:180:32:180:69 | ...: Json::<...> | semmle.label | ...: Json::<...> | +| test.rs:182:14:182:20 | payload | semmle.label | payload | +| test.rs:187:32:187:43 | ...: String | semmle.label | ...: String | +| test.rs:188:14:188:17 | body | semmle.label | body | +| test.rs:193:32:193:43 | ...: String | semmle.label | ...: String | +| test.rs:194:14:194:17 | body | semmle.label | body | +| test.rs:199:50:199:61 | ...: String | semmle.label | ...: String | +| test.rs:201:14:201:17 | body | semmle.label | body | +| test.rs:208:34:208:50 | my_axum_handler_1 | semmle.label | my_axum_handler_1 | +| test.rs:209:39:209:55 | my_axum_handler_2 | semmle.label | my_axum_handler_2 | +| test.rs:210:33:210:49 | my_axum_handler_3 | semmle.label | my_axum_handler_3 | +| test.rs:213:65:213:81 | my_axum_handler_5 | semmle.label | my_axum_handler_5 | +| test.rs:215:33:215:49 | my_axum_handler_6 | semmle.label | my_axum_handler_6 | +| test.rs:215:56:215:72 | my_axum_handler_7 | semmle.label | my_axum_handler_7 | +| test.rs:216:33:216:49 | my_axum_handler_8 | semmle.label | my_axum_handler_8 | +| test.rs:231:37:236:9 | \|...\| ... | semmle.label | \|...\| ... | +| test.rs:231:38:231:46 | ...: String | semmle.label | ...: String | +| test.rs:233:18:233:18 | a | semmle.label | a | +| test.rs:240:13:244:13 | \|...\| ... | semmle.label | \|...\| ... | +| test.rs:240:25:240:33 | ...: String | semmle.label | ...: String | +| test.rs:241:22:241:22 | a | semmle.label | a | +| test.rs:249:13:257:9 | \|...\| ... | semmle.label | \|...\| ... | +| test.rs:249:26:249:32 | ...: u64 | semmle.label | ...: u64 | +| test.rs:252:22:252:23 | id | semmle.label | id | +| test.rs:262:13:267:14 | \|...\| ... | semmle.label | \|...\| ... | +| test.rs:262:15:262:23 | ...: String | semmle.label | ...: String | +| test.rs:264:22:264:22 | a | semmle.label | a | subpaths testFailures #select @@ -166,24 +171,25 @@ testFailures | test.rs:60:14:60:17 | ms.a | test.rs:58:14:58:15 | ms | test.rs:60:14:60:17 | ms.a | $@ | test.rs:58:14:58:15 | ms | ms | | test.rs:61:14:61:17 | ms.b | test.rs:58:14:58:15 | ms | test.rs:61:14:61:17 | ms.b | $@ | test.rs:58:14:58:15 | ms | ms | | test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | -| test.rs:99:14:99:23 | a.as_str() | test.rs:131:44:131:61 | my_actix_handler_1 | test.rs:99:14:99:23 | a.as_str() | $@ | test.rs:131:44:131:61 | my_actix_handler_1 | my_actix_handler_1 | -| test.rs:100:14:100:25 | a.as_bytes() | test.rs:131:44:131:61 | my_actix_handler_1 | test.rs:100:14:100:25 | a.as_bytes() | $@ | test.rs:131:44:131:61 | my_actix_handler_1 | my_actix_handler_1 | -| test.rs:101:14:101:14 | a | test.rs:131:44:131:61 | my_actix_handler_1 | test.rs:101:14:101:14 | a | $@ | test.rs:131:44:131:61 | my_actix_handler_1 | my_actix_handler_1 | -| test.rs:109:14:109:14 | a | test.rs:132:48:132:65 | my_actix_handler_2 | test.rs:109:14:109:14 | a | $@ | test.rs:132:48:132:65 | my_actix_handler_2 | my_actix_handler_2 | -| test.rs:110:14:110:14 | b | test.rs:132:48:132:65 | my_actix_handler_2 | test.rs:110:14:110:14 | b | $@ | test.rs:132:48:132:65 | my_actix_handler_2 | my_actix_handler_2 | -| test.rs:116:14:116:14 | a | test.rs:133:44:133:61 | my_actix_handler_3 | test.rs:116:14:116:14 | a | $@ | test.rs:133:44:133:61 | my_actix_handler_3 | my_actix_handler_3 | -| test.rs:124:14:124:14 | a | test.rs:122:14:122:31 | my_actix_handler_4 | test.rs:124:14:124:14 | a | $@ | test.rs:122:14:122:31 | my_actix_handler_4 | my_actix_handler_4 | -| test.rs:148:14:148:23 | a.as_str() | test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:148:14:148:23 | a.as_str() | $@ | test.rs:200:34:200:50 | my_axum_handler_1 | my_axum_handler_1 | -| test.rs:149:14:149:25 | a.as_bytes() | test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:149:14:149:25 | a.as_bytes() | $@ | test.rs:200:34:200:50 | my_axum_handler_1 | my_axum_handler_1 | -| test.rs:150:14:150:14 | a | test.rs:200:34:200:50 | my_axum_handler_1 | test.rs:150:14:150:14 | a | $@ | test.rs:200:34:200:50 | my_axum_handler_1 | my_axum_handler_1 | -| test.rs:156:14:156:14 | a | test.rs:201:39:201:55 | my_axum_handler_2 | test.rs:156:14:156:14 | a | $@ | test.rs:201:39:201:55 | my_axum_handler_2 | my_axum_handler_2 | -| test.rs:157:14:157:14 | b | test.rs:201:39:201:55 | my_axum_handler_2 | test.rs:157:14:157:14 | b | $@ | test.rs:201:39:201:55 | my_axum_handler_2 | my_axum_handler_2 | -| test.rs:164:18:164:20 | key | test.rs:202:33:202:49 | my_axum_handler_3 | test.rs:164:18:164:20 | key | $@ | test.rs:202:33:202:49 | my_axum_handler_3 | my_axum_handler_3 | -| test.rs:165:18:165:22 | value | test.rs:202:33:202:49 | my_axum_handler_3 | test.rs:165:18:165:22 | value | $@ | test.rs:202:33:202:49 | my_axum_handler_3 | my_axum_handler_3 | -| test.rs:181:14:181:20 | payload | test.rs:205:65:205:81 | my_axum_handler_5 | test.rs:181:14:181:20 | payload | $@ | test.rs:205:65:205:81 | my_axum_handler_5 | my_axum_handler_5 | -| test.rs:187:14:187:17 | body | test.rs:207:33:207:49 | my_axum_handler_6 | test.rs:187:14:187:17 | body | $@ | test.rs:207:33:207:49 | my_axum_handler_6 | my_axum_handler_6 | -| test.rs:193:14:193:17 | body | test.rs:207:56:207:72 | my_axum_handler_7 | test.rs:193:14:193:17 | body | $@ | test.rs:207:56:207:72 | my_axum_handler_7 | my_axum_handler_7 | -| test.rs:224:18:224:18 | a | test.rs:222:37:227:9 | \|...\| ... | test.rs:224:18:224:18 | a | $@ | test.rs:222:37:227:9 | \|...\| ... | \|...\| ... | -| test.rs:232:22:232:22 | a | test.rs:231:13:235:13 | \|...\| ... | test.rs:232:22:232:22 | a | $@ | test.rs:231:13:235:13 | \|...\| ... | \|...\| ... | -| test.rs:243:22:243:23 | id | test.rs:240:13:248:9 | \|...\| ... | test.rs:243:22:243:23 | id | $@ | test.rs:240:13:248:9 | \|...\| ... | \|...\| ... | -| test.rs:255:22:255:22 | a | test.rs:253:13:258:14 | \|...\| ... | test.rs:255:22:255:22 | a | $@ | test.rs:253:13:258:14 | \|...\| ... | \|...\| ... | +| test.rs:99:14:99:23 | a.as_str() | test.rs:132:44:132:61 | my_actix_handler_1 | test.rs:99:14:99:23 | a.as_str() | $@ | test.rs:132:44:132:61 | my_actix_handler_1 | my_actix_handler_1 | +| test.rs:100:14:100:25 | a.as_bytes() | test.rs:132:44:132:61 | my_actix_handler_1 | test.rs:100:14:100:25 | a.as_bytes() | $@ | test.rs:132:44:132:61 | my_actix_handler_1 | my_actix_handler_1 | +| test.rs:101:14:101:14 | a | test.rs:132:44:132:61 | my_actix_handler_1 | test.rs:101:14:101:14 | a | $@ | test.rs:132:44:132:61 | my_actix_handler_1 | my_actix_handler_1 | +| test.rs:109:14:109:14 | a | test.rs:133:48:133:65 | my_actix_handler_2 | test.rs:109:14:109:14 | a | $@ | test.rs:133:48:133:65 | my_actix_handler_2 | my_actix_handler_2 | +| test.rs:110:14:110:14 | b | test.rs:133:48:133:65 | my_actix_handler_2 | test.rs:110:14:110:14 | b | $@ | test.rs:133:48:133:65 | my_actix_handler_2 | my_actix_handler_2 | +| test.rs:116:14:116:14 | a | test.rs:134:44:134:61 | my_actix_handler_3 | test.rs:116:14:116:14 | a | $@ | test.rs:134:44:134:61 | my_actix_handler_3 | my_actix_handler_3 | +| test.rs:125:14:125:14 | a | test.rs:123:14:123:31 | my_actix_handler_4 | test.rs:125:14:125:14 | a | $@ | test.rs:123:14:123:31 | my_actix_handler_4 | my_actix_handler_4 | +| test.rs:149:14:149:23 | a.as_str() | test.rs:208:34:208:50 | my_axum_handler_1 | test.rs:149:14:149:23 | a.as_str() | $@ | test.rs:208:34:208:50 | my_axum_handler_1 | my_axum_handler_1 | +| test.rs:150:14:150:25 | a.as_bytes() | test.rs:208:34:208:50 | my_axum_handler_1 | test.rs:150:14:150:25 | a.as_bytes() | $@ | test.rs:208:34:208:50 | my_axum_handler_1 | my_axum_handler_1 | +| test.rs:151:14:151:14 | a | test.rs:208:34:208:50 | my_axum_handler_1 | test.rs:151:14:151:14 | a | $@ | test.rs:208:34:208:50 | my_axum_handler_1 | my_axum_handler_1 | +| test.rs:157:14:157:14 | a | test.rs:209:39:209:55 | my_axum_handler_2 | test.rs:157:14:157:14 | a | $@ | test.rs:209:39:209:55 | my_axum_handler_2 | my_axum_handler_2 | +| test.rs:158:14:158:14 | b | test.rs:209:39:209:55 | my_axum_handler_2 | test.rs:158:14:158:14 | b | $@ | test.rs:209:39:209:55 | my_axum_handler_2 | my_axum_handler_2 | +| test.rs:165:18:165:20 | key | test.rs:210:33:210:49 | my_axum_handler_3 | test.rs:165:18:165:20 | key | $@ | test.rs:210:33:210:49 | my_axum_handler_3 | my_axum_handler_3 | +| test.rs:166:18:166:22 | value | test.rs:210:33:210:49 | my_axum_handler_3 | test.rs:166:18:166:22 | value | $@ | test.rs:210:33:210:49 | my_axum_handler_3 | my_axum_handler_3 | +| test.rs:182:14:182:20 | payload | test.rs:213:65:213:81 | my_axum_handler_5 | test.rs:182:14:182:20 | payload | $@ | test.rs:213:65:213:81 | my_axum_handler_5 | my_axum_handler_5 | +| test.rs:188:14:188:17 | body | test.rs:215:33:215:49 | my_axum_handler_6 | test.rs:188:14:188:17 | body | $@ | test.rs:215:33:215:49 | my_axum_handler_6 | my_axum_handler_6 | +| test.rs:194:14:194:17 | body | test.rs:215:56:215:72 | my_axum_handler_7 | test.rs:194:14:194:17 | body | $@ | test.rs:215:56:215:72 | my_axum_handler_7 | my_axum_handler_7 | +| test.rs:201:14:201:17 | body | test.rs:216:33:216:49 | my_axum_handler_8 | test.rs:201:14:201:17 | body | $@ | test.rs:216:33:216:49 | my_axum_handler_8 | my_axum_handler_8 | +| test.rs:233:18:233:18 | a | test.rs:231:37:236:9 | \|...\| ... | test.rs:233:18:233:18 | a | $@ | test.rs:231:37:236:9 | \|...\| ... | \|...\| ... | +| test.rs:241:22:241:22 | a | test.rs:240:13:244:13 | \|...\| ... | test.rs:241:22:241:22 | a | $@ | test.rs:240:13:244:13 | \|...\| ... | \|...\| ... | +| test.rs:252:22:252:23 | id | test.rs:249:13:257:9 | \|...\| ... | test.rs:252:22:252:23 | id | $@ | test.rs:249:13:257:9 | \|...\| ... | \|...\| ... | +| test.rs:264:22:264:22 | a | test.rs:262:13:267:14 | \|...\| ... | test.rs:264:22:264:22 | a | $@ | test.rs:262:13:267:14 | \|...\| ... | \|...\| ... | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected index 456ec4949bbe..ede8cb0d4ad0 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected @@ -3,123 +3,131 @@ | test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:122:14:122:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:131:44:131:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:132:48:132:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:133:44:133:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:200:34:200:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:201:39:201:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:202:33:202:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:21:205:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:205:65:205:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:33:207:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:207:56:207:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:222:37:227:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:231:13:235:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:240:13:248:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:253:13:258:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:123:14:123:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:123:14:123:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:123:14:123:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:123:14:123:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:123:14:123:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:123:14:123:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:123:14:123:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:123:14:123:31 | my_actix_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:44:132:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:44:132:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:44:132:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:44:132:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:44:132:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:44:132:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:44:132:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:132:44:132:61 | my_actix_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:48:133:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:48:133:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:48:133:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:48:133:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:48:133:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:48:133:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:48:133:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:133:48:133:65 | my_actix_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:134:44:134:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:134:44:134:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:134:44:134:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:134:44:134:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:134:44:134:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:134:44:134:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:134:44:134:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:134:44:134:61 | my_actix_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:208:34:208:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:208:34:208:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:208:34:208:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:208:34:208:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:208:34:208:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:208:34:208:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:208:34:208:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:208:34:208:50 | my_axum_handler_1 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:209:39:209:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:209:39:209:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:209:39:209:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:209:39:209:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:209:39:209:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:209:39:209:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:209:39:209:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:209:39:209:55 | my_axum_handler_2 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:210:33:210:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:210:33:210:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:210:33:210:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:210:33:210:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:210:33:210:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:210:33:210:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:210:33:210:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:210:33:210:49 | my_axum_handler_3 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:21:213:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:21:213:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:21:213:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:21:213:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:21:213:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:21:213:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:21:213:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:21:213:37 | my_axum_handler_4 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:65:213:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:65:213:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:65:213:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:65:213:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:65:213:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:65:213:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:65:213:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:213:65:213:81 | my_axum_handler_5 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:33:215:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:33:215:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:33:215:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:33:215:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:33:215:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:33:215:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:33:215:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:33:215:49 | my_axum_handler_6 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:56:215:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:56:215:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:56:215:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:56:215:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:56:215:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:56:215:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:56:215:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:215:56:215:72 | my_axum_handler_7 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:216:33:216:49 | my_axum_handler_8 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:216:33:216:49 | my_axum_handler_8 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:216:33:216:49 | my_axum_handler_8 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:216:33:216:49 | my_axum_handler_8 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:216:33:216:49 | my_axum_handler_8 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:216:33:216:49 | my_axum_handler_8 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:216:33:216:49 | my_axum_handler_8 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:216:33:216:49 | my_axum_handler_8 | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:37:236:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:37:236:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:37:236:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:37:236:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:37:236:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:37:236:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:37:236:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:231:37:236:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:244:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:244:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:244:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:244:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:244:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:244:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:244:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:240:13:244:13 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:249:13:257:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:249:13:257:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:249:13:257:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:249:13:257:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:249:13:257:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:249:13:257:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:249:13:257:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:249:13:257:9 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:262:13:267:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:262:13:267:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:262:13:267:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:262:13:267:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:262:13:267:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:262:13:267:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:262:13:267:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:262:13:267:14 | \|...\| ... | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs index ab9f129dddbe..b9d05a5816aa 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs @@ -118,6 +118,7 @@ mod actix_test { "".to_string() } + #[rustfmt::skip] #[get("/4/{a}")] async fn my_actix_handler_4(path: web::Path) -> String { // $ Alert[rust/summary/taint-sources] let a = path.into_inner(); @@ -139,7 +140,7 @@ mod actix_test { mod axum_test { use super::sink; - use axum::extract::{Json, Path, Query, Request}; + use axum::extract::{Json, Path, Query, Request, State}; use axum::routing::{get, post, put, MethodFilter}; use axum::Router; use std::collections::HashMap; @@ -195,6 +196,13 @@ mod axum_test { "" } + async fn my_axum_handler_8(state: State<()>, body: String) -> &'static str { + sink(state.0); + sink(body); // $ hasTaintFlow=my_axum_handler_8 + + "" + } + async fn test_axum() { let app = Router::<()>::new() .route("/1/{a}", get(my_axum_handler_1)) // $ Alert[rust/summary/taint-sources]) @@ -204,7 +212,8 @@ mod axum_test { "/4/:a", get(my_axum_handler_4).on(MethodFilter::DELETE, my_axum_handler_5), // $ Alert[rust/summary/taint-sources]) ) - .route("/5/:a", get(my_axum_handler_6).get(my_axum_handler_7)); // $ Alert[rust/summary/taint-sources]) + .route("/5/:a", get(my_axum_handler_6).get(my_axum_handler_7)) // $ Alert[rust/summary/taint-sources]) + .route("/6/:a", get(my_axum_handler_8)); // $ Alert[rust/summary/taint-sources]) // ... } diff --git a/rust/ql/test/library-tests/definitions/Definitions.expected b/rust/ql/test/library-tests/definitions/Definitions.expected index 2ab25620188e..3a3b079f4583 100644 --- a/rust/ql/test/library-tests/definitions/Definitions.expected +++ b/rust/ql/test/library-tests/definitions/Definitions.expected @@ -10,9 +10,9 @@ | main.rs:20:13:20:14 | S2 | main.rs:16:5:16:24 | struct S2 | path | | main.rs:20:16:20:16 | x | main.rs:19:20:19:20 | x | local variable | | main.rs:29:5:29:11 | println | {EXTERNAL LOCATION} | MacroRules | path | -| main.rs:29:22:29:26 | value | main.rs:29:50:29:56 | FormatArgsArgName | format argument | -| main.rs:29:29:29:33 | width | main.rs:29:50:29:56 | FormatArgsArgName | format argument | -| main.rs:29:36:29:44 | precision | main.rs:29:50:29:56 | FormatArgsArgName | format argument | +| main.rs:29:22:29:26 | value | main.rs:29:50:29:54 | value | format argument | +| main.rs:29:29:29:33 | width | main.rs:29:50:29:54 | value | format argument | +| main.rs:29:36:29:44 | precision | main.rs:29:50:29:54 | value | format argument | | main.rs:30:5:30:11 | println | {EXTERNAL LOCATION} | MacroRules | path | | main.rs:30:22:30:22 | 0 | main.rs:30:34:30:38 | value | format argument | | main.rs:30:25:30:25 | 1 | main.rs:30:41:30:45 | width | format argument | diff --git a/rust/ql/test/library-tests/path-resolution/invalid/main.rs b/rust/ql/test/library-tests/path-resolution/invalid/main.rs index b58fcb2d9346..08918a9b60e1 100644 --- a/rust/ql/test/library-tests/path-resolution/invalid/main.rs +++ b/rust/ql/test/library-tests/path-resolution/invalid/main.rs @@ -4,3 +4,15 @@ struct A; // A1 struct A; // A2 fn f(x: A) {} // $ item=A2 (the latter occurence takes precedence) + +/// Test `m::{self}` where `m` is a struct. Per the Rust specification `m` must +/// resolve to a module, trait, or enum: +/// https://doc.rust-lang.org/reference/items/use-declarations.html#r-items.use.self.module +mod self_import_from_struct { + struct MyStruct; // Struct + + #[rustfmt::skip] + use self::MyStruct::{ // $ item=Struct + self // $ SPURIOUS: item=self_import_from_struct + }; +} diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index f95b6ef09ef3..781641e98ce0 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -685,29 +685,38 @@ mod m18 { } } -mod m21 { - mod m22 { +/// Test importing modules, traits, and enums with `{self}`. +mod self_imports { + mod definitions { + pub mod my_module { + pub fn f() {} // I107 + } // I104 + pub trait MyTrait {} // I105 pub enum MyEnum { - A, // I104 - } // I105 + A, // I108 + } // I106 + } - pub struct MyStruct; // I106 - } // I107 + mod imports { + #[rustfmt::skip] + use super::definitions::my_module::{ // $ item=I104 + self // $ item=I104 + }; - mod m33 { #[rustfmt::skip] - use super::m22::MyEnum::{ // $ item=I105 + use super::definitions::MyTrait::{ // $ item=I105 self // $ item=I105 }; #[rustfmt::skip] - use super::m22::MyStruct::{ // $ item=I106 + use super::definitions::MyEnum::{ // $ item=I106 self // $ item=I106 }; - fn f() { - let _ = MyEnum::A; // $ item=I104 - let _ = MyStruct {}; // $ item=I106 + #[rustfmt::skip] + fn f() { // $ item=I105 + my_module::f(); // $ item=I107 + let _ = MyEnum::A; // $ item=I108 } } } 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 ef881e62f53b..9df115b9bdb1 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -1,4 +1,5 @@ mod +| invalid/main.rs:8:1:18:1 | mod self_import_from_struct | | lib.rs:1:1:1:11 | mod my | | main.rs:1:1:1:7 | mod my | | main.rs:8:1:8:8 | mod my2 | @@ -25,18 +26,19 @@ mod | main.rs:668:1:686:1 | mod m18 | | main.rs:673:5:685:5 | mod m19 | | main.rs:678:9:684:9 | mod m20 | -| main.rs:688:1:713:1 | mod m21 | -| main.rs:689:5:695:5 | mod m22 | -| main.rs:697:5:712:5 | mod m33 | -| main.rs:715:1:740:1 | mod m23 | -| main.rs:742:1:810:1 | mod m24 | -| main.rs:827:1:879:1 | mod associated_types | -| main.rs:881:1:954:1 | mod associated_types_subtrait | -| main.rs:960:1:979:1 | mod impl_with_attribute_macro | -| main.rs:981:1:1022:1 | mod patterns | -| main.rs:1024:1:1068:1 | mod self_constructors | -| main.rs:1070:1:1099:1 | mod self_types | -| main.rs:1101:1:1145:1 | mod const_static | +| main.rs:688:1:722:1 | mod self_imports | +| main.rs:690:5:698:5 | mod definitions | +| main.rs:691:9:693:9 | mod my_module | +| main.rs:700:5:721:5 | mod imports | +| main.rs:724:1:749:1 | mod m23 | +| main.rs:751:1:819:1 | mod m24 | +| main.rs:836:1:888:1 | mod associated_types | +| main.rs:890:1:963:1 | mod associated_types_subtrait | +| main.rs:969:1:988:1 | mod impl_with_attribute_macro | +| main.rs:990:1:1031:1 | mod patterns | +| main.rs:1033:1:1077:1 | mod self_constructors | +| main.rs:1079:1:1108:1 | mod self_types | +| main.rs:1110:1:1154:1 | mod const_static | | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:20:1:20:12 | mod my3 | | my2/mod.rs:22:1:23:10 | mod mymod | @@ -53,6 +55,9 @@ mod | my/nested.rs:2:5:11:5 | mod nested2 | resolvePath | invalid/main.rs:6:9:6:9 | A | invalid/main.rs:3:11:4:9 | struct A | +| invalid/main.rs:15:9:15:12 | self | invalid/main.rs:8:1:18:1 | mod self_import_from_struct | +| invalid/main.rs:15:9:15:22 | ...::MyStruct | invalid/main.rs:12:5:12:20 | struct MyStruct | +| invalid/main.rs:16:9:16:12 | self | invalid/main.rs:8:1:18:1 | mod self_import_from_struct | | main.rs:4:8:4:9 | my | main.rs:1:1:1:7 | mod my | | main.rs:4:14:4:17 | self | main.rs:1:1:1:7 | mod my | | main.rs:6:5:6:6 | my | main.rs:1:1:1:7 | mod my | @@ -78,7 +83,7 @@ resolvePath | main.rs:37:17:37:24 | ...::f | main.rs:26:9:28:9 | fn f | | main.rs:39:17:39:23 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:40:17:40:17 | f | main.rs:26:9:28:9 | fn f | -| main.rs:47:9:47:13 | super | main.rs:1:1:1184:2 | SourceFile | +| main.rs:47:9:47:13 | super | main.rs:1:1:1193:2 | SourceFile | | main.rs:47:9:47:17 | ...::m1 | main.rs:20:1:44:1 | mod m1 | | main.rs:47:9:47:21 | ...::m2 | main.rs:25:5:43:5 | mod m2 | | main.rs:47:9:47:24 | ...::g | main.rs:30:9:34:9 | fn g | @@ -93,7 +98,7 @@ resolvePath | main.rs:68:17:68:19 | Foo | main.rs:66:9:66:21 | struct Foo | | main.rs:71:13:71:15 | Foo | main.rs:60:5:60:17 | struct Foo | | main.rs:73:5:73:5 | f | main.rs:62:5:69:5 | fn f | -| main.rs:75:5:75:8 | self | main.rs:1:1:1184:2 | SourceFile | +| main.rs:75:5:75:8 | self | main.rs:1:1:1193:2 | SourceFile | | main.rs:75:5:75:11 | ...::i | main.rs:78:1:90:1 | fn i | | main.rs:79:5:79:11 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:81:13:81:15 | Foo | main.rs:55:1:55:13 | struct Foo | @@ -115,7 +120,7 @@ resolvePath | main.rs:112:9:112:15 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:118:9:118:15 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:122:9:122:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:125:13:125:17 | super | main.rs:1:1:1184:2 | SourceFile | +| main.rs:125:13:125:17 | super | main.rs:1:1:1193:2 | SourceFile | | main.rs:125:13:125:21 | ...::m5 | main.rs:110:1:114:1 | mod m5 | | main.rs:126:9:126:9 | f | main.rs:111:5:113:5 | fn f | | main.rs:126:9:126:9 | f | main.rs:117:5:119:5 | fn f | @@ -385,307 +390,313 @@ resolvePath | main.rs:682:17:682:21 | super | main.rs:673:5:685:5 | mod m19 | | main.rs:682:17:682:28 | ...::super | main.rs:668:1:686:1 | mod m18 | | main.rs:682:17:682:31 | ...::f | main.rs:669:5:671:5 | fn f | -| main.rs:699:13:699:17 | super | main.rs:688:1:713:1 | mod m21 | -| main.rs:699:13:699:22 | ...::m22 | main.rs:689:5:695:5 | mod m22 | -| main.rs:699:13:699:30 | ...::MyEnum | main.rs:690:9:692:9 | enum MyEnum | -| main.rs:700:13:700:16 | self | main.rs:690:9:692:9 | enum MyEnum | -| main.rs:704:13:704:17 | super | main.rs:688:1:713:1 | mod m21 | -| main.rs:704:13:704:22 | ...::m22 | main.rs:689:5:695:5 | mod m22 | -| main.rs:704:13:704:32 | ...::MyStruct | main.rs:694:9:694:28 | struct MyStruct | -| main.rs:705:13:705:16 | self | main.rs:694:9:694:28 | struct MyStruct | -| main.rs:709:21:709:26 | MyEnum | main.rs:690:9:692:9 | enum MyEnum | -| main.rs:709:21:709:29 | ...::A | main.rs:691:13:691:13 | A | -| main.rs:710:21:710:28 | MyStruct | main.rs:694:9:694:28 | struct MyStruct | -| main.rs:726:10:728:5 | Trait1::<...> | main.rs:716:5:721:5 | trait Trait1 | -| main.rs:727:7:727:10 | Self | main.rs:723:5:723:13 | struct S | -| main.rs:729:11:729:11 | S | main.rs:723:5:723:13 | struct S | -| main.rs:731:13:731:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:737:17:737:17 | S | main.rs:723:5:723:13 | struct S | -| main.rs:753:15:753:15 | T | main.rs:752:26:752:26 | T | -| main.rs:758:9:758:24 | GenericStruct::<...> | main.rs:751:5:754:5 | struct GenericStruct | -| main.rs:758:23:758:23 | T | main.rs:757:10:757:10 | T | -| main.rs:760:9:760:9 | T | main.rs:757:10:757:10 | T | -| main.rs:760:12:760:17 | TraitA | main.rs:743:5:745:5 | trait TraitA | -| main.rs:769:9:769:24 | GenericStruct::<...> | main.rs:751:5:754:5 | struct GenericStruct | -| main.rs:769:23:769:23 | T | main.rs:768:10:768:10 | T | -| main.rs:771:9:771:9 | T | main.rs:768:10:768:10 | T | -| main.rs:771:12:771:17 | TraitB | main.rs:747:5:749:5 | trait TraitB | -| main.rs:772:9:772:9 | T | main.rs:768:10:768:10 | T | -| main.rs:772:12:772:17 | TraitA | main.rs:743:5:745:5 | trait TraitA | -| main.rs:783:10:783:15 | TraitA | main.rs:743:5:745:5 | trait TraitA | -| main.rs:783:21:783:31 | Implementor | main.rs:780:5:780:23 | struct Implementor | -| main.rs:785:13:785:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:790:10:790:15 | TraitB | main.rs:747:5:749:5 | trait TraitB | -| main.rs:790:21:790:31 | Implementor | main.rs:780:5:780:23 | struct Implementor | -| main.rs:792:13:792:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:798:24:798:34 | Implementor | main.rs:780:5:780:23 | struct Implementor | -| main.rs:799:23:799:35 | GenericStruct | main.rs:751:5:754:5 | struct GenericStruct | -| main.rs:805:9:805:36 | GenericStruct::<...> | main.rs:751:5:754:5 | struct GenericStruct | -| main.rs:805:9:805:50 | ...::call_trait_a | main.rs:762:9:764:9 | fn call_trait_a | -| main.rs:805:25:805:35 | Implementor | main.rs:780:5:780:23 | struct Implementor | -| main.rs:808:9:808:36 | GenericStruct::<...> | main.rs:751:5:754:5 | struct GenericStruct | -| main.rs:808:9:808:47 | ...::call_both | main.rs:774:9:777:9 | fn call_both | -| main.rs:808:25:808:35 | Implementor | main.rs:780:5:780:23 | struct Implementor | -| main.rs:814:3:814:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:814:3:814:24 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:818:6:818:12 | AStruct | main.rs:817:1:817:17 | struct AStruct | -| main.rs:820:7:820:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:820:7:820:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:823:7:823:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:823:7:823:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:828:9:828:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:828:9:828:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | -| main.rs:828:9:828:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:829:9:829:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:829:9:829:19 | ...::result | {EXTERNAL LOCATION} | mod result | -| main.rs:829:9:829:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | -| main.rs:837:19:837:22 | Self | main.rs:831:5:839:5 | trait Reduce | -| main.rs:837:19:837:29 | ...::Input | main.rs:832:9:832:19 | type Input | -| main.rs:838:14:838:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:838:21:838:24 | Self | main.rs:831:5:839:5 | trait Reduce | -| main.rs:838:21:838:32 | ...::Output | main.rs:833:21:834:20 | type Output | -| main.rs:838:35:838:38 | Self | main.rs:831:5:839:5 | trait Reduce | -| main.rs:838:35:838:45 | ...::Error | main.rs:832:21:833:19 | type Error | -| main.rs:842:17:842:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:842:29:842:33 | Input | main.rs:841:19:841:23 | Input | -| main.rs:843:17:843:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:843:29:843:33 | Error | main.rs:841:26:841:30 | Error | -| main.rs:850:11:850:16 | Reduce | main.rs:831:5:839:5 | trait Reduce | -| main.rs:851:13:854:9 | MyImpl::<...> | main.rs:841:5:844:5 | struct MyImpl | -| main.rs:852:13:852:17 | Input | main.rs:848:13:848:17 | Input | -| main.rs:853:13:853:17 | Error | main.rs:849:13:849:17 | Error | -| main.rs:856:22:859:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:857:13:857:17 | Input | main.rs:848:13:848:17 | Input | -| main.rs:858:13:858:16 | Self | main.rs:846:5:878:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:858:13:858:23 | ...::Error | main.rs:860:11:864:9 | type Error | -| main.rs:861:22:863:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:862:11:862:15 | Error | main.rs:849:13:849:17 | Error | -| main.rs:866:13:866:17 | Input | main.rs:848:13:848:17 | Input | -| main.rs:871:19:871:22 | Self | main.rs:846:5:878:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:871:19:871:29 | ...::Input | main.rs:856:9:860:9 | type Input | -| main.rs:872:14:875:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:873:13:873:16 | Self | main.rs:846:5:878:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:873:13:873:24 | ...::Output | main.rs:864:11:867:9 | type Output | -| main.rs:874:13:874:16 | Self | main.rs:846:5:878:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:874:13:874:23 | ...::Error | main.rs:860:11:864:9 | type Error | -| main.rs:886:16:886:20 | Super | main.rs:882:5:884:5 | trait Super | -| main.rs:888:19:888:22 | Self | main.rs:886:5:890:5 | trait Sub | -| main.rs:888:19:888:27 | ...::Out | main.rs:883:9:883:17 | type Out | -| main.rs:893:9:893:10 | ST | main.rs:892:14:892:15 | ST | -| main.rs:897:10:897:14 | Super | main.rs:882:5:884:5 | trait Super | -| main.rs:897:20:897:25 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:897:22:897:24 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:898:20:898:23 | char | {EXTERNAL LOCATION} | struct char | -| main.rs:903:10:903:14 | Super | main.rs:882:5:884:5 | trait Super | -| main.rs:903:20:903:26 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:903:22:903:25 | bool | {EXTERNAL LOCATION} | struct bool | -| main.rs:904:20:904:22 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:909:10:909:12 | Sub | main.rs:886:5:890:5 | trait Sub | -| main.rs:909:18:909:23 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:909:20:909:22 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:910:19:910:22 | Self | main.rs:908:5:913:5 | impl Sub for S::<...> { ... } | -| main.rs:910:19:910:27 | ...::Out | main.rs:883:9:883:17 | type Out | -| main.rs:916:10:916:12 | Sub | main.rs:886:5:890:5 | trait Sub | -| main.rs:916:18:916:24 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:916:20:916:23 | bool | {EXTERNAL LOCATION} | struct bool | -| main.rs:917:19:917:22 | Self | main.rs:915:5:920:5 | impl Sub for S::<...> { ... } | -| main.rs:917:19:917:27 | ...::Out | main.rs:883:9:883:17 | type Out | -| main.rs:926:19:926:26 | SuperAlt | main.rs:922:5:924:5 | trait SuperAlt | -| main.rs:928:23:928:26 | Self | main.rs:926:5:930:5 | trait SubAlt | -| main.rs:928:23:928:31 | ...::Out | main.rs:923:9:923:17 | type Out | -| main.rs:933:13:933:20 | SuperAlt | main.rs:922:5:924:5 | trait SuperAlt | -| main.rs:933:26:933:29 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:933:28:933:28 | A | main.rs:933:10:933:10 | A | -| main.rs:934:20:934:20 | A | main.rs:933:10:933:10 | A | -| main.rs:939:13:939:18 | SubAlt | main.rs:926:5:930:5 | trait SubAlt | -| main.rs:939:24:939:27 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:939:26:939:26 | A | main.rs:939:10:939:10 | A | -| main.rs:940:23:940:26 | Self | main.rs:938:5:943:5 | impl SubAlt for S::<...> { ... } | -| main.rs:940:23:940:31 | ...::Out | main.rs:923:9:923:17 | type Out | -| main.rs:946:10:946:16 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:946:12:946:15 | bool | {EXTERNAL LOCATION} | struct bool | -| main.rs:948:21:948:37 | <...> | main.rs:882:5:884:5 | trait Super | -| main.rs:948:21:948:42 | ...::Out | main.rs:883:9:883:17 | type Out | -| main.rs:948:22:948:27 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:948:24:948:26 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:948:32:948:36 | Super | main.rs:882:5:884:5 | trait Super | -| main.rs:949:21:949:38 | <...> | main.rs:882:5:884:5 | trait Super | -| main.rs:949:21:949:43 | ...::Out | main.rs:883:9:883:17 | type Out | -| main.rs:949:22:949:28 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:949:24:949:27 | bool | {EXTERNAL LOCATION} | struct bool | -| main.rs:949:33:949:37 | Super | main.rs:882:5:884:5 | trait Super | -| main.rs:951:21:951:41 | <...> | main.rs:922:5:924:5 | trait SuperAlt | -| main.rs:951:21:951:46 | ...::Out | main.rs:923:9:923:17 | type Out | -| main.rs:951:22:951:28 | S::<...> | main.rs:892:5:894:6 | struct S | -| main.rs:951:24:951:27 | bool | {EXTERNAL LOCATION} | struct bool | -| main.rs:951:33:951:40 | SuperAlt | main.rs:922:5:924:5 | trait SuperAlt | -| main.rs:956:5:956:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:956:11:956:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:958:15:958:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:958:15:958:25 | ...::string | {EXTERNAL LOCATION} | mod string | -| main.rs:958:15:958:33 | ...::String | {EXTERNAL LOCATION} | struct String | -| main.rs:968:7:968:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:968:7:968:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | -| main.rs:969:10:969:15 | ATrait | main.rs:964:5:966:5 | trait ATrait | -| main.rs:969:21:969:23 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:971:11:971:13 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:977:17:977:19 | Foo | main.rs:962:5:962:15 | struct Foo | -| main.rs:983:22:983:32 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:983:29:983:31 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:984:17:984:20 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:985:17:985:27 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:985:24:985:26 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:986:13:986:16 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:987:17:987:20 | None | {EXTERNAL LOCATION} | None | -| main.rs:989:13:989:16 | None | {EXTERNAL LOCATION} | None | -| main.rs:990:17:990:20 | None | {EXTERNAL LOCATION} | None | -| main.rs:999:19:999:29 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:999:26:999:28 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1000:26:1000:29 | test | main.rs:982:5:996:5 | fn test | -| main.rs:1006:14:1006:16 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1011:17:1011:20 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:1013:13:1013:16 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:1018:13:1018:16 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:1018:18:1018:18 | z | main.rs:1005:5:1007:12 | const z | -| main.rs:1018:24:1018:24 | z | main.rs:1005:5:1007:12 | const z | -| main.rs:1026:24:1026:26 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1029:10:1029:20 | TupleStruct | main.rs:1026:5:1026:28 | struct TupleStruct | -| main.rs:1031:19:1031:21 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1031:27:1031:30 | Self | main.rs:1026:5:1026:28 | struct TupleStruct | -| main.rs:1032:21:1032:24 | Self | main.rs:1026:5:1026:28 | struct TupleStruct | -| main.rs:1033:31:1033:34 | Self | main.rs:1026:5:1026:28 | struct TupleStruct | -| main.rs:1039:12:1039:14 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1043:10:1043:21 | StructStruct | main.rs:1038:5:1040:5 | struct StructStruct | -| main.rs:1045:19:1045:21 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1045:27:1045:30 | Self | main.rs:1038:5:1040:5 | struct StructStruct | -| main.rs:1046:13:1046:16 | Self | main.rs:1038:5:1040:5 | struct StructStruct | -| main.rs:1052:13:1052:15 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1057:10:1057:15 | MyEnum | main.rs:1050:5:1054:5 | enum MyEnum | -| main.rs:1058:25:1058:27 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1060:17:1060:20 | Self | main.rs:1056:5:1067:5 | impl MyEnum { ... } | -| main.rs:1060:17:1060:23 | ...::A | main.rs:1051:9:1053:9 | A | -| main.rs:1073:15:1073:15 | T | main.rs:1072:31:1072:31 | T | -| main.rs:1074:15:1074:31 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:1074:22:1074:30 | Box::<...> | {EXTERNAL LOCATION} | struct Box | -| main.rs:1074:26:1074:29 | Self | main.rs:1072:5:1075:5 | struct NonEmptyListStruct | -| main.rs:1078:16:1078:16 | T | main.rs:1077:27:1077:27 | T | -| main.rs:1079:14:1079:14 | T | main.rs:1077:27:1077:27 | T | -| main.rs:1079:17:1079:25 | Box::<...> | {EXTERNAL LOCATION} | struct Box | -| main.rs:1079:21:1079:24 | Self | main.rs:1077:5:1080:5 | enum NonEmptyListEnum | -| main.rs:1083:10:1083:30 | NonEmptyListEnum::<...> | main.rs:1077:5:1080:5 | enum NonEmptyListEnum | -| main.rs:1083:27:1083:29 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1084:30:1084:32 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1084:38:1084:41 | Self | main.rs:1077:5:1080:5 | enum NonEmptyListEnum | -| main.rs:1085:17:1085:32 | NonEmptyListEnum | main.rs:1077:5:1080:5 | enum NonEmptyListEnum | -| main.rs:1086:13:1086:16 | Self | main.rs:1082:5:1088:5 | impl NonEmptyListEnum::<...> { ... } | -| main.rs:1086:13:1086:24 | ...::Single | main.rs:1078:9:1078:17 | Single | -| main.rs:1094:13:1094:16 | Copy | {EXTERNAL LOCATION} | trait Copy | -| main.rs:1096:17:1096:17 | T | main.rs:1093:9:1093:9 | T | -| main.rs:1097:16:1097:16 | T | main.rs:1093:9:1093:9 | T | -| main.rs:1097:23:1097:26 | Self | main.rs:1090:5:1098:5 | union NonEmptyListUnion | -| main.rs:1103:9:1103:13 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:1103:9:1103:27 | ...::const_static | main.rs:1101:1:1145:1 | mod const_static | -| main.rs:1105:27:1105:29 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1107:29:1107:31 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1110:17:1110:26 | CONST_ITEM | main.rs:1105:5:1105:35 | const CONST_ITEM | -| main.rs:1111:17:1111:27 | STATIC_ITEM | main.rs:1107:5:1107:37 | static STATIC_ITEM | -| main.rs:1112:17:1112:28 | const_static | main.rs:1101:1:1145:1 | mod const_static | -| main.rs:1112:17:1112:40 | ...::CONST_ITEM | main.rs:1105:5:1105:35 | const CONST_ITEM | -| main.rs:1113:17:1113:28 | const_static | main.rs:1101:1:1145:1 | mod const_static | -| main.rs:1113:17:1113:41 | ...::STATIC_ITEM | main.rs:1107:5:1107:37 | static STATIC_ITEM | -| main.rs:1114:17:1114:27 | CONST_ALIAS | main.rs:1117:9:1118:13 | const CONST_ALIAS | -| main.rs:1115:17:1115:28 | STATIC_ALIAS | main.rs:1118:15:1120:13 | static STATIC_ALIAS | -| main.rs:1117:28:1117:30 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1117:34:1117:43 | CONST_ITEM | main.rs:1105:5:1105:35 | const CONST_ITEM | -| main.rs:1119:30:1119:32 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1119:36:1119:46 | STATIC_ITEM | main.rs:1107:5:1107:37 | static STATIC_ITEM | -| main.rs:1122:17:1122:27 | CONST_ALIAS | main.rs:1117:9:1118:13 | const CONST_ALIAS | -| main.rs:1123:17:1123:28 | STATIC_ALIAS | main.rs:1118:15:1120:13 | static STATIC_ALIAS | -| main.rs:1126:32:1126:34 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1126:38:1126:47 | CONST_ITEM | main.rs:1105:5:1105:35 | const CONST_ITEM | -| main.rs:1128:34:1128:36 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1128:40:1128:50 | STATIC_ITEM | main.rs:1107:5:1107:37 | static STATIC_ITEM | -| main.rs:1131:21:1131:31 | CONST_ALIAS | main.rs:1126:13:1127:17 | const CONST_ALIAS | -| main.rs:1132:21:1132:32 | STATIC_ALIAS | main.rs:1127:19:1129:17 | static STATIC_ALIAS | -| main.rs:1136:32:1136:34 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1136:38:1136:47 | CONST_ITEM | main.rs:1105:5:1105:35 | const CONST_ITEM | -| main.rs:1138:34:1138:36 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:1138:40:1138:50 | STATIC_ITEM | main.rs:1107:5:1107:37 | static STATIC_ITEM | -| main.rs:1141:21:1141:31 | CONST_ALIAS | main.rs:1136:13:1137:17 | const CONST_ALIAS | -| main.rs:1142:21:1142:32 | STATIC_ALIAS | main.rs:1137:19:1139:17 | static STATIC_ALIAS | -| main.rs:1148:5:1148:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:1148:5:1148:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:1148:5:1148:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:1148:5:1148:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:1148:5:1148:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | -| main.rs:1149:5:1149:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:1149:5:1149:9 | ...::f | my.rs:5:1:7:1 | fn f | -| main.rs:1150:5:1150:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:1150:5:1150:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:1150:5:1150:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:1150:5:1150:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:1151:5:1151:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:1152:5:1152:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:1153:5:1153:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:1153:5:1153:12 | ...::h | main.rs:57:1:76:1 | fn h | -| main.rs:1154:5:1154:6 | m1 | main.rs:20:1:44:1 | mod m1 | -| main.rs:1154:5:1154:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | -| main.rs:1154:5:1154:13 | ...::g | main.rs:30:9:34:9 | fn g | -| main.rs:1155:5:1155:6 | m1 | main.rs:20:1:44:1 | mod m1 | -| main.rs:1155:5:1155:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | -| main.rs:1155:5:1155:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 | -| main.rs:1155:5:1155:17 | ...::h | main.rs:37:27:41:13 | fn h | -| main.rs:1156:5:1156:6 | m4 | main.rs:46:1:53:1 | mod m4 | -| main.rs:1156:5:1156:9 | ...::i | main.rs:49:5:52:5 | fn i | -| main.rs:1157:5:1157:5 | h | main.rs:57:1:76:1 | fn h | -| main.rs:1158:5:1158:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:1159:5:1159:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:1160:5:1160:5 | j | main.rs:104:1:108:1 | fn j | -| main.rs:1161:5:1161:6 | m6 | main.rs:116:1:128:1 | mod m6 | -| main.rs:1161:5:1161:9 | ...::g | main.rs:121:5:127:5 | fn g | -| main.rs:1162:5:1162:6 | m7 | main.rs:130:1:149:1 | mod m7 | -| main.rs:1162:5:1162:9 | ...::f | main.rs:141:5:148:5 | fn f | -| main.rs:1163:5:1163:6 | m8 | main.rs:151:1:205:1 | mod m8 | -| main.rs:1163:5:1163:9 | ...::g | main.rs:189:5:204:5 | fn g | -| main.rs:1164:5:1164:6 | m9 | main.rs:207:1:215:1 | mod m9 | -| main.rs:1164:5:1164:9 | ...::f | main.rs:210:5:214:5 | fn f | -| main.rs:1165:5:1165:7 | m11 | main.rs:238:1:275:1 | mod m11 | -| main.rs:1165:5:1165:10 | ...::f | main.rs:243:5:246:5 | fn f | -| main.rs:1166:5:1166:7 | m15 | main.rs:306:1:375:1 | mod m15 | -| main.rs:1166:5:1166:10 | ...::f | main.rs:362:5:374:5 | fn f | -| main.rs:1167:5:1167:7 | m16 | main.rs:377:1:575:1 | mod m16 | -| main.rs:1167:5:1167:10 | ...::f | main.rs:447:5:471:5 | fn f | -| main.rs:1168:5:1168:20 | trait_visibility | main.rs:577:1:634:1 | mod trait_visibility | -| main.rs:1168:5:1168:23 | ...::f | main.rs:604:5:633:5 | fn f | -| main.rs:1169:5:1169:7 | m17 | main.rs:636:1:666:1 | mod m17 | -| main.rs:1169:5:1169:10 | ...::f | main.rs:660:5:665:5 | fn f | -| main.rs:1170:5:1170:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | -| main.rs:1170:5:1170:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | -| main.rs:1171:5:1171:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| main.rs:1171:5:1171:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:1172:5:1172:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | -| main.rs:1172:5:1172:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | -| main.rs:1173:5:1173:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:1174:5:1174:12 | my_alias | main.rs:1:1:1:7 | mod my | -| main.rs:1174:5:1174:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:1175:5:1175:7 | m18 | main.rs:668:1:686:1 | mod m18 | -| main.rs:1175:5:1175:12 | ...::m19 | main.rs:673:5:685:5 | mod m19 | -| main.rs:1175:5:1175:17 | ...::m20 | main.rs:678:9:684:9 | mod m20 | -| main.rs:1175:5:1175:20 | ...::g | main.rs:679:13:683:13 | fn g | -| main.rs:1176:5:1176:7 | m23 | main.rs:715:1:740:1 | mod m23 | -| main.rs:1176:5:1176:10 | ...::f | main.rs:735:5:739:5 | fn f | -| main.rs:1177:5:1177:7 | m24 | main.rs:742:1:810:1 | mod m24 | -| main.rs:1177:5:1177:10 | ...::f | main.rs:796:5:809:5 | fn f | -| main.rs:1178:5:1178:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:1178:5:1178:11 | ...::h | main.rs:57:1:76:1 | fn h | -| main.rs:1179:5:1179:13 | z_changed | main.rs:815:1:815:9 | fn z_changed | -| main.rs:1180:5:1180:11 | AStruct | main.rs:817:1:817:17 | struct AStruct | -| main.rs:1180:5:1180:22 | ...::z_on_type | main.rs:821:5:821:17 | fn z_on_type | -| main.rs:1181:5:1181:11 | AStruct | main.rs:817:1:817:17 | struct AStruct | -| main.rs:1182:5:1182:29 | impl_with_attribute_macro | main.rs:960:1:979:1 | mod impl_with_attribute_macro | -| main.rs:1182:5:1182:35 | ...::test | main.rs:975:5:978:5 | fn test | -| main.rs:1183:5:1183:12 | patterns | main.rs:981:1:1022:1 | mod patterns | -| main.rs:1183:5:1183:18 | ...::test | main.rs:982:5:996:5 | fn test | +| main.rs:702:13:702:17 | super | main.rs:688:1:722:1 | mod self_imports | +| main.rs:702:13:702:30 | ...::definitions | main.rs:690:5:698:5 | mod definitions | +| main.rs:702:13:702:41 | ...::my_module | main.rs:691:9:693:9 | mod my_module | +| main.rs:703:13:703:16 | self | main.rs:691:9:693:9 | mod my_module | +| main.rs:707:13:707:17 | super | main.rs:688:1:722:1 | mod self_imports | +| main.rs:707:13:707:30 | ...::definitions | main.rs:690:5:698:5 | mod definitions | +| main.rs:707:13:707:39 | ...::MyTrait | main.rs:693:11:694:28 | trait MyTrait | +| main.rs:708:13:708:16 | self | main.rs:693:11:694:28 | trait MyTrait | +| main.rs:712:13:712:17 | super | main.rs:688:1:722:1 | mod self_imports | +| main.rs:712:13:712:30 | ...::definitions | main.rs:690:5:698:5 | mod definitions | +| main.rs:712:13:712:38 | ...::MyEnum | main.rs:694:30:697:9 | enum MyEnum | +| main.rs:713:13:713:16 | self | main.rs:694:30:697:9 | enum MyEnum | +| main.rs:717:17:717:23 | MyTrait | main.rs:693:11:694:28 | trait MyTrait | +| main.rs:718:13:718:21 | my_module | main.rs:691:9:693:9 | mod my_module | +| main.rs:718:13:718:24 | ...::f | main.rs:692:13:692:25 | fn f | +| main.rs:719:21:719:26 | MyEnum | main.rs:694:30:697:9 | enum MyEnum | +| main.rs:719:21:719:29 | ...::A | main.rs:696:13:696:13 | A | +| main.rs:735:10:737:5 | Trait1::<...> | main.rs:725:5:730:5 | trait Trait1 | +| main.rs:736:7:736:10 | Self | main.rs:732:5:732:13 | struct S | +| main.rs:738:11:738:11 | S | main.rs:732:5:732:13 | struct S | +| main.rs:740:13:740:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:746:17:746:17 | S | main.rs:732:5:732:13 | struct S | +| main.rs:762:15:762:15 | T | main.rs:761:26:761:26 | T | +| main.rs:767:9:767:24 | GenericStruct::<...> | main.rs:760:5:763:5 | struct GenericStruct | +| main.rs:767:23:767:23 | T | main.rs:766:10:766:10 | T | +| main.rs:769:9:769:9 | T | main.rs:766:10:766:10 | T | +| main.rs:769:12:769:17 | TraitA | main.rs:752:5:754:5 | trait TraitA | +| main.rs:778:9:778:24 | GenericStruct::<...> | main.rs:760:5:763:5 | struct GenericStruct | +| main.rs:778:23:778:23 | T | main.rs:777:10:777:10 | T | +| main.rs:780:9:780:9 | T | main.rs:777:10:777:10 | T | +| main.rs:780:12:780:17 | TraitB | main.rs:756:5:758:5 | trait TraitB | +| main.rs:781:9:781:9 | T | main.rs:777:10:777:10 | T | +| main.rs:781:12:781:17 | TraitA | main.rs:752:5:754:5 | trait TraitA | +| main.rs:792:10:792:15 | TraitA | main.rs:752:5:754:5 | trait TraitA | +| main.rs:792:21:792:31 | Implementor | main.rs:789:5:789:23 | struct Implementor | +| main.rs:794:13:794:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:799:10:799:15 | TraitB | main.rs:756:5:758:5 | trait TraitB | +| main.rs:799:21:799:31 | Implementor | main.rs:789:5:789:23 | struct Implementor | +| main.rs:801:13:801:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:807:24:807:34 | Implementor | main.rs:789:5:789:23 | struct Implementor | +| main.rs:808:23:808:35 | GenericStruct | main.rs:760:5:763:5 | struct GenericStruct | +| main.rs:814:9:814:36 | GenericStruct::<...> | main.rs:760:5:763:5 | struct GenericStruct | +| main.rs:814:9:814:50 | ...::call_trait_a | main.rs:771:9:773:9 | fn call_trait_a | +| main.rs:814:25:814:35 | Implementor | main.rs:789:5:789:23 | struct Implementor | +| main.rs:817:9:817:36 | GenericStruct::<...> | main.rs:760:5:763:5 | struct GenericStruct | +| main.rs:817:9:817:47 | ...::call_both | main.rs:783:9:786:9 | fn call_both | +| main.rs:817:25:817:35 | Implementor | main.rs:789:5:789:23 | struct Implementor | +| main.rs:823:3:823:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:823:3:823:24 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | +| main.rs:827:6:827:12 | AStruct | main.rs:826:1:826:17 | struct AStruct | +| main.rs:829:7:829:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:829:7:829:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | +| main.rs:832:7:832:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:832:7:832:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | +| main.rs:837:9:837:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:837:9:837:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | +| main.rs:837:9:837:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:838:9:838:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:838:9:838:19 | ...::result | {EXTERNAL LOCATION} | mod result | +| main.rs:838:9:838:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | +| main.rs:846:19:846:22 | Self | main.rs:840:5:848:5 | trait Reduce | +| main.rs:846:19:846:29 | ...::Input | main.rs:841:9:841:19 | type Input | +| main.rs:847:14:847:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:847:21:847:24 | Self | main.rs:840:5:848:5 | trait Reduce | +| main.rs:847:21:847:32 | ...::Output | main.rs:842:21:843:20 | type Output | +| main.rs:847:35:847:38 | Self | main.rs:840:5:848:5 | trait Reduce | +| main.rs:847:35:847:45 | ...::Error | main.rs:841:21:842:19 | type Error | +| main.rs:851:17:851:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:851:29:851:33 | Input | main.rs:850:19:850:23 | Input | +| main.rs:852:17:852:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:852:29:852:33 | Error | main.rs:850:26:850:30 | Error | +| main.rs:859:11:859:16 | Reduce | main.rs:840:5:848:5 | trait Reduce | +| main.rs:860:13:863:9 | MyImpl::<...> | main.rs:850:5:853:5 | struct MyImpl | +| main.rs:861:13:861:17 | Input | main.rs:857:13:857:17 | Input | +| main.rs:862:13:862:17 | Error | main.rs:858:13:858:17 | Error | +| main.rs:865:22:868:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:866:13:866:17 | Input | main.rs:857:13:857:17 | Input | +| main.rs:867:13:867:16 | Self | main.rs:855:5:887:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:867:13:867:23 | ...::Error | main.rs:869:11:873:9 | type Error | +| main.rs:870:22:872:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:871:11:871:15 | Error | main.rs:858:13:858:17 | Error | +| main.rs:875:13:875:17 | Input | main.rs:857:13:857:17 | Input | +| main.rs:880:19:880:22 | Self | main.rs:855:5:887:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:880:19:880:29 | ...::Input | main.rs:865:9:869:9 | type Input | +| main.rs:881:14:884:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:882:13:882:16 | Self | main.rs:855:5:887:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:882:13:882:24 | ...::Output | main.rs:873:11:876:9 | type Output | +| main.rs:883:13:883:16 | Self | main.rs:855:5:887:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:883:13:883:23 | ...::Error | main.rs:869:11:873:9 | type Error | +| main.rs:895:16:895:20 | Super | main.rs:891:5:893:5 | trait Super | +| main.rs:897:19:897:22 | Self | main.rs:895:5:899:5 | trait Sub | +| main.rs:897:19:897:27 | ...::Out | main.rs:892:9:892:17 | type Out | +| main.rs:902:9:902:10 | ST | main.rs:901:14:901:15 | ST | +| main.rs:906:10:906:14 | Super | main.rs:891:5:893:5 | trait Super | +| main.rs:906:20:906:25 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:906:22:906:24 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:907:20:907:23 | char | {EXTERNAL LOCATION} | struct char | +| main.rs:912:10:912:14 | Super | main.rs:891:5:893:5 | trait Super | +| main.rs:912:20:912:26 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:912:22:912:25 | bool | {EXTERNAL LOCATION} | struct bool | +| main.rs:913:20:913:22 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:918:10:918:12 | Sub | main.rs:895:5:899:5 | trait Sub | +| main.rs:918:18:918:23 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:918:20:918:22 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:919:19:919:22 | Self | main.rs:917:5:922:5 | impl Sub for S::<...> { ... } | +| main.rs:919:19:919:27 | ...::Out | main.rs:892:9:892:17 | type Out | +| main.rs:925:10:925:12 | Sub | main.rs:895:5:899:5 | trait Sub | +| main.rs:925:18:925:24 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:925:20:925:23 | bool | {EXTERNAL LOCATION} | struct bool | +| main.rs:926:19:926:22 | Self | main.rs:924:5:929:5 | impl Sub for S::<...> { ... } | +| main.rs:926:19:926:27 | ...::Out | main.rs:892:9:892:17 | type Out | +| main.rs:935:19:935:26 | SuperAlt | main.rs:931:5:933:5 | trait SuperAlt | +| main.rs:937:23:937:26 | Self | main.rs:935:5:939:5 | trait SubAlt | +| main.rs:937:23:937:31 | ...::Out | main.rs:932:9:932:17 | type Out | +| main.rs:942:13:942:20 | SuperAlt | main.rs:931:5:933:5 | trait SuperAlt | +| main.rs:942:26:942:29 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:942:28:942:28 | A | main.rs:942:10:942:10 | A | +| main.rs:943:20:943:20 | A | main.rs:942:10:942:10 | A | +| main.rs:948:13:948:18 | SubAlt | main.rs:935:5:939:5 | trait SubAlt | +| main.rs:948:24:948:27 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:948:26:948:26 | A | main.rs:948:10:948:10 | A | +| main.rs:949:23:949:26 | Self | main.rs:947:5:952:5 | impl SubAlt for S::<...> { ... } | +| main.rs:949:23:949:31 | ...::Out | main.rs:932:9:932:17 | type Out | +| main.rs:955:10:955:16 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:955:12:955:15 | bool | {EXTERNAL LOCATION} | struct bool | +| main.rs:957:21:957:37 | <...> | main.rs:891:5:893:5 | trait Super | +| main.rs:957:21:957:42 | ...::Out | main.rs:892:9:892:17 | type Out | +| main.rs:957:22:957:27 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:957:24:957:26 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:957:32:957:36 | Super | main.rs:891:5:893:5 | trait Super | +| main.rs:958:21:958:38 | <...> | main.rs:891:5:893:5 | trait Super | +| main.rs:958:21:958:43 | ...::Out | main.rs:892:9:892:17 | type Out | +| main.rs:958:22:958:28 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:958:24:958:27 | bool | {EXTERNAL LOCATION} | struct bool | +| main.rs:958:33:958:37 | Super | main.rs:891:5:893:5 | trait Super | +| main.rs:960:21:960:41 | <...> | main.rs:931:5:933:5 | trait SuperAlt | +| main.rs:960:21:960:46 | ...::Out | main.rs:932:9:932:17 | type Out | +| main.rs:960:22:960:28 | S::<...> | main.rs:901:5:903:6 | struct S | +| main.rs:960:24:960:27 | bool | {EXTERNAL LOCATION} | struct bool | +| main.rs:960:33:960:40 | SuperAlt | main.rs:931:5:933:5 | trait SuperAlt | +| main.rs:965:5:965:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:965:11:965:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:967:15:967:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:967:15:967:25 | ...::string | {EXTERNAL LOCATION} | mod string | +| main.rs:967:15:967:33 | ...::String | {EXTERNAL LOCATION} | struct String | +| main.rs:977:7:977:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:977:7:977:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | +| main.rs:978:10:978:15 | ATrait | main.rs:973:5:975:5 | trait ATrait | +| main.rs:978:21:978:23 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:980:11:980:13 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:986:17:986:19 | Foo | main.rs:971:5:971:15 | struct Foo | +| main.rs:992:22:992:32 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:992:29:992:31 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:993:17:993:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:994:17:994:27 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:994:24:994:26 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:995:13:995:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:996:17:996:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:998:13:998:16 | None | {EXTERNAL LOCATION} | None | +| main.rs:999:17:999:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:1008:19:1008:29 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:1008:26:1008:28 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1009:26:1009:29 | test | main.rs:991:5:1005:5 | fn test | +| main.rs:1015:14:1015:16 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1020:17:1020:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:1022:13:1022:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:1027:13:1027:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:1027:18:1027:18 | z | main.rs:1014:5:1016:12 | const z | +| main.rs:1027:24:1027:24 | z | main.rs:1014:5:1016:12 | const z | +| main.rs:1035:24:1035:26 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1038:10:1038:20 | TupleStruct | main.rs:1035:5:1035:28 | struct TupleStruct | +| main.rs:1040:19:1040:21 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1040:27:1040:30 | Self | main.rs:1035:5:1035:28 | struct TupleStruct | +| main.rs:1041:21:1041:24 | Self | main.rs:1035:5:1035:28 | struct TupleStruct | +| main.rs:1042:31:1042:34 | Self | main.rs:1035:5:1035:28 | struct TupleStruct | +| main.rs:1048:12:1048:14 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1052:10:1052:21 | StructStruct | main.rs:1047:5:1049:5 | struct StructStruct | +| main.rs:1054:19:1054:21 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1054:27:1054:30 | Self | main.rs:1047:5:1049:5 | struct StructStruct | +| main.rs:1055:13:1055:16 | Self | main.rs:1047:5:1049:5 | struct StructStruct | +| main.rs:1061:13:1061:15 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1066:10:1066:15 | MyEnum | main.rs:1059:5:1063:5 | enum MyEnum | +| main.rs:1067:25:1067:27 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1069:17:1069:20 | Self | main.rs:1065:5:1076:5 | impl MyEnum { ... } | +| main.rs:1069:17:1069:23 | ...::A | main.rs:1060:9:1062:9 | A | +| main.rs:1082:15:1082:15 | T | main.rs:1081:31:1081:31 | T | +| main.rs:1083:15:1083:31 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:1083:22:1083:30 | Box::<...> | {EXTERNAL LOCATION} | struct Box | +| main.rs:1083:26:1083:29 | Self | main.rs:1081:5:1084:5 | struct NonEmptyListStruct | +| main.rs:1087:16:1087:16 | T | main.rs:1086:27:1086:27 | T | +| main.rs:1088:14:1088:14 | T | main.rs:1086:27:1086:27 | T | +| main.rs:1088:17:1088:25 | Box::<...> | {EXTERNAL LOCATION} | struct Box | +| main.rs:1088:21:1088:24 | Self | main.rs:1086:5:1089:5 | enum NonEmptyListEnum | +| main.rs:1092:10:1092:30 | NonEmptyListEnum::<...> | main.rs:1086:5:1089:5 | enum NonEmptyListEnum | +| main.rs:1092:27:1092:29 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1093:30:1093:32 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1093:38:1093:41 | Self | main.rs:1086:5:1089:5 | enum NonEmptyListEnum | +| main.rs:1094:17:1094:32 | NonEmptyListEnum | main.rs:1086:5:1089:5 | enum NonEmptyListEnum | +| main.rs:1095:13:1095:16 | Self | main.rs:1091:5:1097:5 | impl NonEmptyListEnum::<...> { ... } | +| main.rs:1095:13:1095:24 | ...::Single | main.rs:1087:9:1087:17 | Single | +| main.rs:1103:13:1103:16 | Copy | {EXTERNAL LOCATION} | trait Copy | +| main.rs:1105:17:1105:17 | T | main.rs:1102:9:1102:9 | T | +| main.rs:1106:16:1106:16 | T | main.rs:1102:9:1102:9 | T | +| main.rs:1106:23:1106:26 | Self | main.rs:1099:5:1107:5 | union NonEmptyListUnion | +| main.rs:1112:9:1112:13 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:1112:9:1112:27 | ...::const_static | main.rs:1110:1:1154:1 | mod const_static | +| main.rs:1114:27:1114:29 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1116:29:1116:31 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1119:17:1119:26 | CONST_ITEM | main.rs:1114:5:1114:35 | const CONST_ITEM | +| main.rs:1120:17:1120:27 | STATIC_ITEM | main.rs:1116:5:1116:37 | static STATIC_ITEM | +| main.rs:1121:17:1121:28 | const_static | main.rs:1110:1:1154:1 | mod const_static | +| main.rs:1121:17:1121:40 | ...::CONST_ITEM | main.rs:1114:5:1114:35 | const CONST_ITEM | +| main.rs:1122:17:1122:28 | const_static | main.rs:1110:1:1154:1 | mod const_static | +| main.rs:1122:17:1122:41 | ...::STATIC_ITEM | main.rs:1116:5:1116:37 | static STATIC_ITEM | +| main.rs:1123:17:1123:27 | CONST_ALIAS | main.rs:1126:9:1127:13 | const CONST_ALIAS | +| main.rs:1124:17:1124:28 | STATIC_ALIAS | main.rs:1127:15:1129:13 | static STATIC_ALIAS | +| main.rs:1126:28:1126:30 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1126:34:1126:43 | CONST_ITEM | main.rs:1114:5:1114:35 | const CONST_ITEM | +| main.rs:1128:30:1128:32 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1128:36:1128:46 | STATIC_ITEM | main.rs:1116:5:1116:37 | static STATIC_ITEM | +| main.rs:1131:17:1131:27 | CONST_ALIAS | main.rs:1126:9:1127:13 | const CONST_ALIAS | +| main.rs:1132:17:1132:28 | STATIC_ALIAS | main.rs:1127:15:1129:13 | static STATIC_ALIAS | +| main.rs:1135:32:1135:34 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1135:38:1135:47 | CONST_ITEM | main.rs:1114:5:1114:35 | const CONST_ITEM | +| main.rs:1137:34:1137:36 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1137:40:1137:50 | STATIC_ITEM | main.rs:1116:5:1116:37 | static STATIC_ITEM | +| main.rs:1140:21:1140:31 | CONST_ALIAS | main.rs:1135:13:1136:17 | const CONST_ALIAS | +| main.rs:1141:21:1141:32 | STATIC_ALIAS | main.rs:1136:19:1138:17 | static STATIC_ALIAS | +| main.rs:1145:32:1145:34 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1145:38:1145:47 | CONST_ITEM | main.rs:1114:5:1114:35 | const CONST_ITEM | +| main.rs:1147:34:1147:36 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:1147:40:1147:50 | STATIC_ITEM | main.rs:1116:5:1116:37 | static STATIC_ITEM | +| main.rs:1150:21:1150:31 | CONST_ALIAS | main.rs:1145:13:1146:17 | const CONST_ALIAS | +| main.rs:1151:21:1151:32 | STATIC_ALIAS | main.rs:1146:19:1148:17 | static STATIC_ALIAS | +| main.rs:1157:5:1157:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:1157:5:1157:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:1157:5:1157:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:1157:5:1157:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:1157:5:1157:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:1158:5:1158:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:1158:5:1158:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:1159:5:1159:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:1159:5:1159:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:1159:5:1159:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:1159:5:1159:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:1160:5:1160:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:1161:5:1161:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:1162:5:1162:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:1162:5:1162:12 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:1163:5:1163:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:1163:5:1163:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:1163:5:1163:13 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:1164:5:1164:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:1164:5:1164:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:1164:5:1164:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 | +| main.rs:1164:5:1164:17 | ...::h | main.rs:37:27:41:13 | fn h | +| main.rs:1165:5:1165:6 | m4 | main.rs:46:1:53:1 | mod m4 | +| main.rs:1165:5:1165:9 | ...::i | main.rs:49:5:52:5 | fn i | +| main.rs:1166:5:1166:5 | h | main.rs:57:1:76:1 | fn h | +| main.rs:1167:5:1167:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:1168:5:1168:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:1169:5:1169:5 | j | main.rs:104:1:108:1 | fn j | +| main.rs:1170:5:1170:6 | m6 | main.rs:116:1:128:1 | mod m6 | +| main.rs:1170:5:1170:9 | ...::g | main.rs:121:5:127:5 | fn g | +| main.rs:1171:5:1171:6 | m7 | main.rs:130:1:149:1 | mod m7 | +| main.rs:1171:5:1171:9 | ...::f | main.rs:141:5:148:5 | fn f | +| main.rs:1172:5:1172:6 | m8 | main.rs:151:1:205:1 | mod m8 | +| main.rs:1172:5:1172:9 | ...::g | main.rs:189:5:204:5 | fn g | +| main.rs:1173:5:1173:6 | m9 | main.rs:207:1:215:1 | mod m9 | +| main.rs:1173:5:1173:9 | ...::f | main.rs:210:5:214:5 | fn f | +| main.rs:1174:5:1174:7 | m11 | main.rs:238:1:275:1 | mod m11 | +| main.rs:1174:5:1174:10 | ...::f | main.rs:243:5:246:5 | fn f | +| main.rs:1175:5:1175:7 | m15 | main.rs:306:1:375:1 | mod m15 | +| main.rs:1175:5:1175:10 | ...::f | main.rs:362:5:374:5 | fn f | +| main.rs:1176:5:1176:7 | m16 | main.rs:377:1:575:1 | mod m16 | +| main.rs:1176:5:1176:10 | ...::f | main.rs:447:5:471:5 | fn f | +| main.rs:1177:5:1177:20 | trait_visibility | main.rs:577:1:634:1 | mod trait_visibility | +| main.rs:1177:5:1177:23 | ...::f | main.rs:604:5:633:5 | fn f | +| main.rs:1178:5:1178:7 | m17 | main.rs:636:1:666:1 | mod m17 | +| main.rs:1178:5:1178:10 | ...::f | main.rs:660:5:665:5 | fn f | +| main.rs:1179:5:1179:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:1179:5:1179:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:1180:5:1180:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:1180:5:1180:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:1181:5:1181:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | +| main.rs:1181:5:1181:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:1182:5:1182:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:1183:5:1183:12 | my_alias | main.rs:1:1:1:7 | mod my | +| main.rs:1183:5:1183:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:1184:5:1184:7 | m18 | main.rs:668:1:686:1 | mod m18 | +| main.rs:1184:5:1184:12 | ...::m19 | main.rs:673:5:685:5 | mod m19 | +| main.rs:1184:5:1184:17 | ...::m20 | main.rs:678:9:684:9 | mod m20 | +| main.rs:1184:5:1184:20 | ...::g | main.rs:679:13:683:13 | fn g | +| main.rs:1185:5:1185:7 | m23 | main.rs:724:1:749:1 | mod m23 | +| main.rs:1185:5:1185:10 | ...::f | main.rs:744:5:748:5 | fn f | +| main.rs:1186:5:1186:7 | m24 | main.rs:751:1:819:1 | mod m24 | +| main.rs:1186:5:1186:10 | ...::f | main.rs:805:5:818:5 | fn f | +| main.rs:1187:5:1187:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:1187:5:1187:11 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:1188:5:1188:13 | z_changed | main.rs:824:1:824:9 | fn z_changed | +| main.rs:1189:5:1189:11 | AStruct | main.rs:826:1:826:17 | struct AStruct | +| main.rs:1189:5:1189:22 | ...::z_on_type | main.rs:830:5:830:17 | fn z_on_type | +| main.rs:1190:5:1190:11 | AStruct | main.rs:826:1:826:17 | struct AStruct | +| main.rs:1191:5:1191:29 | impl_with_attribute_macro | main.rs:969:1:988:1 | mod impl_with_attribute_macro | +| main.rs:1191:5:1191:35 | ...::test | main.rs:984:5:987:5 | fn test | +| main.rs:1192:5:1192:12 | patterns | main.rs:990:1:1031:1 | mod patterns | +| main.rs:1192:5:1192:18 | ...::test | main.rs:991:5:1005:5 | fn test | | my2/mod.rs:4:5:4:11 | println | {EXTERNAL LOCATION} | MacroRules | | my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | @@ -711,7 +722,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:57:1:76:1 | fn h | | my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | -| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:1184:2 | SourceFile | +| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:1193:2 | SourceFile | | my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index a4a779dcb69c..7dc23f9976a5 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -1,5 +1,4 @@ multipleResolvedTargets | main.rs:2240:9:2240:31 | ... .my_add(...) | | main.rs:2242:9:2242:29 | ... .my_add(...) | -| main.rs:2757:13:2757:17 | x.f() | | regressions.rs:179:17:179:27 | ... + ... | diff --git a/rust/ql/test/library-tests/type-inference/closure.rs b/rust/ql/test/library-tests/type-inference/closure.rs index 635b169bf96b..0c28c057d28a 100644 --- a/rust/ql/test/library-tests/type-inference/closure.rs +++ b/rust/ql/test/library-tests/type-inference/closure.rs @@ -28,6 +28,14 @@ mod simple_closures { let id2 = |b| b; let arg = Default::default(); // $ target=default type=arg:bool let _b2: bool = id2(arg); // $ certainType=_b2:bool + + // The parameter type of `f1` is inferred from the argument. + let f1 = |x| (x, false); // $ type=x@Option:i32 + let _r = f1(Some(0)); // $ type=_r@(T_2).Option:i32 + + // The return type of `f2` is inferred from the type of the call expression. + let f2 = |x| (x, false); // $ type=x@Option:i32 + let _r: Option = f2(Default::default()).0; // $ fieldof=Tuple2 target=default } } @@ -64,7 +72,7 @@ mod fn_once_trait { let _r = apply(f, true); // $ target=apply type=_r:i64 let f = |x| x + 1; // $ type=x:i64 $ MISSING: target=add - let _r2 = apply_two(f); // $ target=apply_two certainType=_r2:i64 + let _r2 = apply_two(f); // $ target=apply_two type=_r2:i64 } } @@ -101,7 +109,7 @@ mod fn_mut_trait { let _r = apply(f, true); // $ target=apply type=_r:i64 let f = |x| x + 1; // $ type=x:i64 $ MISSING: target=add - let _r2 = apply_two(f); // $ target=apply_two certainType=_r2:i64 + let _r2 = apply_two(f); // $ target=apply_two type=_r2:i64 } } @@ -138,7 +146,7 @@ mod fn_trait { let _r = apply(f, true); // $ target=apply type=_r:i64 let f = |x| x + 1; // $ type=x:i64 $ MISSING: target=add - let _r2 = apply_two(f); // $ target=apply_two certainType=_r2:i64 + let _r2 = apply_two(f); // $ target=apply_two type=_r2:i64 } } diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs index 99886987d995..71a0a15b6b8f 100644 --- a/rust/ql/test/library-tests/type-inference/dereference.rs +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -141,7 +141,7 @@ mod implicit_deref_coercion_cycle { #[rustfmt::skip] pub fn test() { - let mut key_to_key = HashMap::<&Key, &Key>::new(); // $ target=new + let mut key_to_key = HashMap::<_, &Key>::new(); // $ target=new let mut key = &Key {}; // Initialize key2 to a reference if let Some(ref_key) = key_to_key.get(key) { // $ target=get // Below `ref_key` is implicitly dereferenced from `&&Key` to `&Key` diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 392380df0f77..006835b89188 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1085,7 +1085,7 @@ mod option_methods { struct S; pub fn f() { - let x1 = MyOption::::new(); // $ certainType=x1@MyOption:S target=new + let x1 = MyOption::::new(); // $ type=x1@MyOption:S target=new println!("{:?}", x1); let mut x2 = MyOption::new(); // $ target=new @@ -1412,7 +1412,7 @@ mod builtins { impl MyTrait for [T; N] { fn my_method(&self) -> &T { - self.get(0).unwrap() // $ MISSING: target=get target=unwrap + self.get(0).unwrap() // $ target=get target=unwrap } fn my_func() -> T { @@ -1970,7 +1970,7 @@ mod impl_trait { impl MyTrait for S3 { fn get_a(&self) -> T { let S3(t) = self; - t.clone() + t.clone() // $ MISSING: target=clone type=t@&:T (we do not currently handle complex "binding modes") } } @@ -2337,29 +2337,29 @@ mod loops { // for loops with containers - let vals3 = vec![1, 2, 3]; // $ type=vals3:Vec $ MISSING: type=vals3@Vec:i32 - for i in vals3 {} // $ MISSING: type=i:i32 + let vals3 = vec![1, 2, 3]; // $ type=vals3:Vec type=vals3@Vec:i32 + for i in vals3 {} // $ type=i:i32 - let vals4a: Vec = [1u16, 2, 3].to_vec(); // $ certainType=vals4a@Vec:u16 + let vals4a = [1u16, 2, 3].to_vec(); // $ type=vals4a@Vec:u16 target=to_vec for u in vals4a {} // $ type=u:u16 - let vals4b = [1u16, 2, 3].to_vec(); // $ MISSING: type=vals4b:Vec type=vals4b@Vec:u16 - for u in vals4b {} // $ MISSING: type=u:u16 + let vals4b = [1u16, 2, 3].to_vec(); // $ type=vals4b@Vec:u16 target=to_vec + for u in vals4b {} // $ type=u:u16 let vals5 = Vec::from([1u32, 2, 3]); // $ target=from type=vals5@Vec:u32 for u in vals5 {} // $ type=u:u32 - let vals6: Vec<&u64> = [1u64, 2, 3].iter().collect(); // $ certainType=vals6@Vec.&:u64 + let vals6: Vec<&u64> = [1u64, 2, 3].iter().collect(); // $ certainType=vals6@Vec.&:u64 target=iter target=collect for u in vals6 {} // $ type=u@&:u64 let mut vals7 = Vec::new(); // $ target=new type=vals7@Vec:u8 vals7.push(1u8); // $ target=push for u in vals7 {} // $ type=u:u8 - let matrix1 = vec![vec![1, 2], vec![3, 4]]; // $ type=matrix1:Vec $ MISSING: type=matrix1@Vec:Vec type=matrix1@Vec.Vec:i32 + let matrix1 = vec![vec![1, 2], vec![3, 4]]; // $ type=matrix1:Vec type=matrix1@Vec:Vec type=matrix1@Vec.Vec:i32 #[rustfmt::skip] - let _ = for row in matrix1 { // $ MISSING: type=row:Vec type=row@Vec:i32 - for cell in row { // $ MISSING: type=cell:i32 + let _ = for row in matrix1 { // $ type=row:Vec type=row@Vec:i32 + for cell in row { // $ type=cell:i32 } }; @@ -2416,10 +2416,10 @@ mod explicit_type_args { pub fn f() { let x1: Option> = S1::assoc_fun(); // $ certainType=x1@Option.S1:S2 target=assoc_fun - let x2 = S1::::assoc_fun(); // $ certainType=x2@Option.S1:S2 target=assoc_fun - let x3 = S3::assoc_fun(); // $ certainType=x3@Option.S1:S2 target=assoc_fun - let x4 = S1::::method(S1::default()); // $ target=method target=default certainType=x4@S1:S2 - let x5 = S3::method(S1::default()); // $ target=method target=default certainType=x5@S1:S2 + let x2 = S1::::assoc_fun(); // $ type=x2@Option.S1:S2 target=assoc_fun + let x3 = S3::assoc_fun(); // $ type=x3@Option.S1:S2 target=assoc_fun + let x4 = S1::::method(S1::default()); // $ target=method target=default type=x4@S1:S2 + let x5 = S3::method(S1::default()); // $ target=method target=default type=x5@S1:S2 let x6 = S4::(Default::default()); // $ type=x6@S4:S2 target=default let x7 = S4(S2); // $ type=x7@S4:S2 let x8 = S4(0); // $ type=x8@S4:i32 @@ -2434,8 +2434,8 @@ mod explicit_type_args { { field: S2::default(), // $ target=default }; - let x14 = foo::(Default::default()); // $ certainType=x14:i32 target=default target=foo - let x15 = S1::::default(); // $ certainType=x15@S1:S2 target=default + let x14 = foo::(Default::default()); // $ type=x14:i32 target=default target=foo + let x15 = S1::::default(); // $ type=x15@S1:S2 target=default } } @@ -2451,8 +2451,8 @@ mod tuples { } pub fn f() { - let a = S1::get_pair(); // $ target=get_pair certainType=a:(T_2) - let mut b = S1::get_pair(); // $ target=get_pair certainType=b:(T_2) + let a = S1::get_pair(); // $ target=get_pair type=a:(T_2) + let mut b = S1::get_pair(); // $ target=get_pair type=b:(T_2) let (c, d) = S1::get_pair(); // $ target=get_pair type=c:S1 type=d:S1 let (mut e, f) = S1::get_pair(); // $ target=get_pair type=e:S1 type=f:S1 let (mut g, mut h) = S1::get_pair(); // $ target=get_pair type=g:S1 type=h:S1 @@ -2550,11 +2550,11 @@ pub mod path_buf { } pub fn f() { - let path1 = Path::new(); // $ target=new certainType=path1:Path + let path1 = Path::new(); // $ target=new type=path1:Path let path2 = path1.canonicalize(); // $ target=canonicalize let path3 = path2.unwrap(); // $ target=unwrap type=path3:PathBuf - let pathbuf1 = PathBuf::new(); // $ target=new certainType=pathbuf1:PathBuf + let pathbuf1 = PathBuf::new(); // $ target=new type=pathbuf1:PathBuf let pathbuf2 = pathbuf1.canonicalize(); // $ target=canonicalize let pathbuf3 = pathbuf2.unwrap(); // $ target=unwrap type=pathbuf3:PathBuf } @@ -2754,7 +2754,7 @@ mod literal_overlap { pub fn f() -> usize { let mut x = 0; - x = x.f(); // $ target=usizef $ SPURIOUS: target=i32f + x = x.f(); // $ MISSING: target=usizef $ SPURIOUS: target=i32f x } @@ -2800,6 +2800,41 @@ mod arg_trait_bounds { } } +fn empty_array() { + let arr1: [i32; 0] = []; // $ type=arr1@[;]:i32 + let arr2 = [true; 0]; // $ type=arr2@[;]:bool + + let arr3 = []; // $ type=arr3@[;]:i32 + + fn pin_array(arr: [T; 0], x: T) {} + pin_array(arr3, 1); // $ target=pin_array +} + +mod contextual_bound { + #[derive(Default)] + struct S(T); + struct MyThingA(A); + struct MyThingB(B); + + trait MyTrait {} + + impl MyTrait for MyThingA {} + + impl MyTrait<[T; 1]> for MyThingB {} + + fn bar>(x: T1, y: Option) {} + + fn test_bar() { + let x = S(0); + let y = MyThingA(Default::default()); // $ type=y@MyThingA.S:i32 target=default + bar(x, Some(y)); // $ target=bar + + let x = S(0); + let z = MyThingB(Default::default()); // $ type=z@MyThingB.S:i32 target=default + bar([x], Some(z)); // $ target=bar + } +} + fn main() { field_access::f(); // $ target=f method_impl::f(); // $ target=f @@ -2835,4 +2870,5 @@ fn main() { dyn_type::test(); // $ target=test if_expr::f(true); // $ target=f local_function::f(); // $ target=f + empty_array(); // $ target=empty_array } diff --git a/rust/ql/test/library-tests/type-inference/overloading.rs b/rust/ql/test/library-tests/type-inference/overloading.rs index 06353a12c8f2..2c442db4afdd 100644 --- a/rust/ql/test/library-tests/type-inference/overloading.rs +++ b/rust/ql/test/library-tests/type-inference/overloading.rs @@ -509,7 +509,7 @@ mod trait_bound_impl_overlap { fn test() { let x = S(0); - let y = call_f(x); // $ target=call_f type=y:i32 + let y = call_f(x); // $ target=call_f $ MISSING: type=y:i32 (we currently do not detect that contextual inference is needed) let z: i32 = y; let x = S(0); diff --git a/rust/ql/test/library-tests/type-inference/pattern_matching.rs b/rust/ql/test/library-tests/type-inference/pattern_matching.rs index bc85b0ee96ff..b00dfc95212d 100755 --- a/rust/ql/test/library-tests/type-inference/pattern_matching.rs +++ b/rust/ql/test/library-tests/type-inference/pattern_matching.rs @@ -779,13 +779,13 @@ pub fn patterns_in_function_parameters() { // Call the functions to use them let point = Point { x: 5, y: 10 }; - let extracted = extract_point(point); // $ target=extract_point certainType=extracted@(T_2):i32 certainType=extracted@(T_2):i32 + let extracted = extract_point(point); // $ target=extract_point type=extracted@(T_2):i32 type=extracted@(T_2):i32 let color = Color(200, 100, 50); - let red = extract_color(color); // $ target=extract_color certainType=red:u8 + let red = extract_color(color); // $ target=extract_color type=red:u8 let tuple = (42i32, 3.14f64, true); - let tuple_extracted = extract_tuple(tuple); // $ target=extract_tuple certainType=tuple_extracted@(T_2):i32 certainType=tuple_extracted@(T_2):bool + let tuple_extracted = extract_tuple(tuple); // $ target=extract_tuple type=tuple_extracted@(T_2):i32 type=tuple_extracted@(T_2):bool } #[rustfmt::skip] diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 20f20e21861c..b519e18357b3 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1,7 +1,6 @@ inferCertainType | associated_types.rs:5:15:5:18 | SelfParam | | associated_types.rs:1:1:2:21 | Wrapper | | associated_types.rs:5:15:5:18 | SelfParam | A | associated_types.rs:4:6:4:6 | A | -| associated_types.rs:5:26:7:5 | { ... } | | associated_types.rs:4:6:4:6 | A | | associated_types.rs:6:9:6:12 | self | | associated_types.rs:1:1:2:21 | Wrapper | | associated_types.rs:6:9:6:12 | self | A | associated_types.rs:4:6:4:6 | A | | associated_types.rs:23:12:23:16 | SelfParam | | {EXTERNAL LOCATION} | & | @@ -12,14 +11,12 @@ inferCertainType | associated_types.rs:26:37:26:38 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:29:43:29:46 | item | | {EXTERNAL LOCATION} | & | | associated_types.rs:29:43:29:46 | item | TRef | associated_types.rs:29:11:29:40 | T | -| associated_types.rs:29:58:31:1 | { ... } | | associated_types.rs:29:8:29:8 | O | | associated_types.rs:30:5:30:8 | item | | {EXTERNAL LOCATION} | & | | associated_types.rs:30:5:30:8 | item | TRef | associated_types.rs:29:11:29:40 | T | | associated_types.rs:37:20:37:24 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:37:20:37:24 | SelfParam | TRef | associated_types.rs:33:1:38:1 | Self [trait AnotherGet] | | associated_types.rs:44:12:44:16 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:44:12:44:16 | SelfParam | TRef | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:44:35:46:5 | { ... } | | associated_types.rs:16:1:17:10 | S3 | | associated_types.rs:53:20:53:24 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:53:20:53:24 | SelfParam | TRef | associated_types.rs:10:1:11:9 | S | | associated_types.rs:53:50:55:5 | { ... } | | {EXTERNAL LOCATION} | bool | @@ -27,7 +24,6 @@ inferCertainType | associated_types.rs:62:12:62:16 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:62:12:62:16 | SelfParam | TRef | associated_types.rs:1:1:2:21 | Wrapper | | associated_types.rs:62:12:62:16 | SelfParam | TRef.A | associated_types.rs:58:6:58:12 | T | -| associated_types.rs:62:35:64:5 | { ... } | | associated_types.rs:58:6:58:12 | T | | associated_types.rs:63:9:63:12 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:63:9:63:12 | self | TRef | associated_types.rs:1:1:2:21 | Wrapper | | associated_types.rs:63:9:63:12 | self | TRef.A | associated_types.rs:58:6:58:12 | T | @@ -43,30 +39,30 @@ inferCertainType | associated_types.rs:81:9:81:11 | 'a' | | {EXTERNAL LOCATION} | char | | associated_types.rs:92:15:92:18 | SelfParam | | associated_types.rs:88:5:103:5 | Self [trait MyTrait] | | associated_types.rs:94:15:94:18 | SelfParam | | associated_types.rs:88:5:103:5 | Self [trait MyTrait] | -| associated_types.rs:98:9:102:9 | { ... } | | associated_types.rs:89:9:89:28 | AssociatedType[MyTrait] | | associated_types.rs:99:13:99:16 | self | | associated_types.rs:88:5:103:5 | Self [trait MyTrait] | | associated_types.rs:109:15:109:18 | SelfParam | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:109:45:111:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | | associated_types.rs:118:15:118:18 | SelfParam | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:118:45:120:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:118:45:120:9 | { ... } | A | associated_types.rs:13:1:14:10 | S2 | | associated_types.rs:119:21:119:24 | self | | associated_types.rs:13:1:14:10 | S2 | | associated_types.rs:123:19:137:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:126:9:126:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | associated_types.rs:126:18:126:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | associated_types.rs:126:18:126:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:126:18:126:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | associated_types.rs:126:18:126:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:126:18:126:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:131:9:131:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | associated_types.rs:131:18:131:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | associated_types.rs:131:18:131:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:131:18:131:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | associated_types.rs:131:18:131:26 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:131:18:131:26 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:134:9:134:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | associated_types.rs:134:18:134:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | associated_types.rs:134:18:134:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:134:18:134:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | associated_types.rs:134:18:134:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:134:18:134:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:136:9:136:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | associated_types.rs:136:18:136:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | associated_types.rs:136:18:136:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:136:18:136:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:136:18:136:32 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:136:18:136:32 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:144:9:144:9 | a | | associated_types.rs:16:1:17:10 | S3 | | associated_types.rs:145:9:145:9 | b | | {EXTERNAL LOCATION} | i32 | @@ -84,23 +80,18 @@ inferCertainType | associated_types.rs:173:17:173:21 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:173:17:173:21 | SelfParam | TRef | associated_types.rs:67:1:67:23 | Odd | | associated_types.rs:173:17:173:21 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:173:52:176:9 | { ... } | | {EXTERNAL LOCATION} | bool | | associated_types.rs:181:17:181:21 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:181:17:181:21 | SelfParam | TRef | associated_types.rs:67:1:67:23 | Odd | | associated_types.rs:181:17:181:21 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | bool | -| associated_types.rs:181:52:184:9 | { ... } | | {EXTERNAL LOCATION} | char | | associated_types.rs:187:19:192:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:188:9:188:34 | using_as(...) | | {EXTERNAL LOCATION} | () | | associated_types.rs:188:25:188:28 | true | | {EXTERNAL LOCATION} | bool | | associated_types.rs:188:31:188:33 | 'a' | | {EXTERNAL LOCATION} | char | | associated_types.rs:190:22:190:26 | 42i32 | | {EXTERNAL LOCATION} | i32 | | associated_types.rs:191:22:191:25 | true | | {EXTERNAL LOCATION} | bool | | associated_types.rs:206:20:206:20 | t | | associated_types.rs:204:17:204:17 | T | | associated_types.rs:211:20:211:20 | t | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:211:45:217:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | associated_types.rs:212:16:212:16 | t | | {EXTERNAL LOCATION} | bool | | associated_types.rs:222:20:222:20 | t | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:222:44:224:9 | { ... } | | {EXTERNAL LOCATION} | bool | | associated_types.rs:223:13:223:13 | t | | {EXTERNAL LOCATION} | i32 | | associated_types.rs:229:23:229:27 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:229:23:229:27 | SelfParam | TRef | associated_types.rs:10:1:11:9 | S | @@ -109,22 +100,17 @@ inferCertainType | associated_types.rs:237:19:241:5 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:239:28:239:31 | true | | {EXTERNAL LOCATION} | bool | | associated_types.rs:248:30:248:34 | thing | | associated_types.rs:248:19:248:27 | T | -| associated_types.rs:248:65:250:5 | { ... } | | associated_types.rs:248:19:248:27 | T::Output[GetSet] | | associated_types.rs:249:9:249:13 | thing | | associated_types.rs:248:19:248:27 | T | | associated_types.rs:252:33:252:37 | thing | | associated_types.rs:252:22:252:30 | T | -| associated_types.rs:252:56:254:5 | { ... } | | associated_types.rs:252:22:252:30 | T::Output[GetSet] | | associated_types.rs:253:9:253:13 | thing | | associated_types.rs:252:22:252:30 | T | | associated_types.rs:256:48:256:52 | thing | | associated_types.rs:256:33:256:45 | T | | associated_types.rs:256:91:261:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| associated_types.rs:256:91:261:5 | { ... } | T0 | associated_types.rs:256:33:256:45 | T::Output[GetSet] | -| associated_types.rs:256:91:261:5 | { ... } | T1 | associated_types.rs:256:33:256:45 | T::AnotherOutput[AnotherGet] | | associated_types.rs:257:9:260:9 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | associated_types.rs:258:13:258:17 | thing | | associated_types.rs:256:33:256:45 | T | | associated_types.rs:259:13:259:17 | thing | | associated_types.rs:256:33:256:45 | T | | associated_types.rs:268:20:268:24 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:268:20:268:24 | SelfParam | TRef | associated_types.rs:1:1:2:21 | Wrapper | | associated_types.rs:268:20:268:24 | SelfParam | TRef.A | associated_types.rs:264:10:264:11 | TI | -| associated_types.rs:268:41:270:9 | { ... } | | associated_types.rs:264:10:264:11 | TI::Output[GetSet] | | associated_types.rs:269:13:269:16 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:269:13:269:16 | self | TRef | associated_types.rs:1:1:2:21 | Wrapper | | associated_types.rs:269:13:269:16 | self | TRef.A | associated_types.rs:264:10:264:11 | TI | @@ -134,7 +120,6 @@ inferCertainType | associated_types.rs:286:21:286:25 | SelfParam | TRef | associated_types.rs:282:5:287:5 | Self [trait GetSetWrap] | | associated_types.rs:293:21:293:25 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:293:21:293:25 | SelfParam | TRef | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:293:43:295:9 | { ... } | | associated_types.rs:10:1:11:9 | S | | associated_types.rs:303:21:303:25 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:303:21:303:25 | SelfParam | TRef | associated_types.rs:1:1:2:21 | Wrapper | | associated_types.rs:303:21:303:25 | SelfParam | TRef.A | associated_types.rs:299:10:299:11 | TI | @@ -143,7 +128,6 @@ inferCertainType | associated_types.rs:304:13:304:16 | self | TRef.A | associated_types.rs:299:10:299:11 | TI | | associated_types.rs:308:19:322:5 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:311:13:314:9 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| associated_types.rs:314:13:314:39 | tp_assoc_from_supertrait(...) | | {EXTERNAL LOCATION} | (T_2) | | associated_types.rs:329:26:329:26 | x | | associated_types.rs:329:23:329:23 | T | | associated_types.rs:332:5:334:5 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:333:18:333:18 | x | | associated_types.rs:329:23:329:23 | T | @@ -151,12 +135,14 @@ inferCertainType | associated_types.rs:340:5:344:5 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:341:19:341:19 | x | | associated_types.rs:337:21:337:21 | T | | associated_types.rs:342:23:342:24 | &x | | {EXTERNAL LOCATION} | & | +| associated_types.rs:342:23:342:24 | &x | TRef | associated_types.rs:337:21:337:21 | T | | associated_types.rs:342:24:342:24 | x | | associated_types.rs:337:21:337:21 | T | | associated_types.rs:343:18:343:18 | x | | associated_types.rs:337:21:337:21 | T | | associated_types.rs:347:23:347:23 | x | | associated_types.rs:347:20:347:20 | T | | associated_types.rs:351:5:355:5 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:352:19:352:19 | x | | associated_types.rs:347:20:347:20 | T | | associated_types.rs:353:23:353:24 | &x | | {EXTERNAL LOCATION} | & | +| associated_types.rs:353:23:353:24 | &x | TRef | associated_types.rs:347:20:347:20 | T | | associated_types.rs:353:24:353:24 | x | | associated_types.rs:347:20:347:20 | T | | associated_types.rs:354:18:354:18 | x | | associated_types.rs:347:20:347:20 | T | | associated_types.rs:361:17:361:21 | SelfParam | | {EXTERNAL LOCATION} | & | @@ -172,7 +158,6 @@ inferCertainType | associated_types.rs:384:23:384:27 | SelfParam | TRef | associated_types.rs:377:5:388:5 | Self [trait MyTraitAssoc2] | | associated_types.rs:384:30:384:30 | a | | associated_types.rs:384:20:384:20 | A | | associated_types.rs:384:36:384:36 | b | | associated_types.rs:384:20:384:20 | A | -| associated_types.rs:384:76:387:9 | { ... } | | associated_types.rs:378:9:378:52 | GenericAssociatedType[MyTraitAssoc2] | | associated_types.rs:385:13:385:16 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:385:13:385:16 | self | TRef | associated_types.rs:377:5:388:5 | Self [trait MyTraitAssoc2] | | associated_types.rs:385:22:385:22 | a | | associated_types.rs:384:20:384:20 | A | @@ -182,8 +167,6 @@ inferCertainType | associated_types.rs:395:19:395:23 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:395:19:395:23 | SelfParam | TRef | associated_types.rs:10:1:11:9 | S | | associated_types.rs:395:26:395:26 | a | | associated_types.rs:395:16:395:16 | A | -| associated_types.rs:395:46:397:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:395:46:397:9 | { ... } | A | associated_types.rs:395:16:395:16 | A | | associated_types.rs:396:21:396:21 | a | | associated_types.rs:395:16:395:16 | A | | associated_types.rs:400:19:407:5 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:403:25:403:28 | 1i32 | | {EXTERNAL LOCATION} | i32 | @@ -197,13 +180,10 @@ inferCertainType | associated_types.rs:422:20:422:24 | SelfParam | TRef | associated_types.rs:413:5:423:5 | Self [trait TraitMultipleAssoc] | | associated_types.rs:429:21:429:25 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:429:21:429:25 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:429:34:431:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | | associated_types.rs:433:20:433:24 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:433:20:433:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:433:43:435:9 | { ... } | | associated_types.rs:10:1:11:9 | S | | associated_types.rs:437:20:437:24 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:437:20:437:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:437:43:439:9 | { ... } | | associated_types.rs:13:1:14:10 | S2 | | associated_types.rs:442:19:446:5 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:454:24:454:28 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:454:24:454:28 | SelfParam | TRef | associated_types.rs:452:5:455:5 | Self [trait Subtrait] | @@ -221,7 +201,6 @@ inferCertainType | associated_types.rs:474:16:474:20 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:474:16:474:20 | SelfParam | TRef | associated_types.rs:469:5:469:24 | MyType | | associated_types.rs:474:16:474:20 | SelfParam | TRef.T | associated_types.rs:471:10:471:16 | T | -| associated_types.rs:474:39:476:9 | { ... } | | associated_types.rs:471:10:471:16 | T | | associated_types.rs:475:13:475:16 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:475:13:475:16 | self | TRef | associated_types.rs:469:5:469:24 | MyType | | associated_types.rs:475:13:475:16 | self | TRef.T | associated_types.rs:471:10:471:16 | T | @@ -230,28 +209,25 @@ inferCertainType | associated_types.rs:478:16:478:20 | SelfParam | TRef.T | associated_types.rs:471:10:471:16 | T | | associated_types.rs:478:23:478:30 | _content | | associated_types.rs:471:10:471:16 | T | | associated_types.rs:478:47:480:9 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:479:13:479:43 | MacroExpr | | {EXTERNAL LOCATION} | () | | associated_types.rs:479:22:479:42 | "Inserting content: \\n" | | {EXTERNAL LOCATION} | & | | associated_types.rs:479:22:479:42 | "Inserting content: \\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:479:22:479:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:479:22:479:42 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:479:22:479:42 | { ... } | | {EXTERNAL LOCATION} | () | | associated_types.rs:485:24:485:28 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:485:24:485:28 | SelfParam | TRef | associated_types.rs:469:5:469:24 | MyType | | associated_types.rs:485:24:485:28 | SelfParam | TRef.T | associated_types.rs:483:10:483:16 | T | -| associated_types.rs:485:47:487:9 | { ... } | | associated_types.rs:483:10:483:16 | T | | associated_types.rs:486:15:486:18 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:486:15:486:18 | self | TRef | associated_types.rs:469:5:469:24 | MyType | | associated_types.rs:486:15:486:18 | self | TRef.T | associated_types.rs:483:10:483:16 | T | | associated_types.rs:492:24:492:28 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:492:24:492:28 | SelfParam | TRef | associated_types.rs:67:1:67:23 | Odd | | associated_types.rs:492:24:492:28 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:492:47:495:9 | { ... } | | {EXTERNAL LOCATION} | bool | | associated_types.rs:500:24:500:28 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:500:24:500:28 | SelfParam | TRef | associated_types.rs:67:1:67:23 | Odd | | associated_types.rs:500:24:500:28 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | bool | -| associated_types.rs:500:47:502:9 | { ... } | | {EXTERNAL LOCATION} | char | | associated_types.rs:505:33:505:36 | item | | {EXTERNAL LOCATION} | & | | associated_types.rs:505:33:505:36 | item | TRef | associated_types.rs:505:20:505:30 | T | -| associated_types.rs:505:56:507:5 | { ... } | | associated_types.rs:505:20:505:30 | T::Output[GetSet] | | associated_types.rs:506:9:506:12 | item | | {EXTERNAL LOCATION} | & | | associated_types.rs:506:9:506:12 | item | TRef | associated_types.rs:505:20:505:30 | T | | associated_types.rs:509:35:509:38 | item | | {EXTERNAL LOCATION} | & | @@ -276,9 +252,6 @@ inferCertainType | associated_types.rs:536:16:536:20 | SelfParam | | {EXTERNAL LOCATION} | & | | associated_types.rs:536:16:536:20 | SelfParam | TRef | associated_types.rs:529:5:529:20 | ST | | associated_types.rs:536:16:536:20 | SelfParam | TRef.T | associated_types.rs:531:10:531:21 | Output | -| associated_types.rs:536:39:538:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| associated_types.rs:536:39:538:9 | { ... } | E | associated_types.rs:531:10:531:21 | Output | -| associated_types.rs:536:39:538:9 | { ... } | T | associated_types.rs:531:10:531:21 | Output | | associated_types.rs:537:16:537:19 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:537:16:537:19 | self | TRef | associated_types.rs:529:5:529:20 | ST | | associated_types.rs:537:16:537:19 | self | TRef.T | associated_types.rs:531:10:531:21 | Output | @@ -323,18 +296,9 @@ inferCertainType | associated_types.rs:565:19:565:19 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | | associated_types.rs:565:19:565:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | | associated_types.rs:569:15:578:1 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:570:5:570:48 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:571:5:571:48 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:572:5:572:59 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:573:5:573:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:574:5:574:35 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:575:5:575:37 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:576:5:576:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:577:5:577:46 | ...::test(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:15:18:15:22 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:15:18:15:22 | SelfParam | TRef | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:15:42:17:9 | { ... } | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:15:42:17:9 | { ... } | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:16:13:16:15 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:21:19:21:23 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:21:19:21:23 | SelfParam | TRef | blanket_impl.rs:20:5:22:5 | Self [trait Clone1] | @@ -342,49 +306,54 @@ inferCertainType | blanket_impl.rs:25:22:25:26 | SelfParam | TRef | blanket_impl.rs:24:5:28:5 | Self [trait Duplicatable] | | blanket_impl.rs:32:19:32:23 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:32:19:32:23 | SelfParam | TRef | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:32:34:34:9 | { ... } | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:33:14:33:17 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:33:14:33:17 | self | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:40:22:40:26 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:40:22:40:26 | SelfParam | TRef | blanket_impl.rs:38:10:38:18 | T | -| blanket_impl.rs:40:37:42:9 | { ... } | | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:41:13:41:16 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:41:13:41:16 | self | TRef | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:45:33:60:5 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:47:9:47:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:47:18:47:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:48:18:48:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:48:19:48:21 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:49:9:49:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:49:18:49:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:49:18:49:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:49:18:49:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:51:9:51:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:51:18:51:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:51:18:51:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:51:18:51:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:52:18:52:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:52:19:52:21 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:53:9:53:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:53:18:53:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:53:18:53:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:53:18:53:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:54:32:54:34 | &S1 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:55:9:55:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:55:18:55:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:55:18:55:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:55:18:55:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:57:9:57:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:57:18:57:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:57:18:57:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:57:18:57:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:58:18:58:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:58:19:58:21 | &S2 | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:59:9:59:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:59:18:59:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:59:18:59:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:59:18:59:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:68:24:68:24 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:68:32:68:32 | y | | blanket_impl.rs:67:5:69:5 | Self [trait Trait1] | @@ -396,28 +365,28 @@ inferCertainType | blanket_impl.rs:78:13:78:13 | y | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:84:24:84:24 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:84:32:84:32 | y | | blanket_impl.rs:82:10:82:18 | T | -| blanket_impl.rs:84:49:86:9 | { ... } | | blanket_impl.rs:82:10:82:18 | T | | blanket_impl.rs:85:28:85:28 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:85:31:85:31 | y | | blanket_impl.rs:82:10:82:18 | T | | blanket_impl.rs:89:33:98:5 | { ... } | | {EXTERNAL LOCATION} | () | -| blanket_impl.rs:90:13:90:14 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:90:18:90:39 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:91:9:91:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:91:18:91:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:91:18:91:25 | { ... } | | {EXTERNAL LOCATION} | () | -| blanket_impl.rs:91:20:91:21 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:91:18:91:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:93:9:93:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:93:18:93:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:93:18:93:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:93:18:93:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:95:9:95:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:95:18:95:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:95:18:95:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:95:18:95:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:97:9:97:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:97:18:97:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:97:18:97:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:97:18:97:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:108:22:108:26 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:108:22:108:26 | SelfParam | TRef | blanket_impl.rs:107:5:109:5 | Self [trait Flag] | @@ -425,33 +394,24 @@ inferCertainType | blanket_impl.rs:112:26:112:30 | SelfParam | TRef | blanket_impl.rs:111:5:113:5 | Self [trait TryFlag] | | blanket_impl.rs:119:26:119:30 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:119:26:119:30 | SelfParam | TRef | blanket_impl.rs:115:10:115:11 | Fl | -| blanket_impl.rs:119:49:121:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:119:49:121:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:120:18:120:21 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:120:18:120:21 | self | TRef | blanket_impl.rs:115:10:115:11 | Fl | | blanket_impl.rs:126:32:126:36 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:126:32:126:36 | SelfParam | TRef | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | -| blanket_impl.rs:126:55:128:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:126:55:128:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:127:13:127:16 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:127:13:127:16 | self | TRef | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | | blanket_impl.rs:135:32:135:36 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:135:32:135:36 | SelfParam | TRef | blanket_impl.rs:133:5:136:5 | Self [trait AnotherTryFlag] | | blanket_impl.rs:144:26:144:30 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:144:26:144:30 | SelfParam | TRef | blanket_impl.rs:138:5:140:5 | MyTryFlag | -| blanket_impl.rs:144:49:146:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:144:49:146:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:145:18:145:21 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:145:18:145:21 | self | TRef | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:155:22:155:26 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:155:22:155:26 | SelfParam | TRef | blanket_impl.rs:149:5:151:5 | MyFlag | -| blanket_impl.rs:155:37:157:9 | { ... } | | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:156:13:156:16 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:156:13:156:16 | self | TRef | blanket_impl.rs:149:5:151:5 | MyFlag | | blanket_impl.rs:166:32:166:36 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:166:32:166:36 | SelfParam | TRef | blanket_impl.rs:160:5:162:5 | MyOtherFlag | -| blanket_impl.rs:166:55:168:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:166:55:168:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:167:18:167:21 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:167:18:167:21 | self | TRef | blanket_impl.rs:160:5:162:5 | MyOtherFlag | | blanket_impl.rs:171:15:184:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -478,18 +438,15 @@ inferCertainType | blanket_impl.rs:226:21:226:22 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:231:15:231:18 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:231:15:231:18 | SelfParam | TRef | blanket_impl.rs:229:10:229:27 | T | -| blanket_impl.rs:231:21:233:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:232:13:232:16 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:232:13:232:16 | self | TRef | blanket_impl.rs:229:10:229:27 | T | | blanket_impl.rs:238:15:238:18 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:238:15:238:18 | SelfParam | TRef | {EXTERNAL LOCATION} | & | | blanket_impl.rs:238:15:238:18 | SelfParam | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:238:21:240:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:239:13:239:16 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:239:13:239:16 | self | TRef | {EXTERNAL LOCATION} | & | | blanket_impl.rs:239:13:239:16 | self | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:245:15:245:18 | SelfParam | | blanket_impl.rs:243:10:243:20 | T | -| blanket_impl.rs:245:21:247:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:246:13:246:16 | self | | blanket_impl.rs:243:10:243:20 | T | | blanket_impl.rs:252:15:252:18 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:252:15:252:18 | SelfParam | TRef | blanket_impl.rs:250:10:250:10 | T | @@ -498,7 +455,9 @@ inferCertainType | blanket_impl.rs:257:18:257:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:257:19:257:21 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:258:18:258:23 | (...) | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:18:258:23 | (...) | TRef | {EXTERNAL LOCATION} | & | | blanket_impl.rs:258:19:258:22 | &... | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:19:258:22 | &... | TRef | {EXTERNAL LOCATION} | & | | blanket_impl.rs:258:20:258:22 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:260:18:260:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:260:19:260:21 | &S1 | | {EXTERNAL LOCATION} | & | @@ -512,23 +471,26 @@ inferCertainType | blanket_impl.rs:277:21:277:25 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:277:21:277:25 | SelfParam | TRef | blanket_impl.rs:276:10:276:22 | T | | blanket_impl.rs:277:28:279:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:278:13:278:42 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:278:22:278:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:278:22:278:41 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:278:22:278:41 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:281:24:281:28 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:281:24:281:28 | SelfParam | TRef | blanket_impl.rs:276:10:276:22 | T | | blanket_impl.rs:281:31:281:36 | _query | | blanket_impl.rs:281:21:281:21 | E | | blanket_impl.rs:281:42:283:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:282:13:282:42 | MacroExpr | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | TRef | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:282:22:282:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:282:22:282:41 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:282:22:282:41 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:290:16:300:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:291:13:291:13 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:291:17:291:34 | MySqlConnection {...} | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:293:9:293:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:294:35:294:36 | &c | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:294:35:294:36 | &c | TRef | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:294:36:294:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:296:9:296:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | @@ -537,33 +499,32 @@ inferCertainType | blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:298:35:298:36 | &c | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:298:35:298:36 | &c | TRef | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:298:36:298:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:299:43:299:44 | &c | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:299:43:299:44 | &c | TRef | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:299:44:299:44 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | -| closure.rs:4:19:31:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:4:19:39:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:6:13:6:22 | my_closure | | {EXTERNAL LOCATION} | dyn Fn | | closure.rs:6:13:6:22 | my_closure | dyn(Args) | {EXTERNAL LOCATION} | (T_2) | -| closure.rs:6:13:6:22 | my_closure | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:6:13:6:22 | my_closure | dyn(Args).T1 | {EXTERNAL LOCATION} | bool | | closure.rs:6:26:6:38 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | | closure.rs:6:26:6:38 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_2) | -| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).T1 | {EXTERNAL LOCATION} | bool | -| closure.rs:6:27:6:27 | a | | {EXTERNAL LOCATION} | bool | -| closure.rs:6:30:6:30 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:6:33:6:33 | a | | {EXTERNAL LOCATION} | bool | | closure.rs:6:33:6:38 | ... && ... | | {EXTERNAL LOCATION} | bool | | closure.rs:6:38:6:38 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:8:13:8:13 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:8:22:8:25 | 1i64 | | {EXTERNAL LOCATION} | i64 | | closure.rs:9:13:9:19 | add_one | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:9:13:9:19 | add_one | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:9:23:9:34 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:9:23:9:34 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:9:31:9:34 | 1i64 | | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:24 | add_one | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:10:18:10:24 | add_one | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:10:25:10:27 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:10:25:10:27 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:10:26:10:26 | x | | {EXTERNAL LOCATION} | i64 | @@ -578,330 +539,382 @@ inferCertainType | closure.rs:15:18:15:25 | add_zero | | {EXTERNAL LOCATION} | dyn Fn | | closure.rs:15:18:15:25 | add_zero | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:15:18:15:25 | add_zero | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:15:26:15:28 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:17:13:17:21 | _get_bool | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:17:13:17:21 | _get_bool | dyn(Args) | {EXTERNAL LOCATION} | () | +| closure.rs:17:13:17:21 | _get_bool | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:17:25:21:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:17:25:21:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | () | +| closure.rs:17:25:21:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:24:13:24:14 | id | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:24:13:24:14 | id | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:24:18:24:22 | \|...\| b | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:24:18:24:22 | \|...\| b | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:25:18:25:19 | id | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:25:18:25:19 | id | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:25:20:25:25 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:25:20:25:25 | ArgList | T0 | {EXTERNAL LOCATION} | bool | | closure.rs:25:21:25:24 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:28:13:28:15 | id2 | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:28:13:28:15 | id2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:28:19:28:23 | \|...\| b | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:28:19:28:23 | \|...\| b | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:30:13:30:15 | _b2 | | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:27 | id2 | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:35:44:35:44 | f | | closure.rs:35:20:35:41 | F | -| closure.rs:35:50:37:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:36:23:36:23 | f | | closure.rs:35:20:35:41 | F | -| closure.rs:36:24:36:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:36:24:36:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:36:25:36:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:39:45:39:45 | f | | closure.rs:39:28:39:42 | F | -| closure.rs:39:51:41:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:40:23:40:23 | f | | closure.rs:39:28:39:42 | F | -| closure.rs:40:24:40:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:40:24:40:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:40:25:40:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:43:46:43:46 | f | | closure.rs:43:22:43:43 | F | -| closure.rs:43:52:46:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:45:9:45:9 | f | | closure.rs:43:22:43:43 | F | -| closure.rs:48:39:48:39 | f | | closure.rs:48:20:48:36 | F | -| closure.rs:48:45:48:45 | a | | closure.rs:48:14:48:14 | A | -| closure.rs:48:56:50:5 | { ... } | | closure.rs:48:17:48:17 | B | -| closure.rs:49:9:49:9 | f | | closure.rs:48:20:48:36 | F | -| closure.rs:49:10:49:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:49:10:49:12 | ArgList | T0 | closure.rs:48:14:48:14 | A | -| closure.rs:49:11:49:11 | a | | closure.rs:48:14:48:14 | A | -| closure.rs:52:18:52:18 | f | | closure.rs:52:21:52:43 | impl ... | -| closure.rs:52:53:54:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:53:9:53:9 | f | | closure.rs:52:21:52:43 | impl ... | -| closure.rs:56:15:68:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:57:13:57:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:57:13:57:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:57:13:57:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:57:17:63:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:57:17:63:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:57:17:63:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:57:18:57:18 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:58:16:58:16 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:64:24:64:24 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:64:24:64:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:64:24:64:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:64:27:64:30 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:66:13:66:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:66:17:66:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:67:13:67:15 | _r2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:67:19:67:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:67:29:67:29 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:72:47:72:47 | f | | closure.rs:72:20:72:40 | F | -| closure.rs:72:53:74:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:73:23:73:23 | f | | closure.rs:72:20:72:40 | F | -| closure.rs:73:24:73:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:73:24:73:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:73:25:73:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:76:48:76:48 | f | | closure.rs:76:28:76:41 | F | -| closure.rs:76:54:78:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:77:23:77:23 | f | | closure.rs:76:28:76:41 | F | -| closure.rs:77:24:77:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:77:24:77:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:77:25:77:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:80:49:80:49 | f | | closure.rs:80:22:80:42 | F | -| closure.rs:80:55:83:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:82:9:82:9 | f | | closure.rs:80:22:80:42 | F | -| closure.rs:85:42:85:42 | f | | closure.rs:85:20:85:35 | F | -| closure.rs:85:48:85:48 | a | | closure.rs:85:14:85:14 | A | -| closure.rs:85:59:87:5 | { ... } | | closure.rs:85:17:85:17 | B | -| closure.rs:86:9:86:9 | f | | closure.rs:85:20:85:35 | F | -| closure.rs:86:10:86:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:86:10:86:12 | ArgList | T0 | closure.rs:85:14:85:14 | A | -| closure.rs:86:11:86:11 | a | | closure.rs:85:14:85:14 | A | -| closure.rs:89:22:89:22 | f | | closure.rs:89:25:89:46 | impl ... | -| closure.rs:89:56:91:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:90:9:90:9 | f | | closure.rs:89:25:89:46 | impl ... | -| closure.rs:93:15:105:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:94:13:94:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:94:13:94:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:94:13:94:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:94:17:100:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:94:17:100:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:94:17:100:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:94:18:94:18 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:95:16:95:16 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:101:24:101:24 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:101:24:101:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:101:24:101:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:101:27:101:30 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:103:13:103:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:103:17:103:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:104:13:104:15 | _r2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:104:19:104:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:104:29:104:29 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:109:40:109:40 | f | | closure.rs:109:20:109:37 | F | -| closure.rs:109:46:111:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:110:23:110:23 | f | | closure.rs:109:20:109:37 | F | -| closure.rs:110:24:110:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:110:24:110:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:110:25:110:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:113:41:113:41 | f | | closure.rs:113:28:113:38 | F | -| closure.rs:113:47:115:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:114:23:114:23 | f | | closure.rs:113:28:113:38 | F | -| closure.rs:114:24:114:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:114:24:114:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:114:25:114:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:117:42:117:42 | f | | closure.rs:117:22:117:39 | F | -| closure.rs:117:48:120:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:119:9:119:9 | f | | closure.rs:117:22:117:39 | F | -| closure.rs:122:35:122:35 | f | | closure.rs:122:20:122:32 | F | -| closure.rs:122:41:122:41 | a | | closure.rs:122:14:122:14 | A | -| closure.rs:122:52:124:5 | { ... } | | closure.rs:122:17:122:17 | B | -| closure.rs:123:9:123:9 | f | | closure.rs:122:20:122:32 | F | -| closure.rs:123:10:123:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:123:10:123:12 | ArgList | T0 | closure.rs:122:14:122:14 | A | -| closure.rs:123:11:123:11 | a | | closure.rs:122:14:122:14 | A | -| closure.rs:126:18:126:18 | f | | closure.rs:126:21:126:39 | impl ... | -| closure.rs:126:49:128:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:127:9:127:9 | f | | closure.rs:126:21:126:39 | impl ... | -| closure.rs:130:15:142:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:131:13:131:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:131:13:131:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:131:13:131:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:131:17:137:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:131:17:137:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:131:17:137:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:131:18:131:18 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:132:16:132:16 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:138:24:138:24 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:138:24:138:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:138:24:138:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:138:27:138:30 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:140:13:140:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:140:17:140:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:141:13:141:15 | _r2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:141:19:141:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:141:29:141:29 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:146:54:146:54 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:146:54:146:54 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:146:54:146:54 | f | T | closure.rs:146:26:146:51 | F | -| closure.rs:146:65:146:67 | arg | | closure.rs:146:20:146:20 | A | -| closure.rs:146:78:148:5 | { ... } | | closure.rs:146:23:146:23 | B | -| closure.rs:147:9:147:9 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:147:9:147:9 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:147:9:147:9 | f | T | closure.rs:146:26:146:51 | F | -| closure.rs:147:10:147:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:147:10:147:14 | ArgList | T0 | closure.rs:146:20:146:20 | A | -| closure.rs:147:11:147:13 | arg | | closure.rs:146:20:146:20 | A | -| closure.rs:150:30:150:30 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:150:30:150:30 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:150:30:150:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:150:30:150:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:150:30:150:30 | f | T.dyn(Args).T0 | closure.rs:150:24:150:24 | A | -| closure.rs:150:30:150:30 | f | T.dyn(Output) | closure.rs:150:27:150:27 | B | -| closure.rs:150:58:150:60 | arg | | closure.rs:150:24:150:24 | A | -| closure.rs:150:66:153:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:151:31:151:31 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:151:31:151:31 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:151:31:151:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:151:31:151:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:151:31:151:31 | f | T.dyn(Args).T0 | closure.rs:150:24:150:24 | A | -| closure.rs:151:31:151:31 | f | T.dyn(Output) | closure.rs:150:27:150:27 | B | -| closure.rs:151:34:151:36 | arg | | closure.rs:150:24:150:24 | A | -| closure.rs:152:31:152:53 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| closure.rs:152:31:152:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| closure.rs:152:40:152:52 | \|...\| true | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:152:40:152:52 | \|...\| true | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:152:40:152:52 | \|...\| true | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:152:41:152:41 | _ | | {EXTERNAL LOCATION} | i64 | -| closure.rs:152:49:152:52 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:157:34:157:34 | f | | closure.rs:157:15:157:31 | F | -| closure.rs:157:40:157:40 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:157:55:159:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:158:9:158:9 | f | | closure.rs:157:15:157:31 | F | -| closure.rs:158:10:158:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:158:10:158:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:158:11:158:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:161:15:161:15 | f | | closure.rs:161:18:161:36 | impl ... | -| closure.rs:161:39:161:39 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:161:54:163:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:162:9:162:9 | f | | closure.rs:161:18:161:36 | impl ... | -| closure.rs:162:10:162:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:162:10:162:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:162:11:162:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:165:15:165:15 | f | | {EXTERNAL LOCATION} | & | -| closure.rs:165:15:165:15 | f | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:165:15:165:15 | f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:165:15:165:15 | f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:165:15:165:15 | f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:165:39:165:39 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:165:54:167:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:166:9:166:9 | f | | {EXTERNAL LOCATION} | & | -| closure.rs:166:9:166:9 | f | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:166:9:166:9 | f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:166:9:166:9 | f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:166:9:166:9 | f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:30:25:30:27 | id2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:30:28:30:32 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:33:13:33:14 | f1 | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:33:13:33:14 | f1 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:33:18:33:31 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:33:18:33:31 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:33:22:33:31 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:33:26:33:30 | false | | {EXTERNAL LOCATION} | bool | +| closure.rs:34:18:34:19 | f1 | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:34:18:34:19 | f1 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:34:20:34:28 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:37:13:37:14 | f2 | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:37:13:37:14 | f2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:37:18:37:31 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:37:18:37:31 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:37:22:37:31 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:37:26:37:30 | false | | {EXTERNAL LOCATION} | bool | +| closure.rs:38:13:38:14 | _r | | {EXTERNAL LOCATION} | Option | +| closure.rs:38:13:38:14 | _r | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:38:31:38:32 | f2 | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:38:31:38:32 | f2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:38:33:38:52 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:43:44:43:44 | f | | closure.rs:43:20:43:41 | F | +| closure.rs:43:50:45:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:44:23:44:23 | f | | closure.rs:43:20:43:41 | F | +| closure.rs:44:24:44:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:44:24:44:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:44:25:44:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:47:45:47:45 | f | | closure.rs:47:28:47:42 | F | +| closure.rs:47:51:49:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:48:23:48:23 | f | | closure.rs:47:28:47:42 | F | +| closure.rs:48:24:48:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:48:24:48:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:48:25:48:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:51:46:51:46 | f | | closure.rs:51:22:51:43 | F | +| closure.rs:51:52:54:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:53:9:53:9 | f | | closure.rs:51:22:51:43 | F | +| closure.rs:53:10:53:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:56:39:56:39 | f | | closure.rs:56:20:56:36 | F | +| closure.rs:56:45:56:45 | a | | closure.rs:56:14:56:14 | A | +| closure.rs:57:9:57:9 | f | | closure.rs:56:20:56:36 | F | +| closure.rs:57:10:57:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:57:10:57:12 | ArgList | T0 | closure.rs:56:14:56:14 | A | +| closure.rs:57:11:57:11 | a | | closure.rs:56:14:56:14 | A | +| closure.rs:60:18:60:18 | f | | closure.rs:60:21:60:43 | impl ... | +| closure.rs:61:9:61:9 | f | | closure.rs:60:21:60:43 | impl ... | +| closure.rs:61:10:61:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:64:15:76:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:65:13:65:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:65:13:65:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:65:13:65:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:65:13:65:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:65:17:71:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:65:17:71:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:65:17:71:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:65:17:71:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:65:18:65:18 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:66:16:66:16 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:72:24:72:24 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:72:24:72:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:72:24:72:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:72:24:72:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:72:27:72:30 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:74:13:74:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:74:13:74:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:74:17:74:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:74:17:74:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:75:29:75:29 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:75:29:75:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:80:47:80:47 | f | | closure.rs:80:20:80:40 | F | +| closure.rs:80:53:82:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:81:23:81:23 | f | | closure.rs:80:20:80:40 | F | +| closure.rs:81:24:81:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:81:24:81:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:81:25:81:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:84:48:84:48 | f | | closure.rs:84:28:84:41 | F | +| closure.rs:84:54:86:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:85:23:85:23 | f | | closure.rs:84:28:84:41 | F | +| closure.rs:85:24:85:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:85:24:85:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:85:25:85:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:88:49:88:49 | f | | closure.rs:88:22:88:42 | F | +| closure.rs:88:55:91:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:90:9:90:9 | f | | closure.rs:88:22:88:42 | F | +| closure.rs:90:10:90:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:93:42:93:42 | f | | closure.rs:93:20:93:35 | F | +| closure.rs:93:48:93:48 | a | | closure.rs:93:14:93:14 | A | +| closure.rs:94:9:94:9 | f | | closure.rs:93:20:93:35 | F | +| closure.rs:94:10:94:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:94:10:94:12 | ArgList | T0 | closure.rs:93:14:93:14 | A | +| closure.rs:94:11:94:11 | a | | closure.rs:93:14:93:14 | A | +| closure.rs:97:22:97:22 | f | | closure.rs:97:25:97:46 | impl ... | +| closure.rs:98:9:98:9 | f | | closure.rs:97:25:97:46 | impl ... | +| closure.rs:98:10:98:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:101:15:113:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:102:13:102:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:102:13:102:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:102:13:102:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:102:13:102:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:102:17:108:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:102:17:108:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:102:17:108:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:102:17:108:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:102:18:102:18 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:103:16:103:16 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:109:24:109:24 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:109:24:109:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:109:24:109:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:109:24:109:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:109:27:109:30 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:111:13:111:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:111:13:111:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:111:17:111:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:111:17:111:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:112:29:112:29 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:112:29:112:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:117:40:117:40 | f | | closure.rs:117:20:117:37 | F | +| closure.rs:117:46:119:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:118:23:118:23 | f | | closure.rs:117:20:117:37 | F | +| closure.rs:118:24:118:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:118:24:118:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:118:25:118:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:121:41:121:41 | f | | closure.rs:121:28:121:38 | F | +| closure.rs:121:47:123:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:122:23:122:23 | f | | closure.rs:121:28:121:38 | F | +| closure.rs:122:24:122:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:122:24:122:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:122:25:122:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:125:42:125:42 | f | | closure.rs:125:22:125:39 | F | +| closure.rs:125:48:128:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:127:9:127:9 | f | | closure.rs:125:22:125:39 | F | +| closure.rs:127:10:127:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:130:35:130:35 | f | | closure.rs:130:20:130:32 | F | +| closure.rs:130:41:130:41 | a | | closure.rs:130:14:130:14 | A | +| closure.rs:131:9:131:9 | f | | closure.rs:130:20:130:32 | F | +| closure.rs:131:10:131:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:131:10:131:12 | ArgList | T0 | closure.rs:130:14:130:14 | A | +| closure.rs:131:11:131:11 | a | | closure.rs:130:14:130:14 | A | +| closure.rs:134:18:134:18 | f | | closure.rs:134:21:134:39 | impl ... | +| closure.rs:135:9:135:9 | f | | closure.rs:134:21:134:39 | impl ... | +| closure.rs:135:10:135:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:138:15:150:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:139:13:139:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:139:13:139:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:139:13:139:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:139:13:139:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:139:17:145:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:139:17:145:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:139:17:145:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:139:17:145:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:139:18:139:18 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:140:16:140:16 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:146:24:146:24 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:146:24:146:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:146:24:146:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:146:24:146:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:146:27:146:30 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:148:13:148:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:148:13:148:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:148:17:148:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:148:17:148:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:149:29:149:29 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:149:29:149:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:154:54:154:54 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:154:54:154:54 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:154:54:154:54 | f | T | closure.rs:154:26:154:51 | F | +| closure.rs:154:65:154:67 | arg | | closure.rs:154:20:154:20 | A | +| closure.rs:155:9:155:9 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:155:9:155:9 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:155:9:155:9 | f | T | closure.rs:154:26:154:51 | F | +| closure.rs:155:10:155:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:155:10:155:14 | ArgList | T0 | closure.rs:154:20:154:20 | A | +| closure.rs:155:11:155:13 | arg | | closure.rs:154:20:154:20 | A | +| closure.rs:158:30:158:30 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:158:30:158:30 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:158:30:158:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:158:30:158:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:158:30:158:30 | f | T.dyn(Args).T0 | closure.rs:158:24:158:24 | A | +| closure.rs:158:30:158:30 | f | T.dyn(Output) | closure.rs:158:27:158:27 | B | +| closure.rs:158:58:158:60 | arg | | closure.rs:158:24:158:24 | A | +| closure.rs:158:66:161:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:159:31:159:31 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:159:31:159:31 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:159:31:159:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:159:31:159:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:159:31:159:31 | f | T.dyn(Args).T0 | closure.rs:158:24:158:24 | A | +| closure.rs:159:31:159:31 | f | T.dyn(Output) | closure.rs:158:27:158:27 | B | +| closure.rs:159:34:159:36 | arg | | closure.rs:158:24:158:24 | A | +| closure.rs:160:40:160:52 | \|...\| true | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:160:40:160:52 | \|...\| true | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:160:40:160:52 | \|...\| true | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:160:41:160:41 | _ | | {EXTERNAL LOCATION} | i64 | +| closure.rs:160:49:160:52 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:165:34:165:34 | f | | closure.rs:165:15:165:31 | F | +| closure.rs:165:40:165:40 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:166:9:166:9 | f | | closure.rs:165:15:165:31 | F | | closure.rs:166:10:166:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:166:10:166:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:166:11:166:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:169:41:169:41 | f | | closure.rs:169:15:169:34 | F | -| closure.rs:169:47:169:47 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:169:62:171:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:170:9:170:9 | f | | closure.rs:169:15:169:34 | F | +| closure.rs:169:15:169:15 | f | | closure.rs:169:18:169:36 | impl ... | +| closure.rs:169:39:169:39 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:170:9:170:9 | f | | closure.rs:169:18:169:36 | impl ... | | closure.rs:170:10:170:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:170:10:170:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:170:11:170:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:173:15:173:15 | f | | {EXTERNAL LOCATION} | &mut | -| closure.rs:173:15:173:15 | f | TRefMut | {EXTERNAL LOCATION} | dyn FnMut | -| closure.rs:173:15:173:15 | f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:173:15:173:15 | f | TRefMut.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:173:15:173:15 | f | TRefMut.dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:173:46:173:46 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:173:61:175:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:174:9:174:9 | f | | {EXTERNAL LOCATION} | &mut | -| closure.rs:174:9:174:9 | f | TRefMut | {EXTERNAL LOCATION} | dyn FnMut | -| closure.rs:174:9:174:9 | f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:174:9:174:9 | f | TRefMut.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:174:9:174:9 | f | TRefMut.dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:173:15:173:15 | f | | {EXTERNAL LOCATION} | & | +| closure.rs:173:15:173:15 | f | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:173:15:173:15 | f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:173:15:173:15 | f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:173:15:173:15 | f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:173:39:173:39 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:174:9:174:9 | f | | {EXTERNAL LOCATION} | & | +| closure.rs:174:9:174:9 | f | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:174:9:174:9 | f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:174:9:174:9 | f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:174:9:174:9 | f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:174:10:174:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:174:10:174:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:174:11:174:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:177:18:177:18 | f | | closure.rs:177:21:177:37 | impl ... | -| closure.rs:177:40:177:40 | a | | closure.rs:177:15:177:15 | T | -| closure.rs:177:53:179:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:178:9:178:9 | f | | closure.rs:177:21:177:37 | impl ... | +| closure.rs:177:41:177:41 | f | | closure.rs:177:15:177:34 | F | +| closure.rs:177:47:177:47 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:178:9:178:9 | f | | closure.rs:177:15:177:34 | F | | closure.rs:178:10:178:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:178:10:178:12 | ArgList | T0 | closure.rs:177:15:177:15 | T | -| closure.rs:178:11:178:11 | a | | closure.rs:177:15:177:15 | T | -| closure.rs:181:42:181:42 | f | | closure.rs:181:18:181:35 | F | -| closure.rs:181:48:181:48 | a | | closure.rs:181:15:181:15 | T | -| closure.rs:181:61:183:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:182:9:182:9 | f | | closure.rs:181:18:181:35 | F | +| closure.rs:178:10:178:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:178:11:178:11 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:181:15:181:15 | f | | {EXTERNAL LOCATION} | &mut | +| closure.rs:181:15:181:15 | f | TRefMut | {EXTERNAL LOCATION} | dyn FnMut | +| closure.rs:181:15:181:15 | f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:181:15:181:15 | f | TRefMut.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:181:15:181:15 | f | TRefMut.dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:181:46:181:46 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:182:9:182:9 | f | | {EXTERNAL LOCATION} | &mut | +| closure.rs:182:9:182:9 | f | TRefMut | {EXTERNAL LOCATION} | dyn FnMut | +| closure.rs:182:9:182:9 | f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:182:9:182:9 | f | TRefMut.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:182:9:182:9 | f | TRefMut.dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:182:10:182:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:182:10:182:12 | ArgList | T0 | closure.rs:181:15:181:15 | T | -| closure.rs:182:11:182:11 | a | | closure.rs:181:15:181:15 | T | -| closure.rs:185:15:206:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:186:13:186:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:186:17:186:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:187:13:187:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:187:18:187:32 | apply1(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:187:25:187:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:187:28:187:31 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:189:13:189:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:189:17:189:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:190:13:190:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:190:18:190:32 | apply2(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:190:25:190:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:190:28:190:31 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:192:13:192:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:192:17:192:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:193:13:193:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:193:18:193:33 | apply3(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:193:25:193:26 | &f | | {EXTERNAL LOCATION} | & | -| closure.rs:193:26:193:26 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:193:29:193:32 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:195:13:195:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:195:17:195:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:196:13:196:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:196:18:196:32 | apply4(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:196:25:196:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:196:28:196:31 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:198:17:198:17 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:198:21:198:25 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:199:13:199:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:199:18:199:37 | apply5(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:199:25:199:30 | &mut f | | {EXTERNAL LOCATION} | &mut | -| closure.rs:199:30:199:30 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:199:33:199:36 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:201:13:201:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:201:17:201:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:202:13:202:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:202:18:202:32 | apply6(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:202:25:202:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:202:28:202:31 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:204:13:204:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:204:17:204:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:205:13:205:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:205:18:205:32 | apply7(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:205:25:205:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:205:28:205:31 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:217:18:217:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| closure.rs:217:18:217:22 | SelfParam | TRef | closure.rs:212:5:212:19 | S | -| closure.rs:217:18:217:22 | SelfParam | TRef.T | closure.rs:214:10:214:10 | T | -| closure.rs:217:42:219:9 | { ... } | | {EXTERNAL LOCATION} | & | -| closure.rs:217:42:219:9 | { ... } | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:217:42:219:9 | { ... } | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:217:42:219:9 | { ... } | TRef.dyn(Args).T0 | closure.rs:214:10:214:10 | T | -| closure.rs:217:42:219:9 | { ... } | TRef.dyn(Output) | {EXTERNAL LOCATION} | bool | -| closure.rs:218:13:218:22 | &... | | {EXTERNAL LOCATION} | & | -| closure.rs:218:14:218:22 | \|...\| false | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:218:18:218:22 | false | | {EXTERNAL LOCATION} | bool | -| closure.rs:222:19:248:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:223:13:223:13 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:223:17:223:20 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:226:21:226:23 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:226:21:226:23 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:226:22:226:22 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:228:13:228:13 | x | | {EXTERNAL LOCATION} | i32 | -| closure.rs:228:17:228:20 | 0i32 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:231:21:231:23 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:231:21:231:23 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:231:22:231:22 | x | | {EXTERNAL LOCATION} | i32 | -| closure.rs:232:13:232:17 | s_ref | | {EXTERNAL LOCATION} | & | -| closure.rs:232:21:232:22 | &s | | {EXTERNAL LOCATION} | & | -| closure.rs:240:20:240:24 | s_ref | | {EXTERNAL LOCATION} | & | -| closure.rs:240:25:240:27 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:240:25:240:27 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:240:26:240:26 | x | | {EXTERNAL LOCATION} | i32 | -| closure.rs:246:13:246:13 | c | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:246:17:246:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:247:9:247:12 | (...) | | {EXTERNAL LOCATION} | & | -| closure.rs:247:10:247:11 | &c | | {EXTERNAL LOCATION} | & | -| closure.rs:247:11:247:11 | c | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:247:13:247:15 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:247:13:247:15 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:14:247:14 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:182:10:182:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:182:11:182:11 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:185:18:185:18 | f | | closure.rs:185:21:185:37 | impl ... | +| closure.rs:185:40:185:40 | a | | closure.rs:185:15:185:15 | T | +| closure.rs:186:9:186:9 | f | | closure.rs:185:21:185:37 | impl ... | +| closure.rs:186:10:186:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:186:10:186:12 | ArgList | T0 | closure.rs:185:15:185:15 | T | +| closure.rs:186:11:186:11 | a | | closure.rs:185:15:185:15 | T | +| closure.rs:189:42:189:42 | f | | closure.rs:189:18:189:35 | F | +| closure.rs:189:48:189:48 | a | | closure.rs:189:15:189:15 | T | +| closure.rs:190:9:190:9 | f | | closure.rs:189:18:189:35 | F | +| closure.rs:190:10:190:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:190:10:190:12 | ArgList | T0 | closure.rs:189:15:189:15 | T | +| closure.rs:190:11:190:11 | a | | closure.rs:189:15:189:15 | T | +| closure.rs:193:15:214:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:194:13:194:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:194:13:194:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:194:17:194:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:194:17:194:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:195:25:195:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:195:25:195:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:195:28:195:31 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:197:13:197:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:197:13:197:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:197:17:197:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:197:17:197:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:198:25:198:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:198:25:198:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:198:28:198:31 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:200:13:200:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:200:13:200:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:200:17:200:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:200:17:200:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:201:25:201:26 | &f | | {EXTERNAL LOCATION} | & | +| closure.rs:201:25:201:26 | &f | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:201:25:201:26 | &f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:201:26:201:26 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:201:26:201:26 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:201:29:201:32 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:203:13:203:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:203:13:203:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:203:17:203:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:203:17:203:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:204:25:204:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:204:25:204:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:204:28:204:31 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:206:17:206:17 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:206:17:206:17 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:206:21:206:25 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:206:21:206:25 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:207:25:207:30 | &mut f | | {EXTERNAL LOCATION} | &mut | +| closure.rs:207:25:207:30 | &mut f | TRefMut | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:207:25:207:30 | &mut f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:207:30:207:30 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:207:30:207:30 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:207:33:207:36 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:209:13:209:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:209:13:209:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:209:17:209:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:209:17:209:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:210:25:210:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:210:25:210:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:210:28:210:31 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:212:13:212:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:212:13:212:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:212:17:212:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:212:17:212:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:213:25:213:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:213:25:213:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:213:28:213:31 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:225:18:225:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| closure.rs:225:18:225:22 | SelfParam | TRef | closure.rs:220:5:220:19 | S | +| closure.rs:225:18:225:22 | SelfParam | TRef.T | closure.rs:222:10:222:10 | T | +| closure.rs:225:42:227:9 | { ... } | | {EXTERNAL LOCATION} | & | +| closure.rs:225:42:227:9 | { ... } | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:225:42:227:9 | { ... } | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:226:13:226:22 | &... | | {EXTERNAL LOCATION} | & | +| closure.rs:226:13:226:22 | &... | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:226:13:226:22 | &... | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:226:14:226:22 | \|...\| false | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:226:14:226:22 | \|...\| false | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:226:18:226:22 | false | | {EXTERNAL LOCATION} | bool | +| closure.rs:230:19:256:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:231:13:231:13 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:231:17:231:20 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:234:21:234:23 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:234:21:234:23 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:234:22:234:22 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:236:13:236:13 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:236:17:236:20 | 0i32 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:239:21:239:23 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:239:21:239:23 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:239:22:239:22 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:240:13:240:17 | s_ref | | {EXTERNAL LOCATION} | & | +| closure.rs:240:21:240:22 | &s | | {EXTERNAL LOCATION} | & | +| closure.rs:248:20:248:24 | s_ref | | {EXTERNAL LOCATION} | & | +| closure.rs:248:25:248:27 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:248:25:248:27 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:248:26:248:26 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:254:13:254:13 | c | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:254:13:254:13 | c | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:254:17:254:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:254:17:254:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:255:9:255:12 | (...) | | {EXTERNAL LOCATION} | & | +| closure.rs:255:9:255:12 | (...) | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:255:9:255:12 | (...) | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:255:10:255:11 | &c | | {EXTERNAL LOCATION} | & | +| closure.rs:255:10:255:11 | &c | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:255:10:255:11 | &c | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:255:11:255:11 | c | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:255:11:255:11 | c | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:255:13:255:15 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:255:13:255:15 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:14:255:14 | x | | {EXTERNAL LOCATION} | i32 | | dereference.rs:13:14:13:18 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:13:14:13:18 | SelfParam | TRef | dereference.rs:5:1:7:1 | MyIntPointer | | dereference.rs:13:29:15:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:13:29:15:5 | { ... } | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:14:9:14:19 | &... | | {EXTERNAL LOCATION} | & | | dereference.rs:14:10:14:13 | self | | {EXTERNAL LOCATION} | & | | dereference.rs:14:10:14:13 | self | TRef | dereference.rs:5:1:7:1 | MyIntPointer | @@ -909,7 +922,6 @@ inferCertainType | dereference.rs:26:14:26:18 | SelfParam | TRef | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:26:14:26:18 | SelfParam | TRef.T | dereference.rs:22:6:22:6 | T | | dereference.rs:26:27:28:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:26:27:28:5 | { ... } | TRef | dereference.rs:22:6:22:6 | T | | dereference.rs:27:9:27:19 | &... | | {EXTERNAL LOCATION} | & | | dereference.rs:27:10:27:13 | self | | {EXTERNAL LOCATION} | & | | dereference.rs:27:10:27:13 | self | TRef | dereference.rs:18:1:20:1 | MySmartPointer | @@ -918,7 +930,6 @@ inferCertainType | dereference.rs:33:18:33:26 | SelfParam | TRefMut | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:33:18:33:26 | SelfParam | TRefMut.T | dereference.rs:31:6:31:6 | T | | dereference.rs:33:39:35:5 | { ... } | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:33:39:35:5 | { ... } | TRefMut | dereference.rs:31:6:31:6 | T | | dereference.rs:34:9:34:23 | &mut ... | | {EXTERNAL LOCATION} | &mut | | dereference.rs:34:14:34:17 | self | | {EXTERNAL LOCATION} | &mut | | dereference.rs:34:14:34:17 | self | TRefMut | dereference.rs:18:1:20:1 | MySmartPointer | @@ -927,7 +938,6 @@ inferCertainType | dereference.rs:41:12:41:16 | SelfParam | TRef | dereference.rs:38:1:38:15 | S | | dereference.rs:41:12:41:16 | SelfParam | TRef.T | dereference.rs:40:6:40:6 | T | | dereference.rs:41:25:43:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:41:25:43:5 | { ... } | TRef | dereference.rs:40:6:40:6 | T | | dereference.rs:42:9:42:15 | &... | | {EXTERNAL LOCATION} | & | | dereference.rs:42:10:42:13 | self | | {EXTERNAL LOCATION} | & | | dereference.rs:42:10:42:13 | self | TRef | dereference.rs:38:1:38:15 | S | @@ -960,23 +970,30 @@ inferCertainType | dereference.rs:71:17:71:18 | c3 | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:74:31:86:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:76:9:76:10 | e1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:76:9:76:10 | e1 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:76:14:76:17 | &'a' | | {EXTERNAL LOCATION} | & | +| dereference.rs:76:14:76:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:76:15:76:17 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:77:15:77:16 | e1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:77:15:77:16 | e1 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:80:9:80:10 | e2 | | {EXTERNAL LOCATION} | & | +| dereference.rs:80:9:80:10 | e2 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:80:14:80:17 | &'a' | | {EXTERNAL LOCATION} | & | +| dereference.rs:80:14:80:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:80:15:80:17 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:81:16:81:17 | e2 | | {EXTERNAL LOCATION} | & | +| dereference.rs:81:16:81:17 | e2 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:84:9:84:10 | e3 | | {EXTERNAL LOCATION} | & | +| dereference.rs:84:9:84:10 | e3 | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:84:14:84:19 | &34i64 | | {EXTERNAL LOCATION} | & | +| dereference.rs:84:14:84:19 | &34i64 | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:84:15:84:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:85:17:85:18 | e3 | | {EXTERNAL LOCATION} | & | +| dereference.rs:85:17:85:18 | e3 | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:88:31:100:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:90:9:90:10 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:90:9:90:10 | g1 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:90:9:90:10 | g1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:90:25:90:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:90:25:90:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | dereference.rs:90:34:90:36 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:91:15:91:16 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:91:15:91:16 | g1 | A | {EXTERNAL LOCATION} | Global | @@ -984,8 +1001,6 @@ inferCertainType | dereference.rs:94:9:94:10 | g2 | | {EXTERNAL LOCATION} | Box | | dereference.rs:94:9:94:10 | g2 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:94:9:94:10 | g2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:94:25:94:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:94:25:94:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | dereference.rs:94:34:94:36 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:95:16:95:17 | g2 | | {EXTERNAL LOCATION} | Box | | dereference.rs:95:16:95:17 | g2 | A | {EXTERNAL LOCATION} | Global | @@ -993,8 +1008,6 @@ inferCertainType | dereference.rs:98:9:98:10 | g3 | | {EXTERNAL LOCATION} | Box | | dereference.rs:98:9:98:10 | g3 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:98:9:98:10 | g3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:98:24:98:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:98:24:98:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | dereference.rs:98:33:98:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:99:17:99:18 | g3 | | {EXTERNAL LOCATION} | Box | | dereference.rs:99:17:99:18 | g3 | A | {EXTERNAL LOCATION} | Global | @@ -1012,66 +1025,39 @@ inferCertainType | dereference.rs:111:13:111:45 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:111:39:111:42 | 0i64 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:112:14:112:14 | z | | dereference.rs:18:1:20:1 | MySmartPointer | -| dereference.rs:114:9:114:9 | v | | {EXTERNAL LOCATION} | Vec | -| dereference.rs:114:9:114:9 | v | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:114:13:114:22 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| dereference.rs:114:13:114:22 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | dereference.rs:115:13:115:13 | x | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:115:17:115:43 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | -| dereference.rs:115:41:115:41 | v | | {EXTERNAL LOCATION} | Vec | -| dereference.rs:115:41:115:41 | v | A | {EXTERNAL LOCATION} | Global | | dereference.rs:116:5:116:5 | x | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:143:19:151:5 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:144:17:144:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:144:17:144:26 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:144:17:144:26 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:144:17:144:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:144:17:144:26 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:144:17:144:26 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:144:30:144:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:144:30:144:57 | ...::new(...) | K | {EXTERNAL LOCATION} | & | -| dereference.rs:144:30:144:57 | ...::new(...) | K.TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:144:30:144:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:144:30:144:57 | ...::new(...) | V | {EXTERNAL LOCATION} | & | -| dereference.rs:144:30:144:57 | ...::new(...) | V.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:145:17:145:19 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:145:17:145:19 | key | TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:145:23:145:29 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:145:23:145:29 | &... | TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:145:24:145:29 | Key {...} | | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:9:149:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| dereference.rs:146:32:146:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:146:32:146:41 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:146:32:146:41 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:146:32:146:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:146:32:146:41 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:146:32:146:41 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:47:146:49 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:146:47:146:49 | key | TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:52:149:9 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:148:13:148:15 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:150:9:150:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:150:9:150:18 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:150:9:150:18 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:150:9:150:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:150:9:150:18 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:150:9:150:18 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:148:13:148:15 | key | TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:148:13:148:25 | ... = ... | | {EXTERNAL LOCATION} | () | | dereference.rs:150:27:150:29 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:150:27:150:29 | key | TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:150:32:150:34 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:150:32:150:34 | key | TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:156:16:156:19 | SelfParam | | dereference.rs:155:5:157:5 | Self [trait MyTrait1] | | dereference.rs:163:16:163:19 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:163:16:163:19 | SelfParam | TRef | dereference.rs:159:5:159:13 | S | -| dereference.rs:163:27:165:9 | { ... } | | dereference.rs:159:5:159:13 | S | | dereference.rs:170:16:170:19 | SelfParam | | {EXTERNAL LOCATION} | &mut | | dereference.rs:170:16:170:19 | SelfParam | TRefMut | dereference.rs:159:5:159:13 | S | -| dereference.rs:170:29:172:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:175:5:177:5 | Self [trait MyTrait2] | | dereference.rs:176:22:176:24 | arg | | dereference.rs:175:20:175:21 | T1 | | dereference.rs:181:16:181:19 | SelfParam | | dereference.rs:159:5:159:13 | S | | dereference.rs:181:22:181:24 | arg | | {EXTERNAL LOCATION} | & | | dereference.rs:181:22:181:24 | arg | TRef | dereference.rs:159:5:159:13 | S | -| dereference.rs:181:36:183:9 | { ... } | | dereference.rs:159:5:159:13 | S | | dereference.rs:188:16:188:19 | SelfParam | | dereference.rs:159:5:159:13 | S | | dereference.rs:188:22:188:24 | arg | | {EXTERNAL LOCATION} | &mut | | dereference.rs:188:22:188:24 | arg | TRefMut | dereference.rs:159:5:159:13 | S | -| dereference.rs:188:42:190:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:193:19:200:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:194:17:194:20 | (...) | | {EXTERNAL LOCATION} | & | | dereference.rs:194:18:194:19 | &S | | {EXTERNAL LOCATION} | & | @@ -1084,30 +1070,24 @@ inferCertainType | dereference.rs:213:16:213:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | | dereference.rs:213:16:213:24 | SelfParam | TRefMut | dereference.rs:205:5:205:17 | Foo | | dereference.rs:213:27:215:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:214:13:214:39 | MacroExpr | | {EXTERNAL LOCATION} | () | | dereference.rs:214:22:214:38 | "In struct impl!\\n" | | {EXTERNAL LOCATION} | & | | dereference.rs:214:22:214:38 | "In struct impl!\\n" | TRef | {EXTERNAL LOCATION} | str | -| dereference.rs:214:22:214:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:214:22:214:38 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:214:22:214:38 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:220:16:220:20 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:220:16:220:20 | SelfParam | TRef | dereference.rs:205:5:205:17 | Foo | | dereference.rs:220:23:222:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:13:221:38 | MacroExpr | | {EXTERNAL LOCATION} | () | | dereference.rs:221:22:221:37 | "In trait impl!\\n" | | {EXTERNAL LOCATION} | & | | dereference.rs:221:22:221:37 | "In trait impl!\\n" | TRef | {EXTERNAL LOCATION} | str | -| dereference.rs:221:22:221:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:22:221:37 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:221:22:221:37 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:225:19:228:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:226:17:226:17 | f | | dereference.rs:205:5:205:17 | Foo | | dereference.rs:226:21:226:26 | Foo {...} | | dereference.rs:205:5:205:17 | Foo | | dereference.rs:227:9:227:9 | f | | dereference.rs:205:5:205:17 | Foo | | dereference.rs:231:15:240:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:232:5:232:38 | explicit_monomorphic_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:233:5:233:38 | explicit_polymorphic_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:234:5:234:30 | explicit_ref_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:235:5:235:30 | explicit_box_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:236:5:236:26 | implicit_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:237:5:237:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:238:5:238:26 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:239:5:239:34 | ...::main(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:7:10:7:14 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:7:10:7:14 | SelfParam | TRef | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | | dyn_type.rs:12:12:12:16 | SelfParam | | {EXTERNAL LOCATION} | & | @@ -1116,16 +1096,13 @@ inferCertainType | dyn_type.rs:18:12:18:16 | SelfParam | TRef | dyn_type.rs:15:1:19:1 | Self [trait AssocTrait] | | dyn_type.rs:28:10:28:14 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:28:10:28:14 | SelfParam | TRef | dyn_type.rs:21:1:24:1 | MyStruct | -| dyn_type.rs:28:27:30:5 | { ... } | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | | {EXTERNAL LOCATION} | & | | dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | TRef | {EXTERNAL LOCATION} | str | -| dyn_type.rs:29:17:29:42 | ...::format(...) | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:33:29:36 | self | | {EXTERNAL LOCATION} | & | | dyn_type.rs:29:33:29:36 | self | TRef | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:40:12:40:16 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:40:12:40:16 | SelfParam | TRef | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:40:12:40:16 | SelfParam | TRef.A | dyn_type.rs:38:6:38:21 | A | -| dyn_type.rs:40:24:42:5 | { ... } | | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:41:9:41:12 | self | | {EXTERNAL LOCATION} | & | | dyn_type.rs:41:9:41:12 | self | TRef | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:41:9:41:12 | self | TRef.A | dyn_type.rs:38:6:38:21 | A | @@ -1133,8 +1110,6 @@ inferCertainType | dyn_type.rs:51:12:51:16 | SelfParam | TRef | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:51:12:51:16 | SelfParam | TRef.A | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:51:34:53:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:51:34:53:5 | { ... } | T0 | dyn_type.rs:45:6:45:8 | GGP | -| dyn_type.rs:51:34:53:5 | { ... } | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:52:9:52:34 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:52:10:52:13 | self | | {EXTERNAL LOCATION} | & | | dyn_type.rs:52:10:52:13 | self | TRef | dyn_type.rs:33:1:36:1 | GenStruct | @@ -1142,16 +1117,9 @@ inferCertainType | dyn_type.rs:52:30:52:33 | true | | {EXTERNAL LOCATION} | bool | | dyn_type.rs:56:40:56:40 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:56:40:56:40 | a | TRef | dyn_type.rs:56:13:56:37 | G | -| dyn_type.rs:56:52:58:1 | { ... } | | dyn_type.rs:56:10:56:10 | A | | dyn_type.rs:57:5:57:5 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:57:5:57:5 | a | TRef | dyn_type.rs:56:13:56:37 | G | | dyn_type.rs:60:46:60:46 | a | | dyn_type.rs:60:18:60:43 | A | -| dyn_type.rs:60:78:62:1 | { ... } | | {EXTERNAL LOCATION} | Box | -| dyn_type.rs:60:78:62:1 | { ... } | A | {EXTERNAL LOCATION} | Global | -| dyn_type.rs:60:78:62:1 | { ... } | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:60:78:62:1 | { ... } | T.dyn(A) | dyn_type.rs:60:18:60:43 | A | -| dyn_type.rs:61:5:61:36 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dyn_type.rs:61:5:61:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | dyn_type.rs:61:14:61:35 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:61:33:61:33 | a | | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:64:25:64:27 | obj | | {EXTERNAL LOCATION} | & | @@ -1170,32 +1138,17 @@ inferCertainType | dyn_type.rs:70:26:70:28 | obj | TRef | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:70:26:70:28 | obj | TRef.dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:73:26:76:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dyn_type.rs:74:9:74:11 | obj | | {EXTERNAL LOCATION} | Box | -| dyn_type.rs:74:9:74:11 | obj | A | {EXTERNAL LOCATION} | Global | -| dyn_type.rs:74:9:74:11 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:74:15:74:33 | get_box_trait(...) | | {EXTERNAL LOCATION} | Box | -| dyn_type.rs:74:15:74:33 | get_box_trait(...) | A | {EXTERNAL LOCATION} | Global | -| dyn_type.rs:74:15:74:33 | get_box_trait(...) | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:74:29:74:32 | true | | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:75:21:75:23 | obj | | {EXTERNAL LOCATION} | Box | -| dyn_type.rs:75:21:75:23 | obj | A | {EXTERNAL LOCATION} | Global | -| dyn_type.rs:75:21:75:23 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:78:24:78:24 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:78:24:78:24 | a | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:78:24:78:24 | a | TRef.dyn(AP) | dyn_type.rs:78:21:78:21 | B | | dyn_type.rs:78:24:78:24 | a | TRef.dyn(GP) | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:78:65:80:1 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:78:65:80:1 | { ... } | T0 | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:78:65:80:1 | { ... } | T1 | dyn_type.rs:78:21:78:21 | B | | dyn_type.rs:79:5:79:5 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:79:5:79:5 | a | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:79:5:79:5 | a | TRef.dyn(AP) | dyn_type.rs:78:21:78:21 | B | | dyn_type.rs:79:5:79:5 | a | TRef.dyn(GP) | dyn_type.rs:78:18:78:18 | A | | dyn_type.rs:82:55:82:55 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:82:55:82:55 | a | TRef | dyn_type.rs:82:20:82:52 | T | -| dyn_type.rs:82:72:84:1 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:82:72:84:1 | { ... } | T0 | dyn_type.rs:82:14:82:14 | A | -| dyn_type.rs:82:72:84:1 | { ... } | T1 | dyn_type.rs:82:17:82:17 | B | | dyn_type.rs:83:5:83:5 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:83:5:83:5 | a | TRef | dyn_type.rs:82:20:82:52 | T | | dyn_type.rs:86:20:86:22 | obj | | {EXTERNAL LOCATION} | & | @@ -1209,45 +1162,39 @@ inferCertainType | dyn_type.rs:90:11:90:13 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:11:90:13 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:91:9:94:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:94:23:94:25 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:94:23:94:25 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:94:23:94:25 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:94:23:94:25 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:95:9:98:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:98:9:98:22 | assoc_get(...) | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:98:19:98:21 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:98:19:98:21 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:98:19:98:21 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:98:19:98:21 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:101:15:108:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dyn_type.rs:102:5:102:49 | test_basic_dyn_trait(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:102:26:102:48 | &... | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:102:26:102:48 | &... | TRef | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:27:102:48 | MyStruct {...} | | dyn_type.rs:21:1:24:1 | MyStruct | -| dyn_type.rs:103:5:105:6 | test_generic_dyn_trait(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:103:28:105:5 | &... | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:103:28:105:5 | &... | TRef | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:103:29:105:5 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:104:16:104:17 | "" | | {EXTERNAL LOCATION} | & | | dyn_type.rs:104:16:104:17 | "" | TRef | {EXTERNAL LOCATION} | str | -| dyn_type.rs:106:5:106:25 | test_poly_dyn_trait(...) | | {EXTERNAL LOCATION} | () | -| dyn_type.rs:107:5:107:46 | test_assoc_type(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:107:21:107:45 | &... | | {EXTERNAL LOCATION} | & | +| dyn_type.rs:107:21:107:45 | &... | TRef | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:107:22:107:45 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | invalid/main.rs:8:16:8:19 | SelfParam | | invalid/main.rs:7:5:9:5 | Self [trait T1] | | invalid/main.rs:8:22:8:23 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:12:16:12:19 | SelfParam | | invalid/main.rs:11:5:15:5 | Self [trait T2] | -| invalid/main.rs:12:22:14:9 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:13:13:13:16 | self | | invalid/main.rs:11:5:15:5 | Self [trait T2] | | invalid/main.rs:25:22:25:25 | SelfParam | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | | invalid/main.rs:25:28:25:32 | other | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | | invalid/main.rs:29:22:29:25 | SelfParam | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:29:28:29:32 | other | | invalid/main.rs:21:5:22:20 | Num | -| invalid/main.rs:29:49:31:9 | { ... } | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:30:17:30:20 | self | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:30:26:30:30 | other | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:39:16:39:19 | SelfParam | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:39:22:39:26 | other | | invalid/main.rs:35:10:35:20 | T | -| invalid/main.rs:39:43:41:9 | { ... } | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:40:13:40:16 | self | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:40:28:40:32 | other | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:44:30:49:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -1257,26 +1204,24 @@ inferCertainType | invalid/main.rs:61:22:61:26 | SelfParam | TRef | invalid/main.rs:60:5:64:5 | Self [trait Duplicatable] | | invalid/main.rs:68:19:68:23 | SelfParam | | {EXTERNAL LOCATION} | & | | invalid/main.rs:68:19:68:23 | SelfParam | TRef | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:68:34:70:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:69:14:69:17 | self | | {EXTERNAL LOCATION} | & | | invalid/main.rs:69:14:69:17 | self | TRef | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:75:22:75:26 | SelfParam | | {EXTERNAL LOCATION} | & | | invalid/main.rs:75:22:75:26 | SelfParam | TRef | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:75:37:77:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:76:14:76:17 | self | | {EXTERNAL LOCATION} | & | | invalid/main.rs:76:14:76:17 | self | TRef | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:83:22:83:26 | SelfParam | | {EXTERNAL LOCATION} | & | | invalid/main.rs:83:22:83:26 | SelfParam | TRef | invalid/main.rs:81:10:81:18 | T | -| invalid/main.rs:83:37:85:9 | { ... } | | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:84:13:84:16 | self | | {EXTERNAL LOCATION} | & | | invalid/main.rs:84:13:84:16 | self | TRef | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:88:33:92:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:25:30:28:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:26:13:26:13 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:26:17:26:32 | MyThing {...} | | main.rs:5:5:8:5 | MyThing | +| main.rs:27:9:27:29 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:27:18:27:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:27:18:27:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:27:18:27:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:27:18:27:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:27:18:27:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:30:29:30:29 | x | | main.rs:16:5:19:5 | GenericThing | @@ -1284,34 +1229,38 @@ inferCertainType | main.rs:30:46:33:5 | { ... } | | {EXTERNAL LOCATION} | () | | 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:32:9:32:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:32:18:32:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:32:18:32:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:32:18:32:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:32:18:32:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:32:18:32:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:35:31:63:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:37:13:37:13 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:13:37:13 | x | A | main.rs:3:5:4:13 | S | | main.rs:37:17:37:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:17:37:42 | GenericThing::<...> {...} | A | main.rs:3:5:4:13 | S | +| main.rs:38:9:38:29 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:38:18:38:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:38:18:38:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:38:18:38:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:38:18:38:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:38:18:38:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:38:26:38:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:38:26:38:26 | x | A | main.rs:3:5:4:13 | S | | main.rs:41:13:41:13 | y | | main.rs:16:5:19:5 | GenericThing | | main.rs:41:17:41:37 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | +| main.rs:42:9:42:29 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:42:18:42:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:42:18:42:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:42:18:42:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:42:18:42:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:42:18:42:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:42:26:42:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:42:26:42:26 | x | A | main.rs:3:5:4:13 | S | | main.rs: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:49:9:49:29 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:49:18:49:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:49:18:49:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:49:18:49:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:49:18:49:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:49:18:49:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:49:26:49:26 | x | | main.rs:21:5:23:5 | OptionS | | main.rs:52:13:52:13 | x | | main.rs:16:5:19:5 | GenericThing | @@ -1320,9 +1269,10 @@ inferCertainType | 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:3:5:4:13 | S | +| main.rs:55:9:55:29 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:55:18:55:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:55:18:55:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:55:18:55:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:55:18:55:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:55:18:55:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:55:26:55:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:55:26:55:26 | x | A | main.rs:10:5:14:5 | MyOption | @@ -1332,15 +1282,14 @@ inferCertainType | main.rs:61:13:61:13 | a | | main.rs:10:5:14:5 | MyOption | | main.rs:61:13:61:13 | a | T | main.rs:3:5:4:13 | S | | main.rs:61:30:61:30 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:62:9:62:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:62:18:62:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:62:18:62:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:62:18:62:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:62:18:62:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:62:18:62:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:62:26:62:26 | a | | main.rs:10:5:14:5 | MyOption | | main.rs:62:26:62:26 | a | T | main.rs:3:5:4:13 | S | | main.rs:65:16:68:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:66:9:66:29 | simple_field_access(...) | | {EXTERNAL LOCATION} | () | -| main.rs:67:9:67:30 | generic_field_access(...) | | {EXTERNAL LOCATION} | () | | main.rs:75:19:75:22 | SelfParam | | main.rs:72:5:72:21 | Foo | | main.rs:75:33:77:9 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:76:13:76:16 | self | | main.rs:72:5:72:21 | Foo | @@ -1348,9 +1297,10 @@ inferCertainType | 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:9:85:34 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | {EXTERNAL LOCATION} | & | | main.rs:85:18:85:33 | "main.rs::m1::f\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:85:18:85:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:85:18:85:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:85:18:85:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:86:13:86:13 | x | | main.rs:72:5:72:21 | Foo | | main.rs:86:17:86:22 | Foo {...} | | main.rs:72:5:72:21 | Foo | @@ -1358,17 +1308,15 @@ inferCertainType | 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:9:92:34 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | {EXTERNAL LOCATION} | & | | main.rs:92:18:92:33 | "main.rs::m1::g\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:92:18:92:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:92:18:92:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:92:18:92:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:93:9:93:9 | x | | main.rs:72:5:72:21 | Foo | | main.rs:94:9:94:9 | y | | main.rs:72:5:72:21 | Foo | -| main.rs:102:30:105:9 | { ... } | | main.rs:99:5:99:29 | ATupleStruct | | main.rs:116:25:116:28 | SelfParam | | main.rs:115:5:117:5 | Self [trait MyTrait] | | main.rs:121:25:121:28 | SelfParam | | main.rs:110:5:113:5 | MyThing | -| main.rs:121:39:123:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:122:13:122:16 | self | | main.rs:110:5:113:5 | MyThing | | main.rs:126:16:135:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:127:13:127:13 | x | | main.rs:110:5:113:5 | MyThing | @@ -1386,29 +1334,28 @@ inferCertainType | main.rs:144:25:144:29 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:144:25:144:29 | SelfParam | TRef | main.rs:142:9:147:9 | Self [trait Foo] | | main.rs:144:32:146:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:145:17:145:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:145:26:145:31 | "foo!\\n" | | {EXTERNAL LOCATION} | & | | main.rs:145:26:145:31 | "foo!\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:145:26:145:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:145:26:145:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:145:26:145:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:151:25:151:29 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:151:25:151:29 | SelfParam | TRef | main.rs:149:9:154:9 | Self [trait Bar] | | main.rs:151:32:153:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:152:17:152:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:152:26:152:31 | "bar!\\n" | | {EXTERNAL LOCATION} | & | | main.rs:152:26:152:31 | "bar!\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:152:26:152:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:152:26:152:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:152:26:152:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:163:15:184:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:165:9:168:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:169:9:172:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:173:9:176:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:177:9:183:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:181:13:181:29 | ...::a_method(...) | | {EXTERNAL LOCATION} | () | | main.rs:181:27:181:28 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:182:13:182:29 | ...::a_method(...) | | {EXTERNAL LOCATION} | () | | main.rs:182:27:182:28 | &x | | {EXTERNAL LOCATION} | & | | main.rs:200:15:200:18 | SelfParam | | main.rs:188:5:191:5 | MyThing | | main.rs:200:15:200:18 | SelfParam | A | main.rs:193:5:194:14 | S1 | -| main.rs:200:27:202:9 | { ... } | | main.rs:193:5:194:14 | S1 | | main.rs:201:13:201:16 | self | | main.rs:188:5:191:5 | MyThing | | main.rs:201:13:201:16 | self | A | main.rs:193:5:194:14 | S1 | | main.rs:207:15:207:18 | SelfParam | | main.rs:188:5:191:5 | MyThing | @@ -1421,7 +1368,6 @@ inferCertainType | main.rs:208:23:208:26 | self | A | main.rs:195:5:196:14 | S2 | | main.rs:213:15:213:18 | SelfParam | | main.rs:188:5:191:5 | MyThing | | main.rs:213:15:213:18 | SelfParam | A | main.rs:212:10:212:10 | T | -| main.rs:213:26:215:9 | { ... } | | main.rs:212:10:212:10 | T | | main.rs:214:13:214:16 | self | | main.rs:188:5:191:5 | MyThing | | main.rs:214:13:214:16 | self | A | main.rs:212:10:212:10 | T | | main.rs:218:16:234:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -1429,38 +1375,44 @@ inferCertainType | main.rs:219:17:219:33 | MyThing {...} | | main.rs:188:5:191:5 | MyThing | | main.rs:220:13:220:13 | y | | main.rs:188:5:191:5 | MyThing | | main.rs:220:17:220:33 | MyThing {...} | | main.rs:188:5:191:5 | MyThing | +| main.rs:223:9:223:29 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:223:18:223:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:223:18:223:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:223:18:223:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:223:18:223:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:223:18:223:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:223:26:223:26 | x | | main.rs:188:5:191:5 | MyThing | +| main.rs:224:9:224:29 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:224:18:224:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:224:18:224:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:224:18:224:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:224:18:224:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:224:18:224:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:224:26:224:26 | y | | main.rs:188:5:191:5 | MyThing | +| main.rs:226:9:226:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:226:18:226:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:226:18:226:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:226:18:226:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:226:18:226:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:226:18:226:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:226:26:226:26 | x | | main.rs:188:5:191:5 | MyThing | +| main.rs:227:9:227:34 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:227:18:227:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:227:18:227:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:227:18:227:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:227:18:227:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:227:18:227:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:227:26:227:26 | y | | main.rs:188:5:191:5 | MyThing | | main.rs:229:13:229:13 | x | | main.rs:188:5:191:5 | MyThing | | main.rs:229:17:229:33 | MyThing {...} | | main.rs:188:5:191:5 | MyThing | | main.rs:230:13:230:13 | y | | main.rs:188:5:191:5 | MyThing | | main.rs:230:17:230:33 | MyThing {...} | | main.rs:188:5:191:5 | MyThing | +| main.rs:232:9:232:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:232:18:232:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:232:18:232:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:232:18:232:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:232:18:232:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:232:18:232:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:232:26:232:26 | x | | main.rs:188:5:191:5 | MyThing | +| main.rs:233:9:233:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:233:18:233:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:233:18:233:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:233:18:233:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:233:18:233:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:233:18:233:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:233:26:233:26 | y | | main.rs:188:5:191:5 | MyThing | | main.rs:257:15:257:18 | SelfParam | | main.rs:256:5:265:5 | Self [trait MyTrait] | @@ -1471,14 +1423,11 @@ inferCertainType | main.rs:273:16:273:19 | SelfParam | | main.rs:271:5:276:5 | Self [trait MyProduct] | | main.rs:275:16:275:19 | SelfParam | | main.rs:271:5:276:5 | Self [trait MyProduct] | | main.rs:278:43:278:43 | x | | main.rs:278:26:278:40 | T2 | -| main.rs:278:56:280:5 | { ... } | | main.rs:278:22:278:23 | T1 | | main.rs:279:9:279:9 | x | | main.rs:278:26:278:40 | T2 | | main.rs:282:71:282:71 | x | | main.rs:282:53:282:68 | T3 | -| main.rs:282:84:284:5 | { ... } | | main.rs:282:32:282:33 | T1 | | main.rs:283:9:283:9 | x | | main.rs:282:53:282:68 | T3 | | main.rs:288:15:288:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | | main.rs:288:15:288:18 | SelfParam | A | main.rs:249:5:250:14 | S1 | -| main.rs:288:27:290:9 | { ... } | | main.rs:249:5:250:14 | S1 | | main.rs:289:13:289:16 | self | | main.rs:238:5:241:5 | MyThing | | main.rs:289:13:289:16 | self | A | main.rs:249:5:250:14 | S1 | | main.rs:295:15:295:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | @@ -1492,27 +1441,22 @@ inferCertainType | main.rs:302:15:302:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | | main.rs:302:15:302:18 | SelfParam | A | main.rs:251:5:252:14 | S2 | | main.rs:302:36:304:9 | { ... } | | main.rs:238:5:241:5 | MyThing | -| main.rs:302:36:304:9 | { ... } | A | main.rs:249:5:250:14 | S1 | | main.rs:303:13:303:29 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | | main.rs:314:15:314:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | | main.rs:314:15:314:18 | SelfParam | A | main.rs:253:5:254:14 | S3 | -| main.rs:314:27:316:9 | { ... } | | main.rs:309:10:309:11 | TD | | main.rs:321:15:321:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | | main.rs:321:15:321:18 | SelfParam | P1 | main.rs:319:10:319:10 | I | | main.rs:321:15:321:18 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:321:26:323:9 | { ... } | | main.rs:319:10:319:10 | I | | main.rs:322:13:322:16 | self | | main.rs:243:5:247:5 | MyPair | | main.rs:322:13:322:16 | self | P1 | main.rs:319:10:319:10 | I | | main.rs:322:13:322:16 | self | P2 | main.rs:249:5:250:14 | S1 | | main.rs:328:15:328:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | | main.rs:328:15:328:18 | SelfParam | P1 | main.rs:249:5:250:14 | S1 | | main.rs:328:15:328:18 | SelfParam | P2 | main.rs:251:5:252:14 | S2 | -| main.rs:328:27:330:9 | { ... } | | main.rs:253:5:254:14 | S3 | | main.rs:335:15:335:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | | main.rs:335:15:335:18 | SelfParam | P1 | main.rs:238:5:241:5 | MyThing | | main.rs:335:15:335:18 | SelfParam | P1.A | main.rs:333:10:333:11 | TT | | main.rs:335:15:335:18 | SelfParam | P2 | main.rs:253:5:254:14 | S3 | -| main.rs:335:27:338:9 | { ... } | | main.rs:333:10:333:11 | TT | | main.rs:336:25:336:28 | self | | main.rs:243:5:247:5 | MyPair | | main.rs:336:25:336:28 | self | P1 | main.rs:238:5:241:5 | MyThing | | main.rs:336:25:336:28 | self | P1.A | main.rs:333:10:333:11 | TT | @@ -1520,53 +1464,43 @@ inferCertainType | main.rs:344:16:344:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | | main.rs:344:16:344:19 | SelfParam | P1 | main.rs:342:10:342:10 | A | | main.rs:344:16:344:19 | SelfParam | P2 | main.rs:342:10:342:10 | A | -| main.rs:344:27:346:9 | { ... } | | main.rs:342:10:342:10 | A | | main.rs:345:13:345:16 | self | | main.rs:243:5:247:5 | MyPair | | main.rs:345:13:345:16 | self | P1 | main.rs:342:10:342:10 | A | | main.rs:345:13:345:16 | self | P2 | main.rs:342:10:342:10 | A | | main.rs:349:16:349:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | | main.rs:349:16:349:19 | SelfParam | P1 | main.rs:342:10:342:10 | A | | main.rs:349:16:349:19 | SelfParam | P2 | main.rs:342:10:342:10 | A | -| main.rs:349:27:351:9 | { ... } | | main.rs:342:10:342:10 | A | | main.rs:350:13:350:16 | self | | main.rs:243:5:247:5 | MyPair | | main.rs:350:13:350:16 | self | P1 | main.rs:342:10:342:10 | A | | main.rs:350:13:350:16 | self | P2 | main.rs:342:10:342:10 | A | | main.rs:357:16:357:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | | main.rs:357:16:357:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | | main.rs:357:16:357:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:357:28:359:9 | { ... } | | main.rs:249:5:250:14 | S1 | | main.rs:358:13:358:16 | self | | main.rs:243:5:247:5 | MyPair | | main.rs:358:13:358:16 | self | P1 | main.rs:251:5:252:14 | S2 | | main.rs:358:13:358:16 | self | P2 | main.rs:249:5:250:14 | S1 | | main.rs:362:16:362:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | | main.rs:362:16:362:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | | main.rs:362:16:362:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:362:28:364:9 | { ... } | | main.rs:251:5:252:14 | S2 | | main.rs:363:13:363:16 | self | | main.rs:243:5:247:5 | MyPair | | main.rs:363:13:363:16 | self | P1 | main.rs:251:5:252:14 | S2 | | main.rs:363:13:363:16 | self | P2 | main.rs:249:5:250:14 | S1 | | main.rs:367:46:367:46 | p | | main.rs:367:24:367:43 | P | -| main.rs:367:58:369:5 | { ... } | | main.rs:367:16:367:17 | V1 | | main.rs:368:9:368:9 | p | | main.rs:367:24:367:43 | P | | main.rs:371:46:371:46 | p | | main.rs:371:24:371:43 | P | -| main.rs:371:58:373:5 | { ... } | | main.rs:371:20:371:21 | V2 | | main.rs:372:9:372:9 | p | | main.rs:371:24:371:43 | P | | main.rs:375:54:375:54 | p | | main.rs:243:5:247:5 | MyPair | | main.rs:375:54:375:54 | p | P1 | main.rs:375:20:375:21 | V0 | | main.rs:375:54:375:54 | p | P2 | main.rs:375:32:375:51 | P | -| main.rs:375:78:377:5 | { ... } | | main.rs:375:24:375:25 | V1 | | main.rs:376:9:376:9 | p | | main.rs:243:5:247:5 | MyPair | | main.rs:376:9:376:9 | p | P1 | main.rs:375:20:375:21 | V0 | | main.rs:376:9:376:9 | p | P2 | main.rs:375:32:375:51 | P | | main.rs:381:23:381:26 | SelfParam | | main.rs:379:5:382:5 | Self [trait ConvertTo] | | main.rs:386:23:386:26 | SelfParam | | main.rs:384:10:384:23 | T | -| main.rs:386:35:388:9 | { ... } | | main.rs:249:5:250:14 | S1 | | main.rs:387:13:387:16 | self | | main.rs:384:10:384:23 | T | | main.rs:391:41:391:45 | thing | | main.rs:391:23:391:38 | T | -| main.rs:391:57:393:5 | { ... } | | main.rs:391:19:391:20 | TS | | main.rs:392:9:392:13 | thing | | main.rs:391:23:391:38 | T | | main.rs:395:56:395:60 | thing | | main.rs:395:39:395:53 | TP | -| main.rs:395:73:398:5 | { ... } | | main.rs:249:5:250:14 | S1 | | main.rs:397:9:397:13 | thing | | main.rs:395:39:395:53 | TP | | main.rs:400:16:473:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:401:13:401:20 | thing_s1 | | main.rs:238:5:241:5 | MyThing | @@ -1575,102 +1509,118 @@ inferCertainType | main.rs:402:24:402:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | | main.rs:403:13:403:20 | thing_s3 | | main.rs:238:5:241:5 | MyThing | | main.rs:403:24:403:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:407:9:407:39 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:407:18:407:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:407:18:407:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:407:18:407:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:407:18:407:38 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:407:18:407:38 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:407:26:407:33 | thing_s1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:408:9:408:41 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:408:18:408:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:408:18:408:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:408:18:408:40 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:408:18:408:40 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:408:18:408:40 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:408:26:408:33 | thing_s2 | | main.rs:238:5:241:5 | MyThing | | main.rs:409:13:409:14 | s3 | | main.rs:253:5:254:14 | S3 | | main.rs:409:22:409:29 | thing_s3 | | main.rs:238:5:241:5 | MyThing | +| main.rs:410:9:410:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:410:18:410:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:410:18:410:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:410:18:410:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:410:18:410:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:410:18:410:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:410:26:410:27 | s3 | | main.rs:253:5:254:14 | S3 | | main.rs:412:13:412:14 | p1 | | main.rs:243:5:247:5 | MyPair | | main.rs:412:18:412:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:413:9:413:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:413:18:413:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:413:18:413:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:413:18:413:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:413:18:413:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:413:18:413:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:413:26:413:27 | p1 | | main.rs:243:5:247:5 | MyPair | | main.rs:415:13:415:14 | p2 | | main.rs:243:5:247:5 | MyPair | | main.rs:415:18:415:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:416:9:416:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:416:18:416:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:416:18:416:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:416:18:416:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:416:18:416:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:416:18:416:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:416:26:416:27 | p2 | | main.rs:243:5:247:5 | MyPair | | main.rs:418:13:418:14 | p3 | | main.rs:243:5:247:5 | MyPair | | main.rs:418:18:421:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | | main.rs:419:17:419:33 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:422:9:422:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:422:18:422:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:422:18:422:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:422:18:422:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:422:18:422:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:422:18:422:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:422:26:422:27 | p3 | | main.rs:243:5:247:5 | MyPair | | main.rs:425:13:425:13 | a | | main.rs:243:5:247:5 | MyPair | | main.rs:425:17:425:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | | main.rs:426:17:426:17 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:427:9:427:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:427:18:427:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:427:18:427:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:427:18:427:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:427:18:427:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:427:18:427:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:428:17:428:17 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:429:9:429:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:429:18:429:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:429:18:429:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:429:18:429:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:429:18:429:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:429:18:429:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:435:13:435:13 | b | | main.rs:243:5:247:5 | MyPair | | main.rs:435:17:435:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | | main.rs:436:17:436:17 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:437:9:437:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:437:18:437:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:437:18:437:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:437:18:437:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:437:18:437:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:437:18:437:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:438:17:438:17 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:439:9:439:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:439:18:439:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:439:18:439:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:439:18:439:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:439:18:439:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:439:18:439:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:443:31:443:38 | thing_s1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:444:9:444:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:444:18:444:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:444:18:444:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:444:18:444:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:444:18:444:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:444:18:444:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:445:31:445:38 | thing_s2 | | main.rs:238:5:241:5 | MyThing | +| main.rs:446:9:446:29 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:446:18:446:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:446:18:446:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:446:18:446:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:446:18:446:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:446:18:446:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:449:13:449:13 | a | | main.rs:243:5:247:5 | MyPair | | main.rs:449:17:449:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | | main.rs:450:25:450:25 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:451:9:451:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:451:18:451:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:451:18:451:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:451:18:451:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:451:18:451:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:451:18:451:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:452:25:452:25 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:453:9:453:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:453:18:453:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:453:18:453:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:453:18:453:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:453:18:453:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:453:18:453:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:456:13:456:13 | b | | main.rs:243:5:247:5 | MyPair | | main.rs:456:17:456:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | | main.rs:457:25:457:25 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:458:9:458:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:458:18:458:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:458:18:458:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:458:18:458:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:458:18:458:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:458:18:458:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:459:25:459:25 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:460:9:460:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:460:18:460:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:460:18:460:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:460:18:460:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:460:18:460:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:460:18:460:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:462:13:462:13 | c | | main.rs:243:5:247:5 | MyPair | | main.rs:462:17:465:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | @@ -1686,37 +1636,42 @@ inferCertainType | main.rs:499:64:499:64 | x | | main.rs:499:45:499:61 | T | | main.rs:499:70:503:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:501:18:501:18 | x | | main.rs:499:45:499:61 | T | +| main.rs:502:9:502:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:502:18:502:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:502:18:502:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:502:18:502:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:502:18:502:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:502:18:502:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:505:65:505:65 | x | | main.rs:505:46:505:62 | T | | main.rs:505:71:509:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:507:18:507:18 | x | | main.rs:505:46:505:62 | T | +| main.rs:508:9:508:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:508:18:508:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:508:18:508:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:508:18:508:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:508:18:508:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:508:18:508:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:511:49:511:49 | x | | main.rs:511:30:511:46 | T | | main.rs:511:55:514:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:512:17:512:17 | x | | main.rs:511:30:511:46 | T | +| main.rs:513:9:513:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:513:18:513:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:513:18:513:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:513:18:513:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:513:18:513:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:513:18:513:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:516:53:516:53 | x | | main.rs:516:34:516:50 | T | | main.rs:516:59:519:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:517:17:517:17 | x | | main.rs:516:34:516:50 | T | +| main.rs:518:9:518:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:518:18:518:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:518:18:518:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:518:18:518:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:518:18:518:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:518:18:518:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:521:43:521:43 | x | | main.rs:521:40:521:40 | T | | main.rs:524:5:527:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:525:17:525:17 | x | | main.rs:521:40:521:40 | T | +| main.rs:526:9:526:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:526:18:526:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:526:18:526:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:526:18:526:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:526:18:526:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:526:18:526:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:530:16:530:19 | SelfParam | | main.rs:529:5:533:5 | Self [trait Pair] | | main.rs:532:16:532:19 | SelfParam | | main.rs:529:5:533:5 | Self [trait Pair] | @@ -1730,46 +1685,48 @@ inferCertainType | main.rs:544:70:549:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:546:18:546:18 | x | | main.rs:544:41:544:55 | T | | main.rs:547:18:547:18 | y | | main.rs:544:41:544:55 | T | +| main.rs:548:9:548:38 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:548:18:548:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:548:18:548:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:548:18:548:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:548:18:548:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:548:18:548:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:551:69:551:69 | x | | main.rs:551:52:551:66 | T | | main.rs:551:75:551:75 | y | | main.rs:551:52:551:66 | T | | main.rs:551:81:556:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:553:18:553:18 | x | | main.rs:551:52:551:66 | T | | main.rs:554:18:554:18 | y | | main.rs:551:52:551:66 | T | +| main.rs:555:9:555:38 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:555:18:555:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:555:18:555:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:555:18:555:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:555:18:555:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:555:18:555:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:558:50:558:50 | x | | main.rs:558:41:558:47 | T | | main.rs:558:56:558:56 | y | | main.rs:558:41:558:47 | T | | main.rs:558:62:563:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:560:18:560:18 | x | | main.rs:558:41:558:47 | T | | main.rs:561:18:561:18 | y | | main.rs:558:41:558:47 | T | +| main.rs:562:9:562:38 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:562:18:562:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:562:18:562:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:562:18:562:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:562:18:562:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:562:18:562:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:565:54:565:54 | x | | main.rs:565:41:565:51 | T | | main.rs:565:60:565:60 | y | | main.rs:565:41:565:51 | T | | main.rs:565:66:570:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:567:18:567:18 | x | | main.rs:565:41:565:51 | T | | main.rs:568:18:568:18 | y | | main.rs:565:41:565:51 | T | +| main.rs:569:9:569:38 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:569:18:569:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:569:18:569:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:569:18:569:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:569:18:569:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:569:18:569:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:577:18:577:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:577:18:577:22 | SelfParam | TRef | main.rs:574:5:578:5 | Self [trait TraitWithSelfTp] | | main.rs:580:40:580:44 | thing | | {EXTERNAL LOCATION} | & | | main.rs:580:40:580:44 | thing | TRef | main.rs:580:17:580:37 | T | -| main.rs:580:56:582:5 | { ... } | | main.rs:580:14:580:14 | A | | main.rs:581:9:581:13 | thing | | {EXTERNAL LOCATION} | & | | main.rs:581:9:581:13 | thing | TRef | main.rs:580:17:580:37 | T | | main.rs:585:44:585:48 | thing | | main.rs:585:24:585:41 | S | -| main.rs:585:61:588:5 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:586:19:586:23 | thing | | main.rs:585:24:585:41 | S | | main.rs:593:55:593:59 | thing | | {EXTERNAL LOCATION} | & | | main.rs:593:55:593:59 | thing | TRef | main.rs:593:25:593:52 | S | @@ -1778,8 +1735,6 @@ inferCertainType | main.rs:595:25:595:29 | thing | TRef | main.rs:593:25:593:52 | S | | main.rs:604:18:604:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:604:18:604:22 | SelfParam | TRef | main.rs:598:5:600:5 | MyStruct | -| main.rs:604:41:606:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:604:41:606:9 | { ... } | T | main.rs:598:5:600:5 | MyStruct | | main.rs:605:18:605:47 | MyStruct {...} | | main.rs:598:5:600:5 | MyStruct | | main.rs:605:36:605:39 | self | | {EXTERNAL LOCATION} | & | | main.rs:605:36:605:39 | self | TRef | main.rs:598:5:600:5 | MyStruct | @@ -1787,63 +1742,49 @@ inferCertainType | main.rs:612:13:612:13 | s | | main.rs:598:5:600:5 | MyStruct | | main.rs:612:17:612:37 | MyStruct {...} | | main.rs:598:5:600:5 | MyStruct | | main.rs:613:25:613:26 | &s | | {EXTERNAL LOCATION} | & | +| main.rs:613:25:613:26 | &s | TRef | main.rs:598:5:600:5 | MyStruct | | main.rs:613:26:613:26 | s | | main.rs:598:5:600:5 | MyStruct | | main.rs:629:15:629:18 | SelfParam | | main.rs:628:5:639:5 | Self [trait MyTrait] | | main.rs:631:15:631:18 | SelfParam | | main.rs:628:5:639:5 | Self [trait MyTrait] | -| main.rs:634:9:636:9 | { ... } | | main.rs:628:19:628:19 | A | | main.rs:635:13:635:16 | self | | main.rs:628:5:639:5 | Self [trait MyTrait] | | main.rs:638:18:638:18 | x | | main.rs:628:5:639:5 | Self [trait MyTrait] | | main.rs:642:15:642:18 | SelfParam | | main.rs:625:5:626:14 | S2 | -| main.rs:642:26:644:9 | { ... } | | main.rs:641:10:641:19 | T | | main.rs:646:18:646:18 | x | | main.rs:625:5:626:14 | S2 | -| main.rs:646:32:648:9 | { ... } | | main.rs:641:10:641:19 | T | | main.rs:652:15:652:18 | SelfParam | | main.rs:623:5:624:14 | S1 | -| main.rs:652:28:654:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:656:18:656:18 | x | | main.rs:623:5:624:14 | S1 | -| main.rs:656:34:658:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:663:50:663:50 | x | | main.rs:663:26:663:47 | T2 | -| main.rs:663:63:666:5 | { ... } | | main.rs:663:22:663:23 | T1 | | main.rs:664:9:664:9 | x | | main.rs:663:26:663:47 | T2 | | main.rs:665:9:665:9 | x | | main.rs:663:26:663:47 | T2 | | main.rs:667:52:667:52 | x | | main.rs:667:28:667:49 | T2 | -| main.rs:667:65:671:5 | { ... } | | main.rs:667:24:667:25 | T1 | | main.rs:668:24:668:24 | x | | main.rs:667:28:667:49 | T2 | | main.rs:670:16:670:16 | x | | main.rs:667:28:667:49 | T2 | | main.rs:672:52:672:52 | x | | main.rs:672:28:672:49 | T2 | -| main.rs:672:65:676:5 | { ... } | | main.rs:672:24:672:25 | T1 | | main.rs:673:29:673:29 | x | | main.rs:672:28:672:49 | T2 | | main.rs:675:21:675:21 | x | | main.rs:672:28:672:49 | T2 | | main.rs:677:55:677:55 | x | | main.rs:677:31:677:52 | T2 | -| main.rs:677:68:681:5 | { ... } | | main.rs:677:27:677:28 | T1 | | main.rs:678:27:678:27 | x | | main.rs:677:31:677:52 | T2 | | main.rs:680:19:680:19 | x | | main.rs:677:31:677:52 | T2 | | main.rs:682:55:682:55 | x | | main.rs:682:31:682:52 | T2 | -| main.rs:682:68:686:5 | { ... } | | main.rs:682:27:682:28 | T1 | | main.rs:683:32:683:32 | x | | main.rs:682:31:682:52 | T2 | | main.rs:685:24:685:24 | x | | main.rs:682:31:682:52 | T2 | | main.rs:690:49:690:49 | x | | main.rs:618:5:621:5 | MyThing | | main.rs:690:49:690:49 | x | T | main.rs:690:32:690:46 | T2 | -| main.rs:690:71:692:5 | { ... } | | main.rs:690:28:690:29 | T1 | | main.rs:691:9:691:9 | x | | main.rs:618:5:621:5 | MyThing | | main.rs:691:9:691:9 | x | T | main.rs:690:32:690:46 | T2 | | main.rs:693:51:693:51 | x | | main.rs:618:5:621:5 | MyThing | | main.rs:693:51:693:51 | x | T | main.rs:693:34:693:48 | T2 | -| main.rs:693:73:695:5 | { ... } | | main.rs:693:30:693:31 | T1 | | main.rs:694:16:694:16 | x | | main.rs:618:5:621:5 | MyThing | | main.rs:694:16:694:16 | x | T | main.rs:693:34:693:48 | T2 | | main.rs:696:51:696:51 | x | | main.rs:618:5:621:5 | MyThing | | main.rs:696:51:696:51 | x | T | main.rs:696:34:696:48 | T2 | -| main.rs:696:73:698:5 | { ... } | | main.rs:696:30:696:31 | T1 | | main.rs:697:21:697:21 | x | | main.rs:618:5:621:5 | MyThing | | main.rs:697:21:697:21 | x | T | main.rs:696:34:696:48 | T2 | | main.rs:701:15:701:18 | SelfParam | | main.rs:618:5:621:5 | MyThing | | main.rs:701:15:701:18 | SelfParam | T | main.rs:700:10:700:10 | T | -| main.rs:701:26:703:9 | { ... } | | main.rs:700:10:700:10 | T | | main.rs:702:13:702:16 | self | | main.rs:618:5:621:5 | MyThing | | main.rs:702:13:702:16 | self | T | main.rs:700:10:700:10 | T | | main.rs:705:18:705:18 | x | | main.rs:618:5:621:5 | MyThing | | main.rs:705:18:705:18 | x | T | main.rs:700:10:700:10 | T | -| main.rs:705:32:707:9 | { ... } | | main.rs:700:10:700:10 | T | | main.rs:706:13:706:13 | x | | main.rs:618:5:621:5 | MyThing | | main.rs:706:13:706:13 | x | T | main.rs:700:10:700:10 | T | | main.rs:712:15:712:18 | SelfParam | | main.rs:710:5:713:5 | Self [trait MyTrait2] | @@ -1861,28 +1802,32 @@ inferCertainType | main.rs:726:17:726:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | | main.rs:727:13:727:13 | y | | main.rs:618:5:621:5 | MyThing | | main.rs:727:17:727:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:729:9:729:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:729:18:729:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:729:18:729:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:729:18:729:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:729:18:729:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:729:18:729:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:729:26:729:26 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:730:9:730:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:730:18:730:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:730:18:730:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:730:18:730:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:730:18:730:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:730:18:730:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:730:26:730:26 | y | | main.rs:618:5:621:5 | MyThing | | main.rs:732:13:732:13 | x | | main.rs:618:5:621:5 | MyThing | | main.rs:732:17:732:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | | main.rs:733:13:733:13 | y | | main.rs:618:5:621:5 | MyThing | | main.rs:733:17:733:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:735:9:735:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:735:18:735:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:735:18:735:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:735:18:735:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:735:18:735:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:735:18:735:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:735:26:735:26 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:736:9:736:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:736:18:736:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:736:18:736:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:736:18:736:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:736:18:736:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:736:18:736:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:736:26:736:26 | y | | main.rs:618:5:621:5 | MyThing | | main.rs:738:13:738:14 | x2 | | main.rs:618:5:621:5 | MyThing | @@ -1890,54 +1835,64 @@ inferCertainType | main.rs:739:13:739:14 | y2 | | main.rs:618:5:621:5 | MyThing | | main.rs:739:18:739:34 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | | main.rs:741:31:741:32 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:742:9:742:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:742:18:742:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:742:18:742:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:742:18:742:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:742:18:742:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:742:18:742:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:743:33:743:34 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:744:9:744:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:744:18:744:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:744:18:744:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:744:18:744:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:744:18:744:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:744:18:744:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:745:33:745:34 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:746:9:746:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:746:18:746:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:746:18:746:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:746:18:746:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:746:18:746:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:746:18:746:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:747:31:747:32 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:748:9:748:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:748:18:748:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:748:18:748:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:748:18:748:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:748:18:748:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:748:18:748:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:749:33:749:34 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:750:9:750:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:750:18:750:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:750:18:750:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:750:18:750:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:750:18:750:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:750:18:750:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:751:33:751:34 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:752:9:752:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:752:18:752:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:752:18:752:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:752:18:752:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:752:18:752:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:752:18:752:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:753:36:753:37 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:754:9:754:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:754:18:754:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:754:18:754:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:754:18:754:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:754:18:754:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:754:18:754:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:755:36:755:37 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:756:9:756:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:756:18:756:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:756:18:756:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:756:18:756:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:756:18:756:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:756:18:756:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:757:36:757:37 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:758:9:758:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:758:18:758:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:758:18:758:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:758:18:758:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:758:18:758:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:758:18:758:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:759:36:759:37 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:760:9:760:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:760:18:760:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:760:18:760:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:760:18:760:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:760:18:760:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:760:18:760:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:762:13:762:14 | x3 | | main.rs:618:5:621:5 | MyThing | | main.rs:762:18:764:9 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | @@ -1946,130 +1901,140 @@ inferCertainType | main.rs:765:18:767:9 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | | main.rs:766:16:766:32 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | | main.rs:769:37:769:38 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:770:9:770:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:770:18:770:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:770:18:770:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:770:18:770:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:770:18:770:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:770:18:770:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:771:39:771:40 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:772:9:772:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:772:18:772:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:772:18:772:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:772:18:772:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:772:18:772:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:772:18:772:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:773:39:773:40 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:774:9:774:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:774:18:774:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:774:18:774:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:774:18:774:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:774:18:774:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:774:18:774:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:775:37:775:38 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:776:9:776:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:776:18:776:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:776:18:776:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:776:18:776:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:776:18:776:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:776:18:776:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:777:39:777:40 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:778:9:778:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:778:18:778:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:778:18:778:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:778:18:778:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:778:18:778:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:778:18:778:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:779:39:779:40 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:780:9:780:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:780:18:780:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:780:18:780:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:780:18:780:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:780:18:780:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:780:18:780:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:782:13:782:13 | y | | {EXTERNAL LOCATION} | i32 | | main.rs:799:15:799:18 | SelfParam | | main.rs:787:5:791:5 | MyEnum | | main.rs:799:15:799:18 | SelfParam | A | main.rs:798:10:798:10 | T | -| main.rs:799:26:804:9 | { ... } | | main.rs:798:10:798:10 | T | | main.rs:800:19:800:22 | self | | main.rs:787:5:791:5 | MyEnum | | main.rs:800:19:800:22 | self | A | main.rs:798:10:798:10 | T | | main.rs:802:17:802:32 | ...::C2 {...} | | main.rs:787:5:791:5 | MyEnum | | main.rs:807:16:813:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:809:13:809:13 | y | | main.rs:787:5:791:5 | MyEnum | | main.rs:809:17:809:36 | ...::C2 {...} | | main.rs:787:5:791:5 | MyEnum | +| main.rs:811:9:811:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:811:18:811:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:811:18:811:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:811:18:811:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:811:18:811:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:811:18:811:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:812:9:812:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:812:18:812:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:812:18:812:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:812:18:812:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:812:18:812:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:812:18:812:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:812:26:812:26 | y | | main.rs:787:5:791:5 | MyEnum | | main.rs:834:15:834:18 | SelfParam | | main.rs:832:5:835:5 | Self [trait MyTrait1] | | main.rs:839:15:839:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:839:15:839:19 | SelfParam | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | -| main.rs:842:9:848:9 | { ... } | | main.rs:837:20:837:22 | Tr2 | | main.rs:844:17:844:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:844:17:844:20 | self | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | | main.rs:846:27:846:30 | self | | {EXTERNAL LOCATION} | & | | main.rs:846:27:846:30 | self | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | | main.rs:853:15:853:18 | SelfParam | | main.rs:851:5:863:5 | Self [trait MyTrait3] | -| main.rs:856:9:862:9 | { ... } | | main.rs:851:20:851:22 | Tr3 | | main.rs:858:17:858:20 | self | | main.rs:851:5:863:5 | Self [trait MyTrait3] | | main.rs:860:26:860:30 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:860:26:860:30 | &self | TRef | main.rs:851:5:863:5 | Self [trait MyTrait3] | | main.rs:860:27:860:30 | self | | main.rs:851:5:863:5 | Self [trait MyTrait3] | | main.rs:867:15:867:18 | SelfParam | | main.rs:817:5:820:5 | MyThing | | main.rs:867:15:867:18 | SelfParam | A | main.rs:865:10:865:10 | T | -| main.rs:867:26:869:9 | { ... } | | main.rs:865:10:865:10 | T | | main.rs:868:13:868:16 | self | | main.rs:817:5:820:5 | MyThing | | main.rs:868:13:868:16 | self | A | main.rs:865:10:865:10 | T | | main.rs:876:15:876:18 | SelfParam | | main.rs:822:5:825:5 | MyThing2 | | main.rs:876:15:876:18 | SelfParam | A | main.rs:874:10:874:10 | T | | main.rs:876:35:878:9 | { ... } | | main.rs:817:5:820:5 | MyThing | -| main.rs:876:35:878:9 | { ... } | A | main.rs:874:10:874:10 | T | | main.rs:877:13:877:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | | main.rs:877:26:877:29 | self | | main.rs:822:5:825:5 | MyThing2 | | main.rs:877:26:877:29 | self | A | main.rs:874:10:874:10 | T | | main.rs:885:44:885:44 | x | | main.rs:885:26:885:41 | T2 | -| main.rs:885:57:887:5 | { ... } | | main.rs:885:22:885:23 | T1 | | main.rs:886:9:886:9 | x | | main.rs:885:26:885:41 | T2 | | main.rs:889:56:889:56 | x | | main.rs:889:39:889:53 | T | | main.rs:889:62:893:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:891:17:891:17 | x | | main.rs:889:39:889:53 | T | +| main.rs:892:9:892:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:892:18:892:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:892:18:892:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:892:18:892:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:892:18:892:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:892:18:892:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:895:16:919:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:896:13:896:13 | x | | main.rs:817:5:820:5 | MyThing | | main.rs:896:17:896:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | | main.rs:897:13:897:13 | y | | main.rs:817:5:820:5 | MyThing | | main.rs:897:17:897:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:899:9:899:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:899:18:899:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:899:18:899:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:899:18:899:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:899:18:899:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:899:18:899:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:899:26:899:26 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:900:9:900:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:900:18:900:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:900:18:900:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:900:18:900:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:900:18:900:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:900:18:900:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:900:26:900:26 | y | | main.rs:817:5:820:5 | MyThing | | main.rs:902:13:902:13 | x | | main.rs:817:5:820:5 | MyThing | | main.rs:902:17:902:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | | main.rs:903:13:903:13 | y | | main.rs:817:5:820:5 | MyThing | | main.rs:903:17:903:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:905:9:905:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:905:18:905:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:905:18:905:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:905:18:905:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:905:18:905:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:905:18:905:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:905:26:905:26 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:906:9:906:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:906:18:906:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:906:18:906:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:906:18:906:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:906:18:906:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:906:18:906:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:906:26:906:26 | y | | main.rs:817:5:820:5 | MyThing | | main.rs:908:13:908:13 | x | | main.rs:822:5:825:5 | MyThing2 | | main.rs:908:17:908:34 | MyThing2 {...} | | main.rs:822:5:825:5 | MyThing2 | | main.rs:909:13:909:13 | y | | main.rs:822:5:825:5 | MyThing2 | | main.rs:909:17:909:34 | MyThing2 {...} | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:911:9:911:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:911:18:911:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:911:18:911:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:911:18:911:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:911:18:911:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:911:18:911:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:911:26:911:26 | x | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:912:9:912:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:912:18:912:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:912:18:912:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:912:18:912:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:912:18:912:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:912:18:912:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:912:26:912:26 | y | | main.rs:822:5:825:5 | MyThing2 | | main.rs:914:13:914:13 | x | | main.rs:817:5:820:5 | MyThing | @@ -2085,49 +2050,41 @@ inferCertainType | main.rs:936:9:936:9 | x | | {EXTERNAL LOCATION} | & | | main.rs:936:9:936:9 | x | TRef | main.rs:935:11:935:19 | T | | main.rs:940:17:940:20 | SelfParam | | main.rs:925:5:926:14 | S1 | -| main.rs:940:29:942:9 | { ... } | | main.rs:928:5:929:14 | S2 | | main.rs:945:21:945:21 | x | | main.rs:945:13:945:14 | T1 | -| main.rs:948:5:950:5 | { ... } | | main.rs:945:17:945:18 | T2 | | main.rs:949:9:949:9 | x | | main.rs:945:13:945:14 | T1 | | main.rs:952:16:968:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:954:9:954:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:954:18:954:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:954:18:954:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:954:18:954:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:954:18:954:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:954:26:954:31 | id(...) | | {EXTERNAL LOCATION} | & | +| main.rs:954:18:954:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:954:29:954:30 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:957:9:957:38 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:957:18:957:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:957:18:957:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:957:18:957:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:957:18:957:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:957:26:957:37 | id::<...>(...) | | {EXTERNAL LOCATION} | & | -| main.rs:957:26:957:37 | id::<...>(...) | TRef | main.rs:925:5:926:14 | S1 | +| main.rs:957:18:957:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:957:35:957:36 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:961:9:961:45 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:961:18:961:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:961:18:961:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:961:18:961:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:961:18:961:44 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:961:26:961:44 | id::<...>(...) | | {EXTERNAL LOCATION} | & | -| main.rs:961:26:961:44 | id::<...>(...) | TRef | main.rs:931:5:931:25 | dyn Trait | +| main.rs:961:18:961:44 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:961:42:961:43 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:964:9:964:25 | into::<...>(...) | | main.rs:928:5:929:14 | S2 | | main.rs:967:13:967:13 | y | | main.rs:928:5:929:14 | S2 | | main.rs:981:22:981:25 | SelfParam | | main.rs:972:5:978:5 | PairOption | | main.rs:981:22:981:25 | SelfParam | Fst | main.rs:980:10:980:12 | Fst | | main.rs:981:22:981:25 | SelfParam | Snd | main.rs:980:15:980:17 | Snd | -| main.rs:981:35:988:9 | { ... } | | main.rs:980:15:980:17 | Snd | | main.rs:982:19:982:22 | self | | main.rs:972:5:978:5 | PairOption | | main.rs:982:19:982:22 | self | Fst | main.rs:980:10:980:12 | Fst | | main.rs:982:19:982:22 | self | Snd | main.rs:980:15:980:17 | Snd | -| main.rs:983:43:983:82 | MacroExpr | | file://:0:0:0:0 | ! | | main.rs:983:50:983:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | & | | main.rs:983:50:983:81 | "PairNone has no second elemen... | TRef | {EXTERNAL LOCATION} | str | -| main.rs:983:50:983:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:983:50:983:81 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:983:50:983:81 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:984:43:984:81 | MacroExpr | | file://:0:0:0:0 | ! | | main.rs:984:50:984:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | & | | main.rs:984:50:984:80 | "PairFst has no second element... | TRef | {EXTERNAL LOCATION} | str | -| main.rs:984:50:984:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:984:50:984:80 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:984:50:984:80 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1012:10:1012:10 | t | | main.rs:972:5:978:5 | PairOption | | main.rs:1012:10:1012:10 | t | Fst | main.rs:994:5:995:14 | S2 | @@ -2140,17 +2097,19 @@ inferCertainType | main.rs:1013:17:1013:17 | t | Snd | main.rs:972:5:978:5 | PairOption | | main.rs:1013:17:1013:17 | t | Snd.Fst | main.rs:994:5:995:14 | S2 | | main.rs:1013:17:1013:17 | t | Snd.Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1014:9:1014:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1014:18:1014:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1014:18:1014:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1014:18:1014:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1014:18:1014:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1014:18:1014:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1025:16:1045:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1027:13:1027:14 | p1 | | main.rs:972:5:978:5 | PairOption | | main.rs:1027:13:1027:14 | p1 | Fst | main.rs:991:5:992:14 | S1 | | main.rs:1027:13:1027:14 | p1 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1028:9:1028:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1028:18:1028:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1028:18:1028:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1028:18:1028:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1028:18:1028:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1028:18:1028:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1028:26:1028:27 | p1 | | main.rs:972:5:978:5 | PairOption | | main.rs:1028:26:1028:27 | p1 | Fst | main.rs:991:5:992:14 | S1 | @@ -2158,32 +2117,34 @@ inferCertainType | main.rs:1031:13:1031:14 | p2 | | main.rs:972:5:978:5 | PairOption | | main.rs:1031:13:1031:14 | p2 | Fst | main.rs:991:5:992:14 | S1 | | main.rs:1031:13:1031:14 | p2 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1032:9:1032:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1032:18:1032:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1032:18:1032:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1032:18:1032:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1032:18:1032:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1032:18:1032:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1032:26:1032:27 | p2 | | main.rs:972:5:978:5 | PairOption | | main.rs:1032:26:1032:27 | p2 | Fst | main.rs:991:5:992:14 | S1 | | main.rs:1032:26:1032:27 | p2 | Snd | main.rs:994:5:995:14 | S2 | | main.rs:1035:13:1035:14 | p3 | | main.rs:972:5:978:5 | PairOption | | main.rs:1035:13:1035:14 | p3 | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1036:9:1036:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1036:18:1036:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1036:18:1036:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1036:18:1036:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1036:18:1036:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1036:18:1036:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1036:26:1036:27 | p3 | | main.rs:972:5:978:5 | PairOption | | main.rs:1036:26:1036:27 | p3 | Fst | main.rs:994:5:995:14 | S2 | | main.rs:1039:13:1039:14 | p3 | | main.rs:972:5:978:5 | PairOption | | main.rs:1039:13:1039:14 | p3 | Fst | main.rs:994:5:995:14 | S2 | | main.rs:1039:13:1039:14 | p3 | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1040:9:1040:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1040:18:1040:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1040:18:1040:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1040:18:1040:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1040:18:1040:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1040:18:1040:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1040:26:1040:27 | p3 | | main.rs:972:5:978:5 | PairOption | | main.rs:1040:26:1040:27 | p3 | Fst | main.rs:994:5:995:14 | S2 | | main.rs:1040:26:1040:27 | p3 | Snd | main.rs:997:5:998:14 | S3 | -| main.rs:1042:9:1042:55 | g(...) | | {EXTERNAL LOCATION} | () | | main.rs:1044:13:1044:13 | x | | {EXTERNAL LOCATION} | Result | | main.rs:1044:13:1044:13 | x | E | main.rs:991:5:992:14 | S1 | | main.rs:1044:13:1044:13 | x | T | main.rs:1017:5:1017:34 | S4 | @@ -2205,90 +2166,72 @@ inferCertainType | main.rs:1066:16:1066:24 | SelfParam | TRefMut.T | main.rs:1064:10:1064:10 | T | | main.rs:1066:27:1066:31 | value | | main.rs:1064:10:1064:10 | T | | main.rs:1066:37:1066:38 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1070:26:1072:9 | { ... } | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1070:26:1072:9 | { ... } | T | main.rs:1069:10:1069:10 | T | | main.rs:1076:20:1076:23 | SelfParam | | main.rs:1049:5:1053:5 | MyOption | | main.rs:1076:20:1076:23 | SelfParam | T | main.rs:1049:5:1053:5 | MyOption | | main.rs:1076:20:1076:23 | SelfParam | T.T | main.rs:1075:10:1075:10 | T | -| main.rs:1076:41:1081:9 | { ... } | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1076:41:1081:9 | { ... } | T | main.rs:1075:10:1075:10 | T | | main.rs:1077:19:1077:22 | self | | main.rs:1049:5:1053:5 | MyOption | | main.rs:1077:19:1077:22 | self | T | main.rs:1049:5:1053:5 | MyOption | | main.rs:1077:19:1077:22 | self | T.T | main.rs:1075:10:1075:10 | T | | main.rs:1087:16:1132:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1088:13:1088:14 | x1 | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1088:13:1088:14 | x1 | T | main.rs:1084:5:1085:13 | S | -| main.rs:1088:18:1088:37 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1088:18:1088:37 | ...::new(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1089:9:1089:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1089:18:1089:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1089:18:1089:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1089:18:1089:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1089:18:1089:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1089:26:1089:27 | x1 | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1089:26:1089:27 | x1 | T | main.rs:1084:5:1085:13 | S | -| main.rs:1091:17:1091:18 | x2 | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1091:22:1091:36 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1092:9:1092:10 | x2 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1089:18:1089:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1093:9:1093:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1093:18:1093:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1093:18:1093:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1093:18:1093:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1093:18:1093:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1093:26:1093:27 | x2 | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1095:17:1095:18 | x3 | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1095:22:1095:36 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1096:9:1096:10 | x3 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1093:18:1093:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1097:9:1097:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1097:18:1097:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1097:18:1097:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1097:18:1097:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1097:18:1097:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1097:26:1097:27 | x3 | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1099:17:1099:18 | x4 | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1099:22:1099:36 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1100:9:1100:33 | ...::set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1097:18:1097:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1100:23:1100:29 | &mut x4 | | {EXTERNAL LOCATION} | &mut | -| main.rs:1100:28:1100:29 | x4 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1101:9:1101:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1101:18:1101:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1101:18:1101:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1101:18:1101:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1101:18:1101:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1101:26:1101:27 | x4 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1101:18:1101:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1104:9:1104:38 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1104:18:1104:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1104:18:1104:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1104:18:1104:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1104:18:1104:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1104:18:1104:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1107:9:1107:62 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1107:18:1107:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1107:18:1107:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1107:18:1107:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1107:18:1107:61 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1107:26:1107:61 | ...::flatten(...) | | main.rs:1049:5:1053:5 | MyOption | -| main.rs:1107:26:1107:61 | ...::flatten(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1107:18:1107:61 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1115:9:1115:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1115:18:1115:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1115:18:1115:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1115:18:1115:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1115:18:1115:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1115:18:1115:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1119:13:1119:16 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1120:13:1120:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1122:9:1122:36 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1122:18:1122:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1122:18:1122:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1122:18:1122:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1122:18:1122:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1122:18:1122:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1125:30:1130:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1126:13:1128:13 | if ... {...} | | {EXTERNAL LOCATION} | () | | main.rs:1126:22:1128:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1131:9:1131:35 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1131:18:1131:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1131:18:1131:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1131:18:1131:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1131:18:1131:34 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1131:18:1131:34 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1149:15:1149:18 | SelfParam | | main.rs:1137:5:1138:19 | S | | main.rs:1149:15:1149:18 | SelfParam | T | main.rs:1148:10:1148:10 | T | -| main.rs:1149:26:1151:9 | { ... } | | main.rs:1148:10:1148:10 | T | | main.rs:1150:13:1150:16 | self | | main.rs:1137:5:1138:19 | S | | main.rs:1150:13:1150:16 | self | T | main.rs:1148:10:1148:10 | T | | main.rs:1153:15:1153:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1153:15:1153:19 | SelfParam | TRef | main.rs:1137:5:1138:19 | S | | main.rs:1153:15:1153:19 | SelfParam | TRef.T | main.rs:1148:10:1148:10 | T | | main.rs:1153:28:1155:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1153:28:1155:9 | { ... } | TRef | main.rs:1148:10:1148:10 | T | | main.rs:1154:13:1154:19 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1154:14:1154:17 | self | | {EXTERNAL LOCATION} | & | | main.rs:1154:14:1154:17 | self | TRef | main.rs:1137:5:1138:19 | S | @@ -2297,7 +2240,6 @@ inferCertainType | main.rs:1157:15:1157:25 | SelfParam | TRef | main.rs:1137:5:1138:19 | S | | main.rs:1157:15:1157:25 | SelfParam | TRef.T | main.rs:1148:10:1148:10 | T | | main.rs:1157:34:1159:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1157:34:1159:9 | { ... } | TRef | main.rs:1148:10:1148:10 | T | | main.rs:1158:13:1158:19 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1158:14:1158:17 | self | | {EXTERNAL LOCATION} | & | | main.rs:1158:14:1158:17 | self | TRef | main.rs:1137:5:1138:19 | S | @@ -2308,104 +2250,115 @@ inferCertainType | main.rs:1170:29:1170:33 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1170:29:1170:33 | SelfParam | TRef | {EXTERNAL LOCATION} | & | | main.rs:1170:29:1170:33 | SelfParam | TRef.TRef | main.rs:1143:5:1146:5 | MyInt | -| main.rs:1170:43:1172:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:1171:17:1171:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:1171:17:1171:20 | self | TRef | {EXTERNAL LOCATION} | & | | main.rs:1171:17:1171:20 | self | TRef.TRef | main.rs:1143:5:1146:5 | MyInt | | main.rs:1175:33:1175:36 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1175:33:1175:36 | SelfParam | TRef | main.rs:1143:5:1146:5 | MyInt | -| main.rs:1175:46:1177:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:1176:15:1176:18 | self | | {EXTERNAL LOCATION} | & | | main.rs:1176:15:1176:18 | self | TRef | main.rs:1143:5:1146:5 | MyInt | | main.rs:1180:16:1230:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1182:9:1182:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1182:18:1182:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1182:18:1182:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1182:18:1182:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1182:18:1182:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1182:18:1182:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1186:9:1186:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1186:18:1186:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1186:18:1186:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1186:18:1186:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1186:18:1186:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1186:18:1186:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1187:9:1187:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1187:18:1187:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1187:18:1187:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1187:18:1187:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1187:18:1187:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1187:18:1187:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1191:9:1191:42 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1191:18:1191:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1191:18:1191:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1191:18:1191:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1191:18:1191:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1191:26:1191:41 | ...::m2(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1191:26:1191:41 | ...::m2(...) | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1191:18:1191:41 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1191:38:1191:40 | &x3 | | {EXTERNAL LOCATION} | & | +| main.rs:1192:9:1192:42 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1192:18:1192:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1192:18:1192:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1192:18:1192:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1192:18:1192:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1192:26:1192:41 | ...::m3(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1192:26:1192:41 | ...::m3(...) | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1192:18:1192:41 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1192:38:1192:40 | &x3 | | {EXTERNAL LOCATION} | & | | main.rs:1194:13:1194:14 | x4 | | {EXTERNAL LOCATION} | & | | main.rs:1194:18:1194:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1196:9:1196:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1196:18:1196:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1196:18:1196:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1196:18:1196:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1196:18:1196:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1196:18:1196:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1196:26:1196:27 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1197:9:1197:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1197:18:1197:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1197:18:1197:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1197:18:1197:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1197:18:1197:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1197:18:1197:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1197:26:1197:27 | x4 | | {EXTERNAL LOCATION} | & | | main.rs:1199:13:1199:14 | x5 | | {EXTERNAL LOCATION} | & | | main.rs:1199:18:1199:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1201:9:1201:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1201:18:1201:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1201:18:1201:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1201:18:1201:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1201:18:1201:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1201:18:1201:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1201:26:1201:27 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1202:9:1202:30 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1202:18:1202:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1202:18:1202:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1202:18:1202:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1202:18:1202:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1202:18:1202:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1202:26:1202:27 | x5 | | {EXTERNAL LOCATION} | & | | main.rs:1204:13:1204:14 | x6 | | {EXTERNAL LOCATION} | & | | main.rs:1204:18:1204:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1207:9:1207:36 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1207:18:1207:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1207:18:1207:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1207:18:1207:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1207:18:1207:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1207:18:1207:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1207:28:1207:29 | x6 | | {EXTERNAL LOCATION} | & | | main.rs:1209:20:1209:22 | &S2 | | {EXTERNAL LOCATION} | & | +| main.rs:1213:9:1213:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1213:18:1213:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1213:18:1213:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1213:18:1213:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1213:18:1213:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1213:18:1213:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1215:13:1215:14 | x9 | | {EXTERNAL LOCATION} | String | | main.rs:1215:26:1215:32 | "Hello" | | {EXTERNAL LOCATION} | & | | main.rs:1215:26:1215:32 | "Hello" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1219:17:1219:18 | x9 | | {EXTERNAL LOCATION} | String | | main.rs:1221:13:1221:20 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1221:13:1221:20 | my_thing | TRef | main.rs:1143:5:1146:5 | MyInt | | main.rs:1221:24:1221:39 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1221:24:1221:39 | &... | TRef | main.rs:1143:5:1146:5 | MyInt | | main.rs:1221:25:1221:39 | MyInt {...} | | main.rs:1143:5:1146:5 | MyInt | | main.rs:1223:17:1223:24 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1223:17:1223:24 | my_thing | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1224:9:1224:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1224:18:1224:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1224:18:1224:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1224:18:1224:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1224:18:1224:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1224:18:1224:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1227:13:1227:20 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1227:13:1227:20 | my_thing | TRef | main.rs:1143:5:1146:5 | MyInt | | main.rs:1227:24:1227:39 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1227:24:1227:39 | &... | TRef | main.rs:1143:5:1146:5 | MyInt | | main.rs:1227:25:1227:39 | MyInt {...} | | main.rs:1143:5:1146:5 | MyInt | | main.rs:1228:17:1228:24 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1228:17:1228:24 | my_thing | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1229:9:1229:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1229:18:1229:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1229:18:1229:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1229:18:1229:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1229:18:1229:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1229:18:1229:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1236:16:1236:20 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1236:16:1236:20 | SelfParam | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | | main.rs:1239:16:1239:20 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1239:16:1239:20 | SelfParam | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | -| main.rs:1239:32:1241:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1239:32:1241:9 | { ... } | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | | main.rs:1240:13:1240:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1240:13:1240:16 | self | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | | main.rs:1248:16:1248:20 | SelfParam | | {EXTERNAL LOCATION} | & | @@ -2438,30 +2391,56 @@ inferCertainType | main.rs:1270:13:1270:16 | self | TRef.T | main.rs:1264:10:1264:10 | T | | main.rs:1274:16:1280:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1279:15:1279:17 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1279:15:1279:17 | &... | TRef | {EXTERNAL LOCATION} | & | | main.rs:1279:16:1279:17 | &x | | {EXTERNAL LOCATION} | & | | main.rs:1290:17:1290:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | | main.rs:1290:17:1290:25 | SelfParam | TRefMut | main.rs:1284:5:1287:5 | MyFlag | | main.rs:1290:28:1292:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1291:13:1291:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1291:13:1291:16 | self | TRefMut | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1291:13:1291:34 | ... = ... | | {EXTERNAL LOCATION} | () | | main.rs:1291:26:1291:29 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1291:26:1291:29 | self | TRefMut | main.rs:1284:5:1287:5 | MyFlag | | main.rs:1298:15:1298:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1298:15:1298:19 | SelfParam | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1298:31:1300:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1298:31:1300:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1298:31:1300:9 | { ... } | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1298:31:1300:9 | { ... } | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1298:31:1300:9 | { ... } | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1298:31:1300:9 | { ... } | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1299:13:1299:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1299:13:1299:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:13:1299:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:13:1299:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:13:1299:19 | &... | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1299:14:1299:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1299:14:1299:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:14:1299:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:14:1299:19 | &... | TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1299:15:1299:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1299:15:1299:19 | &self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:15:1299:19 | &self | TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1299:16:1299:19 | self | | {EXTERNAL LOCATION} | & | | main.rs:1299:16:1299:19 | self | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1302:15:1302:25 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1302:15:1302:25 | SelfParam | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1302:37:1304:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1302:37:1304:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1302:37:1304:9 | { ... } | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1302:37:1304:9 | { ... } | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1302:37:1304:9 | { ... } | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1302:37:1304:9 | { ... } | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1303:13:1303:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1303:13:1303:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:13:1303:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:13:1303:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:13:1303:19 | &... | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1303:14:1303:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1303:14:1303:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:14:1303:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:14:1303:19 | &... | TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1303:15:1303:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1303:15:1303:19 | &self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:15:1303:19 | &self | TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1303:16:1303:19 | self | | {EXTERNAL LOCATION} | & | | main.rs:1303:16:1303:19 | self | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1306:15:1306:15 | x | | {EXTERNAL LOCATION} | & | @@ -2473,10 +2452,22 @@ inferCertainType | main.rs:1310:15:1310:15 | x | | {EXTERNAL LOCATION} | & | | main.rs:1310:15:1310:15 | x | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1310:34:1312:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1310:34:1312:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1310:34:1312:9 | { ... } | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1310:34:1312:9 | { ... } | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1310:34:1312:9 | { ... } | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1310:34:1312:9 | { ... } | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1311:13:1311:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1311:13:1311:16 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:13:1311:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:13:1311:16 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:13:1311:16 | &... | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1311:14:1311:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1311:14:1311:16 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:14:1311:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:14:1311:16 | &... | TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1311:15:1311:16 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1311:15:1311:16 | &x | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:15:1311:16 | &x | TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1311:16:1311:16 | x | | {EXTERNAL LOCATION} | & | | main.rs:1311:16:1311:16 | x | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1315:16:1328:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -2484,78 +2475,64 @@ inferCertainType | 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:1318:9:1318:9 | x | | main.rs:1295:5:1295:13 | S | -| main.rs:1319:9:1319:17 | ...::f3(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1319:9:1319:17 | ...::f3(...) | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1319:15:1319:16 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1319:15:1319:16 | &x | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1319:16:1319:16 | x | | main.rs:1295:5:1295:13 | S | | main.rs:1321:19:1321:24 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1321:19:1321:24 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1321:19:1321:24 | &... | TRef.TRef | {EXTERNAL LOCATION} | bool | | main.rs:1321:20:1321:24 | &true | | {EXTERNAL LOCATION} | & | +| main.rs:1321:20:1321:24 | &true | TRef | {EXTERNAL LOCATION} | bool | | main.rs:1321:21:1321:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1326:9:1326:31 | ...::flip(...) | | {EXTERNAL LOCATION} | () | | main.rs:1326:22:1326:30 | &mut flag | | {EXTERNAL LOCATION} | &mut | +| main.rs:1327:9:1327:30 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1327:18:1327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1327:18:1327:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1327:18:1327:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1327:18:1327:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1342:43:1345:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1342:43:1345:5 | { ... } | E | main.rs:1334:5:1335:14 | S1 | -| main.rs:1342:43:1345:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | -| main.rs:1349:46:1353:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1349:46:1353:5 | { ... } | E | main.rs:1337:5:1338:14 | S2 | -| main.rs:1349:46:1353:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | -| main.rs:1357:40:1362:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1357:40:1362:5 | { ... } | E | main.rs:1337:5:1338:14 | S2 | -| main.rs:1357:40:1362:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1327:18:1327:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1360:24:1360:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn Fn | +| main.rs:1360:24:1360:28 | \|...\| s | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | main.rs:1366:30:1366:34 | input | | {EXTERNAL LOCATION} | Result | | main.rs:1366:30:1366:34 | input | E | main.rs:1334:5:1335:14 | S1 | | main.rs:1366:30:1366:34 | input | T | main.rs:1366:20:1366:27 | T | -| main.rs:1366:69:1373:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1366:69:1373:5 | { ... } | E | main.rs:1334:5:1335:14 | S1 | -| main.rs:1366:69:1373:5 | { ... } | T | main.rs:1366:20:1366:27 | T | | main.rs:1367:21:1367:25 | input | | {EXTERNAL LOCATION} | Result | | main.rs:1367:21:1367:25 | input | E | main.rs:1334:5:1335:14 | S1 | | main.rs:1367:21:1367:25 | input | T | main.rs:1366:20:1366:27 | T | | main.rs:1368:49:1371:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| main.rs:1368:49:1371:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:1369:13:1369:31 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1369:22:1369:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1369:22:1369:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1369:22:1369:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1369:22:1369:30 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1369:22:1369:30 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1376:16:1392:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1377:9:1379:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1377:37:1377:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1377:37:1377:52 | try_same_error(...) | E | main.rs:1334:5:1335:14 | S1 | -| main.rs:1377:37:1377:52 | try_same_error(...) | T | main.rs:1334:5:1335:14 | S1 | | main.rs:1377:54:1379:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1378:13:1378:36 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1378:22:1378:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1378:22:1378:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1378:22:1378:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1378:22:1378:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1378:22:1378:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1381:9:1383:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1381:37:1381:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1381:37:1381:55 | try_convert_error(...) | E | main.rs:1337:5:1338:14 | S2 | -| main.rs:1381:37:1381:55 | try_convert_error(...) | T | main.rs:1334:5:1335:14 | S1 | | main.rs:1381:57:1383:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1382:13:1382:36 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1382:22:1382:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1382:22:1382:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1382:22:1382:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1382:22:1382:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1382:22:1382:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1385:9:1387:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1385:37:1385:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1385:37:1385:49 | try_chained(...) | E | main.rs:1337:5:1338:14 | S2 | -| main.rs:1385:37:1385:49 | try_chained(...) | T | main.rs:1334:5:1335:14 | S1 | | main.rs:1385:51:1387:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1386:13:1386:36 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1386:22:1386:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1386:22:1386:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1386:22:1386:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1386:22:1386:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1386:22:1386:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1389:9:1391:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1389:37:1389:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1389:37:1389:63 | try_complex(...) | E | main.rs:1334:5:1335:14 | S1 | | main.rs:1389:65:1391:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1390:13:1390:36 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1390:22:1390:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1390:22:1390:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1390:22:1390:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1390:22:1390:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1390:22:1390:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1396:16:1487:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1397:13:1397:13 | x | | {EXTERNAL LOCATION} | i32 | @@ -2578,103 +2555,78 @@ inferCertainType | main.rs:1414:26:1414:30 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1414:26:1414:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:1414:26:1414:30 | SelfParam | TRef.TArray | main.rs:1413:14:1413:23 | T | -| main.rs:1414:39:1416:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1414:39:1416:13 | { ... } | TRef | main.rs:1413:14:1413:23 | T | | main.rs:1415:17:1415:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:1415:17:1415:20 | self | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:1415:17:1415:20 | self | TRef.TArray | main.rs:1413:14:1413:23 | T | -| main.rs:1418:31:1420:13 | { ... } | | main.rs:1413:14:1413:23 | T | | main.rs:1423:17:1423:25 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1424:13:1424:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1424:17:1424:47 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1424:37:1424:46 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1424:37:1424:46 | &... | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:1424:38:1424:46 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1425:13:1425:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1425:17:1425:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1428:26:1428:30 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1428:26:1428:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [] | | main.rs:1428:26:1428:30 | SelfParam | TRef.TSlice | main.rs:1427:14:1427:23 | T | -| main.rs:1428:39:1430:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1428:39:1430:13 | { ... } | TRef | main.rs:1427:14:1427:23 | T | | main.rs:1429:17:1429:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:1429:17:1429:20 | self | TRef | {EXTERNAL LOCATION} | [] | | main.rs:1429:17:1429:20 | self | TRef.TSlice | main.rs:1427:14:1427:23 | T | -| main.rs:1432:31:1434:13 | { ... } | | main.rs:1427:14:1427:23 | T | | main.rs:1437:13:1437:13 | s | | {EXTERNAL LOCATION} | & | | main.rs:1437:13:1437:13 | s | TRef | {EXTERNAL LOCATION} | [] | | main.rs:1437:13:1437:13 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | main.rs:1437:25:1437:34 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1437:25:1437:34 | &... | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:1437:26:1437:34 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:1438:17:1438:17 | s | | {EXTERNAL LOCATION} | & | | main.rs:1438:17:1438:17 | s | TRef | {EXTERNAL LOCATION} | [] | | main.rs:1438:17:1438:17 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | -| main.rs:1439:13:1439:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1439:17:1439:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1439:34:1439:34 | s | | {EXTERNAL LOCATION} | & | | main.rs:1439:34:1439:34 | s | TRef | {EXTERNAL LOCATION} | [] | | main.rs:1439:34:1439:34 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | -| main.rs:1440:13:1440:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1440:17:1440:34 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1443:26:1443:30 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1443:26:1443:30 | SelfParam | TRef | {EXTERNAL LOCATION} | (T_2) | | main.rs:1443:26:1443:30 | SelfParam | TRef.T0 | main.rs:1442:14:1442:23 | T | | main.rs:1443:26:1443:30 | SelfParam | TRef.T1 | {EXTERNAL LOCATION} | i32 | | main.rs:1443:39:1445:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1443:39:1445:13 | { ... } | TRef | main.rs:1442:14:1442:23 | T | | main.rs:1444:17:1444:23 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1444:18:1444:21 | self | | {EXTERNAL LOCATION} | & | | main.rs:1444:18:1444:21 | self | TRef | {EXTERNAL LOCATION} | (T_2) | | main.rs:1444:18:1444:21 | self | TRef.T0 | main.rs:1442:14:1442:23 | T | | main.rs:1444:18:1444:21 | self | TRef.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1447:31:1449:13 | { ... } | | main.rs:1442:14:1442:23 | T | | main.rs:1452:13:1452:13 | p | | {EXTERNAL LOCATION} | (T_2) | | main.rs:1452:17:1452:23 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | main.rs:1453:17:1453:17 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1454:13:1454:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1454:17:1454:39 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1454:37:1454:38 | &p | | {EXTERNAL LOCATION} | & | +| main.rs:1454:37:1454:38 | &p | TRef | {EXTERNAL LOCATION} | (T_2) | | main.rs:1454:38:1454:38 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1455:13:1455:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1455:17:1455:39 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1458:26:1458:30 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1458:26:1458:30 | SelfParam | TRef | {EXTERNAL LOCATION} | & | | main.rs:1458:26:1458:30 | SelfParam | TRef.TRef | main.rs:1457:14:1457:23 | T | -| main.rs:1458:39:1460:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1458:39:1460:13 | { ... } | TRef | main.rs:1457:14:1457:23 | T | | main.rs:1459:18:1459:21 | self | | {EXTERNAL LOCATION} | & | | main.rs:1459:18:1459:21 | self | TRef | {EXTERNAL LOCATION} | & | | main.rs:1459:18:1459:21 | self | TRef.TRef | main.rs:1457:14:1457:23 | T | -| main.rs:1462:31:1464:13 | { ... } | | main.rs:1457:14:1457:23 | T | | main.rs:1467:13:1467:13 | r | | {EXTERNAL LOCATION} | & | | main.rs:1467:17:1467:19 | &42 | | {EXTERNAL LOCATION} | & | | main.rs:1468:17:1468:17 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1469:13:1469:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1469:17:1469:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1469:33:1469:34 | &r | | {EXTERNAL LOCATION} | & | +| main.rs:1469:33:1469:34 | &r | TRef | {EXTERNAL LOCATION} | & | | main.rs:1469:34:1469:34 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1470:13:1470:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1470:17:1470:33 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1473:26:1473:30 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1473:26:1473:30 | SelfParam | TRef | {EXTERNAL LOCATION} | *mut | | main.rs:1473:26:1473:30 | SelfParam | TRef.TPtrMut | main.rs:1472:14:1472:23 | T | | main.rs:1473:39:1475:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1473:39:1475:13 | { ... } | TRef | main.rs:1472:14:1472:23 | T | +| main.rs:1474:17:1474:34 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1474:26:1474:32 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1474:29:1474:32 | self | | {EXTERNAL LOCATION} | & | | main.rs:1474:29:1474:32 | self | TRef | {EXTERNAL LOCATION} | *mut | | main.rs:1474:29:1474:32 | self | TRef.TPtrMut | main.rs:1472:14:1472:23 | T | -| main.rs:1477:31:1479:13 | { ... } | | main.rs:1472:14:1472:23 | T | | main.rs:1483:13:1483:13 | p | | {EXTERNAL LOCATION} | *mut | | main.rs:1483:13:1483:13 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | | main.rs:1483:27:1483:32 | &mut v | | {EXTERNAL LOCATION} | &mut | | main.rs:1484:26:1484:26 | p | | {EXTERNAL LOCATION} | *mut | | main.rs:1484:26:1484:26 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1485:26:1485:48 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1485:46:1485:47 | &p | | {EXTERNAL LOCATION} | & | +| main.rs:1485:46:1485:47 | &p | TRef | {EXTERNAL LOCATION} | *mut | +| main.rs:1485:46:1485:47 | &p | TRef.TPtrMut | {EXTERNAL LOCATION} | i32 | | main.rs:1485:47:1485:47 | p | | {EXTERNAL LOCATION} | *mut | | main.rs:1485:47:1485:47 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1486:13:1486:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1486:17:1486:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1492:16:1504:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1493:13:1493:13 | x | | {EXTERNAL LOCATION} | bool | | main.rs:1493:17:1493:20 | true | | {EXTERNAL LOCATION} | bool | @@ -2685,7 +2637,11 @@ inferCertainType | main.rs:1494:17:1494:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | | main.rs:1494:25:1494:29 | false | | {EXTERNAL LOCATION} | bool | | main.rs:1498:17:1500:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1499:17:1499:17 | z | | {EXTERNAL LOCATION} | () | +| main.rs:1499:21:1499:27 | (...) | | {EXTERNAL LOCATION} | () | +| main.rs:1499:22:1499:26 | ... = ... | | {EXTERNAL LOCATION} | () | | main.rs:1500:16:1502:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1501:13:1501:17 | ... = ... | | {EXTERNAL LOCATION} | () | | main.rs:1517:30:1519:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1518:13:1518:31 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1525:16:1525:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | @@ -2702,9 +2658,11 @@ inferCertainType | main.rs:1535:45:1538:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1536:13:1536:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1536:13:1536:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1536:13:1536:27 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:1536:23:1536:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1537:13:1537:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1537:13:1537:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1537:13:1537:27 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:1537:23:1537:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1543:16:1543:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1543:22:1543:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | @@ -2720,9 +2678,11 @@ inferCertainType | main.rs:1553:45:1556:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1554:13:1554:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1554:13:1554:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1554:13:1554:27 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:1554:23:1554:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1555:13:1555:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1555:13:1555:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1555:13:1555:27 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:1555:23:1555:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1561:16:1561:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1561:22:1561:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | @@ -2738,9 +2698,11 @@ inferCertainType | main.rs:1570:45:1573:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1571:13:1571:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1571:13:1571:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1571:13:1571:27 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:1571:23:1571:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1572:13:1572:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1572:13:1572:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1572:13:1572:27 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:1572:23:1572:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1578:16:1578:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1578:22:1578:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | @@ -2756,9 +2718,11 @@ inferCertainType | main.rs:1587:45:1590:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1588:13:1588:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1588:13:1588:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1588:13:1588:27 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:1588:23:1588:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1589:13:1589:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1589:13:1589:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1589:13:1589:27 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:1589:23:1589:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1595:16:1595:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1595:22:1595:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | @@ -2774,9 +2738,11 @@ inferCertainType | main.rs:1604:45:1607:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1605:13:1605:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1605:13:1605:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1605:13:1605:27 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:1605:23:1605:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1606:13:1606:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1606:13:1606:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1606:13:1606:27 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:1606:23:1606:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1612:19:1612:22 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1612:25:1612:27 | rhs | | main.rs:1510:5:1515:5 | Vec2 | @@ -2792,9 +2758,11 @@ inferCertainType | main.rs:1621:48:1624:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1622:13:1622:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1622:13:1622:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1622:13:1622:27 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:1622:23:1622:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1623:13:1623:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1623:13:1623:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1623:13:1623:27 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:1623:23:1623:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1629:18:1629:21 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1629:24:1629:26 | rhs | | main.rs:1510:5:1515:5 | Vec2 | @@ -2810,9 +2778,11 @@ inferCertainType | main.rs:1638:47:1641:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1639:13:1639:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1639:13:1639:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1639:13:1639:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:1639:23:1639:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1640:13:1640:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1640:13:1640:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1640:13:1640:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:1640:23:1640:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1646:19:1646:22 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1646:25:1646:27 | rhs | | main.rs:1510:5:1515:5 | Vec2 | @@ -2828,9 +2798,11 @@ inferCertainType | main.rs:1655:48:1658:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1656:13:1656:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1656:13:1656:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1656:13:1656:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:1656:23:1656:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1657:13:1657:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1657:13:1657:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1657:13:1657:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:1657:23:1657:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1663:16:1663:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1663:22:1663:24 | rhs | | {EXTERNAL LOCATION} | u32 | @@ -2846,9 +2818,11 @@ inferCertainType | main.rs:1672:44:1675:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1673:13:1673:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1673:13:1673:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1673:13:1673:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:1673:24:1673:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1674:13:1674:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1674:13:1674:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1674:13:1674:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:1674:24:1674:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1680:16:1680:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1680:22:1680:24 | rhs | | {EXTERNAL LOCATION} | u32 | @@ -2864,9 +2838,11 @@ inferCertainType | main.rs:1689:44:1692:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1690:13:1690:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1690:13:1690:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1690:13:1690:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:1690:24:1690:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1691:13:1691:16 | self | | {EXTERNAL LOCATION} | &mut | | main.rs:1691:13:1691:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1691:13:1691:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:1691:24:1691:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1697:16:1697:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1697:30:1702:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | @@ -2914,8 +2890,6 @@ inferCertainType | main.rs:1726:24:1726:28 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1726:31:1726:35 | other | | {EXTERNAL LOCATION} | & | | main.rs:1726:31:1726:35 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | -| main.rs:1726:75:1728:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1726:75:1728:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | | main.rs:1727:14:1727:17 | self | | {EXTERNAL LOCATION} | & | | main.rs:1727:14:1727:17 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1727:23:1727:26 | self | | {EXTERNAL LOCATION} | & | @@ -2991,7 +2965,6 @@ inferCertainType | main.rs:1743:44:1743:48 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1747:26:1747:26 | a | | main.rs:1747:18:1747:23 | T | | main.rs:1747:32:1747:32 | b | | main.rs:1747:18:1747:23 | T | -| main.rs:1747:51:1749:5 | { ... } | | main.rs:1747:18:1747:23 | T::Output[Add] | | main.rs:1748:9:1748:9 | a | | main.rs:1747:18:1747:23 | T | | main.rs:1748:13:1748:13 | b | | main.rs:1747:18:1747:23 | T | | main.rs:1751:16:1882:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -3022,22 +2995,27 @@ inferCertainType | main.rs:1771:17:1771:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1771:34:1771:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1772:9:1772:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:9:1772:31 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:1772:27:1772:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1774:17:1774:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1774:34:1774:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1775:9:1775:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1775:9:1775:31 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:1775:27:1775:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1777:17:1777:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1777:34:1777:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1778:9:1778:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1778:9:1778:31 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:1778:27:1778:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1780:17:1780:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1780:34:1780:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1781:9:1781:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1781:9:1781:31 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:1781:27:1781:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1783:17:1783:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1783:34:1783:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1784:9:1784:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:9:1784:31 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:1784:27:1784:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1787:26:1787:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1787:34:1787:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | @@ -3052,22 +3030,27 @@ inferCertainType | main.rs:1794:17:1794:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1794:37:1794:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1795:9:1795:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1795:9:1795:34 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:1795:30:1795:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1797:17:1797:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1797:36:1797:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1798:9:1798:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:9:1798:33 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:1798:29:1798:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1800:17:1800:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1800:37:1800:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1801:9:1801:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1801:9:1801:34 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:1801:30:1801:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1803:17:1803:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1803:34:1803:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1804:9:1804:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1804:9:1804:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:1804:28:1804:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1806:17:1806:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:1806:34:1806:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1807:9:1807:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:9:1807:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:1807:28:1807:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1809:24:1809:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1810:24:1810:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | @@ -3100,22 +3083,27 @@ inferCertainType | main.rs:1832:17:1832:31 | vec2_add_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1832:35:1832:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1833:9:1833:23 | vec2_add_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1833:9:1833:29 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:1833:28:1833:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1835:17:1835:31 | vec2_sub_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1835:35:1835:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1836:9:1836:23 | vec2_sub_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1836:9:1836:29 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:1836:28:1836:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1838:17:1838:31 | vec2_mul_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1838:35:1838:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1839:9:1839:23 | vec2_mul_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1839:9:1839:29 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:1839:28:1839:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1841:17:1841:31 | vec2_div_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1841:35:1841:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1842:9:1842:23 | vec2_div_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1842:9:1842:29 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:1842:28:1842:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1844:17:1844:31 | vec2_rem_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1844:35:1844:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1845:9:1845:23 | vec2_rem_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1845:9:1845:29 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:1845:28:1845:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1848:27:1848:28 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1848:32:1848:33 | v2 | | main.rs:1510:5:1515:5 | Vec2 | @@ -3130,22 +3118,27 @@ inferCertainType | main.rs:1855:17:1855:34 | vec2_bitand_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1855:38:1855:39 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1856:9:1856:26 | vec2_bitand_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1856:9:1856:32 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:1856:31:1856:32 | v2 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1858:17:1858:33 | vec2_bitor_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1858:37:1858:38 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1859:9:1859:25 | vec2_bitor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1859:9:1859:31 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:1859:30:1859:31 | v2 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1861:17:1861:34 | vec2_bitxor_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1861:38:1861:39 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1862:9:1862:26 | vec2_bitxor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1862:9:1862:32 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:1862:31:1862:32 | v2 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1864:17:1864:31 | vec2_shl_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1864:35:1864:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1865:9:1865:23 | vec2_shl_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1865:9:1865:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:1865:29:1865:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | | main.rs:1867:17:1867:31 | vec2_shr_assign | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1867:35:1867:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1868:9:1868:23 | vec2_shr_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1868:9:1868:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:1868:29:1868:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | | main.rs:1871:25:1871:26 | v1 | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1872:25:1872:26 | v1 | | main.rs:1510:5:1515:5 | Vec2 | @@ -3153,8 +3146,10 @@ inferCertainType | main.rs:1881:30:1881:48 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1891:18:1891:21 | SelfParam | | main.rs:1888:5:1888:14 | S1 | | main.rs:1891:24:1891:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1894:25:1896:5 | { ... } | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1898:41:1900:5 | { ... } | | {EXTERNAL LOCATION} | dyn Future | | main.rs:1899:9:1899:20 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1902:41:1904:5 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1902:41:1904:5 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | | main.rs:1903:9:1903:16 | { ... } | | {EXTERNAL LOCATION} | dyn Future | | main.rs:1903:9:1903:16 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | | main.rs:1912:13:1912:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | @@ -3162,14 +3157,7 @@ inferCertainType | main.rs:1912:13:1912:42 | SelfParam | Ptr.TRefMut | main.rs:1906:5:1906:14 | S2 | | main.rs:1913:13:1913:15 | _cx | | {EXTERNAL LOCATION} | &mut | | main.rs:1913:13:1913:15 | _cx | TRefMut | {EXTERNAL LOCATION} | Context | -| main.rs:1914:44:1916:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:1914:44:1916:9 | { ... } | T | main.rs:1888:5:1888:14 | S1 | | main.rs:1923:22:1931:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1924:9:1924:12 | f1(...) | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1924:9:1924:12 | f1(...) | dyn(Output) | main.rs:1888:5:1888:14 | S1 | -| main.rs:1925:9:1925:12 | f2(...) | | main.rs:1898:16:1898:39 | impl ... | -| main.rs:1926:9:1926:12 | f3(...) | | main.rs:1902:16:1902:39 | impl ... | -| main.rs:1927:9:1927:12 | f4(...) | | main.rs:1919:16:1919:39 | impl ... | | main.rs:1929:13:1929:13 | b | | {EXTERNAL LOCATION} | dyn Future | | main.rs:1929:17:1929:28 | { ... } | | {EXTERNAL LOCATION} | dyn Future | | main.rs:1930:9:1930:9 | b | | {EXTERNAL LOCATION} | dyn Future | @@ -3189,63 +3177,30 @@ inferCertainType | main.rs:1961:18:1961:22 | SelfParam | TRef | main.rs:1960:5:1962:5 | Self [trait MyTrait] | | main.rs:1965:18:1965:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1965:18:1965:22 | SelfParam | TRef | main.rs:1935:5:1936:14 | S1 | -| main.rs:1965:31:1967:9 | { ... } | | main.rs:1937:5:1937:14 | S2 | | main.rs:1971:18:1971:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1971:18:1971:22 | SelfParam | TRef | main.rs:1938:5:1938:22 | S3 | | main.rs:1971:18:1971:22 | SelfParam | TRef.T3 | main.rs:1970:10:1970:17 | T | -| main.rs:1971:30:1974:9 | { ... } | | main.rs:1970:10:1970:17 | T | | main.rs:1972:25:1972:28 | self | | {EXTERNAL LOCATION} | & | | main.rs:1972:25:1972:28 | self | TRef | main.rs:1938:5:1938:22 | S3 | | main.rs:1972:25:1972:28 | self | TRef.T3 | main.rs:1970:10:1970:17 | T | | main.rs:1981:41:1981:41 | t | | main.rs:1981:26:1981:38 | B | -| main.rs:1981:52:1983:5 | { ... } | | main.rs:1981:23:1981:23 | A | | main.rs:1982:9:1982:9 | t | | main.rs:1981:26:1981:38 | B | | main.rs:1985:34:1985:34 | x | | main.rs:1985:24:1985:31 | T | -| main.rs:1985:59:1987:5 | { ... } | | main.rs:1985:43:1985:57 | impl ... | -| main.rs:1985:59:1987:5 | { ... } | impl(T) | main.rs:1985:24:1985:31 | T | | main.rs:1986:12:1986:12 | x | | main.rs:1985:24:1985:31 | T | | main.rs:1989:34:1989:34 | x | | main.rs:1989:24:1989:31 | T | -| main.rs:1989:67:1991:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1989:67:1991:5 | { ... } | T | main.rs:1989:50:1989:64 | impl ... | -| main.rs:1989:67:1991:5 | { ... } | T.impl(T) | main.rs:1989:24:1989:31 | T | | main.rs:1990:17:1990:17 | x | | main.rs:1989:24:1989:31 | T | | main.rs:1993:34:1993:34 | x | | main.rs:1993:24:1993:31 | T | | main.rs:1993:78:1995:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1993:78:1995:5 | { ... } | T0 | main.rs:1993:44:1993:58 | impl ... | -| main.rs:1993:78:1995:5 | { ... } | T0.impl(T) | main.rs:1993:24:1993:31 | T | -| main.rs:1993:78:1995:5 | { ... } | T1 | main.rs:1993:61:1993:75 | impl ... | -| main.rs:1993:78:1995:5 | { ... } | T1.impl(T) | main.rs:1993:24:1993:31 | T | | main.rs:1994:9:1994:30 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | main.rs:1994:13:1994:13 | x | | main.rs:1993:24:1993:31 | T | | main.rs:1994:28:1994:28 | x | | main.rs:1993:24:1993:31 | T | | main.rs:1997:26:1997:26 | t | | main.rs:1997:29:1997:43 | impl ... | -| main.rs:1997:51:1999:5 | { ... } | | main.rs:1997:23:1997:23 | A | | main.rs:1998:9:1998:9 | t | | main.rs:1997:29:1997:43 | impl ... | | main.rs:2001:16:2015:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2002:13:2002:13 | x | | main.rs:1956:16:1956:35 | impl ... + ... | -| main.rs:2002:17:2002:20 | f1(...) | | main.rs:1956:16:1956:35 | impl ... + ... | -| main.rs:2003:9:2003:9 | x | | main.rs:1956:16:1956:35 | impl ... + ... | -| main.rs:2004:9:2004:9 | x | | main.rs:1956:16:1956:35 | impl ... + ... | -| main.rs:2005:13:2005:13 | a | | main.rs:1977:28:1977:43 | impl ... | -| main.rs:2005:17:2005:32 | get_a_my_trait(...) | | main.rs:1977:28:1977:43 | impl ... | -| main.rs:2006:32:2006:32 | a | | main.rs:1977:28:1977:43 | impl ... | -| main.rs:2007:13:2007:13 | a | | main.rs:1977:28:1977:43 | impl ... | -| main.rs:2007:17:2007:32 | get_a_my_trait(...) | | main.rs:1977:28:1977:43 | impl ... | -| main.rs:2008:32:2008:32 | a | | main.rs:1977:28:1977:43 | impl ... | -| main.rs:2010:17:2010:35 | get_a_my_trait2(...) | | main.rs:1985:43:1985:57 | impl ... | -| main.rs:2013:17:2013:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2013:17:2013:35 | get_a_my_trait3(...) | T | main.rs:1989:50:1989:64 | impl ... | -| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | T0 | main.rs:1993:44:1993:58 | impl ... | -| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | T1 | main.rs:1993:61:1993:75 | impl ... | | main.rs:2025:16:2025:20 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2025:16:2025:20 | SelfParam | TRef | main.rs:2021:5:2022:13 | S | -| main.rs:2025:31:2027:9 | { ... } | | main.rs:2021:5:2022:13 | S | | main.rs:2036:26:2038:9 | { ... } | | main.rs:2030:5:2033:5 | MyVec | -| main.rs:2036:26:2038:9 | { ... } | T | main.rs:2035:10:2035:10 | T | | main.rs:2037:13:2037:38 | MyVec {...} | | main.rs:2030:5:2033:5 | MyVec | -| main.rs:2037:27:2037:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2037:27:2037:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2040:17:2040:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | | main.rs:2040:17:2040:25 | SelfParam | TRefMut | main.rs:2030:5:2033:5 | MyVec | | main.rs:2040:17:2040:25 | SelfParam | TRefMut.T | main.rs:2035:10:2035:10 | T | @@ -3260,7 +3215,6 @@ inferCertainType | main.rs:2049:18:2049:22 | SelfParam | TRef.T | main.rs:2045:10:2045:10 | T | | main.rs:2049:25:2049:29 | index | | {EXTERNAL LOCATION} | usize | | main.rs:2049:56:2051:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2049:56:2051:9 | { ... } | TRef | main.rs:2045:10:2045:10 | T | | main.rs:2050:13:2050:29 | &... | | {EXTERNAL LOCATION} | & | | main.rs:2050:14:2050:17 | self | | {EXTERNAL LOCATION} | & | | main.rs:2050:14:2050:17 | self | TRef | main.rs:2030:5:2033:5 | MyVec | @@ -3275,28 +3229,22 @@ inferCertainType | main.rs:2055:17:2055:21 | slice | TRef.TSlice | main.rs:2021:5:2022:13 | S | | main.rs:2058:37:2058:37 | a | | main.rs:2058:20:2058:34 | T | | main.rs:2058:43:2058:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2061:5:2063:5 | { ... } | | main.rs:2058:20:2058:34 | T::Output[Index] | | main.rs:2062:9:2062:9 | a | | main.rs:2058:20:2058:34 | T | | main.rs:2062:11:2062:11 | b | | {EXTERNAL LOCATION} | usize | | main.rs:2065:16:2076:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2066:17:2066:19 | vec | | main.rs:2030:5:2033:5 | MyVec | -| main.rs:2066:23:2066:34 | ...::new(...) | | main.rs:2030:5:2033:5 | MyVec | -| main.rs:2067:9:2067:11 | vec | | main.rs:2030:5:2033:5 | MyVec | -| main.rs:2068:9:2068:11 | vec | | main.rs:2030:5:2033:5 | MyVec | | main.rs:2070:13:2070:14 | xs | | {EXTERNAL LOCATION} | [;] | | main.rs:2070:13:2070:14 | xs | TArray | main.rs:2021:5:2022:13 | S | | main.rs:2070:26:2070:28 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2071:17:2071:18 | xs | | {EXTERNAL LOCATION} | [;] | | main.rs:2071:17:2071:18 | xs | TArray | main.rs:2021:5:2022:13 | S | -| main.rs:2073:29:2073:31 | vec | | main.rs:2030:5:2033:5 | MyVec | -| main.rs:2075:9:2075:26 | analyze_slice(...) | | {EXTERNAL LOCATION} | () | | main.rs:2075:23:2075:25 | &xs | | {EXTERNAL LOCATION} | & | +| main.rs:2075:23:2075:25 | &xs | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2075:23:2075:25 | &xs | TRef.TArray | main.rs:2021:5:2022:13 | S | | main.rs:2075:24:2075:25 | xs | | {EXTERNAL LOCATION} | [;] | | main.rs:2075:24:2075:25 | xs | TArray | main.rs:2021:5:2022:13 | S | | main.rs:2080:16:2082:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2081:25:2081:35 | "Hello, {}" | | {EXTERNAL LOCATION} | & | | main.rs:2081:25:2081:35 | "Hello, {}" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2081:25:2081:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | | main.rs:2081:38:2081:45 | "World!" | | {EXTERNAL LOCATION} | & | | main.rs:2081:38:2081:45 | "World!" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2090:19:2090:22 | SelfParam | | main.rs:2086:5:2091:5 | Self [trait MyAdd] | @@ -3308,19 +3256,15 @@ inferCertainType | main.rs:2106:19:2106:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | | main.rs:2106:25:2106:29 | value | | {EXTERNAL LOCATION} | & | | main.rs:2106:25:2106:29 | value | TRef | {EXTERNAL LOCATION} | i64 | -| main.rs:2106:46:2108:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2107:14:2107:18 | value | | {EXTERNAL LOCATION} | & | | main.rs:2107:14:2107:18 | value | TRef | {EXTERNAL LOCATION} | i64 | | main.rs:2115:19:2115:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | | main.rs:2115:25:2115:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2115:46:2121:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2116:16:2116:20 | value | | {EXTERNAL LOCATION} | bool | | main.rs:2130:19:2130:22 | SelfParam | | main.rs:2124:5:2124:19 | S | | main.rs:2130:19:2130:22 | SelfParam | T | main.rs:2126:10:2126:17 | T | | main.rs:2130:25:2130:29 | other | | main.rs:2124:5:2124:19 | S | | main.rs:2130:25:2130:29 | other | T | main.rs:2126:10:2126:17 | T | -| main.rs:2130:54:2132:9 | { ... } | | main.rs:2124:5:2124:19 | S | -| main.rs:2130:54:2132:9 | { ... } | T | main.rs:2126:10:2126:17 | T::Output[MyAdd] | | main.rs:2131:16:2131:19 | self | | main.rs:2124:5:2124:19 | S | | main.rs:2131:16:2131:19 | self | T | main.rs:2126:10:2126:17 | T | | main.rs:2131:31:2131:35 | other | | main.rs:2124:5:2124:19 | S | @@ -3328,8 +3272,6 @@ inferCertainType | main.rs:2139:19:2139:22 | SelfParam | | main.rs:2124:5:2124:19 | S | | main.rs:2139:19:2139:22 | SelfParam | T | main.rs:2135:10:2135:17 | T | | main.rs:2139:25:2139:29 | other | | main.rs:2135:10:2135:17 | T | -| main.rs:2139:51:2141:9 | { ... } | | main.rs:2124:5:2124:19 | S | -| main.rs:2139:51:2141:9 | { ... } | T | main.rs:2135:10:2135:17 | T::Output[MyAdd] | | main.rs:2140:16:2140:19 | self | | main.rs:2124:5:2124:19 | S | | main.rs:2140:16:2140:19 | self | T | main.rs:2135:10:2135:17 | T | | main.rs:2140:31:2140:35 | other | | main.rs:2135:10:2135:17 | T | @@ -3337,8 +3279,6 @@ inferCertainType | main.rs:2151:19:2151:22 | SelfParam | T | main.rs:2144:14:2144:14 | T | | main.rs:2151:25:2151:29 | other | | {EXTERNAL LOCATION} | & | | main.rs:2151:25:2151:29 | other | TRef | main.rs:2144:14:2144:14 | T | -| main.rs:2151:55:2153:9 | { ... } | | main.rs:2124:5:2124:19 | S | -| main.rs:2151:55:2153:9 | { ... } | T | main.rs:2144:14:2144:14 | T::Output[MyAdd] | | main.rs:2152:16:2152:19 | self | | main.rs:2124:5:2124:19 | S | | main.rs:2152:16:2152:19 | self | T | main.rs:2144:14:2144:14 | T | | main.rs:2152:31:2152:35 | other | | {EXTERNAL LOCATION} | & | @@ -3348,7 +3288,6 @@ inferCertainType | main.rs:2163:40:2165:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2164:13:2164:17 | value | | {EXTERNAL LOCATION} | i64 | | main.rs:2170:20:2170:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2170:41:2176:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2171:16:2171:20 | value | | {EXTERNAL LOCATION} | bool | | main.rs:2181:21:2181:25 | value | | main.rs:2179:19:2179:19 | T | | main.rs:2181:31:2181:31 | x | | main.rs:2179:5:2182:5 | Self [trait MyFrom2] | @@ -3363,13 +3302,10 @@ inferCertainType | main.rs:2204:15:2204:15 | x | | main.rs:2202:5:2208:5 | Self [trait MySelfTrait] | | main.rs:2207:15:2207:15 | x | | main.rs:2202:5:2208:5 | Self [trait MySelfTrait] | | main.rs:2212:15:2212:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2212:31:2214:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2213:13:2213:13 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2217:15:2217:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2217:32:2219:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2218:13:2218:13 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2224:15:2224:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2224:31:2226:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2229:15:2229:15 | x | | {EXTERNAL LOCATION} | bool | | main.rs:2229:32:2231:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2230:13:2230:13 | x | | {EXTERNAL LOCATION} | bool | @@ -3379,6 +3315,7 @@ inferCertainType | main.rs:2236:18:2236:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2237:9:2237:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2237:18:2237:22 | &5i64 | | {EXTERNAL LOCATION} | & | +| main.rs:2237:18:2237:22 | &5i64 | TRef | {EXTERNAL LOCATION} | i64 | | main.rs:2237:19:2237:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2238:9:2238:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2238:18:2238:21 | true | | {EXTERNAL LOCATION} | bool | @@ -3388,43 +3325,30 @@ inferCertainType | main.rs:2241:24:2241:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2242:11:2242:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2242:24:2242:28 | &3i64 | | {EXTERNAL LOCATION} | & | +| main.rs:2242:24:2242:28 | &3i64 | TRef | {EXTERNAL LOCATION} | i64 | | main.rs:2242:25:2242:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2244:13:2244:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2244:17:2244:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2244:30:2244:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2245:13:2245:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2245:17:2245:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2245:30:2245:33 | true | | {EXTERNAL LOCATION} | bool | | main.rs:2246:13:2246:13 | z | | {EXTERNAL LOCATION} | i64 | | main.rs:2246:38:2246:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2247:9:2247:34 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | | main.rs:2247:23:2247:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2247:30:2247:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2248:9:2248:33 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | | main.rs:2248:23:2248:26 | true | | {EXTERNAL LOCATION} | bool | | main.rs:2248:29:2248:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2249:9:2249:38 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | | main.rs:2249:27:2249:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2249:34:2249:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2251:9:2251:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2251:17:2251:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2252:9:2252:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2252:17:2252:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2253:9:2253:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2253:18:2253:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2254:9:2254:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | | main.rs:2254:18:2254:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2255:9:2255:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2255:25:2255:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2256:25:2256:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2257:9:2257:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2257:25:2257:28 | true | | {EXTERNAL LOCATION} | bool | | main.rs:2258:25:2258:28 | true | | {EXTERNAL LOCATION} | bool | | main.rs:2266:26:2268:9 | { ... } | | main.rs:2263:5:2263:24 | MyCallable | | main.rs:2267:13:2267:25 | MyCallable {...} | | main.rs:2263:5:2263:24 | MyCallable | | main.rs:2270:17:2270:21 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2270:17:2270:21 | SelfParam | TRef | main.rs:2263:5:2263:24 | MyCallable | -| main.rs:2270:31:2272:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2275:16:2382:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2278:9:2278:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2278:18:2278:26 | [...] | | {EXTERNAL LOCATION} | [;] | @@ -3432,6 +3356,7 @@ inferCertainType | main.rs:2279:9:2279:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2279:18:2279:26 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2279:32:2279:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| main.rs:2279:32:2279:40 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | main.rs:2279:43:2279:44 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2280:9:2280:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2280:18:2280:26 | [...] | | {EXTERNAL LOCATION} | [;] | @@ -3443,10 +3368,13 @@ inferCertainType | main.rs:2283:18:2283:22 | vals1 | | {EXTERNAL LOCATION} | [;] | | main.rs:2283:24:2283:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2285:13:2285:17 | vals2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2285:13:2285:17 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | | main.rs:2285:21:2285:29 | [1u16; 3] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2285:21:2285:29 | [1u16; 3] | TArray | {EXTERNAL LOCATION} | u16 | | main.rs:2285:22:2285:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2286:9:2286:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2286:18:2286:22 | vals2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2286:18:2286:22 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | | main.rs:2286:24:2286:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2288:13:2288:17 | vals3 | | {EXTERNAL LOCATION} | [;] | | main.rs:2288:13:2288:17 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | @@ -3472,10 +3400,12 @@ inferCertainType | main.rs:2294:43:2294:47 | "baz" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2295:9:2295:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2295:18:2295:26 | &strings1 | | {EXTERNAL LOCATION} | & | +| main.rs:2295:18:2295:26 | &strings1 | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:2295:19:2295:26 | strings1 | | {EXTERNAL LOCATION} | [;] | | main.rs:2295:28:2295:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2296:9:2296:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2296:18:2296:30 | &mut strings1 | | {EXTERNAL LOCATION} | &mut | +| main.rs:2296:18:2296:30 | &mut strings1 | TRefMut | {EXTERNAL LOCATION} | [;] | | main.rs:2296:23:2296:30 | strings1 | | {EXTERNAL LOCATION} | [;] | | main.rs:2296:32:2296:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2297:9:2297:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | @@ -3483,38 +3413,32 @@ inferCertainType | main.rs:2297:27:2297:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2299:13:2299:20 | strings2 | | {EXTERNAL LOCATION} | [;] | | main.rs:2300:9:2304:9 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2301:13:2301:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2301:26:2301:30 | "foo" | | {EXTERNAL LOCATION} | & | | main.rs:2301:26:2301:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2302:13:2302:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2302:26:2302:30 | "bar" | | {EXTERNAL LOCATION} | & | | main.rs:2302:26:2302:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2303:13:2303:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2303:26:2303:30 | "baz" | | {EXTERNAL LOCATION} | & | | main.rs:2303:26:2303:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2305:9:2305:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2305:18:2305:25 | strings2 | | {EXTERNAL LOCATION} | [;] | | main.rs:2305:27:2305:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2307:13:2307:20 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2307:13:2307:20 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:2308:9:2312:9 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2308:9:2312:9 | &... | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:2308:10:2312:9 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2309:13:2309:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2309:26:2309:30 | "foo" | | {EXTERNAL LOCATION} | & | | main.rs:2309:26:2309:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2310:13:2310:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2310:26:2310:30 | "bar" | | {EXTERNAL LOCATION} | & | | main.rs:2310:26:2310:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2311:13:2311:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2311:26:2311:30 | "baz" | | {EXTERNAL LOCATION} | & | | main.rs:2311:26:2311:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2313:9:2313:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2313:18:2313:25 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2313:18:2313:25 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:2313:27:2313:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2315:13:2315:21 | callables | | {EXTERNAL LOCATION} | [;] | | main.rs:2315:25:2315:81 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2315:26:2315:42 | ...::new(...) | | main.rs:2263:5:2263:24 | MyCallable | -| main.rs:2315:45:2315:61 | ...::new(...) | | main.rs:2263:5:2263:24 | MyCallable | -| main.rs:2315:64:2315:80 | ...::new(...) | | main.rs:2263:5:2263:24 | MyCallable | | main.rs:2316:9:2320:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2317:12:2317:20 | callables | | {EXTERNAL LOCATION} | [;] | | main.rs:2318:9:2320:9 | { ... } | | {EXTERNAL LOCATION} | () | @@ -3523,6 +3447,7 @@ inferCertainType | main.rs:2324:24:2324:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2325:9:2325:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2325:18:2325:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2325:18:2325:26 | [...] | TArray | {EXTERNAL LOCATION} | Range | | main.rs:2325:19:2325:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | | main.rs:2325:19:2325:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | | main.rs:2325:28:2325:29 | { ... } | | {EXTERNAL LOCATION} | () | @@ -3550,26 +3475,17 @@ inferCertainType | main.rs:2336:25:2336:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2341:9:2341:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2341:24:2341:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2343:13:2343:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2343:13:2343:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2343:13:2343:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2343:32:2343:43 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2343:33:2343:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2343:22:2343:33 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2343:23:2343:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2344:9:2344:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2344:18:2344:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2344:18:2344:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2344:18:2344:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | | main.rs:2344:25:2344:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2346:22:2346:33 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2346:23:2346:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2347:9:2347:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2347:25:2347:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2349:13:2349:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2349:21:2349:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | | main.rs:2349:31:2349:42 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2349:32:2349:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | | main.rs:2350:9:2350:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2350:18:2350:22 | vals5 | | {EXTERNAL LOCATION} | Vec | | main.rs:2350:24:2350:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2352:13:2352:17 | vals6 | | {EXTERNAL LOCATION} | Vec | | main.rs:2352:13:2352:17 | vals6 | A | {EXTERNAL LOCATION} | Global | @@ -3583,65 +3499,34 @@ inferCertainType | main.rs:2353:18:2353:22 | vals6 | T | {EXTERNAL LOCATION} | & | | main.rs:2353:18:2353:22 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | | main.rs:2353:24:2353:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2355:17:2355:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2355:17:2355:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2355:25:2355:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2355:25:2355:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2356:9:2356:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2356:9:2356:13 | vals7 | A | {EXTERNAL LOCATION} | Global | | main.rs:2356:20:2356:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | | main.rs:2357:9:2357:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2357:18:2357:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2357:18:2357:22 | vals7 | A | {EXTERNAL LOCATION} | Global | | main.rs:2357:24:2357:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2361:17:2364:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2361:36:2364:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2362:13:2363:13 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2362:29:2363:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2366:17:2366:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2366:17:2366:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2366:24:2366:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2366:24:2366:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2367:9:2367:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2367:9:2367:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2367:24:2367:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2367:24:2367:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2367:33:2367:37 | "one" | | {EXTERNAL LOCATION} | & | | main.rs:2367:33:2367:37 | "one" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2368:9:2368:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2368:9:2368:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2368:24:2368:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2368:24:2368:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2368:33:2368:37 | "two" | | {EXTERNAL LOCATION} | & | | main.rs:2368:33:2368:37 | "two" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2369:9:2369:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2369:20:2369:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2369:20:2369:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2369:32:2369:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2370:9:2370:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2370:22:2370:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2370:22:2370:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2370:36:2370:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2371:9:2371:42 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2371:13:2371:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2371:29:2371:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2371:29:2371:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2371:41:2371:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2372:9:2372:36 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2372:13:2372:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2372:29:2372:33 | &map1 | | {EXTERNAL LOCATION} | & | -| main.rs:2372:30:2372:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2372:30:2372:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2372:35:2372:36 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2376:17:2376:17 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2378:17:2381:9 | while ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2378:23:2378:23 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2379:9:2381:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2380:13:2380:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2392:40:2394:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2392:40:2394:9 | { ... } | T | main.rs:2386:5:2386:20 | S1 | -| main.rs:2392:40:2394:9 | { ... } | T.T | main.rs:2391:10:2391:19 | T | -| main.rs:2396:30:2398:9 | { ... } | | main.rs:2386:5:2386:20 | S1 | -| main.rs:2396:30:2398:9 | { ... } | T | main.rs:2391:10:2391:19 | T | +| main.rs:2380:13:2380:18 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:2400:19:2400:22 | SelfParam | | main.rs:2386:5:2386:20 | S1 | | main.rs:2400:19:2400:22 | SelfParam | T | main.rs:2391:10:2391:19 | T | | main.rs:2400:33:2402:9 | { ... } | | main.rs:2386:5:2386:20 | S1 | @@ -3655,31 +3540,6 @@ inferCertainType | main.rs:2418:13:2418:14 | x1 | | {EXTERNAL LOCATION} | Option | | main.rs:2418:13:2418:14 | x1 | T | main.rs:2386:5:2386:20 | S1 | | main.rs:2418:13:2418:14 | x1 | T.T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2418:34:2418:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2418:34:2418:48 | ...::assoc_fun(...) | T | main.rs:2386:5:2386:20 | S1 | -| main.rs:2419:13:2419:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2419:13:2419:14 | x2 | T | main.rs:2386:5:2386:20 | S1 | -| main.rs:2419:13:2419:14 | x2 | T.T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2419:18:2419:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2419:18:2419:38 | ...::assoc_fun(...) | T | main.rs:2386:5:2386:20 | S1 | -| main.rs:2419:18:2419:38 | ...::assoc_fun(...) | T.T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2420:13:2420:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2420:13:2420:14 | x3 | T | main.rs:2386:5:2386:20 | S1 | -| main.rs:2420:13:2420:14 | x3 | T.T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2420:18:2420:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2420:18:2420:32 | ...::assoc_fun(...) | T | main.rs:2386:5:2386:20 | S1 | -| main.rs:2420:18:2420:32 | ...::assoc_fun(...) | T.T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2421:13:2421:14 | x4 | | main.rs:2386:5:2386:20 | S1 | -| main.rs:2421:13:2421:14 | x4 | T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2421:18:2421:48 | ...::method(...) | | main.rs:2386:5:2386:20 | S1 | -| main.rs:2421:18:2421:48 | ...::method(...) | T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2421:35:2421:47 | ...::default(...) | | main.rs:2386:5:2386:20 | S1 | -| main.rs:2422:13:2422:14 | x5 | | main.rs:2386:5:2386:20 | S1 | -| main.rs:2422:13:2422:14 | x5 | T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2422:18:2422:42 | ...::method(...) | | main.rs:2386:5:2386:20 | S1 | -| main.rs:2422:18:2422:42 | ...::method(...) | T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2422:29:2422:41 | ...::default(...) | | main.rs:2386:5:2386:20 | S1 | -| main.rs:2426:21:2426:33 | ...::default(...) | | main.rs:2388:5:2389:14 | S2 | | main.rs:2427:13:2427:15 | x10 | | main.rs:2409:5:2411:5 | S5 | | main.rs:2427:13:2427:15 | x10 | T5 | main.rs:2388:5:2389:14 | S2 | | main.rs:2427:19:2430:9 | S5::<...> {...} | | main.rs:2409:5:2411:5 | S5 | @@ -3690,52 +3550,16 @@ inferCertainType | main.rs:2432:19:2432:33 | S5 {...} | | main.rs:2409:5:2411:5 | S5 | | main.rs:2433:13:2433:15 | x13 | | main.rs:2409:5:2411:5 | S5 | | main.rs:2433:19:2436:9 | S5 {...} | | main.rs:2409:5:2411:5 | S5 | -| main.rs:2435:20:2435:32 | ...::default(...) | | main.rs:2388:5:2389:14 | S2 | -| main.rs:2437:13:2437:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2437:19:2437:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2438:13:2438:15 | x15 | | main.rs:2386:5:2386:20 | S1 | -| main.rs:2438:13:2438:15 | x15 | T | main.rs:2388:5:2389:14 | S2 | -| main.rs:2438:19:2438:37 | ...::default(...) | | main.rs:2386:5:2386:20 | S1 | -| main.rs:2438:19:2438:37 | ...::default(...) | T | main.rs:2388:5:2389:14 | S2 | | main.rs:2447:35:2449:9 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2447:35:2449:9 | { ... } | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2447:35:2449:9 | { ... } | T1 | main.rs:2443:5:2444:16 | S1 | | main.rs:2448:13:2448:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2448:14:2448:18 | S1 {...} | | main.rs:2443:5:2444:16 | S1 | | main.rs:2448:21:2448:25 | S1 {...} | | main.rs:2443:5:2444:16 | S1 | | main.rs:2450:16:2450:19 | SelfParam | | main.rs:2443:5:2444:16 | S1 | | main.rs:2450:22:2450:23 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2453:16:2487:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2454:13:2454:13 | a | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2454:13:2454:13 | a | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2454:13:2454:13 | a | T1 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2454:17:2454:30 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2454:17:2454:30 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2454:17:2454:30 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2455:17:2455:17 | b | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2455:17:2455:17 | b | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2455:17:2455:17 | b | T1 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2455:21:2455:34 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2455:21:2455:34 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2455:21:2455:34 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | | main.rs:2456:13:2456:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2456:22:2456:35 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2456:22:2456:35 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2456:22:2456:35 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | | main.rs:2457:13:2457:22 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2457:26:2457:39 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2457:26:2457:39 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2457:26:2457:39 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | | main.rs:2458:13:2458:26 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2458:30:2458:43 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2458:30:2458:43 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2458:30:2458:43 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2460:9:2460:9 | a | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2460:9:2460:9 | a | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2460:9:2460:9 | a | T1 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2461:9:2461:9 | b | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2461:9:2461:9 | b | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2461:9:2461:9 | b | T1 | main.rs:2443:5:2444:16 | S1 | | main.rs:2474:13:2474:16 | pair | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2474:20:2474:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2475:13:2475:13 | i | | {EXTERNAL LOCATION} | i64 | @@ -3744,81 +3568,57 @@ inferCertainType | main.rs:2476:23:2476:26 | pair | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2478:20:2478:25 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2480:13:2480:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2480:23:2480:42 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:2480:30:2480:41 | "unexpected" | | {EXTERNAL LOCATION} | & | | main.rs:2480:30:2480:41 | "unexpected" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2480:30:2480:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2480:30:2480:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2481:18:2481:35 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:2481:25:2481:34 | "expected" | | {EXTERNAL LOCATION} | & | | main.rs:2481:25:2481:34 | "expected" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2481:25:2481:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2481:25:2481:34 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2485:13:2485:13 | y | | {EXTERNAL LOCATION} | & | | main.rs:2485:17:2485:31 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2485:18:2485:31 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2485:18:2485:31 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | -| main.rs:2485:18:2485:31 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | | main.rs:2486:9:2486:9 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2492:27:2514:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2493:13:2493:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2493:13:2493:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2493:27:2493:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2493:27:2493:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2493:36:2493:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2496:15:2496:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2496:15:2496:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | | main.rs:2497:24:2499:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2498:17:2498:37 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:2498:26:2498:36 | "Boxed 100\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2498:26:2498:36 | "Boxed 100\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2498:26:2498:36 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2498:26:2498:36 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2498:26:2498:36 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2500:22:2503:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2502:17:2502:52 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:2502:26:2502:42 | "Boxed value: {}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2502:26:2502:42 | "Boxed value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2502:26:2502:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2502:26:2502:51 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2507:13:2507:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2507:13:2507:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2507:26:2507:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2507:26:2507:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2507:35:2507:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2507:35:2507:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2502:26:2502:51 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2507:44:2507:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2508:15:2508:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2508:15:2508:24 | nested_box | A | {EXTERNAL LOCATION} | Global | | main.rs:2509:26:2512:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2511:17:2511:60 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:2511:26:2511:43 | "Nested boxed: {}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2511:26:2511:43 | "Nested boxed: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2511:26:2511:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2511:26:2511:59 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2511:26:2511:59 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2523:36:2525:9 | { ... } | | main.rs:2520:5:2520:22 | Path | | main.rs:2524:13:2524:19 | Path {...} | | main.rs:2520:5:2520:22 | Path | | main.rs:2527:29:2527:33 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2527:29:2527:33 | SelfParam | TRef | main.rs:2520:5:2520:22 | Path | -| main.rs:2527:59:2529:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2527:59:2529:9 | { ... } | E | {EXTERNAL LOCATION} | () | -| main.rs:2527:59:2529:9 | { ... } | T | main.rs:2532:5:2532:25 | PathBuf | -| main.rs:2528:16:2528:29 | ...::new(...) | | main.rs:2532:5:2532:25 | PathBuf | | main.rs:2535:39:2537:9 | { ... } | | main.rs:2532:5:2532:25 | PathBuf | | main.rs:2536:13:2536:22 | PathBuf {...} | | main.rs:2532:5:2532:25 | PathBuf | | main.rs:2545:18:2545:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2545:18:2545:22 | SelfParam | TRef | main.rs:2532:5:2532:25 | PathBuf | | main.rs:2545:34:2549:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:2545:34:2549:9 | { ... } | TRef | main.rs:2520:5:2520:22 | Path | -| main.rs:2547:33:2547:43 | ...::new(...) | | main.rs:2520:5:2520:22 | Path | +| main.rs:2547:20:2547:23 | path | | main.rs:2520:5:2520:22 | Path | | main.rs:2548:13:2548:17 | &path | | {EXTERNAL LOCATION} | & | +| main.rs:2548:13:2548:17 | &path | TRef | main.rs:2520:5:2520:22 | Path | +| main.rs:2548:14:2548:17 | path | | main.rs:2520:5:2520:22 | Path | | main.rs:2552:16:2560:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2553:13:2553:17 | path1 | | main.rs:2520:5:2520:22 | Path | -| main.rs:2553:21:2553:31 | ...::new(...) | | main.rs:2520:5:2520:22 | Path | -| main.rs:2554:21:2554:25 | path1 | | main.rs:2520:5:2520:22 | Path | -| main.rs:2557:13:2557:20 | pathbuf1 | | main.rs:2532:5:2532:25 | PathBuf | -| main.rs:2557:24:2557:37 | ...::new(...) | | main.rs:2532:5:2532:25 | PathBuf | -| main.rs:2558:24:2558:31 | pathbuf1 | | main.rs:2532:5:2532:25 | PathBuf | | main.rs:2565:14:2565:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2565:14:2565:18 | SelfParam | TRef | main.rs:2564:5:2566:5 | Self [trait MyTrait] | | main.rs:2572:14:2572:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2572:14:2572:18 | SelfParam | TRef | main.rs:2568:5:2569:19 | S | | main.rs:2572:14:2572:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:28:2574:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2573:13:2573:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2573:13:2573:16 | self | TRef | main.rs:2568:5:2569:19 | S | | main.rs:2573:13:2573:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | @@ -3826,7 +3626,6 @@ inferCertainType | main.rs:2578:14:2578:18 | SelfParam | TRef | main.rs:2568:5:2569:19 | S | | main.rs:2578:14:2578:18 | SelfParam | TRef.T | main.rs:2568:5:2569:19 | S | | main.rs:2578:14:2578:18 | SelfParam | TRef.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2578:28:2580:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2579:13:2579:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2579:13:2579:16 | self | TRef | main.rs:2568:5:2569:19 | S | | main.rs:2579:13:2579:16 | self | TRef.T | main.rs:2568:5:2569:19 | S | @@ -3834,53 +3633,40 @@ inferCertainType | main.rs:2584:15:2584:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2584:15:2584:19 | SelfParam | TRef | main.rs:2568:5:2569:19 | S | | main.rs:2584:15:2584:19 | SelfParam | TRef.T | main.rs:2583:10:2583:16 | T | -| main.rs:2584:33:2586:9 | { ... } | | main.rs:2568:5:2569:19 | S | -| main.rs:2584:33:2586:9 | { ... } | T | main.rs:2568:5:2569:19 | S | -| main.rs:2584:33:2586:9 | { ... } | T.T | main.rs:2583:10:2583:16 | T | | main.rs:2585:17:2585:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:2585:17:2585:20 | self | TRef | main.rs:2568:5:2569:19 | S | | main.rs:2585:17:2585:20 | self | TRef.T | main.rs:2583:10:2583:16 | T | | main.rs:2589:14:2589:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2589:48:2606:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2589:48:2606:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:48:2606:5 | { ... } | T | main.rs:2564:5:2566:5 | dyn MyTrait | -| main.rs:2589:48:2606:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2590:20:2590:20 | b | | {EXTERNAL LOCATION} | bool | | main.rs:2600:12:2600:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2602:13:2602:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2602:13:2602:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2604:13:2604:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2604:13:2604:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2610:22:2614:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2611:18:2611:18 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2611:33:2613:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2612:13:2612:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:2619:11:2619:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2619:30:2627:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:13:2621:13 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2621:17:2625:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2622:13:2624:13 | if cond {...} | | {EXTERNAL LOCATION} | () | | main.rs:2622:16:2622:19 | cond | | {EXTERNAL LOCATION} | bool | | main.rs:2622:21:2624:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2630:20:2637:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2635:9:2635:30 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:2635:18:2635:26 | "b: {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2635:18:2635:26 | "b: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2635:18:2635:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2635:18:2635:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2639:20:2641:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2635:18:2635:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2644:11:2644:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2644:30:2652:5 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2645:13:2645:13 | a | | {EXTERNAL LOCATION} | () | | main.rs:2645:17:2649:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2646:13:2648:13 | if cond {...} | | {EXTERNAL LOCATION} | () | | main.rs:2646:16:2646:19 | cond | | {EXTERNAL LOCATION} | bool | | main.rs:2646:21:2648:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2650:9:2650:30 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:2650:18:2650:26 | "a: {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2650:18:2650:26 | "a: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2650:18:2650:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2650:18:2650:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2650:18:2650:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2650:29:2650:29 | a | | {EXTERNAL LOCATION} | () | | main.rs:2660:14:2660:17 | SelfParam | | main.rs:2656:5:2657:13 | S | | main.rs:2660:20:2660:21 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2663:41:2665:5 | { ... } | | main.rs:2663:22:2663:31 | T | | main.rs:2667:16:2720:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2669:13:2669:13 | x | | {EXTERNAL LOCATION} | Option | | main.rs:2669:13:2669:13 | x | T | {EXTERNAL LOCATION} | i32 | @@ -3888,7 +3674,6 @@ inferCertainType | main.rs:2673:26:2673:28 | opt | T | main.rs:2673:23:2673:23 | T | | main.rs:2673:42:2673:42 | x | | main.rs:2673:23:2673:23 | T | | main.rs:2673:48:2673:49 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2676:9:2676:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | | main.rs:2683:13:2683:13 | x | | main.rs:2678:9:2681:9 | MyEither | | main.rs:2683:17:2683:39 | ...::A {...} | | main.rs:2678:9:2681:9 | MyEither | | main.rs:2684:13:2684:13 | x | | main.rs:2678:9:2681:9 | MyEither | @@ -3903,7 +3688,6 @@ inferCertainType | main.rs:2687:13:2687:13 | x | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2687:17:2689:9 | ...::B::<...> {...} | | main.rs:2678:9:2681:9 | MyEither | | main.rs:2687:17:2689:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2688:20:2688:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | | main.rs:2691:29:2691:29 | e | | main.rs:2678:9:2681:9 | MyEither | | main.rs:2691:29:2691:29 | e | T1 | main.rs:2691:26:2691:26 | T | | main.rs:2691:29:2691:29 | e | T2 | {EXTERNAL LOCATION} | String | @@ -3911,8 +3695,6 @@ inferCertainType | main.rs:2691:59:2691:60 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2694:13:2694:13 | x | | main.rs:2678:9:2681:9 | MyEither | | main.rs:2694:17:2696:9 | ...::B {...} | | main.rs:2678:9:2681:9 | MyEither | -| main.rs:2695:20:2695:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2697:9:2697:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | | main.rs:2697:23:2697:23 | x | | main.rs:2678:9:2681:9 | MyEither | | main.rs:2700:13:2700:13 | x | | {EXTERNAL LOCATION} | Result | | main.rs:2700:13:2700:13 | x | E | {EXTERNAL LOCATION} | String | @@ -3922,26 +3704,12 @@ inferCertainType | main.rs:2704:29:2704:31 | res | T | main.rs:2704:23:2704:23 | T | | main.rs:2704:48:2704:48 | x | | main.rs:2704:26:2704:26 | E | | main.rs:2704:54:2704:55 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2707:9:2707:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | | main.rs:2707:23:2707:27 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2709:17:2709:17 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2709:17:2709:17 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2709:21:2709:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2709:21:2709:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2710:9:2710:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2710:9:2710:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2713:9:2713:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2713:9:2713:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2716:9:2716:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2719:9:2719:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2719:9:2719:9 | x | A | {EXTERNAL LOCATION} | Global | | main.rs:2726:14:2726:17 | SelfParam | | main.rs:2724:5:2732:5 | Self [trait MyTrait] | | main.rs:2729:14:2729:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2729:14:2729:18 | SelfParam | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | | main.rs:2729:21:2729:25 | other | | {EXTERNAL LOCATION} | & | | main.rs:2729:21:2729:25 | other | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | -| main.rs:2729:44:2731:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2729:44:2731:9 | { ... } | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | | main.rs:2730:13:2730:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2730:13:2730:16 | self | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | | main.rs:2736:14:2736:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | @@ -3956,7 +3724,7 @@ inferCertainType | main.rs:2750:28:2752:9 | { ... } | TRef | main.rs:2748:10:2748:10 | T | | main.rs:2751:13:2751:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2751:13:2751:16 | self | TRef | main.rs:2748:10:2748:10 | T | -| main.rs:2755:25:2759:5 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2757:9:2757:17 | ... = ... | | {EXTERNAL LOCATION} | () | | main.rs:2761:12:2769:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2762:13:2762:13 | x | | {EXTERNAL LOCATION} | usize | | main.rs:2763:13:2763:13 | y | | {EXTERNAL LOCATION} | & | @@ -3969,61 +3737,42 @@ inferCertainType | main.rs:2783:22:2783:26 | SelfParam | TRef | main.rs:2782:5:2784:5 | Self [trait Container] | | main.rs:2786:34:2786:34 | c | | {EXTERNAL LOCATION} | & | | main.rs:2786:34:2786:34 | c | TRef | main.rs:2786:15:2786:31 | T | -| main.rs:2786:49:2788:5 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2787:9:2787:9 | c | | {EXTERNAL LOCATION} | & | | main.rs:2787:9:2787:9 | c | TRef | main.rs:2786:15:2786:31 | T | | main.rs:2791:22:2791:26 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2791:22:2791:26 | SelfParam | TRef | main.rs:2780:5:2780:21 | Gen | | main.rs:2791:22:2791:26 | SelfParam | TRef.T | main.rs:2790:10:2790:17 | GT | -| main.rs:2791:35:2793:9 | { ... } | | main.rs:2790:10:2790:17 | GT | | main.rs:2792:13:2792:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2792:13:2792:16 | self | TRef | main.rs:2780:5:2780:21 | Gen | | main.rs:2792:13:2792:16 | self | TRef.T | main.rs:2790:10:2790:17 | GT | | main.rs:2796:15:2800:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2799:17:2799:26 | my_get(...) | | {EXTERNAL LOCATION} | bool | | main.rs:2799:24:2799:25 | &g | | {EXTERNAL LOCATION} | & | -| main.rs:2803:11:2838:1 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2804:5:2804:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2805:5:2805:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2806:5:2806:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2806:20:2806:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2806:41:2806:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2807:5:2807:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2808:5:2808:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2809:5:2809:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2810:5:2810:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2811:5:2811:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2812:5:2812:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2813:5:2813:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2814:5:2814:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2815:5:2815:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2816:5:2816:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2817:5:2817:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2818:5:2818:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2819:5:2819:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2820:5:2820:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2821:5:2821:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2822:5:2822:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:2822:5:2822:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | -| main.rs:2823:5:2823:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2824:5:2824:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2825:5:2825:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2826:5:2826:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2827:5:2827:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2828:5:2828:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2829:5:2829:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2830:5:2830:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2831:5:2831:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2832:5:2832:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2833:5:2833:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2834:5:2834:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2835:5:2835:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2836:5:2836:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2836:5:2836:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2836:5:2836:20 | ...::f(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | -| main.rs:2836:5:2836:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2836:16:2836:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2837:5:2837:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2803:18:2811:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2804:9:2804:12 | arr1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2804:9:2804:12 | arr1 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2804:26:2804:27 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2805:9:2805:12 | arr2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2805:9:2805:12 | arr2 | TArray | {EXTERNAL LOCATION} | bool | +| main.rs:2805:16:2805:24 | [true; 0] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2805:16:2805:24 | [true; 0] | TArray | {EXTERNAL LOCATION} | bool | +| main.rs:2805:17:2805:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2807:9:2807:12 | arr3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2807:16:2807:17 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2809:21:2809:23 | arr | | {EXTERNAL LOCATION} | [;] | +| main.rs:2809:21:2809:23 | arr | TArray | main.rs:2809:18:2809:18 | T | +| main.rs:2809:34:2809:34 | x | | main.rs:2809:18:2809:18 | T | +| main.rs:2809:40:2809:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2810:15:2810:18 | arr3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2825:33:2825:33 | x | | main.rs:2825:12:2825:13 | T1 | +| main.rs:2825:40:2825:40 | y | | {EXTERNAL LOCATION} | Option | +| main.rs:2825:40:2825:40 | y | T | main.rs:2825:16:2825:30 | T2 | +| main.rs:2825:55:2825:56 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2827:19:2835:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2834:13:2834:15 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2838:11:2874:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2841:20:2841:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2841:41:2841:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2871:16:2871:19 | true | | {EXTERNAL LOCATION} | bool | | overloading.rs:4:19:4:23 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:4:19:4:23 | SelfParam | TRef | overloading.rs:2:5:11:5 | Self [trait FirstTrait] | | overloading.rs:4:34:6:9 | { ... } | | {EXTERNAL LOCATION} | bool | @@ -4032,7 +3781,6 @@ inferCertainType | overloading.rs:8:20:8:24 | SelfParam | TRef | overloading.rs:2:5:11:5 | Self [trait FirstTrait] | | overloading.rs:14:19:14:23 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:14:19:14:23 | SelfParam | TRef | overloading.rs:12:5:19:5 | Self [trait SecondTrait] | -| overloading.rs:14:33:16:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | overloading.rs:18:20:18:24 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:18:20:18:24 | SelfParam | TRef | overloading.rs:12:5:19:5 | Self [trait SecondTrait] | | overloading.rs:24:20:24:24 | SelfParam | | {EXTERNAL LOCATION} | & | @@ -4043,7 +3791,6 @@ inferCertainType | overloading.rs:30:13:30:16 | true | | {EXTERNAL LOCATION} | bool | | overloading.rs:35:20:35:24 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:35:20:35:24 | SelfParam | TRef | overloading.rs:20:5:21:13 | S | -| overloading.rs:35:34:37:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | overloading.rs:43:20:43:24 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:43:20:43:24 | SelfParam | TRef | overloading.rs:40:5:40:14 | S2 | | overloading.rs:43:35:45:9 | { ... } | | {EXTERNAL LOCATION} | bool | @@ -4051,46 +3798,22 @@ inferCertainType | overloading.rs:48:31:50:9 | { ... } | | {EXTERNAL LOCATION} | bool | | overloading.rs:49:13:49:17 | false | | {EXTERNAL LOCATION} | bool | | overloading.rs:53:16:70:5 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:56:13:56:15 | _b1 | | {EXTERNAL LOCATION} | bool | -| overloading.rs:56:19:56:40 | ...::method(...) | | {EXTERNAL LOCATION} | bool | | overloading.rs:56:38:56:39 | &s | | {EXTERNAL LOCATION} | & | -| overloading.rs:57:13:57:15 | _b2 | | {EXTERNAL LOCATION} | bool | -| overloading.rs:57:19:57:47 | ...::method(...) | | {EXTERNAL LOCATION} | bool | | overloading.rs:57:45:57:46 | &s | | {EXTERNAL LOCATION} | & | -| overloading.rs:58:13:58:15 | _b3 | | {EXTERNAL LOCATION} | bool | -| overloading.rs:58:19:58:64 | ...::method(...) | | {EXTERNAL LOCATION} | bool | | overloading.rs:58:45:58:63 | &... | | {EXTERNAL LOCATION} | & | -| overloading.rs:59:13:59:15 | _b4 | | {EXTERNAL LOCATION} | bool | -| overloading.rs:59:19:59:48 | ...::method2(...) | | {EXTERNAL LOCATION} | bool | | overloading.rs:59:46:59:47 | &s | | {EXTERNAL LOCATION} | & | -| overloading.rs:60:13:60:15 | _b5 | | {EXTERNAL LOCATION} | bool | -| overloading.rs:60:19:60:65 | ...::method2(...) | | {EXTERNAL LOCATION} | bool | | overloading.rs:60:46:60:64 | &... | | {EXTERNAL LOCATION} | & | -| overloading.rs:62:13:62:15 | _n1 | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:62:19:62:41 | ...::method(...) | | {EXTERNAL LOCATION} | i64 | | overloading.rs:62:39:62:40 | &s | | {EXTERNAL LOCATION} | & | -| overloading.rs:63:13:63:15 | _n2 | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:63:19:63:48 | ...::method(...) | | {EXTERNAL LOCATION} | i64 | | overloading.rs:63:46:63:47 | &s | | {EXTERNAL LOCATION} | & | -| overloading.rs:64:13:64:15 | _n3 | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:64:19:64:65 | ...::method(...) | | {EXTERNAL LOCATION} | i64 | | overloading.rs:64:46:64:64 | &... | | {EXTERNAL LOCATION} | & | -| overloading.rs:65:13:65:15 | _n4 | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:65:19:65:49 | ...::method2(...) | | {EXTERNAL LOCATION} | i64 | | overloading.rs:65:47:65:48 | &s | | {EXTERNAL LOCATION} | & | -| overloading.rs:66:13:66:15 | _n5 | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:66:19:66:66 | ...::method2(...) | | {EXTERNAL LOCATION} | i64 | | overloading.rs:66:47:66:65 | &... | | {EXTERNAL LOCATION} | & | -| overloading.rs:68:9:68:37 | ...::function(...) | | {EXTERNAL LOCATION} | bool | -| overloading.rs:69:9:69:38 | ...::function(...) | | {EXTERNAL LOCATION} | bool | | overloading.rs:78:26:78:29 | SelfParam | | overloading.rs:77:5:81:5 | Self [trait OverlappingTrait] | | overloading.rs:80:28:80:31 | SelfParam | | overloading.rs:77:5:81:5 | Self [trait OverlappingTrait] | | overloading.rs:80:34:80:35 | s1 | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:85:26:85:29 | SelfParam | | overloading.rs:74:5:75:14 | S1 | -| overloading.rs:85:38:87:9 | { ... } | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:90:28:90:31 | SelfParam | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:90:34:90:35 | s1 | | overloading.rs:74:5:75:14 | S1 | -| overloading.rs:90:48:92:9 | { ... } | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:97:26:97:29 | SelfParam | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:97:38:99:9 | { ... } | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:98:13:98:16 | self | | overloading.rs:74:5:75:14 | S1 | @@ -4099,24 +3822,18 @@ inferCertainType | overloading.rs:103:13:103:16 | self | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:111:26:111:29 | SelfParam | | overloading.rs:107:5:107:22 | S2 | | overloading.rs:111:26:111:29 | SelfParam | T2 | {EXTERNAL LOCATION} | i32 | -| overloading.rs:111:38:113:9 | { ... } | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:116:28:116:31 | SelfParam | | overloading.rs:107:5:107:22 | S2 | | overloading.rs:116:28:116:31 | SelfParam | T2 | {EXTERNAL LOCATION} | i32 | -| overloading.rs:116:40:118:9 | { ... } | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:123:26:123:29 | SelfParam | | overloading.rs:107:5:107:22 | S2 | | overloading.rs:123:26:123:29 | SelfParam | T2 | {EXTERNAL LOCATION} | i32 | -| overloading.rs:123:38:125:9 | { ... } | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:128:28:128:31 | SelfParam | | overloading.rs:107:5:107:22 | S2 | | overloading.rs:128:28:128:31 | SelfParam | T2 | {EXTERNAL LOCATION} | i32 | | overloading.rs:128:34:128:35 | s1 | | overloading.rs:74:5:75:14 | S1 | -| overloading.rs:128:48:130:9 | { ... } | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:135:26:135:29 | SelfParam | | overloading.rs:107:5:107:22 | S2 | | overloading.rs:135:26:135:29 | SelfParam | T2 | overloading.rs:74:5:75:14 | S1 | -| overloading.rs:135:38:137:9 | { ... } | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:140:28:140:31 | SelfParam | | overloading.rs:107:5:107:22 | S2 | | overloading.rs:140:28:140:31 | SelfParam | T2 | overloading.rs:74:5:75:14 | S1 | | overloading.rs:140:34:140:35 | s1 | | overloading.rs:74:5:75:14 | S1 | -| overloading.rs:140:48:142:9 | { ... } | | overloading.rs:74:5:75:14 | S1 | | overloading.rs:149:14:149:18 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:149:14:149:18 | SelfParam | TRef | overloading.rs:148:5:150:5 | Self [trait OverlappingTrait2] | | overloading.rs:149:21:149:21 | x | | {EXTERNAL LOCATION} | & | @@ -4153,84 +3870,81 @@ inferCertainType | overloading.rs:188:14:188:18 | SelfParam | TRef.T5 | {EXTERNAL LOCATION} | i32 | | overloading.rs:188:21:188:22 | { ... } | | {EXTERNAL LOCATION} | () | | overloading.rs:197:16:223:5 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:199:9:199:43 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:199:18:199:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:199:18:199:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:199:18:199:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:199:18:199:42 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:199:18:199:42 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:200:9:200:46 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:200:18:200:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:200:18:200:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:200:18:200:45 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:200:18:200:45 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:200:26:200:45 | ...::common_method(...) | | overloading.rs:74:5:75:14 | S1 | +| overloading.rs:200:18:200:45 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:201:9:201:45 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:201:18:201:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:201:18:201:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:201:18:201:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:201:18:201:44 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:201:18:201:44 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:202:9:202:48 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:202:18:202:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:202:18:202:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:202:18:202:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:202:18:202:47 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:202:26:202:47 | ...::common_method_2(...) | | overloading.rs:74:5:75:14 | S1 | +| overloading.rs:202:18:202:47 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:205:9:205:43 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:205:18:205:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:205:18:205:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:205:18:205:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:205:18:205:42 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:205:18:205:42 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:206:9:206:57 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:206:18:206:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:206:18:206:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:206:18:206:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:206:18:206:56 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:206:26:206:56 | ...::common_method(...) | | overloading.rs:74:5:75:14 | S1 | +| overloading.rs:206:18:206:56 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:209:9:209:43 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:209:18:209:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:209:18:209:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:209:18:209:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:209:18:209:42 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:209:18:209:42 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:210:9:210:50 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:210:18:210:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:210:18:210:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:210:18:210:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:210:18:210:49 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:210:26:210:49 | ...::common_method(...) | | overloading.rs:74:5:75:14 | S1 | +| overloading.rs:210:18:210:49 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:211:9:211:57 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:211:18:211:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:211:18:211:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:211:18:211:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:211:18:211:56 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:211:26:211:56 | ...::common_method(...) | | overloading.rs:74:5:75:14 | S1 | +| overloading.rs:211:18:211:56 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:214:9:214:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:214:18:214:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:214:18:214:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:214:18:214:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:214:18:214:31 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:214:18:214:31 | { ... } | | {EXTERNAL LOCATION} | () | +| overloading.rs:215:9:215:38 | MacroExpr | | {EXTERNAL LOCATION} | () | | overloading.rs:215:18:215:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | overloading.rs:215:18:215:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| overloading.rs:215:18:215:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:215:18:215:37 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:215:26:215:37 | ...::m(...) | | {EXTERNAL LOCATION} | & | -| overloading.rs:215:26:215:37 | ...::m(...) | TRef | overloading.rs:145:5:146:22 | S3 | +| overloading.rs:215:18:215:37 | { ... } | | {EXTERNAL LOCATION} | () | | overloading.rs:215:32:215:33 | &w | | {EXTERNAL LOCATION} | & | -| overloading.rs:218:9:218:18 | ...::m(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:218:15:218:17 | &S4 | | {EXTERNAL LOCATION} | & | | overloading.rs:219:12:219:15 | 0i32 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:220:9:220:24 | ...::m(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:220:15:220:23 | &... | | {EXTERNAL LOCATION} | & | | overloading.rs:220:19:220:22 | 0i32 | | {EXTERNAL LOCATION} | i32 | | overloading.rs:221:12:221:15 | true | | {EXTERNAL LOCATION} | bool | -| overloading.rs:222:9:222:24 | ...::m(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:222:15:222:23 | &... | | {EXTERNAL LOCATION} | & | | overloading.rs:222:19:222:22 | true | | {EXTERNAL LOCATION} | bool | | overloading.rs:228:14:228:17 | SelfParam | | overloading.rs:227:5:229:5 | Self [trait Trait1] | | overloading.rs:228:20:228:20 | x | | overloading.rs:227:18:227:19 | T1 | | overloading.rs:233:14:233:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | | overloading.rs:233:20:233:20 | x | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:233:35:235:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:240:14:240:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | | overloading.rs:240:20:240:20 | x | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:240:35:242:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | overloading.rs:246:14:246:17 | SelfParam | | overloading.rs:245:5:247:5 | Self [trait Trait2] | | overloading.rs:246:20:246:20 | x | | overloading.rs:245:18:245:19 | T1 | | overloading.rs:251:14:251:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | | overloading.rs:251:20:251:20 | x | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:251:35:253:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:258:14:258:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | | overloading.rs:258:20:258:20 | x | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:258:35:260:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | overloading.rs:263:12:270:5 | { ... } | | {EXTERNAL LOCATION} | () | | overloading.rs:265:21:265:24 | 0i32 | | {EXTERNAL LOCATION} | i32 | | overloading.rs:266:13:266:13 | z | | {EXTERNAL LOCATION} | i32 | @@ -4238,11 +3952,9 @@ inferCertainType | overloading.rs:268:13:268:13 | z | | {EXTERNAL LOCATION} | i64 | | overloading.rs:269:13:269:13 | z | | {EXTERNAL LOCATION} | i64 | | overloading.rs:269:26:269:29 | 0i32 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:286:35:288:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:295:35:297:9 | { ... } | | {EXTERNAL LOCATION} | bool | | overloading.rs:296:13:296:16 | true | | {EXTERNAL LOCATION} | bool | | overloading.rs:302:14:302:14 | x | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:302:29:304:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:309:14:309:14 | x | | {EXTERNAL LOCATION} | bool | | overloading.rs:309:31:311:9 | { ... } | | {EXTERNAL LOCATION} | bool | | overloading.rs:310:13:310:16 | true | | {EXTERNAL LOCATION} | bool | @@ -4251,36 +3963,22 @@ inferCertainType | overloading.rs:330:14:330:17 | SelfParam | | overloading.rs:327:5:331:5 | Self [trait MyTrait] | | overloading.rs:334:14:334:17 | SelfParam | | overloading.rs:325:5:325:25 | S | | overloading.rs:334:14:334:17 | SelfParam | T | {EXTERNAL LOCATION} | i64 | -| overloading.rs:334:27:336:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | overloading.rs:335:13:335:16 | self | | overloading.rs:325:5:325:25 | S | | overloading.rs:335:13:335:16 | self | T | {EXTERNAL LOCATION} | i64 | | overloading.rs:338:14:338:17 | SelfParam | | overloading.rs:325:5:325:25 | S | | overloading.rs:338:14:338:17 | SelfParam | T | {EXTERNAL LOCATION} | i64 | -| overloading.rs:338:27:340:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | overloading.rs:339:13:339:16 | self | | overloading.rs:325:5:325:25 | S | | overloading.rs:339:13:339:16 | self | T | {EXTERNAL LOCATION} | i64 | | overloading.rs:344:14:344:17 | SelfParam | | overloading.rs:325:5:325:25 | S | | overloading.rs:344:14:344:17 | SelfParam | T | {EXTERNAL LOCATION} | bool | -| overloading.rs:344:28:346:9 | { ... } | | {EXTERNAL LOCATION} | bool | | overloading.rs:345:13:345:16 | self | | overloading.rs:325:5:325:25 | S | | overloading.rs:345:13:345:16 | self | T | {EXTERNAL LOCATION} | bool | | overloading.rs:352:14:352:17 | SelfParam | | overloading.rs:325:5:325:25 | S | | overloading.rs:352:14:352:17 | SelfParam | T | overloading.rs:349:10:349:10 | T | -| overloading.rs:352:25:359:9 | { ... } | | overloading.rs:325:5:325:25 | S | -| overloading.rs:352:25:359:9 | { ... } | T | {EXTERNAL LOCATION} | i64 | -| overloading.rs:353:17:353:17 | x | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:353:21:353:47 | ...::f(...) | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:354:17:354:17 | x | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:354:21:354:61 | ...::f(...) | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:367:17:370:5 | { ... } | | overloading.rs:364:5:365:13 | S | | overloading.rs:378:17:378:17 | _ | | overloading.rs:364:5:365:13 | S | -| overloading.rs:378:31:380:9 | { ... } | | overloading.rs:372:5:372:14 | S1 | | overloading.rs:385:17:385:17 | _ | | overloading.rs:374:5:374:14 | S2 | -| overloading.rs:385:32:387:9 | { ... } | | overloading.rs:372:5:372:14 | S1 | | overloading.rs:392:17:392:17 | _ | | overloading.rs:364:5:365:13 | S | -| overloading.rs:392:31:394:9 | { ... } | | overloading.rs:374:5:374:14 | S2 | | overloading.rs:397:10:397:10 | b | | {EXTERNAL LOCATION} | bool | -| overloading.rs:397:25:401:5 | { ... } | | overloading.rs:372:5:372:14 | S1 | | overloading.rs:398:20:398:20 | b | | {EXTERNAL LOCATION} | bool | | overloading.rs:408:16:408:20 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:408:16:408:20 | SelfParam | TRef | overloading.rs:407:5:410:5 | Self [trait Trait] | @@ -4297,12 +3995,9 @@ inferCertainType | overloading.rs:422:16:422:20 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:422:16:422:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:422:16:422:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | -| overloading.rs:422:23:426:9 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:423:13:423:24 | ...::foo(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:423:20:423:23 | self | | {EXTERNAL LOCATION} | & | | overloading.rs:423:20:423:23 | self | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:423:20:423:23 | self | TRef.T | {EXTERNAL LOCATION} | i32 | -| overloading.rs:424:13:424:31 | ...::foo(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:424:27:424:30 | self | | {EXTERNAL LOCATION} | & | | overloading.rs:424:27:424:30 | self | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:424:27:424:30 | self | TRef.T | {EXTERNAL LOCATION} | i32 | @@ -4312,12 +4007,9 @@ inferCertainType | overloading.rs:429:16:429:20 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:429:16:429:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:429:16:429:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | -| overloading.rs:429:23:433:9 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:430:13:430:24 | ...::bar(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:430:20:430:23 | self | | {EXTERNAL LOCATION} | & | | overloading.rs:430:20:430:23 | self | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:430:20:430:23 | self | TRef.T | {EXTERNAL LOCATION} | i32 | -| overloading.rs:431:13:431:31 | ...::bar(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:431:27:431:30 | self | | {EXTERNAL LOCATION} | & | | overloading.rs:431:27:431:30 | self | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:431:27:431:30 | self | TRef.T | {EXTERNAL LOCATION} | i32 | @@ -4327,8 +4019,6 @@ inferCertainType | overloading.rs:438:16:438:20 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:438:16:438:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:438:16:438:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i64 | -| overloading.rs:438:23:442:9 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:440:13:440:31 | ...::foo(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:440:27:440:30 | self | | {EXTERNAL LOCATION} | & | | overloading.rs:440:27:440:30 | self | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:440:27:440:30 | self | TRef.T | {EXTERNAL LOCATION} | i64 | @@ -4338,8 +4028,6 @@ inferCertainType | overloading.rs:445:16:445:20 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:445:16:445:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:445:16:445:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i64 | -| overloading.rs:445:23:449:9 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:447:13:447:31 | ...::bar(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:447:27:447:30 | self | | {EXTERNAL LOCATION} | & | | overloading.rs:447:27:447:30 | self | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:447:27:447:30 | self | TRef.T | {EXTERNAL LOCATION} | i64 | @@ -4354,64 +4042,57 @@ inferCertainType | overloading.rs:467:14:467:18 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:467:14:467:18 | SelfParam | TRef | overloading.rs:464:5:464:19 | S | | overloading.rs:467:14:467:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | -| overloading.rs:467:28:469:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:473:14:473:18 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:473:14:473:18 | SelfParam | TRef | overloading.rs:464:5:464:19 | S | | overloading.rs:473:14:473:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | -| overloading.rs:473:28:475:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | overloading.rs:481:14:481:18 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:481:14:481:18 | SelfParam | TRef | overloading.rs:464:5:464:19 | S | | overloading.rs:481:14:481:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | | overloading.rs:481:21:481:21 | x | | overloading.rs:464:5:464:19 | S | | overloading.rs:481:21:481:21 | x | T | {EXTERNAL LOCATION} | i32 | -| overloading.rs:481:48:483:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:489:14:489:18 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:489:14:489:18 | SelfParam | TRef | overloading.rs:464:5:464:19 | S | | overloading.rs:489:14:489:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | | overloading.rs:489:21:489:21 | x | | overloading.rs:464:5:464:19 | S | | overloading.rs:489:21:489:21 | x | T | {EXTERNAL LOCATION} | i64 | -| overloading.rs:489:48:491:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | overloading.rs:497:14:497:18 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:497:14:497:18 | SelfParam | TRef | overloading.rs:464:5:464:19 | S | | overloading.rs:497:14:497:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | | overloading.rs:497:21:497:21 | x | | overloading.rs:464:5:464:19 | S | | overloading.rs:497:21:497:21 | x | T | {EXTERNAL LOCATION} | bool | -| overloading.rs:497:49:499:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | overloading.rs:502:36:502:36 | x | | overloading.rs:502:19:502:33 | T2 | -| overloading.rs:502:49:504:5 | { ... } | | overloading.rs:502:15:502:16 | T1 | | overloading.rs:503:9:503:9 | x | | overloading.rs:502:19:502:33 | T2 | | overloading.rs:506:38:506:38 | x | | overloading.rs:506:16:506:17 | T1 | | overloading.rs:506:45:506:45 | y | | overloading.rs:506:20:506:35 | T2 | -| overloading.rs:506:66:508:5 | { ... } | | overloading.rs:506:20:506:35 | T2::Output[MyTrait2] | | overloading.rs:507:9:507:9 | y | | overloading.rs:506:20:506:35 | T2 | | overloading.rs:507:13:507:13 | x | | overloading.rs:506:16:506:17 | T1 | | overloading.rs:510:15:522:5 | { ... } | | {EXTERNAL LOCATION} | () | | overloading.rs:513:13:513:13 | z | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:516:13:516:13 | y | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:516:17:516:35 | call_f::<...>(...) | | {EXTERNAL LOCATION} | i32 | | overloading.rs:519:27:519:30 | 0i32 | | {EXTERNAL LOCATION} | i32 | | overloading.rs:521:27:521:30 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:13:26:133:1 | { ... } | T | {EXTERNAL LOCATION} | () | | pattern_matching.rs:15:5:18:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:15:31:18:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:17:9:17:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:17:18:17:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:17:18:17:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:17:18:17:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:20:23:23:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:22:13:22:30 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:22:22:22:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:22:22:22:29 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:22:22:22:29 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:24:17:24:18 | TupleExpr | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:28:5:28:22 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:28:14:28:21 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:28:14:28:21 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:28:14:28:21 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:30:5:30:22 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:30:14:30:21 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:30:14:30:21 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:30:14:30:21 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:32:9:32:14 | value2 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:32:18:32:26 | &... | | {EXTERNAL LOCATION} | & | @@ -4419,18 +4100,20 @@ inferCertainType | pattern_matching.rs:33:12:33:22 | &... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:33:26:33:31 | value2 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:33:33:36:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:35:9:35:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:35:18:35:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:35:18:35:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:35:18:35:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:39:5:42:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:39:16:39:19 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:39:30:42:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:40:13:40:16 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:40:20:40:23 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:41:9:41:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:41:18:41:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:41:18:41:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:41:18:41:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:41:20:41:23 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:45:5:48:5 | if ... {...} | | {EXTERNAL LOCATION} | () | @@ -4438,9 +4121,10 @@ inferCertainType | pattern_matching.rs:45:36:48:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:46:13:46:16 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:46:20:46:23 | mesg | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:47:9:47:26 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:47:18:47:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:47:20:47:23 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:50:13:50:18 | value5 | | {EXTERNAL LOCATION} | & | @@ -4481,32 +4165,34 @@ inferCertainType | pattern_matching.rs:121:5:123:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:127:13:130:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:128:5:130:5 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:168:27:217:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:169:9:169:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:169:17:169:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:171:11:171:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:173:15:176:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:174:17:174:29 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:174:33:174:37 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:175:13:175:58 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:175:22:175:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:175:22:175:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:175:22:175:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:175:45:175:57 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:177:15:180:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:178:17:178:32 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:178:36:178:40 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:179:13:179:62 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:179:22:179:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:179:22:179:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:179:22:179:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:179:46:179:61 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:181:14:184:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:182:17:182:28 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:182:32:182:36 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:183:13:183:54 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:183:22:183:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:183:22:183:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:183:22:183:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:183:42:183:53 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:185:14:185:15 | { ... } | | {EXTERNAL LOCATION} | () | @@ -4516,9 +4202,10 @@ inferCertainType | pattern_matching.rs:190:17:193:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:191:17:191:24 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:191:28:191:36 | float_val | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:192:13:192:48 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:192:22:192:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:192:22:192:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:192:22:192:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:192:40:192:47 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:194:14:194:15 | { ... } | | {EXTERNAL LOCATION} | () | @@ -4535,9 +4222,10 @@ inferCertainType | pattern_matching.rs:200:17:200:27 | hello_match | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:200:31:200:40 | string_val | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:200:31:200:40 | string_val | TRef | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:201:13:201:55 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:201:22:201:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:201:22:201:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:201:22:201:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:201:44:201:54 | hello_match | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:201:44:201:54 | hello_match | TRef | {EXTERNAL LOCATION} | str | @@ -4549,124 +4237,139 @@ inferCertainType | pattern_matching.rs:208:17:211:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:209:17:209:26 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:209:30:209:37 | bool_val | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:210:13:210:52 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:210:22:210:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:210:22:210:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:210:22:210:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:210:42:210:51 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:212:9:212:13 | false | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:212:18:215:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:213:17:213:27 | false_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:213:31:213:38 | bool_val | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:214:13:214:54 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:214:22:214:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:214:22:214:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:214:22:214:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:214:43:214:53 | false_match | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:219:30:277:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:220:9:220:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:220:17:220:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:223:11:223:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:224:14:227:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:226:13:226:59 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:226:22:226:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:226:22:226:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:226:22:226:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:231:11:231:16 | &value | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:231:11:231:16 | &value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:231:12:231:16 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:232:13:232:13 | x | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:232:18:235:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:233:17:233:25 | ref_bound | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:233:29:233:29 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:234:13:234:61 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:234:22:234:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:234:22:234:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:234:22:234:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:234:52:234:60 | ref_bound | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:239:13:239:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:239:29:239:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:240:11:240:23 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:241:18:245:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:243:13:243:18 | ... += ... | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:244:13:244:57 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:244:22:244:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:244:22:244:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:244:22:244:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:249:39:249:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:35:254:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:253:13:253:60 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:253:22:253:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:253:22:253:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:253:22:253:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:255:40:258:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:257:13:257:64 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:257:22:257:63 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:257:22:257:63 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:257:22:257:63 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:259:30:262:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:261:13:261:50 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:261:22:261:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:261:22:261:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:261:22:261:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:263:27:265:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:264:13:264:34 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:264:22:264:33 | "None value\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:264:22:264:33 | "None value\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:264:22:264:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:264:22:264:33 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:264:22:264:33 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:269:13:269:23 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:269:27:269:30 | 5i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | | {EXTERNAL LOCATION} | &mut | +| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | TRefMut | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:270:16:270:26 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:271:17:271:17 | x | | {EXTERNAL LOCATION} | &mut | | pattern_matching.rs:271:22:275:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:272:17:272:29 | ref_mut_bound | | {EXTERNAL LOCATION} | &mut | | pattern_matching.rs:272:33:272:33 | x | | {EXTERNAL LOCATION} | &mut | +| pattern_matching.rs:273:13:273:32 | ... += ... | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:273:15:273:27 | ref_mut_bound | | {EXTERNAL LOCATION} | &mut | +| pattern_matching.rs:274:13:274:39 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:274:22:274:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:274:22:274:38 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:279:28:290:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:274:22:274:38 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:280:9:280:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:280:17:280:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:282:11:282:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:283:15:283:40 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:283:24:283:39 | "Specific match\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:283:24:283:39 | "Specific match\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:283:24:283:39 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:283:24:283:39 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:285:14:288:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:286:17:286:32 | wildcard_context | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:286:36:286:40 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:287:13:287:66 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:287:22:287:65 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:287:22:287:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:287:22:287:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:287:50:287:65 | wildcard_context | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:292:25:324:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:293:9:293:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:293:17:293:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:295:11:295:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:19:300:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:298:17:298:31 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:298:35:298:39 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:299:13:299:60 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:299:22:299:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:299:22:299:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:299:22:299:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:299:45:299:59 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:301:17:304:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:302:17:302:26 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:302:30:302:34 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:303:13:303:53 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:303:22:303:52 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:303:22:303:52 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:303:22:303:52 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:303:43:303:52 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:305:17:308:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:306:17:306:34 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:306:38:306:42 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:307:13:307:68 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:307:22:307:67 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:307:22:307:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:307:22:307:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:307:50:307:67 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:309:14:309:15 | { ... } | | {EXTERNAL LOCATION} | () | @@ -4678,9 +4381,10 @@ inferCertainType | pattern_matching.rs:314:22:317:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:315:17:315:30 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:315:34:315:41 | char_val | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:316:13:316:58 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:316:22:316:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:316:22:316:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:316:22:316:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:316:44:316:57 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:9:318:11 | 'A' | | {EXTERNAL LOCATION} | char | @@ -4688,58 +4392,64 @@ inferCertainType | pattern_matching.rs:318:22:321:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:319:17:319:30 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:319:34:319:41 | char_val | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:320:13:320:58 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:320:22:320:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:320:22:320:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:320:22:320:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:320:44:320:57 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:322:14:322:15 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:326:29:355:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:327:9:327:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:327:17:327:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:328:13:328:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:328:29:328:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:331:11:331:16 | &value | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:331:11:331:16 | &value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:331:12:331:16 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:332:9:332:11 | &42 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:332:16:335:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:333:17:333:27 | deref_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:333:31:333:35 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:334:13:334:59 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:334:22:334:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:334:22:334:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:334:22:334:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:334:48:334:58 | deref_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:336:9:336:10 | &... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:336:15:339:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:338:13:338:61 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:338:22:338:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:338:22:338:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:338:22:338:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:342:11:342:28 | &mut mutable_value | | {EXTERNAL LOCATION} | &mut | +| pattern_matching.rs:342:11:342:28 | &mut mutable_value | TRefMut | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:342:16:342:28 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:343:9:343:18 | &mut ... | | {EXTERNAL LOCATION} | &mut | | pattern_matching.rs:343:18:343:18 | x | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:343:23:346:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:344:17:344:29 | mut_ref_bound | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:344:33:344:33 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:345:13:345:62 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:345:22:345:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:345:22:345:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:345:22:345:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:345:49:345:61 | mut_ref_bound | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:349:11:349:16 | &value | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:349:11:349:16 | &value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:349:12:349:16 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:350:13:350:13 | x | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:350:18:353:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:351:17:351:27 | ref_pattern | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:351:31:351:31 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:352:13:352:58 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:352:22:352:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:352:22:352:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:352:22:352:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:352:47:352:57 | ref_pattern | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:357:26:398:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:358:9:358:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:358:17:358:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:361:11:361:15 | point | | pattern_matching.rs:135:1:140:1 | Point | @@ -4747,70 +4457,79 @@ inferCertainType | pattern_matching.rs:362:33:365:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:363:17:363:22 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:363:26:363:30 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:364:13:364:50 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:364:22:364:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:364:22:364:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:364:22:364:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:364:44:364:49 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:366:9:366:25 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:366:30:370:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:368:17:368:28 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:368:32:368:36 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:369:13:369:81 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:369:22:369:80 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:369:22:369:80 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:369:22:369:80 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:369:69:369:80 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:371:9:371:27 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:371:32:374:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:372:17:372:27 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:372:31:372:35 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:373:13:373:58 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:373:22:373:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:373:22:373:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:373:22:373:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:373:47:373:57 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:375:9:375:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:375:27:379:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:378:13:378:69 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:378:22:378:68 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:378:22:378:68 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:378:22:378:68 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:383:9:383:13 | shape | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:383:17:386:5 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:387:11:387:15 | shape | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:388:9:391:9 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:391:14:395:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:394:13:394:65 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:394:22:394:64 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:394:22:394:64 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:394:22:394:64 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:396:14:396:15 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:400:32:441:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:405:29:408:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:407:13:407:49 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:407:22:407:48 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:407:22:407:48 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:407:22:407:48 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:409:27:417:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:413:13:416:13 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:414:17:415:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:414:17:415:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:414:17:415:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:422:27:425:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:424:13:424:58 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:424:22:424:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:424:22:424:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:424:22:424:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:426:25:429:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:428:13:428:55 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:428:22:428:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:428:22:428:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:428:22:428:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:436:23:439:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:438:13:438:50 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:438:22:438:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:438:22:438:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:438:22:438:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:443:25:498:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:444:9:444:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | @@ -4823,22 +4542,25 @@ inferCertainType | pattern_matching.rs:448:24:451:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:449:17:449:27 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:449:31:449:35 | tuple | | {EXTERNAL LOCATION} | (T_3) | +| pattern_matching.rs:450:13:450:54 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:450:22:450:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:450:22:450:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:450:22:450:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:450:43:450:53 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:452:9:452:17 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:452:22:457:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:456:13:456:80 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:456:22:456:79 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:456:22:456:79 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:456:22:456:79 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:461:11:461:15 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:462:24:465:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:464:13:464:54 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:464:22:464:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:464:22:464:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:464:22:464:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:469:9:469:12 | unit | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:469:16:469:17 | TupleExpr | | {EXTERNAL LOCATION} | () | @@ -4847,26 +4569,32 @@ inferCertainType | pattern_matching.rs:471:15:474:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:472:17:472:26 | unit_value | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:472:30:472:33 | unit | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:473:13:473:52 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:473:22:473:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:473:22:473:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:473:22:473:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:473:42:473:51 | unit_value | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:478:9:478:14 | single | | {EXTERNAL LOCATION} | (T_1) | +| pattern_matching.rs:478:9:478:14 | single | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:478:18:478:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_1) | +| pattern_matching.rs:478:18:478:25 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:478:19:478:23 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:479:11:479:16 | single | | {EXTERNAL LOCATION} | (T_1) | +| pattern_matching.rs:479:11:479:16 | single | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:480:9:480:12 | TuplePat | | {EXTERNAL LOCATION} | (T_1) | | pattern_matching.rs:480:17:483:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:482:13:482:61 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:482:22:482:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:482:22:482:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:482:22:482:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | TRef | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | TRef.T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | TRef.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:35:487:41 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:487:35:487:41 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:487:36:487:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:488:5:491:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:488:12:488:17 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | @@ -4875,41 +4603,46 @@ inferCertainType | pattern_matching.rs:488:21:488:30 | ref_tuple1 | TRef.T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:488:21:488:30 | ref_tuple1 | TRef.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:488:32:491:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:489:9:489:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:489:18:489:24 | "n: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:489:18:489:24 | "n: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:489:18:489:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:489:18:489:27 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:489:18:489:27 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:490:9:490:28 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:490:18:490:24 | "m: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:490:18:490:24 | "m: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:490:18:490:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:490:18:490:27 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:490:18:490:27 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | TRef | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | TRef.T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | TRef.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:35:494:41 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:494:35:494:41 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:494:36:494:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:495:9:495:14 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:495:18:495:27 | ref_tuple2 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:495:18:495:27 | ref_tuple2 | TRef | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:495:18:495:27 | ref_tuple2 | TRef.T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:495:18:495:27 | ref_tuple2 | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:496:5:496:24 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:496:14:496:20 | "n: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:496:14:496:20 | "n: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:496:14:496:23 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:496:14:496:23 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:496:14:496:23 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:497:5:497:24 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:497:14:497:20 | "m: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:497:14:497:20 | "m: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:497:14:497:23 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:497:14:497:23 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:500:33:520:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:497:14:497:23 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:501:9:501:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:501:17:501:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:504:11:504:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:505:16:508:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:507:13:507:62 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:507:22:507:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:507:22:507:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:507:22:507:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:512:9:512:13 | tuple | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:512:17:512:28 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | @@ -4918,15 +4651,16 @@ inferCertainType | pattern_matching.rs:513:11:513:15 | tuple | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:514:9:514:16 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:514:21:518:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:517:13:517:72 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:517:22:517:71 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:517:22:517:71 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:522:25:563:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:517:22:517:71 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:523:9:523:13 | slice | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:523:9:523:13 | slice | TRef | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:523:9:523:13 | slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:25:523:40 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:523:25:523:40 | &... | TRef | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:523:26:523:40 | [...] | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:526:11:526:15 | slice | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:526:11:526:15 | slice | TRef | {EXTERNAL LOCATION} | [] | @@ -4938,89 +4672,100 @@ inferCertainType | pattern_matching.rs:528:31:528:35 | slice | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:528:31:528:35 | slice | TRef | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:528:31:528:35 | slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:529:13:529:54 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:529:22:529:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:529:22:529:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:529:22:529:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:529:43:529:53 | empty_slice | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:529:43:529:53 | empty_slice | TRef | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:529:43:529:53 | empty_slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:531:16:534:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:533:13:533:55 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:533:22:533:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:533:22:533:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:533:22:533:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:535:28:539:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:538:13:538:71 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:538:22:538:70 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:538:22:538:70 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:538:22:538:70 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:540:39:550:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:544:13:549:13 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:545:17:548:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:545:17:548:34 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:545:17:548:34 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:554:9:554:13 | array | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:554:17:554:28 | [...] | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:554:18:554:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:555:11:555:15 | array | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:556:22:561:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:560:13:560:71 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:560:22:560:70 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:560:22:560:70 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:565:24:601:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:560:22:560:70 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:567:11:567:18 | CONSTANT | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:9:568:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:17:568:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:570:11:570:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:571:21:574:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:572:17:572:27 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:572:31:572:35 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:573:13:573:57 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:573:22:573:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:573:22:573:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:573:22:573:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:573:46:573:56 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:575:14:575:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:579:33:579:37 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:581:27:583:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:582:13:582:36 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:582:22:582:35 | "None variant\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:582:22:582:35 | "None variant\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:582:22:582:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:582:22:582:35 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:582:22:582:35 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:584:30:587:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:586:13:586:50 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:586:22:586:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:586:22:586:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:586:22:586:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:592:39:595:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:594:13:594:46 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:594:22:594:45 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:594:22:594:45 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:594:22:594:45 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:596:40:599:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:598:13:598:44 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:598:22:598:43 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:598:22:598:43 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:603:22:638:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:598:22:598:43 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:604:9:604:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:604:17:604:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:607:11:607:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:22:611:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:609:17:609:25 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:609:29:609:33 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:610:13:610:51 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:610:22:610:50 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:610:22:610:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:610:22:610:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:610:42:610:50 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:20:615:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:613:17:613:25 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:613:29:613:33 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:614:13:614:51 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:614:22:614:50 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:614:22:614:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:614:22:614:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:614:42:614:50 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:616:14:616:15 | { ... } | | {EXTERNAL LOCATION} | () | @@ -5030,22 +4775,23 @@ inferCertainType | pattern_matching.rs:622:9:622:29 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:622:33:622:53 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:622:58:626:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:625:13:625:63 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:625:22:625:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:625:22:625:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:625:22:625:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:627:14:627:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:631:11:631:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:30:635:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:633:17:633:30 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:633:34:633:38 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:634:13:634:52 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:634:22:634:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:634:22:634:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:634:22:634:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:634:38:634:51 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:636:14:636:15 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:640:24:674:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:641:9:641:13 | tuple | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:641:17:641:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:641:18:641:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | @@ -5054,30 +4800,34 @@ inferCertainType | pattern_matching.rs:641:38:641:40 | 4u8 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:644:11:644:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:645:24:648:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:647:13:647:55 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:647:22:647:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:647:22:647:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:647:22:647:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:651:11:651:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:652:23:655:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:654:13:654:53 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:654:22:654:52 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:654:22:654:52 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:654:22:654:52 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:658:11:658:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:659:30:663:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:662:13:662:68 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:662:22:662:67 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:662:22:662:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:662:22:662:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:667:9:667:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:667:17:667:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:668:11:668:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:669:9:669:23 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:669:28:672:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:671:13:671:48 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:671:22:671:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:671:22:671:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:671:22:671:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:676:25:696:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:694:21:694:25 | 42i32 | | {EXTERNAL LOCATION} | i32 | @@ -5086,7 +4836,6 @@ inferCertainType | pattern_matching.rs:695:21:695:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:695:21:695:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:695:21:695:25 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:698:34:724:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:700:9:700:20 | complex_data | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:700:24:700:79 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:700:25:700:44 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | @@ -5094,23 +4843,26 @@ inferCertainType | pattern_matching.rs:704:9:704:61 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:704:10:704:26 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:704:66:712:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:708:13:711:13 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:709:17:710:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:709:17:710:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:709:17:710:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:714:9:714:41 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:714:10:714:24 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:714:45:714:71 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:714:46:714:67 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:714:76:717:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:716:13:716:66 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:716:22:716:65 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:716:22:716:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:716:22:716:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:719:18:722:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:721:13:721:63 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:721:22:721:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:721:22:721:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:721:22:721:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:726:37:758:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:728:9:728:13 | point | | pattern_matching.rs:135:1:140:1 | Point | @@ -5144,43 +4896,32 @@ inferCertainType | pattern_matching.rs:760:42:789:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:763:22:763:35 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:763:59:767:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:763:59:767:5 | { ... } | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:763:59:767:5 | { ... } | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:766:9:766:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:769:22:769:35 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:769:51:772:5 | { ... } | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:774:22:774:38 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:774:22:774:38 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:774:22:774:38 | TuplePat | T1 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:774:22:774:38 | TuplePat | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:774:23:774:27 | first | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:774:30:774:30 | _ | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:774:33:774:37 | third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:774:74:778:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:774:74:778:5 | { ... } | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:774:74:778:5 | { ... } | T1 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:775:13:775:23 | param_first | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:775:27:775:31 | first | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:776:13:776:23 | param_third | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:776:27:776:31 | third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:777:9:777:34 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:777:10:777:20 | param_first | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:777:23:777:33 | param_third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:781:9:781:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:781:17:781:37 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:782:9:782:17 | extracted | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:782:9:782:17 | extracted | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:9:782:17 | extracted | T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:21:782:40 | extract_point(...) | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:782:21:782:40 | extract_point(...) | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:21:782:40 | extract_point(...) | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:782:35:782:39 | point | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:785:9:785:11 | red | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:785:15:785:34 | extract_color(...) | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:787:9:787:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:787:17:787:38 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:787:18:787:22 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:787:25:787:31 | 3.14f64 | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:787:34:787:37 | true | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:788:9:788:23 | tuple_extracted | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:788:9:788:23 | tuple_extracted | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:788:9:788:23 | tuple_extracted | T1 | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | T1 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:788:41:788:45 | tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:792:35:824:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:794:23:794:42 | (...) | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:23:794:42 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:45:794:64 | (...) | | pattern_matching.rs:135:1:140:1 | Point | @@ -5188,16 +4929,18 @@ inferCertainType | pattern_matching.rs:795:5:799:5 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:795:9:795:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:795:34:799:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:798:9:798:59 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:798:18:798:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:798:18:798:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:798:18:798:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:802:39:802:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:5:806:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:803:50:806:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:805:9:805:55 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:805:18:805:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:805:18:805:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:805:18:805:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:809:13:809:17 | stack | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:809:13:809:17 | stack | A | {EXTERNAL LOCATION} | Global | @@ -5208,132 +4951,95 @@ inferCertainType | pattern_matching.rs:810:25:810:29 | stack | A | {EXTERNAL LOCATION} | Global | | pattern_matching.rs:810:25:810:29 | stack | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:810:37:813:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:812:9:812:43 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:812:18:812:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:812:18:812:42 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:812:18:812:42 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:816:9:816:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:816:17:816:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:817:11:817:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:23:821:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:820:13:820:45 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:820:22:820:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:820:22:820:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:820:22:820:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:822:14:822:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:826:28:846:1 | { ... } | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:827:5:827:7 | f(...) | | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:827:5:827:7 | f(...) | T | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:828:5:828:22 | literal_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:829:5:829:25 | identifier_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:830:5:830:23 | wildcard_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:831:5:831:20 | range_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:832:5:832:24 | reference_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:833:5:833:21 | record_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:834:5:834:27 | tuple_struct_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:835:5:835:20 | tuple_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:836:5:836:28 | parenthesized_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:837:5:837:20 | slice_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:838:5:838:19 | path_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:839:5:839:17 | or_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:840:5:840:19 | rest_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:841:5:841:20 | macro_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:842:5:842:29 | complex_nested_patterns(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:843:5:843:32 | patterns_in_let_statements(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:844:5:844:37 | patterns_in_function_parameters(...) | | {EXTERNAL LOCATION} | () | -| pattern_matching.rs:845:5:845:30 | patterns_in_control_flow(...) | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:3:28:3:28 | x | | {EXTERNAL LOCATION} | *const | | raw_pointer.rs:3:28:3:28 | x | TPtrConst | {EXTERNAL LOCATION} | i32 | -| raw_pointer.rs:3:50:6:1 | { ... } | | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:4:24:4:24 | x | | {EXTERNAL LOCATION} | *const | | raw_pointer.rs:4:24:4:24 | x | TPtrConst | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:8:26:8:26 | x | | {EXTERNAL LOCATION} | *mut | | raw_pointer.rs:8:26:8:26 | x | TPtrMut | {EXTERNAL LOCATION} | bool | -| raw_pointer.rs:8:47:11:1 | { ... } | | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:9:24:9:24 | x | | {EXTERNAL LOCATION} | *mut | | raw_pointer.rs:9:24:9:24 | x | TPtrMut | {EXTERNAL LOCATION} | bool | | raw_pointer.rs:13:23:19:1 | { ... } | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:14:9:14:9 | a | | {EXTERNAL LOCATION} | i64 | | raw_pointer.rs:15:9:15:9 | x | | {EXTERNAL LOCATION} | *const | +| raw_pointer.rs:15:9:15:9 | x | TPtrConst | {EXTERNAL LOCATION} | i64 | | raw_pointer.rs:15:13:15:24 | &raw const a | | {EXTERNAL LOCATION} | *const | +| raw_pointer.rs:15:13:15:24 | &raw const a | TPtrConst | {EXTERNAL LOCATION} | i64 | | raw_pointer.rs:15:24:15:24 | a | | {EXTERNAL LOCATION} | i64 | | raw_pointer.rs:16:5:18:5 | { ... } | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:17:19:17:19 | x | | {EXTERNAL LOCATION} | *const | +| raw_pointer.rs:17:19:17:19 | x | TPtrConst | {EXTERNAL LOCATION} | i64 | | raw_pointer.rs:21:21:27:1 | { ... } | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:22:13:22:13 | a | | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:22:17:22:21 | 10i32 | | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:23:9:23:9 | x | | {EXTERNAL LOCATION} | *mut | +| raw_pointer.rs:23:9:23:9 | x | TPtrMut | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:23:13:23:22 | &raw mut a | | {EXTERNAL LOCATION} | *mut | +| raw_pointer.rs:23:13:23:22 | &raw mut a | TPtrMut | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:23:22:23:22 | a | | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:24:5:26:5 | { ... } | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:25:19:25:19 | x | | {EXTERNAL LOCATION} | *mut | +| raw_pointer.rs:25:19:25:19 | x | TPtrMut | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:29:18:29:21 | cond | | {EXTERNAL LOCATION} | bool | | raw_pointer.rs:29:30:40:1 | { ... } | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:30:9:30:9 | a | | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:30:13:30:17 | 10i32 | | {EXTERNAL LOCATION} | i32 | -| raw_pointer.rs:32:9:32:19 | ptr_written | | {EXTERNAL LOCATION} | *mut | -| raw_pointer.rs:32:23:32:32 | null_mut(...) | | {EXTERNAL LOCATION} | *mut | | raw_pointer.rs:33:5:39:5 | if cond {...} | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:33:8:33:11 | cond | | {EXTERNAL LOCATION} | bool | +| raw_pointer.rs:33:13:39:5 | { ... } | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:34:9:38:9 | { ... } | | {EXTERNAL LOCATION} | () | -| raw_pointer.rs:36:14:36:24 | ptr_written | | {EXTERNAL LOCATION} | *mut | +| raw_pointer.rs:36:13:36:28 | ... = ... | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:36:28:36:28 | a | | {EXTERNAL LOCATION} | i32 | -| raw_pointer.rs:37:23:37:33 | ptr_written | | {EXTERNAL LOCATION} | *mut | | raw_pointer.rs:42:24:42:27 | cond | | {EXTERNAL LOCATION} | bool | | raw_pointer.rs:42:36:51:1 | { ... } | | {EXTERNAL LOCATION} | () | -| raw_pointer.rs:44:9:44:16 | ptr_read | | {EXTERNAL LOCATION} | *mut | -| raw_pointer.rs:44:20:44:29 | null_mut(...) | | {EXTERNAL LOCATION} | *mut | | raw_pointer.rs:45:5:50:5 | if cond {...} | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:45:8:45:11 | cond | | {EXTERNAL LOCATION} | bool | +| raw_pointer.rs:45:13:50:5 | { ... } | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:46:9:49:9 | { ... } | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:48:17:48:18 | _y | | {EXTERNAL LOCATION} | i64 | -| raw_pointer.rs:48:28:48:35 | ptr_read | | {EXTERNAL LOCATION} | *mut | | raw_pointer.rs:53:15:60:1 | { ... } | | {EXTERNAL LOCATION} | () | -| raw_pointer.rs:54:5:54:32 | raw_pointer_const_deref(...) | | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:54:29:54:31 | &10 | | {EXTERNAL LOCATION} | & | -| raw_pointer.rs:55:5:55:36 | raw_pointer_mut_deref(...) | | {EXTERNAL LOCATION} | i32 | | raw_pointer.rs:55:27:55:35 | &mut true | | {EXTERNAL LOCATION} | &mut | +| raw_pointer.rs:55:27:55:35 | &mut true | TRefMut | {EXTERNAL LOCATION} | bool | | raw_pointer.rs:55:32:55:35 | true | | {EXTERNAL LOCATION} | bool | -| raw_pointer.rs:56:5:56:22 | raw_const_borrow(...) | | {EXTERNAL LOCATION} | () | -| raw_pointer.rs:57:5:57:20 | raw_mut_borrow(...) | | {EXTERNAL LOCATION} | () | -| raw_pointer.rs:58:5:58:24 | raw_mut_write(...) | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:58:19:58:23 | false | | {EXTERNAL LOCATION} | bool | -| raw_pointer.rs:59:5:59:30 | raw_type_from_deref(...) | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:59:25:59:29 | false | | {EXTERNAL LOCATION} | bool | | regressions.rs:10:17:10:17 | s | | regressions.rs:3:5:3:23 | S | | regressions.rs:10:17:10:17 | s | T | regressions.rs:9:10:9:10 | T | -| regressions.rs:10:34:12:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| regressions.rs:10:34:12:9 | { ... } | T | regressions.rs:9:10:9:10 | T | | regressions.rs:11:18:11:18 | s | | regressions.rs:3:5:3:23 | S | | regressions.rs:11:18:11:18 | s | T | regressions.rs:9:10:9:10 | T | -| regressions.rs:15:21:33:5 | { ... } | | regressions.rs:5:5:7:5 | E | -| regressions.rs:16:17:16:21 | vec_e | | {EXTERNAL LOCATION} | Vec | -| regressions.rs:16:17:16:21 | vec_e | A | {EXTERNAL LOCATION} | Global | -| regressions.rs:16:25:16:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| regressions.rs:16:25:16:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | regressions.rs:19:13:19:13 | e | | regressions.rs:5:5:7:5 | E | | regressions.rs:19:17:19:40 | ...::V {...} | | regressions.rs:5:5:7:5 | E | -| regressions.rs:19:29:19:38 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| regressions.rs:19:29:19:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | regressions.rs:21:9:23:9 | if ... {...} | | {EXTERNAL LOCATION} | () | | regressions.rs:21:32:23:9 | { ... } | | {EXTERNAL LOCATION} | () | -| regressions.rs:22:13:22:17 | vec_e | | {EXTERNAL LOCATION} | Vec | -| regressions.rs:22:13:22:17 | vec_e | A | {EXTERNAL LOCATION} | Global | +| regressions.rs:24:9:24:24 | ... = ... | | {EXTERNAL LOCATION} | () | | regressions.rs:24:17:24:17 | e | | regressions.rs:5:5:7:5 | E | | regressions.rs:27:17:30:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| regressions.rs:27:37:27:41 | vec_e | | {EXTERNAL LOCATION} | Vec | -| regressions.rs:27:37:27:41 | vec_e | A | {EXTERNAL LOCATION} | Global | | regressions.rs:28:9:30:9 | { ... } | | {EXTERNAL LOCATION} | () | +| regressions.rs:29:13:29:31 | ... = ... | | {EXTERNAL LOCATION} | () | | regressions.rs:48:16:48:19 | SelfParam | | regressions.rs:39:5:40:14 | S1 | | regressions.rs:48:22:48:25 | _rhs | | regressions.rs:39:5:40:14 | S1 | -| regressions.rs:48:50:50:9 | { ... } | | regressions.rs:39:5:40:14 | S1 | | regressions.rs:57:16:57:19 | SelfParam | | regressions.rs:39:5:40:14 | S1 | | regressions.rs:57:22:57:25 | _rhs | | regressions.rs:41:5:42:14 | S2 | -| regressions.rs:57:48:59:9 | { ... } | | regressions.rs:41:5:42:14 | S2 | | regressions.rs:66:16:66:19 | SelfParam | | regressions.rs:39:5:40:14 | S1 | | regressions.rs:66:22:66:26 | other | | {EXTERNAL LOCATION} | & | | regressions.rs:66:22:66:26 | other | TRef | regressions.rs:41:5:42:14 | S2 | -| regressions.rs:66:61:68:9 | { ... } | | regressions.rs:41:5:42:14 | S2 | | regressions.rs:67:22:67:25 | self | | regressions.rs:39:5:40:14 | S1 | | regressions.rs:67:29:67:33 | other | | {EXTERNAL LOCATION} | & | | regressions.rs:67:29:67:33 | other | TRef | regressions.rs:41:5:42:14 | S2 | @@ -5344,11 +5050,8 @@ inferCertainType | regressions.rs:86:34:88:9 | { ... } | | regressions.rs:85:10:85:10 | T | | regressions.rs:87:13:87:13 | s | | regressions.rs:85:10:85:10 | T | | regressions.rs:92:20:92:22 | val | | regressions.rs:91:10:91:10 | T | -| regressions.rs:92:41:94:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| regressions.rs:92:41:94:9 | { ... } | T | regressions.rs:91:10:91:10 | T | | regressions.rs:93:18:93:20 | val | | regressions.rs:91:10:91:10 | T | | regressions.rs:99:22:99:22 | x | | regressions.rs:99:18:99:19 | T2 | -| regressions.rs:103:5:107:5 | { ... } | | regressions.rs:99:18:99:19 | T2 | | regressions.rs:104:33:104:33 | x | | regressions.rs:99:18:99:19 | T2 | | regressions.rs:113:14:113:17 | SelfParam | | regressions.rs:111:5:114:5 | Self [trait MyTrait] | | regressions.rs:118:14:118:17 | SelfParam | | {EXTERNAL LOCATION} | & | @@ -5361,14 +5064,8 @@ inferCertainType | regressions.rs:128:24:128:27 | self | T | regressions.rs:123:10:123:10 | T | | regressions.rs:139:17:139:17 | _ | | {EXTERNAL LOCATION} | & | | regressions.rs:139:17:139:17 | _ | TRef | regressions.rs:135:5:135:14 | S1 | -| regressions.rs:139:33:141:9 | { ... } | | regressions.rs:136:5:136:22 | S2 | -| regressions.rs:139:33:141:9 | { ... } | T2 | regressions.rs:135:5:135:14 | S1 | | regressions.rs:145:17:145:17 | t | | regressions.rs:144:10:144:10 | T | -| regressions.rs:145:31:147:9 | { ... } | | regressions.rs:136:5:136:22 | S2 | -| regressions.rs:145:31:147:9 | { ... } | T2 | regressions.rs:144:10:144:10 | T | | regressions.rs:146:16:146:16 | t | | regressions.rs:144:10:144:10 | T | -| regressions.rs:150:24:153:5 | { ... } | | regressions.rs:136:5:136:22 | S2 | -| regressions.rs:150:24:153:5 | { ... } | T2 | regressions.rs:135:5:135:14 | S1 | | regressions.rs:164:16:164:19 | SelfParam | | regressions.rs:158:5:158:19 | S | | regressions.rs:164:16:164:19 | SelfParam | T | regressions.rs:160:10:160:10 | T | | regressions.rs:164:22:164:25 | _rhs | | regressions.rs:158:5:158:19 | S | @@ -5434,10 +5131,8 @@ inferType | associated_types.rs:81:9:81:11 | 'a' | | {EXTERNAL LOCATION} | char | | associated_types.rs:92:15:92:18 | SelfParam | | associated_types.rs:88:5:103:5 | Self [trait MyTrait] | | associated_types.rs:94:15:94:18 | SelfParam | | associated_types.rs:88:5:103:5 | Self [trait MyTrait] | -| associated_types.rs:98:9:102:9 | { ... } | | associated_types.rs:89:9:89:28 | AssociatedType[MyTrait] | | associated_types.rs:99:13:99:16 | self | | associated_types.rs:88:5:103:5 | Self [trait MyTrait] | | associated_types.rs:99:13:99:21 | self.m1() | | associated_types.rs:89:9:89:28 | AssociatedType[MyTrait] | -| associated_types.rs:101:13:101:43 | ...::default(...) | | associated_types.rs:89:9:89:28 | AssociatedType[MyTrait] | | associated_types.rs:109:15:109:18 | SelfParam | | associated_types.rs:10:1:11:9 | S | | associated_types.rs:109:45:111:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | | associated_types.rs:110:13:110:14 | S3 | | associated_types.rs:16:1:17:10 | S3 | @@ -6308,7 +6003,7 @@ inferType | blanket_impl.rs:299:44:299:44 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | -| closure.rs:4:19:31:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:4:19:39:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:6:13:6:22 | my_closure | | {EXTERNAL LOCATION} | dyn Fn | | closure.rs:6:13:6:22 | my_closure | dyn(Args) | {EXTERNAL LOCATION} | (T_2) | | closure.rs:6:13:6:22 | my_closure | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | @@ -6418,570 +6113,663 @@ inferType | closure.rs:30:28:30:32 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:30:28:30:32 | ArgList | T0 | {EXTERNAL LOCATION} | bool | | closure.rs:30:29:30:31 | arg | | {EXTERNAL LOCATION} | bool | -| closure.rs:35:44:35:44 | f | | closure.rs:35:20:35:41 | F | -| closure.rs:35:50:37:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:36:13:36:19 | _return | | {EXTERNAL LOCATION} | i64 | -| closure.rs:36:23:36:23 | f | | closure.rs:35:20:35:41 | F | -| closure.rs:36:23:36:29 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:36:24:36:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:36:24:36:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:36:25:36:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:39:45:39:45 | f | | closure.rs:39:28:39:42 | F | -| closure.rs:39:51:41:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:40:13:40:19 | _return | | {EXTERNAL LOCATION} | () | -| closure.rs:40:23:40:23 | f | | closure.rs:39:28:39:42 | F | -| closure.rs:40:23:40:29 | f(...) | | {EXTERNAL LOCATION} | () | -| closure.rs:40:24:40:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:40:24:40:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:40:25:40:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:43:46:43:46 | f | | closure.rs:43:22:43:43 | F | -| closure.rs:43:52:46:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:44:13:44:15 | arg | | {EXTERNAL LOCATION} | bool | -| closure.rs:44:19:44:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| closure.rs:45:9:45:9 | f | | closure.rs:43:22:43:43 | F | -| closure.rs:45:9:45:14 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:45:10:45:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:45:10:45:14 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:45:11:45:13 | arg | | {EXTERNAL LOCATION} | bool | -| closure.rs:48:39:48:39 | f | | closure.rs:48:20:48:36 | F | -| closure.rs:48:45:48:45 | a | | closure.rs:48:14:48:14 | A | -| closure.rs:48:56:50:5 | { ... } | | closure.rs:48:17:48:17 | B | -| closure.rs:49:9:49:9 | f | | closure.rs:48:20:48:36 | F | -| closure.rs:49:9:49:12 | f(...) | | closure.rs:48:17:48:17 | B | -| closure.rs:49:10:49:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:49:10:49:12 | ArgList | T0 | closure.rs:48:14:48:14 | A | -| closure.rs:49:11:49:11 | a | | closure.rs:48:14:48:14 | A | -| closure.rs:52:18:52:18 | f | | closure.rs:52:21:52:43 | impl ... | -| closure.rs:52:53:54:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:53:9:53:9 | f | | closure.rs:52:21:52:43 | impl ... | -| closure.rs:53:9:53:12 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:53:10:53:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:53:10:53:12 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:53:11:53:11 | 2 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:56:15:68:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:57:13:57:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:57:13:57:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:57:13:57:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:57:13:57:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:57:17:63:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:57:17:63:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:57:17:63:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:57:17:63:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:57:18:57:18 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:57:34:63:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:58:13:62:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| closure.rs:58:16:58:16 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:58:18:60:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:59:17:59:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:60:20:62:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:61:17:61:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:64:13:64:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:64:18:64:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:64:24:64:24 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:64:24:64:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:64:24:64:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:64:24:64:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:64:27:64:30 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:66:13:66:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:66:13:66:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:66:13:66:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:66:17:66:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:66:17:66:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:66:17:66:25 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:66:18:66:18 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:66:21:66:21 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:66:25:66:25 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:67:13:67:15 | _r2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:67:19:67:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:67:29:67:29 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:67:29:67:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:67:29:67:29 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:72:47:72:47 | f | | closure.rs:72:20:72:40 | F | -| closure.rs:72:53:74:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:73:13:73:19 | _return | | {EXTERNAL LOCATION} | i64 | -| closure.rs:73:23:73:23 | f | | closure.rs:72:20:72:40 | F | -| closure.rs:73:23:73:29 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:73:24:73:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:73:24:73:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:73:25:73:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:76:48:76:48 | f | | closure.rs:76:28:76:41 | F | -| closure.rs:76:54:78:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:77:13:77:19 | _return | | {EXTERNAL LOCATION} | () | -| closure.rs:77:23:77:23 | f | | closure.rs:76:28:76:41 | F | -| closure.rs:77:23:77:29 | f(...) | | {EXTERNAL LOCATION} | () | -| closure.rs:77:24:77:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:77:24:77:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:77:25:77:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:80:49:80:49 | f | | closure.rs:80:22:80:42 | F | -| closure.rs:80:55:83:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:81:13:81:15 | arg | | {EXTERNAL LOCATION} | bool | -| closure.rs:81:19:81:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| closure.rs:82:9:82:9 | f | | closure.rs:80:22:80:42 | F | -| closure.rs:82:9:82:14 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:82:10:82:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:82:10:82:14 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:82:11:82:13 | arg | | {EXTERNAL LOCATION} | bool | -| closure.rs:85:42:85:42 | f | | closure.rs:85:20:85:35 | F | -| closure.rs:85:48:85:48 | a | | closure.rs:85:14:85:14 | A | -| closure.rs:85:59:87:5 | { ... } | | closure.rs:85:17:85:17 | B | -| closure.rs:86:9:86:9 | f | | closure.rs:85:20:85:35 | F | -| closure.rs:86:9:86:12 | f(...) | | closure.rs:85:17:85:17 | B | -| closure.rs:86:10:86:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:86:10:86:12 | ArgList | T0 | closure.rs:85:14:85:14 | A | -| closure.rs:86:11:86:11 | a | | closure.rs:85:14:85:14 | A | -| closure.rs:89:22:89:22 | f | | closure.rs:89:25:89:46 | impl ... | -| closure.rs:89:56:91:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:90:9:90:9 | f | | closure.rs:89:25:89:46 | impl ... | -| closure.rs:90:9:90:12 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:90:10:90:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:90:10:90:12 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:90:11:90:11 | 2 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:93:15:105:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:94:13:94:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:94:13:94:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:94:13:94:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:94:13:94:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:94:17:100:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:94:17:100:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:94:17:100:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:94:17:100:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:94:18:94:18 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:94:34:100:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:95:13:99:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| closure.rs:95:16:95:16 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:95:18:97:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:96:17:96:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:97:20:99:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:98:17:98:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:101:13:101:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:101:18:101:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:101:24:101:24 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:101:24:101:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:101:24:101:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:101:24:101:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:101:27:101:30 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:103:13:103:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:103:13:103:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:103:13:103:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:103:17:103:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:103:17:103:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:103:17:103:25 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:103:18:103:18 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:103:21:103:21 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:103:25:103:25 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:104:13:104:15 | _r2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:104:19:104:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:104:29:104:29 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:104:29:104:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:104:29:104:29 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:109:40:109:40 | f | | closure.rs:109:20:109:37 | F | -| closure.rs:109:46:111:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:110:13:110:19 | _return | | {EXTERNAL LOCATION} | i64 | -| closure.rs:110:23:110:23 | f | | closure.rs:109:20:109:37 | F | -| closure.rs:110:23:110:29 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:110:24:110:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:110:24:110:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:110:25:110:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:113:41:113:41 | f | | closure.rs:113:28:113:38 | F | -| closure.rs:113:47:115:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:114:13:114:19 | _return | | {EXTERNAL LOCATION} | () | -| closure.rs:114:23:114:23 | f | | closure.rs:113:28:113:38 | F | -| closure.rs:114:23:114:29 | f(...) | | {EXTERNAL LOCATION} | () | -| closure.rs:114:24:114:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:114:24:114:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:114:25:114:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:117:42:117:42 | f | | closure.rs:117:22:117:39 | F | -| closure.rs:117:48:120:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:118:13:118:15 | arg | | {EXTERNAL LOCATION} | bool | -| closure.rs:118:19:118:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| closure.rs:119:9:119:9 | f | | closure.rs:117:22:117:39 | F | -| closure.rs:119:9:119:14 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:119:10:119:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:119:10:119:14 | ArgList | T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:119:11:119:13 | arg | | {EXTERNAL LOCATION} | bool | -| closure.rs:122:35:122:35 | f | | closure.rs:122:20:122:32 | F | -| closure.rs:122:41:122:41 | a | | closure.rs:122:14:122:14 | A | -| closure.rs:122:52:124:5 | { ... } | | closure.rs:122:17:122:17 | B | -| closure.rs:123:9:123:9 | f | | closure.rs:122:20:122:32 | F | -| closure.rs:123:9:123:12 | f(...) | | closure.rs:122:17:122:17 | B | -| closure.rs:123:10:123:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:123:10:123:12 | ArgList | T0 | closure.rs:122:14:122:14 | A | -| closure.rs:123:11:123:11 | a | | closure.rs:122:14:122:14 | A | -| closure.rs:126:18:126:18 | f | | closure.rs:126:21:126:39 | impl ... | -| closure.rs:126:49:128:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:127:9:127:9 | f | | closure.rs:126:21:126:39 | impl ... | -| closure.rs:127:9:127:12 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:127:10:127:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:127:10:127:12 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:127:11:127:11 | 2 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:130:15:142:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:131:13:131:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:131:13:131:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:131:13:131:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:131:13:131:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:131:17:137:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:131:17:137:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:131:17:137:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:131:17:137:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:131:18:131:18 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:131:34:137:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:132:13:136:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| closure.rs:132:16:132:16 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:132:18:134:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:133:17:133:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:134:20:136:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:135:17:135:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:138:13:138:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:138:18:138:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:138:24:138:24 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:138:24:138:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:138:24:138:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:138:24:138:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:138:27:138:30 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:140:13:140:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:140:13:140:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:140:13:140:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:140:17:140:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:140:17:140:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:140:17:140:25 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:140:18:140:18 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:140:21:140:21 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:140:25:140:25 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:141:13:141:15 | _r2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:141:19:141:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:141:29:141:29 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:141:29:141:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:141:29:141:29 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:146:54:146:54 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:146:54:146:54 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:146:54:146:54 | f | T | closure.rs:146:26:146:51 | F | -| closure.rs:146:65:146:67 | arg | | closure.rs:146:20:146:20 | A | -| closure.rs:146:78:148:5 | { ... } | | closure.rs:146:23:146:23 | B | -| closure.rs:147:9:147:9 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:147:9:147:9 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:147:9:147:9 | f | T | closure.rs:146:26:146:51 | F | -| closure.rs:147:9:147:14 | f(...) | | closure.rs:146:23:146:23 | B | -| closure.rs:147:10:147:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:147:10:147:14 | ArgList | T0 | closure.rs:146:20:146:20 | A | -| closure.rs:147:11:147:13 | arg | | closure.rs:146:20:146:20 | A | -| closure.rs:150:30:150:30 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:150:30:150:30 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:150:30:150:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:150:30:150:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:150:30:150:30 | f | T.dyn(Args).T0 | closure.rs:150:24:150:24 | A | -| closure.rs:150:30:150:30 | f | T.dyn(Output) | closure.rs:150:27:150:27 | B | -| closure.rs:150:58:150:60 | arg | | closure.rs:150:24:150:24 | A | -| closure.rs:150:66:153:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:151:13:151:15 | _r1 | | closure.rs:150:27:150:27 | B | -| closure.rs:151:19:151:37 | apply_boxed(...) | | closure.rs:150:27:150:27 | B | -| closure.rs:151:31:151:31 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:151:31:151:31 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:151:31:151:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:151:31:151:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:151:31:151:31 | f | T.dyn(Args).T0 | closure.rs:150:24:150:24 | A | -| closure.rs:151:31:151:31 | f | T.dyn(Output) | closure.rs:150:27:150:27 | B | -| closure.rs:151:34:151:36 | arg | | closure.rs:150:24:150:24 | A | -| closure.rs:152:13:152:15 | _r2 | | {EXTERNAL LOCATION} | bool | -| closure.rs:152:19:152:57 | apply_boxed(...) | | {EXTERNAL LOCATION} | bool | -| closure.rs:152:31:152:53 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| closure.rs:152:31:152:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| closure.rs:152:31:152:53 | ...::new(...) | T | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:152:31:152:53 | ...::new(...) | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:152:31:152:53 | ...::new(...) | T.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:152:31:152:53 | ...::new(...) | T.dyn(Output) | {EXTERNAL LOCATION} | bool | -| closure.rs:152:40:152:52 | \|...\| true | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:152:40:152:52 | \|...\| true | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:152:40:152:52 | \|...\| true | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:152:40:152:52 | \|...\| true | dyn(Output) | {EXTERNAL LOCATION} | bool | -| closure.rs:152:41:152:41 | _ | | {EXTERNAL LOCATION} | i64 | -| closure.rs:152:49:152:52 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:152:56:152:56 | 3 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:157:34:157:34 | f | | closure.rs:157:15:157:31 | F | -| closure.rs:157:40:157:40 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:157:55:159:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:158:9:158:9 | f | | closure.rs:157:15:157:31 | F | -| closure.rs:158:9:158:12 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:158:10:158:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:158:10:158:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:158:11:158:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:161:15:161:15 | f | | closure.rs:161:18:161:36 | impl ... | -| closure.rs:161:39:161:39 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:161:54:163:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:162:9:162:9 | f | | closure.rs:161:18:161:36 | impl ... | -| closure.rs:162:9:162:12 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:162:10:162:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:162:10:162:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:162:11:162:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:165:15:165:15 | f | | {EXTERNAL LOCATION} | & | -| closure.rs:165:15:165:15 | f | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:165:15:165:15 | f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:165:15:165:15 | f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:165:15:165:15 | f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:165:39:165:39 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:165:54:167:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:166:9:166:9 | f | | {EXTERNAL LOCATION} | & | -| closure.rs:166:9:166:9 | f | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:166:9:166:9 | f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:166:9:166:9 | f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:166:9:166:9 | f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:33:13:33:14 | f1 | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:33:13:33:14 | f1 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:33:13:33:14 | f1 | dyn(Args).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:33:13:33:14 | f1 | dyn(Args).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:33:13:33:14 | f1 | dyn(Output) | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:33:13:33:14 | f1 | dyn(Output).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:33:13:33:14 | f1 | dyn(Output).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:33:13:33:14 | f1 | dyn(Output).T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:33:18:33:31 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:33:18:33:31 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:33:18:33:31 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:33:18:33:31 | \|...\| ... | dyn(Args).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:33:18:33:31 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:33:18:33:31 | \|...\| ... | dyn(Output).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:33:18:33:31 | \|...\| ... | dyn(Output).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:33:18:33:31 | \|...\| ... | dyn(Output).T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:33:19:33:19 | x | | {EXTERNAL LOCATION} | Option | +| closure.rs:33:19:33:19 | x | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:33:22:33:31 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:33:22:33:31 | TupleExpr | T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:33:22:33:31 | TupleExpr | T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:33:22:33:31 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:33:23:33:23 | x | | {EXTERNAL LOCATION} | Option | +| closure.rs:33:23:33:23 | x | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:33:26:33:30 | false | | {EXTERNAL LOCATION} | bool | +| closure.rs:34:13:34:14 | _r | | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:34:13:34:14 | _r | T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:34:13:34:14 | _r | T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:34:13:34:14 | _r | T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:34:18:34:19 | f1 | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:34:18:34:19 | f1 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:34:18:34:19 | f1 | dyn(Args).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:34:18:34:19 | f1 | dyn(Args).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:34:18:34:19 | f1 | dyn(Output) | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:34:18:34:19 | f1 | dyn(Output).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:34:18:34:19 | f1 | dyn(Output).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:34:18:34:19 | f1 | dyn(Output).T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:34:18:34:28 | f1(...) | | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:34:18:34:28 | f1(...) | T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:34:18:34:28 | f1(...) | T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:34:18:34:28 | f1(...) | T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:34:20:34:28 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:34:20:34:28 | ArgList | T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:34:20:34:28 | ArgList | T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:34:21:34:27 | Some(...) | | {EXTERNAL LOCATION} | Option | +| closure.rs:34:21:34:27 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:34:26:34:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:37:13:37:14 | f2 | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:37:13:37:14 | f2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:37:13:37:14 | f2 | dyn(Args).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:37:13:37:14 | f2 | dyn(Args).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:37:13:37:14 | f2 | dyn(Output) | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:37:13:37:14 | f2 | dyn(Output).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:37:13:37:14 | f2 | dyn(Output).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:37:13:37:14 | f2 | dyn(Output).T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:37:18:37:31 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:37:18:37:31 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:37:18:37:31 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:37:18:37:31 | \|...\| ... | dyn(Args).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:37:18:37:31 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:37:18:37:31 | \|...\| ... | dyn(Output).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:37:18:37:31 | \|...\| ... | dyn(Output).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:37:18:37:31 | \|...\| ... | dyn(Output).T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:37:19:37:19 | x | | {EXTERNAL LOCATION} | Option | +| closure.rs:37:19:37:19 | x | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:37:22:37:31 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:37:22:37:31 | TupleExpr | T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:37:22:37:31 | TupleExpr | T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:37:22:37:31 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:37:23:37:23 | x | | {EXTERNAL LOCATION} | Option | +| closure.rs:37:23:37:23 | x | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:37:26:37:30 | false | | {EXTERNAL LOCATION} | bool | +| closure.rs:38:13:38:14 | _r | | {EXTERNAL LOCATION} | Option | +| closure.rs:38:13:38:14 | _r | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:38:31:38:32 | f2 | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:38:31:38:32 | f2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:38:31:38:32 | f2 | dyn(Args).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:38:31:38:32 | f2 | dyn(Args).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:38:31:38:32 | f2 | dyn(Output) | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:38:31:38:32 | f2 | dyn(Output).T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:38:31:38:32 | f2 | dyn(Output).T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:38:31:38:32 | f2 | dyn(Output).T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:38:31:38:52 | f2(...) | | {EXTERNAL LOCATION} | (T_2) | +| closure.rs:38:31:38:52 | f2(...) | T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:38:31:38:52 | f2(...) | T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:38:31:38:52 | f2(...) | T1 | {EXTERNAL LOCATION} | bool | +| closure.rs:38:31:38:54 | ... .0 | | {EXTERNAL LOCATION} | Option | +| closure.rs:38:31:38:54 | ... .0 | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:38:33:38:52 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:38:33:38:52 | ArgList | T0 | {EXTERNAL LOCATION} | Option | +| closure.rs:38:33:38:52 | ArgList | T0.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:38:34:38:51 | ...::default(...) | | {EXTERNAL LOCATION} | Option | +| closure.rs:38:34:38:51 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:43:44:43:44 | f | | closure.rs:43:20:43:41 | F | +| closure.rs:43:50:45:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:44:13:44:19 | _return | | {EXTERNAL LOCATION} | i64 | +| closure.rs:44:23:44:23 | f | | closure.rs:43:20:43:41 | F | +| closure.rs:44:23:44:29 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:44:24:44:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:44:24:44:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:44:25:44:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:47:45:47:45 | f | | closure.rs:47:28:47:42 | F | +| closure.rs:47:51:49:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:48:13:48:19 | _return | | {EXTERNAL LOCATION} | () | +| closure.rs:48:23:48:23 | f | | closure.rs:47:28:47:42 | F | +| closure.rs:48:23:48:29 | f(...) | | {EXTERNAL LOCATION} | () | +| closure.rs:48:24:48:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:48:24:48:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:48:25:48:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:51:46:51:46 | f | | closure.rs:51:22:51:43 | F | +| closure.rs:51:52:54:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:52:13:52:15 | arg | | {EXTERNAL LOCATION} | bool | +| closure.rs:52:19:52:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:53:9:53:9 | f | | closure.rs:51:22:51:43 | F | +| closure.rs:53:9:53:14 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:53:10:53:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:53:10:53:14 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:53:11:53:13 | arg | | {EXTERNAL LOCATION} | bool | +| closure.rs:56:39:56:39 | f | | closure.rs:56:20:56:36 | F | +| closure.rs:56:45:56:45 | a | | closure.rs:56:14:56:14 | A | +| closure.rs:56:56:58:5 | { ... } | | closure.rs:56:17:56:17 | B | +| closure.rs:57:9:57:9 | f | | closure.rs:56:20:56:36 | F | +| closure.rs:57:9:57:12 | f(...) | | closure.rs:56:17:56:17 | B | +| closure.rs:57:10:57:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:57:10:57:12 | ArgList | T0 | closure.rs:56:14:56:14 | A | +| closure.rs:57:11:57:11 | a | | closure.rs:56:14:56:14 | A | +| closure.rs:60:18:60:18 | f | | closure.rs:60:21:60:43 | impl ... | +| closure.rs:60:53:62:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:61:9:61:9 | f | | closure.rs:60:21:60:43 | impl ... | +| closure.rs:61:9:61:12 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:61:10:61:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:61:10:61:12 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:61:11:61:11 | 2 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:64:15:76:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:65:13:65:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:65:13:65:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:65:13:65:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:65:13:65:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:65:17:71:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:65:17:71:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:65:17:71:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:65:17:71:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:65:18:65:18 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:65:34:71:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:66:13:70:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| closure.rs:66:16:66:16 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:66:18:68:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:67:17:67:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:68:20:70:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:69:17:69:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:72:13:72:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:72:18:72:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:72:24:72:24 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:72:24:72:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:72:24:72:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:72:24:72:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:72:27:72:30 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:74:13:74:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:74:13:74:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:74:13:74:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:74:17:74:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:74:17:74:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:74:17:74:25 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:74:18:74:18 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:74:21:74:21 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:74:25:74:25 | 1 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:75:13:75:15 | _r2 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:75:19:75:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:75:29:75:29 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:75:29:75:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:75:29:75:29 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:80:47:80:47 | f | | closure.rs:80:20:80:40 | F | +| closure.rs:80:53:82:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:81:13:81:19 | _return | | {EXTERNAL LOCATION} | i64 | +| closure.rs:81:23:81:23 | f | | closure.rs:80:20:80:40 | F | +| closure.rs:81:23:81:29 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:81:24:81:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:81:24:81:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:81:25:81:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:84:48:84:48 | f | | closure.rs:84:28:84:41 | F | +| closure.rs:84:54:86:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:85:13:85:19 | _return | | {EXTERNAL LOCATION} | () | +| closure.rs:85:23:85:23 | f | | closure.rs:84:28:84:41 | F | +| closure.rs:85:23:85:29 | f(...) | | {EXTERNAL LOCATION} | () | +| closure.rs:85:24:85:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:85:24:85:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:85:25:85:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:88:49:88:49 | f | | closure.rs:88:22:88:42 | F | +| closure.rs:88:55:91:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:89:13:89:15 | arg | | {EXTERNAL LOCATION} | bool | +| closure.rs:89:19:89:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:90:9:90:9 | f | | closure.rs:88:22:88:42 | F | +| closure.rs:90:9:90:14 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:90:10:90:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:90:10:90:14 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:90:11:90:13 | arg | | {EXTERNAL LOCATION} | bool | +| closure.rs:93:42:93:42 | f | | closure.rs:93:20:93:35 | F | +| closure.rs:93:48:93:48 | a | | closure.rs:93:14:93:14 | A | +| closure.rs:93:59:95:5 | { ... } | | closure.rs:93:17:93:17 | B | +| closure.rs:94:9:94:9 | f | | closure.rs:93:20:93:35 | F | +| closure.rs:94:9:94:12 | f(...) | | closure.rs:93:17:93:17 | B | +| closure.rs:94:10:94:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:94:10:94:12 | ArgList | T0 | closure.rs:93:14:93:14 | A | +| closure.rs:94:11:94:11 | a | | closure.rs:93:14:93:14 | A | +| closure.rs:97:22:97:22 | f | | closure.rs:97:25:97:46 | impl ... | +| closure.rs:97:56:99:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:98:9:98:9 | f | | closure.rs:97:25:97:46 | impl ... | +| closure.rs:98:9:98:12 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:98:10:98:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:98:10:98:12 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:98:11:98:11 | 2 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:101:15:113:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:102:13:102:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:102:13:102:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:102:13:102:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:102:13:102:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:102:17:108:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:102:17:108:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:102:17:108:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:102:17:108:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:102:18:102:18 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:102:34:108:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:103:13:107:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| closure.rs:103:16:103:16 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:103:18:105:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:104:17:104:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:105:20:107:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:106:17:106:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:109:13:109:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:109:18:109:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:109:24:109:24 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:109:24:109:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:109:24:109:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:109:24:109:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:109:27:109:30 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:111:13:111:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:111:13:111:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:111:13:111:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:111:17:111:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:111:17:111:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:111:17:111:25 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:111:18:111:18 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:111:21:111:21 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:111:25:111:25 | 1 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:112:13:112:15 | _r2 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:112:19:112:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:112:29:112:29 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:112:29:112:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:112:29:112:29 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:117:40:117:40 | f | | closure.rs:117:20:117:37 | F | +| closure.rs:117:46:119:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:118:13:118:19 | _return | | {EXTERNAL LOCATION} | i64 | +| closure.rs:118:23:118:23 | f | | closure.rs:117:20:117:37 | F | +| closure.rs:118:23:118:29 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:118:24:118:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:118:24:118:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:118:25:118:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:121:41:121:41 | f | | closure.rs:121:28:121:38 | F | +| closure.rs:121:47:123:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:122:13:122:19 | _return | | {EXTERNAL LOCATION} | () | +| closure.rs:122:23:122:23 | f | | closure.rs:121:28:121:38 | F | +| closure.rs:122:23:122:29 | f(...) | | {EXTERNAL LOCATION} | () | +| closure.rs:122:24:122:29 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:122:24:122:29 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:122:25:122:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:125:42:125:42 | f | | closure.rs:125:22:125:39 | F | +| closure.rs:125:48:128:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:126:13:126:15 | arg | | {EXTERNAL LOCATION} | bool | +| closure.rs:126:19:126:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:127:9:127:9 | f | | closure.rs:125:22:125:39 | F | +| closure.rs:127:9:127:14 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:127:10:127:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:127:10:127:14 | ArgList | T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:127:11:127:13 | arg | | {EXTERNAL LOCATION} | bool | +| closure.rs:130:35:130:35 | f | | closure.rs:130:20:130:32 | F | +| closure.rs:130:41:130:41 | a | | closure.rs:130:14:130:14 | A | +| closure.rs:130:52:132:5 | { ... } | | closure.rs:130:17:130:17 | B | +| closure.rs:131:9:131:9 | f | | closure.rs:130:20:130:32 | F | +| closure.rs:131:9:131:12 | f(...) | | closure.rs:130:17:130:17 | B | +| closure.rs:131:10:131:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:131:10:131:12 | ArgList | T0 | closure.rs:130:14:130:14 | A | +| closure.rs:131:11:131:11 | a | | closure.rs:130:14:130:14 | A | +| closure.rs:134:18:134:18 | f | | closure.rs:134:21:134:39 | impl ... | +| closure.rs:134:49:136:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:135:9:135:9 | f | | closure.rs:134:21:134:39 | impl ... | +| closure.rs:135:9:135:12 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:135:10:135:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:135:10:135:12 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:135:11:135:11 | 2 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:138:15:150:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:139:13:139:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:139:13:139:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:139:13:139:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:139:13:139:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:139:17:145:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:139:17:145:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:139:17:145:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:139:17:145:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:139:18:139:18 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:139:34:145:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:140:13:144:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| closure.rs:140:16:140:16 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:140:18:142:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:141:17:141:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:142:20:144:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:143:17:143:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:146:13:146:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:146:18:146:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:146:24:146:24 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:146:24:146:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:146:24:146:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:146:24:146:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:146:27:146:30 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:148:13:148:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:148:13:148:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:148:13:148:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:148:17:148:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:148:17:148:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:148:17:148:25 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:148:18:148:18 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:148:21:148:21 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:148:25:148:25 | 1 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:149:13:149:15 | _r2 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:149:19:149:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:149:29:149:29 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:149:29:149:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:149:29:149:29 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:154:54:154:54 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:154:54:154:54 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:154:54:154:54 | f | T | closure.rs:154:26:154:51 | F | +| closure.rs:154:65:154:67 | arg | | closure.rs:154:20:154:20 | A | +| closure.rs:154:78:156:5 | { ... } | | closure.rs:154:23:154:23 | B | +| closure.rs:155:9:155:9 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:155:9:155:9 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:155:9:155:9 | f | T | closure.rs:154:26:154:51 | F | +| closure.rs:155:9:155:14 | f(...) | | closure.rs:154:23:154:23 | B | +| closure.rs:155:10:155:14 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:155:10:155:14 | ArgList | T0 | closure.rs:154:20:154:20 | A | +| closure.rs:155:11:155:13 | arg | | closure.rs:154:20:154:20 | A | +| closure.rs:158:30:158:30 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:158:30:158:30 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:158:30:158:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:158:30:158:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:158:30:158:30 | f | T.dyn(Args).T0 | closure.rs:158:24:158:24 | A | +| closure.rs:158:30:158:30 | f | T.dyn(Output) | closure.rs:158:27:158:27 | B | +| closure.rs:158:58:158:60 | arg | | closure.rs:158:24:158:24 | A | +| closure.rs:158:66:161:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:159:13:159:15 | _r1 | | closure.rs:158:27:158:27 | B | +| closure.rs:159:19:159:37 | apply_boxed(...) | | closure.rs:158:27:158:27 | B | +| closure.rs:159:31:159:31 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:159:31:159:31 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:159:31:159:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:159:31:159:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:159:31:159:31 | f | T.dyn(Args).T0 | closure.rs:158:24:158:24 | A | +| closure.rs:159:31:159:31 | f | T.dyn(Output) | closure.rs:158:27:158:27 | B | +| closure.rs:159:34:159:36 | arg | | closure.rs:158:24:158:24 | A | +| closure.rs:160:13:160:15 | _r2 | | {EXTERNAL LOCATION} | bool | +| closure.rs:160:19:160:57 | apply_boxed(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:160:31:160:53 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| closure.rs:160:31:160:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| closure.rs:160:31:160:53 | ...::new(...) | T | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:160:31:160:53 | ...::new(...) | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:160:31:160:53 | ...::new(...) | T.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:160:31:160:53 | ...::new(...) | T.dyn(Output) | {EXTERNAL LOCATION} | bool | +| closure.rs:160:40:160:52 | \|...\| true | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:160:40:160:52 | \|...\| true | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:160:40:160:52 | \|...\| true | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:160:40:160:52 | \|...\| true | dyn(Output) | {EXTERNAL LOCATION} | bool | +| closure.rs:160:41:160:41 | _ | | {EXTERNAL LOCATION} | i64 | +| closure.rs:160:49:160:52 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:160:56:160:56 | 3 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:165:34:165:34 | f | | closure.rs:165:15:165:31 | F | +| closure.rs:165:40:165:40 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:165:55:167:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:166:9:166:9 | f | | closure.rs:165:15:165:31 | F | | closure.rs:166:9:166:12 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:166:10:166:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:166:10:166:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:166:11:166:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:169:41:169:41 | f | | closure.rs:169:15:169:34 | F | -| closure.rs:169:47:169:47 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:169:62:171:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:170:9:170:9 | f | | closure.rs:169:15:169:34 | F | +| closure.rs:169:15:169:15 | f | | closure.rs:169:18:169:36 | impl ... | +| closure.rs:169:39:169:39 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:169:54:171:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:170:9:170:9 | f | | closure.rs:169:18:169:36 | impl ... | | closure.rs:170:9:170:12 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:170:10:170:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:170:10:170:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:170:11:170:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:173:15:173:15 | f | | {EXTERNAL LOCATION} | &mut | -| closure.rs:173:15:173:15 | f | TRefMut | {EXTERNAL LOCATION} | dyn FnMut | -| closure.rs:173:15:173:15 | f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:173:15:173:15 | f | TRefMut.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:173:15:173:15 | f | TRefMut.dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:173:46:173:46 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:173:61:175:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:174:9:174:9 | f | | {EXTERNAL LOCATION} | &mut | -| closure.rs:174:9:174:9 | f | TRefMut | {EXTERNAL LOCATION} | dyn FnMut | -| closure.rs:174:9:174:9 | f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:174:9:174:9 | f | TRefMut.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:174:9:174:9 | f | TRefMut.dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:173:15:173:15 | f | | {EXTERNAL LOCATION} | & | +| closure.rs:173:15:173:15 | f | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:173:15:173:15 | f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:173:15:173:15 | f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:173:15:173:15 | f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:173:39:173:39 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:173:54:175:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:174:9:174:9 | f | | {EXTERNAL LOCATION} | & | +| closure.rs:174:9:174:9 | f | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:174:9:174:9 | f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:174:9:174:9 | f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:174:9:174:9 | f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:174:9:174:12 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:174:10:174:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | | closure.rs:174:10:174:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:174:11:174:11 | a | | {EXTERNAL LOCATION} | i64 | -| closure.rs:177:18:177:18 | f | | closure.rs:177:21:177:37 | impl ... | -| closure.rs:177:40:177:40 | a | | closure.rs:177:15:177:15 | T | -| closure.rs:177:53:179:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:178:9:178:9 | f | | closure.rs:177:21:177:37 | impl ... | +| closure.rs:177:41:177:41 | f | | closure.rs:177:15:177:34 | F | +| closure.rs:177:47:177:47 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:177:62:179:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:178:9:178:9 | f | | closure.rs:177:15:177:34 | F | | closure.rs:178:9:178:12 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:178:10:178:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:178:10:178:12 | ArgList | T0 | closure.rs:177:15:177:15 | T | -| closure.rs:178:11:178:11 | a | | closure.rs:177:15:177:15 | T | -| closure.rs:181:42:181:42 | f | | closure.rs:181:18:181:35 | F | -| closure.rs:181:48:181:48 | a | | closure.rs:181:15:181:15 | T | +| closure.rs:178:10:178:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:178:11:178:11 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:181:15:181:15 | f | | {EXTERNAL LOCATION} | &mut | +| closure.rs:181:15:181:15 | f | TRefMut | {EXTERNAL LOCATION} | dyn FnMut | +| closure.rs:181:15:181:15 | f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:181:15:181:15 | f | TRefMut.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:181:15:181:15 | f | TRefMut.dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:181:46:181:46 | a | | {EXTERNAL LOCATION} | i64 | | closure.rs:181:61:183:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:182:9:182:9 | f | | closure.rs:181:18:181:35 | F | +| closure.rs:182:9:182:9 | f | | {EXTERNAL LOCATION} | &mut | +| closure.rs:182:9:182:9 | f | TRefMut | {EXTERNAL LOCATION} | dyn FnMut | +| closure.rs:182:9:182:9 | f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:182:9:182:9 | f | TRefMut.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:182:9:182:9 | f | TRefMut.dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:182:9:182:12 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:182:10:182:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:182:10:182:12 | ArgList | T0 | closure.rs:181:15:181:15 | T | -| closure.rs:182:11:182:11 | a | | closure.rs:181:15:181:15 | T | -| closure.rs:185:15:206:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:186:13:186:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:186:13:186:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:186:13:186:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:186:13:186:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:186:17:186:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:186:17:186:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:186:17:186:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:186:17:186:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:186:18:186:18 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:186:21:186:21 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:187:13:187:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:187:18:187:32 | apply1(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:187:25:187:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:187:25:187:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:187:25:187:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:187:25:187:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:187:28:187:31 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:189:13:189:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:189:13:189:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:189:13:189:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:189:13:189:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:189:17:189:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:189:17:189:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:189:17:189:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:189:17:189:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:189:18:189:18 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:189:21:189:21 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:190:13:190:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:190:18:190:32 | apply2(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:190:25:190:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:190:25:190:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:190:25:190:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:190:25:190:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:190:28:190:31 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:192:13:192:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:192:13:192:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:192:13:192:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:192:13:192:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:192:17:192:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:192:17:192:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:192:17:192:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:192:17:192:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:192:18:192:18 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:192:21:192:21 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:193:13:193:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:193:18:193:33 | apply3(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:193:25:193:26 | &f | | {EXTERNAL LOCATION} | & | -| closure.rs:193:25:193:26 | &f | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:193:25:193:26 | &f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:193:25:193:26 | &f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:193:25:193:26 | &f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:193:26:193:26 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:193:26:193:26 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:193:26:193:26 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:193:26:193:26 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:193:29:193:32 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:195:13:195:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:195:13:195:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:195:13:195:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:195:13:195:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:195:17:195:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:195:17:195:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:195:17:195:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:195:17:195:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:195:18:195:18 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:195:21:195:21 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:196:13:196:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:196:18:196:32 | apply4(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:196:25:196:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:196:25:196:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:196:25:196:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:196:25:196:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:196:28:196:31 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:198:17:198:17 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:198:17:198:17 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:198:21:198:25 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:198:21:198:25 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:199:13:199:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:199:18:199:37 | apply5(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:199:25:199:30 | &mut f | | {EXTERNAL LOCATION} | &mut | -| closure.rs:199:25:199:30 | &mut f | TRefMut | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:199:25:199:30 | &mut f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:199:30:199:30 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:199:30:199:30 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:199:33:199:36 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:201:13:201:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:201:13:201:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:201:13:201:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:201:13:201:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:201:17:201:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:201:17:201:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:201:17:201:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:201:17:201:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:201:18:201:18 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:201:21:201:21 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:202:13:202:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:202:18:202:32 | apply6(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:202:25:202:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:202:25:202:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:202:25:202:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:202:25:202:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:202:28:202:31 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:204:13:204:13 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:204:13:204:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:204:13:204:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:204:13:204:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:204:17:204:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:204:17:204:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:204:17:204:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:204:17:204:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:204:18:204:18 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:204:21:204:21 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:205:13:205:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:205:18:205:32 | apply7(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:205:25:205:25 | f | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:205:25:205:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:205:25:205:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:205:25:205:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:205:28:205:31 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:217:18:217:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| closure.rs:217:18:217:22 | SelfParam | TRef | closure.rs:212:5:212:19 | S | -| closure.rs:217:18:217:22 | SelfParam | TRef.T | closure.rs:214:10:214:10 | T | -| closure.rs:217:42:219:9 | { ... } | | {EXTERNAL LOCATION} | & | -| closure.rs:217:42:219:9 | { ... } | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:217:42:219:9 | { ... } | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:217:42:219:9 | { ... } | TRef.dyn(Args).T0 | closure.rs:214:10:214:10 | T | -| closure.rs:217:42:219:9 | { ... } | TRef.dyn(Output) | {EXTERNAL LOCATION} | bool | -| closure.rs:218:13:218:22 | &... | | {EXTERNAL LOCATION} | & | -| closure.rs:218:13:218:22 | &... | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:218:13:218:22 | &... | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:218:13:218:22 | &... | TRef.dyn(Args).T0 | closure.rs:214:10:214:10 | T | -| closure.rs:218:13:218:22 | &... | TRef.dyn(Output) | {EXTERNAL LOCATION} | bool | -| closure.rs:218:14:218:22 | \|...\| false | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:218:14:218:22 | \|...\| false | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:218:14:218:22 | \|...\| false | dyn(Args).T0 | closure.rs:214:10:214:10 | T | -| closure.rs:218:14:218:22 | \|...\| false | dyn(Output) | {EXTERNAL LOCATION} | bool | -| closure.rs:218:15:218:15 | _ | | closure.rs:214:10:214:10 | T | -| closure.rs:218:18:218:22 | false | | {EXTERNAL LOCATION} | bool | -| closure.rs:222:19:248:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:223:13:223:13 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:223:17:223:20 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:224:13:224:13 | v | | {EXTERNAL LOCATION} | i64 | -| closure.rs:224:17:224:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:225:13:225:13 | s | | closure.rs:212:5:212:19 | S | -| closure.rs:225:13:225:13 | s | T | {EXTERNAL LOCATION} | i64 | -| closure.rs:225:17:225:20 | S(...) | | closure.rs:212:5:212:19 | S | -| closure.rs:225:17:225:20 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| closure.rs:225:19:225:19 | v | | {EXTERNAL LOCATION} | i64 | -| closure.rs:226:13:226:16 | _ret | | {EXTERNAL LOCATION} | bool | -| closure.rs:226:20:226:20 | s | | closure.rs:212:5:212:19 | S | -| closure.rs:226:20:226:20 | s | T | {EXTERNAL LOCATION} | i64 | -| closure.rs:226:20:226:23 | s(...) | | {EXTERNAL LOCATION} | bool | -| closure.rs:226:21:226:23 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:226:21:226:23 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:226:22:226:22 | x | | {EXTERNAL LOCATION} | i64 | -| closure.rs:228:13:228:13 | x | | {EXTERNAL LOCATION} | i32 | -| closure.rs:228:17:228:20 | 0i32 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:229:13:229:13 | v | | {EXTERNAL LOCATION} | i32 | -| closure.rs:229:17:229:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| closure.rs:230:13:230:13 | s | | closure.rs:212:5:212:19 | S | -| closure.rs:230:13:230:13 | s | T | {EXTERNAL LOCATION} | i32 | -| closure.rs:230:17:230:20 | S(...) | | closure.rs:212:5:212:19 | S | -| closure.rs:230:17:230:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| closure.rs:230:19:230:19 | v | | {EXTERNAL LOCATION} | i32 | -| closure.rs:231:13:231:16 | _ret | | {EXTERNAL LOCATION} | bool | -| closure.rs:231:20:231:20 | s | | closure.rs:212:5:212:19 | S | -| closure.rs:231:20:231:20 | s | T | {EXTERNAL LOCATION} | i32 | -| closure.rs:231:20:231:23 | s(...) | | {EXTERNAL LOCATION} | bool | -| closure.rs:231:21:231:23 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:231:21:231:23 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:231:22:231:22 | x | | {EXTERNAL LOCATION} | i32 | -| closure.rs:232:13:232:17 | s_ref | | {EXTERNAL LOCATION} | & | -| closure.rs:232:13:232:17 | s_ref | TRef | closure.rs:212:5:212:19 | S | -| closure.rs:232:13:232:17 | s_ref | TRef.T | {EXTERNAL LOCATION} | i32 | -| closure.rs:232:21:232:22 | &s | | {EXTERNAL LOCATION} | & | -| closure.rs:232:21:232:22 | &s | TRef | closure.rs:212:5:212:19 | S | -| closure.rs:232:21:232:22 | &s | TRef.T | {EXTERNAL LOCATION} | i32 | -| closure.rs:232:22:232:22 | s | | closure.rs:212:5:212:19 | S | -| closure.rs:232:22:232:22 | s | T | {EXTERNAL LOCATION} | i32 | -| closure.rs:240:20:240:24 | s_ref | | {EXTERNAL LOCATION} | & | -| closure.rs:240:20:240:24 | s_ref | TRef | closure.rs:212:5:212:19 | S | -| closure.rs:240:20:240:24 | s_ref | TRef.T | {EXTERNAL LOCATION} | i32 | -| closure.rs:240:25:240:27 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:240:25:240:27 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:240:26:240:26 | x | | {EXTERNAL LOCATION} | i32 | -| closure.rs:246:13:246:13 | c | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:246:13:246:13 | c | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:246:13:246:13 | c | dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:246:13:246:13 | c | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| closure.rs:246:17:246:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:246:17:246:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:246:17:246:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:246:17:246:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| closure.rs:246:18:246:18 | x | | {EXTERNAL LOCATION} | i32 | -| closure.rs:246:21:246:21 | x | | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:9:247:12 | (...) | | {EXTERNAL LOCATION} | & | -| closure.rs:247:9:247:12 | (...) | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:247:9:247:12 | (...) | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:247:9:247:12 | (...) | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:9:247:12 | (...) | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:9:247:15 | ...(...) | | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:10:247:11 | &c | | {EXTERNAL LOCATION} | & | -| closure.rs:247:10:247:11 | &c | TRef | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:247:10:247:11 | &c | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:247:10:247:11 | &c | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:10:247:11 | &c | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:11:247:11 | c | | {EXTERNAL LOCATION} | dyn Fn | -| closure.rs:247:11:247:11 | c | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:247:11:247:11 | c | dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:11:247:11 | c | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:13:247:15 | ArgList | | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:247:13:247:15 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | -| closure.rs:247:14:247:14 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:182:10:182:12 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:182:11:182:11 | a | | {EXTERNAL LOCATION} | i64 | +| closure.rs:185:18:185:18 | f | | closure.rs:185:21:185:37 | impl ... | +| closure.rs:185:40:185:40 | a | | closure.rs:185:15:185:15 | T | +| closure.rs:185:53:187:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:186:9:186:9 | f | | closure.rs:185:21:185:37 | impl ... | +| closure.rs:186:9:186:12 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:186:10:186:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:186:10:186:12 | ArgList | T0 | closure.rs:185:15:185:15 | T | +| closure.rs:186:11:186:11 | a | | closure.rs:185:15:185:15 | T | +| closure.rs:189:42:189:42 | f | | closure.rs:189:18:189:35 | F | +| closure.rs:189:48:189:48 | a | | closure.rs:189:15:189:15 | T | +| closure.rs:189:61:191:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:190:9:190:9 | f | | closure.rs:189:18:189:35 | F | +| closure.rs:190:9:190:12 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:190:10:190:12 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:190:10:190:12 | ArgList | T0 | closure.rs:189:15:189:15 | T | +| closure.rs:190:11:190:11 | a | | closure.rs:189:15:189:15 | T | +| closure.rs:193:15:214:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:194:13:194:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:194:13:194:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:194:13:194:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:194:13:194:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:194:17:194:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:194:17:194:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:194:17:194:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:194:17:194:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:194:18:194:18 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:194:21:194:21 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:195:13:195:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:195:18:195:32 | apply1(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:195:25:195:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:195:25:195:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:195:25:195:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:195:25:195:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:195:28:195:31 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:197:13:197:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:197:13:197:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:197:13:197:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:197:13:197:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:197:17:197:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:197:17:197:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:197:17:197:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:197:17:197:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:197:18:197:18 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:197:21:197:21 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:198:13:198:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:198:18:198:32 | apply2(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:198:25:198:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:198:25:198:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:198:25:198:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:198:25:198:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:198:28:198:31 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:200:13:200:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:200:13:200:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:200:13:200:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:200:13:200:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:200:17:200:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:200:17:200:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:200:17:200:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:200:17:200:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:200:18:200:18 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:200:21:200:21 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:201:13:201:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:201:18:201:33 | apply3(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:201:25:201:26 | &f | | {EXTERNAL LOCATION} | & | +| closure.rs:201:25:201:26 | &f | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:201:25:201:26 | &f | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:201:25:201:26 | &f | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:201:25:201:26 | &f | TRef.dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:201:26:201:26 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:201:26:201:26 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:201:26:201:26 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:201:26:201:26 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:201:29:201:32 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:203:13:203:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:203:13:203:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:203:13:203:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:203:13:203:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:203:17:203:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:203:17:203:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:203:17:203:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:203:17:203:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:203:18:203:18 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:203:21:203:21 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:204:13:204:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:204:18:204:32 | apply4(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:204:25:204:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:204:25:204:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:204:25:204:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:204:25:204:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:204:28:204:31 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:206:17:206:17 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:206:17:206:17 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:206:21:206:25 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:206:21:206:25 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:207:13:207:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:207:18:207:37 | apply5(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:207:25:207:30 | &mut f | | {EXTERNAL LOCATION} | &mut | +| closure.rs:207:25:207:30 | &mut f | TRefMut | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:207:25:207:30 | &mut f | TRefMut.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:207:30:207:30 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:207:30:207:30 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:207:33:207:36 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:209:13:209:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:209:13:209:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:209:13:209:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:209:13:209:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:209:17:209:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:209:17:209:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:209:17:209:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:209:17:209:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:209:18:209:18 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:209:21:209:21 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:210:13:210:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:210:18:210:32 | apply6(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:210:25:210:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:210:25:210:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:210:25:210:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:210:25:210:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:210:28:210:31 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:212:13:212:13 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:212:13:212:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:212:13:212:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:212:13:212:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:212:17:212:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:212:17:212:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:212:17:212:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:212:17:212:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:212:18:212:18 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:212:21:212:21 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:213:13:213:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:213:18:213:32 | apply7(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:213:25:213:25 | f | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:213:25:213:25 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:213:25:213:25 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:213:25:213:25 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:213:28:213:31 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:225:18:225:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| closure.rs:225:18:225:22 | SelfParam | TRef | closure.rs:220:5:220:19 | S | +| closure.rs:225:18:225:22 | SelfParam | TRef.T | closure.rs:222:10:222:10 | T | +| closure.rs:225:42:227:9 | { ... } | | {EXTERNAL LOCATION} | & | +| closure.rs:225:42:227:9 | { ... } | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:225:42:227:9 | { ... } | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:225:42:227:9 | { ... } | TRef.dyn(Args).T0 | closure.rs:222:10:222:10 | T | +| closure.rs:225:42:227:9 | { ... } | TRef.dyn(Output) | {EXTERNAL LOCATION} | bool | +| closure.rs:226:13:226:22 | &... | | {EXTERNAL LOCATION} | & | +| closure.rs:226:13:226:22 | &... | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:226:13:226:22 | &... | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:226:13:226:22 | &... | TRef.dyn(Args).T0 | closure.rs:222:10:222:10 | T | +| closure.rs:226:13:226:22 | &... | TRef.dyn(Output) | {EXTERNAL LOCATION} | bool | +| closure.rs:226:14:226:22 | \|...\| false | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:226:14:226:22 | \|...\| false | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:226:14:226:22 | \|...\| false | dyn(Args).T0 | closure.rs:222:10:222:10 | T | +| closure.rs:226:14:226:22 | \|...\| false | dyn(Output) | {EXTERNAL LOCATION} | bool | +| closure.rs:226:15:226:15 | _ | | closure.rs:222:10:222:10 | T | +| closure.rs:226:18:226:22 | false | | {EXTERNAL LOCATION} | bool | +| closure.rs:230:19:256:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:231:13:231:13 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:231:17:231:20 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:232:13:232:13 | v | | {EXTERNAL LOCATION} | i64 | +| closure.rs:232:17:232:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:233:13:233:13 | s | | closure.rs:220:5:220:19 | S | +| closure.rs:233:13:233:13 | s | T | {EXTERNAL LOCATION} | i64 | +| closure.rs:233:17:233:20 | S(...) | | closure.rs:220:5:220:19 | S | +| closure.rs:233:17:233:20 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| closure.rs:233:19:233:19 | v | | {EXTERNAL LOCATION} | i64 | +| closure.rs:234:13:234:16 | _ret | | {EXTERNAL LOCATION} | bool | +| closure.rs:234:20:234:20 | s | | closure.rs:220:5:220:19 | S | +| closure.rs:234:20:234:20 | s | T | {EXTERNAL LOCATION} | i64 | +| closure.rs:234:20:234:23 | s(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:234:21:234:23 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:234:21:234:23 | ArgList | T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:234:22:234:22 | x | | {EXTERNAL LOCATION} | i64 | +| closure.rs:236:13:236:13 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:236:17:236:20 | 0i32 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:237:13:237:13 | v | | {EXTERNAL LOCATION} | i32 | +| closure.rs:237:17:237:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| closure.rs:238:13:238:13 | s | | closure.rs:220:5:220:19 | S | +| closure.rs:238:13:238:13 | s | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:238:17:238:20 | S(...) | | closure.rs:220:5:220:19 | S | +| closure.rs:238:17:238:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:238:19:238:19 | v | | {EXTERNAL LOCATION} | i32 | +| closure.rs:239:13:239:16 | _ret | | {EXTERNAL LOCATION} | bool | +| closure.rs:239:20:239:20 | s | | closure.rs:220:5:220:19 | S | +| closure.rs:239:20:239:20 | s | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:239:20:239:23 | s(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:239:21:239:23 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:239:21:239:23 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:239:22:239:22 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:240:13:240:17 | s_ref | | {EXTERNAL LOCATION} | & | +| closure.rs:240:13:240:17 | s_ref | TRef | closure.rs:220:5:220:19 | S | +| closure.rs:240:13:240:17 | s_ref | TRef.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:240:21:240:22 | &s | | {EXTERNAL LOCATION} | & | +| closure.rs:240:21:240:22 | &s | TRef | closure.rs:220:5:220:19 | S | +| closure.rs:240:21:240:22 | &s | TRef.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:240:22:240:22 | s | | closure.rs:220:5:220:19 | S | +| closure.rs:240:22:240:22 | s | T | {EXTERNAL LOCATION} | i32 | +| closure.rs:248:20:248:24 | s_ref | | {EXTERNAL LOCATION} | & | +| closure.rs:248:20:248:24 | s_ref | TRef | closure.rs:220:5:220:19 | S | +| closure.rs:248:20:248:24 | s_ref | TRef.T | {EXTERNAL LOCATION} | i32 | +| closure.rs:248:25:248:27 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:248:25:248:27 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:248:26:248:26 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:254:13:254:13 | c | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:254:13:254:13 | c | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:254:13:254:13 | c | dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:254:13:254:13 | c | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| closure.rs:254:17:254:21 | \|...\| x | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:254:17:254:21 | \|...\| x | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:254:17:254:21 | \|...\| x | dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:254:17:254:21 | \|...\| x | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| closure.rs:254:18:254:18 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:254:21:254:21 | x | | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:9:255:12 | (...) | | {EXTERNAL LOCATION} | & | +| closure.rs:255:9:255:12 | (...) | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:255:9:255:12 | (...) | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:255:9:255:12 | (...) | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:9:255:12 | (...) | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:9:255:15 | ...(...) | | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:10:255:11 | &c | | {EXTERNAL LOCATION} | & | +| closure.rs:255:10:255:11 | &c | TRef | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:255:10:255:11 | &c | TRef.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:255:10:255:11 | &c | TRef.dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:10:255:11 | &c | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:11:255:11 | c | | {EXTERNAL LOCATION} | dyn Fn | +| closure.rs:255:11:255:11 | c | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:255:11:255:11 | c | dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:11:255:11 | c | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:13:255:15 | ArgList | | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:255:13:255:15 | ArgList | T0 | {EXTERNAL LOCATION} | i32 | +| closure.rs:255:14:255:14 | x | | {EXTERNAL LOCATION} | i32 | | dereference.rs:13:14:13:18 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:13:14:13:18 | SelfParam | TRef | dereference.rs:5:1:7:1 | MyIntPointer | | dereference.rs:13:29:15:5 | { ... } | | {EXTERNAL LOCATION} | & | @@ -7209,37 +6997,34 @@ inferType | dereference.rs:116:12:116:12 | 0 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:143:19:151:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:144:17:144:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:144:17:144:26 | key_to_key | A | {EXTERNAL LOCATION} | Global | | dereference.rs:144:17:144:26 | key_to_key | K | {EXTERNAL LOCATION} | & | | dereference.rs:144:17:144:26 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:144:17:144:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | | dereference.rs:144:17:144:26 | key_to_key | V | {EXTERNAL LOCATION} | & | | dereference.rs:144:17:144:26 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:144:30:144:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:144:30:144:57 | ...::new(...) | K | {EXTERNAL LOCATION} | & | -| dereference.rs:144:30:144:57 | ...::new(...) | K.TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:144:30:144:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:144:30:144:57 | ...::new(...) | V | {EXTERNAL LOCATION} | & | -| dereference.rs:144:30:144:57 | ...::new(...) | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:144:30:144:54 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:144:30:144:54 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:144:30:144:54 | ...::new(...) | K | {EXTERNAL LOCATION} | & | +| dereference.rs:144:30:144:54 | ...::new(...) | K.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:144:30:144:54 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:144:30:144:54 | ...::new(...) | V | {EXTERNAL LOCATION} | & | +| dereference.rs:144:30:144:54 | ...::new(...) | V.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:145:17:145:19 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:145:17:145:19 | key | TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:145:17:145:19 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:145:17:145:19 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:145:23:145:29 | &... | | {EXTERNAL LOCATION} | & | | dereference.rs:145:23:145:29 | &... | TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:145:23:145:29 | &... | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:145:23:145:29 | &... | TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:145:24:145:29 | Key {...} | | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:9:149:9 | if ... {...} | | {EXTERNAL LOCATION} | () | | dereference.rs:146:16:146:28 | Some(...) | | {EXTERNAL LOCATION} | Option | | dereference.rs:146:16:146:28 | Some(...) | T | {EXTERNAL LOCATION} | & | -| dereference.rs:146:16:146:28 | Some(...) | T.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:16:146:28 | Some(...) | T.TRef | {EXTERNAL LOCATION} | & | | dereference.rs:146:16:146:28 | Some(...) | T.TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:21:146:27 | ref_key | | {EXTERNAL LOCATION} | & | -| dereference.rs:146:21:146:27 | ref_key | TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:21:146:27 | ref_key | TRef | {EXTERNAL LOCATION} | & | | dereference.rs:146:21:146:27 | ref_key | TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:32:146:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:146:32:146:41 | key_to_key | A | {EXTERNAL LOCATION} | Global | | dereference.rs:146:32:146:41 | key_to_key | K | {EXTERNAL LOCATION} | & | | dereference.rs:146:32:146:41 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:32:146:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | @@ -7247,24 +7032,19 @@ inferType | dereference.rs:146:32:146:41 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:32:146:50 | key_to_key.get(...) | | {EXTERNAL LOCATION} | Option | | dereference.rs:146:32:146:50 | key_to_key.get(...) | T | {EXTERNAL LOCATION} | & | -| dereference.rs:146:32:146:50 | key_to_key.get(...) | T.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:32:146:50 | key_to_key.get(...) | T.TRef | {EXTERNAL LOCATION} | & | | dereference.rs:146:32:146:50 | key_to_key.get(...) | T.TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:47:146:49 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:146:47:146:49 | key | TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:146:47:146:49 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:146:47:146:49 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:146:52:149:9 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:148:13:148:15 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:148:13:148:15 | key | TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:148:13:148:15 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:148:13:148:15 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:148:13:148:25 | ... = ... | | {EXTERNAL LOCATION} | () | | dereference.rs:148:19:148:25 | ref_key | | {EXTERNAL LOCATION} | & | -| dereference.rs:148:19:148:25 | ref_key | TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:148:19:148:25 | ref_key | TRef | {EXTERNAL LOCATION} | & | | dereference.rs:148:19:148:25 | ref_key | TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:150:9:150:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:150:9:150:18 | key_to_key | A | {EXTERNAL LOCATION} | Global | | dereference.rs:150:9:150:18 | key_to_key | K | {EXTERNAL LOCATION} | & | | dereference.rs:150:9:150:18 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:150:9:150:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | @@ -7273,16 +7053,10 @@ inferType | dereference.rs:150:9:150:35 | key_to_key.insert(...) | | {EXTERNAL LOCATION} | Option | | dereference.rs:150:9:150:35 | key_to_key.insert(...) | T | {EXTERNAL LOCATION} | & | | dereference.rs:150:9:150:35 | key_to_key.insert(...) | T.TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:150:9:150:35 | key_to_key.insert(...) | T.TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:150:9:150:35 | key_to_key.insert(...) | T.TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:150:27:150:29 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:150:27:150:29 | key | TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:150:27:150:29 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:150:27:150:29 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:150:32:150:34 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:150:32:150:34 | key | TRef | dereference.rs:122:5:123:21 | Key | -| dereference.rs:150:32:150:34 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:150:32:150:34 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | | dereference.rs:156:16:156:19 | SelfParam | | dereference.rs:155:5:157:5 | Self [trait MyTrait1] | | dereference.rs:163:16:163:19 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:163:16:163:19 | SelfParam | TRef | dereference.rs:159:5:159:13 | S | @@ -7290,9 +7064,8 @@ inferType | dereference.rs:164:13:164:13 | S | | dereference.rs:159:5:159:13 | S | | dereference.rs:170:16:170:19 | SelfParam | | {EXTERNAL LOCATION} | &mut | | dereference.rs:170:16:170:19 | SelfParam | TRefMut | dereference.rs:159:5:159:13 | S | -| dereference.rs:170:29:172:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:170:29:172:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | dereference.rs:171:13:171:14 | 42 | | {EXTERNAL LOCATION} | i32 | -| dereference.rs:171:13:171:14 | 42 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:175:5:177:5 | Self [trait MyTrait2] | | dereference.rs:176:22:176:24 | arg | | dereference.rs:175:20:175:21 | T1 | | dereference.rs:181:16:181:19 | SelfParam | | dereference.rs:159:5:159:13 | S | @@ -7303,9 +7076,8 @@ inferType | dereference.rs:188:16:188:19 | SelfParam | | dereference.rs:159:5:159:13 | S | | dereference.rs:188:22:188:24 | arg | | {EXTERNAL LOCATION} | &mut | | dereference.rs:188:22:188:24 | arg | TRefMut | dereference.rs:159:5:159:13 | S | -| dereference.rs:188:42:190:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:188:42:190:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | dereference.rs:189:13:189:14 | 42 | | {EXTERNAL LOCATION} | i32 | -| dereference.rs:189:13:189:14 | 42 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:193:19:200:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:194:13:194:13 | x | | dereference.rs:159:5:159:13 | S | | dereference.rs:194:17:194:20 | (...) | | {EXTERNAL LOCATION} | & | @@ -7422,14 +7194,12 @@ inferType | dyn_type.rs:60:46:60:46 | a | | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:60:78:62:1 | { ... } | | {EXTERNAL LOCATION} | Box | | dyn_type.rs:60:78:62:1 | { ... } | A | {EXTERNAL LOCATION} | Global | -| dyn_type.rs:60:78:62:1 | { ... } | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:60:78:62:1 | { ... } | T.dyn(A) | dyn_type.rs:60:18:60:43 | A | +| dyn_type.rs:60:78:62:1 | { ... } | T | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:60:78:62:1 | { ... } | T.A | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:61:5:61:36 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | dyn_type.rs:61:5:61:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dyn_type.rs:61:5:61:36 | ...::new(...) | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:61:5:61:36 | ...::new(...) | T | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:61:5:61:36 | ...::new(...) | T.A | dyn_type.rs:60:18:60:43 | A | -| dyn_type.rs:61:5:61:36 | ...::new(...) | T.dyn(A) | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:61:14:61:35 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:61:14:61:35 | GenStruct {...} | A | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:61:33:61:33 | a | | dyn_type.rs:60:18:60:43 | A | @@ -8526,14 +8296,13 @@ inferType | main.rs:581:9:581:13 | thing | TRef | main.rs:580:17:580:37 | T | | main.rs:581:9:581:21 | thing.get_a() | | main.rs:580:14:580:14 | A | | main.rs:585:44:585:48 | thing | | main.rs:585:24:585:41 | S | -| main.rs:585:61:588:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:585:61:588:5 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:586:13:586:15 | _ms | | {EXTERNAL LOCATION} | Option | | main.rs:586:13:586:15 | _ms | T | main.rs:585:24:585:41 | S | | main.rs:586:19:586:23 | thing | | main.rs:585:24:585:41 | S | | main.rs:586:19:586:31 | thing.get_a() | | {EXTERNAL LOCATION} | Option | | main.rs:586:19:586:31 | thing.get_a() | T | main.rs:585:24:585:41 | S | | main.rs:587:9:587:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:587:9:587:9 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:593:55:593:59 | thing | | {EXTERNAL LOCATION} | & | | main.rs:593:55:593:59 | thing | TRef | main.rs:593:25:593:52 | S | | main.rs:593:66:596:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -8936,7 +8705,6 @@ inferType | main.rs:781:17:781:26 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:781:24:781:25 | S1 | | main.rs:623:5:624:14 | S1 | | main.rs:782:13:782:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:782:22:782:31 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:782:29:782:30 | S2 | | main.rs:625:5:626:14 | S2 | | main.rs:799:15:799:18 | SelfParam | | main.rs:787:5:791:5 | MyEnum | | main.rs:799:15:799:18 | SelfParam | A | main.rs:798:10:798:10 | T | @@ -8989,10 +8757,8 @@ inferType | main.rs:843:16:843:16 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:843:16:843:20 | ... > ... | | {EXTERNAL LOCATION} | bool | | main.rs:843:20:843:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:843:22:845:13 | { ... } | | main.rs:837:20:837:22 | Tr2 | | main.rs:844:17:844:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:844:17:844:20 | self | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | -| main.rs:844:17:844:25 | self.m1() | | main.rs:837:20:837:22 | Tr2 | | main.rs:845:20:847:13 | { ... } | | main.rs:837:20:837:22 | Tr2 | | main.rs:846:17:846:31 | ...::m1(...) | | main.rs:837:20:837:22 | Tr2 | | main.rs:846:26:846:30 | * ... | | main.rs:837:5:849:5 | Self [trait MyTrait2] | @@ -9221,7 +8987,6 @@ inferType | main.rs:981:22:981:25 | SelfParam | Fst | main.rs:980:10:980:12 | Fst | | main.rs:981:22:981:25 | SelfParam | Snd | main.rs:980:15:980:17 | Snd | | main.rs:981:35:988:9 | { ... } | | main.rs:980:15:980:17 | Snd | -| main.rs:982:13:987:13 | match self { ... } | | file://:0:0:0:0 | ! | | main.rs:982:13:987:13 | match self { ... } | | main.rs:980:15:980:17 | Snd | | main.rs:982:19:982:22 | self | | main.rs:972:5:978:5 | PairOption | | main.rs:982:19:982:22 | self | Fst | main.rs:980:10:980:12 | Fst | @@ -9229,20 +8994,16 @@ inferType | main.rs:983:17:983:38 | ...::PairNone(...) | | main.rs:972:5:978:5 | PairOption | | main.rs:983:17:983:38 | ...::PairNone(...) | Fst | main.rs:980:10:980:12 | Fst | | main.rs:983:17:983:38 | ...::PairNone(...) | Snd | main.rs:980:15:980:17 | Snd | -| main.rs:983:43:983:82 | MacroExpr | | file://:0:0:0:0 | ! | | main.rs:983:50:983:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | & | | main.rs:983:50:983:81 | "PairNone has no second elemen... | TRef | {EXTERNAL LOCATION} | str | -| main.rs:983:50:983:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:983:50:983:81 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:983:50:983:81 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:984:17:984:38 | ...::PairFst(...) | | main.rs:972:5:978:5 | PairOption | | main.rs:984:17:984:38 | ...::PairFst(...) | Fst | main.rs:980:10:980:12 | Fst | | main.rs:984:17:984:38 | ...::PairFst(...) | Snd | main.rs:980:15:980:17 | Snd | | main.rs:984:37:984:37 | _ | | main.rs:980:10:980:12 | Fst | -| main.rs:984:43:984:81 | MacroExpr | | file://:0:0:0:0 | ! | | main.rs:984:50:984:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | & | | main.rs:984:50:984:80 | "PairFst has no second element... | TRef | {EXTERNAL LOCATION} | str | -| main.rs:984:50:984:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:984:50:984:80 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:984:50:984:80 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:985:17:985:40 | ...::PairSnd(...) | | main.rs:972:5:978:5 | PairOption | @@ -9936,10 +9697,12 @@ inferType | main.rs:1298:15:1298:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1298:15:1298:19 | SelfParam | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1298:31:1300:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1298:31:1300:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1298:31:1300:9 | { ... } | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1298:31:1300:9 | { ... } | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1298:31:1300:9 | { ... } | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1298:31:1300:9 | { ... } | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1299:13:1299:19 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1299:13:1299:19 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1299:13:1299:19 | &... | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1299:13:1299:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | | main.rs:1299:13:1299:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | | main.rs:1299:13:1299:19 | &... | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | @@ -9955,10 +9718,12 @@ inferType | main.rs:1302:15:1302:25 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1302:15:1302:25 | SelfParam | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1302:37:1304:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1302:37:1304:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1302:37:1304:9 | { ... } | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1302:37:1304:9 | { ... } | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1302:37:1304:9 | { ... } | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1302:37:1304:9 | { ... } | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1303:13:1303:19 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1303:13:1303:19 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1303:13:1303:19 | &... | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1303:13:1303:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | | main.rs:1303:13:1303:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | | main.rs:1303:13:1303:19 | &... | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | @@ -9980,10 +9745,12 @@ inferType | main.rs:1310:15:1310:15 | x | | {EXTERNAL LOCATION} | & | | main.rs:1310:15:1310:15 | x | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1310:34:1312:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1310:34:1312:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1310:34:1312:9 | { ... } | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1310:34:1312:9 | { ... } | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1310:34:1312:9 | { ... } | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1310:34:1312:9 | { ... } | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | | main.rs:1311:13:1311:16 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1311:13:1311:16 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1311:13:1311:16 | &... | TRef | main.rs:1295:5:1295:13 | S | | main.rs:1311:13:1311:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | | main.rs:1311:13:1311:16 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | | main.rs:1311:13:1311:16 | &... | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | @@ -10236,12 +10003,12 @@ inferType | main.rs:1414:26:1414:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:1414:26:1414:30 | SelfParam | TRef.TArray | main.rs:1413:14:1413:23 | T | | main.rs:1414:39:1416:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1414:39:1416:13 | { ... } | TRef | main.rs:1413:14:1413:23 | T | | main.rs:1415:17:1415:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:1415:17:1415:20 | self | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:1415:17:1415:20 | self | TRef.TArray | main.rs:1413:14:1413:23 | T | +| main.rs:1415:17:1415:27 | self.get(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1415:17:1415:27 | self.get(...) | T | {EXTERNAL LOCATION} | & | | main.rs:1415:17:1415:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | -| main.rs:1415:17:1415:36 | ... .unwrap() | TRef | main.rs:1413:14:1413:23 | T | | main.rs:1415:26:1415:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:1418:31:1420:13 | { ... } | | main.rs:1413:14:1413:23 | T | | main.rs:1419:17:1419:28 | ...::default(...) | | main.rs:1413:14:1413:23 | T | @@ -10274,14 +10041,12 @@ inferType | main.rs:1428:26:1428:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [] | | main.rs:1428:26:1428:30 | SelfParam | TRef.TSlice | main.rs:1427:14:1427:23 | T | | main.rs:1428:39:1430:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1428:39:1430:13 | { ... } | TRef | main.rs:1427:14:1427:23 | T | | main.rs:1429:17:1429:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:1429:17:1429:20 | self | TRef | {EXTERNAL LOCATION} | [] | | main.rs:1429:17:1429:20 | self | TRef.TSlice | main.rs:1427:14:1427:23 | T | | main.rs:1429:17:1429:27 | self.get(...) | | {EXTERNAL LOCATION} | Option | | main.rs:1429:17:1429:27 | self.get(...) | T | {EXTERNAL LOCATION} | & | | main.rs:1429:17:1429:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | -| main.rs:1429:17:1429:36 | ... .unwrap() | TRef | main.rs:1427:14:1427:23 | T | | main.rs:1429:26:1429:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:1432:31:1434:13 | { ... } | | main.rs:1427:14:1427:23 | T | | main.rs:1433:17:1433:28 | ...::default(...) | | main.rs:1427:14:1427:23 | T | @@ -10289,10 +10054,8 @@ inferType | main.rs:1437:13:1437:13 | s | TRef | {EXTERNAL LOCATION} | [] | | main.rs:1437:13:1437:13 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | main.rs:1437:25:1437:34 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1437:25:1437:34 | &... | TRef | {EXTERNAL LOCATION} | [] | | main.rs:1437:25:1437:34 | &... | TRef | {EXTERNAL LOCATION} | [;] | | main.rs:1437:25:1437:34 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:25:1437:34 | &... | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | main.rs:1437:26:1437:34 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:1437:26:1437:34 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:1437:27:1437:27 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -11277,7 +11040,6 @@ inferType | main.rs:1971:18:1971:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1971:18:1971:22 | SelfParam | TRef | main.rs:1938:5:1938:22 | S3 | | main.rs:1971:18:1971:22 | SelfParam | TRef.T3 | main.rs:1970:10:1970:17 | T | -| main.rs:1971:30:1974:9 | { ... } | | main.rs:1970:10:1970:17 | T | | main.rs:1972:17:1972:21 | S3(...) | | {EXTERNAL LOCATION} | & | | main.rs:1972:17:1972:21 | S3(...) | | main.rs:1938:5:1938:22 | S3 | | main.rs:1972:17:1972:21 | S3(...) | TRef | main.rs:1938:5:1938:22 | S3 | @@ -11285,7 +11047,6 @@ inferType | main.rs:1972:25:1972:28 | self | | {EXTERNAL LOCATION} | & | | main.rs:1972:25:1972:28 | self | TRef | main.rs:1938:5:1938:22 | S3 | | main.rs:1972:25:1972:28 | self | TRef.T3 | main.rs:1970:10:1970:17 | T | -| main.rs:1973:13:1973:21 | t.clone() | | main.rs:1970:10:1970:17 | T | | main.rs:1977:45:1979:5 | { ... } | | main.rs:1935:5:1936:14 | S1 | | main.rs:1978:9:1978:10 | S1 | | main.rs:1935:5:1936:14 | S1 | | main.rs:1981:41:1981:41 | t | | main.rs:1981:26:1981:38 | B | @@ -11293,50 +11054,38 @@ inferType | main.rs:1982:9:1982:9 | t | | main.rs:1981:26:1981:38 | B | | main.rs:1982:9:1982:17 | t.get_a() | | main.rs:1981:23:1981:23 | A | | main.rs:1985:34:1985:34 | x | | main.rs:1985:24:1985:31 | T | -| main.rs:1985:59:1987:5 | { ... } | | main.rs:1985:43:1985:57 | impl ... | -| main.rs:1985:59:1987:5 | { ... } | impl(T) | main.rs:1985:24:1985:31 | T | +| main.rs:1985:59:1987:5 | { ... } | | main.rs:1938:5:1938:22 | S3 | +| main.rs:1985:59:1987:5 | { ... } | T3 | main.rs:1985:24:1985:31 | T | | main.rs:1986:9:1986:13 | S3(...) | | main.rs:1938:5:1938:22 | S3 | -| main.rs:1986:9:1986:13 | S3(...) | | main.rs:1985:43:1985:57 | impl ... | | main.rs:1986:9:1986:13 | S3(...) | T3 | main.rs:1985:24:1985:31 | T | -| main.rs:1986:9:1986:13 | S3(...) | impl(T) | main.rs:1985:24:1985:31 | T | | main.rs:1986:12:1986:12 | x | | main.rs:1985:24:1985:31 | T | | main.rs:1989:34:1989:34 | x | | main.rs:1989:24:1989:31 | T | | main.rs:1989:67:1991:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1989:67:1991:5 | { ... } | T | main.rs:1989:50:1989:64 | impl ... | -| main.rs:1989:67:1991:5 | { ... } | T.impl(T) | main.rs:1989:24:1989:31 | T | +| main.rs:1989:67:1991:5 | { ... } | T | main.rs:1938:5:1938:22 | S3 | +| main.rs:1989:67:1991:5 | { ... } | T.T3 | main.rs:1989:24:1989:31 | T | | main.rs:1990:9:1990:19 | Some(...) | | {EXTERNAL LOCATION} | Option | | main.rs:1990:9:1990:19 | Some(...) | T | main.rs:1938:5:1938:22 | S3 | -| main.rs:1990:9:1990:19 | Some(...) | T | main.rs:1989:50:1989:64 | impl ... | | main.rs:1990:9:1990:19 | Some(...) | T.T3 | main.rs:1989:24:1989:31 | T | -| main.rs:1990:9:1990:19 | Some(...) | T.impl(T) | main.rs:1989:24:1989:31 | T | | main.rs:1990:14:1990:18 | S3(...) | | main.rs:1938:5:1938:22 | S3 | | main.rs:1990:14:1990:18 | S3(...) | T3 | main.rs:1989:24:1989:31 | T | | main.rs:1990:17:1990:17 | x | | main.rs:1989:24:1989:31 | T | | main.rs:1993:34:1993:34 | x | | main.rs:1993:24:1993:31 | T | | main.rs:1993:78:1995:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1993:78:1995:5 | { ... } | T0 | main.rs:1993:44:1993:58 | impl ... | -| main.rs:1993:78:1995:5 | { ... } | T0.impl(T) | main.rs:1993:24:1993:31 | T | -| main.rs:1993:78:1995:5 | { ... } | T1 | main.rs:1993:61:1993:75 | impl ... | -| main.rs:1993:78:1995:5 | { ... } | T1.impl(T) | main.rs:1993:24:1993:31 | T | +| main.rs:1993:78:1995:5 | { ... } | T0 | main.rs:1938:5:1938:22 | S3 | +| main.rs:1993:78:1995:5 | { ... } | T0.T3 | main.rs:1993:24:1993:31 | T | +| main.rs:1993:78:1995:5 | { ... } | T1 | main.rs:1938:5:1938:22 | S3 | +| main.rs:1993:78:1995:5 | { ... } | T1.T3 | main.rs:1993:24:1993:31 | T | | main.rs:1994:9:1994:30 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | main.rs:1994:9:1994:30 | TupleExpr | T0 | main.rs:1938:5:1938:22 | S3 | -| main.rs:1994:9:1994:30 | TupleExpr | T0 | main.rs:1993:44:1993:58 | impl ... | | main.rs:1994:9:1994:30 | TupleExpr | T0.T3 | main.rs:1993:24:1993:31 | T | -| main.rs:1994:9:1994:30 | TupleExpr | T0.impl(T) | main.rs:1993:24:1993:31 | T | | main.rs:1994:9:1994:30 | TupleExpr | T1 | main.rs:1938:5:1938:22 | S3 | -| main.rs:1994:9:1994:30 | TupleExpr | T1 | main.rs:1993:61:1993:75 | impl ... | | main.rs:1994:9:1994:30 | TupleExpr | T1.T3 | main.rs:1993:24:1993:31 | T | -| main.rs:1994:9:1994:30 | TupleExpr | T1.impl(T) | main.rs:1993:24:1993:31 | T | | main.rs:1994:10:1994:22 | S3(...) | | main.rs:1938:5:1938:22 | S3 | -| main.rs:1994:10:1994:22 | S3(...) | | main.rs:1993:44:1993:58 | impl ... | | main.rs:1994:10:1994:22 | S3(...) | T3 | main.rs:1993:24:1993:31 | T | -| main.rs:1994:10:1994:22 | S3(...) | impl(T) | main.rs:1993:24:1993:31 | T | | main.rs:1994:13:1994:13 | x | | main.rs:1993:24:1993:31 | T | | main.rs:1994:13:1994:21 | x.clone() | | main.rs:1993:24:1993:31 | T | | main.rs:1994:25:1994:29 | S3(...) | | main.rs:1938:5:1938:22 | S3 | -| main.rs:1994:25:1994:29 | S3(...) | | main.rs:1993:61:1993:75 | impl ... | | main.rs:1994:25:1994:29 | S3(...) | T3 | main.rs:1993:24:1993:31 | T | -| main.rs:1994:25:1994:29 | S3(...) | impl(T) | main.rs:1993:24:1993:31 | T | | main.rs:1994:28:1994:28 | x | | main.rs:1993:24:1993:31 | T | | main.rs:1997:26:1997:26 | t | | main.rs:1997:29:1997:43 | impl ... | | main.rs:1997:51:1999:5 | { ... } | | main.rs:1997:23:1997:23 | A | @@ -11504,18 +11253,13 @@ inferType | main.rs:2107:14:2107:18 | value | TRef | {EXTERNAL LOCATION} | i64 | | main.rs:2115:19:2115:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | | main.rs:2115:25:2115:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2115:46:2121:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2115:46:2121:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2116:13:2120:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2116:13:2120:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | | main.rs:2116:16:2116:20 | value | | {EXTERNAL LOCATION} | bool | | main.rs:2116:22:2118:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2116:22:2118:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2117:17:2117:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2117:17:2117:17 | 1 | | {EXTERNAL LOCATION} | i64 | | main.rs:2118:20:2120:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2118:20:2120:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2119:17:2119:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2119:17:2119:17 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2130:19:2130:22 | SelfParam | | main.rs:2124:5:2124:19 | S | | main.rs:2130:19:2130:22 | SelfParam | T | main.rs:2126:10:2126:17 | T | | main.rs:2130:25:2130:29 | other | | main.rs:2124:5:2124:19 | S | @@ -11565,18 +11309,13 @@ inferType | main.rs:2163:40:2165:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2164:13:2164:17 | value | | {EXTERNAL LOCATION} | i64 | | main.rs:2170:20:2170:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2170:41:2176:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2170:41:2176:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2171:13:2175:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2171:13:2175:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | | main.rs:2171:16:2171:20 | value | | {EXTERNAL LOCATION} | bool | | main.rs:2171:22:2173:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2171:22:2173:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2172:17:2172:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2172:17:2172:17 | 1 | | {EXTERNAL LOCATION} | i64 | | main.rs:2173:20:2175:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2173:20:2175:13 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2174:17:2174:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2174:17:2174:17 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2181:21:2181:25 | value | | main.rs:2179:19:2179:19 | T | | main.rs:2181:31:2181:31 | x | | main.rs:2179:5:2182:5 | Self [trait MyFrom2] | | main.rs:2186:21:2186:25 | value | | {EXTERNAL LOCATION} | i64 | @@ -11595,26 +11334,20 @@ inferType | main.rs:2204:15:2204:15 | x | | main.rs:2202:5:2208:5 | Self [trait MySelfTrait] | | main.rs:2207:15:2207:15 | x | | main.rs:2202:5:2208:5 | Self [trait MySelfTrait] | | main.rs:2212:15:2212:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2212:31:2214:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2213:13:2213:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2213:13:2213:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | | main.rs:2213:17:2213:17 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2217:15:2217:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2217:32:2219:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2218:13:2218:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2218:13:2218:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | | main.rs:2218:17:2218:17 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2224:15:2224:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2224:31:2226:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2224:31:2226:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2225:13:2225:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2225:13:2225:13 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2229:15:2229:15 | x | | {EXTERNAL LOCATION} | bool | | main.rs:2229:32:2231:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2230:13:2230:13 | x | | {EXTERNAL LOCATION} | bool | | main.rs:2234:16:2259:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2235:13:2235:13 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2235:22:2235:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2235:22:2235:23 | 73 | | {EXTERNAL LOCATION} | i64 | | main.rs:2236:9:2236:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2236:9:2236:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2236:18:2236:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | @@ -11690,9 +11423,8 @@ inferType | main.rs:2267:13:2267:25 | MyCallable {...} | | main.rs:2263:5:2263:24 | MyCallable | | main.rs:2270:17:2270:21 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2270:17:2270:21 | SelfParam | TRef | main.rs:2263:5:2263:24 | MyCallable | -| main.rs:2270:31:2272:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2270:31:2272:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2271:13:2271:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2271:13:2271:13 | 1 | | {EXTERNAL LOCATION} | i64 | | main.rs:2275:16:2382:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2278:9:2278:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2278:13:2278:13 | i | | {EXTERNAL LOCATION} | i32 | @@ -11738,9 +11470,7 @@ inferType | main.rs:2282:21:2282:31 | [...] | TArray | {EXTERNAL LOCATION} | u8 | | main.rs:2282:22:2282:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | | main.rs:2282:27:2282:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2282:27:2282:27 | 2 | | {EXTERNAL LOCATION} | u8 | | main.rs:2282:30:2282:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2282:30:2282:30 | 3 | | {EXTERNAL LOCATION} | u8 | | main.rs:2283:9:2283:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2283:13:2283:13 | u | | {EXTERNAL LOCATION} | i32 | | main.rs:2283:13:2283:13 | u | | {EXTERNAL LOCATION} | u8 | @@ -11764,13 +11494,9 @@ inferType | main.rs:2288:26:2288:26 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2288:31:2288:39 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2288:31:2288:39 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2288:31:2288:39 | [...] | TArray | {EXTERNAL LOCATION} | u32 | | main.rs:2288:32:2288:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2288:32:2288:32 | 1 | | {EXTERNAL LOCATION} | u32 | | main.rs:2288:35:2288:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2288:35:2288:35 | 2 | | {EXTERNAL LOCATION} | u32 | | main.rs:2288:38:2288:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2288:38:2288:38 | 3 | | {EXTERNAL LOCATION} | u32 | | main.rs:2289:9:2289:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2289:13:2289:13 | u | | {EXTERNAL LOCATION} | u32 | | main.rs:2289:18:2289:22 | vals3 | | {EXTERNAL LOCATION} | [;] | @@ -11781,9 +11507,7 @@ inferType | main.rs:2291:26:2291:26 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2291:31:2291:36 | [1; 3] | | {EXTERNAL LOCATION} | [;] | | main.rs:2291:31:2291:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2291:31:2291:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | u64 | | main.rs:2291:32:2291:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2291:32:2291:32 | 1 | | {EXTERNAL LOCATION} | u64 | | main.rs:2291:35:2291:35 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2292:9:2292:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2292:13:2292:13 | u | | {EXTERNAL LOCATION} | u64 | @@ -11911,7 +11635,6 @@ inferType | main.rs:2325:19:2325:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2325:19:2325:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | | main.rs:2325:24:2325:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2325:24:2325:25 | 10 | | {EXTERNAL LOCATION} | u8 | | main.rs:2325:28:2325:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2326:13:2326:17 | range | | {EXTERNAL LOCATION} | Range | | main.rs:2326:13:2326:17 | range | Idx | {EXTERNAL LOCATION} | i32 | @@ -11948,40 +11671,62 @@ inferType | main.rs:2336:25:2336:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2340:13:2340:17 | vals3 | | {EXTERNAL LOCATION} | Vec | | main.rs:2340:13:2340:17 | vals3 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2340:13:2340:17 | vals3 | T | {EXTERNAL LOCATION} | i32 | | main.rs:2340:21:2340:33 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | main.rs:2340:21:2340:33 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| main.rs:2340:21:2340:33 | MacroExpr | T | {EXTERNAL LOCATION} | i32 | | main.rs:2340:26:2340:26 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2340:29:2340:29 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2340:32:2340:32 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2341:9:2341:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2341:13:2341:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2341:18:2341:22 | vals3 | | {EXTERNAL LOCATION} | Vec | | main.rs:2341:18:2341:22 | vals3 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2341:18:2341:22 | vals3 | T | {EXTERNAL LOCATION} | i32 | | main.rs:2341:24:2341:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2343:13:2343:18 | vals4a | | {EXTERNAL LOCATION} | Vec | | main.rs:2343:13:2343:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2343:13:2343:18 | vals4a | T | {EXTERNAL LOCATION} | i32 | | main.rs:2343:13:2343:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2343:32:2343:43 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2343:32:2343:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2343:32:2343:43 | [...] | TArray | {EXTERNAL LOCATION} | u16 | -| main.rs:2343:32:2343:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2343:32:2343:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2343:32:2343:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2343:33:2343:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2343:39:2343:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2343:42:2343:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2343:22:2343:33 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2343:22:2343:33 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2343:22:2343:33 | [...] | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2343:22:2343:42 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2343:22:2343:42 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2343:22:2343:42 | ... .to_vec() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2343:22:2343:42 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2343:23:2343:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2343:29:2343:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2343:32:2343:32 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2344:9:2344:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2344:13:2344:13 | u | | {EXTERNAL LOCATION} | i32 | | main.rs:2344:13:2344:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2344:18:2344:23 | vals4a | | {EXTERNAL LOCATION} | Vec | | main.rs:2344:18:2344:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2344:18:2344:23 | vals4a | T | {EXTERNAL LOCATION} | i32 | | main.rs:2344:18:2344:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | | main.rs:2344:25:2344:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2346:13:2346:18 | vals4b | | {EXTERNAL LOCATION} | Vec | +| main.rs:2346:13:2346:18 | vals4b | A | {EXTERNAL LOCATION} | Global | +| main.rs:2346:13:2346:18 | vals4b | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2346:13:2346:18 | vals4b | T | {EXTERNAL LOCATION} | u16 | | main.rs:2346:22:2346:33 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2346:22:2346:33 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:2346:22:2346:33 | [...] | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2346:22:2346:42 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2346:22:2346:42 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2346:22:2346:42 | ... .to_vec() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2346:22:2346:42 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | | main.rs:2346:23:2346:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2346:29:2346:29 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2346:32:2346:32 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2347:9:2347:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2347:13:2347:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2347:13:2347:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2347:18:2347:23 | vals4b | | {EXTERNAL LOCATION} | Vec | +| main.rs:2347:18:2347:23 | vals4b | A | {EXTERNAL LOCATION} | Global | +| main.rs:2347:18:2347:23 | vals4b | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2347:18:2347:23 | vals4b | T | {EXTERNAL LOCATION} | u16 | | main.rs:2347:25:2347:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2349:13:2349:17 | vals5 | | {EXTERNAL LOCATION} | Vec | | main.rs:2349:13:2349:17 | vals5 | A | {EXTERNAL LOCATION} | Global | @@ -12012,9 +11757,13 @@ inferType | main.rs:2352:32:2352:43 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2352:32:2352:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:2352:32:2352:43 | [...] | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2352:32:2352:50 | ... .iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2352:32:2352:50 | ... .iter() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2352:32:2352:50 | ... .iter() | T | {EXTERNAL LOCATION} | u64 | | main.rs:2352:32:2352:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | | main.rs:2352:32:2352:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | | main.rs:2352:32:2352:60 | ... .collect() | T | {EXTERNAL LOCATION} | & | +| main.rs:2352:32:2352:60 | ... .collect() | T.TRef | {EXTERNAL LOCATION} | i32 | | main.rs:2352:32:2352:60 | ... .collect() | T.TRef | {EXTERNAL LOCATION} | u64 | | main.rs:2352:33:2352:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | | main.rs:2352:39:2352:39 | 2 | | {EXTERNAL LOCATION} | i32 | @@ -12046,28 +11795,49 @@ inferType | main.rs:2357:24:2357:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2359:13:2359:19 | matrix1 | | {EXTERNAL LOCATION} | Vec | | main.rs:2359:13:2359:19 | matrix1 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:13:2359:19 | matrix1 | T | {EXTERNAL LOCATION} | Vec | +| main.rs:2359:13:2359:19 | matrix1 | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:13:2359:19 | matrix1 | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2359:23:2359:50 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | main.rs:2359:23:2359:50 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:23:2359:50 | MacroExpr | T | {EXTERNAL LOCATION} | Vec | +| main.rs:2359:23:2359:50 | MacroExpr | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:23:2359:50 | MacroExpr | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2359:28:2359:37 | (...) | | {EXTERNAL LOCATION} | Vec | | main.rs:2359:28:2359:37 | (...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:28:2359:37 | (...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2359:28:2359:37 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | main.rs:2359:28:2359:37 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:28:2359:37 | MacroExpr | T | {EXTERNAL LOCATION} | i32 | | main.rs:2359:33:2359:33 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2359:36:2359:36 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2359:40:2359:49 | (...) | | {EXTERNAL LOCATION} | Vec | | main.rs:2359:40:2359:49 | (...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:40:2359:49 | (...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2359:40:2359:49 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | main.rs:2359:40:2359:49 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:40:2359:49 | MacroExpr | T | {EXTERNAL LOCATION} | i32 | | main.rs:2359:45:2359:45 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2359:48:2359:48 | 4 | | {EXTERNAL LOCATION} | i32 | | main.rs:2361:13:2361:13 | _ | | {EXTERNAL LOCATION} | () | | main.rs:2361:17:2364:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2361:21:2361:23 | row | | {EXTERNAL LOCATION} | Vec | +| main.rs:2361:21:2361:23 | row | A | {EXTERNAL LOCATION} | Global | +| main.rs:2361:21:2361:23 | row | T | {EXTERNAL LOCATION} | i32 | | main.rs:2361:28:2361:34 | matrix1 | | {EXTERNAL LOCATION} | Vec | | main.rs:2361:28:2361:34 | matrix1 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2361:28:2361:34 | matrix1 | T | {EXTERNAL LOCATION} | Vec | +| main.rs:2361:28:2361:34 | matrix1 | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2361:28:2361:34 | matrix1 | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2361:36:2364:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2362:13:2363:13 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2362:17:2362:20 | cell | | {EXTERNAL LOCATION} | i32 | +| main.rs:2362:25:2362:27 | row | | {EXTERNAL LOCATION} | Vec | +| main.rs:2362:25:2362:27 | row | A | {EXTERNAL LOCATION} | Global | +| main.rs:2362:25:2362:27 | row | T | {EXTERNAL LOCATION} | i32 | | main.rs:2362:29:2363:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2366:17:2366:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2366:17:2366:20 | map1 | A | {EXTERNAL LOCATION} | Global | | main.rs:2366:17:2366:20 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2366:17:2366:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2366:17:2366:20 | map1 | V | {EXTERNAL LOCATION} | Box | @@ -12075,6 +11845,7 @@ inferType | main.rs:2366:17:2366:20 | map1 | V.T | {EXTERNAL LOCATION} | & | | main.rs:2366:17:2366:20 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2366:24:2366:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2366:24:2366:55 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2366:24:2366:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | | main.rs:2366:24:2366:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2366:24:2366:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | @@ -12082,6 +11853,7 @@ inferType | main.rs:2366:24:2366:55 | ...::new(...) | V.T | {EXTERNAL LOCATION} | & | | main.rs:2366:24:2366:55 | ...::new(...) | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2367:9:2367:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2367:9:2367:12 | map1 | A | {EXTERNAL LOCATION} | Global | | main.rs:2367:9:2367:12 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2367:9:2367:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2367:9:2367:12 | map1 | V | {EXTERNAL LOCATION} | Box | @@ -12101,6 +11873,7 @@ inferType | main.rs:2367:33:2367:37 | "one" | | {EXTERNAL LOCATION} | & | | main.rs:2367:33:2367:37 | "one" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2368:9:2368:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2368:9:2368:12 | map1 | A | {EXTERNAL LOCATION} | Global | | main.rs:2368:9:2368:12 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2368:9:2368:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2368:9:2368:12 | map1 | V | {EXTERNAL LOCATION} | Box | @@ -12123,6 +11896,7 @@ inferType | main.rs:2369:13:2369:15 | key | | {EXTERNAL LOCATION} | & | | main.rs:2369:13:2369:15 | key | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:2369:20:2369:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2369:20:2369:23 | map1 | A | {EXTERNAL LOCATION} | Global | | main.rs:2369:20:2369:23 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2369:20:2369:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2369:20:2369:23 | map1 | V | {EXTERNAL LOCATION} | Box | @@ -12143,6 +11917,7 @@ inferType | main.rs:2370:13:2370:17 | value | TRef.T | {EXTERNAL LOCATION} | & | | main.rs:2370:13:2370:17 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2370:22:2370:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2370:22:2370:25 | map1 | A | {EXTERNAL LOCATION} | Global | | main.rs:2370:22:2370:25 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2370:22:2370:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2370:22:2370:25 | map1 | V | {EXTERNAL LOCATION} | Box | @@ -12173,6 +11948,7 @@ inferType | main.rs:2371:19:2371:23 | value | TRef.T | {EXTERNAL LOCATION} | & | | main.rs:2371:19:2371:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2371:29:2371:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2371:29:2371:32 | map1 | A | {EXTERNAL LOCATION} | Global | | main.rs:2371:29:2371:32 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2371:29:2371:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2371:29:2371:32 | map1 | V | {EXTERNAL LOCATION} | Box | @@ -12204,6 +11980,7 @@ inferType | main.rs:2372:19:2372:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2372:29:2372:33 | &map1 | | {EXTERNAL LOCATION} | & | | main.rs:2372:29:2372:33 | &map1 | TRef | {EXTERNAL LOCATION} | HashMap | +| main.rs:2372:29:2372:33 | &map1 | TRef.A | {EXTERNAL LOCATION} | Global | | main.rs:2372:29:2372:33 | &map1 | TRef.K | {EXTERNAL LOCATION} | i32 | | main.rs:2372:29:2372:33 | &map1 | TRef.S | {EXTERNAL LOCATION} | RandomState | | main.rs:2372:29:2372:33 | &map1 | TRef.V | {EXTERNAL LOCATION} | Box | @@ -12211,6 +11988,7 @@ inferType | main.rs:2372:29:2372:33 | &map1 | TRef.V.T | {EXTERNAL LOCATION} | & | | main.rs:2372:29:2372:33 | &map1 | TRef.V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2372:30:2372:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2372:30:2372:33 | map1 | A | {EXTERNAL LOCATION} | Global | | main.rs:2372:30:2372:33 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2372:30:2372:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2372:30:2372:33 | map1 | V | {EXTERNAL LOCATION} | Box | @@ -12220,7 +11998,6 @@ inferType | main.rs:2372:35:2372:36 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2376:17:2376:17 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2376:26:2376:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2376:26:2376:26 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2378:13:2378:13 | _ | | {EXTERNAL LOCATION} | () | | main.rs:2378:17:2381:9 | while ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2378:23:2378:23 | a | | {EXTERNAL LOCATION} | i64 | @@ -12555,6 +12332,7 @@ inferType | main.rs:2545:18:2545:22 | SelfParam | TRef | main.rs:2532:5:2532:25 | PathBuf | | main.rs:2545:34:2549:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:2545:34:2549:9 | { ... } | TRef | main.rs:2520:5:2520:22 | Path | +| main.rs:2547:20:2547:23 | path | | main.rs:2520:5:2520:22 | Path | | main.rs:2547:33:2547:43 | ...::new(...) | | main.rs:2520:5:2520:22 | Path | | main.rs:2548:13:2548:17 | &path | | {EXTERNAL LOCATION} | & | | main.rs:2548:13:2548:17 | &path | TRef | main.rs:2520:5:2520:22 | Path | @@ -12628,8 +12406,10 @@ inferType | main.rs:2589:14:2589:14 | b | | {EXTERNAL LOCATION} | bool | | main.rs:2589:48:2606:5 | { ... } | | {EXTERNAL LOCATION} | Box | | main.rs:2589:48:2606:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:48:2606:5 | { ... } | T | main.rs:2564:5:2566:5 | dyn MyTrait | -| main.rs:2589:48:2606:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2589:48:2606:5 | { ... } | T | main.rs:2568:5:2569:19 | S | +| main.rs:2589:48:2606:5 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2589:48:2606:5 | { ... } | T.T | main.rs:2568:5:2569:19 | S | +| main.rs:2589:48:2606:5 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2590:13:2590:13 | x | | main.rs:2568:5:2569:19 | S | | main.rs:2590:13:2590:13 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2590:17:2595:9 | if b {...} else {...} | | main.rs:2568:5:2569:19 | S | @@ -12655,20 +12435,16 @@ inferType | main.rs:2599:19:2599:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2600:9:2605:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | | main.rs:2600:9:2605:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | -| main.rs:2600:9:2605:9 | if b {...} else {...} | T | main.rs:2564:5:2566:5 | dyn MyTrait | | main.rs:2600:9:2605:9 | if b {...} else {...} | T | main.rs:2568:5:2569:19 | S | | main.rs:2600:9:2605:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2600:9:2605:9 | if b {...} else {...} | T.T | main.rs:2568:5:2569:19 | S | | main.rs:2600:9:2605:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2600:9:2605:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2600:12:2600:12 | b | | {EXTERNAL LOCATION} | bool | | main.rs:2600:14:2603:9 | { ... } | | {EXTERNAL LOCATION} | Box | | main.rs:2600:14:2603:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2600:14:2603:9 | { ... } | T | main.rs:2564:5:2566:5 | dyn MyTrait | | main.rs:2600:14:2603:9 | { ... } | T | main.rs:2568:5:2569:19 | S | | main.rs:2600:14:2603:9 | { ... } | T.T | main.rs:2568:5:2569:19 | S | | main.rs:2600:14:2603:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2600:14:2603:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2601:17:2601:17 | x | | main.rs:2568:5:2569:19 | S | | main.rs:2601:17:2601:17 | x | T | main.rs:2568:5:2569:19 | S | | main.rs:2601:17:2601:17 | x | T.T | {EXTERNAL LOCATION} | i32 | @@ -12679,26 +12455,20 @@ inferType | main.rs:2601:21:2601:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2602:13:2602:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2602:13:2602:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2602:13:2602:23 | ...::new(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | | main.rs:2602:13:2602:23 | ...::new(...) | T | main.rs:2568:5:2569:19 | S | | main.rs:2602:13:2602:23 | ...::new(...) | T.T | main.rs:2568:5:2569:19 | S | | main.rs:2602:13:2602:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2602:13:2602:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2602:22:2602:22 | x | | main.rs:2568:5:2569:19 | S | | main.rs:2602:22:2602:22 | x | T | main.rs:2568:5:2569:19 | S | | main.rs:2602:22:2602:22 | x | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2603:16:2605:9 | { ... } | | {EXTERNAL LOCATION} | Box | | main.rs:2603:16:2605:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2603:16:2605:9 | { ... } | T | main.rs:2564:5:2566:5 | dyn MyTrait | | main.rs:2603:16:2605:9 | { ... } | T | main.rs:2568:5:2569:19 | S | | main.rs:2603:16:2605:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2603:16:2605:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2604:13:2604:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2604:13:2604:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2604:13:2604:23 | ...::new(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | | main.rs:2604:13:2604:23 | ...::new(...) | T | main.rs:2568:5:2569:19 | S | | main.rs:2604:13:2604:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2604:13:2604:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2604:22:2604:22 | x | | main.rs:2568:5:2569:19 | S | | main.rs:2604:22:2604:22 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2610:22:2614:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -12916,33 +12686,28 @@ inferType | main.rs:2750:28:2752:9 | { ... } | TRef | main.rs:2748:10:2748:10 | T | | main.rs:2751:13:2751:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2751:13:2751:16 | self | TRef | main.rs:2748:10:2748:10 | T | -| main.rs:2755:25:2759:5 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2755:25:2759:5 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2756:17:2756:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2756:17:2756:17 | x | | {EXTERNAL LOCATION} | usize | | main.rs:2756:21:2756:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2756:21:2756:21 | 0 | | {EXTERNAL LOCATION} | usize | | main.rs:2757:9:2757:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2757:9:2757:9 | x | | {EXTERNAL LOCATION} | usize | | main.rs:2757:9:2757:17 | ... = ... | | {EXTERNAL LOCATION} | () | | main.rs:2757:13:2757:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2757:13:2757:13 | x | | {EXTERNAL LOCATION} | usize | | main.rs:2757:13:2757:17 | x.f() | | {EXTERNAL LOCATION} | i32 | -| main.rs:2757:13:2757:17 | x.f() | | {EXTERNAL LOCATION} | usize | | main.rs:2758:9:2758:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2758:9:2758:9 | x | | {EXTERNAL LOCATION} | usize | | main.rs:2761:12:2769:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2762:13:2762:13 | x | | {EXTERNAL LOCATION} | usize | | main.rs:2762:24:2762:24 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2762:24:2762:24 | 0 | | {EXTERNAL LOCATION} | usize | | main.rs:2763:13:2763:13 | y | | {EXTERNAL LOCATION} | & | | main.rs:2763:13:2763:13 | y | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:2763:17:2763:18 | &1 | | {EXTERNAL LOCATION} | & | | main.rs:2763:17:2763:18 | &1 | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:2763:18:2763:18 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2764:13:2764:13 | z | | {EXTERNAL LOCATION} | & | +| main.rs:2764:13:2764:13 | z | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:2764:13:2764:13 | z | TRef | {EXTERNAL LOCATION} | usize | | main.rs:2764:17:2764:17 | x | | {EXTERNAL LOCATION} | usize | | main.rs:2764:17:2764:22 | x.g(...) | | {EXTERNAL LOCATION} | & | +| main.rs:2764:17:2764:22 | x.g(...) | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:2764:17:2764:22 | x.g(...) | TRef | {EXTERNAL LOCATION} | usize | | main.rs:2764:21:2764:21 | y | | {EXTERNAL LOCATION} | & | | main.rs:2764:21:2764:21 | y | TRef | {EXTERNAL LOCATION} | i32 | @@ -12950,10 +12715,11 @@ inferType | main.rs:2766:17:2766:17 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2767:13:2767:13 | y | | {EXTERNAL LOCATION} | usize | | main.rs:2767:24:2767:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2767:24:2767:24 | 1 | | {EXTERNAL LOCATION} | usize | | main.rs:2768:13:2768:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:2768:13:2768:13 | z | | {EXTERNAL LOCATION} | usize | | main.rs:2768:17:2768:17 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:2768:17:2768:24 | x.max(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2768:17:2768:24 | x.max(...) | | {EXTERNAL LOCATION} | usize | | main.rs:2768:23:2768:23 | y | | {EXTERNAL LOCATION} | usize | | main.rs:2783:22:2783:26 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2783:22:2783:26 | SelfParam | TRef | main.rs:2782:5:2784:5 | Self [trait Container] | @@ -12988,48 +12754,129 @@ inferType | main.rs:2799:24:2799:25 | &g | TRef.T | {EXTERNAL LOCATION} | i64 | | main.rs:2799:25:2799:25 | g | | main.rs:2780:5:2780:21 | Gen | | main.rs:2799:25:2799:25 | g | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2803:11:2838:1 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2804:5:2804:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2805:5:2805:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2806:5:2806:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2806:20:2806:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2806:41:2806:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2807:5:2807:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2808:5:2808:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2809:5:2809:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2810:5:2810:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2811:5:2811:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2812:5:2812:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2813:5:2813:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2814:5:2814:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2815:5:2815:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2816:5:2816:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2817:5:2817:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2818:5:2818:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2819:5:2819:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2820:5:2820:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2821:5:2821:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2822:5:2822:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:2822:5:2822:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | -| main.rs:2823:5:2823:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2824:5:2824:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2825:5:2825:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2826:5:2826:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2827:5:2827:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2828:5:2828:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2829:5:2829:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2830:5:2830:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2831:5:2831:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2832:5:2832:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2833:5:2833:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2834:5:2834:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2835:5:2835:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2836:5:2836:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2836:5:2836:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2836:5:2836:20 | ...::f(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | -| main.rs:2836:5:2836:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2836:16:2836:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2837:5:2837:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2803:18:2811:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2804:9:2804:12 | arr1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2804:9:2804:12 | arr1 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2804:21:2804:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2804:26:2804:27 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2804:26:2804:27 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2805:9:2805:12 | arr2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2805:9:2805:12 | arr2 | TArray | {EXTERNAL LOCATION} | bool | +| main.rs:2805:16:2805:24 | [true; 0] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2805:16:2805:24 | [true; 0] | TArray | {EXTERNAL LOCATION} | bool | +| main.rs:2805:17:2805:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2805:23:2805:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2807:9:2807:12 | arr3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2807:9:2807:12 | arr3 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2807:16:2807:17 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2807:16:2807:17 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2809:21:2809:23 | arr | | {EXTERNAL LOCATION} | [;] | +| main.rs:2809:21:2809:23 | arr | TArray | main.rs:2809:18:2809:18 | T | +| main.rs:2809:30:2809:30 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2809:34:2809:34 | x | | main.rs:2809:18:2809:18 | T | +| main.rs:2809:40:2809:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2810:5:2810:22 | pin_array(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2810:15:2810:18 | arr3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2810:15:2810:18 | arr3 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2810:21:2810:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2823:25:2823:25 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2825:33:2825:33 | x | | main.rs:2825:12:2825:13 | T1 | +| main.rs:2825:40:2825:40 | y | | {EXTERNAL LOCATION} | Option | +| main.rs:2825:40:2825:40 | y | T | main.rs:2825:16:2825:30 | T2 | +| main.rs:2825:55:2825:56 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2827:19:2835:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2828:13:2828:13 | x | | main.rs:2814:5:2815:19 | S | +| main.rs:2828:13:2828:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2828:17:2828:20 | S(...) | | main.rs:2814:5:2815:19 | S | +| main.rs:2828:17:2828:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2828:19:2828:19 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2829:13:2829:13 | y | | main.rs:2816:5:2816:26 | MyThingA | +| main.rs:2829:13:2829:13 | y | A | main.rs:2814:5:2815:19 | S | +| main.rs:2829:13:2829:13 | y | A.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2829:17:2829:44 | MyThingA(...) | | main.rs:2816:5:2816:26 | MyThingA | +| main.rs:2829:17:2829:44 | MyThingA(...) | A | main.rs:2814:5:2815:19 | S | +| main.rs:2829:17:2829:44 | MyThingA(...) | A.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2829:26:2829:43 | ...::default(...) | | main.rs:2814:5:2815:19 | S | +| main.rs:2829:26:2829:43 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:9:2830:23 | bar(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2830:13:2830:13 | x | | main.rs:2814:5:2815:19 | S | +| main.rs:2830:13:2830:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:16:2830:22 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2830:16:2830:22 | Some(...) | T | main.rs:2816:5:2816:26 | MyThingA | +| main.rs:2830:16:2830:22 | Some(...) | T.A | main.rs:2814:5:2815:19 | S | +| main.rs:2830:16:2830:22 | Some(...) | T.A.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:21:2830:21 | y | | main.rs:2816:5:2816:26 | MyThingA | +| main.rs:2830:21:2830:21 | y | A | main.rs:2814:5:2815:19 | S | +| main.rs:2830:21:2830:21 | y | A.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2832:13:2832:13 | x | | main.rs:2814:5:2815:19 | S | +| main.rs:2832:13:2832:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2832:17:2832:20 | S(...) | | main.rs:2814:5:2815:19 | S | +| main.rs:2832:17:2832:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2832:19:2832:19 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2833:13:2833:13 | z | | main.rs:2817:5:2817:26 | MyThingB | +| main.rs:2833:13:2833:13 | z | B | main.rs:2814:5:2815:19 | S | +| main.rs:2833:13:2833:13 | z | B.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2833:17:2833:44 | MyThingB(...) | | main.rs:2817:5:2817:26 | MyThingB | +| main.rs:2833:17:2833:44 | MyThingB(...) | B | main.rs:2814:5:2815:19 | S | +| main.rs:2833:17:2833:44 | MyThingB(...) | B.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2833:26:2833:43 | ...::default(...) | | main.rs:2814:5:2815:19 | S | +| main.rs:2833:26:2833:43 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2834:9:2834:25 | bar(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2834:13:2834:15 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2834:13:2834:15 | [...] | TArray | main.rs:2814:5:2815:19 | S | +| main.rs:2834:13:2834:15 | [...] | TArray.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2834:14:2834:14 | x | | main.rs:2814:5:2815:19 | S | +| main.rs:2834:14:2834:14 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2834:18:2834:24 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2834:18:2834:24 | Some(...) | T | main.rs:2817:5:2817:26 | MyThingB | +| main.rs:2834:18:2834:24 | Some(...) | T.B | main.rs:2814:5:2815:19 | S | +| main.rs:2834:18:2834:24 | Some(...) | T.B.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2834:23:2834:23 | z | | main.rs:2817:5:2817:26 | MyThingB | +| main.rs:2834:23:2834:23 | z | B | main.rs:2814:5:2815:19 | S | +| main.rs:2834:23:2834:23 | z | B.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2838:11:2874:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2839:5:2839:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2840:5:2840:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2841:5:2841:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2841:20:2841:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2841:41:2841:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2842:5:2842:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2843:5:2843:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2844:5:2844:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2845:5:2845:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2846:5:2846:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2847:5:2847:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2848:5:2848:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2849:5:2849:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2850:5:2850:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2851:5:2851:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2852:5:2852:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2853:5:2853:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2854:5:2854:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2855:5:2855:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2856:5:2856:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2857:5:2857:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2857:5:2857:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:2858:5:2858:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2859:5:2859:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2860:5:2860:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2861:5:2861:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2862:5:2862:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2863:5:2863:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2864:5:2864:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2865:5:2865:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2866:5:2866:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2867:5:2867:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2868:5:2868:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2869:5:2869:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2870:5:2870:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2871:5:2871:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2871:5:2871:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2871:5:2871:20 | ...::f(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2871:5:2871:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2871:16:2871:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2872:5:2872:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2873:5:2873:17 | empty_array(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:4:19:4:23 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:4:19:4:23 | SelfParam | TRef | overloading.rs:2:5:11:5 | Self [trait FirstTrait] | | overloading.rs:4:34:6:9 | { ... } | | {EXTERNAL LOCATION} | bool | @@ -13038,9 +12885,8 @@ inferType | overloading.rs:8:20:8:24 | SelfParam | TRef | overloading.rs:2:5:11:5 | Self [trait FirstTrait] | | overloading.rs:14:19:14:23 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:14:19:14:23 | SelfParam | TRef | overloading.rs:12:5:19:5 | Self [trait SecondTrait] | -| overloading.rs:14:33:16:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:14:33:16:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:15:13:15:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:15:13:15:13 | 1 | | {EXTERNAL LOCATION} | i64 | | overloading.rs:18:20:18:24 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:18:20:18:24 | SelfParam | TRef | overloading.rs:12:5:19:5 | Self [trait SecondTrait] | | overloading.rs:24:20:24:24 | SelfParam | | {EXTERNAL LOCATION} | & | @@ -13051,9 +12897,8 @@ inferType | overloading.rs:30:13:30:16 | true | | {EXTERNAL LOCATION} | bool | | overloading.rs:35:20:35:24 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:35:20:35:24 | SelfParam | TRef | overloading.rs:20:5:21:13 | S | -| overloading.rs:35:34:37:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:35:34:37:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:36:13:36:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:36:13:36:13 | 1 | | {EXTERNAL LOCATION} | i64 | | overloading.rs:43:20:43:24 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:43:20:43:24 | SelfParam | TRef | overloading.rs:40:5:40:14 | S2 | | overloading.rs:43:35:45:9 | { ... } | | {EXTERNAL LOCATION} | bool | @@ -13353,9 +13198,8 @@ inferType | overloading.rs:234:13:234:13 | 0 | | {EXTERNAL LOCATION} | i32 | | overloading.rs:240:14:240:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | | overloading.rs:240:20:240:20 | x | | {EXTERNAL LOCATION} | i64 | -| overloading.rs:240:35:242:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:240:35:242:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:241:13:241:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:241:13:241:13 | 0 | | {EXTERNAL LOCATION} | i64 | | overloading.rs:246:14:246:17 | SelfParam | | overloading.rs:245:5:247:5 | Self [trait Trait2] | | overloading.rs:246:20:246:20 | x | | overloading.rs:245:18:245:19 | T1 | | overloading.rs:251:14:251:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | @@ -13364,9 +13208,8 @@ inferType | overloading.rs:252:13:252:13 | 0 | | {EXTERNAL LOCATION} | i32 | | overloading.rs:258:14:258:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | | overloading.rs:258:20:258:20 | x | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:258:35:260:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:258:35:260:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:259:13:259:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:259:13:259:13 | 0 | | {EXTERNAL LOCATION} | i64 | | overloading.rs:263:12:270:5 | { ... } | | {EXTERNAL LOCATION} | () | | overloading.rs:264:13:264:13 | x | | {EXTERNAL LOCATION} | i32 | | overloading.rs:264:17:264:17 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -13429,7 +13272,7 @@ inferType | overloading.rs:352:14:352:17 | SelfParam | | overloading.rs:325:5:325:25 | S | | overloading.rs:352:14:352:17 | SelfParam | T | overloading.rs:349:10:349:10 | T | | overloading.rs:352:25:359:9 | { ... } | | overloading.rs:325:5:325:25 | S | -| overloading.rs:352:25:359:9 | { ... } | T | {EXTERNAL LOCATION} | i64 | +| overloading.rs:352:25:359:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | | overloading.rs:353:17:353:17 | x | | {EXTERNAL LOCATION} | i64 | | overloading.rs:353:21:353:47 | ...::f(...) | | {EXTERNAL LOCATION} | i64 | | overloading.rs:353:26:353:46 | S(...) | | overloading.rs:325:5:325:25 | S | @@ -13457,7 +13300,6 @@ inferType | overloading.rs:357:42:357:59 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | | overloading.rs:358:13:358:16 | S(...) | | overloading.rs:325:5:325:25 | S | | overloading.rs:358:13:358:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| overloading.rs:358:13:358:16 | S(...) | T | {EXTERNAL LOCATION} | i64 | | overloading.rs:358:15:358:15 | 0 | | {EXTERNAL LOCATION} | i32 | | overloading.rs:367:17:370:5 | { ... } | | overloading.rs:364:5:365:13 | S | | overloading.rs:368:13:368:13 | x | | overloading.rs:364:5:365:13 | S | @@ -13502,7 +13344,6 @@ inferType | overloading.rs:422:16:422:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:422:16:422:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | | overloading.rs:422:23:426:9 | { ... } | | {EXTERNAL LOCATION} | () | -| overloading.rs:423:13:423:24 | ...::foo(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:423:20:423:23 | self | | {EXTERNAL LOCATION} | & | | overloading.rs:423:20:423:23 | self | TRef | overloading.rs:405:5:405:19 | S | | overloading.rs:423:20:423:23 | self | TRef.T | {EXTERNAL LOCATION} | i32 | @@ -13567,9 +13408,8 @@ inferType | overloading.rs:473:14:473:18 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:473:14:473:18 | SelfParam | TRef | overloading.rs:464:5:464:19 | S | | overloading.rs:473:14:473:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | -| overloading.rs:473:28:475:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:473:28:475:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:474:13:474:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:474:13:474:13 | 0 | | {EXTERNAL LOCATION} | i64 | | overloading.rs:481:14:481:18 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:481:14:481:18 | SelfParam | TRef | overloading.rs:464:5:464:19 | S | | overloading.rs:481:14:481:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | @@ -13582,17 +13422,15 @@ inferType | overloading.rs:489:14:489:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | | overloading.rs:489:21:489:21 | x | | overloading.rs:464:5:464:19 | S | | overloading.rs:489:21:489:21 | x | T | {EXTERNAL LOCATION} | i64 | -| overloading.rs:489:48:491:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:489:48:491:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:490:13:490:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:490:13:490:13 | 0 | | {EXTERNAL LOCATION} | i64 | | overloading.rs:497:14:497:18 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:497:14:497:18 | SelfParam | TRef | overloading.rs:464:5:464:19 | S | | overloading.rs:497:14:497:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | | overloading.rs:497:21:497:21 | x | | overloading.rs:464:5:464:19 | S | | overloading.rs:497:21:497:21 | x | T | {EXTERNAL LOCATION} | bool | -| overloading.rs:497:49:499:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| overloading.rs:497:49:499:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | overloading.rs:498:13:498:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:498:13:498:13 | 0 | | {EXTERNAL LOCATION} | i64 | | overloading.rs:502:36:502:36 | x | | overloading.rs:502:19:502:33 | T2 | | overloading.rs:502:49:504:5 | { ... } | | overloading.rs:502:15:502:16 | T1 | | overloading.rs:503:9:503:9 | x | | overloading.rs:502:19:502:33 | T2 | @@ -13609,12 +13447,9 @@ inferType | overloading.rs:511:17:511:20 | S(...) | | overloading.rs:464:5:464:19 | S | | overloading.rs:511:17:511:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | | overloading.rs:511:19:511:19 | 0 | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:512:13:512:13 | y | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:512:17:512:25 | call_f(...) | | {EXTERNAL LOCATION} | i32 | | overloading.rs:512:24:512:24 | x | | overloading.rs:464:5:464:19 | S | | overloading.rs:512:24:512:24 | x | T | {EXTERNAL LOCATION} | i32 | | overloading.rs:513:13:513:13 | z | | {EXTERNAL LOCATION} | i32 | -| overloading.rs:513:22:513:22 | y | | {EXTERNAL LOCATION} | i32 | | overloading.rs:515:13:515:13 | x | | overloading.rs:464:5:464:19 | S | | overloading.rs:515:13:515:13 | x | T | {EXTERNAL LOCATION} | i32 | | overloading.rs:515:17:515:20 | S(...) | | overloading.rs:464:5:464:19 | S | @@ -14589,32 +14424,24 @@ inferType | pattern_matching.rs:443:25:498:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:444:9:444:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:444:9:444:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:9:444:13 | tuple | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:9:444:13 | tuple | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:444:9:444:13 | tuple | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:444:9:444:13 | tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:444:17:444:36 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:444:17:444:36 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:17:444:36 | TupleExpr | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:444:17:444:36 | TupleExpr | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:444:18:444:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:24:444:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:444:30:444:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:447:5:458:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:447:11:447:15 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:447:11:447:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:447:11:447:15 | tuple | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:447:11:447:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:447:11:447:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:447:11:447:15 | tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:448:9:448:19 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:448:9:448:19 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:448:9:448:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:448:9:448:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:448:9:448:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:448:9:448:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:448:10:448:10 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:448:13:448:13 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:448:13:448:13 | 2 | | {EXTERNAL LOCATION} | i64 | @@ -14623,16 +14450,12 @@ inferType | pattern_matching.rs:448:24:451:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:449:17:449:27 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:449:17:449:27 | exact_tuple | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:449:17:449:27 | exact_tuple | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:449:17:449:27 | exact_tuple | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:449:31:449:35 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:449:31:449:35 | tuple | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:31:449:35 | tuple | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:449:31:449:35 | tuple | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:449:31:449:35 | tuple | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:449:31:449:35 | tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:450:13:450:54 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | @@ -14641,32 +14464,22 @@ inferType | pattern_matching.rs:450:22:450:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:450:43:450:53 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:450:43:450:53 | exact_tuple | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:450:43:450:53 | exact_tuple | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:450:43:450:53 | exact_tuple | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:452:9:452:17 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:452:9:452:17 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:452:9:452:17 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:452:9:452:17 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:452:9:452:17 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:452:9:452:17 | TuplePat | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:452:10:452:10 | a | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:452:13:452:13 | b | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:452:13:452:13 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:452:16:452:16 | c | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:452:16:452:16 | c | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:452:22:457:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:453:17:453:26 | first_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:453:30:453:30 | a | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:454:17:454:27 | second_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:454:17:454:27 | second_elem | | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:454:31:454:31 | b | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:454:31:454:31 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:455:17:455:26 | third_elem | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:455:17:455:26 | third_elem | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:455:30:455:30 | c | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:455:30:455:30 | c | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:456:13:456:80 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | @@ -14674,23 +14487,17 @@ inferType | pattern_matching.rs:456:22:456:79 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:456:22:456:79 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:456:45:456:54 | first_elem | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:456:57:456:67 | second_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:456:57:456:67 | second_elem | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:456:70:456:79 | third_elem | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:456:70:456:79 | third_elem | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:461:5:466:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:461:11:461:15 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:461:11:461:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:461:11:461:15 | tuple | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:461:11:461:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:461:11:461:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:461:11:461:15 | tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:462:9:462:19 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:462:9:462:19 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:462:9:462:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:462:9:462:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:462:9:462:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:462:9:462:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:462:24:465:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:464:13:464:54 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | {EXTERNAL LOCATION} | & | @@ -14849,10 +14656,8 @@ inferType | pattern_matching.rs:523:9:523:13 | slice | TRef | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:523:9:523:13 | slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:25:523:40 | &... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:523:25:523:40 | &... | TRef | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:523:25:523:40 | &... | TRef | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:523:25:523:40 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:523:25:523:40 | &... | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:26:523:40 | [...] | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:523:26:523:40 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:27:523:27 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -14933,6 +14738,7 @@ inferType | pattern_matching.rs:560:22:560:70 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:560:22:560:70 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:565:24:601:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:567:11:567:18 | CONSTANT | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:567:27:567:28 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:9:568:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:17:568:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | @@ -15485,8 +15291,10 @@ inferType | pattern_matching.rs:792:35:824:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:794:9:794:14 | points | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:794:9:794:14 | points | A | {EXTERNAL LOCATION} | Global | +| pattern_matching.rs:794:9:794:14 | points | T | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:18:794:65 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:794:18:794:65 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| pattern_matching.rs:794:18:794:65 | MacroExpr | T | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:23:794:42 | (...) | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:23:794:42 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:34:794:34 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -15501,6 +15309,7 @@ inferType | pattern_matching.rs:795:20:795:20 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:795:27:795:32 | points | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:795:27:795:32 | points | A | {EXTERNAL LOCATION} | Global | +| pattern_matching.rs:795:27:795:32 | points | T | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:795:34:799:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:796:13:796:18 | loop_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:796:22:796:22 | x | | {EXTERNAL LOCATION} | i32 | @@ -15626,7 +15435,6 @@ inferType | raw_pointer.rs:13:23:19:1 | { ... } | | {EXTERNAL LOCATION} | () | | raw_pointer.rs:14:9:14:9 | a | | {EXTERNAL LOCATION} | i64 | | raw_pointer.rs:14:18:14:19 | 10 | | {EXTERNAL LOCATION} | i32 | -| raw_pointer.rs:14:18:14:19 | 10 | | {EXTERNAL LOCATION} | i64 | | raw_pointer.rs:15:9:15:9 | x | | {EXTERNAL LOCATION} | *const | | raw_pointer.rs:15:9:15:9 | x | TPtrConst | {EXTERNAL LOCATION} | i64 | | raw_pointer.rs:15:13:15:24 | &raw const a | | {EXTERNAL LOCATION} | *const | 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 8dcc34ad8001..92c11c5494d0 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.ql +++ b/rust/ql/test/library-tests/type-inference/type-inference.ql @@ -12,14 +12,14 @@ private predicate relevantNode(AstNode n) { } query predicate inferCertainType(AstNode n, TypePath path, Type t) { - t = TypeInference::CertainTypeInference::inferCertainType(n, path) and - t != TUnknownType() and + t = TypeInference::inferTypeCertain(n, path) and + not t instanceof PseudoType and relevantNode(n) } query predicate inferType(AstNode n, TypePath path, Type t) { t = TypeInference::inferType(n, path) and - t != TUnknownType() and + not t instanceof PseudoType and relevantNode(n) } @@ -59,26 +59,4 @@ module ResolveTest implements TestSig { } } -module TypeTest implements TestSig { - string getARelevantTag() { result = ["type", "certainType"] } - - predicate hasActualResult(Location location, string element, string tag, string value) { none() } - - predicate hasOptionalResult(Location location, string element, string tag, string value) { - exists(AstNode n, TypePath path, Type t, string at | - t = TypeInference::inferType(n, path) and - ( - tag = "type" - or - t = TypeInference::CertainTypeInference::inferCertainType(n, path) and - tag = "certainType" - ) and - location = n.getLocation() and - (if path.isEmpty() then at = "" else at = "@" + TypePath::printTypePathVerbose(path)) and - value = element + at + ":" + t.toString() and - element = [n.toString(), n.(IdentPat).getName().getText()] - ) - } -} - -import MakeTest> +import MakeTest> diff --git a/rust/ql/test/library-tests/variables/options.yml b/rust/ql/test/library-tests/variables/options.yml index a394083e5212..c2541fc242c2 100644 --- a/rust/ql/test/library-tests/variables/options.yml +++ b/rust/ql/test/library-tests/variables/options.yml @@ -1 +1,2 @@ qltest_use_nightly: true +qltest_edition: "2024" diff --git a/rust/ql/test/query-tests/diagnostics/AstConsistencyCounts.expected b/rust/ql/test/query-tests/diagnostics/AstConsistencyCounts.expected index 0028cd74b6ef..9205c8015ad8 100644 --- a/rust/ql/test/query-tests/diagnostics/AstConsistencyCounts.expected +++ b/rust/ql/test/query-tests/diagnostics/AstConsistencyCounts.expected @@ -1,3 +1,4 @@ +| Missing toString | 0 | | Multiple children | 0 | | Multiple locations | 0 | | Multiple parents | 0 | diff --git a/rust/ql/test/query-tests/security/CWE-078/CommandInjection.expected b/rust/ql/test/query-tests/security/CWE-078/CommandInjection.expected index e3d423933f7e..392bc09cb0ba 100644 --- a/rust/ql/test/query-tests/security/CWE-078/CommandInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-078/CommandInjection.expected @@ -7,8 +7,6 @@ | main.rs:65:48:65:69 | remote_string.as_str() | main.rs:59:25:59:69 | ...::get(...) | main.rs:65:48:65:69 | remote_string.as_str() | This command line depends on a $@. | main.rs:59:25:59:69 | ...::get(...) | user-provided value | | main.rs:73:14:73:35 | remote_string.as_str() | main.rs:59:25:59:69 | ...::get(...) | main.rs:73:14:73:35 | remote_string.as_str() | This command line depends on a $@. | main.rs:59:25:59:69 | ...::get(...) | user-provided value | | main.rs:86:18:86:27 | user_input | main.rs:138:22:138:37 | ...::args(...) | main.rs:86:18:86:27 | user_input | This command line depends on a $@. | main.rs:138:22:138:37 | ...::args(...) | user-provided value | -| main.rs:100:22:100:29 | filename | main.rs:138:22:138:37 | ...::args(...) | main.rs:100:22:100:29 | filename | This command line depends on a $@. | main.rs:138:22:138:37 | ...::args(...) | user-provided value | -| main.rs:111:22:111:28 | command | main.rs:138:22:138:37 | ...::args(...) | main.rs:111:22:111:28 | command | This command line depends on a $@. | main.rs:138:22:138:37 | ...::args(...) | user-provided value | | main.rs:113:22:113:28 | command | main.rs:138:22:138:37 | ...::args(...) | main.rs:113:22:113:28 | command | This command line depends on a $@. | main.rs:138:22:138:37 | ...::args(...) | user-provided value | | main.rs:121:22:121:28 | command | main.rs:138:22:138:37 | ...::args(...) | main.rs:121:22:121:28 | command | This command line depends on a $@. | main.rs:138:22:138:37 | ...::args(...) | user-provided value | | main.rs:127:22:127:28 | command | main.rs:138:22:138:37 | ...::args(...) | main.rs:127:22:127:28 | command | This command line depends on a $@. | main.rs:138:22:138:37 | ...::args(...) | user-provided value | @@ -58,14 +56,11 @@ edges | main.rs:73:14:73:26 | remote_string | main.rs:73:14:73:35 | remote_string.as_str() [&ref] | provenance | MaD:8 | | main.rs:73:14:73:35 | remote_string.as_str() [&ref] | main.rs:73:14:73:35 | remote_string.as_str() | provenance | Sink:MaD:4 | | main.rs:82:27:82:42 | ...: ... [&ref] | main.rs:86:18:86:27 | user_input | provenance | Sink:MaD:1 | -| main.rs:95:27:95:40 | ...: ... [&ref] | main.rs:100:22:100:29 | filename | provenance | Sink:MaD:1 | -| main.rs:107:30:107:42 | ...: ... [&ref] | main.rs:111:22:111:28 | command | provenance | Sink:MaD:3 | | main.rs:107:30:107:42 | ...: ... [&ref] | main.rs:113:22:113:28 | command | provenance | Sink:MaD:3 | | main.rs:107:30:107:42 | ...: ... [&ref] | main.rs:121:22:121:28 | command | provenance | Sink:MaD:3 | | main.rs:107:30:107:42 | ...: ... [&ref] | main.rs:127:22:127:28 | command | provenance | Sink:MaD:3 | | main.rs:107:30:107:42 | ...: ... [&ref] | main.rs:131:22:131:28 | command | provenance | Sink:MaD:3 | | main.rs:138:9:138:18 | arg_string | main.rs:142:39:142:48 | arg_string | provenance | | -| main.rs:138:9:138:18 | arg_string | main.rs:143:40:143:49 | arg_string | provenance | | | main.rs:138:9:138:18 | arg_string | main.rs:144:31:144:40 | arg_string | provenance | | | main.rs:138:22:138:37 | ...::args(...) | main.rs:138:22:138:37 | ...::args(...) [element] | provenance | Src:MaD:7 | | main.rs:138:22:138:37 | ...::args(...) [element] | main.rs:138:22:138:44 | ... .nth(...) [Some] | provenance | MaD:9 | @@ -73,8 +68,6 @@ edges | main.rs:138:22:138:74 | ... .unwrap_or(...) | main.rs:138:9:138:18 | arg_string | provenance | | | main.rs:142:39:142:48 | arg_string | main.rs:142:39:142:57 | arg_string.as_str() [&ref] | provenance | MaD:8 | | main.rs:142:39:142:57 | arg_string.as_str() [&ref] | main.rs:82:27:82:42 | ...: ... [&ref] | provenance | | -| main.rs:143:40:143:49 | arg_string | main.rs:143:40:143:58 | arg_string.as_str() [&ref] | provenance | MaD:8 | -| main.rs:143:40:143:58 | arg_string.as_str() [&ref] | main.rs:95:27:95:40 | ...: ... [&ref] | provenance | | | main.rs:144:31:144:40 | arg_string | main.rs:144:31:144:49 | arg_string.as_str() [&ref] | provenance | MaD:8 | | main.rs:144:31:144:49 | arg_string.as_str() [&ref] | main.rs:107:30:107:42 | ...: ... [&ref] | provenance | | models @@ -141,10 +134,7 @@ nodes | main.rs:73:14:73:35 | remote_string.as_str() [&ref] | semmle.label | remote_string.as_str() [&ref] | | main.rs:82:27:82:42 | ...: ... [&ref] | semmle.label | ...: ... [&ref] | | main.rs:86:18:86:27 | user_input | semmle.label | user_input | -| main.rs:95:27:95:40 | ...: ... [&ref] | semmle.label | ...: ... [&ref] | -| main.rs:100:22:100:29 | filename | semmle.label | filename | | main.rs:107:30:107:42 | ...: ... [&ref] | semmle.label | ...: ... [&ref] | -| main.rs:111:22:111:28 | command | semmle.label | command | | main.rs:113:22:113:28 | command | semmle.label | command | | main.rs:121:22:121:28 | command | semmle.label | command | | main.rs:127:22:127:28 | command | semmle.label | command | @@ -156,8 +146,6 @@ nodes | main.rs:138:22:138:74 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | | main.rs:142:39:142:48 | arg_string | semmle.label | arg_string | | main.rs:142:39:142:57 | arg_string.as_str() [&ref] | semmle.label | arg_string.as_str() [&ref] | -| main.rs:143:40:143:49 | arg_string | semmle.label | arg_string | -| main.rs:143:40:143:58 | arg_string.as_str() [&ref] | semmle.label | arg_string.as_str() [&ref] | | main.rs:144:31:144:40 | arg_string | semmle.label | arg_string | | main.rs:144:31:144:49 | arg_string.as_str() [&ref] | semmle.label | arg_string.as_str() [&ref] | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-078/main.rs b/rust/ql/test/query-tests/security/CWE-078/main.rs index f2d8ac4ee994..310f9eaee03a 100644 --- a/rust/ql/test/query-tests/security/CWE-078/main.rs +++ b/rust/ql/test/query-tests/security/CWE-078/main.rs @@ -97,7 +97,7 @@ mod qhelp_example_good { let allowed_names = ["report.pdf", "summary.txt", "data.csv"]; if allowed_names.contains(&filename) { Command::new("cat") - .arg(filename) // $ SPURIOUS: Alert[rust/command-line-injection]=args2 + .arg(filename) .output() .expect("failed to execute"); } @@ -108,7 +108,7 @@ fn test_allowlist_sanitizers(command: &str) { let allowed_commands_array = ["cat", "git", "ls"]; if allowed_commands_array.contains(&command) { - Command::new(command).output().expect("failed"); // $ SPURIOUS: Alert[rust/command-line-injection]=args2 + Command::new(command).output().expect("failed"); } else { Command::new(command).output().expect("failed"); // $ Alert[rust/command-line-injection]=args2 } 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 6fb6fee32f28..9e83fc7fe9d6 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected @@ -26,6 +26,8 @@ | test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:93:15:93:22 | password | test_logging.rs:94:11:94:28 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:93:15:93:22 | password | password | | test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:96:42:96:49 | password | test_logging.rs:97:11:97:18 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:96:42:96:49 | password | password | | test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:99:38:99:45 | password | test_logging.rs:100:11:100:18 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:99:38:99:45 | password | password | +| test_logging.rs:104:11:104:18 | MacroExpr | test_logging.rs:103:37:103:44 | password | test_logging.rs:104:11:104:18 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:103:37:103:44 | password | password | +| test_logging.rs:108:11:108:18 | MacroExpr | test_logging.rs:107:39:107:46 | password | test_logging.rs:108:11:108:18 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:107:39:107:46 | password | password | | test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:118:28:118:41 | get_password(...) | get_password(...) | | test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:129:25:129:32 | password | test_logging.rs:131:12:131:31 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:129:25:129:32 | password | password | | test_logging.rs:141:11:141:37 | MacroExpr | test_logging.rs:141:27:141:37 | s1.password | test_logging.rs:141:11:141:37 | MacroExpr | This operation writes $@ to a log file. | test_logging.rs:141:27:141:37 | s1.password | s1.password | @@ -122,9 +124,17 @@ edges | test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | Sink:MaD:11 | | test_logging.rs:99:22:99:45 | ...::format(...) | test_logging.rs:99:22:99:45 | { ... } | 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:19 | -| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:20 | +| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:20 | +| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:21 | | test_logging.rs:99:38:99:45 | password | test_logging.rs:99:22:99:45 | MacroExpr | provenance | | +| test_logging.rs:103:12:103:18 | [post] &mut m4 [&ref] | test_logging.rs:103:17:103:18 | [post] m4 | provenance | | +| test_logging.rs:103:17:103:18 | [post] m4 | test_logging.rs:104:11:104:18 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:103:21:103:44 | MacroExpr | test_logging.rs:103:12:103:18 | [post] &mut m4 [&ref] | provenance | MaD:19 | +| test_logging.rs:103:37:103:44 | password | test_logging.rs:103:21:103:44 | MacroExpr | provenance | | +| test_logging.rs:107:14:107:20 | [post] &mut m5 [&ref] | test_logging.rs:107:19:107:20 | [post] m5 | provenance | | +| test_logging.rs:107:19:107:20 | [post] m5 | test_logging.rs:108:11:108:18 | MacroExpr | provenance | Sink:MaD:11 | +| test_logging.rs:107:23:107:46 | MacroExpr | test_logging.rs:107:14:107:20 | [post] &mut m5 [&ref] | provenance | MaD:19 | +| test_logging.rs:107:39:107:46 | password | test_logging.rs:107:23:107:46 | MacroExpr | provenance | | | test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | provenance | Sink:MaD:11 | | 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 | | @@ -139,8 +149,8 @@ edges | test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... [&ref] | provenance | | | test_logging.rs:176:42:176:78 | ...::format(...) | test_logging.rs:176:42:176:78 | { ... } | 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:19 | -| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:20 | +| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:20 | +| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:21 | | 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:35:180:81 | &... | provenance | Sink:MaD:3 | | test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:35:180:81 | &... | provenance | Sink:MaD:3 | @@ -148,8 +158,8 @@ edges | test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... [&ref] | provenance | | | test_logging.rs:180:44:180:80 | ...::format(...) | test_logging.rs:180:44:180:80 | { ... } | 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:19 | -| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:20 | +| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:20 | +| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:21 | | 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 | provenance | Sink:MaD:4 | | test_logging.rs:183:47:183:68 | Err(...) [Err] | test_logging.rs:183:9:183:19 | err_result2 [Err] | provenance | | @@ -184,36 +194,36 @@ edges | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | Sink:MaD:2 | | test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:38:229:61 | { ... } | provenance | | | test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:62 | MacroExpr | provenance | | -| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:19 | -| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:20 | +| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:20 | +| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:21 | | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | | | test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref, element] | provenance | MaD:16 | | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref, element] | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | Sink:MaD:7 Sink:MaD:7 | | test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:24:242:49 | { ... } | provenance | | | test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:50 | MacroExpr | provenance | | -| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:19 | -| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:20 | +| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:20 | +| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:21 | | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | | | test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref, element] | provenance | MaD:16 | | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref, element] | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | Sink:MaD:8 Sink:MaD:8 | | test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:28:245:53 | { ... } | provenance | | | test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:54 | MacroExpr | provenance | | -| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:19 | -| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:20 | +| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:20 | +| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:21 | | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | | | test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref, element] | provenance | MaD:16 | | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref, element] | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | Sink:MaD:7 Sink:MaD:7 | | test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:23:248:48 | { ... } | provenance | | | test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:49 | MacroExpr | provenance | | -| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:19 | -| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:20 | +| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:20 | +| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:21 | | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | | | test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref, element] | provenance | MaD:16 | | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref, element] | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | Sink:MaD:6 Sink:MaD:6 | | test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:23:251:48 | { ... } | provenance | | | test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:49 | MacroExpr | provenance | | -| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:19 | -| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:20 | +| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:20 | +| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:21 | | test_logging.rs:251:41:251:48 | password | test_logging.rs:251:23:251:48 | MacroExpr | provenance | | models | 1 | Sink: ::log_expect; Argument[0]; log-injection | @@ -221,9 +231,9 @@ models | 3 | Sink: ::log_expect; Argument[0]; log-injection | | 4 | Sink: ::log_expect; Argument[self].Field[core::result::Result::Err(0)]; log-injection | | 5 | Sink: ::log_unwrap; Argument[self].Field[core::result::Result::Err(0)]; log-injection | -| 6 | Sink: ::write; Argument[0]; log-injection | -| 7 | Sink: ::write; Argument[0]; log-injection | -| 8 | Sink: ::write_all; Argument[0]; log-injection | +| 6 | Sink: ::write; Argument[0]; log-injection | +| 7 | Sink: ::write; Argument[0]; log-injection | +| 8 | Sink: ::write_all; Argument[0]; log-injection | | 9 | Sink: core::panicking::assert_failed; Argument[3].Field[core::option::Option::Some(0)]; log-injection | | 10 | Sink: core::panicking::panic_fmt; Argument[0]; log-injection | | 11 | Sink: log::__private_api::log; Argument[1]; log-injection | @@ -234,8 +244,9 @@ models | 16 | Summary: ::as_bytes; Argument[self].Reference; ReturnValue.Reference.Element; taint | | 17 | Summary: ::as_str; Argument[self].Reference; ReturnValue.Reference; taint | | 18 | Summary: ::clone; Argument[self].Reference; ReturnValue; value | -| 19 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 20 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 19 | Summary: ::write_fmt; Argument[0]; Argument[self].Reference; taint | +| 20 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 21 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | test_logging.rs:42:12:42:35 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:42:28:42:35 | password | semmle.label | password | @@ -326,6 +337,16 @@ nodes | test_logging.rs:99:22:99:45 | { ... } | semmle.label | { ... } | | test_logging.rs:99:38:99:45 | password | semmle.label | password | | test_logging.rs:100:11:100:18 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:103:12:103:18 | [post] &mut m4 [&ref] | semmle.label | [post] &mut m4 [&ref] | +| test_logging.rs:103:17:103:18 | [post] m4 | semmle.label | [post] m4 | +| test_logging.rs:103:21:103:44 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:103:37:103:44 | password | semmle.label | password | +| test_logging.rs:104:11:104:18 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:107:14:107:20 | [post] &mut m5 [&ref] | semmle.label | [post] &mut m5 [&ref] | +| test_logging.rs:107:19:107:20 | [post] m5 | semmle.label | [post] m5 | +| test_logging.rs:107:23:107:46 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:107:39:107:46 | password | semmle.label | password | +| test_logging.rs:108:11:108:18 | MacroExpr | semmle.label | MacroExpr | | 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] | 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 43bcd8894f3c..d9dc9952086a 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 @@ -100,15 +100,15 @@ fn test_log(harmless: String, password: String, encrypted_password: String) { info!("{}", m3); // $ Alert[rust/cleartext-logging]=m3 let mut m4 = String::new(); - write!(&mut m4, "message = {}", password); // $ MISSING: Source=m4 - info!("{}", m4); // $ MISSING: Alert[rust/cleartext-logging]=m4 + write!(&mut m4, "message = {}", password); // $ Source[rust/cleartext-logging]=m4 + info!("{}", m4); // $ Alert[rust/cleartext-logging]=m4 let mut m5 = String::new(); - writeln!(&mut m5, "message = {}", password); // $ MISSING: Source=m5 - info!("{}", m5); // $ MISSING: Alert[rust/cleartext-logging]=m5 + writeln!(&mut m5, "message = {}", password); // $ Source[rust/cleartext-logging]=m5 + info!("{}", m5); // $ Alert[rust/cleartext-logging]=m5 let mut m6 = Vec::new(); - write!(&mut m6, "message = {}", password); // $ MISSING: Source=m6 + write!(&mut m6, "message = {}", password); // $ MISSING: Source[rust/cleartext-logging]=m6 info!("{}", std::str::from_utf8(&m6).unwrap()); // $ MISSING: Alert[rust/cleartext-logging]=m6 unsafe { info!("{}", std::str::from_utf8_unchecked(&m6)); // $ MISSING: Alert[rust/cleartext-logging]=m6 @@ -135,7 +135,7 @@ fn test_log(harmless: String, password: String, encrypted_password: String) { // logging from a struct let s1 = MyStruct1 { harmless: "foo".to_string(), - password: "123456".to_string(), // $ MISSING: Source=s1 + password: "123456".to_string(), // $ MISSING: Source[rust/cleartext-logging]=s1 }; warn!("message = {}", s1.harmless); warn!("message = {}", s1.password); // $ Alert[rust/cleartext-logging] @@ -145,7 +145,7 @@ fn test_log(harmless: String, password: String, encrypted_password: String) { let s2 = MyStruct2 { harmless: "foo".to_string(), - password: "123456".to_string(), // $ MISSING: Source=s2 + password: "123456".to_string(), // $ MISSING: Source[rust/cleartext-logging]=s2 }; warn!("message = {}", s2.harmless); warn!("message = {}", s2.password); // $ Alert[rust/cleartext-logging] 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 d90b16185cb1..6b6cb7066279 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -188,16 +188,16 @@ edges | 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:30 | | 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 | Sink:MaD:14 | -| main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | Sink:MaD:12 | -| main.rs:192:9:192:10 | l2 | main.rs:194:45:194:46 | l2 | provenance | Sink:MaD:13 | -| main.rs:192:9:192:10 | l2 | main.rs:195:41:195:42 | l2 | provenance | Sink:MaD:7 | -| main.rs:192:9:192:10 | l2 | main.rs:196:48:196:49 | l2 | provenance | Sink:MaD:8 | +| main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | Sink:MaD:9 | +| main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | Sink:MaD:7 | +| main.rs:192:9:192:10 | l2 | main.rs:194:45:194:46 | l2 | provenance | Sink:MaD:8 | +| main.rs:192:9:192:10 | l2 | main.rs:195:41:195:42 | l2 | provenance | Sink:MaD:10 | +| main.rs:192:9:192:10 | l2 | main.rs:196:48:196:49 | l2 | provenance | Sink:MaD:11 | | main.rs:192:9:192:10 | l2 | main.rs:197:41:197:42 | l2 | provenance | Sink:MaD:1 | | main.rs:192:9:192:10 | l2 | main.rs:198:48:198:49 | l2 | provenance | Sink:MaD:2 | -| main.rs:192:9:192:10 | l2 | main.rs:208:53:208:54 | l2 | provenance | Sink:MaD:9 | -| main.rs:192:9:192:10 | l2 | main.rs:210:60:210:61 | l2 | provenance | Sink:MaD:10 | -| main.rs:192:9:192:10 | l2 | main.rs:213:51:213:52 | l2 | provenance | Sink:MaD:11 | +| main.rs:192:9:192:10 | l2 | main.rs:208:53:208:54 | l2 | provenance | Sink:MaD:12 | +| main.rs:192:9:192:10 | l2 | main.rs:210:60:210:61 | l2 | provenance | Sink:MaD:13 | +| main.rs:192:9:192:10 | l2 | main.rs:213:51:213:52 | l2 | provenance | Sink:MaD:14 | | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:41 | | 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:25 | @@ -252,14 +252,14 @@ models | 4 | Sink: ::try_with_capacity_in; Argument[0]; alloc-layout | | 5 | Sink: ::with_capacity; Argument[0]; alloc-layout | | 6 | Sink: ::with_capacity_in; Argument[0]; alloc-layout | -| 7 | Sink: ::allocate; Argument[0]; alloc-size | -| 8 | Sink: ::allocate_zeroed; Argument[0]; alloc-size | -| 9 | Sink: ::grow; Argument[2]; alloc-size | -| 10 | Sink: ::grow_zeroed; Argument[2]; alloc-size | -| 11 | Sink: ::shrink; Argument[2]; alloc-size | -| 12 | Sink: ::alloc; Argument[0]; alloc-size | -| 13 | Sink: ::alloc_zeroed; Argument[0]; alloc-size | -| 14 | Sink: ::realloc; Argument[2]; alloc-size | +| 7 | Sink: ::alloc; Argument[0]; alloc-layout | +| 8 | Sink: ::alloc_zeroed; Argument[0]; alloc-layout | +| 9 | Sink: ::realloc; Argument[2]; alloc-size | +| 10 | Sink: ::allocate; Argument[0]; alloc-size | +| 11 | Sink: ::allocate_zeroed; Argument[0]; alloc-size | +| 12 | Sink: ::grow; Argument[2]; alloc-size | +| 13 | Sink: ::grow_zeroed; Argument[2]; alloc-size | +| 14 | Sink: ::shrink; Argument[2]; alloc-size | | 15 | Sink: alloc::alloc::alloc; Argument[0]; alloc-layout | | 16 | Sink: alloc::alloc::alloc_zeroed; Argument[0]; alloc-layout | | 17 | Sink: alloc::alloc::realloc; Argument[2]; alloc-size | diff --git a/rust/ql/test/query-tests/unusedentities/options.yml b/rust/ql/test/query-tests/unusedentities/options.yml index a394083e5212..c2541fc242c2 100644 --- a/rust/ql/test/query-tests/unusedentities/options.yml +++ b/rust/ql/test/query-tests/unusedentities/options.yml @@ -1 +1,2 @@ qltest_use_nightly: true +qltest_edition: "2024" diff --git a/rust/ql/test/rust-toolchain.toml b/rust/ql/test/rust-toolchain.toml deleted file mode 100644 index 9343bef27c61..000000000000 --- a/rust/ql/test/rust-toolchain.toml +++ /dev/null @@ -1,7 +0,0 @@ -# This file specifies the Rust version used to test the rust extractor. -# IMPORTANT: this can also have an impact on QL test results - -[toolchain] -channel = "1.90" -profile = "minimal" -components = [ "rust-src" ] diff --git a/rust/ql/test/setup.sh b/rust/ql/test/setup.sh index 1d7feb284eda..d69b1b77143c 100755 --- a/rust/ql/test/setup.sh +++ b/rust/ql/test/setup.sh @@ -8,6 +8,9 @@ set -euo pipefail # no need to install rust-src explicitly, it's listed in both toolchains cd "$(dirname "$0")" +# Install the fixed toolchain used by the extractor. The version here should +# match `FIXED_RUST_TOOLCHAIN`. +rustup toolchain install 1.99.0 --profile minimal --component rust-src pushd ../../extractor/src/nightly-toolchain rustup install popd diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index 10d7ec82a6cd..fc2d81c4ed08 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -2,6 +2,9 @@ from .ast import * +@ql.to_string_impl_from_primary_class( + False +) # Disable since we have a final manual `toStringImpl` for this class class LabelableExpr(Expr): """ The base class for expressions that can be labeled (`LoopExpr`, `ForExpr`, `WhileExpr` or `BlockExpr`). @@ -25,7 +28,7 @@ class _: """ derive_macro_expansions: list[MacroItems] | child | rust.detach - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child generic_param_list: optional["GenericParamList"] | child name: optional["Name"] | child visibility: optional["Visibility"] | child @@ -597,7 +600,7 @@ class ArrayExpr(Expr): """ exprs: list[Expr] | child - attrs: list[Attr] | child + attrs: list[AnyAttr] | child @synth.from_class(ArrayExprInternal) @@ -1055,6 +1058,21 @@ class _: """ +@annotate(DerefPat, cfg=True) +class _: + """ + A deref pattern, matching the value behind a smart pointer. This is an experimental + Rust feature that cannot be written directly in stable Rust; the example below uses + rust-analyzer's canonical `builtin#deref` syntax for such patterns: + ```rust + match x { + builtin#deref(y) => y, + _ => 0, + }; + ``` + """ + + @annotate(DynTraitTypeRepr) class _: """ @@ -1280,6 +1298,13 @@ class _: """ +@annotate(ImplRestriction) +class _: + """ + An implementation restriction, limiting where a trait can be implemented. For example the `impl(crate)` restriction (an unstable feature). + """ + + @annotate(ImplTraitTypeRepr) class _: """ @@ -1293,6 +1318,16 @@ class _: """ +@annotate(IncludeBytesExpr, cfg=True) +class _: + """ + An expression produced by the built-in `include_bytes!` macro, embedding the contents of a file as a byte array. For example: + ```rust + let data = include_bytes!("data.bin"); + ``` + """ + + @annotate(InferTypeRepr) class _: """ @@ -1507,6 +1542,13 @@ class _: """ +@annotate(MutRestriction) +class _: + """ + A mutability restriction, limiting where a field can be mutated. For example the `mut(crate)` restriction (an unstable feature). + """ + + @annotate(Name, cfg=True) class _: """ @@ -1546,15 +1588,41 @@ class _: """ +@annotate(DocComment) +class _: + """ + A documentation comment. + + For example: + ```rust + /// Documents `documented`. + fn documented() {} + ``` + """ + + class ParamBase(AstNode): """ A normal parameter, `Param`, or a self parameter `SelfParam`. """ - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child type_repr: optional["TypeRepr"] | child +@annotate(NotNull, cfg=True) +class _: + """ + The `!null` pattern used in a pattern type to denote a non-null value. Pattern types + are an experimental, mostly compiler-internal feature (used in the standard library for + types such as `NonZero` and `NonNull`) and cannot be written directly in stable Rust; + the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + ```rust + type NonNull = builtin#pattern_type(*const () is !null); + ``` + """ + + @annotate(ParamBase, cfg=True) class _: pass @@ -1642,6 +1710,18 @@ class _: """ +@annotate(PatternTypeRepr) +class _: + """ + A pattern type, constraining a type to values matching a pattern. Pattern types are an + experimental, mostly compiler-internal feature and cannot be written directly in stable + Rust; the example below uses rust-analyzer's canonical `builtin#pattern_type` syntax: + ```rust + type NonZero = builtin#pattern_type(u32 is 1..); + ``` + """ + + @annotate(PtrTypeRepr) class _: """ @@ -2150,6 +2230,17 @@ class _: """ +@annotate(VisibilityInner) +class _: + """ + The parenthesized inner part of a visibility modifier or restriction, such as the `(in path)` in `pub(in path)`, or the `(crate)` in `pub(crate)`. For example the `(in foo::bar)` in: + ```rust + pub(in foo::bar) struct S; + // ^^^^^^^^^^^^ + ``` + """ + + @annotate(WhereClause) class _: """ diff --git a/rust/schema/ast.py b/rust/schema/ast.py index 624fc97b02bb..2a154c79b02a 100644 --- a/rust/schema/ast.py +++ b/rust/schema/ast.py @@ -5,6 +5,9 @@ class TypeItem(AstNode, ): pass +class AnyAttr(AstNode, ): + pass + class AsmOperand(AstNode, ): pass @@ -57,7 +60,7 @@ class ArgList(AstNode, ): args: list["Expr"] | child class ArrayExprInternal(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child exprs: list["Expr"] | child is_semicolon: predicate @@ -66,7 +69,7 @@ class ArrayTypeRepr(TypeRepr, ): element_type_repr: optional["TypeRepr"] | child class AsmClobberAbi(AsmPiece, ): - pass + attrs: list["AnyAttr"] | child class AsmConst(AsmOperand, ): expr: optional["Expr"] | child @@ -77,7 +80,7 @@ class AsmDirSpec(AstNode, ): class AsmExpr(Expr, Item, ): asm_pieces: list["AsmPiece"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child template: list["Expr"] | child class AsmLabel(AsmOperand, ): @@ -89,6 +92,7 @@ class AsmOperandExpr(AstNode, ): class AsmOperandNamed(AsmPiece, ): asm_operand: optional["AsmOperand"] | child + attrs: list["AnyAttr"] | child name: optional["Name"] | child class AsmOption(AstNode, ): @@ -96,6 +100,7 @@ class AsmOption(AstNode, ): class AsmOptionsList(AsmPiece, ): asm_options: list["AsmOption"] | child + attrs: list["AnyAttr"] | child class AsmRegOperand(AsmOperand, ): asm_dir_spec: optional["AsmDirSpec"] | child @@ -110,7 +115,7 @@ class AsmSym(AsmOperand, ): class AssocItemList(AstNode, ): assoc_items: list["AssocItem"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child class AssocTypeArg(GenericArg, ): const_arg: optional["ConstArg"] | child @@ -122,25 +127,25 @@ class AssocTypeArg(GenericArg, ): type_repr: optional["TypeRepr"] | child type_bound_list: optional["TypeBoundList"] | child -class Attr(AstNode, ): +class Attr(AnyAttr, ): meta: optional["Meta"] | child class AwaitExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child class BecomeExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child class BinaryExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child lhs: optional["Expr"] | child operator_name: optional[string] rhs: optional["Expr"] | child class BlockExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child is_async: predicate is_const: predicate is_gen: predicate @@ -154,17 +159,17 @@ class BoxPat(Pat, ): pat: optional["Pat"] | child class BreakExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child lifetime: optional["Lifetime"] | child class CallExpr(Expr, ): arg_list: optional["ArgList"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child function: optional["Expr"] | child class CastExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child type_repr: optional["TypeRepr"] | child @@ -181,8 +186,14 @@ class CfgComposite(CfgPredicate, ): class CfgMeta(Meta, ): cfg_predicate: optional["CfgPredicate"] | child +class CfgPredExpr(Expr, ): + cfg_predicate: optional["CfgPredicate"] | child + +class CfgPredPat(Pat, ): + cfg_predicate: optional["CfgPredicate"] | child + class ClosureExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child closure_body: optional["Expr"] | child for_binder: optional["ForBinder"] | child is_async: predicate @@ -194,7 +205,7 @@ class ClosureExpr(Expr, ): ret_type: optional["RetTypeRepr"] | child class Const(AssocItem, Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child body: optional["Expr"] | child generic_param_list: optional["GenericParamList"] | child is_const: predicate @@ -212,21 +223,27 @@ class ConstBlockPat(Pat, ): is_const: predicate class ConstParam(GenericParam, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child default_val: optional["ConstArg"] | child is_const: predicate name: optional["Name"] | child type_repr: optional["TypeRepr"] | child class ContinueExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child lifetime: optional["Lifetime"] | child +class DerefPat(Pat, ): + pat: optional["Pat"] | child + +class DocComment(AnyAttr, ): + pass + class DynTraitTypeRepr(TypeRepr, ): type_bound_list: optional["TypeBoundList"] | child class Enum(TypeItem, Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child generic_param_list: optional["GenericParamList"] | child name: optional["Name"] | child variant_list: optional["VariantList"] | child @@ -238,28 +255,28 @@ class ExprStmt(Stmt, ): class ExternBlock(Item, ): abi: optional["Abi"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child extern_item_list: optional["ExternItemList"] | child is_unsafe: predicate class ExternCrate(Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child identifier: optional["NameRef"] | child rename: optional["Rename"] | child visibility: optional["Visibility"] | child class ExternItemList(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child extern_items: list["ExternItem"] | child class FieldExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child container: optional["Expr"] | child identifier: optional["NameRef"] | child class Function(AssocItem, ExternItem, Item, ): abi: optional["Abi"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child function_body: optional["BlockExpr"] | child generic_param_list: optional["GenericParamList"] | child is_async: predicate @@ -285,7 +302,7 @@ class ForBinder(AstNode, ): generic_param_list: optional["GenericParamList"] | child class ForExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child iterable: optional["Expr"] | child label: optional["Label"] | child loop_body: optional["BlockExpr"] | child @@ -296,15 +313,12 @@ class ForTypeRepr(TypeRepr, ): type_repr: optional["TypeRepr"] | child class FormatArgsArg(AstNode, ): - arg_name: optional["FormatArgsArgName"] | child expr: optional["Expr"] | child - -class FormatArgsArgName(AstNode, ): - pass + name: optional["Name"] | child class FormatArgsExpr(Expr, ): args: list["FormatArgsArg"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child template: optional["Expr"] | child class GenericArgList(AstNode, ): @@ -314,21 +328,21 @@ class GenericParamList(AstNode, ): generic_params: list["GenericParam"] | child class IdentPat(Pat, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child is_mut: predicate is_ref: predicate name: optional["Name"] | child pat: optional["Pat"] | child class IfExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child condition: optional["Expr"] | child else_: optional["Expr"] | child then: optional["BlockExpr"] | child class Impl(Item, ): assoc_item_list: optional["AssocItemList"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child generic_param_list: optional["GenericParamList"] | child is_const: predicate is_default: predicate @@ -338,11 +352,17 @@ class Impl(Item, ): visibility: optional["Visibility"] | child where_clause: optional["WhereClause"] | child +class ImplRestriction(AstNode, ): + visibility_inner: optional["VisibilityInner"] | child + class ImplTraitTypeRepr(TypeRepr, ): type_bound_list: optional["TypeBoundList"] | child +class IncludeBytesExpr(Expr, ): + pass + class IndexExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child base: optional["Expr"] | child index: optional["Expr"] | child @@ -350,7 +370,7 @@ class InferTypeRepr(TypeRepr, ): pass class ItemList(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child items: list["Item"] | child class KeyValueMeta(Meta, ): @@ -364,12 +384,12 @@ class LetElse(AstNode, ): block_expr: optional["BlockExpr"] | child class LetExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child scrutinee: optional["Expr"] | child pat: optional["Pat"] | child class LetStmt(Stmt, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child initializer: optional["Expr"] | child let_else: optional["LetElse"] | child pat: optional["Pat"] | child @@ -382,30 +402,30 @@ class LifetimeArg(GenericArg, ): lifetime: optional["Lifetime"] | child class LifetimeParam(GenericParam, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child lifetime: optional["Lifetime"] | child type_bound_list: optional["TypeBoundList"] | child class LiteralExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child text_value: optional[string] class LiteralPat(Pat, ): literal: optional["LiteralExpr"] | child class LoopExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child label: optional["Label"] | child loop_body: optional["BlockExpr"] | child class MacroCall(AssocItem, ExternItem, Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child path: optional["Path"] | child token_tree: optional["TokenTree"] | child class MacroDef(Item, ): args: optional["TokenTree"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child body: optional["TokenTree"] | child name: optional["Name"] | child visibility: optional["Visibility"] | child @@ -420,7 +440,7 @@ class MacroPat(Pat, ): macro_call: optional["MacroCall"] | child class MacroRules(Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child name: optional["Name"] | child token_tree: optional["TokenTree"] | child visibility: optional["Visibility"] | child @@ -429,17 +449,17 @@ class MacroTypeRepr(TypeRepr, ): macro_call: optional["MacroCall"] | child class MatchArm(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child guard: optional["MatchGuard"] | child pat: optional["Pat"] | child class MatchArmList(AstNode, ): arms: list["MatchArm"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child class MatchExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child scrutinee: optional["Expr"] | child match_arm_list: optional["MatchArmList"] | child @@ -448,17 +468,21 @@ class MatchGuard(AstNode, ): class MethodCallExpr(Expr, ): arg_list: optional["ArgList"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child generic_arg_list: optional["GenericArgList"] | child identifier: optional["NameRef"] | child receiver: optional["Expr"] | child class Module(Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child item_list: optional["ItemList"] | child name: optional["Name"] | child visibility: optional["Visibility"] | child +class MutRestriction(AstNode, ): + is_mut: predicate + visibility_inner: optional["VisibilityInner"] | child + class Name(AstNode, ): text: optional[string] @@ -468,8 +492,11 @@ class NameRef(UseBoundGenericArg, ): class NeverTypeRepr(TypeRepr, ): pass +class NotNull(Pat, ): + pass + class OffsetOfExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child fields: list["NameRef"] | child type_repr: optional["TypeRepr"] | child @@ -477,7 +504,7 @@ class OrPat(Pat, ): pats: list["Pat"] | child class Param(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child pat: optional["Pat"] | child type_repr: optional["TypeRepr"] | child @@ -486,7 +513,7 @@ class ParamList(AstNode, ): self_param: optional["SelfParam"] | child class ParenExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child class ParenPat(Pat, ): @@ -503,7 +530,7 @@ class Path(AstNode, ): segment: optional["PathSegment"] | child class PathExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child path: optional["Path"] | child class PathMeta(Meta, ): @@ -522,8 +549,12 @@ class PathSegment(AstNode, ): class PathTypeRepr(TypeRepr, ): path: optional["Path"] | child +class PatternTypeRepr(TypeRepr, ): + pat: optional["Pat"] | child + type_repr: optional["TypeRepr"] | child + class PrefixExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child operator_name: optional[string] @@ -533,7 +564,7 @@ class PtrTypeRepr(TypeRepr, ): type_repr: optional["TypeRepr"] | child class RangeExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child end: optional["Expr"] | child operator_name: optional[string] start: optional["Expr"] | child @@ -548,19 +579,20 @@ class StructExpr(Expr, ): struct_expr_field_list: optional["StructExprFieldList"] | child class StructExprField(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child identifier: optional["NameRef"] | child class StructExprFieldList(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child fields: list["StructExprField"] | child spread: optional["Expr"] | child class StructField(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child default_val: optional["ConstArg"] | child is_unsafe: predicate + mut_restriction: optional["MutRestriction"] | child name: optional["Name"] | child type_repr: optional["TypeRepr"] | child visibility: optional["Visibility"] | child @@ -573,7 +605,7 @@ class StructPat(Pat, ): struct_pat_field_list: optional["StructPatFieldList"] | child class StructPatField(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child identifier: optional["NameRef"] | child pat: optional["Pat"] | child @@ -582,7 +614,7 @@ class StructPatFieldList(AstNode, ): rest_pat: optional["RestPat"] | child class RefExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child is_const: predicate is_mut: predicate @@ -601,20 +633,20 @@ class Rename(AstNode, ): name: optional["Name"] | child class RestPat(Pat, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child class RetTypeRepr(AstNode, ): type_repr: optional["TypeRepr"] | child class ReturnExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child class ReturnTypeSyntax(AstNode, ): pass class SelfParam(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child is_ref: predicate is_mut: predicate lifetime: optional["Lifetime"] | child @@ -628,11 +660,11 @@ class SliceTypeRepr(TypeRepr, ): type_repr: optional["TypeRepr"] | child class SourceFile(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child items: list["Item"] | child class Static(ExternItem, Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child body: optional["Expr"] | child is_mut: predicate is_static: predicate @@ -642,12 +674,12 @@ class Static(ExternItem, Item, ): visibility: optional["Visibility"] | child class StmtList(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child statements: list["Stmt"] | child tail_expr: optional["Expr"] | child class Struct(TypeItem, Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child field_list: optional["FieldList"] | child generic_param_list: optional["GenericParamList"] | child name: optional["Name"] | child @@ -663,8 +695,9 @@ class TokenTreeMeta(Meta, ): class Trait(Item, ): assoc_item_list: optional["AssocItemList"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child generic_param_list: optional["GenericParamList"] | child + impl_restriction: optional["ImplRestriction"] | child is_auto: predicate is_unsafe: predicate name: optional["Name"] | child @@ -677,15 +710,16 @@ class TryBlockModifier(AstNode, ): type_repr: optional["TypeRepr"] | child class TryExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child class TupleExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child fields: list["Expr"] | child class TupleField(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child + mut_restriction: optional["MutRestriction"] | child type_repr: optional["TypeRepr"] | child visibility: optional["Visibility"] | child @@ -703,7 +737,7 @@ class TupleTypeRepr(TypeRepr, ): fields: list["TypeRepr"] | child class TypeAlias(AssocItem, ExternItem, Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child generic_param_list: optional["GenericParamList"] | child is_default: predicate name: optional["Name"] | child @@ -727,16 +761,16 @@ class TypeBoundList(AstNode, ): bounds: list["TypeBound"] | child class TypeParam(GenericParam, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child default_type: optional["TypeRepr"] | child name: optional["Name"] | child type_bound_list: optional["TypeBoundList"] | child class UnderscoreExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child class Union(TypeItem, Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child generic_param_list: optional["GenericParamList"] | child name: optional["Name"] | child struct_field_list: optional["StructFieldList"] | child @@ -748,7 +782,7 @@ class UnsafeMeta(Meta, ): meta: optional["Meta"] | child class Use(Item, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child use_tree: optional["UseTree"] | child visibility: optional["Visibility"] | child @@ -765,7 +799,7 @@ class UseTreeList(AstNode, ): use_trees: list["UseTree"] | child class Variant(AstNode, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child const_arg: optional["ConstArg"] | child field_list: optional["FieldList"] | child name: optional["Name"] | child @@ -775,6 +809,9 @@ class VariantList(AstNode, ): variants: list["Variant"] | child class Visibility(AstNode, ): + visibility_inner: optional["VisibilityInner"] | child + +class VisibilityInner(AstNode, ): path: optional["Path"] | child class WhereClause(AstNode, ): @@ -787,7 +824,7 @@ class WherePred(AstNode, ): type_bound_list: optional["TypeBoundList"] | child class WhileExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child condition: optional["Expr"] | child label: optional["Label"] | child loop_body: optional["BlockExpr"] | child @@ -796,9 +833,9 @@ class WildcardPat(Pat, ): pass class YeetExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child class YieldExpr(Expr, ): - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child expr: optional["Expr"] | child diff --git a/rust/schema/prelude.py b/rust/schema/prelude.py index 9ca62f33acc1..07ee6a92a80f 100644 --- a/rust/schema/prelude.py +++ b/rust/schema/prelude.py @@ -6,6 +6,7 @@ File = imported("File", "codeql.files.FileSystem") +@ql.to_string_impl_from_primary_class(True) @qltest.skip class Element: pass @@ -35,6 +36,7 @@ class Comment(Token): ```rust // this is a comment /// This is a doc comment + fn documented() {} ``` """ parent: AstNode @@ -72,7 +74,7 @@ class Callable(AstNode): A callable. Either a `Function` or a `ClosureExpr`. """ param_list: optional["ParamList"] | child - attrs: list["Attr"] | child + attrs: list["AnyAttr"] | child params: list["Param"] | synth body: optional["Expr"] | synth diff --git a/rust/scripts/update_rust_analyzer.py b/rust/scripts/update_rust_analyzer.py new file mode 100755 index 000000000000..52a0ce328c98 --- /dev/null +++ b/rust/scripts/update_rust_analyzer.py @@ -0,0 +1,282 @@ +#!/usr/bin/env python3 + +import base64 +import hashlib +import itertools +import json +import re +import shlex +import subprocess +import sys +import tomllib +import urllib.request +from pathlib import Path + + +REPO_ROOT = Path(__file__).resolve().parents[2] +MODULE_BAZEL = REPO_ROOT / "MODULE.bazel" +RUST_EXTRACTOR_MANIFEST = REPO_ROOT / "rust/extractor/Cargo.toml" + +# The files that mention the fixed Rust toolchain version +TOOLCHAIN_RS = REPO_ROOT / "rust/extractor/src/toolchain.rs" +INTEGRATION_TEST_CONFTEST = REPO_ROOT / "rust/ql/integration-tests/conftest.py" +QL_TEST_SETUP = REPO_ROOT / "rust/ql/test/setup.sh" + + +def print_step(number: int, description: str) -> None: + print(f"\nStep {number}: {description}", flush=True) + + +def run(*command: str) -> None: + print(f"+ {shlex.join(command)}", flush=True) + subprocess.run(command, cwd=REPO_ROOT, check=True) + + +def run_codegen() -> None: + try: + run("bazel", "run", "//rust/codegen") + except subprocess.CalledProcessError as error: + print( + "\nCodegen failed. Carry out the instructions from step 5 in rust/updating-rust-analyzer.md manually.", + file=sys.stderr, + flush=True, + ) + raise SystemExit(error.returncode) from None + + +def get_min_rust_analyzer_version(manifest: str) -> str: + """Get the minimum version of all ra_ap dependencies from `Cargo.toml`.""" + dependencies = tomllib.loads(manifest)["dependencies"] + return min( + ( + version + for name, version in dependencies.items() + if name.startswith("ra_ap_") + ), + key=lambda value: tuple(map(int, value.split("."))), + ) + + +def fetch(url: str) -> bytes: + request = urllib.request.Request( + url, + headers={"User-Agent": "github/codeql rust-analyzer updater"}, + ) + with urllib.request.urlopen(request) as response: + return response.read() + + +def get_rust_analyzer_crate_release_date(rust_analyzer_version: str) -> str: + """Get the creation date of a rust-analyzer crate version.""" + crate_url = f"https://crates.io/api/v1/crates/ra_ap_syntax/{rust_analyzer_version}" + crate = json.loads(fetch(crate_url)) + return crate["version"]["created_at"].split("T")[0] + + +def get_rust_analyzer_release_tag(rust_analyzer_version: str) -> str: + """ + Get the latest rust-analyzer release tag in the git repository before or at + the crate publication. The returned string has the format `YYYY-MM-DD.N` + where the `.N` part is optional. + + Empirically, the rust-analyzer crates are published after the corresponding + git tag. We hence look for the latest git tag that is before or at the crate + publication date. + """ + crate_release_date = get_rust_analyzer_crate_release_date(rust_analyzer_version) + + for page in itertools.count(1): + tags_url = ( + "https://api.github.com/repos/rust-lang/rust-analyzer/tags" + f"?per_page=100&page={page}" + ) + tags = json.loads(fetch(tags_url)) + if not tags: + raise RuntimeError( + "could not find a rust-analyzer release tag published no later than " + f"ra_ap_syntax {rust_analyzer_version}" + ) + + for tag in tags: + name = tag["name"] + match = re.fullmatch(r"(\d{4}-\d{2}-\d{2})(?:\.(\d+))?", name) + if match and match[1] <= crate_release_date: + return name + + +def get_rust_analyzer_source_integrity(release_tag: str) -> str: + """Download and compute the integrity of a rust-analyzer source archive.""" + archive_url = ( + "https://github.com/rust-lang/rust-analyzer/archive/refs/tags/" + f"{release_tag}.tar.gz" + ) + archive = fetch(archive_url) + return "sha256-" + base64.b64encode(hashlib.sha256(archive).digest()).decode() + + +def update_rust_analyzer_sources( + rust_analyzer_release_tag: str, integrity: str +) -> None: + """ + Update the rust-analyzer source archive used by the AST generator. + + Concretely, this updates `RUST_ANALYZER_SRC_TAG` and + `RUST_ANALYZER_SRC_INTEGRITY` in the MODULE.bazel file. + """ + + module = MODULE_BAZEL.read_text() + module, tag_replacements = re.subn( + r'RUST_ANALYZER_SRC_TAG = "[^"]+"', + f'RUST_ANALYZER_SRC_TAG = "{rust_analyzer_release_tag}"', + module, + ) + if tag_replacements != 1: + raise RuntimeError("expected exactly one RUST_ANALYZER_SRC_TAG assignment") + module, integrity_replacements = re.subn( + r'RUST_ANALYZER_SRC_INTEGRITY = "[^"]+"', + f'RUST_ANALYZER_SRC_INTEGRITY = "{integrity}"', + module, + ) + if integrity_replacements != 1: + raise RuntimeError( + "expected exactly one RUST_ANALYZER_SRC_INTEGRITY assignment" + ) + MODULE_BAZEL.write_text(module) + + +def get_compatible_rust_toolchain(rust_analyzer_release_tag: str) -> str: + """Get the latest Rust toolchain released no later than rust-analyzer.""" + # Keep the `YYYY-MM-DD` part of the release tag, stripping off the optional + # incrementing suffix. + rust_analyzer_release = rust_analyzer_release_tag[:10] + + # `manifests.txt` is a list of all toolchains. The one we're interested in looks like + # ``` + # static.rust-lang.org/dist/YYYY-MM-DD/channel-rust-stable.toml + # ``` + # where `YYYY-MM-DD` is no later than the rust-analyzer release date. + manifests = ( + fetch("https://static.rust-lang.org/manifests.txt").decode().splitlines() + ) + rust_manifest = next( + manifest + for manifest in reversed(manifests) + if manifest.endswith("/channel-rust-stable.toml") + and manifest.split("/")[2] <= rust_analyzer_release + ) + manifest = tomllib.loads(fetch(f"https://{rust_manifest}").decode()) + # The version looks like `version = "0.99.0 (797e8a9bc 2026-08-05)"` - we only want the first part. + return manifest["pkg"]["rust"]["version"].split()[0] + + +def update_fixed_rust_toolchain_versions(version: str) -> None: + """Change the fixed toolchain in the places where it's hardcoded""" + toolchain_rs = TOOLCHAIN_RS.read_text() + prefix = 'const FIXED_RUST_TOOLCHAIN: &str = "' + old_version = toolchain_rs.split(prefix, 1)[1].split('"', 1)[0] + TOOLCHAIN_RS.write_text( + toolchain_rs.replace( + f'{prefix}{old_version}"', + f'{prefix}{version}"', + ) + ) + + for test_setup in (INTEGRATION_TEST_CONFTEST, QL_TEST_SETUP): + contents = test_setup.read_text() + test_setup.write_text( + contents.replace( + f"rustup toolchain install {old_version} ", + f"rustup toolchain install {version} ", + ) + ) + + +def align_rust_analyzer_versions(manifest: str) -> tuple[str, bool]: + """Align ra_ap dependency versions in a Cargo manifest. + + rust-analyzer crates may be published gradually, so this selects the newest + version that is available for every ra_ap dependency. + """ + dependencies = { + name: version + for name, version in tomllib.loads(manifest)["dependencies"].items() + if name.startswith("ra_ap_") + } + if len(set(dependencies.values())) == 1: + # All the `ra_ap_` dependencies agree + return manifest, False + + version = get_min_rust_analyzer_version(manifest) + + for name, old_version in dependencies.items(): + manifest = manifest.replace( + f'{name} = "{old_version}"', + f'{name} = "{version}"', + ) + return manifest, True + + +def commit_all(title: str) -> None: + run("git", "add", "--all") + run("git", "commit", "--no-verify", "--allow-empty", "-m", title) + + +def main() -> None: + status = subprocess.run( + ["git", "status", "--porcelain"], + cwd=REPO_ROOT, + check=True, + capture_output=True, + text=True, + ).stdout + if status: + raise RuntimeError("the working tree must be clean") + + print_step(1, "Update dependencies") + manifest = RUST_EXTRACTOR_MANIFEST.read_text() + old_rust_analyzer_version = get_min_rust_analyzer_version(manifest) + run("cargo", "upgrade", "--incompatible", "--pinned") + # Re-read the (potentially) changed manifest + manifest = RUST_EXTRACTOR_MANIFEST.read_text() + new_rust_analyzer_version = get_min_rust_analyzer_version(manifest) + if new_rust_analyzer_version == old_rust_analyzer_version: + run("git", "restore", ".") + print("No new rust-analyzer version available.") + return + + rust_analyzer_release_tag = get_rust_analyzer_release_tag(new_rust_analyzer_version) + rust_analyzer_source_integrity = get_rust_analyzer_source_integrity( + rust_analyzer_release_tag + ) + + aligned_manifest, manifest_changed = align_rust_analyzer_versions(manifest) + if manifest_changed: + RUST_EXTRACTOR_MANIFEST.write_text(aligned_manifest) + run("cargo", "update") + commit_all("Cargo: Upgrade dependencies") + + print_step(2, "Update the rust-analyzer sources used by the AST generator") + update_rust_analyzer_sources( + rust_analyzer_release_tag, rust_analyzer_source_integrity + ) + commit_all("Rust: Update rust-analyzer sources") + + print_step(3, "Update the fixed Rust toolchain used by the extractor") + rust_toolchain = get_compatible_rust_toolchain(rust_analyzer_release_tag) + update_fixed_rust_toolchain_versions(rust_toolchain) + commit_all("Rust: Update fixed toolchain") + + print_step(4, "Regenerate vendored bazel files") + run("misc/bazel/3rdparty/update_tree_sitter_extractors_deps.sh") + commit_all("Bazel: Regenerate vendored cargo dependencies") + + print_step(5, "Run codegen") + run_codegen() + commit_all("Rust: Run codegen") + + print_step(6, "Try compiling") + run("bazel", "run", "//rust:install") + + +if __name__ == "__main__": + main() diff --git a/rust/tools/builtins/types.rs b/rust/tools/builtins/types.rs index d3fd06b21683..b45c7dff0904 100644 --- a/rust/tools/builtins/types.rs +++ b/rust/tools/builtins/types.rs @@ -70,3 +70,12 @@ struct Tuple12( T10, T11, ); + +// model unsized coercion (https://doc.rust-lang.org/reference/type-coercions.html#r-coerce.unsize.slice) +// as a `Deref` implementation in order to reuse type inference and data flow logic +impl std::ops::Deref for Array { + type Target = Slice; + fn deref(&self) -> &Slice { + // not a real implementation + } +} diff --git a/rust/updating-rust-analyzer.md b/rust/updating-rust-analyzer.md new file mode 100644 index 000000000000..5a1bd8c661a2 --- /dev/null +++ b/rust/updating-rust-analyzer.md @@ -0,0 +1,141 @@ +# Updating rust-analyzer + +Here's a rundown of the typical actions to perform to do a rust-analyzer (and +other dependencies) update. A one-time setup consists in installing +[`cargo-edit`](https://crates.io/crates/cargo-edit) with `cargo install +cargo-edit`. On Ubuntu that also requires `sudo apt install libssl-dev +pkg-config`. + +> [!TIP] +> All steps up to and including running `bazel run //rust:install` are (barring +> any errors) carried out by the script `rust/scripts/update_rust_analyzer.py`. +> Prefer using the script. + +1. Update dependencies. + 1. From the root of the `codeql` repo checkout, run a Cargo upgrade: + ``` + cargo upgrade --incompatible --pinned + ``` + 2. Look at a diff of the `Cargo.toml` files: if all `ra_ap_` prefixed + dependencies have been updated to the same number, go on to the next + step. Otherwise, it means the latest `rust-analyzer` update has not been + fully rolled out to all its crates in `crates.io`. _All `ra_ap_` versions + must agree!_ + Downgrade by hand to the minimum one you see, and run a `cargo update` + after that to fix the `Cargo.lock` file. + 3. Commit the changes, skipping `pre-commit` hooks if you have them enabled: + ``` + git commit -am 'Cargo: upgrade dependencies' --no-verify + ``` + +2. Update the rust-analyzer sources used by the AST generator. + + In `MODULE.bazel`, update `RUST_ANALYZER_SRC_TAG` to the release date of the + new `ra_ap_` crates and update `RUST_ANALYZER_SRC_INTEGRITY` with the + integrity of the corresponding source archive. + + Commit the changes: + `git commit -am 'Rust: Update rust-analyzer sources'` + +3. Update the fixed Rust toolchain used by the extractor. + + The version should be updated to the latest release that precedes the new + rust-analyzer version. + + Grepping for `FIXED_RUST_TOOLCHAIN` shows the places where this version is + written down. + + Commit the changes: `git commit -am 'Rust: Update fixed toolchain'` + +4. Regenerate vendored bazel files (these allow faster builds, particularly on + CI where it has to start from scratch each time), commit the changes: + ``` + misc/bazel/3rdparty/update_tree_sitter_extractors_deps.sh + git add . + git commit -am 'Bazel: regenerate vendored cargo dependencies' --no-verify + ``` + > [!NOTE] + > If in step 6 you also bump `rules_rust` or the Rust toolchain used for + > building the extractor, those changes invalidate _all_ vendored files + > (including the Python ones under `misc/bazel/3rdparty/py_deps`), not just + > the tree-sitter ones. In that case run the umbrella script + > `misc/bazel/3rdparty/update_cargo_deps.sh` instead (it regenerates both + > `py_deps` and `tree_sitter_extractors_deps`, and runs `bazel mod tidy`), + > then commit all the regenerated files. + +5. Run codegen + ``` + bazel run //rust/codegen + ``` + If codegen fails, other changes might be necessary. For instance, adaptations + to `annotations.py`. Make these changes in separate commits. + + Once codegen succeeds commit only the changes made by codegen with + ``` + git commit -am 'Rust: Run codegen' + ``` + + Take note whether `rust/schema/ast.py` was changed. That might need tweaks, + new tests and/or downgrade/upgrade scripts down the line. + + +6. Try compiling + ``` + bazel run //rust:install + ``` + * if it succeeds: good! You can move on to the next step. + * if it fails while compiling rust-analyzer dependencies, you need to update + the Rust toolchain. Sometimes the error will tell you so explicitly, but + it may happen that the error is more obscure. To update the rust + toolchain: + * you will need to open a PR on the internal repo updating `RUST_VERSION` + in `MODULE.bazel`. In general you can have this merged independently of + the changes in `codeql`. + * in `codeql`, update both `RUST_VERSION` in `MODULE.bazel` _and_ + `rust-toolchain.toml` files. You may want to also update the nightly + toolchain in `rust/extractor/src/nightly-toolchain/rust-toolchain.toml` + to a more recent date while you're at it. + * a toolchain and/or `rules_rust` bump invalidates the vendored files, so + re-run `misc/bazel/3rdparty/update_cargo_deps.sh` (see the note in step + 4) and commit the regenerated files. + * if it fails while compiling rust extractor code, you will need to adapt it + to the new library version. + * for example updating annotations in `annotations.py`, adding / removing + generated tests. + + If you had to do any changes, commit them. If you updated the rust + toolchain, running `rust/lint.py` might reformat or apply new lints to the + code. + +7. Update `.expected` files by running: + ``` + codeql test run --learn --search-path=rust/extractor-pack:. \ + --consistency-queries=rust/ql/consistency-queries rust/ql/test + ``` + The search path selects the newly built extractor from step 6. + + If there are changes, commit the updated expectations: + ``` + git add 'rust/ql/test/**/*.expected' + git commit -m 'Rust: Update test expectations' + ``` + +8. Check the `.expected` files for `testFailures` and fix the underlying + problems. + + For each separate problem address the issue, regenerate the `.expected` + files with the command from step 7, and create a commit. + + Repeat until no rows under `testFailures` remain and the tests pass. + +9. If in step 5 the schema was updated, add upgrade/downgrade scripts and a + change note. This is best done last to reduce the chance of merge conflicts + (none of the other testing depends on having upgrade and downgrade scripts + in place). See [Upgrading a language database + schema](docs/prepare-db-upgrade.md). + +10. Create a PR with the changes thus far. + +11. Check with CI if everything is in order. + +12. Run DCA with database caching disabled. Iterate on the code if needed. diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index e399ac467e78..ae5ae1af6662 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.0.34 + +No user-facing changes. + +## 0.0.33 + +No user-facing changes. + +## 0.0.32 + +No user-facing changes. + ## 0.0.31 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.32.md b/shared/concepts/change-notes/released/0.0.32.md new file mode 100644 index 000000000000..c390443f09a3 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.32.md @@ -0,0 +1,3 @@ +## 0.0.32 + +No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.33.md b/shared/concepts/change-notes/released/0.0.33.md new file mode 100644 index 000000000000..0b46f1130fac --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.33.md @@ -0,0 +1,3 @@ +## 0.0.33 + +No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.34.md b/shared/concepts/change-notes/released/0.0.34.md new file mode 100644 index 000000000000..d58affae3891 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.34.md @@ -0,0 +1,3 @@ +## 0.0.34 + +No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index 54b504d06ecb..6fb3b6253bb9 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.31 +lastReleaseVersion: 0.0.34 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index f5005081b57a..45c755772ffd 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.31 +version: 0.0.34 groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 5edd14954f3e..9dd8e5ba57f0 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.0.44 + +No user-facing changes. + +## 2.0.43 + +No user-facing changes. + +## 2.0.42 + +No user-facing changes. + ## 2.0.41 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.42.md b/shared/controlflow/change-notes/released/2.0.42.md new file mode 100644 index 000000000000..85ba02702b9f --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.42.md @@ -0,0 +1,3 @@ +## 2.0.42 + +No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.43.md b/shared/controlflow/change-notes/released/2.0.43.md new file mode 100644 index 000000000000..69732e6e3060 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.43.md @@ -0,0 +1,3 @@ +## 2.0.43 + +No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.44.md b/shared/controlflow/change-notes/released/2.0.44.md new file mode 100644 index 000000000000..47addacab148 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.44.md @@ -0,0 +1,3 @@ +## 2.0.44 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index dcd61b02de59..2032d0ef8b3f 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.41 +lastReleaseVersion: 2.0.44 diff --git a/shared/controlflow/codeql/controlflow/ControlFlowGraph.qll b/shared/controlflow/codeql/controlflow/ControlFlowGraph.qll index c3f9868a638a..99c7db99416b 100644 --- a/shared/controlflow/codeql/controlflow/ControlFlowGraph.qll +++ b/shared/controlflow/codeql/controlflow/ControlFlowGraph.qll @@ -71,6 +71,12 @@ signature module AstSig { /** A statement. */ class Stmt extends AstNode; + /** A labeled statement. */ + class LabeledStmt extends Stmt { + /** Gets the statement carrying the label. */ + Stmt getStmt(); + } + /** An expression. */ class Expr extends AstNode; @@ -284,6 +290,14 @@ signature module AstSig { Stmt getStmt(int index); } + /** + * Gets the initializer of `switch` statement `switch`, if any. + * + * Only some languages (e.g. Go) support an initializer that is evaluated + * before the switch expression. + */ + default AstNode getSwitchInit(Switch switch) { none() } + /** A case in a switch. */ class Case extends AstNode { /** Gets the pattern being matched by this case at the specified (zero-based) `index`. */ @@ -431,10 +445,7 @@ module Make0 Ast> { string toString(); } - /** - * Holds if the node `n` has the label `l`. For example, a label in a goto - * statement or a goto target. - */ + /** Holds if the node `n` directly has the label `l`. */ default predicate hasLabel(AstNode n, Label l) { none() } /** @@ -1088,7 +1099,7 @@ module Make0 Ast> { } /** The `PreControlFlowNode` at the entry point of a callable. */ - final private class EntryNodeImpl extends NodeImpl, TEntryNode { + final class EntryNodeImpl extends NodeImpl, TEntryNode { private Callable c; EntryNodeImpl() { this = TEntryNode(c) } @@ -1132,7 +1143,7 @@ module Make0 Ast> { } /** A control flow node indicating exceptional termination of a callable. */ - final private class ExceptionalExitNodeImpl extends AnnotatedExitNodeImpl { + final class ExceptionalExitNodeImpl extends AnnotatedExitNodeImpl { ExceptionalExitNodeImpl() { this = TAnnotatedExitNode(_, false) } } @@ -1187,9 +1198,17 @@ module Make0 Ast> { } signature module InputSig2 { + /** + * Holds if control flow is constructed and reachability starts at the + * entry of `callable` in this stage. + * By default, all callable entries are included. Restricting this is useful + * for auxiliary CFG stages that are only needed for selected callables. + */ + default predicate includeCallableEntry(Callable callable) { any() } + /** * Holds if `ast` may result in an abrupt completion `c` originating at - * `n`. The boolean `always` indicates whether the abrupt completion + * `n`. The boolean `always` indicates whether the abrupt completion * always occurs or whether `n` may also terminate normally. * * This predicate is only relevant for AST constructs that are not already @@ -1266,9 +1285,9 @@ module Make0 Ast> { ) } - private Stmt getAStmtInBlock(AstNode block) { - result = block.(BlockStmt).getStmt(_) or - result = block.(Switch).getStmt(_) + /** Holds if `n` is marked with a `LabeledStmt` with label `l`. */ + private predicate hasEnclosingLabel(AstNode n, Input1::Label l) { + exists(LabeledStmt labeled | labeled.getStmt+() = n and Input1::hasLabel(labeled, l)) } private predicate callableHasParamDefault(Callable c, Expr defaultValue) { @@ -1283,7 +1302,8 @@ module Make0 Ast> { Input2::endAbruptCompletion(ast, n, c) or exists(Callable callable | - callableHasBodyPart(callable, ast) or callableHasParamDefault(callable, ast) + not Input2::endAbruptCompletion(ast, _, c) and + (callableHasBodyPart(callable, ast) or callableHasParamDefault(callable, ast)) | c.getSuccessorType() instanceof ReturnSuccessor and n.(NormalExitNodeImpl).getEnclosingCallable() = callable @@ -1308,7 +1328,7 @@ module Make0 Ast> { or exists(Input1::Label l | c.hasLabel(l) and - Input1::hasLabel(loop, l) + (Input1::hasLabel(loop, l) or hasEnclosingLabel(loop, l)) ) ) ) @@ -1348,16 +1368,24 @@ module Make0 Ast> { or exists(Input1::Label l | c.hasLabel(l) and - Input1::hasLabel(switch, l) + (Input1::hasLabel(switch, l) or hasEnclosingLabel(switch, l)) ) ) or - exists(AstNode block, Input1::Label l, Stmt lblstmt | - ast = getAStmtInBlock(block) and - lblstmt = getAStmtInBlock(block) and - not lblstmt instanceof GotoStmt and - Input1::hasLabel(pragma[only_bind_into](lblstmt), l) and - n.isBefore(lblstmt) and + exists(LabeledStmt target, Input1::Label l | + ast = target.getStmt() and + Input1::hasLabel(target, l) and + n.isAfter(target) and + c.getSuccessorType() instanceof BreakSuccessor and + c.hasLabel(l) + ) + or + exists(AstNode parent, LabeledStmt root, LabeledStmt target, Input1::Label l | + ast = getChild(parent, _) and + root = getChild(parent, _) and + root.getStmt*() = target and + Input1::hasLabel(pragma[only_bind_into](target), l) and + n.isBefore(target) and c.getSuccessorType() instanceof GotoSuccessor and c.hasLabel(l) ) @@ -1826,14 +1854,30 @@ module Make0 Ast> { exists(Switch switch, PreControlFlowNode firstCase | firstCase.isBefore(getRankedCaseCfgOrder(switch, 1)) or - not exists(getRankedCaseCfgOrder(switch, _)) and firstCase.isAfter(switch) + not exists(getRankedCaseCfgOrder(switch, _)) and + not simpleLeafNode(switch) and + firstCase.isAfter(switch) | n1.isBefore(switch) and - n2.isBefore(switch.getExpr()) + ( + n2.isBefore(getSwitchInit(switch)) + or + not exists(getSwitchInit(switch)) and + ( + n2.isBefore(switch.getExpr()) + or + not exists(switch.getExpr()) and + n2 = firstCase + ) + ) or - n1.isBefore(switch) and - not exists(switch.getExpr()) and - n2 = firstCase + n1.isAfter(getSwitchInit(switch)) and + ( + n2.isBefore(switch.getExpr()) + or + not exists(switch.getExpr()) and + n2 = firstCase + ) or n1.isAfter(switch.getExpr()) and n2 = firstCase @@ -1904,6 +1948,7 @@ module Make0 Ast> { */ private predicate defaultCfg(AstNode ast) { hasCfg(ast) and + Input2::includeCallableEntry(getEnclosingCallable(ast)) and not explicitStep(any(PreControlFlowNode n | n.isBefore(ast)), _) } @@ -1955,7 +2000,8 @@ module Make0 Ast> { /** Holds if there is a local non-abrupt step from `n1` to `n2`. */ private predicate step(PreControlFlowNode n1, PreControlFlowNode n2) { - explicitStep(n1, n2) or defaultStep(n1, n2) + Input2::includeCallableEntry(n1.getEnclosingCallable()) and + (explicitStep(n1, n2) or defaultStep(n1, n2)) } /** @@ -1966,8 +2012,7 @@ module Make0 Ast> { // Require a predecessor as a coarse approximation of reachability. // In particular, this prevents a catch-all catch clause preceding a // finally block from adding exception edges out of the finally. - step(_, last) and - beginAbruptCompletion(ast, last, c, _) + step(_, last) and beginAbruptCompletion(ast, last, c, _) or exists(AstNode child | getChild(ast, _) = child and @@ -1990,17 +2035,20 @@ module Make0 Ast> { } private predicate preSucc(PreControlFlowNode n1, PreControlFlowNode n2, SuccessorType t) { - step(n1, n2) and n2 = TAfterValueNode(_, t) - or - step(n1, n2) and n2.(AdditionalNode).getSuccessorType() = t - or - step(n1, n2) and - not n2 instanceof AfterValueNode and - not n2 instanceof AdditionalNode and - t instanceof DirectSuccessor - or - exists(AstNode ast, AbruptCompletion c | - last(ast, n1, c) and endAbruptCompletion(ast, n2, c) and t = c.getSuccessorType() + Input2::includeCallableEntry(n1.getEnclosingCallable()) and + ( + step(n1, n2) and n2 = TAfterValueNode(_, t) + or + step(n1, n2) and n2.(AdditionalNode).getSuccessorType() = t + or + step(n1, n2) and + not n2 instanceof AfterValueNode and + not n2 instanceof AdditionalNode and + t instanceof DirectSuccessor + or + exists(AstNode ast, AbruptCompletion c | + last(ast, n1, c) and endAbruptCompletion(ast, n2, c) and t = c.getSuccessorType() + ) ) } @@ -2008,7 +2056,7 @@ module Make0 Ast> { cached private predicate reachable(PreControlFlowNode n) { Input1::cfgCachedStageRef() and - n instanceof EntryNodeImpl + Input2::includeCallableEntry(n.(EntryNodeImpl).getEnclosingCallable()) or exists(PreControlFlowNode mid | reachable(mid) and preSucc(mid, n, _)) } @@ -2208,13 +2256,22 @@ module Make0 Ast> { } } - module Cfg = BB::Make; + private module Cfg_ = BB::Make; + + /** Provides the control flow graph interfaces used by basic-block and inline CFG tests. */ + module Cfg implements BB::CfgSig, TestCfg::CfgSig { + import Cfg_ - private module CfgAlias = Cfg; + class AstNode = Ast::AstNode; - import CfgAlias + class Callable = Ast::Callable; + } + + import Cfg_ } + private import test.TestCfg as TestCfg + private module Additional { /* * CFG printing @@ -2236,6 +2293,18 @@ module Make0 Ast> { import Pp::PrintGraph + /* + * CFG testing + */ + + private module TestInput implements TestCfg::InputSig { + AstNode getParent(AstNode node) { node = getChild(result, _) } + + predicate getEnclosingCallable = Ast::getEnclosingCallable/1; + } + + module TestCfgInline = TestCfg::Make; + /** Provides a set of consistency queries. */ module Consistency { /** Holds if the consistency query `query` has `results` results. */ @@ -2286,7 +2355,7 @@ module Make0 Ast> { multipleConditionalSuccessorKinds(node, t1, t2, succ1, succ2) ) or - query = "directAndConditionalSuccessor" and + query = "directAndConditionalSuccessors" and results = strictcount(ControlFlowNode node, ConditionalSuccessor t1, DirectSuccessor t2, ControlFlowNode succ1, ControlFlowNode succ2 | @@ -2295,6 +2364,19 @@ module Make0 Ast> { or query = "selfLoop" and results = strictcount(ControlFlowNode node, SuccessorType t | selfLoop(node, t)) + or + query = "bodyPartNonOverlap" and + results = strictcount(Callable c | bodyPartNonOverlap(c)) + or + query = "parameterNonOverlap" and + results = strictcount(Callable c, Parameter p | parameterNonOverlap(c, p)) + or + query = "parameterEnclosingCallable" and + results = strictcount(Parameter p, Callable c | parameterEnclosingCallable(p, c)) + or + query = "multipleDefaultCases" and + results = + strictcount(Switch s, int defaultCases | multipleDefaultCases(s, defaultCases)) } /** @@ -2495,6 +2577,16 @@ module Make0 Ast> { p = callableGetParameter(c, _) and not c = getEnclosingCallable(p) } + + /** + * Holds if a switch `s` has multiple default cases. + * + * A well-formed switch statement should have at most one default case. + */ + query predicate multipleDefaultCases(Switch s, int defaultCases) { + defaultCases = strictcount(DefaultCase c | s.getCase(_) = c) and + defaultCases > 1 + } } } } diff --git a/shared/controlflow/codeql/controlflow/test/TestCfg.qll b/shared/controlflow/codeql/controlflow/test/TestCfg.qll new file mode 100644 index 000000000000..27ed56140e2f --- /dev/null +++ b/shared/controlflow/codeql/controlflow/test/TestCfg.qll @@ -0,0 +1,452 @@ +/** + * Provides query predicates for testing the CFG in an inline expectation qltest. + */ +overlay[local?] +module; + +private import codeql.controlflow.SuccessorType +private import codeql.util.Location + +signature module CfgSig { + /** An AST node. */ + class AstNode { + /** Gets a textual representation of this AST node. */ + string toString(); + + /** Gets the location of this AST node. */ + Location getLocation(); + } + + /** A callable, for example a function, method, constructor, or top-level script. */ + class Callable; + + /** 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(); + + /** Gets the basic block containing this control flow node. */ + BasicBlock getBasicBlock(); + + /** + * Holds if this is the unique control flow node that represents the + * given AST node. + */ + predicate injects(AstNode n); + + /** Gets the enclosing callable of this control flow node. */ + Callable getEnclosingCallable(); + } + + /** + * 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 location of this basic block. */ + Location getLocation(); + + /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */ + ControlFlowNode getNode(int pos); + + /** Gets an immediate successor of this basic block of a given type, if any. */ + BasicBlock getASuccessor(SuccessorType t); + + /** Gets the enclosing callable of this basic block. */ + Callable getEnclosingCallable(); + } +} + +signature class TypSig; + +signature module InputSig { + /** Gets the parent of `node`. */ + AstNode getParent(AstNode node); + + /** Gets the immediately enclosing callable that contains `node`. */ + Callable getEnclosingCallable(AstNode node); +} + +/** + * Constructs several query predicates for testing the CFG in an inline expectation qltest. + * + * The output is based on basic block slices, that is, block segments cut by line boundaries. + * Ordinary left-to-right intra-block control flow is elided, but everything else is represented. + * + * A nested module `BlockSlices` can be imported to dump all basic block slices. + */ +module Make Cfg, InputSig Input> +{ + private import Cfg + + /** + * Gets the rank of `n` within `bb` restricted to nodes that are canonical + * representatives of AST nodes. + */ + private int bbRank(ControlFlowNode n, BasicBlock bb) { + n = + rank[result](ControlFlowNode n0, int i | n0.injects(_) and bb.getNode(i) = n0 | n0 order by i) + } + + /** Gets the start line of `n`. */ + private int getLine(ControlFlowNode n) { n.getLocation().getStartLine() = result } + + /** Holds if `n` is the first node of a slice of `bb` at the given line. */ + private predicate sliceStart(int line, ControlFlowNode n, BasicBlock bb) { + line = getLine(n) and + 1 = bbRank(n, bb) + or + exists(ControlFlowNode n0 | + line = getLine(n) and + bbRank(n0, bb) + 1 = bbRank(n, bb) and + getLine(n0) != line + ) + } + + private newtype TSlice = + TMkSlice(int line, ControlFlowNode n, BasicBlock bb) { sliceStart(line, n, bb) } + + /** A slice of a basic block at a specific line. */ + private class Slice extends TSlice { + private int line; + private ControlFlowNode start; + private BasicBlock bb; + + Slice() { this = TMkSlice(line, start, bb) } + + string toString() { result = start.toString() } + + int getLine() { result = line } + + ControlFlowNode getNode(int i) { + i = 0 and result = start + or + bbRank(this.getNode(i - 1), bb) + 1 = bbRank(result, bb) and + not sliceStart(_, result, bb) + } + + ControlFlowNode getLast() { + exists(int i | result = this.getNode(i) and not exists(this.getNode(i + 1))) + } + + predicate step(ControlFlowNode n1, ControlFlowNode n2) { + exists(int i | n1 = this.getNode(i) and n2 = this.getNode(i + 1)) + } + } + + /** + * A direction in the location-induced AST restricted to a single line, that + * is, the tree arising from location-nesting. + * + * - `Up` and `Down` indicate location nesting. + * - `Right` indicates a non-overlapping location to the right. + * - `Id` indicates the same location. + * - `Other` most likely indicates a non-overlapping location to the left, + * but remains a catch-all for any other case. + */ + private newtype Dir = + Down() or + Up() or + Right() or + Id() or + Other() + + /** + * Holds if `n1` steps to `n2` within a basic block line slice and that the + * corresponding AST nodes are related with one being a transitive parent of + * the other. The direction in the AST is given by `dir`. + */ + private predicate astUpDownStep(ControlFlowNode n1, ControlFlowNode n2, Dir dir) { + exists(AstNode a1, AstNode a2 | + n1.injects(a1) and + n2.injects(a2) and + any(Slice s).step(n1, n2) + | + if Input::getParent+(a1) = a2 + then dir = Up() + else + if Input::getParent+(a2) = a1 + then dir = Down() + else none() + ) + } + + bindingset[l1, l2] + pragma[inline_late] + private predicate endsLessThan(Location l1, Location l2) { + l1.getEndLine() < l2.getEndLine() + or + l1.getEndLine() = l2.getEndLine() and + l1.getEndColumn() <= l2.getEndColumn() + } + + private predicate oneline(Location l) { l.getStartLine() = l.getEndLine() } + + /** + * Holds if `n1` steps to `n2` within a basic block line slice `slice` and + * that the step in locations is given by `dir`. Some identical locations may + * be further resolved by peeking at the AST structure. + */ + private predicate singleLineBlockStep(Slice slice, ControlFlowNode n1, ControlFlowNode n2, Dir dir) { + slice.step(n1, n2) and + exists(Location l1, Location l2 | n1.getLocation() = l1 and n2.getLocation() = l2 | + if oneline(l1) and l1.getEndColumn() < l2.getStartColumn() + then dir = Right() + else + if + l1.getStartColumn() <= l2.getStartColumn() and + endsLessThan(l2, l1) and + l1 != l2 + then dir = Down() + else + if + l2.getStartColumn() <= l1.getStartColumn() and + endsLessThan(l1, l2) and + l1 != l2 + then dir = Up() + else + if l1 != l2 + then dir = Other() + else ( + astUpDownStep(n1, n2, dir) + or + not astUpDownStep(n1, n2, _) and dir = Id() + ) + ) + } + + /** + * Holds if the slice `slice` is simple left-to-right evaluation order. + * + * Both pre-order and post-order traversal is allowed and allowed to be + * mixed. `Up` indicates the last part of a post-order traversal, and `Down` + * indicates the first part of a pre-order traversal, so an `Up` step + * followed by a `Down` step is inconsistent with simple left-to-right + * evaluation order. + */ + private predicate simpleLeftToRightBlock(Slice slice) { + forall(ControlFlowNode n1, ControlFlowNode n2 | singleLineBlockStep(slice, n1, n2, _) | + exists(Dir dir | singleLineBlockStep(slice, n1, n2, dir) | + dir != Other() and + dir != Id() and + (dir = Up() implies not singleLineBlockStep(slice, n2, _, Down())) + ) + ) + } + + private string outgoingArrow(ControlFlowNode n) { + exists(Dir dir | singleLineBlockStep(_, n, _, dir) | + dir = Down() and result = " -V " + or + dir = Up() and result = " -^ " + or + dir = Right() and result = " -> " + or + dir = Id() and result = " -I " + or + dir = Other() and result = " -? " + ) + } + + /** Provides a query for dumping every line-based slice of a basic block. */ + module BlockSlices { + /** + * Holds if `blockSlice` is a string representation of a `line` slice of a + * basic block. `first` is the first node in the slice. + */ + query predicate blockSlice(int line, ControlFlowNode first, string blockSlice) { + exists(Slice slice | + first = slice.getNode(0) and + line = slice.getLine() and + blockSlice = + "'" + + strictconcat(ControlFlowNode n, int i, int j, string s | + slice.getNode(i) = n and + ( + j = 0 and s = n.toString() + or + j = 1 and s = outgoingArrow(n) + ) + | + s order by i, j + ) + "'" + ) + } + } + + final private class FinalControlFlowNode = ControlFlowNode; + + /** A `ControlFlowNode` with its location trimmed to a single line. */ + class ControlFlowNode1line extends FinalControlFlowNode { + /** + * Holds if this element is at the specified location. + * The location spans column `sc` of line `sl` to + * column `ec` of line `el` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo(string file, int sl, int sc, int el, int ec) { + exists(int el0, int ec0 | + super.getLocation().hasLocationInfo(file, sl, sc, el0, ec0) and + if el0 != sl then el = sl and ec = sc else (el = el0 and ec = ec0) + ) + } + } + + /** + * Holds if `blockSlice` is a string representation of a line slice of a + * basic block that does not follow simple left-to-right evaluation order. + * `first` is the first node in the slice. + */ + query predicate nonSimple(ControlFlowNode1line first, string blockSlice) { + exists(Slice slice | + BlockSlices::blockSlice(_, first, blockSlice) and + slice.getNode(0) = first and + not simpleLeftToRightBlock(slice) + ) + } + + /** + * Holds if some AST node on `line` has a corresponding CFG node within the + * callable `c`. + */ + private predicate lineHasCfg(int line, Callable c) { + exists(ControlFlowNode n, Location loc | + n.getLocation() = loc and + loc.getStartLine() = line and + oneline(loc) and + n.injects(_) and + n.getEnclosingCallable() = c + ) + } + + /** + * Holds if `n1` and `n2` are consecutive nodes in a basic block (skipping + * over non-AST nodes), but are located on different lines, such that `n1` + * and `n2` link two line slices of a basic block. Additionally, the link is + * required to be non-trivial in the sense that it either goes backwards (the + * `lineDelta` is negative) or it skips over some lines with other CFG nodes. + */ + private predicate nonTrivialSliceLink( + int line, ControlFlowNode n1, ControlFlowNode n2, int lineDelta + ) { + line = n1.getLocation().getStartLine() and + exists(BasicBlock bb | + n1 = any(Slice slice).getLast() and + bbRank(n1, bb) + 1 = bbRank(n2, bb) + ) and + lineDelta = n2.getLocation().getStartLine() - n1.getLocation().getStartLine() and + (lineDelta < 0 or lineHasCfg([line + 1 .. line + lineDelta - 1], n1.getEnclosingCallable())) + } + + bindingset[lineDelta] + private string ppDelta(int lineDelta) { + if lineDelta < 0 + then result = "(" + lineDelta.toString() + ")" + else result = "(+" + lineDelta.toString() + ")" + } + + /** + * Holds if the line slice ending at `n1` continues to another line slice via + * a non-trivial link. That is, it does not simply continue to the next line. + */ + query predicate bbContinues(ControlFlowNode1line n1, string link) { + exists(ControlFlowNode n2, int lineDelta | + nonTrivialSliceLink(_, n1, n2, lineDelta) and + link = "'" + n1.toString() + " goto " + n2.toString() + ppDelta(lineDelta) + "'" + ) + } + + /** + * Holds if `bb` only includes synthetic nodes, that is, no AST nodes are + * canonically represented in it. + */ + private predicate synthBlock(BasicBlock bb) { not exists(bbRank(_, bb)) } + + /** + * Holds if `bb1` transitively reaches `bb2` through a sequence of basic + * block steps where `bb2` is the only non-`synthBlock`. + */ + private predicate synthStep(BasicBlock bb1, BasicBlock bb2, string successorSuffix) { + bb1 = bb2 and successorSuffix = "" and not synthBlock(bb2) + or + exists(BasicBlock mid, SuccessorType t, string s | + synthBlock(bb1) and + bb1.getASuccessor(t) = mid and + synthStep(mid, bb2, s) and + if t instanceof DirectSuccessor + then successorSuffix = s + else successorSuffix = "," + t.toString() + s + ) + } + + /** + * Holds if there is a basic block step from `n1` to `n2` with successor + * type `t` originating at the given line. + */ + private predicate bbStep( + int line, ControlFlowNode n1, ControlFlowNode n2, SuccessorType t, string successorSuffix, + int lineDelta + ) { + exists(int last, BasicBlock bb1, BasicBlock mid, BasicBlock bb2 | + line = n1.getLocation().getStartLine() and + last = bbRank(n1, bb1) and + not last + 1 = bbRank(_, bb1) and + bb1.getASuccessor(t) = mid and + synthStep(mid, bb2, successorSuffix) and + 1 = bbRank(n2, bb2) and + lineDelta = n2.getLocation().getStartLine() - n1.getLocation().getStartLine() + ) + } + + /** + * Holds if there is a basic block step from `n1` described by `next`. + */ + query predicate bbStep(ControlFlowNode1line n1, string next) { + exists(ControlFlowNode n2, SuccessorType t, string s, int lineDelta | + bbStep(_, n1, n2, t, s, lineDelta) and + next = "'" + n1.toString() + " : " + t + s + " -> " + n2.toString() + ppDelta(lineDelta) + "'" + ) + } + + /** + * Holds if no CFG nodes exist in `c` on `line` and `a` is an AST node on + * that line. + */ + private predicate unreachable(int line, Callable c, AstNode a) { + oneline(a.getLocation()) and + a.getLocation().getStartLine() = line and + Input::getEnclosingCallable(a) = c and + not exists(ControlFlowNode n | + n.injects(_) and + oneline(n.getLocation()) and + n.getLocation().getStartLine() = line and + n.getEnclosingCallable() = c + ) + } + + /** + * Holds if no CFG nodes exist in `c` on `line` and `a` is the first AST + * node on that line. + */ + private predicate firstUnreachable(int line, Callable c, AstNode a) { + a = + min(AstNode a0, Location loc | + unreachable(line, c, a0) and loc = a0.getLocation() + | + a0 order by loc.getStartColumn(), loc.getEndColumn() + ) + } + + /** + * Holds if no CFG nodes exist in the callable of `a` on the same line as + * `a`, and `a` is the first AST node on that line. + */ + query predicate noCfg(AstNode a) { firstUnreachable(_, _, a) } +} diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index fd5bfcb78586..dd0448deaf45 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.41 +version: 2.0.44 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index f42b3d852dc7..b86157da7e4e 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.1.16 + +No user-facing changes. + +## 2.1.15 + +No user-facing changes. + +## 2.1.14 + +No user-facing changes. + ## 2.1.13 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.1.14.md b/shared/dataflow/change-notes/released/2.1.14.md new file mode 100644 index 000000000000..279c7d5ae20c --- /dev/null +++ b/shared/dataflow/change-notes/released/2.1.14.md @@ -0,0 +1,3 @@ +## 2.1.14 + +No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.1.15.md b/shared/dataflow/change-notes/released/2.1.15.md new file mode 100644 index 000000000000..cfd7b37ba5c6 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.1.15.md @@ -0,0 +1,3 @@ +## 2.1.15 + +No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.1.16.md b/shared/dataflow/change-notes/released/2.1.16.md new file mode 100644 index 000000000000..7f2c2e7f5eec --- /dev/null +++ b/shared/dataflow/change-notes/released/2.1.16.md @@ -0,0 +1,3 @@ +## 2.1.16 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 77d1ddbc8f91..95355cd1067e 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.13 +lastReleaseVersion: 2.1.16 diff --git a/shared/dataflow/codeql/dataflow/VariableCapture.qll b/shared/dataflow/codeql/dataflow/VariableCapture.qll index 0ba44be5ea1f..4b07725cd681 100644 --- a/shared/dataflow/codeql/dataflow/VariableCapture.qll +++ b/shared/dataflow/codeql/dataflow/VariableCapture.qll @@ -389,6 +389,8 @@ module Flow< msg = "Callable has multiple locations" and 2 <= strictcount(c.getLocation()) } + import SsaFlow::DfConsistency + query predicate consistencyOverview(string msg, int n) { uniqueToString(msg, n) or n = strictcount(BasicBlock bb | uniqueEnclosingCallable(bb, msg)) or @@ -481,6 +483,7 @@ module Flow< } /** Gets the enclosing callable of `ce`. */ + pragma[nomagic] private Callable closureExprGetEnclosingCallable(ClosureExpr ce) { exists(BasicBlock bb | ce.hasCfgNode(bb, _) and result = bb.getEnclosingCallable()) } @@ -494,6 +497,13 @@ module Flow< ) } + /** Holds if `outer` contains or equals `inner` */ + bindingset[outer, inner] + pragma[inline_late] + private predicate isEnclosingCallable(Callable outer, Callable inner) { + outer = callableGetEnclosingCallable*(inner) + } + /** * Gets a callable that contains `ce`, or a reference to `ce` into which `ce` could be inlined without * bringing any variables out of scope. @@ -510,7 +520,7 @@ module Flow< expr.hasCfgNode(bb, _) and result = bb.getEnclosingCallable() and // The reference to `ce` is allowed to occur in a more deeply nested context - closureExprGetEnclosingCallable(ce) = callableGetEnclosingCallable*(result) + isEnclosingCallable(closureExprGetEnclosingCallable(ce), result) ) } @@ -810,6 +820,16 @@ module Flow< or exists(SsaFlow::SsaNode n | this = TSynthSsa(n) and n.getSourceVariable() = TThis(_)) } + + predicate hasCfgNode(BasicBlock bb, int i) { + this = TSynthRead(_, bb, i, _) + or + this = TSynthThisQualifier(bb, i, _) + or + exists(SsaFlow::SsaNode n | + this = TSynthSsa(n) and n.getBasicBlock() = bb and n.getIndex() = i + ) + } } class ExprNode extends ClosureNode, TExprNode { diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 09e851c73c93..26c7531ecd48 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.1.13 +version: 2.1.16 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 0aa8d83bb6fa..361d3336397e 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.58.md b/shared/mad/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.59.md b/shared/mad/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.60.md b/shared/mad/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 08ea3909354f..e0eab12f1948 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.0.60 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index e350a3a2ddbd..ee119a14295e 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.57 +version: 1.0.60 groups: shared library: true dependencies: diff --git a/shared/namebinding/CHANGELOG.md b/shared/namebinding/CHANGELOG.md index ad2e63eb4709..a59e560c4155 100644 --- a/shared/namebinding/CHANGELOG.md +++ b/shared/namebinding/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.0.9 + +No user-facing changes. + +## 0.0.8 + +No user-facing changes. + +## 0.0.7 + +No user-facing changes. + ## 0.0.6 No user-facing changes. diff --git a/shared/namebinding/change-notes/released/0.0.7.md b/shared/namebinding/change-notes/released/0.0.7.md new file mode 100644 index 000000000000..84da6f18c42e --- /dev/null +++ b/shared/namebinding/change-notes/released/0.0.7.md @@ -0,0 +1,3 @@ +## 0.0.7 + +No user-facing changes. diff --git a/shared/namebinding/change-notes/released/0.0.8.md b/shared/namebinding/change-notes/released/0.0.8.md new file mode 100644 index 000000000000..6af2d954c099 --- /dev/null +++ b/shared/namebinding/change-notes/released/0.0.8.md @@ -0,0 +1,3 @@ +## 0.0.8 + +No user-facing changes. diff --git a/shared/namebinding/change-notes/released/0.0.9.md b/shared/namebinding/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/shared/namebinding/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/shared/namebinding/codeql-pack.release.yml b/shared/namebinding/codeql-pack.release.yml index cf398ce02aa4..ecdd64fbab86 100644 --- a/shared/namebinding/codeql-pack.release.yml +++ b/shared/namebinding/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.6 +lastReleaseVersion: 0.0.9 diff --git a/shared/namebinding/codeql/namebinding/LocalNameBinding.qll b/shared/namebinding/codeql/namebinding/LocalNameBinding.qll index 4a9c5b61db92..2dd12bbc8abc 100644 --- a/shared/namebinding/codeql/namebinding/LocalNameBinding.qll +++ b/shared/namebinding/codeql/namebinding/LocalNameBinding.qll @@ -337,54 +337,91 @@ module LocalNameBinding ) } - private predicate accessCandInLookupScope(AstNode n, string name, Scope lookup) { - accessCand(n, name) and - ( - lookupStartsAt(n, lookup) - or - not lookupStartsAt(n, _) and - lookup = getEnclosingScope(n) - ) - } - - pragma[nomagic] - private predicate lookupInScope(string name, Scope lookup, Scope scope) { - accessCandInLookupScope(_, name, lookup) and - scope = lookup - or - exists(Scope mid | - lookupInScope(name, lookup, mid) and - not declInScope(name, mid) and - not isTopScope(mid) and - scope = getEnclosingScope(mid) - ) - } - private predicate declInScope(string name, AstNode scope) { declInScope(_, name, scope) or implicitDeclInScope(name, scope) } + signature predicate accessCandSig(AstNode n, string name); + /** - * Holds if `name`, when resolved from `lookup`, may resolve to one of the uncertain members of `scope`. + * Allows resolution of access candidates. + * + * This is instantiated once by the local name binding library itself in order to populate `LocalAccess`. + * It can be instantiated further by the client, to resolve additional lookups at a later evaluation stage. */ - pragma[nomagic] - private predicate lookupInUncertainScope(string name, Scope lookup, Scope scope) { - lookupInScope(name, lookup, scope) and - uncertainScope(scope) and - not declInScope(name, scope) + module ResolveAccesses { + private predicate accessCandInLookupScope(AstNode n, string name, Scope lookup) { + accessCandInput(n, name) and + ( + lookupStartsAt(n, lookup) + or + not lookupStartsAt(n, _) and + lookup = getEnclosingScope(n) + ) + } + + pragma[nomagic] + private predicate lookupInScope(string name, Scope lookup, Scope scope) { + accessCandInLookupScope(_, name, lookup) and + scope = lookup + or + exists(Scope mid | + lookupInScope(name, lookup, mid) and + not declInScope(name, mid) and + not isTopScope(mid) and + scope = getEnclosingScope(mid) + ) + } + + pragma[nomagic] + private predicate resolveInScope(string name, Scope lookup, Local l) { + exists(Scope scope | lookupInScope(name, lookup, scope) | + l = TExplicitLocal(_, name, scope) or + l = TImplicitLocal(name, scope) + ) + } + + /** Holds if `access` resolves to `l`. */ + predicate access(AstNode access, Local l) { + exists(Scope lookup, string name | + accessCandInLookupScope(access, name, lookup) and + resolveInScope(name, lookup, l) + ) + } + + /** + * Holds if `name`, when resolved from `lookup`, may resolve to one of the uncertain members of `scope`. + */ + pragma[nomagic] + private predicate lookupInUncertainScope(string name, Scope lookup, Scope scope) { + lookupInScope(name, lookup, scope) and + uncertainScope(scope) and + not declInScope(name, scope) + } + + /** + * Gets an uncertain scope in which the `accessCand` pair may resolve. + */ + AstNode getAnUncertainScope(AstNode access, string name) { + exists(Scope lookup | + accessCandInLookupScope(access, name, lookup) and + lookupInUncertainScope(name, lookup, result) + ) + } } - /** - * Gets an uncertain scope in which the `accessCand` pair may resolve. - */ - AstNode getAnUncertainScope(AstNode access, string name) { - exists(Scope lookup | - accessCandInLookupScope(access, name, lookup) and - lookupInUncertainScope(name, lookup, result) - ) + private module DefaultAccesses = ResolveAccesses; + + /** Holds if `access` resolves to `l`. */ + cached + private predicate access(AstNode access, Local l) { + CachedStage::ref() and + DefaultAccesses::access(access, l) } + predicate getAnUncertainScope = DefaultAccesses::getAnUncertainScope/2; + cached private newtype TLocal = TExplicitLocal(AstNode definingNode, string name, AstNode scope) { @@ -447,23 +484,10 @@ module LocalNameBinding override string getName() { result = name } override Location getLocation() { result = scope.getLocation() } - } - - pragma[nomagic] - private predicate resolveInScope(string name, Scope lookup, Local l) { - exists(Scope scope | lookupInScope(name, lookup, scope) | - l = TExplicitLocal(_, name, scope) or - l = TImplicitLocal(name, scope) - ) - } - cached - private predicate access(AstNode access, Local l) { - CachedStage::ref() and - exists(Scope lookup, string name | - accessCandInLookupScope(access, name, lookup) and - resolveInScope(name, lookup, l) - ) + /** Holds if this variable has the given name and scope. */ + pragma[nomagic] + predicate hasNameAndScope(string name_, AstNode scope_) { name = name_ and scope = scope_ } } /** A local access. */ diff --git a/shared/namebinding/qlpack.yml b/shared/namebinding/qlpack.yml index f18af62921c4..87320aec41a5 100644 --- a/shared/namebinding/qlpack.yml +++ b/shared/namebinding/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/namebinding -version: 0.0.6 +version: 0.0.9 groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index 4916c26d385a..6ab8c640bc68 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.0.38 + +No user-facing changes. + +## 0.0.37 + +No user-facing changes. + +## 0.0.36 + +No user-facing changes. + ## 0.0.35 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.36.md b/shared/quantum/change-notes/released/0.0.36.md new file mode 100644 index 000000000000..14c56d238da9 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.36.md @@ -0,0 +1,3 @@ +## 0.0.36 + +No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.37.md b/shared/quantum/change-notes/released/0.0.37.md new file mode 100644 index 000000000000..322aa16628ff --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.37.md @@ -0,0 +1,3 @@ +## 0.0.37 + +No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.38.md b/shared/quantum/change-notes/released/0.0.38.md new file mode 100644 index 000000000000..6aef3fb33021 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.38.md @@ -0,0 +1,3 @@ +## 0.0.38 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index 143c97892032..078a0e3aff01 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.35 +lastReleaseVersion: 0.0.38 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 83384e926bcb..b7550a6b5e65 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.35 +version: 0.0.38 groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 965a43bc55b1..8852bd7bf4d5 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.58.md b/shared/rangeanalysis/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.59.md b/shared/rangeanalysis/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.60.md b/shared/rangeanalysis/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 08ea3909354f..e0eab12f1948 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.0.60 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 2b0eb43866da..9f1e460102a5 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.57 +version: 1.0.60 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 20e772df81ad..0f5ef4917bfd 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.58.md b/shared/regex/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.59.md b/shared/regex/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.60.md b/shared/regex/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 08ea3909354f..e0eab12f1948 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.0.60 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index d4ad24634326..c7ecc960a971 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.57 +version: 1.0.60 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 1ed23b3a72b6..ea8ca229b29e 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.0.36 + +No user-facing changes. + +## 2.0.35 + +No user-facing changes. + +## 2.0.34 + +No user-facing changes. + ## 2.0.33 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.34.md b/shared/ssa/change-notes/released/2.0.34.md new file mode 100644 index 000000000000..fd170d38ce6d --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.34.md @@ -0,0 +1,3 @@ +## 2.0.34 + +No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.35.md b/shared/ssa/change-notes/released/2.0.35.md new file mode 100644 index 000000000000..526e1fc9f4ce --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.35.md @@ -0,0 +1,3 @@ +## 2.0.35 + +No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.36.md b/shared/ssa/change-notes/released/2.0.36.md new file mode 100644 index 000000000000..8acdd12366e4 --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.36.md @@ -0,0 +1,3 @@ +## 2.0.36 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 92e23200b4d6..7e4aaa0dd676 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.33 +lastReleaseVersion: 2.0.36 diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index b8fe058bc0f5..6cc685f8ef8b 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -1419,6 +1419,22 @@ module Make< */ default predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) { none() } + /** + * Holds if the post-update node corresponding to the given `read` occurs at `bb,i`, meaning + * it will propagate to the next use (strictly) after that point in the CFG. + * + * The default is to use the CFG node associated with the read itself, meaning the post-update + * always flows to the next use. The default can however lead to spurious flow in cases like: + * ``` + * x.f = foo(x) + * ``` + * where the post-update node for `x` on the left-hand side flows into the `x` on the right-hand side. + * + * NOTE: When implementing this predicate, you must ensure that `variableRead` is defined to contain + * a synthetic read of this variable at `bb,i`. + */ + default predicate postUpdateCfgNode(Expr read, BasicBlock bb, int i) { read.hasCfgNode(bb, i) } + /** An abstract value that a `Guard` may evaluate to. */ class GuardValue { /** Gets a textual representation of this value. */ @@ -1664,7 +1680,16 @@ module Make< cached private newtype TNode = TWriteDefSource(WriteDefinition def) { DfInput::ssaDefHasSource(def) } or - TExprNode(DfInput::Expr e, Boolean isPost) { e = DfInput::getARead(_) } or + TExprNode(DfInput::Expr e, SourceVariable v, Boolean isPost) { + exists(BasicBlock bb, int i | + e.hasCfgNode(bb, i) and + variableRead(bb, i, v, true) and + // Only materialise if 'expr' has a reaching definition. + // Note that the read may correspond to a different variable than 'v', but the C++ + // instantiation currently expects this particular behaviour. + DfInput::getARead(_) = e + ) + } or TSsaDefinitionNode(DefinitionExt def) { not phiHasUniqNextNode(def) and if DfInput::includeWriteDefsInFlowStep() @@ -1714,18 +1739,25 @@ module Make< abstract private class ExprNodePreOrPostImpl extends NodeImpl, TExprNode { DfInput::Expr e; boolean isPost; + SourceVariable v_; - ExprNodePreOrPostImpl() { this = TExprNode(e, isPost) } + ExprNodePreOrPostImpl() { this = TExprNode(e, v_, isPost) } /** Gets the underlying expression. */ DfInput::Expr getExpr() { result = e } + /** Holds if this represents the access to `var` performed at `expr`. */ + predicate isExprAndVariable(DfInput::Expr expr, SourceVariable var) { expr = e and var = v_ } + override Location getLocation() { exists(BasicBlock bb, int i | e.hasCfgNode(bb, i) and result = bb.getNode(i).getLocation() ) } + + /** Gets the variable accessed at this expression. */ + SourceVariable getSourceVariable() { result = v_ } } final class ExprNodePreOrPost = ExprNodePreOrPostImpl; @@ -1744,32 +1776,34 @@ module Make< ExprPostUpdateNodeImpl() { isPost = true } /** Gets the pre-update expression node. */ - ExprNode getPreUpdateNode() { result = TExprNode(e, false) } + ExprNode getPreUpdateNode() { result = TExprNode(e, v_, false) } override string toString() { result = e.toString() + " [postupdate]" } } final class ExprPostUpdateNode = ExprPostUpdateNodeImpl; - private class ReadNodeImpl extends ExprNodeImpl { - private BasicBlock bb_; - private int i_; - private SourceVariable v_; + pragma[nomagic] + private predicate exprReadAt( + DfInput::Expr e, BasicBlock bb, int i, SourceVariable v, boolean isPost, TExprNode node + ) { + variableRead(bb, i, v, true) and + e.hasCfgNode(bb, i) and + node = TExprNode(e, v, isPost) + } - ReadNodeImpl() { - variableRead(bb_, i_, v_, true) and - this.getExpr().hasCfgNode(bb_, i_) - } + private class ReadNodeImpl extends ExprNodeImpl { + ReadNodeImpl() { exprReadAt(e, _, _, _, false, this) } + /** Holds if this node reads `v` at `bb,i` */ pragma[nomagic] predicate readsAt(BasicBlock bb, int i, SourceVariable v) { - bb = bb_ and - i = i_ and - v = v_ + exprReadAt(e, bb, i, v, false, this) } } - final private class ReadNode = ReadNodeImpl; + /** A node corresponding to a `(bb,i,v)` tuple from `variableRead(bb,i,v,true)` */ + final class ReadNode = ReadNodeImpl; /** A synthesized SSA data flow node. */ abstract private class SsaNodeImpl extends NodeImpl { @@ -1892,6 +1926,13 @@ module Make< override string toString() { result = "[input] " + def_.toString() } } + private predicate postUpdateNodeAt( + ExprPostUpdateNode node, BasicBlock bb, int i, SourceVariable v + ) { + node.getPreUpdateNode().(ReadNode).readsAt(_, _, v) and + DfInput::postUpdateCfgNode(node.getExpr(), bb, i) + } + /** * Holds if `nodeFrom` corresponds to the reference to `v` at index `i` in * `bb`. The boolean `isUseStep` indicates whether `nodeFrom` is an actual @@ -1907,7 +1948,10 @@ module Make< isUseStep = false ) or - [nodeFrom, nodeFrom.(ExprPostUpdateNode).getPreUpdateNode()].(ReadNode).readsAt(bb, i, v) and + nodeFrom.(ReadNode).readsAt(bb, i, v) and + isUseStep = true + or + postUpdateNodeAt(nodeFrom, bb, i, v) and isUseStep = true } @@ -1991,13 +2035,13 @@ module Make< v = def.getSourceVariable() and if DfInput::includeWriteDefsInFlowStep() then nodeTo.(SsaDefinitionNode).getDefinition() = def - else nodeTo.(ExprNode).getExpr() = DfInput::getARead(def) + else nodeTo.(ExprNode).isExprAndVariable(DfInput::getARead(def), v) ) or // Flow from SSA definition to read exists(DefinitionExt def | nodeFrom.(SsaDefinitionExtNodeImpl).getDefExt() = def and - nodeTo.(ExprNode).getExpr() = DfInput::getARead(def) and + nodeTo.(ExprNode).isExprAndVariable(DfInput::getARead(def), v) and v = def.getSourceVariable() ) } @@ -2103,7 +2147,7 @@ module Make< e = DfInput::getARead(def) and e.hasCfgNode(bb, _) and DfInput::guardControlsBlock(g, bb, val) and - result.(ExprNode).getExpr() = e + result.(ExprNode).isExprAndVariable(e, def.getSourceVariable()) ) or // guard controls input block to a phi node @@ -2118,6 +2162,17 @@ module Make< ) } } + + /** Provides consistency checks that depend on the DataFlowIntegration inputs. */ + module DfConsistency { + /** + * The given `read` reads multiple variables at once. `var` is bound to one of them. + */ + query predicate ambiguousReadNode(ReadNode read, SourceVariable var) { + strictcount(SourceVariable v | read.readsAt(_, _, v)) > 1 and + read.readsAt(_, _, var) + } + } } /** diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 92b8603a9d6e..d8f1b3764c76 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.33 +version: 2.0.36 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 3a71bc3b5561..69f2c436a8c3 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,17 @@ +## 1.1.0 + +### New Features + +* Added the opt-in `ai` threat model for LLM-generated data. No built-in source models are included. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.58.md b/shared/threat-models/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.59.md b/shared/threat-models/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.1.0.md b/shared/threat-models/change-notes/released/1.1.0.md new file mode 100644 index 000000000000..ca7b7109306d --- /dev/null +++ b/shared/threat-models/change-notes/released/1.1.0.md @@ -0,0 +1,5 @@ +## 1.1.0 + +### New Features + +* Added the opt-in `ai` threat model for LLM-generated data. No built-in source models are included. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 08ea3909354f..2ac15439f561 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.1.0 diff --git a/shared/threat-models/ext/threat-model-grouping.model.yml b/shared/threat-models/ext/threat-model-grouping.model.yml index 1c8229b81f6a..414cbda6fabe 100644 --- a/shared/threat-models/ext/threat-model-grouping.model.yml +++ b/shared/threat-models/ext/threat-model-grouping.model.yml @@ -30,3 +30,5 @@ extensions: - ["file-write", "all"] - ["reverse-dns", "all"] - ["view-component-input", "all"] + # AI threat models + - ["ai", "all"] diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index a51fdda87b7f..8d8291282d57 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.57 +version: 1.1.0 library: true groups: shared dataExtensions: diff --git a/shared/tree-sitter-extractor/Cargo.toml b/shared/tree-sitter-extractor/Cargo.toml index 61a66ab980e4..ac78bd4c7a6c 100644 --- a/shared/tree-sitter-extractor/Cargo.toml +++ b/shared/tree-sitter-extractor/Cargo.toml @@ -12,17 +12,17 @@ tree-sitter = ">= 0.23.0" tracing = "0.1" tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } rayon = "1.12.0" -regex = "1.12.3" +regex = "1.13.1" encoding = "0.2" -lazy_static = "1.5.0" +lazy_static = "1.5.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -chrono = { version = "0.4.44", features = ["serde"] } +chrono = { version = "0.4.45", features = ["serde"] } num_cpus = "1.17.0" -zstd = "0.13.3" +zstd = "0.14.0" yeast = { path = "../yeast" } [dev-dependencies] tree-sitter-ql = "0.23.1" tree-sitter-json = "0.24.8" -rand = "0.10.1" +rand = "0.10.3" diff --git a/shared/tree-sitter-extractor/src/autobuilder.rs b/shared/tree-sitter-extractor/src/autobuilder.rs index f43ead71a761..950a3b5a151a 100644 --- a/shared/tree-sitter-extractor/src/autobuilder.rs +++ b/shared/tree-sitter-extractor/src/autobuilder.rs @@ -76,7 +76,7 @@ impl Autobuilder { cmd.arg(format!("--size-limit={limit}")); } - cmd.arg(format!("--language={}", &self.language)); + cmd.arg(format!("--language={}", self.language)); cmd.arg("--working-dir=."); cmd.arg(&self.database); diff --git a/shared/tree-sitter-extractor/src/extractor/desugaring.rs b/shared/tree-sitter-extractor/src/extractor/desugaring.rs index c52659750c77..3aa7ad36e897 100644 --- a/shared/tree-sitter-extractor/src/extractor/desugaring.rs +++ b/shared/tree-sitter-extractor/src/extractor/desugaring.rs @@ -63,7 +63,7 @@ impl LanguageExtractor for LanguageSpec { trap_writer: &mut trap::Writer, path: &std::path::Path, source: &[u8], - ) { + ) -> Result<(), String> { crate::extractor::extract_parsed( self.parser.as_ref(), self.prefix, @@ -74,7 +74,7 @@ impl LanguageExtractor for LanguageSpec { path, source, self.desugarer.as_ref(), - ); + ) } } diff --git a/shared/tree-sitter-extractor/src/extractor/driver.rs b/shared/tree-sitter-extractor/src/extractor/driver.rs index d97d8f4c75c2..6e6172b7425b 100644 --- a/shared/tree-sitter-extractor/src/extractor/driver.rs +++ b/shared/tree-sitter-extractor/src/extractor/driver.rs @@ -27,6 +27,9 @@ pub(crate) trait LanguageExtractor: Sync { /// Build the TRAP node-type schema used to validate emitted tuples. fn build_schema(&self) -> std::io::Result; /// Extract a single file's `source` into `trap_writer`. + /// + /// A returned error is logged as a failure of this file only; the driver + /// archives its source, omits its TRAP, and continues. fn extract_file( &self, schema: &NodeTypeMap, @@ -34,7 +37,7 @@ pub(crate) trait LanguageExtractor: Sync { trap_writer: &mut trap::Writer, path: &Path, source: &[u8], - ); + ) -> Result<(), String>; } /// Drive extraction over `languages` for every file listed in `file_lists`. @@ -171,7 +174,7 @@ pub(crate) fn run_extractor( languages_processed[i] = true; let lang = &languages[i]; - lang.extract_file( + let result = lang.extract_file( &schemas[i], &mut diagnostics_writer, &mut trap_writer, @@ -180,7 +183,18 @@ pub(crate) fn run_extractor( ); std::fs::create_dir_all(src_archive_file.parent().unwrap())?; std::fs::copy(&path, &src_archive_file)?; - write_trap(trap_dir, &path, &trap_writer, trap_compression)?; + match result { + Ok(()) => { + write_trap(trap_dir, &path, &trap_writer, trap_compression)?; + } + Err(error) => { + tracing::error!( + file = %path.display(), + error, + "Failed to extract file" + ); + } + } } } } @@ -208,3 +222,82 @@ fn write_trap( std::fs::create_dir_all(trap_file.parent().unwrap())?; trap_writer.write_to_file(&trap_file, trap_compression) } + +#[cfg(test)] +mod tests { + use super::*; + use std::io::Write; + + struct TestLanguage { + file_globs: Vec, + } + + impl LanguageExtractor for TestLanguage { + fn file_globs(&self) -> &[String] { + &self.file_globs + } + + fn build_schema(&self) -> std::io::Result { + Ok(NodeTypeMap::new()) + } + + fn extract_file( + &self, + _schema: &NodeTypeMap, + _diagnostics_writer: &mut diagnostics::LogWriter, + trap_writer: &mut trap::Writer, + _path: &Path, + source: &[u8], + ) -> Result<(), String> { + if source == b"bad" { + Err("invalid parser output".to_string()) + } else { + trap_writer.comment("success".to_string()); + Ok(()) + } + } + } + + #[test] + fn file_extraction_error_does_not_abort_other_files() { + let root = std::env::temp_dir().join(format!("codeql-extractor-{}", rand::random::())); + let source_dir = root.join("input"); + let source_archive_dir = root.join("source-archive"); + let trap_dir = root.join("trap"); + std::fs::create_dir_all(&source_dir).unwrap(); + + let good_path = source_dir.join("good.test"); + let bad_path = source_dir.join("bad.test"); + std::fs::write(&good_path, b"good").unwrap(); + std::fs::write(&bad_path, b"bad").unwrap(); + + let file_list = root.join("files.txt"); + let mut file = std::fs::File::create(&file_list).unwrap(); + writeln!(file, "{}", good_path.display()).unwrap(); + writeln!(file, "{}", bad_path.display()).unwrap(); + + run_extractor( + "test", + &[TestLanguage { + file_globs: vec!["*.test".to_string()], + }], + &trap_dir, + &source_archive_dir, + &[file_list], + &Ok(trap::Compression::Gzip), + ) + .unwrap(); + + let good_trap = file_paths::path_for(&trap_dir, &good_path, "trap.gz", None); + let bad_trap = file_paths::path_for(&trap_dir, &bad_path, "trap.gz", None); + assert!(good_trap.is_file()); + assert!(!bad_trap.exists()); + + let archived_good = file_paths::path_for(&source_archive_dir, &good_path, "", None); + let archived_bad = file_paths::path_for(&source_archive_dir, &bad_path, "", None); + assert!(archived_good.is_file()); + assert!(archived_bad.is_file()); + + std::fs::remove_dir_all(root).unwrap(); + } +} diff --git a/shared/tree-sitter-extractor/src/extractor/mod.rs b/shared/tree-sitter-extractor/src/extractor/mod.rs index 13ee3264133b..97e1bfb161c2 100644 --- a/shared/tree-sitter-extractor/src/extractor/mod.rs +++ b/shared/tree-sitter-extractor/src/extractor/mod.rs @@ -419,7 +419,9 @@ fn collect_extras(node: Node<'_>, source: &[u8], out: &mut Vec) { /// TRAP extraction, and the `extra` tokens (comments and similar, which the /// desugared AST does not carry) are emitted from the side channel. Both /// tree-sitter grammars (via [`tree_sitter_parser`]) and custom parsers plug in -/// here; languages that don't desugar use [`extract`] instead. +/// here; languages that don't desugar use [`extract`] instead. Parse and +/// desugaring errors are returned to the multi-file driver so it can skip only +/// this file and continue extracting the rest. #[allow(clippy::too_many_arguments)] pub fn extract_parsed( parse: &(dyn Fn(&[u8]) -> Result + Send + Sync), @@ -431,7 +433,7 @@ pub fn extract_parsed( path: &Path, source: &[u8], desugarer: &dyn yeast::Desugarer, -) { +) -> Result<(), String> { let path_str = file_paths::normalize_and_transform_path(path, transformer); let source_root = std::env::current_dir() .ok() @@ -441,6 +443,11 @@ pub fn extract_parsed( let _enter = span.enter(); tracing::debug!("extracting: {}", path_str); + let parsed = parse(source).map_err(|e| format!("Parsing failed: {e}"))?; + let ast = desugarer + .run_from_ast(parsed.ast) + .map_err(|e| format!("Desugaring failed: {e}"))?; + trap_writer.comment(format!("Auto-generated TRAP file for {path_str}")); let file_label = populate_file(trap_writer, path, transformer); let mut visitor = Visitor::new( @@ -453,16 +460,13 @@ pub fn extract_parsed( schema, ); - let parsed = parse(source).unwrap_or_else(|e| panic!("Parsing failed for {path_str}: {e}")); - let ast = desugarer - .run_from_ast(parsed.ast) - .unwrap_or_else(|e| panic!("Desugaring failed for {path_str}: {e}")); traverse_yeast(&ast, &mut visitor); // Comments and other `extra` tokens are not part of the desugared AST; emit // them directly from the parser's side channel. for extra in &parsed.extras { visitor.emit_extra(extra); } + Ok(()) } /// A lightweight [`AstNode`] over a piece of side-channel `extra` content @@ -904,7 +908,8 @@ impl<'a> Visitor<'a> { if tp == single_type { return true; } - if let EntryKind::Union { members } = &self.schema.get(single_type).unwrap().kind + if let EntryKind::Union { members, .. } = + &self.schema.get(single_type).unwrap().kind && self.type_matches_set(tp, members) { return true; @@ -926,7 +931,7 @@ impl<'a> Visitor<'a> { return true; } for other in types.iter() { - if let EntryKind::Union { members } = &self.schema.get(other).unwrap().kind + if let EntryKind::Union { members, .. } = &self.schema.get(other).unwrap().kind && self.type_matches_set(tp, members) { return true; diff --git a/shared/tree-sitter-extractor/src/extractor/simple.rs b/shared/tree-sitter-extractor/src/extractor/simple.rs index 1c6691fa8cf3..329c9caddc68 100644 --- a/shared/tree-sitter-extractor/src/extractor/simple.rs +++ b/shared/tree-sitter-extractor/src/extractor/simple.rs @@ -32,7 +32,7 @@ impl LanguageExtractor for LanguageSpec { trap_writer: &mut trap::Writer, path: &std::path::Path, source: &[u8], - ) { + ) -> Result<(), String> { crate::extractor::extract( &self.ts_language, self.prefix, @@ -44,6 +44,7 @@ impl LanguageExtractor for LanguageSpec { source, &[], ); + Ok(()) } } diff --git a/shared/tree-sitter-extractor/src/generator/dbscheme.rs b/shared/tree-sitter-extractor/src/generator/dbscheme.rs index 87a15cfbeb2a..434d28735b7f 100644 --- a/shared/tree-sitter-extractor/src/generator/dbscheme.rs +++ b/shared/tree-sitter-extractor/src/generator/dbscheme.rs @@ -50,7 +50,7 @@ pub enum DbColumnType { impl fmt::Display for Case<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - writeln!(f, "case @{}.{} of", &self.name, &self.column)?; + writeln!(f, "case @{}.{} of", self.name, self.column)?; let mut sep = " "; for (c, tp) in &self.branches { writeln!(f, "{sep} {c} = @{tp}")?; diff --git a/shared/tree-sitter-extractor/src/generator/mod.rs b/shared/tree-sitter-extractor/src/generator/mod.rs index cf445aaaac7f..81bf0955cd6e 100644 --- a/shared/tree-sitter-extractor/src/generator/mod.rs +++ b/shared/tree-sitter-extractor/src/generator/mod.rs @@ -65,14 +65,14 @@ pub fn generate( for language in languages { let prefix = node_types::to_snake_case(&language.name); - let ast_node_name = format!("{}_ast_node", &prefix); - let node_location_table_name = format!("{}_ast_node_location", &prefix); - let node_parent_table_name = format!("{}_ast_node_parent", &prefix); - let token_name = format!("{}_token", &prefix); - let tokeninfo_name = format!("{}_tokeninfo", &prefix); - let trivia_token_name = format!("{}_trivia_token", &prefix); - let trivia_tokeninfo_name = format!("{}_trivia_tokeninfo", &prefix); - let reserved_word_name = format!("{}_reserved_word", &prefix); + let ast_node_name = format!("{}_ast_node", prefix); + let node_location_table_name = format!("{}_ast_node_location", prefix); + let node_parent_table_name = format!("{}_ast_node_parent", prefix); + let token_name = format!("{}_token", prefix); + let tokeninfo_name = format!("{}_tokeninfo", prefix); + let trivia_token_name = format!("{}_trivia_token", prefix); + let trivia_tokeninfo_name = format!("{}_trivia_tokeninfo", prefix); + let reserved_word_name = format!("{}_reserved_word", prefix); // When a desugaring is configured, comments and other `extra` nodes are // preserved from the original parse tree as `TriviaToken`s. let has_trivia_tokens = language.desugar.is_some(); @@ -125,7 +125,7 @@ pub fn generate( let mut body = vec![]; let facade_import_name = if use_facade_ast { - format!("FacadeAst::{}", &language.name) + format!("FacadeAst::{}", language.name) } else { language.name.clone() // If not using a facade AST, treat the module itself as the facade module. }; @@ -389,8 +389,8 @@ fn convert_nodes( let mut entries = Vec::new(); let mut ast_node_members: Set<&str> = Set::new(); let token_kinds: Map<&str, usize> = nodes - .iter() - .filter_map(|(_, node)| match &node.kind { + .values() + .filter_map(|node| match &node.kind { node_types::EntryKind::Token { kind_id } => { Some((node.dbscheme_name.as_str(), *kind_id)) } @@ -399,7 +399,9 @@ fn convert_nodes( .collect(); for node in nodes.values() { match &node.kind { - node_types::EntryKind::Union { members: n_members } => { + node_types::EntryKind::Union { + members: n_members, .. + } => { // It's a tree-sitter supertype node, for which we create a union // type. let members: Set<&str> = n_members diff --git a/shared/tree-sitter-extractor/src/generator/ql.rs b/shared/tree-sitter-extractor/src/generator/ql.rs index f114e251af21..c780aec681cd 100644 --- a/shared/tree-sitter-extractor/src/generator/ql.rs +++ b/shared/tree-sitter-extractor/src/generator/ql.rs @@ -50,7 +50,7 @@ impl fmt::Display for Import<'_> { if self.is_private { write!(f, "private ")?; } - write!(f, "import {}", &self.module)?; + write!(f, "import {}", self.module)?; if let Some(name) = &self.alias { write!(f, " as {name}")?; } @@ -82,13 +82,13 @@ impl fmt::Display for Class<'_> { write!(f, "private ")?; } if let Some(alias) = &self.alias { - write!(f, "class {} = {alias};", &self.name)?; + write!(f, "class {} = {alias};", self.name)?; return Ok(()); } if self.is_abstract { write!(f, "abstract ")?; } - write!(f, "class {} extends ", &self.name)?; + write!(f, "class {} extends ", self.name)?; for (index, supertype) in self.supertypes.iter().enumerate() { if index > 0 { write!(f, ", ")?; @@ -365,7 +365,7 @@ impl fmt::Display for FormalParameter<'_> { /// Generates a QL library by writing the given `elements` to the `file`. pub fn write(file: &mut dyn std::io::Write, elements: &[TopLevel]) -> std::io::Result<()> { for element in elements { - write!(file, "{}\n\n", &element)?; + write!(file, "{}\n\n", element)?; } Ok(()) } diff --git a/shared/tree-sitter-extractor/src/generator/ql_gen.rs b/shared/tree-sitter-extractor/src/generator/ql_gen.rs index 237ed9ddb968..bd05de8316d8 100644 --- a/shared/tree-sitter-extractor/src/generator/ql_gen.rs +++ b/shared/tree-sitter-extractor/src/generator/ql_gen.rs @@ -629,30 +629,8 @@ fn create_field_getters<'a>( field: &'a node_types::Field, nodes: &'a node_types::NodeTypeMap, ) -> (Vec>, Option>) { - let return_type = match &field.type_info { - node_types::FieldTypeInfo::Single(t) => { - Some(ql::Type::Facade(&nodes.get(t).unwrap().ql_class_name)) - } - node_types::FieldTypeInfo::Multiple { - types: _, - dbscheme_union: _, - ql_class, - } => Some(ql::Type::Facade(ql_class)), - node_types::FieldTypeInfo::ReservedWordInt(_) => Some(ql::Type::String), - }; - let formal_parameters = match &field.storage { - node_types::Storage::Column { .. } => vec![], - node_types::Storage::Table { has_index, .. } => { - if *has_index { - vec![ql::FormalParameter { - name: "i", - param_type: ql::Type::Int, - }] - } else { - vec![] - } - } - }; + let return_type = field_getter_return_type(field, nodes); + let formal_parameters = field_getter_formal_parameters(field); // For the expression to get a value, what variable name should the result // be bound to? @@ -742,16 +720,7 @@ fn create_field_getters<'a>( (get_value, Some(get_value_any_index)) } }; - let qldoc = match &field.name { - Some(name) => format!("Gets the node corresponding to the field `{name}`."), - None => { - if formal_parameters.is_empty() { - "Gets the child of this node.".to_owned() - } else { - "Gets the `i`th child of this node.".to_owned() - } - } - }; + let qldoc = field_getter_qldoc(field, !formal_parameters.is_empty()); let mut predicates = vec![ql::Predicate { qldoc: Some(qldoc.clone()), name: &field.getter_name, @@ -766,7 +735,7 @@ fn create_field_getters<'a>( if let Some(any_getter_name) = &field.any_getter_name { predicates.push(ql::Predicate { - qldoc: Some(qldoc.clone()), + qldoc: Some(qldoc), name: any_getter_name, overridden: false, is_private: false, @@ -788,12 +757,92 @@ fn create_field_getters<'a>( (predicates, optional_expr) } +fn field_getter_return_type<'a>( + field: &'a node_types::Field, + nodes: &'a node_types::NodeTypeMap, +) -> Option> { + match &field.type_info { + node_types::FieldTypeInfo::Single(t) => { + Some(ql::Type::Facade(&nodes.get(t).unwrap().ql_class_name)) + } + node_types::FieldTypeInfo::Multiple { + types: _, + dbscheme_union: _, + ql_class, + } => Some(ql::Type::Facade(ql_class)), + node_types::FieldTypeInfo::ReservedWordInt(_) => Some(ql::Type::String), + } +} + +fn field_getter_formal_parameters(field: &node_types::Field) -> Vec> { + match &field.storage { + node_types::Storage::Column { .. } => vec![], + node_types::Storage::Table { has_index, .. } => { + if *has_index { + vec![ql::FormalParameter { + name: "i", + param_type: ql::Type::Int, + }] + } else { + vec![] + } + } + } +} + +fn field_getter_qldoc(field: &node_types::Field, has_index: bool) -> String { + match &field.name { + Some(name) => format!("Gets the node corresponding to the field `{name}`."), + None => { + if has_index { + "Gets the `i`th child of this node.".to_owned() + } else { + "Gets the child of this node.".to_owned() + } + } + } +} + +fn create_supertype_field_getters<'a>( + field: &'a node_types::Field, + nodes: &'a node_types::NodeTypeMap, +) -> Vec> { + let return_type = field_getter_return_type(field, nodes); + let formal_parameters = field_getter_formal_parameters(field); + let qldoc = field_getter_qldoc(field, !formal_parameters.is_empty()); + let mut predicates = vec![ql::Predicate { + qldoc: Some(qldoc.clone()), + name: &field.getter_name, + overridden: false, + is_private: false, + is_final: false, + return_type: return_type.clone(), + formal_parameters, + body: ql::Expression::Pred("none", vec![]), + overlay: None, + }]; + if let Some(any_getter_name) = &field.any_getter_name { + predicates.push(ql::Predicate { + qldoc: Some(qldoc), + name: any_getter_name, + overridden: false, + is_private: false, + is_final: false, + return_type, + formal_parameters: vec![], + body: ql::Expression::Pred("none", vec![]), + overlay: None, + }); + } + predicates +} + fn compute_direct_supertypes( nodes: &node_types::NodeTypeMap, ) -> std::collections::BTreeMap> { let mut supertypes = std::collections::BTreeMap::new(); for node in nodes.values() { - if let node_types::EntryKind::Union { members } = &node.kind { + if let node_types::EntryKind::Union { members, .. } = &node.kind { for member in members { supertypes .entry(member.clone()) @@ -828,11 +877,100 @@ fn class_supertypes<'a>( supertypes } +#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)] +struct PredicateSignature<'a> { + name: &'a str, + arity: usize, +} + +fn field_predicate_signatures(field: &node_types::Field) -> Vec> { + let getter_arity = match field.storage { + node_types::Storage::Table { + has_index: true, .. + } => 1, + _ => 0, + }; + let mut signatures = vec![PredicateSignature { + name: &field.getter_name, + arity: getter_arity, + }]; + if let Some(any_getter_name) = &field.any_getter_name { + signatures.push(PredicateSignature { + name: any_getter_name, + arity: 0, + }); + } + signatures +} + +/// Builds an index of the field getter signatures exposed by each generated +/// class, including getters inherited from supertypes. +fn compute_exposed_predicate_signatures( + nodes: &node_types::NodeTypeMap, +) -> std::collections::BTreeMap>> { + let mut exposed = nodes + .iter() + .map(|(type_name, node)| { + let fields = match &node.kind { + node_types::EntryKind::Union { fields, .. } + | node_types::EntryKind::Table { fields, .. } => fields.as_slice(), + node_types::EntryKind::Token { .. } => &[], + }; + let signatures = fields.iter().flat_map(field_predicate_signatures).collect(); + (type_name.clone(), signatures) + }) + .collect::>>(); + + loop { + let mut changed = false; + for (supertype, node) in nodes { + let node_types::EntryKind::Union { members, .. } = &node.kind else { + continue; + }; + let inherited = exposed.get(supertype).cloned().unwrap_or_default(); + for member in members { + let member_signatures = exposed.entry(member.clone()).or_default(); + let previous_len = member_signatures.len(); + member_signatures.extend(inherited.iter().copied()); + changed |= member_signatures.len() != previous_len; + } + } + if !changed { + break; + } + } + + exposed +} + +fn is_predicate_inherited( + type_name: &node_types::TypeName, + predicate: &ql::Predicate, + nodes: &node_types::NodeTypeMap, + exposed: &std::collections::BTreeMap>>, +) -> bool { + let signature = PredicateSignature { + name: predicate.name, + arity: predicate.formal_parameters.len(), + }; + nodes.iter().any(|(supertype, node)| { + matches!( + &node.kind, + node_types::EntryKind::Union { members, .. } + if members.contains(type_name) + && exposed + .get(supertype) + .is_some_and(|signatures| signatures.contains(&signature)) + ) + }) +} + /// Converts the given node types into CodeQL classes wrapping the dbscheme. pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { let mut classes = Vec::new(); let mut token_kinds = BTreeSet::new(); let direct_supertypes = compute_direct_supertypes(nodes); + let exposed_predicate_signatures = compute_exposed_predicate_signatures(nodes); for (type_name, node) in nodes { if let node_types::EntryKind::Token { .. } = &node.kind && type_name.named @@ -863,9 +1001,22 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { })); } } - node_types::EntryKind::Union { members: _ } => { + node_types::EntryKind::Union { fields, .. } => { // It's a tree-sitter supertype node, so we're wrapping a dbscheme // union type. + let predicates = fields + .iter() + .flat_map(|field| create_supertype_field_getters(field, nodes)) + .map(|mut predicate| { + predicate.overridden = is_predicate_inherited( + type_name, + &predicate, + nodes, + &exposed_predicate_signatures, + ); + predicate + }) + .collect(); classes.push(ql::TopLevel::Class(ql::Class { qldoc: None, name: &node.ql_class_name, @@ -879,7 +1030,7 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { &direct_supertypes, ), characteristic_predicate: None, - predicates: vec![], + predicates, })); } node_types::EntryKind::Table { @@ -923,13 +1074,21 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { // - predicates to access the fields, // - the QL expressions to access the fields that will be part of getAFieldOrChild. for field in fields { - let (get_preds, get_child_expr) = create_field_getters( + let (mut get_preds, get_child_expr) = create_field_getters( main_table_name, main_table_arity, &mut main_table_column_index, field, nodes, ); + for predicate in &mut get_preds { + predicate.overridden = is_predicate_inherited( + type_name, + predicate, + nodes, + &exposed_predicate_signatures, + ); + } main_class.predicates.extend(get_preds); if let Some(get_child_expr) = get_child_expr { get_child_exprs.push(get_child_expr) @@ -1051,3 +1210,99 @@ pub fn create_print_ast_module(nodes: &node_types::NodeTypeMap) -> ql::TopLevel< overlay: None, }) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn indexes_predicate_signatures_exposed_by_classes() { + let yaml = r#" +supertypes: + callable: + subtypes: [function_like] + fields: + parameter*: parameter + body?: block + function_like: + subtypes: [function] + fields: + name: identifier +named: + function: + parameter*: parameter + body?: block + name: identifier + parameter: + block: + identifier: +"#; + let json = yeast::node_types_yaml::convert(yaml).unwrap(); + let nodes = node_types::read_node_types_str("test", &json).unwrap(); + let signatures = compute_exposed_predicate_signatures(&nodes); + let function = signatures + .get(&node_types::TypeName { + kind: "function".to_owned(), + named: true, + }) + .unwrap(); + + assert!(function.contains(&PredicateSignature { + name: "getParameter", + arity: 1, + })); + assert!(function.contains(&PredicateSignature { + name: "getAParameter", + arity: 0, + })); + assert!(function.contains(&PredicateSignature { + name: "getBody", + arity: 0, + })); + assert!(function.contains(&PredicateSignature { + name: "getName", + arity: 0, + })); + } + + #[test] + fn generates_supertype_getters_and_concrete_overrides() { + let yaml = r#" +supertypes: + callable: + subtypes: [function] + fields: + parameter*: parameter + body?: block +named: + function: + parameter*: parameter + body?: block + parameter: + block: +"#; + let json = yeast::node_types_yaml::convert(yaml).unwrap(); + let nodes = node_types::read_node_types_str("test", &json).unwrap(); + let generated = convert_nodes(&nodes) + .into_iter() + .map(|element| element.to_string()) + .collect::>() + .join("\n"); + + assert!(generated.contains("F::Parameter getParameter(int i) { none() }")); + assert!(generated.contains("F::Parameter getAParameter() { none() }")); + assert!(generated.contains("F::Block getBody() { none() }")); + assert!( + generated.contains( + "final override F::Parameter getParameter(int i) { test_function_parameter" + ) + ); + assert!(generated.contains( + "final override F::Parameter getAParameter() { result = this.getParameter(_) }" + )); + assert!( + generated + .contains("final override F::Block getBody() { test_function_body(this, result) }") + ); + } +} diff --git a/shared/tree-sitter-extractor/src/node_types.rs b/shared/tree-sitter-extractor/src/node_types.rs index 65217c8a28b6..43fc3e11683d 100644 --- a/shared/tree-sitter-extractor/src/node_types.rs +++ b/shared/tree-sitter-extractor/src/node_types.rs @@ -17,9 +17,17 @@ pub struct Entry { #[derive(Debug)] pub enum EntryKind { - Union { members: Set }, - Table { name: String, fields: Vec }, - Token { kind_id: usize }, + Union { + members: Set, + fields: Vec, + }, + Table { + name: String, + fields: Vec, + }, + Token { + kind_id: usize, + }, } #[derive(Clone, Debug, Ord, PartialOrd, Eq, PartialEq)] @@ -130,21 +138,44 @@ pub fn convert_nodes(prefix: &str, nodes: &[NodeInfo]) -> NodeTypeMap { let flattened_name = &node_type_name(&node.kind, node.named); let dbscheme_name = escape_name(flattened_name); let ql_class_name = dbscheme_name_to_class_name(&dbscheme_name); - let dbscheme_name = format!("{}_{}", prefix, &dbscheme_name); + let dbscheme_name = format!("{}_{}", prefix, dbscheme_name); let subtypes = &node.subtypes; if !subtypes.is_empty() { // It's a tree-sitter supertype node, for which we create a union // type. + let type_name = TypeName { + kind: node.kind.clone(), + named: node.named, + }; + let mut fields = Vec::new(); + for (field_name, field_info) in &node.fields { + add_field( + prefix, + &type_name, + Some(field_name.to_string()), + field_info, + &mut fields, + &token_kinds, + ); + } + if let Some(children) = &node.children { + add_field( + prefix, + &type_name, + None, + children, + &mut fields, + &token_kinds, + ); + } entries.insert( - TypeName { - kind: node.kind.clone(), - named: node.named, - }, + type_name, Entry { dbscheme_name, ql_class_name, kind: EntryKind::Union { members: convert_types(subtypes), + fields, }, }, ); @@ -156,8 +187,8 @@ pub fn convert_nodes(prefix: &str, nodes: &[NodeInfo]) -> NodeTypeMap { kind: node.kind.clone(), named: node.named, }; - let table_name = escape_name(&(format!("{}_def", &flattened_name))); - let table_name = format!("{}_{}", prefix, &table_name); + let table_name = escape_name(&(format!("{}_def", flattened_name))); + let table_name = format!("{}_{}", prefix, table_name); let mut fields = Vec::new(); @@ -203,13 +234,13 @@ pub fn convert_nodes(prefix: &str, nodes: &[NodeInfo]) -> NodeTypeMap { counter += 1; let unprefixed_name = node_type_name(&type_name.kind, true); Entry { - dbscheme_name: escape_name(&format!("{}_token_{}", &prefix, &unprefixed_name)), + dbscheme_name: escape_name(&format!("{}_token_{}", prefix, unprefixed_name)), ql_class_name: dbscheme_name_to_class_name(&escape_name(&unprefixed_name)), kind: EntryKind::Token { kind_id: counter }, } } else { Entry { - dbscheme_name: format!("{}_reserved_word", &prefix), + dbscheme_name: format!("{}_reserved_word", prefix), ql_class_name: "ReservedWord".to_owned(), kind: EntryKind::Token { kind_id: 0 }, } @@ -238,9 +269,9 @@ fn add_field( let has_index = field_info.multiple; let field_table_name = escape_name(&format!( "{}_{}_{}", - &prefix, + prefix, parent_flattened_name, - &name_for_field_or_child(&field_name) + name_for_field_or_child(&field_name) )); Storage::Table { has_index, @@ -261,7 +292,7 @@ fn add_field( let mut field_token_ints: BTreeMap = BTreeMap::new(); for (counter, t) in converted_types.into_iter().enumerate() { let dbscheme_variant_name = - escape_name(&format!("{}_{}_{}", &prefix, parent_flattened_name, t.kind)); + escape_name(&format!("{}_{}_{}", prefix, parent_flattened_name, t.kind)); field_token_ints.insert(t.kind.to_owned(), (counter, dbscheme_variant_name)); } FieldTypeInfo::ReservedWordInt(field_token_ints) @@ -273,9 +304,9 @@ fn add_field( types: converted_types, dbscheme_union: format!( "{}_{}_{}_type", - &prefix, - &parent_flattened_name, - &name_for_field_or_child(&field_name) + prefix, + parent_flattened_name, + name_for_field_or_child(&field_name) ), ql_class: "AstNode".to_owned(), } @@ -386,6 +417,7 @@ fn escape_name(name: &str) -> String { ':' => result.push_str("colon"), ';' => result.push_str("semicolon"), '"' => result.push_str("dquote"), + '\'' => result.push_str("squote"), '*' => result.push_str("star"), '+' => result.push_str("plus"), '-' => result.push_str("minus"), @@ -448,9 +480,61 @@ fn dbscheme_name_to_class_name(dbscheme_name: &str) -> String { .join("") } +#[test] +fn escape_name_quotes_test() { + assert_eq!("dquote", escape_name("\"")); + assert_eq!("squote", escape_name("'")); +} + #[test] fn to_snake_case_test() { assert_eq!("ruby", to_snake_case("Ruby")); assert_eq!("erb", to_snake_case("ERB")); assert_eq!("embedded_template", to_snake_case("EmbeddedTemplate")); } + +#[test] +fn supertype_fields_are_preserved() { + let yaml = r#" +supertypes: + callable: + subtypes: [function] + fields: + parameter*: parameter + body?: block +named: + function: + parameter: + block: +"#; + let json = yeast::node_types_yaml::convert(yaml).unwrap(); + let nodes = read_node_types_str("test", &json).unwrap(); + let callable = nodes + .get(&TypeName { + kind: "callable".to_owned(), + named: true, + }) + .unwrap(); + let EntryKind::Union { fields, .. } = &callable.kind else { + panic!("callable should be a union"); + }; + + assert_eq!(fields.len(), 2); + assert_eq!(fields[0].getter_name, "getBody"); + assert!(matches!( + fields[0].storage, + Storage::Table { + has_index: false, + .. + } + )); + assert_eq!(fields[1].getter_name, "getParameter"); + assert_eq!(fields[1].any_getter_name.as_deref(), Some("getAParameter")); + assert!(matches!( + fields[1].storage, + Storage::Table { + has_index: true, + .. + } + )); +} diff --git a/shared/tree-sitter-extractor/src/options.rs b/shared/tree-sitter-extractor/src/options.rs index 1b43a2159943..4be253104f19 100644 --- a/shared/tree-sitter-extractor/src/options.rs +++ b/shared/tree-sitter-extractor/src/options.rs @@ -6,7 +6,7 @@ pub fn num_threads() -> Result { let threads_str = std::env::var("CODEQL_THREADS").unwrap_or_else(|_| "-1".into()); let num_cpus = num_cpus::get(); parse_codeql_threads(&threads_str, num_cpus) - .ok_or_else(|| format!("Unable to parse CODEQL_THREADS value '{}'", &threads_str)) + .ok_or_else(|| format!("Unable to parse CODEQL_THREADS value '{}'", threads_str)) } /// Parses the given string to determine the number of threads the extractor diff --git a/shared/tree-sitter-extractor/src/trap.rs b/shared/tree-sitter-extractor/src/trap.rs index 85b2cc9adda7..492349c6d4ab 100644 --- a/shared/tree-sitter-extractor/src/trap.rs +++ b/shared/tree-sitter-extractor/src/trap.rs @@ -298,7 +298,7 @@ impl Compression { match std::env::var(var_name) { Ok(method) => match Compression::from_string(&method) { Some(c) => Ok(c), - None => Err(format!("Unknown compression method '{}'", &method)), + None => Err(format!("Unknown compression method '{}'", method)), }, // Default compression method if the env var isn't set: Err(_) => Ok(Compression::Gzip), diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index b3541e1248f5..24989e35b34a 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.58.md b/shared/tutorial/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.59.md b/shared/tutorial/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.60.md b/shared/tutorial/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 08ea3909354f..e0eab12f1948 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.0.60 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 2c2dde8c1793..d312f76200b8 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.57 +version: 1.0.60 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index ad7f55dd34bd..1ff01003af3e 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.58.md b/shared/typeflow/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.59.md b/shared/typeflow/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.60.md b/shared/typeflow/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index 08ea3909354f..e0eab12f1948 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.0.60 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 6ea63f761cdd..9fd73bb02bfc 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.57 +version: 1.0.60 groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index 6ab8c640bc68..5baf7ab7928c 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.0.41 + +No user-facing changes. + +## 0.0.40 + +No user-facing changes. + +## 0.0.39 + +No user-facing changes. + ## 0.0.38 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.39.md b/shared/typeinference/change-notes/released/0.0.39.md new file mode 100644 index 000000000000..b492d1378882 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.39.md @@ -0,0 +1,3 @@ +## 0.0.39 + +No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.40.md b/shared/typeinference/change-notes/released/0.0.40.md new file mode 100644 index 000000000000..3666b81138f9 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.40.md @@ -0,0 +1,3 @@ +## 0.0.40 + +No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.41.md b/shared/typeinference/change-notes/released/0.0.41.md new file mode 100644 index 000000000000..fc403ab94721 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.41.md @@ -0,0 +1,3 @@ +## 0.0.41 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index 078a0e3aff01..60838ce02183 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.38 +lastReleaseVersion: 0.0.41 diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index b90c53ebdbaa..60e2419e6cad 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -1,126 +1,70 @@ /** * 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 library is initialized in three phases: * - * 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. + * 1. `Make1`, which takes as input a definition of atomic types (including type + * parameters) and constructs the `TypePath` type used to represent paths into + * compound types. * - * The intended use of this library is to define a predicate + * 2. `Make2`, which (using the `TypePath` type) takes as input a definition of type + * mentions as well as the type hierarchy and type constraints, and constructs the + * `Matching` and `IsInstantiationOf` modules, which are core building blocks for + * matching type instantiations against type parameters, taking the type hierarchy + * and type constraints into account. * - * ```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`. + * 3. `Make3`, which takes as input a definition of AST nodes, including common concepts + * such as calls and callables, as well as language-specific typing rules, and + * constructs the `inferType` predicate for recursively inferring the types of AST + * nodes. * - * In order to infer the type of method calls, one would define something like + * Unlike unification-based type inference, this library does directed/bottom-up type + * inference by default, but allowing for contextual/top-down type inference when + * explicitly needed. * - * ```ql - * private module MethodCallMatchingInput implements MatchingInputSig { - * private newtype TDeclarationPosition = - * TSelfDeclarationPosition() or - * TPositionalDeclarationPosition(int pos) { ... } or - * TReturnDeclarationPosition() + * For example, in order to infer the type of a conditional expression, + * `if cond { e1 } else { e2 }`, we propagate type information from either of the + * branches `e1` and `e2` into the conditional expression (for simplicity, we do not + * attempt to calculate least-upper-bound types or similar). This corresponds to the + * two bottom-up type inference rules: * - * // A position inside a method with a declared type. - * class DeclarationPosition extends TDeclarationPosition { - * ... - * } + * ```text + * e1: T + * ------------------------------- (cond-then) + * if cond { e1 } else { e2 } : T * - * 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; + * e2: T + * ------------------------------- (cond-else) + * if cond { e1 } else { e2 } : T + * ``` * - * class Access extends MethodCall { - * AstNode getNodeAt(AccessPosition apos) { ... } + * Now, if we have a conditional expression like * - * // 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) - * } + * ```rust + * if cond { 42i64 } else { Default::default() } + * ``` * - * // 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() { ... } - * } + * where the type of `Default::default()` needs to be inferred from the context, we * - * predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { - * apos = dpos - * } - * } + * 1. conclude that the conditional has type `i64`, using the `cond-then` rule, + * 2. assign `Default::default()` the special `UnknownType` (this library has built-in + * logic for identifying calls where (parts of) the return type needs to be inferred + * from the context), and + * 3. since the `else` branch has `UnknownType`, we apply the `cond-else` rule _backwards_ + * to infer that `Default::default()` has type `i64`. * - * private module MethodCallMatching = Matching; + * Note that `UnknownType` can propagate bottom-up like any other type, which is needed + * in cases like for example * - * 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) - * ) - * ... - * } + * ```rust + * let x = if cond { Default::default() } else { Default::default() }; + * let y: i64 = x; * ``` + * + * where the `UnknownType` will propagate upwards using two bottom-up steps, and the + * contextual inference will then propagate the `i64` type backwards using two + * reversed steps. */ overlay[local?] module; @@ -135,7 +79,14 @@ signature module InputSig1 { * For example `int` or ``IEnumerable`1``. */ class Type { - /** Gets a type parameter of this type, if any. */ + /** Gets the `i`th positional type parameter of this type, if any. */ + TypeParameter getPositionalTypeParameter(int i); + + /** + * Gets a type parameter of this type, if any. + * + * This may include non-positional type parameters as well. + */ TypeParameter getATypeParameter(); /** Gets a textual representation of this type. */ @@ -146,10 +97,10 @@ signature module InputSig1 { } /** - * Holds if `t` is a pseudo type. Pseudo types are skipped when checking for - * non-instantiations in `isNotInstantiationOf`. + * A pseudo type. Pseudo types are skipped when checking for non-instantiations + * in `isNotInstantiationOf`. */ - predicate isPseudoType(Type t); + class PseudoType extends Type; /** A type parameter. */ class TypeParameter extends Type; @@ -189,35 +140,6 @@ signature module InputSig1 { */ int getTypeParameterId(TypeParameter tp); - /** - * A type argument position, for example an integer. - * - * Type argument positions are used when type arguments are supplied explicitly, - * for example in a method call like `M()` the type argument `int` is at - * position `0`. - */ - bindingset[this] - class TypeArgumentPosition { - /** Gets the textual representation of this position. */ - bindingset[this] - string toString(); - } - - /** A type parameter position, for example an integer. */ - bindingset[this] - class TypeParameterPosition { - /** Gets the textual representation of this position. */ - bindingset[this] - string toString(); - } - - /** Holds if `tapos` and `tppos` match. */ - bindingset[tapos] - bindingset[tppos] - predicate typeArgumentParameterPositionMatch( - TypeArgumentPosition tapos, TypeParameterPosition tppos - ); - /** * Gets the limit on the length of type paths. Set to `none()` if there should * be no limit. @@ -443,10 +365,27 @@ module Make1 Input1> { module Make2 Input2> { private import Input2 - /** Gets the type at the empty path of `tm`. */ + /** + * Gets the non-pseudo root type mentioned at `tm`. + * + * Type mentions are allowed to resolve to `UnknownType` (which this predicate + * will filter away), for example in + * + * ```rust + * let x: Vec = Vec::new(); + * x.push(foo()); + * ``` + * + * by resolving `Unresolved` to `UnknownType` (that is, treating it as if it was + * `_`), we allow for the element type to be inferred from the return type of + * `foo`. + */ bindingset[tm] pragma[inline_late] - private Type getTypeMentionRoot(TypeMention tm) { result = tm.getTypeAt(TypePath::nil()) } + private Type getTypeMentionNonPseudoRoot(TypeMention tm) { + result = tm.getTypeAt(TypePath::nil()) and + not result instanceof PseudoType + } /** Provides the input to `IsInstantiationOf`. */ signature module IsInstantiationOfInputSig { @@ -647,7 +586,8 @@ module Make1 Input1> { } private Type getNonPseudoTypeAt(App app, TypePath path) { - result = app.getTypeAt(path) and not isPseudoType(result) + result = app.getTypeAt(path) and + not result instanceof PseudoType } pragma[nomagic] @@ -721,13 +661,13 @@ module Make1 Input1> { pragma[nomagic] private predicate typeCondition(Type type, TypeAbstraction abs, TypeMention condition) { conditionSatisfiesConstraint(abs, condition, _, _) and - type = getTypeMentionRoot(condition) + type = getTypeMentionNonPseudoRoot(condition) } pragma[nomagic] private predicate typeConstraint(Type type, TypeMention constraint) { conditionSatisfiesConstraint(_, _, constraint, _) and - type = getTypeMentionRoot(constraint) + type = getTypeMentionNonPseudoRoot(constraint) } predicate potentialInstantiationOf( @@ -735,7 +675,8 @@ module Make1 Input1> { ) { exists(Type type | typeConstraint(type, constraint) and typeCondition(type, abs, condition) - ) + ) and + conditionSatisfiesConstraint(_, _, constraint, true) } } @@ -781,8 +722,8 @@ module Make1 Input1> { TypeMention constraint ) { conditionSatisfiesConstraintTypeAt(abs, condition, constraint, _, _) and - conditionRoot = getTypeMentionRoot(condition) and - constraintRoot = getTypeMentionRoot(constraint) + conditionRoot = getTypeMentionNonPseudoRoot(condition) and + constraintRoot = getTypeMentionNonPseudoRoot(constraint) } /** @@ -887,8 +828,8 @@ module Make1 Input1> { // // not exists(countConstraintImplementations(type, constraint)) and // conditionSatisfiesConstraintTypeAt(abs, condition, constraintMention, _, _) and - // getTypeMentionRoot(condition) = abs.getATypeParameter() and - // constraint = getTypeMentionRoot(constraintMention) + // getTypeMentionNonPseudoRoot(condition) = abs.getATypeParameter() and + // constraint = getTypeMentionNonPseudoRoot(constraintMention) // or countConstraintImplementations(type, constraintRoot) > 0 and rootTypesSatisfaction(type, constraintRoot, abs, condition, constraintMention) and @@ -927,9 +868,9 @@ module Make1 Input1> { // or // forall(TypeAbstraction abs, TypeMention condition, TypeMention constraintMention | // conditionSatisfiesConstraintTypeAt(abs, condition, constraintMention, _, _) and - // getTypeMentionRoot(condition) = abs.getATypeParameter() + // getTypeMentionNonPseudoRoot(condition) = abs.getATypeParameter() // | - // not constraint = getTypeMentionRoot(constraintMention) + // not constraint = getTypeMentionNonPseudoRoot(constraintMention) // ) // ) and ( @@ -1258,8 +1199,8 @@ module Make1 Input1> { /** Gets the location of this declaration. */ Location getLocation(); - /** Gets the type parameter at position `tppos` of this declaration, if any. */ - TypeParameter getTypeParameter(TypeParameterPosition tppos); + /** Gets the `i`th type parameter of this declaration, if any. */ + TypeParameter getTypeParameter(int i); /** * Gets the declared type of this declaration at `path` for position `dpos`. @@ -1309,13 +1250,12 @@ module Make1 Input1> { Location getLocation(); /** - * Gets the type at `path` for the type argument at position `tapos` of - * this access, if any. + * Gets the type at `path` for the `i`th type argument of this access, if any. * * For example, in a method call like `M()`, `int` is an explicit * type argument at position `0`. */ - Type getTypeArgument(TypeArgumentPosition tapos, TypePath path); + Type getTypeArgument(int i, TypePath path); /** * Gets the inferred type at `path` for the position `apos` and environment `e` @@ -1346,12 +1286,9 @@ module Make1 Input1> { module MatchingWithEnvironment { private import Input - pragma[nomagic] - private TypeParameter getDeclTypeParameter(Declaration decl, TypeArgumentPosition tapos) { - exists(TypeParameterPosition tppos | - result = decl.getTypeParameter(tppos) and - typeArgumentParameterPositionMatch(tapos, tppos) - ) + private Type getTypeArgumentNonPseudo(Access a, int pos, TypePath path) { + result = a.getTypeArgument(pos, path) and + not result instanceof PseudoType } /** @@ -1359,25 +1296,48 @@ module Make1 Input1> { * the type parameter `tp` in `target`, if any. * * Note that this predicate crucially does not depend on type inference, - * and hence can appear in negated position, e.g., as in - * `directTypeMatch`. + * and hence can appear in negated position, e.g., as in `directTypeMatch`. */ bindingset[a, target] pragma[inline_late] Type getTypeArgument(Access a, Declaration target, TypeParameter tp, TypePath path) { - exists(TypeArgumentPosition tapos | - result = a.getTypeArgument(tapos, path) and - tp = getDeclTypeParameter(target, tapos) and - not isPseudoType(result) + exists(int pos | + result = getTypeArgumentNonPseudo(a, pos, path) and + tp = target.getTypeParameter(pos) + ) + } + + bindingset[a, target] + pragma[inline_late] + private predicate hasNotTypeArgument0(Access a, Declaration target, TypeParameter tp) { + exists(int pos | + tp = target.getTypeParameter(pragma[only_bind_into](pos)) and + not exists(getTypeArgumentNonPseudo(a, pos, _)) ) } + bindingset[target, tp] + pragma[inline_late] + private predicate hasNotTypeArgument1(Declaration target, TypeParameter tp) { + not tp = target.getTypeParameter(_) + } + + /** + * A join-order optimized version of `not exists(getTypeArgument(a, target, tp, _)`. + */ + pragma[inline] + private predicate hasNotTypeArgument(Access a, Declaration target, TypeParameter tp) { + hasNotTypeArgument0(a, target, tp) + or + hasNotTypeArgument1(target, tp) + } + pragma[nomagic] private predicate directTypeMatch0( Access a, DeclarationPosition dpos, AccessEnvironment e, Declaration target, TypePath pathToTypeParam, TypeParameter tp ) { - not exists(getTypeArgument(a, target, tp, _)) and + hasNotTypeArgument(a, target, tp) and tp = target.getDeclaredType(dpos, pathToTypeParam) and target = a.getTarget(e) } @@ -1452,12 +1412,18 @@ module Make1 Input1> { t = a.getInferredType(e, apos, TypePath::nil()) } + private predicate relevantAccessTarget( + Access a, AccessPosition apos, AccessEnvironment e, Declaration target + ) { + exists(Type t | + accessTargetsWithArgRootType(a, e, target, apos, t) and + argRootTypeSatisfiesTargetTypeCand(t, target, apos, _, _) + ) + } + private newtype TRelevantAccess = MkRelevantAccess(Access a, AccessPosition apos, AccessEnvironment e) { - exists(Declaration target, Type t | - accessTargetsWithArgRootType(a, e, target, apos, t) and - argRootTypeSatisfiesTargetTypeCand(t, target, apos, _, _) - ) + relevantAccessTarget(a, apos, e, _) } private class RelevantAccess extends MkRelevantAccess { @@ -1467,7 +1433,12 @@ module Make1 Input1> { RelevantAccess() { this = MkRelevantAccess(a, apos, e) } - RelevantTarget getTarget() { result = MkRelevantTarget(a.getTarget(e), apos) } + RelevantTarget getTarget() { + exists(Declaration target | + relevantAccessTarget(a, apos, e, target) and + result = MkRelevantTarget(target, apos) + ) + } pragma[nomagic] Type getTypeAt(TypePath path) { result = a.getInferredType(e, apos, path) } @@ -1530,7 +1501,81 @@ module Make1 Input1> { pragma[only_bind_into](apos), e), MkRelevantTarget(target, pragma[only_bind_into](apos)), pathToTp.appendInverse(path), t) and - not exists(getTypeArgument(a, target, tp, _)) + hasNotTypeArgument(a, target, tp) + ) + } + + predicate baseTypeMatchAtTypeParameter( + Access a, AccessEnvironment e, AccessPosition apos, Declaration target, TypeParameter tp, + TypePath prefix, TypePath requiredPrefix + ) { + exists( + TypePath pathToTypeParamInConstraint, TypePath pathToTp, TypePath pathToTypeParamInSub + | + argRootTypeSatisfiesTargetTypeCand(_, target, pragma[only_bind_into](apos), tp, pathToTp) and + SatisfiesParameterConstraint::satisfiesConstraintAtTypeParameter(MkRelevantAccess(a, + pragma[only_bind_into](apos), e), + MkRelevantTarget(target, pragma[only_bind_into](apos)), pathToTypeParamInConstraint, + pathToTypeParamInSub) and + hasNotTypeArgument(a, target, tp) + | + /* + * Example: + * + * ```swift + * class Base { + * init(_ value: B) {} + * } + * + * class Derived: Base<[D]> { + * init(_ value: D) { super.init([value]) } + * } + * + * func foo(_ value: T, _ base: Base) { } + * + * foo([2], Derived()) + * ``` + * + * - tp = T (bound by `foo`) + * - prefix = pathToTypeParamInSub = "D" + * - requiredPrefix = "Element" + * - pathToTypeParamInConstraint = "B.Element" + * - pathToTp = "B" + */ + + pathToTypeParamInConstraint = pathToTp.appendInverse(requiredPrefix) and + prefix = pathToTypeParamInSub + or + /* + * Example: + * + * ```swift + * class Base { + * init(_ value: B) {} + * } + * + * class Derived: Base { + * override init(_ value: D) { super.init(value) } + * } + * + * func foo(_ value: T, _ base: Base) {} + * + * foo(2, Derived(Optional.none)) + * ``` + * + * - tp = T (bound by `foo`) + * - prefix = "D.Wrapped" + * - pathToTypeParamInSub = "D" + * - requiredPrefix = "" + * - pathToTypeParamInConstraint = "B" + * - pathToTp = "B.Wrapped" + */ + + exists(TypePath path0 | + pathToTp = pathToTypeParamInConstraint.appendInverse(path0) and + prefix = pathToTypeParamInSub.append(path0) and + requiredPrefix = TypePath::nil() + ) ) } } @@ -1646,8 +1691,14 @@ module Make1 Input1> { private predicate typeParameterHasConstraint( Declaration target, TypeParameter constrainedTp, TypeMention constraint ) { - constrainedTp = target.getTypeParameter(_) and - constraint = getATypeParameterConstraint(constrainedTp, target) + constraint = getATypeParameterConstraint(constrainedTp, target) and + ( + constrainedTp = target.getTypeParameter(_) + or + // a declaration may reference type parameters that are not declared on it, + // for example type parameters from the enclosing type + constrainedTp = target.getDeclaredType(_, _) + ) } /** @@ -1674,7 +1725,6 @@ module Make1 Input1> { TypeParameter tp ) { typeParameterHasConstraint(target, constrainedTp, constraint) and - tp = target.getTypeParameter(_) and tp = constraint.getTypeAt(pathToTp) and constrainedTp != tp } @@ -1683,7 +1733,7 @@ module Make1 Input1> { private predicate typeConstraintBaseTypeMatch( Access a, AccessEnvironment e, Declaration target, TypePath path, Type t, TypeParameter tp ) { - not exists(getTypeArgument(a, target, tp, _)) and + hasNotTypeArgument(a, target, tp) and exists(TypeMention constraint, TypeParameter constrainedTp, TypePath pathToTp | typeParameterConstraintHasTypeParameter(target, constrainedTp, constraint, pathToTp, tp) and AccessConstraint::satisfiesConstraint(a, e, target, constrainedTp, constraint, @@ -1691,8 +1741,12 @@ module Make1 Input1> { ) } + /** + * Holds if type parameter `tp`, which is in scope in `target`, can be matched + * to have type `t` at `path` via the inferred argument types of `a`. + */ pragma[inline] - private predicate typeMatch( + predicate typeMatch( Access a, AccessEnvironment e, Declaration target, TypePath path, Type t, TypeParameter tp ) { // A type given at the access corresponds directly to the type parameter @@ -1765,6 +1819,16 @@ module Make1 Input1> { ) ) or + exists( + Declaration target, TypePath prefix, TypePath requiredPrefix, TypePath suffix, + TypeParameter tp + | + AccessBaseType::baseTypeMatchAtTypeParameter(a, e, apos, target, tp, prefix, + requiredPrefix) and + typeMatch(a, e, target, requiredPrefix.appendInverse(suffix), result, tp) and + path = prefix.append(suffix) + ) + or exists( Declaration target, TypePath prefix, TypeMention constraint, TypePath pathToTypeParamInConstraint, TypePath pathToTypeParamInSub @@ -1805,44 +1869,86 @@ module Make1 Input1> { ) or exists(TypeParameter tp, TypePath suffix, TypePath mid, TypePath pathToTp | + exists(TypeParameter constrainedTp, DeclarationPosition dpos | + typeParameterConstraintHasTypeParameter(target, constrainedTp, constraint, pathToTp, + tp) and + accessDeclarationPositionMatch(apos, dpos) and + constrainedTp = target.getDeclaredType(dpos, _) + ) + | /* * Example: * * ```rust + * struct S { ... } + * * struct MyThing { ... } * * trait MyTrait { ... } * * impl MyTrait for MyThing { ... } * - * fn bar>(x: T1, y: T2) {} + * fn bar>(x: T1, y: Option) {} * - * let x : i32 = ...; + * let x: S = ...; * let y = MyThing(Default::default()); - * bar(x, y); + * bar(x, Some(y)); * ``` * - * At `term` = `bar(x, y)`, we have + * At `term` = `bar(x, Some(y))`, we have * - `constraint = MyTrait`, - * - `pathToTypeParamInConstraint` = `"B"`, - * - `pathToTypeParamInSub` = `"A"`, - * - `prefix` = `suffix` = `mid` = `""`, + * - `pathToTypeParamInConstraint` = `"MyTrait"`, + * - `pathToTypeParamInSub` = `"MyThing"`, + * - `prefix` = `"Option"` + * - `mid` = `""`, * - `tp = T1`, - * - `pathToTp` = `"B"`, and - * - `result` = `i32`. + * - `pathToTp` = `"MyTrait"`, and + * - `suffix` = `""` and `result` = `S`, or + * - `suffix` = `"S"` and `result` = `i32`. * - * That is, it allows us to infer that the type of `y` is `MyThing`. + * That is, it allows us to infer that the type of `y` is `MyThing>`. */ typeMatch(a, e, target, suffix, result, tp) and - exists(TypeParameter constrainedTp, DeclarationPosition dpos | - typeParameterConstraintHasTypeParameter(target, constrainedTp, constraint, pathToTp, - tp) and - accessDeclarationPositionMatch(apos, dpos) and - constrainedTp = target.getDeclaredType(dpos, _) - ) and pathToTp = pathToTypeParamInConstraint.appendInverse(mid) and path = prefix.append(pathToTypeParamInSub.append(mid).append(suffix)) + or + /* + * Example: + * + * ```rust + * struct S { ... } + * + * struct MyThing { ... } + * + * trait MyTrait { ... } + * + * impl MyTrait<[T;1]> for MyThing { ... } + * + * fn bar>(x: T1, y: Option) {} + * + * let x: S = ...; + * let y = MyThing(Default::default()); + * bar([x], Some(y)); + * ``` + * + * At `term` = `bar([x], Some(y))`, we have + * - `constraint = MyTrait`, + * - `pathToTypeParamInConstraint` = `"MyTrait.[;]"`, + * - `pathToTypeParamInSub` = `"MyThing"`, + * - `prefix` = `"Option"` + * - `mid` = `"[;]"`, + * - `tp = T1`, + * - `pathToTp` = `"MyTrait"`, and + * - `suffix` = `""` and `result` = `S`, or + * - `suffix` = `"S"` and `result` = `i32`. + * + * That is, it allows us to infer that the type of `y` is `MyThing>`. + */ + + pathToTypeParamInConstraint = pathToTp.appendInverse(mid) and + typeMatch(a, e, target, mid.appendInverse(suffix), result, tp) and + path = prefix.append(pathToTypeParamInSub.append(suffix)) ) ) } @@ -1869,8 +1975,8 @@ module Make1 Input1> { /** Gets the location of this declaration. */ Location getLocation(); - /** Gets the type parameter at position `tppos` of this declaration, if any. */ - TypeParameter getTypeParameter(TypeParameterPosition tppos); + /** Gets the `i`th type parameter of this declaration, if any. */ + TypeParameter getTypeParameter(int i); /** * Gets the declared type of this declaration at `path` for position `dpos`. @@ -1912,13 +2018,12 @@ module Make1 Input1> { Location getLocation(); /** - * Gets the type at `path` for the type argument at position `tapos` of - * this access, if any. + * Gets the type at `path` for the `i`th type argument of this access, if any. * * For example, in a method call like `M()`, `int` is an explicit * type argument at position `0`. */ - Type getTypeArgument(TypeArgumentPosition tapos, TypePath path); + Type getTypeArgument(int i, TypePath path); /** * Gets the inferred type at `path` for the position `apos` of this access. @@ -1996,5 +2101,1684 @@ module Make1 Input1> { not exists(tm.getTypeAt(TypePath::nil())) and exists(tm.getLocation()) } } + + private module Consistency2 = Consistency; + + /** + * Provides the input to `Make3`. + */ + signature module InputSig3 { + /** + * Reverse references to the cached predicates that reference + * `CachedStage::ref()`. + */ + default predicate cacheRevRef() { none() } + + /** + * This predicate must be implemented as an alias for the `inferType` predicate + * defined in this module, and is needed in order to provide default implementations + * inside this signature. + */ + Type inferTypeForDefaults(AstNode n, TypePath path); + + /** + * A special pseudo type used to represent cases where the actual type needs + * to be inferred using contextual information. For example, in + * + * ```rust + * let x = Vec::new(); + * x.push(42); + * ``` + * + * the element type of `x` is assigned an unknown type, which allows for type + * information to flow into `x` from the call to `push`. + */ + class UnknownType extends PseudoType; + + /** A boolean type. */ + class BoolType extends Type; + + /** An AST node. */ + class AstNode { + /** Gets a textual representation of this AST node. */ + string toString(); + + /** Gets the location of this AST node. */ + Location getLocation(); + } + + /** An expression. */ + class Expr extends AstNode; + + /** A cast expression. */ + class Cast extends Expr { + /** Gets the type being cast to. */ + TypeMention getType(); + } + + /** + * A switch. + */ + class Switch extends AstNode { + /** + * Gets the expression being switched on. + */ + Expr getExpr(); + + /** Gets the case at the specified (zero-based) `index`. */ + Case getCase(int index); + } + + /** A case in a switch. */ + class Case extends AstNode { + /** Gets a pattern being matched by this case. */ + AstNode getAPattern(); + + /** Gets the body of this case. */ + AstNode getBody(); + } + + /** A ternary conditional expression. */ + 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(); + } + + /** A binary expression. */ + class BinaryExpr extends Expr { + /** Gets the left operand of this binary expression. */ + Expr getLeftOperand(); + + /** Gets the right operand of this binary expression. */ + Expr getRightOperand(); + } + + /** A short-circuiting logical AND expression. */ + class LogicalAndExpr extends BinaryExpr; + + /** A short-circuiting logical OR expression. */ + class LogicalOrExpr extends BinaryExpr; + + /** + * An assignment expression, either compound or simple. + * + * Examples: + * + * ``` + * x = y + * sum += element + * ``` + */ + class Assignment extends BinaryExpr; + + /** A simple assignment expression, for example `x = y`. */ + class AssignExpr extends Assignment; + + /** A parenthesized expression. */ + class ParenExpr extends Expr { + Expr getExpr(); + } + + /** + * A variable, or an entity that behaves like a variable with respect to + * type inference, for example a local variable, `const` item, or `static` + * item in Rust. + */ + class Variable { + /** Gets the AST node that defines this variable, if any. */ + AstNode getDefiningNode(); + + /** Gets an access to this variable. */ + Expr getAnAccess(); + + /** Gets a textual representation of this variable. */ + string toString(); + + /** Gets the location of this variable. */ + Location getLocation(); + } + + /** A declaration. */ + class Declaration { + /** + * Gets the type mention of the entity that contains this declaration, if any. + * + * For example, if this declaration is a method, then the declaring type is the + * type of the class that contains the method. + * + * This type will be used to match against type qualifiers at invocations: + * + * ```rust + * struct MyStruct { ... } + * + * impl MyStruct { + * // ^^^^^^^^^^^ declaring type of `new` + * fn new() -> Self { ... } + * } + * + * let c = MyStruct::::new(); + * // ^^^^^^^^^^^^^ type qualifier; `C` should be matched against `B` + * ``` + * + * Local variable declarations will not have a declaring type (but they may have + * a _declared_ type). + */ + TypeMention getDeclaringType(); + + /** + * Gets the declared type of this declaration, if any. + * + * This can for example be the type of a variable or field, or the return type of + * a function. + */ + TypeMention getType(); + + /** Gets a textual representation of this declaration. */ + string toString(); + + /** Gets the location of this declaration. */ + Location getLocation(); + } + + /** + * A declaration of one or more variables, for example a `let` statement + * in Rust. + */ + class VariableDeclaration extends Declaration { + /** + * Holds if the type of the initializer and the pattern are certainly the same. + * + * This need not be the case in for example Rust, where implicit coercions may + * happen. + */ + predicate preservesInitializerType(); + + /** + * Gets the pattern of this declaration. + * + * Any variable declared by this declaration will have its defining node in the + * pattern, for example in `let Some(x) = opt`, the defining node of `x` is under + * the `Some` pattern. + */ + AstNode getPattern(); + + /** Gets the initializer of this declaration, if any. */ + AstNode getInitializer(); + } + + /** A field. */ + class Field extends Declaration; + + /** A field access expression, for example `x.f`. */ + class FieldAccess extends Expr { + /* Gets the receiver of this field access. */ + Expr getReceiver(); + + /** Gets the field being accessed. */ + Field getField(); + } + + /** + * Gets the inferred type of the receiver of `fa` at `path`, to be used when + * propagating type information out of the field access via the field declaration. + * + * By default, this is the inferred type of `fa.getReceiver()`, but for example in + * Rust, post-processing may be needed to take implicit dereferencing into account + */ + default Type inferFieldAccessReceiverType(FieldAccess fa, TypePath path) { + result = inferTypeForDefaults(fa.getReceiver(), path) + } + + /** + * Gets the contextually inferred type of field access receiver `receiver` + * at `path`. The context used is the field being accessed, for example in + * + * ```rust + * let tuple = (Default::default(), "hello"); + * let x: i32 = tuple.0; + * ``` + * + * we will be able to infer that the type of `Default::default()` is `i32`. + * + * This predicate must be implemented using `inferFieldAccessReceiverTypeContextualDefault`, + * performing the dual post-processing of `inferFieldAccessReceiverType`. + * + * When no post-processing is needed, simply implement this predicate as + * `result = inferFieldAccessReceiverTypeContextualDefault(_, receiver, path)`. + */ + Type inferFieldAccessReceiverTypeContextual(Expr receiver, TypePath path); + + /** A node that returns a value from a callable. */ + class Return extends AstNode { + /** Gets the expression evaluating to the value being returned, if any. */ + Expr getExpr(); + } + + /** A parameter. */ + class Parameter extends VariableDeclaration; + + /** + * Holds if `p` is an implicit parameter declaration corresponding + * to variable `v`. + */ + default predicate implicitParameterDecl(Parameter p, Variable v) { none() } + + /** A callable. This may include for example variant constructors. */ + class Callable extends Declaration { + /** + * Gets the `i`th type parameter of this element, if any. + * + * This should only include type parameters declared directly on the element + * itself; any type parameters that are in scope from the declaring element + * are handled via `getDeclaringType`: + * + * ```rust + * impl MyThing { + * // ^^^^^^^^^^ declaring type of `foo`; `T` is in scope, but not a type parameter of `foo` + * fn foo(self, x: U, y: T) { ... } + * // ^ `U` is the `0`th type parameter of `foo` + * } + * ``` + */ + TypeParameter getTypeParameter(int i); + + /** + * Gets an additional type parameter constraint for the given type parameter, + * which applies to this element. For example, in Rust, a function can apply + * additional constraints on type parameters belonging to the `impl` block + * that the function is defined in: + * + * ```rust + * impl MyThing { + * fn foo(self) where T: MyTrait { ... } + * // ^^^^^^^ additional constraint on `T` that applies to `foo` + * } + */ + TypeMention getAdditionalTypeParameterConstraint(TypeParameter tp); + + /** + * Gets the `i`th parameter of this element. + * + * This should also include (possibly implicit) `this`/`self` parameters. + */ + Parameter getParameter(int i); + + /** Gets the body of this callable, if any. */ + AstNode getBody(); + } + + /** Gets the immediately enclosing callable that contains `node`, if any. */ + Callable getEnclosingCallable(AstNode node); + + /** + * Gets the return type of `c` at `path`. + * + * By default, this is the declared type of `c` at `path`, but in for example Rust, + * `async` functions must have their return type wrapped in a `Future` type. + */ + default Type getCallableReturnType(Callable c, TypePath path) { + result = c.getType().getTypeAt(path) + } + + /** + * A context needed for resolving invocations. + * + * For example, in Rust a context is needed to resolve method calls, because of + * implicit dereferencing and borrowing. When not needed, simply use `Unit`. + */ + bindingset[this] + class InvocationResolutionContext { + /** Gets a textual representation of this context. */ + bindingset[this] + string toString(); + } + + /** An invocation expression, for example a call or a variant construction. */ + class Invocation extends Expr { + /** + * Gets the type at `path` of the explicit type qualifier for this invocation, + * if any. + * + * When present, this type qualifier will be matched against the declaring + * type of the target. + * + * Example: + * + * ```rust + * let opt = Option::::None; + * // ^^^^^^^^^^^^^ type qualifier + * ``` + */ + Type getTypeQualifier(TypePath path); + + /** + * Gets the explicit type argument at position `i` and `path` for this + * invocation, if any. + * + * This should only include type arguments that are supplied for type + * parameters belonging to the target of the invocation, and not type + * arguments that are part of a type qualifier (those should be handled via + * `getTypeQualifier`). + * + * Example: + * + * ```rust + * let x = Foo::::bar::(); + * // ^^^^^^^^^^ type qualifier + * // ^^^ type argument 0 + * ``` + */ + Type getTypeArgument(int i, TypePath path); + + /** + * Gets the `i`th argument of this invocation. + * + * This should include the receiver argument for method calls. + */ + Expr getArgument(int i); + + /** + * Gets the target of this invocation in the given resolution context. + * + * This predicate may depend on the `inferType` predicate, for example, + * in order to resolve a method call one needs to know the type of the + * receiver. + */ + Callable getTarget(InvocationResolutionContext ctx); + + /** + * Gets a target (candidate) of this invocation which will be used to + * match the type qualifier of this call against type parameters of the + * declaring type of the target (candidate). + * + * Unlike `getTarget`, this predicate cannot depend on the `inferType` + * predicate. + */ + Callable getATargetForTypeQualifierMatching(); + } + + /** + * Gets the inferred type of the `i`th argument of `invocation` at `path` in context + * `ctx`, to be used when propagating type information out of the invocation via the + * target. + * + * By default, this is the inferred type of `invocation.getArgument(i)`, but in for + * example Rust, post-processing may be needed to take implicit dereferencing and + * borrowing into account for the receiver type of a method call. + */ + bindingset[ctx] + default Type inferInvocationArgumentType( + Invocation invocation, InvocationResolutionContext ctx, int i, TypePath path + ) { + result = inferTypeForDefaults(invocation.getArgument(i), path) and + exists(ctx) + } + + /** + * Gets the contextually inferred type of invocation argument `arg` at `path`. + * The context used is the target of the invocation, for example in + * + * ```rust + * let x = Vec::new(); + * x.push(42); + * ``` + * + * the `push` context allows us to infer that the type of `x` is `Vec`. + * + * This predicate must be implemented using `inferInvocationArgumentTypeContextualDefault`, + * performing the dual post-processing of `inferInvocationArgumentType`. + * + * When no post-processing is needed, simply implement this predicate as + * `result = inferInvocationArgumentTypeContextualDefault(_, _, _, arg, path)`. + */ + Type inferInvocationArgumentTypeContextual(Expr arg, TypePath path); + + /** + * Gets the inferred type of `invocation`, found by propagating type information + * out of the invocation via the target. + * + * When no post-processing is needed, simply implement this predicate as + * `result = inferInvocationTypeDefault(invocation, _, path)`. + */ + Type inferInvocationType(Invocation invocation, TypePath path); + + /** + * Gets the contextually inferred type of `invocation`, to be used when propagating + * type information out of the invocation via the declared type of the target. + * + * For example, in + * + * ```rust + * fn id(x: T) -> T { x } + * let x = Default::default(); + * let y: i32 = id(x); + * ``` + * + * knowing that the return type of `id(x)` is `i32` allows us to infer that + * the type of `x` is also `i32`. + * + * This predicate should perform the dual post-processing of `inferInvocationType`. + */ + default Type inferInvocationTypeContextual(Invocation invocation, TypePath path) { + result = inferTypeForDefaults(invocation, path) + } + + /** A closure/lambda expression. */ + class Closure extends Callable { + /** Gets the expression that defines this closure (typically the entity itself). */ + Expr getDefiningExpr(); + } + + /** + * A special pseudo type representing a particular closure parameter without + * a type annotation. + * + * For such parameters, we want to infer the type based on the context in which + * the closure occurs, and while we could do this by assigning the parameter the + * pseudo type `UnknownType`, this would mean that the parameter type could also + * be inferred from _within_ the closure body, which we want to avoid. + * + * There are two ways for type information to flow contextually into a closure + * parameter: (A) either by knowing the types of arguments, or (B) by knowing the + * return type. Only case B makes use of `ClosureParameterPseudoType`s. + * + * ### Case A + * + * ```rust + * let c = |x| (x, false); + * let r = c(0); + * ``` + * + * 1. `c` is assigned the type `Fn(UnknownType) -> ...`, + * 2. since `0` has type `i32`, we can infer the `c` has type `Fn(i32) -> ...`, and + * 3. using contextual inference, we conclude that `x` has type `i32`. + * + * ### Case B + * + * ```rust + * let c = |x| (x, false); + * let r: i32 = c(Default::default()).0; + * ``` + * + * 1. `x` is assigned the pseudo type `T_x`, + * 2. infer that the return type of `c` is `(T_x, bool)` and hence that `c` has type + * `Fn(T_x) -> (T_x, bool)`, + * 3. this enables us to detect that contextual inference is needed, so we also + * assign `c` the type `Fn(T_x) -> (UnknownType, bool)`, + * 4. infer that `c(Default::default()).0` must have `UnknownType`, + * 5. infer, using contextual inference, that `c` has type `Fn(T_x) -> (i32, bool)`, + * and finally + * 6. since `c` also has type `Fn(T_x) -> (T_x, bool)`, we conclude that `x` has type + * `i32` and hence that `c` has type `Fn(i32) -> (i32, bool)`. + * + * Note that steps 2, 4, and 5 are standard inference steps. + */ + class ClosureParameterPseudoType extends PseudoType { + /** Gets the closure parameter that this type represents. */ + Parameter getParameter(); + } + + /** Gets the root type of closure `c`, for example `Fn` in Rust or `Func` in C#. */ + bindingset[c] + Type getClosureType(Closure c); + + /** + * Gets the type path corresponding to closure parameter `p`. This should be + * a path into the `getClosureType(c)` type, where `c` is the closure that `p` + * belongs to. + */ + TypePath getClosureParameterTypePath(Parameter p); + + /** + * Gets the type path corresponding to the return type of closure `c`. This should be + * a path into the `getClosureType(c)` type. + */ + bindingset[c] + TypePath getClosureReturnTypePath(Closure c); + + /** + * Holds if `n1` having type `t` at `prefix1.suffix` implies that `n2` has type + * `t` at `prefix2.suffix`, for any `suffix`. The converse should also hold, but + * only when `n1` already has an inferred type that matches `prefix1`. + * + * Use this predicate to implement any language-specific bottom-up inference logic. + * + * For example, in Rust one may implement the following two rules for the `?` operator: + * + * ```text + * x : Option x : Result + * ----------------- -------------------- + * x? : T x? : T + * ``` + * + * The rules examplify how the converse only holds when `n1` already has an inferred type + * that matches `prefix1`; knowing that `x?` has type `i32` does not necessarily imply that + * `x` has type `Option` or `Result`, we can only conclude this if we know + * that `x` has root type `Option` or `Result`, respectively. + * + * When contextual type information is needed at `n1`, this predicate may be applied + * _reversely_ (see an example in the module documentation). + */ + predicate stepLanguageSpecific(AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2); + + /** + * Gets the inferred type of `n` at `path`. + * + * Use this predicate to implement any language-specific inference logic, but only for + * nodes where `stepLanguageSpecific` cannot be used, such as leaf nodes in the AST. + */ + Type inferTypeLanguageSpecific(AstNode n, TypePath path); + + /** + * Gets the inferred certain type of `n` at `path`. + * + * Use this predicate to implement any language-specific inference logic. + * + * Any tuples included in this predicate will also automatically be included + * in `inferTypeLanguageSpecific`; if in doubt, use `inferTypeLanguageSpecific` instead. + */ + default Type inferTypeCertainLanguageSpecific(AstNode n, TypePath path) { none() } + } + + module Make3 { + private import Input3 + + pragma[nomagic] + private predicate closureStep(AstNode pattern, TypePath prefix1, Expr c, TypePath prefix2) { + exists(Closure c0, Parameter p | + pattern = p.getPattern() and + p = c0.getParameter(_) and + prefix1.isEmpty() and + prefix2 = getClosureParameterTypePath(p) and + c = c0.getDefiningExpr() + ) + } + + /** + * Provides logic for inferring certain type information. + * + * Unlike `inferType`, which may in general infer multiple types for a given node, + * `inferTypeCertain` will (ideally) only infer a single type for a given node, and + * `inferType` will not be allowed to infer types that are in conflict with known + * certain type information, which helps to avoid combinatorial explosions in the + * numbers of types inferred. + */ + private module Certain { + /** Gets the type of `n`, which has an explicit type annotation. */ + pragma[nomagic] + private Type inferAnnotatedType(AstNode n, TypePath path) { + exists(TypeMention tm | result = tm.getTypeAt(path) | + tm = n.(Cast).getType() + or + exists(VariableDeclaration decl | + tm = decl.getType() and + n = decl.getPattern() + ) + or + exists(Parameter p, Variable v | + implicitParameterDecl(p, v) and + tm = p.getType() and + n = v.getAnAccess() + ) + ) + or + exists(Closure c, TypePath suffix | + n = c.getDefiningExpr() and + result = getCallableReturnType(c, suffix) and + path = getClosureReturnTypePath(c).append(suffix) + ) + } + + predicate stepCertain(AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2) { + // language-specific inference steps are assumed to preserve certainty when + // they have a unique premise + stepLanguageSpecific(n1, prefix1, n2, prefix2) and + strictcount(AstNode n1_, TypePath prefix1_, TypePath prefix2_ | + stepLanguageSpecific(n1_, prefix1_, n2, prefix2_) + ) = 1 + or + prefix1.isEmpty() and + prefix2.isEmpty() and + ( + exists(Variable v | n1 = v.getDefiningNode() and n2 = v.getAnAccess()) + or + exists(VariableDeclaration decl | + decl.preservesInitializerType() and + not exists(decl.getType()) and + n1 = decl.getInitializer() and + n2 = decl.getPattern() + ) + or + n1 = n2.(ParenExpr).getExpr() + ) + } + + pragma[nomagic] + private Type inferTypeFromStepCertain(AstNode n, TypePath path) { + exists(TypePath prefix1, AstNode n2, TypePath prefix2, TypePath suffix | + result = inferTypeCertain(n2, prefix2.appendInverse(suffix)) and + path = prefix1.append(suffix) + | + stepCertain(n2, prefix2, n, prefix1) + or + closureStep(n2, prefix2, n, prefix1) + ) + } + + /** + * Gets the inferred certain type of `n` at `prefix`, where `prefix` is a proper + * prefix of a unique bottom-up inference step for `n`. + * + * For example, if we have a rule for Rust array repeat expressions like + * + * ```text + * e : T + * -------------------- + * [e; n] : [T; n] + * ``` + * + * then this predicate allows us to infer that the root type of `[e; n]` is + * `[...; n]`, regardless of whether we are able to infer the type of `e`. + */ + pragma[nomagic] + private Type inferTypeFromStepPrefixCertain(AstNode n, TypePath prefix) { + exists(TypePath path, TypeParameter tp | + path.isSnoc(prefix, tp) and + result.getATypeParameter() = tp + | + path = + unique(TypePath path0 | + stepLanguageSpecific(_, TypePath::nil(), n, path0) + or + stepCertain(_, TypePath::nil(), n, path0) + or + closureStep(_, TypePath::nil(), n, path0) + ) + or + exists(inferTypeFromStepPrefixCertain(n, path)) + ) + } + + private Type inferLogicalOperationType(AstNode n, TypePath path) { + ( + exists(LogicalAndExpr lae | n = [lae, lae.getLeftOperand(), lae.getRightOperand()]) or + exists(LogicalOrExpr loe | n = [loe, loe.getLeftOperand(), loe.getRightOperand()]) + ) and + result instanceof BoolType and + path.isEmpty() + } + + /** Gets the inferred certain type of `n` at `path`. */ + cached + Type inferTypeCertain(AstNode n, TypePath path) { + ( + CachedStage::ref() and + result = Input3::inferTypeCertainLanguageSpecific(n, path) + or + result = inferAnnotatedType(n, path) + or + result = inferTypeFromStepCertain(n, path) + or + result = inferTypeFromStepPrefixCertain(n, path) + or + result = inferLogicalOperationType(n, path) + or + exists(Closure c | + n = c.getDefiningExpr() and + result = getClosureType(c) and + path.isEmpty() + ) + or + infersCertainTypeAt(n, path, result.getATypeParameter()) + ) and + // type annotation may for example include unknown types, such as + // `x: Vec<_>` in Rust + not result instanceof PseudoType + } + + /** + * Holds if `n` has complete and certain type information at `path`. + */ + pragma[nomagic] + predicate hasInferredCertainType(AstNode n, TypePath path) { + exists(inferTypeCertain(n, path)) + } + + /** + * Holds if `n` has complete and certain type information at the type path + * `prefix.tp`. This entails that the type at `prefix` must be the type + * that declares `tp`. + */ + pragma[nomagic] + private predicate infersCertainTypeAt(AstNode n, TypePath prefix, TypeParameter tp) { + exists(TypePath path | + hasInferredCertainType(n, path) and + not path.isEmpty() and // implied by `isSnoc` below, but improves performance slightly + path.isSnoc(prefix, tp) + ) + } + + /** + * Holds if `n` having type `t` at `path` conflicts with certain type information + * at `prefix`. + */ + bindingset[n, prefix, path, t] + pragma[inline_late] + predicate certainTypeConflict(AstNode n, TypePath prefix, TypePath path, Type t) { + inferTypeCertain(n, path) != t + or + // If we infer that `n` has _some_ type at `T1.T2....Tn`, and we also + // know that `n` certainly has type `certainType` at `T1.T2...Ti`, `0 <= i < n`, + // then it must be the case that `T(i+1)` is a type parameter of `certainType`, + // otherwise there is a conflict. + // + // Below, `prefix` is `T1.T2...Ti` and `tp` is `T(i+1)`. + exists(TypePath suffix, TypeParameter tp, Type certainType | + path = prefix.appendInverse(suffix) and + tp = suffix.getHead() and + inferTypeCertain(n, prefix) = certainType and + not certainType.getATypeParameter() = tp + ) + } + } + + predicate inferTypeCertain = Certain::inferTypeCertain/2; + + private predicate step(AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2) { + stepLanguageSpecific(n1, prefix1, n2, prefix2) + or + Certain::stepCertain(n1, prefix1, n2, prefix2) + or + prefix1.isEmpty() and + prefix2.isEmpty() and + ( + exists(AssignExpr ae | + n1 = ae.getRightOperand() and + n2 = ae.getLeftOperand() + ) + or + exists(VariableDeclaration decl | + n1 = decl.getInitializer() and + n2 = decl.getPattern() + ) + or + exists(Switch switch | + n1 = switch.getExpr() and + n2 = switch.getCase(_).getAPattern() + ) + or + n1 = n2.(Switch).getCase(_).getBody() + or + n2 = any(ConditionalExpr ce | n1 = [ce.getThen(), ce.getElse()]) + or + exists(Return ret, Callable c | + n1 = ret.getExpr() and + c = getEnclosingCallable(ret) and + n2 = c.getBody() + ) + ) + or + exists(Closure c | + n1 = c.getBody() and + n2 = c.getDefiningExpr() and + prefix1.isEmpty() and + prefix2 = getClosureReturnTypePath(c) + ) + } + + pragma[nomagic] + private Type inferTypeFromStep(AstNode n, TypePath path) { + exists(TypePath prefix1, AstNode n2, TypePath prefix2, TypePath suffix | + result = inferType(n2, prefix2.appendInverse(suffix)) and + path = prefix1.append(suffix) + | + step(n2, prefix2, n, prefix1) + or + closureStep(n2, prefix2, n, prefix1) and + // prevent closure parameter pseudo types from escaping the closure + not exists(Closure c | + n = c.getDefiningExpr() and + result.(ClosureParameterPseudoType).getParameter() = c.getParameter(_) + ) + ) + } + + /** + * A matching configuration for resolving types of field accesses like `x.field`. + */ + private module FieldAccessMatchingInput implements MatchingInputSig { + private newtype TDeclarationPosition = + TReceiverPosition() or + TFieldPosition() + + class DeclarationPosition extends TDeclarationPosition { + predicate isReceiver() { this = TReceiverPosition() } + + predicate isField() { this = TFieldPosition() } + + string toString() { + this.isReceiver() and + result = "receiver" + or + this.isField() and + result = "field" + } + } + + final private class FieldFinal = Field; + + class Declaration extends FieldFinal { + TypeParameter getTypeParameter(int pos) { none() } + + Type getDeclaredType(DeclarationPosition dpos, TypePath path) { + dpos.isReceiver() and + result = this.getDeclaringType().getTypeAt(path) + or + dpos.isField() and + result = this.getType().getTypeAt(path) + } + } + + class AccessPosition = DeclarationPosition; + + predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { + apos = dpos + } + + final private class FieldAccessFinal = FieldAccess; + + class Access extends FieldAccessFinal { + Type getTypeArgument(int pos, TypePath path) { none() } + + Type getInferredType(AccessPosition apos, TypePath path) { + apos.isReceiver() and + result = inferFieldAccessReceiverType(this, path) + or + apos.isField() and + result = inferType(this, path) + } + + Declaration getTarget() { result = this.getField() } + } + } + + private module FieldAccessMatching = Matching; + + pragma[nomagic] + private Type inferFieldAccessType(FieldAccess fa, TypePath path) { + exists(FieldAccessMatchingInput::DeclarationPosition pos | + result = FieldAccessMatching::inferAccessType(fa, pos, path) and + pos.isField() + ) + } + + /** + * Gets the contextually inferred type of field access receiver `receiver` + * at `path`. For more info, see the QL doc of + * `InputSig3::inferFieldAccessReceiverTypeContextual`. + */ + pragma[nomagic] + Type inferFieldAccessReceiverTypeContextualDefault( + FieldAccess fa, Expr receiver, TypePath path + ) { + exists(FieldAccessMatchingInput::DeclarationPosition pos | + result = FieldAccessMatching::inferAccessType(fa, pos, path) and + pos.isReceiver() and + receiver = fa.getReceiver() and + // `inferTypeContextualCand2` performs the proper check for contextual + // typing, but we can already rule out cases where receivers don't have + // an unknown type anywhere + ContextualTyping::hasUnknownType(receiver) + ) + } + + final private class CallableFinal = Callable; + + final private class InvocationFinal = Invocation; + + /** + * A matching configuration for matching type qualifiers against type parameters + * of declaring types. + * + * While the type arguments of type qualifiers may often have to be matched + * directly against the corresponding type parameters, this need not always be the + * case. For example, in Rust, functions are not defined inside the type definitions, + * but rather inside `impl` blocks that will have their own type parameters: + * + * ```rust + * struct MyThing { ... } + * + * impl MyThing { + * fn foo(self) { ... } + * } + * + * MyThing::::foo(); + * // ^^^ should be matched against `A`, not `T` + * ``` + */ + private module InvocationTypeQualifierMatchingInput implements MatchingInputSig { + private import codeql.util.Unit + + class DeclarationPosition = Unit; + + class AccessPosition = Unit; + + predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { + apos = dpos + } + + class Declaration extends CallableFinal { + Type getDeclaredType(DeclarationPosition dpos, TypePath path) { + result = this.getDeclaringType().getTypeAt(path) and + exists(dpos) + } + } + + bindingset[decl] + TypeMention getATypeParameterConstraint(TypeParameter tp, Declaration decl) { + result = Input2::getATypeParameterConstraint(tp) and + exists(decl) + or + result = decl.getAdditionalTypeParameterConstraint(tp) + } + + class Access extends InvocationFinal { + Access() { exists(this.getTypeQualifier(_)) } + + Type getInferredType(AccessPosition apos, TypePath path) { + result = this.getTypeQualifier(path) and + exists(apos) + } + + Declaration getTarget() { result = this.getATargetForTypeQualifierMatching() } + } + } + + private module InvocationTypeQualifierMatching = + Matching; + + /** + * A matching configuration for matching types of arguments against types of + * parameters. + */ + private module InvocationMatchingInput implements MatchingWithEnvironmentInputSig { + import InvocationTypeQualifierMatchingInput + + class DeclarationPosition = int; + + class AccessPosition = DeclarationPosition; + + bindingset[apos] + bindingset[dpos] + predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { + apos = dpos + } + + /** Gets the position used to represent the return type of an invocation. */ + additional int getReturnPosition() { + result = min(int i | i = 0 or exists(any(Callable c).getParameter(i)) | i) - 1 + } + + private int getFirstTypeParameterPosition() { + result = min(int i | i = 0 or exists(any(Callable c).getTypeParameter(i)) | i) + } + + private predicate typeQualifierMatch( + Invocation invocation, Callable target, TypePath path, Type t, TypeParameter tp, int pos + ) { + InvocationTypeQualifierMatching::typeMatch(invocation, _, target, path, t, tp) and + pos = getFirstTypeParameterPosition() - getRank(tp) - 2 + } + + class Declaration extends CallableFinal { + TypeParameter getTypeParameter(int pos) { + // include type parameters that are matched via a type qualifier + typeQualifierMatch(_, this, _, _, result, pos) + or + // blanket implementations in Rust have a declaring type that is itself a + // type parameter; those should be matched against the entire type qualifier + result = this.getDeclaringType().getTypeAt(TypePath::nil()) and + pos = getFirstTypeParameterPosition() - 1 + or + result = super.getTypeParameter(pos) + } + + Type getDeclaredType(DeclarationPosition dpos, TypePath path) { + result = this.getParameter(dpos).getType().getTypeAt(path) + or + dpos = getReturnPosition() and + result = getCallableReturnType(this, path) + } + } + + bindingset[decl] + TypeMention getATypeParameterConstraint(TypeParameter tp, Declaration decl) { + result = InvocationTypeQualifierMatchingInput::getATypeParameterConstraint(tp, decl) + } + + class AccessEnvironment = InvocationResolutionContext; + + class Access extends InvocationFinal { + Type getTypeArgument(int pos, TypePath path) { + // A type argument found by matching the type qualifier against the declaring + // type of the target + typeQualifierMatch(this, _, path, result, _, pos) + or + pos = getFirstTypeParameterPosition() - 1 and + result = this.getTypeQualifier(path) + or + result = super.getTypeArgument(pos, path) + } + + pragma[nomagic] + private Type getInferredReturnType(AccessPosition apos, TypePath path) { + result = inferInvocationTypeContextual(this, path) and + apos = getReturnPosition() + } + + bindingset[e] + Type getInferredType(AccessEnvironment e, AccessPosition apos, TypePath path) { + result = inferInvocationArgumentType(this, e, apos, path) + or + result = this.getInferredReturnType(apos, path) and + exists(e) + } + + Declaration getTarget(AccessEnvironment e) { result = super.getTarget(e) } + } + } + + private module InvocationMatching = MatchingWithEnvironment; + + /** + * Gets the inferred type of `invocation`, found by propagating type information + * out of the invocation via the target. For more info, see the QL doc of + * `InputSig3::inferInvocationType`. + */ + pragma[nomagic] + Type inferInvocationTypeDefault( + Invocation invocation, InvocationResolutionContext ctx, TypePath path + ) { + result = + InvocationMatching::inferAccessType(invocation, ctx, + InvocationMatchingInput::getReturnPosition(), path) + } + + /** + * Gets the contextually inferred type of call argument `arg` at `path`. For more info, + * see the QL doc of `InputSig3::inferInvocationArgumentTypeContextual`. + */ + pragma[nomagic] + Type inferInvocationArgumentTypeContextualDefault( + Invocation invocation, InvocationResolutionContext ctx, int pos, Expr arg, TypePath path + ) { + arg = invocation.getArgument(pos) and + result = InvocationMatching::inferAccessType(invocation, ctx, pos, path) and + // `inferTypeContextualCand2` performs the proper check for contextual + // typing, but we can already rule out cases where arguments don't have + // an unknown type anywhere + ContextualTyping::hasUnknownType(arg) + } + + /** + * Provides logic related to contextual typing. By default, types are inferred + * bottom-up, but when AST nodes have an explicit `UnknownType`, contextual typing is + * allowed. + * + * This module identifies calls where the return type may need to be inferred from the + * context, and also implements logic for performing contextual inference. + */ + private module ContextualTyping { + pragma[nomagic] + private TypeParameter getAConstrained(TypeParameter tp) { + result = getATypeParameterConstraint(tp).getTypeAt(_) + } + + /** + * Holds if callable `c` mentions type parameter `tp` at some parameter, + * possibly via a constraint on another mentioned type parameter. + */ + pragma[nomagic] + private predicate mentionsTypeParameterAtParameter(Callable c, TypeParameter tp) { + tp = getAConstrained*(c.getParameter(_).getType().getTypeAt(_)) + } + + /** + * Holds if the return type of the callable `c` at `path` is type parameter + * `tp`, and `tp` does not appear in the type of any parameter of `c`. + * + * In this case, the context in which `p` is called may be needed to infer + * the instantiation of `tp`. + * + * This covers functions like `Default::default` and `Vec::new` in Rust. + */ + pragma[nomagic] + private predicate callableReturnContextTypedAt(Callable c, TypePath path, TypeParameter tp) { + tp = getCallableReturnType(c, path) and + not mentionsTypeParameterAtParameter(c, tp) + } + + bindingset[invocation, target] + pragma[inline_late] + private predicate hasTypeArgument(Invocation invocation, Callable target, TypeParameter tp) { + exists(Type t | + InvocationTypeQualifierMatching::typeMatch(invocation, _, _, _, t, tp) and + not t instanceof PseudoType + ) + or + exists(InvocationMatching::getTypeArgument(invocation, target, tp, _)) + } + + /** + * Holds if `invocation` resolves to some target where the return type at `path` + * may have to be inferred from the context. + */ + pragma[nomagic] + predicate needsContextualTyping(Invocation invocation, TypePath path) { + exists(Callable target, TypeParameter tp | + target = invocation.getATargetForTypeQualifierMatching() + or + target = invocation.getTarget(_) + | + callableReturnContextTypedAt(target, path, tp) and + // check that no explicit type arguments have been supplied that bind `tp` + not exists(TypeParameter supplied | + tp = getAConstrained*(supplied) and + hasTypeArgument(invocation, target, supplied) + ) + ) + } + + pragma[nomagic] + predicate hasUnknownTypeAt(AstNode n, TypePath path) { + inferType(n, path) instanceof UnknownType + } + + pragma[nomagic] + predicate hasUnknownType(AstNode n) { hasUnknownTypeAt(n, _) } + + pragma[nomagic] + private Type inferTypeContextualCand0(AstNode n, TypePath path) { + exists(Callable c | + n = c.getBody() and + result = getCallableReturnType(c, path) + ) + or + result = inferInvocationArgumentTypeContextual(n, path) + or + result = inferFieldAccessReceiverTypeContextual(n, path) + or + // steps are reversed in contextual typing + exists(TypePath path1, AstNode n2, TypePath path2, TypePath suffix | + result = inferType(n2, path2.appendInverse(suffix)) and + path = path1.append(suffix) and + step(n, path1, n2, path2) + ) + } + + pragma[nomagic] + private Type inferTypeContextualCand1(AstNode n, TypePath prefix, TypePath path) { + result = inferTypeContextualCand0(n, path) and + hasUnknownType(n) and + prefix = path.getAPrefix() and + // no need to propagate `UnknownType`s contextually; `n` must already have an + // `UnknownType` at some prefix of `path` + not result instanceof UnknownType + } + + pragma[nomagic] + private Type inferTypeContextualCand2(AstNode n, TypePath path) { + exists(TypePath prefix | + result = inferTypeContextualCand1(n, prefix, path) and + hasUnknownTypeAt(n, prefix) + ) + } + + /** + * Holds if `n` has `UnknownType` at some prefix of non-empty path `path`, and + * contextual inference is allowed at `path`. This is the case only if `path` is + * compatible with an already inferred type (contextually or not). + */ + pragma[nomagic] + private predicate isValidContextualNonEmptyPath(AstNode n, TypePath path) { + hasUnknownType(n) and + exists(TypePath prefix, TypeParameter tp | + tp = inferType(n, prefix).getATypeParameter() and + path = TypePath::snoc(prefix, tp) + ) + } + + /** + * Gets the contextually inferred type of `n` at `path`, if any. This is only + * allowed when `n` has `UnknownType` at some prefix of `path`, and furthermore + * if `path` is non-empty, then it must be compatible with an already inferred + * type (contextually or not). + */ + pragma[nomagic] + Type inferTypeContextual(AstNode n, TypePath path) { + result = inferTypeContextualCand2(n, path) and + ( + path.isEmpty() + or + isValidContextualNonEmptyPath(n, path) + ) + } + } + + private module ClosureTyping { + /** + * Holds if `n` at `path` has a closure parameter pseudo type + * corresponding to closure parameter `p`. + */ + pragma[nomagic] + private predicate hasClosureParameterPseudoType(AstNode n, TypePath path, Parameter p) { + // use `inferTypeCand` to also detect propagation into enclosing closure + p = inferTypeCand(n, path).(ClosureParameterPseudoType).getParameter() + } + + pragma[nomagic] + private predicate hasClosureParameterPseudoType(AstNode n) { + hasClosureParameterPseudoType(n, _, _) + } + + pragma[nomagic] + private predicate hasTypeAtPrefix(AstNode n, TypePath prefix, TypePath path) { + hasInferredType(n, path) and + hasClosureParameterPseudoType(n) and + prefix = path.getAPrefix() + } + + /** + * Holds if `n` has a closure parameter pseudo type for the parameter + * with pattern `pattern` at `prefix`, where `path = prefix.suffix`. + * + * This means that the parameter pattern can be inferred to have type + * `t` at `suffix` when `n` also has inferred type `t` at `path`. + */ + pragma[nomagic] + private predicate hasClosureParameterPseudoTypeAtPrefix( + AstNode n, TypePath path, AstNode pattern, TypePath suffix + ) { + exists(Parameter p, TypePath prefix | + hasClosureParameterPseudoType(n, prefix, p) and + hasTypeAtPrefix(n, prefix, path) and + path = prefix.appendInverse(suffix) and + pattern = p.getPattern() + ) + } + + pragma[nomagic] + private Type inferClosureParameterTypeCand(AstNode n, TypePath path) { + result = inferType(n, path) and + hasClosureParameterPseudoType(n) + } + + private Type inferClosureParameterPseudoType(AstNode n, TypePath path) { + // The `step X` comments below refer to the steps for 'Case B' in the + // QL doc for `ClosureParameterPseudoType`. + exists(Closure c, Parameter p | p = c.getParameter(_) | + // step 1 + n = p.getPattern() and + path.isEmpty() and + result.(ClosureParameterPseudoType).getParameter() = p + or + // step 3 + hasClosureParameterPseudoType(n, path, p) and + n = c.getDefiningExpr() and + result instanceof UnknownType + ) + or + // step 6 + exists(AstNode n0, TypePath path0 | + hasClosureParameterPseudoTypeAtPrefix(n0, path0, n, path) and + result = inferClosureParameterTypeCand(n0, path0) and + not (path.isEmpty() and result instanceof UnknownType) + ) + } + + Type inferClosureType(AstNode n, TypePath path) { + result = inferClosureParameterPseudoType(n, path) + or + // The `step X` comments below refer to the steps for 'Case A' in the + // QL doc for `ClosureParameterPseudoType`. + exists(Closure c, Parameter p, Expr def | + p = c.getParameter(_) and + not exists(p.getType()) and + def = c.getDefiningExpr() + | + // step 1 + n = def and + path = getClosureParameterTypePath(p) and + result instanceof UnknownType + or + // step 3 + n = p.getPattern() and + result = inferType(def, getClosureParameterTypePath(p).appendInverse(path)) and + not (path.isEmpty() and result instanceof UnknownType) + ) + } + } + + /** + * Holds if `n` has unknown type at `prefix`, but is still able to + * infer a known type at `suffix` for the `i`th type parameter of whatever + * the unknown type is. + * + * For example, in + * + * ```rust + * let mut x: Unresolvable = ...; + * + * x = resolvable(...); + * ``` + * + * even though the root type is unresolvable at the declaration, we are still + * able to infer that the first type argument is `i32`. We can then combine this + * information with later inferred type information. + */ + pragma[nomagic] + private predicate infersUnknownTypeArg( + AstNode n, TypePath prefix, int i, TypePath suffix, Type t + ) { + exists(TypeParameter tp, TypePath suffix0 | + ContextualTyping::hasUnknownTypeAt(n, prefix) and + suffix0.isCons(tp, suffix) and + tp = any(UnknownType ut).getPositionalTypeParameter(i) and + t = inferType(n, prefix.appendInverse(suffix0)) and + not t instanceof UnknownType + ) + } + + pragma[nomagic] + private predicate infersKnownAndUnknownType(AstNode n, TypePath path, int i, TypeParameter tp) { + ContextualTyping::hasUnknownTypeAt(n, path) and + exists(Type t | + t = inferType(n, path) and + not t instanceof UnknownType and + tp = t.getPositionalTypeParameter(i) + ) + } + + /** + * Gets an inferred candidate type of `n` at `path`. + * + * The type is only a candidate because it may later be filtered away, for + * example if it conflicts with certain type information. + */ + private Type inferTypeCand(AstNode n, TypePath path) { + result = Input3::inferTypeLanguageSpecific(n, path) + or + result = inferTypeFromStep(n, path) + or + result = inferInvocationType(n, path) + or + result = inferFieldAccessType(n, path) + or + result = ClosureTyping::inferClosureType(n, path) + or + ( + ContextualTyping::needsContextualTyping(n, path) + or + exists(VariableDeclaration decl | + n = decl.getPattern() and + not exists(decl.getInitializer()) and + not exists(decl.getType()) and + not n = any(Parameter p).getPattern() and // closure parameters are handled in `ClosureTyping` + path.isEmpty() + ) + ) and + result instanceof UnknownType + or + result = ContextualTyping::inferTypeContextual(n, path) + or + exists(TypePath prefix, int i, TypePath suffix, TypeParameter tp | + infersUnknownTypeArg(n, prefix, i, suffix, result) and + infersKnownAndUnknownType(n, prefix, i, tp) and + path = prefix.append(TypePath::cons(tp, suffix)) + ) + } + + /** + * Gets the inferred type of `n` at `path`. + */ + cached + Type inferType(AstNode n, TypePath path) { + CachedStage::ref() and + result = inferTypeCertain(n, path) + or + result = inferTypeCand(n, path) and + // Don't propagate type information into a node which conflicts with certain + // type information. + forall(TypePath prefix | + Certain::hasInferredCertainType(n, prefix) and + prefix.isPrefixOf(path) + | + not Certain::certainTypeConflict(n, prefix, path, result) + or + // propagate closure parameter pseudo types even when there is certain information + result instanceof ClosureParameterPseudoType + ) and + // prevent closure parameter pseudo types from escaping from the closure + not exists(Closure c | + n = c.getDefiningExpr() and + result.(ClosureParameterPseudoType).getParameter() = c.getParameter(_) + ) + or + // If `n` has an explicitly unknown type at `prefix` and at the same time a certain + // type at `prefix.suffix`, then extend the unknown type information to any path + // extending `prefix.suffix` where there is not also certain type information + exists(TypePath prefix, TypePath suffix, Type certain, TypeParameter tp | + inferTypeCand(n, prefix) instanceof UnknownType and + certain = inferTypeCertain(n, prefix.appendInverse(suffix)) and + tp = certain.getATypeParameter() and + path = prefix.append(suffix).append(TypePath::singleton(tp)) and + not exists(inferTypeCertain(n, path)) and + result instanceof UnknownType + ) + or + infersTypeAt(n, path, result.getATypeParameter()) + } + + /** + * Holds if `n` has type information at `path`. + */ + pragma[nomagic] + predicate hasInferredType(AstNode n, TypePath path) { exists(inferType(n, path)) } + + /** + * Holds if `n` has type information at the type path `prefix.tp`. This entails + * that the type at `prefix` must be the type that declares `tp`. + */ + pragma[nomagic] + private predicate infersTypeAt(AstNode n, TypePath prefix, TypeParameter tp) { + exists(TypePath path | + hasInferredType(n, path) and + not path.isEmpty() and // implied by `isSnoc` below, but improves performance slightly + path.isSnoc(prefix, tp) + ) + } + + /** + * Gets the inferred root type of `n`, if any. + */ + pragma[nomagic] + Type inferType(AstNode n) { result = inferType(n, TypePath::nil()) } + + /** + * The cached stage of this module. + * + * Should not be exposed. + */ + cached + module CachedStage { + /** Reference to the cached stage of this module. */ + cached + predicate ref() { any() } + + /** Reverse references to the predicates that reference `ref()`. */ + cached + predicate revRef() { + any() + or + cacheRevRef() + or + (exists(inferTypeCertain(_, _)) implies any()) + or + (exists(inferType(_, _)) implies any()) + } + } + + /** + * Provides consistency checks, including those from `Make2::Consistency`. + */ + module Consistency { + import Consistency2 + + query predicate nonUniqueUnknownType() { strictcount(UnknownType t) > 1 } + + query predicate closureParameterPseudoTypeOverlyBroad(ClosureParameterPseudoType t) { + t.getParameter() = + any(Parameter p | + exists(p.getType()) + or + not p = any(Closure c).getParameter(_) + ) + } + + query predicate closureParameterPseudoTypeMissing(Closure c, Parameter p) { + p = c.getParameter(_) and + not exists(p.getType()) and + not p = any(ClosureParameterPseudoType t).getParameter() + } + + query predicate nonUniqueCertainType(AstNode n, TypePath path) { + strictcount(inferTypeCertain(n, path)) > 1 + } + + /** + * Checks that `Input3::inferTypeForDefaults` is an alias for `inferType`. + */ + query predicate inferTypeForDefaultsMismatch(AstNode n, TypePath path, Type t) { + inferType(n, path) = t and + not Input3::inferTypeForDefaults(n, path) = t + or + Input3::inferTypeForDefaults(n, path) = t and + not inferType(n, path) = t + } + } + + /** + * Holds if the textual representation `repr` should be used for `n` in + * `TypeTest`. + */ + signature predicate typeTestAstNodeReprSig(AstNode n, string repr); + + /** + * Provides an inline testing configuration for type inference. Each inline + * expectation is optional and of the form + * + * ``` + * {type,certainType}=[@]: + * ``` + * + * Omitting `@` means the empty type path. + * + * For example, the following expectations assert that the type of `x` is `bool` + * and that the type of `vec` is `Vec`: + * + * ```rust + * let x = true; // type=x:bool + * let vec = Vec::new(); // type=vec@Vec:bool + * vec.push(x); + * ``` + * + * Note that the annotation `type=vec:Vec`, while valid, is redundant since it + * is implied by the annotation above. + */ + module TypeTest { + string getARelevantTag() { result = ["type", "certainType"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + none() + } + + predicate hasOptionalResult(Location location, string element, string tag, string value) { + exists(AstNode n, TypePath path, Type t, string at | + location = n.getLocation() and + (if path.isEmpty() then at = "" else at = "@" + TypePath::printTypePathVerbose(path)) and + value = element + at + ":" + t.toString() and + typeTestAstNodeRepr(n, element) + | + t = inferType(n, path) and + tag = "type" + or + t = inferTypeCertain(n, path) and + tag = "certainType" + ) + } + } + + /** Provides various debugging predicates. */ + module Debug { + /** + * Holds if `n` has reached the type path limit. This is usually indicative + * of an unintended type inference explosion. + */ + pragma[nomagic] + predicate atLimit(AstNode n) { + exists(TypePath path0 | + hasInferredType(n, path0) and path0.length() >= getTypePathLimit() + ) + } + + Type inferTypeForNodeAtLimit(AstNode n, TypePath path) { + result = inferType(n, path) and + atLimit(n) + } + + predicate countTypesForNodeAtLimit(AstNode n, int c) { + c = strictcount(Type t, TypePath path | t = inferTypeForNodeAtLimit(n, path)) + } + + pragma[nomagic] + private int countTypesAtPath(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 = countTypesAtPath(n, path, t) and + c = max(countTypesAtPath(_, _, _)) + } + + pragma[nomagic] + private predicate typePathLength(AstNode n, TypePath path, Type t, int len) { + t = inferType(n, path) and + len = path.length() + } + + predicate maxTypePath(AstNode n, TypePath path, Type t, int len) { + typePathLength(n, path, t, len) and + len = max(int i | typePathLength(_, _, _, i)) + } + + pragma[nomagic] + private int countTypePaths(AstNode n, TypePath path, Type t) { + t = inferType(n, path) and + result = strictcount(TypePath path0, Type t0 | t0 = inferType(n, path0)) + } + + predicate maxTypePaths(AstNode n, TypePath path, Type t, int c) { + c = countTypePaths(n, path, t) and + c = max(countTypePaths(_, _, _)) + } + } + } } } diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index 5cabb023ce1e..276beba764b8 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.38 +version: 0.0.41 groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 2c6907a4eaae..c1512dc28fe5 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.0.44 + +No user-facing changes. + +## 2.0.43 + +No user-facing changes. + +## 2.0.42 + +No user-facing changes. + ## 2.0.41 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.42.md b/shared/typetracking/change-notes/released/2.0.42.md new file mode 100644 index 000000000000..85ba02702b9f --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.42.md @@ -0,0 +1,3 @@ +## 2.0.42 + +No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.43.md b/shared/typetracking/change-notes/released/2.0.43.md new file mode 100644 index 000000000000..69732e6e3060 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.43.md @@ -0,0 +1,3 @@ +## 2.0.43 + +No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.44.md b/shared/typetracking/change-notes/released/2.0.44.md new file mode 100644 index 000000000000..47addacab148 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.44.md @@ -0,0 +1,3 @@ +## 2.0.44 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index dcd61b02de59..2032d0ef8b3f 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.41 +lastReleaseVersion: 2.0.44 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 854d8bae6da0..4616f1a031cd 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.41 +version: 2.0.44 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 503f9fa3d4f0..8f5444c5d611 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.58.md b/shared/typos/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.59.md b/shared/typos/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.60.md b/shared/typos/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 08ea3909354f..e0eab12f1948 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.0.60 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 712073d7668a..3da2374b153d 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.57 +version: 1.0.60 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 68a57b6e1bbc..54a333c22075 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.0.47 + +No user-facing changes. + +## 2.0.46 + +No user-facing changes. + +## 2.0.45 + +No user-facing changes. + ## 2.0.44 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.45.md b/shared/util/change-notes/released/2.0.45.md new file mode 100644 index 000000000000..ec5a10154c4d --- /dev/null +++ b/shared/util/change-notes/released/2.0.45.md @@ -0,0 +1,3 @@ +## 2.0.45 + +No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.46.md b/shared/util/change-notes/released/2.0.46.md new file mode 100644 index 000000000000..079c1c0785a8 --- /dev/null +++ b/shared/util/change-notes/released/2.0.46.md @@ -0,0 +1,3 @@ +## 2.0.46 + +No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.47.md b/shared/util/change-notes/released/2.0.47.md new file mode 100644 index 000000000000..83e9a785f337 --- /dev/null +++ b/shared/util/change-notes/released/2.0.47.md @@ -0,0 +1,3 @@ +## 2.0.47 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 2032d0ef8b3f..cda58352a1c8 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.44 +lastReleaseVersion: 2.0.47 diff --git a/shared/util/codeql/util/UnboundList.qll b/shared/util/codeql/util/UnboundList.qll index 6f05d6cddfc2..1d0ce06d7a82 100644 --- a/shared/util/codeql/util/UnboundList.qll +++ b/shared/util/codeql/util/UnboundList.qll @@ -52,6 +52,7 @@ module Make Input> { /** Gets the rank of element `e`, which is used internally in the string encoding. */ int getRank(Element e) { e = DenseRank::denseRank(result) } + cached private string encode(Element e) { result = getRank(e).toString() } bindingset[s] @@ -186,10 +187,15 @@ module Make Input> { UnboundList singleton(Element e) { result = encode(e) + "." } /** - * Gets the list obtained by appending the singleton list `e` - * onto `suffix`. + * Gets the list obtained by appending the element `e` onto `suffix`. */ bindingset[suffix] UnboundList cons(Element e, UnboundList suffix) { result = singleton(e).append(suffix) } + + /** + * Gets the list obtained by appending the element `e` after `prefix`. + */ + bindingset[prefix] + UnboundList snoc(UnboundList prefix, Element e) { result = prefix.append(singleton(e)) } } } diff --git a/shared/util/codeql/util/test/InlineExpectationsTest.qll b/shared/util/codeql/util/test/InlineExpectationsTest.qll index 4e0b2f678449..21c8c3a39f64 100644 --- a/shared/util/codeql/util/test/InlineExpectationsTest.qll +++ b/shared/util/codeql/util/test/InlineExpectationsTest.qll @@ -108,6 +108,9 @@ signature module InlineExpectationsTestSig { ); } + /** Gets the relative URL of the given location, if any. */ + string getRelativeUrl(Location location); + /** A comment that may contain inline expectations. */ class ExpectationComment { /** Gets the contents of this comment, _excluding_ the comment indicator. */ @@ -242,9 +245,13 @@ module Make { TActualResult( Impl::Location location, string element, string tag, string value, boolean optional ) { - TestImpl::hasActualResult(location, element, tag, value) and optional = false - or - TestImpl::hasOptionalResult(location, element, tag, value) and optional = true + ( + TestImpl::hasActualResult(location, element, tag, value) and optional = false + or + TestImpl::hasOptionalResult(location, element, tag, value) and optional = true + ) and + // test expectations can only be defined in source code + exists(Impl::getRelativeUrl(location)) } or TValidExpectation( Impl::ExpectationComment comment, string tag, string value, string knownFailure @@ -633,11 +640,7 @@ module TestPostProcessing { private string getQueryKind() { queryMetadata("kind", result) } - signature module InputSig { - string getRelativeUrl(Input::Location location); - } - - module Make Input2> { + module Make { private import InlineExpectationsTest as InlineExpectationsTest bindingset[loc] @@ -655,7 +658,7 @@ module TestPostProcessing { private string getRelativePathTo(string absolutePath) { exists(Input::Location loc | loc.hasLocationInfo(absolutePath, _, _, _, _) and - parseLocationString(Input2::getRelativeUrl(loc), result, _, _, _, _) + parseLocationString(Input::getRelativeUrl(loc), result, _, _, _, _) ) } @@ -665,7 +668,7 @@ module TestPostProcessing { exists(string data | queryResults(_, _, _, data) and parseLocationString(data, relativePath, sl, sc, el, ec) and - not Input2::getRelativeUrl(_) = data // avoid duplicate locations + not Input::getRelativeUrl(_) = data // avoid duplicate locations ) } @@ -711,7 +714,7 @@ module TestPostProcessing { LocationFromInput() { this = MkInputLocation(loc) } - override string getRelativeUrl() { result = Input2::getRelativeUrl(loc) } + override string getRelativeUrl() { result = Input::getRelativeUrl(loc) } override predicate hasLocationInfo(string file, int sl, int sc, int el, int ec) { loc.hasLocationInfo(file, sl, sc, el, ec) @@ -723,6 +726,8 @@ module TestPostProcessing { module TestImpl2 implements InlineExpectationsTestSig { final class Location = TestLocation; + string getRelativeUrl(Location location) { result = location.getRelativeUrl() } + final private class ExpectationCommentFinal = Input::ExpectationComment; class ExpectationComment extends ExpectationCommentFinal { diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 76bb1b6957a2..d452288f0631 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.44 +version: 2.0.47 groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index 19444d2622d1..495034190e7d 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.58.md b/shared/xml/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.59.md b/shared/xml/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.60.md b/shared/xml/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index 08ea3909354f..e0eab12f1948 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.0.60 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index c9251eb88c4d..d50c2ea0eab9 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.57 +version: 1.0.60 groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 8835951f9c51..a1d5995f2927 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.60 + +No user-facing changes. + +## 1.0.59 + +No user-facing changes. + +## 1.0.58 + +No user-facing changes. + ## 1.0.57 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.58.md b/shared/yaml/change-notes/released/1.0.58.md new file mode 100644 index 000000000000..f43459b898c0 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.58.md @@ -0,0 +1,3 @@ +## 1.0.58 + +No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.59.md b/shared/yaml/change-notes/released/1.0.59.md new file mode 100644 index 000000000000..071c0337a4d5 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.59.md @@ -0,0 +1,3 @@ +## 1.0.59 + +No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.60.md b/shared/yaml/change-notes/released/1.0.60.md new file mode 100644 index 000000000000..74ecf38fafa0 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.60.md @@ -0,0 +1,3 @@ +## 1.0.60 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 08ea3909354f..e0eab12f1948 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.57 +lastReleaseVersion: 1.0.60 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index ccc990b27d02..dd30c66848c2 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.57 +version: 1.0.60 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/yeast-macros/Cargo.toml b/shared/yeast-macros/Cargo.toml index 30c82d03b6eb..52eed1b17ed2 100644 --- a/shared/yeast-macros/Cargo.toml +++ b/shared/yeast-macros/Cargo.toml @@ -9,4 +9,4 @@ proc-macro = true [dependencies] proc-macro2 = "1.0" quote = "1.0" -syn = "2.0" +syn = "3.0" diff --git a/shared/yeast-macros/src/lib.rs b/shared/yeast-macros/src/lib.rs index e9f7b46d0570..5a227c5fb7dc 100644 --- a/shared/yeast-macros/src/lib.rs +++ b/shared/yeast-macros/src/lib.rs @@ -40,7 +40,6 @@ pub fn query(input: TokenStream) -> TokenStream { /// ```text /// (kind "literal") - leaf with static content /// (kind #{expr}) - leaf with computed content (expr.to_string()) -/// (kind $fresh) - leaf with auto-generated unique name /// {expr} - embed a Rust expression, dispatched via /// the `IntoFieldIds` trait: `Id` pushes a /// single id; iterables (`Vec`, @@ -76,12 +75,10 @@ pub fn query(input: TokenStream) -> TokenStream { /// error, so the choice between "unset the field" and "unwrap it" stays /// explicit. /// -/// Can be called with an explicit context or using the implicit context -/// from an enclosing `rule!`: +/// Uses the `BuildCtx` binding named `ctx` from the surrounding scope: /// /// ```text -/// tree!(ctx, (kind ...)) // explicit BuildCtx -/// tree!((kind ...)) // implicit context from rule! +/// tree!((kind ...)) /// ``` #[proc_macro] pub fn tree(input: TokenStream) -> TokenStream { @@ -97,12 +94,10 @@ pub fn tree(input: TokenStream) -> TokenStream { /// Like `tree!` but returns `Vec` and supports multiple top-level /// elements. All syntax from `tree!` is available. /// -/// Can be called with an explicit context or using the implicit context -/// from an enclosing `rule!`: +/// Uses the `BuildCtx` binding named `ctx` from the surrounding scope: /// /// ```text -/// trees!(ctx, (node1 ...) (node2 ...)) // explicit BuildCtx -/// trees!((node1 ...) (node2 ...)) // implicit context from rule! +/// trees!((node1 ...) (node2 ...)) /// ``` #[proc_macro] pub fn trees(input: TokenStream) -> TokenStream { @@ -113,6 +108,38 @@ pub fn trees(input: TokenStream) -> TokenStream { } } +/// Build one AST node whose root uses another node's source range. +/// +/// Uses the `BuildCtx` binding named `ctx` from the surrounding scope: +/// +/// ```text +/// tree_at!(source, (kind ...)) +/// ``` +#[proc_macro] +pub fn tree_at(input: TokenStream) -> TokenStream { + let input2: TokenStream2 = input.into(); + match parse::parse_tree_at_top(input2) { + Ok(output) => output.into(), + Err(err) => err.to_compile_error().into(), + } +} + +/// Build one AST node whose root spans a collection of nodes. +/// +/// Uses the `BuildCtx` binding named `ctx` from the surrounding scope: +/// +/// ```text +/// tree_spanning!(sources, (kind ...)) +/// ``` +#[proc_macro] +pub fn tree_spanning(input: TokenStream) -> TokenStream { + let input2: TokenStream2 = input.into(); + match parse::parse_tree_spanning_top(input2) { + Ok(output) => output.into(), + Err(err) => err.to_compile_error().into(), + } +} + /// Define a desugaring rule with query and transform in one declaration. /// /// ```text @@ -131,8 +158,6 @@ pub fn trees(input: TokenStream) -> TokenStream { /// (output_template) /// ) /// -/// // Shorthand: captures become fields on the output node -/// rule!((query ...) => output_kind) /// ``` /// /// Captures become Rust variables automatically: @@ -149,7 +174,7 @@ pub fn trees(input: TokenStream) -> TokenStream { /// Mutations to `ctx` are visible to the transform when the guard succeeds. /// Omitting the guard is equivalent to writing `where true`. /// -/// `tree!` and `trees!` can be used without explicit context inside `{...}`. +/// `tree!` and `trees!` use the rule transform's `ctx` binding inside `{...}`. #[proc_macro] pub fn rule(input: TokenStream) -> TokenStream { let input2: TokenStream2 = input.into(); @@ -167,8 +192,8 @@ pub fn rule(input: TokenStream) -> TokenStream { /// /// 1. A **bare rule body** `(query) => (template)` — the `rule!(...)` /// wrapper is implicit. -/// 2. An explicit `rule!(...)` invocation, possibly chained as -/// `rule!(...).repeated()` or path-prefixed as `yeast::rule!(...)`. +/// 2. An explicit `rule!(...)` invocation, possibly path-prefixed as +/// `yeast::rule!(...)`. /// 3. Any other expression returning a `Rule` (helper-function calls, /// conditionals). /// @@ -179,7 +204,7 @@ pub fn rule(input: TokenStream) -> TokenStream { /// [ /// (source_file (_)* @cs) => (top_level body: {..cs}), /// (simple_identifier) @id => (name_expr identifier: (identifier #{id})), -/// rule!((integer_literal) @lit => (int_literal #{lit})).repeated(), +/// rule!((integer_literal) @lit => (int_literal #{lit})), /// helper_fn(), /// ] /// }; diff --git a/shared/yeast-macros/src/parse.rs b/shared/yeast-macros/src/parse.rs index 87fb5435bcd1..37ecff08bd20 100644 --- a/shared/yeast-macros/src/parse.rs +++ b/shared/yeast-macros/src/parse.rs @@ -2,7 +2,10 @@ use proc_macro2::{Delimiter, Ident, Literal, Span, TokenStream, TokenTree}; use quote::quote; use std::iter::Peekable; use std::sync::atomic::{AtomicUsize, Ordering}; -use syn::Lifetime; +use syn::{ + Expr, Lifetime, Token, + parse::{Parse, ParseStream}, +}; type Tokens = Peekable; type Result = std::result::Result; @@ -332,28 +335,10 @@ fn parse_query_list(tokens: &mut Tokens) -> Result> { const IMPLICIT_CTX: &str = "ctx"; -/// Determine the context identifier: either explicit `ctx,` or the implicit -/// `ctx` from an enclosing `rule!`. -fn parse_ctx_or_implicit(tokens: &mut Tokens) -> Ident { - // Check if first token is an ident followed by a comma - let mut lookahead = tokens.clone(); - let is_explicit = matches!(lookahead.next(), Some(TokenTree::Ident(_))) - && matches!(lookahead.next(), Some(TokenTree::Punct(p)) if p.as_char() == ','); - - if is_explicit { - let ctx = expect_ident(tokens, "unreachable: ident was just peeked") - .expect("unreachable: ident was just peeked"); - let _ = tokens.next(); // consume comma - ctx - } else { - Ident::new(IMPLICIT_CTX, Span::call_site()) - } -} - -/// Parse `tree!(ctx, (template))` or `tree!((template))` — returns single `Id`. +/// Parse `tree!((template))` — returns single `Id`. pub fn parse_tree_top(input: TokenStream) -> Result { let mut tokens = input.into_iter().peekable(); - let ctx = parse_ctx_or_implicit(&mut tokens); + let ctx = Ident::new(IMPLICIT_CTX, Span::call_site()); let first = parse_direct_node(&mut tokens, &ctx, None)?; @@ -368,10 +353,10 @@ pub fn parse_tree_top(input: TokenStream) -> Result { Ok(quote! { { #first } }) } -/// Parse `trees!(ctx, ...)` or `trees!(...)` — returns `Vec`. +/// Parse `trees!(...)` — returns `Vec`. pub fn parse_trees_top(input: TokenStream) -> Result { let mut tokens = input.into_iter().peekable(); - let ctx = parse_ctx_or_implicit(&mut tokens); + let ctx = Ident::new(IMPLICIT_CTX, Span::call_site()); let items = parse_direct_list(&mut tokens, &ctx)?; if let Some(tok) = tokens.next() { return Err(syn::Error::new_spanned( @@ -388,6 +373,76 @@ pub fn parse_trees_top(input: TokenStream) -> Result { }) } +pub fn parse_tree_at_top(input: TokenStream) -> Result { + let LocatedTreeInput { + source, + template, + } = syn::parse2(input)?; + let mut tokens = template.into_iter().peekable(); + let ctx = Ident::new(IMPLICIT_CTX, Span::call_site()); + let node = parse_direct_node(&mut tokens, &ctx, None)?; + if let Some(tok) = tokens.next() { + return Err(syn::Error::new_spanned( + tok, + "unexpected token after tree_at! template", + )); + } + + Ok(quote! { + { + let __yeast_source: yeast::Id = { #source }; + let __yeast_source_range = #ctx + .ast + .get_node(__yeast_source) + .and_then(|node| node.source_range()); + let __yeast_node: yeast::Id = #node; + #ctx.set_node_source_range(__yeast_node, __yeast_source_range) + } + }) +} + +pub fn parse_tree_spanning_top(input: TokenStream) -> Result { + let LocatedTreeInput { + source: sources, + template, + } = syn::parse2(input)?; + let mut tokens = template.into_iter().peekable(); + let ctx = Ident::new(IMPLICIT_CTX, Span::call_site()); + let node = parse_direct_node(&mut tokens, &ctx, None)?; + if let Some(tok) = tokens.next() { + return Err(syn::Error::new_spanned( + tok, + "unexpected token after tree_spanning! template", + )); + } + + Ok(quote! { + { + let __yeast_source_range = ::std::iter::IntoIterator::into_iter({ #sources }) + .filter_map(|source: yeast::Id| { + #ctx.ast.get_node(source).and_then(|node| node.source_range()) + }) + .reduce(yeast::Range::union); + let __yeast_node: yeast::Id = #node; + #ctx.set_node_source_range(__yeast_node, __yeast_source_range) + } + }) +} + +struct LocatedTreeInput { + source: Expr, + template: TokenStream, +} + +impl Parse for LocatedTreeInput { + fn parse(input: ParseStream<'_>) -> syn::Result { + let source = input.parse()?; + input.parse::()?; + let template = input.parse()?; + Ok(Self { source, template }) + } +} + /// Parse a single node template and generate code that returns an `Id`. /// Handles: `(kind fields... children...)` and `{expr}`. /// @@ -422,7 +477,7 @@ fn parse_direct_node( } /// Parse the inside of a parenthesized node: `kind fields... children...` -/// or `kind "literal"` or `kind $fresh`. +/// or `kind "literal"`. fn parse_direct_node_inner( tokens: &mut Tokens, ctx: &Ident, @@ -474,14 +529,6 @@ fn parse_direct_node_inner( }); } - // Check for (kind $fresh) - if peek_is_dollar(tokens) { - tokens.next(); - let name = expect_ident(tokens, "expected fresh variable name after $")?; - let name_str = name.to_string(); - return Ok(quote! { #ctx.fresh(#kind_str, #name_str) }); - } - // Parse named fields let mut stmts = Vec::new(); let mut field_args = Vec::new(); @@ -768,8 +815,7 @@ fn extract_captures_inner( /// ``` /// /// Template bodies (`=> (kind …)`) never carry an annotation — the -/// output kind is the template root. The shorthand `=> kind` (no -/// body) also carries no annotation. See `parse_rule_top` for dispatch. +/// output kind is the template root. #[derive(Clone, Debug)] struct ReturnAnnotation { kind: Ident, @@ -793,7 +839,6 @@ enum AnnotationMultiplicity { /// `kind {` → annotation (single) /// `kind? {` → annotation (optional) /// `kind* {` → annotation (repeated) -/// `kind` → shorthand form (no `{` follows) — NOT an annotation /// anything else → template or bare block — NOT an annotation fn try_consume_return_annotation(tokens: &mut Tokens) -> Result> { // Must start with an identifier (the kind name). @@ -881,15 +926,13 @@ pub fn parse_rule_top(input: TokenStream) -> Result { let raw_bindings = capture_bindings(raw_captures.into_iter()); let translated_bindings = capture_bindings(translated_captures.into_iter()); - // Parse transform: the token(s) after `=>` fall into one of three + // Parse transform: the token(s) after `=>` fall into one of two // shapes, dispatched in order: // // 1. `kind [? | *] { rust_body }` — annotated Rust body (NEW). // Static-analysis-ready: the annotation declares the output // kind and multiplicity in the schema's own vocabulary. - // 2. `kind` alone — shorthand: emit `(kind field: {@cap})…` from - // the query's captures. - // 3. anything else — full template form (`(kind …)` or bare + // 2. anything else — full template form (`(kind …)` or bare // `{ … }` splice via `parse_direct_list`). let annotation = try_consume_return_annotation(&mut tokens)?; @@ -926,65 +969,6 @@ pub fn parse_rule_top(input: TokenStream) -> Result { yeast::IntoFieldIds::extend_into(__value, &mut __ids); __ids } - } else if peek_is_field(&mut tokens) && { - // Shorthand form: bare identifier = output node kind. - // Auto-generate template from captures. - let mut lookahead = tokens.clone(); - lookahead.next(); // skip ident - lookahead.peek().is_none() // nothing after = shorthand - } { - let output_kind = expect_ident(&mut tokens, "expected output node kind")?; - let output_kind_str = output_kind.to_string(); - - // Generate field assignments from captures - let field_stmts: Vec = captures - .iter() - .map(|cap| { - let name = Ident::new(&cap.name, Span::call_site()); - let name_str = &cap.name; - match cap.multiplicity { - CaptureMultiplicity::Repeated => quote! { - let __field_id = #ctx_ident.ast.field_id_for_name(#name_str) - .unwrap_or_else(|| panic!("field '{}' not found", #name_str)); - __fields.insert( - __field_id, - #name.into_iter() - .map(::std::convert::Into::::into) - .collect(), - ); - }, - CaptureMultiplicity::Optional => quote! { - let __field_id = #ctx_ident.ast.field_id_for_name(#name_str) - .unwrap_or_else(|| panic!("field '{}' not found", #name_str)); - if let Some(__id) = #name { - __fields.entry(__field_id).or_insert_with(Vec::new) - .push(::std::convert::Into::::into(__id)); - } - }, - CaptureMultiplicity::Single => quote! { - let __field_id = #ctx_ident.ast.field_id_for_name(#name_str) - .unwrap_or_else(|| panic!("field '{}' not found", #name_str)); - __fields.entry(__field_id).or_insert_with(Vec::new) - .push(::std::convert::Into::::into(#name)); - }, - } - }) - .collect(); - - quote! { - let __kind = #ctx_ident.ast.id_for_node_kind(#output_kind_str) - .unwrap_or_else(|| panic!("node kind '{}' not found", #output_kind_str)); - let mut __fields = std::collections::BTreeMap::new(); - #(#field_stmts)* - let __id = #ctx_ident.ast.create_node_with_range( - __kind, - yeast::NodeContent::DynamicString(String::new()), - __fields, - true, - __source_range, - ); - vec![__id] - } } else { // Reject bare `{ ... }` transforms — they used to be accepted // as either a Rust body producing a `Vec` or a template @@ -1036,20 +1020,18 @@ pub fn parse_rule_top(input: TokenStream) -> Result { let #ctx_ident = __user_ctx; Ok(#guard) }), - Box::new(|__ast: &mut yeast::Ast, mut __captures: yeast::captures::Captures, __fresh: &yeast::tree_builder::FreshScope, __source_range: Option, __user_ctx: &mut _, __translator: yeast::TranslatorHandle<'_, _>| { + Box::new(|__ast: &mut yeast::Ast, mut __captures: yeast::captures::Captures, __source_range: Option, __user_ctx: &mut _, __translator: yeast::TranslatorHandle<'_, _>| { // Auto-translation prefix: recursively translate every // captured node before invoking the user's transform body, // except for `@@name` captures listed in `__skip` which the // body consumes raw. - // For OneShot rules this preserves the legacy behaviour - // (input-schema captures translated to output-schema - // nodes); for Repeating rules it is a no-op. let __skip: &[&str] = &[#(#raw_capture_names),*]; __translator.auto_translate_captures(&mut __captures, __ast, __user_ctx, __skip)?; #(#raw_bindings)* #(#translated_bindings)* - let mut #ctx_ident = yeast::build::BuildCtx::with_translator(__ast, &__captures, __fresh, __source_range, __user_ctx, __translator); + let mut #ctx_ident = yeast::build::BuildCtx::with_translator(__ast, &__captures, __source_range, __user_ctx, __translator); let __result: Vec = { #transform_body }; + let __result = #ctx_ident.finish_rule(__result); Ok(__result) }), ) @@ -1110,10 +1092,6 @@ fn peek_is_literal(tokens: &mut Tokens) -> bool { matches!(tokens.peek(), Some(TokenTree::Literal(_))) } -fn peek_is_dollar(tokens: &mut Tokens) -> bool { - matches!(tokens.peek(), Some(TokenTree::Punct(p)) if p.as_char() == '$') -} - fn peek_is_hash(tokens: &mut Tokens) -> bool { matches!(tokens.peek(), Some(TokenTree::Punct(p)) if p.as_char() == '#') } @@ -1215,8 +1193,8 @@ fn expect_repetition(tokens: &mut Tokens) -> Result { /// Each item in the bracketed list can be: /// * a **bare rule body** `(query) => (template)` — wrapped implicitly /// in `yeast::rule! { ... }` for codegen; -/// * an explicit `rule!(...)` (or `rule!(...).repeated()`, -/// `yeast::rule!(...)`, etc.) — passed through verbatim; +/// * an explicit `rule!(...)` (including `yeast::rule!(...)`) — passed +/// through verbatim; /// * any other expression returning a `Rule` (helper-function calls, /// conditionals) — passed through verbatim. /// @@ -1482,8 +1460,5 @@ mod rules_tests { // Match expressions inside a block: `=>` is inside braces. let toks = quote! { { match x { 1 => 2, _ => 3 } } }; assert!(!has_top_level_arrow(&toks)); - // Bare shorthand form: top-level `=>` followed by a bare ident. - let toks = quote! { (a) => kind }; - assert!(has_top_level_arrow(&toks)); } } diff --git a/shared/yeast-schema/src/node_types_yaml.rs b/shared/yeast-schema/src/node_types_yaml.rs index 97052f9a835b..2bdcc02945e9 100644 --- a/shared/yeast-schema/src/node_types_yaml.rs +++ b/shared/yeast-schema/src/node_types_yaml.rs @@ -5,8 +5,11 @@ /// ```yaml /// supertypes: /// _expression: -/// - assignment -/// - binary +/// subtypes: +/// - assignment +/// - binary +/// fields: +/// operand*: _expression /// /// named: /// assignment: @@ -31,13 +34,39 @@ use serde_json::json; #[derive(Deserialize, Default)] struct YamlNodeTypes { #[serde(default)] - supertypes: BTreeMap>, + supertypes: BTreeMap, #[serde(default)] named: BTreeMap>>, #[serde(default)] unnamed: Vec, } +#[derive(Deserialize)] +#[serde(untagged)] +enum YamlSupertype { + Subtypes(Vec), + Detailed { + subtypes: Vec, + #[serde(default)] + fields: BTreeMap, + }, +} + +impl YamlSupertype { + fn subtypes(&self) -> &[TypeRef] { + match self { + Self::Subtypes(subtypes) | Self::Detailed { subtypes, .. } => subtypes, + } + } + + fn fields(&self) -> Option<&BTreeMap> { + match self { + Self::Subtypes(_) => None, + Self::Detailed { fields, .. } => Some(fields), + } + } +} + /// A reference to a node type. Can be: /// - a plain string (resolved by looking up named vs unnamed) /// - a map `{unnamed: "name"}` to force unnamed interpretation @@ -151,16 +180,19 @@ pub fn convert(yaml_input: &str) -> Result { let mut output = Vec::new(); // 1. Supertypes - for (name, members) in &yaml.supertypes { - let subtypes: Vec<_> = members + for (name, supertype) in &yaml.supertypes { + let subtypes: Vec<_> = supertype + .subtypes() .iter() .map(|m| resolve_type_ref(m, &named_types, &unnamed_types)) .collect(); - output.push(json!({ + let mut entry = json!({ "type": name, "named": true, "subtypes": subtypes, - })); + }); + add_fields_to_json_entry(&mut entry, supertype.fields(), &named_types, &unnamed_types); + output.push(entry); } // 2. Named nodes @@ -186,47 +218,56 @@ pub fn convert(yaml_input: &str) -> Result { Some(m) => m, }; + let mut entry = json!({ + "type": name, + "named": true, + "fields": {}, + }); + add_fields_to_json_entry(&mut entry, Some(fields_map), &named_types, &unnamed_types); + + output.push(entry); + } + + fn add_fields_to_json_entry( + entry: &mut serde_json::Value, + fields: Option<&BTreeMap>, + named_types: &BTreeSet, + unnamed_types: &BTreeSet, + ) { let mut json_fields = serde_json::Map::new(); - let mut json_children: Option = None; + let mut json_children = None; - for (raw_field_name, type_refs) in fields_map { + for (raw_field_name, type_refs) in fields.into_iter().flatten() { let spec = parse_field_name(raw_field_name); let types: Vec<_> = type_refs .clone() .into_vec() .iter() - .map(|t| resolve_type_ref(t, &named_types, &unnamed_types)) + .map(|t| resolve_type_ref(t, named_types, unnamed_types)) .collect(); - - // Cloning to make the borrow checker happy let field_info = json!({ "multiple": spec.multiple, "required": spec.required, "types": types, }); - if spec.name.is_none() { - // $children - json_children = Some(field_info); + if let Some(name) = spec.name { + json_fields.insert(name, field_info); } else { - json_fields.insert(spec.name.unwrap(), field_info); + json_children = Some(field_info); } } - let mut entry = json!({ - "type": name, - "named": true, - "fields": json_fields, - }); - + entry + .as_object_mut() + .unwrap() + .insert("fields".to_string(), json_fields.into()); if let Some(children) = json_children { entry .as_object_mut() .unwrap() .insert("children".to_string(), children); } - - output.push(entry); } // 3. Unnamed tokens @@ -265,35 +306,53 @@ pub fn extend_schema_from_yaml( fn record_field_order(schema: &mut crate::schema::Schema, yaml_input: &str) -> Result<(), String> { let value: serde_yaml::Value = serde_yaml::from_str(yaml_input) .map_err(|e| format!("Failed to parse YAML for field order: {e}"))?; - let Some(named) = value.get("named").and_then(|v| v.as_mapping()) else { - return Ok(()); - }; - for (node_name, fields) in named { - let Some(node_name) = node_name.as_str() else { - continue; - }; - let Some(fields) = fields.as_mapping() else { - continue; // node with no fields (null) - }; - let mut order = Vec::new(); - for (raw_field_name, _) in fields { - let Some(raw) = raw_field_name.as_str() else { - continue; - }; - // Skip the unnamed/`child` slot; the dump handles it separately. - if let Some(name) = parse_field_name(raw).name { - order.push(schema.register_field(&name)); - } + record_field_order_for_nodes(schema, value.get("named").and_then(|v| v.as_mapping())); + let supertypes = value.get("supertypes").and_then(|v| v.as_mapping()); + if let Some(supertypes) = supertypes { + for (node_name, declaration) in supertypes { + let fields = declaration + .as_mapping() + .and_then(|mapping| mapping.get("fields")); + record_field_order_for_node(schema, node_name, fields); } - schema.set_field_order(node_name, order); } Ok(()) } -fn apply_yaml_to_schema( - yaml: &YamlNodeTypes, +fn record_field_order_for_nodes( + schema: &mut crate::schema::Schema, + nodes: Option<&serde_yaml::Mapping>, +) { + for (node_name, fields) in nodes.into_iter().flatten() { + record_field_order_for_node(schema, node_name, Some(fields)); + } +} + +fn record_field_order_for_node( schema: &mut crate::schema::Schema, + node_name: &serde_yaml::Value, + fields: Option<&serde_yaml::Value>, ) { + let Some(node_name) = node_name.as_str() else { + return; + }; + let Some(fields) = fields.and_then(|fields| fields.as_mapping()) else { + return; + }; + let mut order = Vec::new(); + for (raw_field_name, _) in fields { + let Some(raw) = raw_field_name.as_str() else { + continue; + }; + // Skip the unnamed/`child` slot; the dump handles it separately. + if let Some(name) = parse_field_name(raw).name { + order.push(schema.register_field(&name)); + } + } + schema.set_field_order(node_name, order); +} + +fn apply_yaml_to_schema(yaml: &YamlNodeTypes, schema: &mut crate::schema::Schema) { // Register all supertypes as node kinds for name in yaml.supertypes.keys() { schema.register_kind(name); @@ -302,14 +361,10 @@ fn apply_yaml_to_schema( // Register named node kinds and their fields for (name, fields_opt) in &yaml.named { schema.register_kind(name); - if let Some(fields) = fields_opt { - for raw_field_name in fields.keys() { - let spec = parse_field_name(raw_field_name); - if let Some(field_name) = &spec.name { - schema.register_field(field_name); - } - } - } + register_fields(schema, fields_opt.as_ref()); + } + for supertype in yaml.supertypes.values() { + register_fields(schema, supertype.fields()); } // Register unnamed tokens as node kinds @@ -326,8 +381,9 @@ fn apply_yaml_to_schema( } let unnamed_types: BTreeSet = yaml.unnamed.iter().cloned().collect(); - for (supertype, members) in &yaml.supertypes { - let node_types = members + for (supertype, declaration) in &yaml.supertypes { + let node_types = declaration + .subtypes() .iter() .map(|m| { let (kind, named) = resolve_type_ref_pair(m, &named_types, &unnamed_types); @@ -339,41 +395,74 @@ fn apply_yaml_to_schema( // Register allowed field child types for type checking. for (parent_kind, fields_opt) in &yaml.named { - let Some(fields) = fields_opt else { - continue; - }; - - for (raw_field_name, type_refs) in fields { - let spec = parse_field_name(raw_field_name); - let field_id = match &spec.name { - Some(name) => schema.register_field(name), - None => CHILD_FIELD, - }; + apply_fields_to_schema( + schema, + parent_kind, + fields_opt.as_ref(), + &named_types, + &unnamed_types, + ); + } + for (parent_kind, supertype) in &yaml.supertypes { + apply_fields_to_schema( + schema, + parent_kind, + supertype.fields(), + &named_types, + &unnamed_types, + ); + } +} - let mut node_types = type_refs - .clone() - .into_vec() - .into_iter() - .map(|type_ref| { - let (kind, named) = resolve_type_ref_pair(&type_ref, &named_types, &unnamed_types); - crate::schema::NodeType { kind, named } - }) - .collect::>(); - node_types.sort_by(|a, b| a.kind.cmp(&b.kind).then(a.named.cmp(&b.named))); - node_types.dedup_by(|a, b| a.kind == b.kind && a.named == b.named); - schema.set_field_types(parent_kind, field_id, node_types); - schema.set_field_cardinality( - parent_kind, - field_id, - crate::schema::FieldCardinality { - multiple: spec.multiple, - required: spec.required, - }, - ); +fn register_fields( + schema: &mut crate::schema::Schema, + fields: Option<&BTreeMap>, +) { + if let Some(fields) = fields { + for raw_field_name in fields.keys() { + if let Some(field_name) = parse_field_name(raw_field_name).name { + schema.register_field(&field_name); + } } } } +fn apply_fields_to_schema( + schema: &mut crate::schema::Schema, + parent_kind: &str, + fields: Option<&BTreeMap>, + named_types: &BTreeSet, + unnamed_types: &BTreeSet, +) { + for (raw_field_name, type_refs) in fields.into_iter().flatten() { + let spec = parse_field_name(raw_field_name); + let field_id = match &spec.name { + Some(name) => schema.register_field(name), + None => CHILD_FIELD, + }; + let mut node_types = type_refs + .clone() + .into_vec() + .into_iter() + .map(|type_ref| { + let (kind, named) = resolve_type_ref_pair(&type_ref, named_types, unnamed_types); + crate::schema::NodeType { kind, named } + }) + .collect::>(); + node_types.sort_by(|a, b| a.kind.cmp(&b.kind).then(a.named.cmp(&b.named))); + node_types.dedup_by(|a, b| a.kind == b.kind && a.named == b.named); + schema.set_field_types(parent_kind, field_id, node_types); + schema.set_field_cardinality( + parent_kind, + field_id, + crate::schema::FieldCardinality { + multiple: spec.multiple, + required: spec.required, + }, + ); + } +} + pub fn schema_from_yaml(yaml_input: &str) -> Result { let mut schema = crate::schema::Schema::new(); extend_schema_from_yaml(&mut schema, yaml_input)?; @@ -411,6 +500,12 @@ struct JsonFieldInfo { types: Vec, } +struct JsonSupertype { + subtypes: Vec, + fields: BTreeMap, + children: Option, +} + /// Convert a tree-sitter node-types.json string to the YAML format. pub fn convert_from_json(json_input: &str) -> Result { let nodes: Vec = @@ -427,7 +522,7 @@ pub fn convert_from_json(json_input: &str) -> Result { } } - let mut supertypes: BTreeMap> = BTreeMap::new(); + let mut supertypes: BTreeMap = BTreeMap::new(); let mut named: BTreeMap>> = BTreeMap::new(); let mut unnamed: Vec = Vec::new(); @@ -438,7 +533,14 @@ pub fn convert_from_json(json_input: &str) -> Result { } if !node.subtypes.is_empty() { - supertypes.insert(node.kind, node.subtypes); + supertypes.insert( + node.kind, + JsonSupertype { + subtypes: node.subtypes, + fields: node.fields, + children: node.children, + }, + ); continue; } @@ -463,13 +565,35 @@ pub fn convert_from_json(json_input: &str) -> Result { // Supertypes if !supertypes.is_empty() { writeln!(out, "supertypes:").unwrap(); - for (name, members) in &supertypes { - writeln!(out, " {name}:").unwrap(); - for member in members { + for (name, supertype) in &supertypes { + if supertype.fields.is_empty() && supertype.children.is_none() { + writeln!(out, " {name}:").unwrap(); + } else { + writeln!(out, " {name}:").unwrap(); + writeln!(out, " subtypes:").unwrap(); + } + let indent = if supertype.fields.is_empty() && supertype.children.is_none() { + " " + } else { + " " + }; + for member in &supertype.subtypes { let ref_str = format_type_ref(&member.kind, member.named, &all_named, &all_unnamed); - writeln!(out, " - {ref_str}").unwrap(); + writeln!(out, "{indent}- {ref_str}").unwrap(); + } + if !supertype.fields.is_empty() || supertype.children.is_some() { + writeln!(out, " fields:").unwrap(); + write_json_fields( + &mut out, + &supertype.fields, + supertype.children.as_ref(), + " ", + &all_named, + &all_unnamed, + ); } } + writeln!(out).unwrap(); } @@ -483,31 +607,7 @@ pub fn convert_from_json(json_input: &str) -> Result { } Some(fields) => { writeln!(out, " {name}:").unwrap(); - for (field_name, info) in fields { - let suffix = field_suffix(info.multiple, info.required); - let yaml_name = if field_name == "$children" { - format!("$children{suffix}") - } else { - format!("{field_name}{suffix}") - }; - - let type_refs: Vec = info - .types - .iter() - .map(|t| format_type_ref(&t.kind, t.named, &all_named, &all_unnamed)) - .collect(); - - if type_refs.len() == 1 { - writeln!(out, " {yaml_name}: {}", type_refs[0]).unwrap(); - } else { - let list = type_refs - .iter() - .map(|s| s.as_str()) - .collect::>() - .join(", "); - writeln!(out, " {yaml_name}: [{list}]").unwrap(); - } - } + write_json_fields(&mut out, fields, None, " ", &all_named, &all_unnamed); } } } @@ -525,6 +625,38 @@ pub fn convert_from_json(json_input: &str) -> Result { Ok(out) } +fn write_json_fields( + out: &mut String, + fields: &BTreeMap, + children: Option<&JsonFieldInfo>, + indent: &str, + all_named: &BTreeSet, + all_unnamed: &BTreeSet, +) { + for (field_name, info) in fields + .iter() + .map(|(name, info)| (Some(name.as_str()), info)) + .chain(children.map(|info| (None, info))) + { + let suffix = field_suffix(info.multiple, info.required); + let yaml_name = match field_name { + Some(name) => format!("{name}{suffix}"), + None => format!("$children{suffix}"), + }; + let type_refs: Vec = info + .types + .iter() + .map(|t| format_type_ref(&t.kind, t.named, all_named, all_unnamed)) + .collect(); + + if type_refs.len() == 1 { + writeln!(out, "{indent}{yaml_name}: {}", type_refs[0]).unwrap(); + } else { + writeln!(out, "{indent}{yaml_name}: [{}]", type_refs.join(", ")).unwrap(); + } + } +} + fn field_suffix(multiple: bool, required: bool) -> &'static str { match (multiple, required) { (false, true) => "", @@ -724,6 +856,50 @@ named: assert_eq!(fields["optional_multiple"]["multiple"], true); } + #[test] + fn test_supertype_fields() { + let yaml = r#" +supertypes: + callable: + subtypes: + - function + - closure + fields: + parameter*: parameter + body?: block + +named: + function: + closure: + parameter: + block: +"#; + + let json = convert(yaml).unwrap(); + let result: Vec = serde_json::from_str(&json).unwrap(); + let callable = result.iter().find(|n| n["type"] == "callable").unwrap(); + assert_eq!(callable["subtypes"].as_array().unwrap().len(), 2); + assert_eq!(callable["fields"]["parameter"]["multiple"], true); + assert_eq!(callable["fields"]["parameter"]["required"], false); + assert_eq!(callable["fields"]["body"]["multiple"], false); + assert_eq!(callable["fields"]["body"]["required"], false); + + let schema = schema_from_yaml(yaml).unwrap(); + let parameter = schema.field_id_for_name("parameter").unwrap(); + assert!(schema.field_types("callable", parameter).is_some()); + assert_eq!( + schema.field_cardinality("callable", parameter), + Some(crate::schema::FieldCardinality { + multiple: true, + required: false, + }) + ); + assert_eq!( + schema.field_order("callable"), + Some(&vec![parameter, schema.field_id_for_name("body").unwrap()]) + ); + } + #[test] fn test_json_to_yaml() { let json = r#"[ @@ -794,4 +970,30 @@ unnamed: let v2: serde_json::Value = serde_json::from_str(&json2).unwrap(); assert_eq!(v1, v2); } + + #[test] + fn test_supertype_fields_round_trip() { + let yaml = r#" +supertypes: + callable: + subtypes: [function, closure] + fields: + parameter*: parameter + body?: block + +named: + function: + closure: + parameter: + block: +"#; + + let json = convert(yaml).unwrap(); + let yaml_output = convert_from_json(&json).unwrap(); + let json_output = convert(&yaml_output).unwrap(); + assert_eq!( + serde_json::from_str::(&json).unwrap(), + serde_json::from_str::(&json_output).unwrap() + ); + } } diff --git a/shared/yeast-schema/src/schema.rs b/shared/yeast-schema/src/schema.rs index 0675d8913422..6f5d3fe7d0a1 100644 --- a/shared/yeast-schema/src/schema.rs +++ b/shared/yeast-schema/src/schema.rs @@ -47,7 +47,7 @@ pub struct Schema { /// Per-node-kind declared field order (named fields only), as written in /// the source node-types YAML. Field ids are not a stable ordering key /// across front-ends, so this preserves the authored order for - /// presentation (see the AST dump). + /// presentation (see the AST dump) and tree traversal during extraction. field_order: BTreeMap>, } @@ -193,6 +193,17 @@ impl Schema { for name in other.field_ids.keys() { self.register_field(name); } + for (kind, order) in &other.field_order { + let order = order + .iter() + .filter_map(|&field_id| { + other + .field_name_for_id(field_id) + .map(|name| self.register_field(name)) + }) + .collect(); + self.set_field_order(kind, order); + } } /// Track a name for a kind ID without registering it as named or diff --git a/shared/yeast/Cargo.toml b/shared/yeast/Cargo.toml index 518a0d1cefc2..efb665e9d1a8 100644 --- a/shared/yeast/Cargo.toml +++ b/shared/yeast/Cargo.toml @@ -4,13 +4,13 @@ version = "0.1.0" edition = "2021" [dependencies] -clap = { version = "4.4.10", features = ["derive"] } -serde = { version = "1.0.193", features = ["derive"] } -serde_json = "1.0.108" +clap = { version = "4.6.7", features = ["derive"] } +serde = { version = "1.0.229", features = ["derive"] } +serde_json = "1.0.151" serde_yaml = "0.9" tree-sitter = ">= 0.23.0" yeast-macros = { path = "../yeast-macros" } yeast-schema = { path = "../yeast-schema" } tree-sitter-ruby = "0.23" -tree-sitter-python = "0.23" +tree-sitter-python = "0.25" diff --git a/shared/yeast/doc/yeast.md b/shared/yeast/doc/yeast.md index 3e3e1cd3610f..03699a75051f 100644 --- a/shared/yeast/doc/yeast.md +++ b/shared/yeast/doc/yeast.md @@ -53,29 +53,18 @@ A YEAST `Rule` has two parts: pattern language. 2. A **transform** that produces replacement nodes from the match captures. -The `Runner` applies rules by walking the tree top-down. At each node, it -tries each rule in order. If a rule's query matches, the node is replaced by -the transform's output, and the rules are re-applied to the result. If no -rule matches, the node is kept and its children are processed recursively. +The `Runner` translates the root with the first matching rule. Before the +rule's transform runs, captured input nodes are recursively translated with +the same rules. Every visited input node must match a rule; a missing match is +an error. A rule can replace one node with zero nodes (deletion), one node (rewriting), or multiple nodes (expansion). -By default a rule fires **at most once on a given node**: after firing, the -engine will not re-try that same rule on the result root. Other rules may -still fire on the result, and the rule may still fire on different nodes -(including the result's children). To opt into iterative behaviour — when a -rule's output is intentionally re-matched by the same rule — call -`.repeated()` on the constructed `Rule`: - -```rust -let r = yeast::rule!((foo ...) => (foo ...)).repeated(); -``` - -Without `.repeated()`, a rule whose output happens to match its own query -simply fires once and stops. With `.repeated()`, the rule is allowed to -re-match indefinitely; the runner still enforces a global rewrite-depth -limit (currently 100) as a safety net against accidental cycles. +A rule's output is final for the current phase: it is not matched or traversed +again. This allows rule queries to describe the input schema while transforms +build nodes from a different output schema. Use another named phase when the +output of one exhaustive translation must become the input to another. ## Query language @@ -171,22 +160,21 @@ Templates construct new AST nodes using the `tree!` and `trees!` macros. All children in a template must be in named fields — output AST nodes are always fully fielded. -When used inside a `rule!` macro, the context is implicit — no explicit -`BuildCtx` argument is needed. When used standalone, they take a `BuildCtx` -as the first argument: +The macros use a `BuildCtx` binding named `ctx` from the surrounding scope. +`rule!` provides this binding automatically; standalone uses must create it: ```rust -// Inside rule! — implicit context, captures are Rust variables +// Inside rule! — ctx is provided automatically, captures are Rust variables yeast::rule!( (assignment left: (_) @left right: (_) @right) => (assignment left: {right} right: {left}) ); -// Standalone — explicit context -let fresh = yeast::tree_builder::FreshScope::new(); -let mut ctx = BuildCtx::new(ast, &captures, &fresh); -let id = yeast::tree!(ctx, +// Standalone — create a binding named ctx +let mut user_ctx = (); +let mut ctx = BuildCtx::new(ast, &captures, &mut user_ctx); +let id = yeast::tree!( (assignment left: {ctx.capture("lhs")} right: {ctx.capture("rhs")} @@ -199,7 +187,7 @@ let id = yeast::tree!(ctx, `tree!(...)` returns a single node `Id`: ```rust -yeast::tree!(ctx, +yeast::tree!( (assignment left: {ctx.capture("lhs")} right: {ctx.capture("rhs")} @@ -212,7 +200,7 @@ yeast::tree!(ctx, `trees!(...)` returns `Vec`: ```rust -yeast::trees!(ctx, +yeast::trees!( (assignment left: {tmp} right: {right}) {body} ) @@ -235,6 +223,101 @@ yeast::trees!(ctx, (identifier #{name}) // an identifier from a Rust variable ``` +### Source locations + +Captured nodes keep the locations assigned by their own translations. New +nodes in an output template derive their locations from their children. A +source-less nested node receives an empty location at the start of the matched +input node. After the transform completes, the full matched range is added only +to locally-created nodes returned as rule results: + +```rust +rule!( + (wrapper child: (_) @child) + => + (outer nested: (inner value: {child})) +) +``` + +Here `inner` derives its range from `child`, while the returned `outer` node +also includes the full `wrapper` range. A nested node with no located children +would instead receive an empty range at the start of `wrapper`. This lets +replacement roots include elided keywords or delimiters without assigning the +same broad range to every synthetic descendant. A transform that simply +returns a translated capture does not widen that capture to the wrapper's +range. + +The following macros can be used to explicitly set the location associated +with a newly-created node. They assign a location only to the root of their +template; nested nodes still derive their locations normally. + +`tree_at!` assigns the range of one captured input node to the template root: + +```rust +rule!( + (wrapper + source: (_) @source_node + child: (_) @child) + => + synthetic_node { + tree_at!( + source_node, + (synthetic_node child: (nested value: {child})) + ) + } +) +``` + +`tree_spanning!` assigns the smallest range containing several captured input +nodes: + +```rust +rule!( + (wrapper + first: (_) @first + second: (_) @second + child: (_) @child) + => + synthetic_node { + tree_spanning!( + [first, second], + (synthetic_node child: {child}) + ) + } +) +``` + +For input fields whose leading or trailing syntax should never belong to rule +results, configure them once with +`DesugaringConfig::with_ignored_location_fields(...)`. For example, ignoring +`trailingComma` retains the rest of each matched list element without requiring +every rule to capture or handle the comma. + +For literals, `ctx.literal_at_start_of(...)` creates an empty range at another +node's start. + +For reviewing locations, `DumpOptions::show_abridged_source` prints each node's +source range with every direct child replaced by its field name in Unicode +angle brackets. This keeps delimiters and other parent-owned syntax visible +without repeating entire subtrees: + +```text +return_expr source="return ⟨value⟩" + value: + call_expr source="⟨callee⟩(⟨argument⟩)" +``` + +Children outside the node's source range retain their own locations and are +annotated where they are printed rather than being treated as errors: + +```text +accessor_declaration source="⟨accessor_kind⟩" + name_node: identifier "value" source="value" (external) +``` + +Node and child ranges are still validated against the source text and UTF-8 +boundaries. + ### Optional fields (`?`) A `?` on a field's value makes that field fallible. If a `#{expr}` anywhere @@ -277,25 +360,6 @@ Outside a `?`, interpolating an `Option` with `#{expr}` remains a compile error. That is deliberate: it keeps the choice between "leave the field unset" and "unwrap it" explicit at every interpolation. -### Fresh identifiers - -`(kind $name)` creates a leaf node with an auto-generated unique name. All -occurrences of the same `$name` within one `BuildCtx` share the same value: - -```rust -(block - parameters: (block_parameters - (identifier $tmp) // generates e.g. "$tmp-0" - ) - body: (block_body - (assignment - left: {pat} - right: (identifier $tmp) // same "$tmp-0" value - ) - ) -) -``` - ### Embedded Rust expressions `{expr}` embeds a Rust expression whose value is appended to the @@ -315,7 +379,7 @@ options uniformly: right: {rhs} // a captured value (inside rule!) ) -yeast::trees!(ctx, +yeast::trees!( (assignment left: {tmp} right: {right}) {extra_nodes} // splices a Vec ) @@ -351,10 +415,9 @@ rule!( ### Raw captures (`@@name`) -The default `@name` capture marker is *auto-translated*: in OneShot -phases the macro recursively translates the captured node before -binding it, so `{name}` in the output template splices a node that -already conforms to the output schema. +The default `@name` capture marker is *auto-translated*: the macro recursively +translates the captured node before binding it, so `{name}` in the output +template splices a node that already conforms to the output schema. For rules that need the raw (input-schema) capture — typically to read its source text or to translate it explicitly with mutable context @@ -378,51 +441,12 @@ yeast::rule!( ); ``` -Mix `@` and `@@` freely in the same rule. In a Repeating phase both -markers are equivalent (auto-translation is a no-op for repeating -rules). - -## Complete example: for-loop desugaring - -This rule rewrites Ruby's `for pat in val do body end` into -`val.each { |tmp| pat = tmp; body }`: - -```rust -let for_rule = yeast::rule!( - (for - pattern: (_) @pat - value: (in (_) @val) - body: (do (_)* @body) - ) - => - (call - receiver: {val} - method: (identifier "each") - block: (block - parameters: (block_parameters - (identifier $tmp) - ) - body: (block_body - (assignment - left: {pat} - right: (identifier $tmp) - ) - {..body} - ) - ) - ) -); -``` - -Captures from the query (`@pat`, `@val`, `@body`) become Rust variables -automatically: single captures bind as `Id`, repeated captures (after -`*` or `+`) as `Vec`, and optional captures (after `?`) as -`Option`. +Mix `@` and `@@` freely in the same rule. ## The `rule!` macro `rule!` combines a query and a transform into a single declaration. -There are three transform forms, each suited to a different level of +There are two transform forms, each suited to a different level of rule complexity: ```rust @@ -433,13 +457,7 @@ yeast::rule!( (output_template field: {capture}) ) -// 2. Shorthand form — captures become fields on a bare output kind. -yeast::rule!( - (query_pattern field: (_) @capture) - => output_kind -) - -// 3. Annotation form — a Rust block body preceded by the output kind. +// 2. Annotation form — a Rust block body preceded by the output kind. yeast::rule!( (query_pattern child: (_)+ @@children) => @@ -455,9 +473,6 @@ yeast::rule!( ) ``` -The shorthand `=> kind` form auto-generates the template, mapping each -capture name to a field of the same name on the output node. - ### Guards A rule may include a Rust guard between its query and `=>`. The guard runs @@ -537,25 +552,22 @@ having to inspect the block's expression. Prefer the simplest form that fits: - If the whole transform is a tree literal, use the **template form**. -- If the transform is a template whose root matches a query capture - 1:1, use the **shorthand form**. - If the transform needs Rust logic (loops, `let` bindings, calls to `ctx.translate`, etc.), use the **annotation form**. ## Integration with the extractor -A YEAST desugaring pass is configured with a [`DesugaringConfig`], which -carries one or more named [`Phase`]s of rules and an optional output -node-types schema (in YAML format). Each phase is a complete traversal -that runs to completion before the next phase starts; only the current -phase's rules are considered during that traversal. Attach the config to -a language spec -to enable rewriting: +A YEAST translation pass is configured with a [`DesugaringConfig`], which +carries one or more named [`Phase`]s of exhaustive rules and an optional +output node-types schema (in YAML format). Each phase translates the previous +phase's root before the next phase starts; only the current phase's rules are +considered during that translation. Attach the config to a language spec to +enable rewriting: ```rust let desugar = yeast::DesugaringConfig::new() - .add_phase("cleanup", yeast::PhaseKind::Repeating, cleanup_rules()) - .add_phase("translate", yeast::PhaseKind::OneShot, translate_rules()) + .add_phase("normalize", normalization_rules()) + .add_phase("translate", translation_rules()) .with_output_node_types_yaml(include_str!("output-node-types.yml")); let lang = simple::LanguageSpec { @@ -570,14 +582,10 @@ let lang = simple::LanguageSpec { A single-phase config is just `.add_phase(...)` called once. Phase names appear in error messages so you can tell which phase failed. -There are two kinds of phases: -- **Repeating**: - Each node is re-processed until none of the rules in the phase matches. - When a node no longer matches any rules, its children are recursively processed. In practice this is used to desugar or simplify an AST, while staying mostly within the same schema. -- **One-shot**: - Each node is processed by the first matching rule, and the engine panics if no rule matches. - Rules are then recursively applied to every captured node. - In practice this is used when translating from one AST schema to another, where an exhaustive match is required. +Every phase uses one-shot translation: each visited input node is processed by +the first matching rule, captured nodes are recursively translated, and the +phase errors if no rule matches. Output nodes are not reprocessed in the same +phase. The same YAML node-types is used for both the runtime yeast `Schema` (so rules can refer to output-only kinds and fields) and TRAP validation (it @@ -615,8 +623,7 @@ let translation_rules: Vec = yeast::rules! { Each comma-separated item in the bracketed list may be: - A **bare rule body** `(query) => (template)` — no `rule!(...)` wrapper. -- An explicit `rule!(...)` invocation, with optional postfix calls such - as `rule!(...).repeated()`. +- An explicit `rule!(...)` invocation. - Any other expression returning a `Rule` (helper functions, etc.). Schema paths are resolved relative to the consuming crate's diff --git a/shared/yeast/src/build.rs b/shared/yeast/src/build.rs index f4f5ae5d18f3..f36922a155a3 100644 --- a/shared/yeast/src/build.rs +++ b/shared/yeast/src/build.rs @@ -1,15 +1,13 @@ -use std::collections::BTreeMap; +use std::collections::{BTreeMap, BTreeSet}; use crate::captures::Captures; -use crate::tree_builder::FreshScope; -use crate::{Ast, FieldId, Id, NodeContent, Range, TranslatorHandle}; +use crate::{Ast, FieldId, Id, KindId, NodeContent, Range, TranslatorHandle}; /// Context for building new AST nodes during a transformation. /// /// Used by the `tree!` and `trees!` macros. Holds a mutable reference to the -/// AST, a reference to the captures from a query match, a `FreshScope` for -/// generating unique identifiers, and a mutable reference to a user-defined -/// context of type `C`. +/// AST, a reference to the captures from a query match, and a mutable reference +/// to a user-defined context of type `C`. /// /// The user context `C` is shared across rules via the framework's driver: /// outer rules can write to it before recursive translation, and inner rules @@ -32,47 +30,52 @@ use crate::{Ast, FieldId, Id, NodeContent, Range, TranslatorHandle}; pub struct BuildCtx<'a, C: 'a = ()> { pub ast: &'a mut Ast, pub captures: &'a Captures, - pub fresh: &'a FreshScope, - /// Source range of the matched node, inherited by synthetic nodes. + /// Source range of the node matched by the current rule. + /// + /// The `rule!` macro applies this range to locally-created result roots + /// after the transform completes. Nested synthetic nodes derive their + /// ranges from their children, falling back to an empty range at this + /// range's start. pub source_range: Option, /// User-supplied context, accessible directly via `ctx.field` (via Deref). pub user_ctx: &'a mut C, /// Optional translator handle, populated when the context is built by /// the framework's rule driver. None when the context is built by hand. pub(crate) translator: Option>, + /// Nodes built directly through this context without an explicit source + /// range in either their content or constructor argument. Recursive + /// translations use their own context and therefore do not contribute to + /// this set. Membership checks identify result roots to widen, while + /// removals exclude nodes that are later assigned an explicit range. + created_nodes_without_source_range: BTreeSet, } impl<'a, C> BuildCtx<'a, C> { - pub fn new( - ast: &'a mut Ast, - captures: &'a Captures, - fresh: &'a FreshScope, - user_ctx: &'a mut C, - ) -> Self { + pub fn new(ast: &'a mut Ast, captures: &'a Captures, user_ctx: &'a mut C) -> Self { Self { ast, captures, - fresh, source_range: None, user_ctx, translator: None, + created_nodes_without_source_range: BTreeSet::new(), } } + /// Construct a context carrying a matched input source range. pub fn with_source_range( ast: &'a mut Ast, captures: &'a Captures, - fresh: &'a FreshScope, source_range: Option, user_ctx: &'a mut C, ) -> Self { Self { ast, captures, - fresh, source_range, user_ctx, translator: None, + created_nodes_without_source_range: BTreeSet::new(), } } @@ -81,7 +84,6 @@ impl<'a, C> BuildCtx<'a, C> { pub fn with_translator( ast: &'a mut Ast, captures: &'a Captures, - fresh: &'a FreshScope, source_range: Option, user_ctx: &'a mut C, translator: TranslatorHandle<'a, C>, @@ -89,13 +91,86 @@ impl<'a, C> BuildCtx<'a, C> { Self { ast, captures, - fresh, source_range, user_ctx, translator: Some(translator), + created_nodes_without_source_range: BTreeSet::new(), } } + /// Create a node and record it as constructed by this rule invocation. + pub fn create_node_with_range( + &mut self, + kind: KindId, + content: NodeContent, + fields: BTreeMap>, + is_named: bool, + source_range: Option, + ) -> Id { + let has_explicit_source_range = + source_range.is_some() || matches!(&content, NodeContent::Range(_)); + let id = self + .ast + .create_node_with_range(kind, content, fields, is_named, source_range); + if self + .ast + .get_node(id) + .is_some_and(|node| node.source_range().is_none()) + { + if let Some(source_range) = self.source_range { + self.ast + .extend_source_range(id, source_range.empty_at_start()); + } + } + if !has_explicit_source_range { + self.created_nodes_without_source_range.insert(id); + } + id + } + + /// Create a named token and record it as constructed by this rule invocation. + pub fn create_named_token_with_range( + &mut self, + kind: &'static str, + content: String, + source_range: Option, + ) -> Id { + let has_explicit_source_range = source_range.is_some(); + let source_range = + source_range.or_else(|| self.source_range.map(|range| range.empty_at_start())); + let id = self + .ast + .create_named_token_with_range(kind, content, source_range); + if !has_explicit_source_range { + self.created_nodes_without_source_range.insert(id); + } + id + } + + /// Finish the current rule invocation by applying the matched source range + /// to locally-created result roots. + #[doc(hidden)] + pub fn finish_rule(self, results: Vec) -> Vec { + if let Some(source_range) = self.source_range { + for &id in &results { + if self.created_nodes_without_source_range.contains(&id) { + self.ast.extend_source_range(id, source_range); + } + } + } + results + } + + /// Assign an explicit source range to a newly-built result root. + #[doc(hidden)] + pub fn set_node_source_range(&mut self, node: Id, source_range: Option) -> Id { + if let Some(source_range) = source_range { + self.ast.set_source_range(node, source_range); + self.created_nodes_without_source_range.remove(&node); + } + node + } + /// Look up a capture variable, returning its node Id. pub fn capture(&self, name: &str) -> Id { self.captures @@ -119,6 +194,18 @@ impl<'a, C> BuildCtx<'a, C> { self.ast.source_text(id) } + /// Return the source range of a parsed or synthetic node. + fn source_range_of(&self, id: Id) -> Option { + self.ast.get_node(id).and_then(|node| node.source_range()) + } + + /// Return an empty range between two non-overlapping nodes. + pub fn empty_source_range_between(&self, left: Id, right: Id) -> Option { + let left = self.source_range_of(left)?; + let right = self.source_range_of(right)?; + (left.end_byte <= right.start_byte).then(|| left.empty_at_end()) + } + /// Create a named AST node with the given kind and fields. pub fn node(&mut self, kind: &str, fields: Vec<(&str, Vec)>) -> Id { let kind_id = self @@ -133,50 +220,41 @@ impl<'a, C> BuildCtx<'a, C> { .unwrap_or_else(|| panic!("build: field '{name}' not found")); field_map.entry(field_id).or_default().extend(ids); } - self.ast.create_node_with_range( + self.create_node_with_range( kind_id, NodeContent::DynamicString(String::new()), field_map, true, - self.source_range, + None, ) } /// Create a leaf node with a fixed string content. pub fn literal(&mut self, kind: &'static str, value: &str) -> Id { - self.ast - .create_named_token_with_range(kind, value.to_string(), self.source_range) + self.create_named_token_with_range(kind, value.to_string(), None) } - /// Create a leaf node with fixed content and an optional preferred source range. - /// If `source_range` is `None`, falls back to this context's inherited range. + /// Create a leaf node with fixed content and an optional source range. pub fn literal_with_source_range( &mut self, kind: &'static str, value: &str, source_range: Option, ) -> Id { - self.ast.create_named_token_with_range( - kind, - value.to_string(), - source_range.or(self.source_range), - ) + self.create_named_token_with_range(kind, value.to_string(), source_range) } - /// Create a leaf node with an auto-generated unique name. - pub fn fresh(&mut self, kind: &'static str, name: &str) -> Id { - let generated = self.fresh.resolve(name); - self.ast - .create_named_token_with_range(kind, generated, self.source_range) + /// Create a literal with an empty range at another node's start. + pub fn literal_at_start_of(&mut self, kind: &'static str, value: &str, source: Id) -> Id { + let source_range = self.source_range_of(source).map(Range::empty_at_start); + self.literal_with_source_range(kind, value, source_range) } } impl BuildCtx<'_, C> { /// Recursively translate every id in the given iterable via the - /// framework's rule machinery. In a OneShot phase, applies OneShot - /// rules to each id and returns the accumulated resulting node ids - /// in order. In a Repeating phase, errors (translation is not - /// meaningful when input and output share a schema). + /// framework's rule machinery and return the accumulated resulting node + /// ids in order. /// /// The single-`Id` case works too, because `Id: IntoIterator` is a singleton iterator — so `ctx.translate(some_id)?` @@ -203,8 +281,9 @@ impl BuildCtx<'_, C> { /// Run `f` with a temporary child [`BuildCtx`] whose `user_ctx` is /// a fresh clone of the current one, sharing everything else - /// (`ast`, `captures`, `fresh`, `source_range`, `translator`) by - /// re-borrow. Any mutations `f` makes to the child's `user_ctx` + /// (`ast`, `captures`, source ranges, `translator`) by re-borrow. + /// Nodes constructed through the child remain part of the current rule + /// invocation. Any mutations `f` makes to the child's `user_ctx` /// are discarded when it returns — no restore needed, because the /// mutations only ever happened on a local clone. /// @@ -234,12 +313,18 @@ impl BuildCtx<'_, C> { let mut child = BuildCtx { ast: &mut *self.ast, captures: self.captures, - fresh: self.fresh, source_range: self.source_range, user_ctx: &mut child_user_ctx, translator: self.translator, + created_nodes_without_source_range: BTreeSet::new(), }; - f(&mut child) + let result = f(&mut child); + let created_nodes_without_source_range = + std::mem::take(&mut child.created_nodes_without_source_range); + drop(child); + self.created_nodes_without_source_range + .extend(created_nodes_without_source_range); + result // child_user_ctx dropped; the outer `self` is unaffected. } } diff --git a/shared/yeast/src/dump.rs b/shared/yeast/src/dump.rs index 0e2e57e6f82a..6833f176ae14 100644 --- a/shared/yeast/src/dump.rs +++ b/shared/yeast/src/dump.rs @@ -15,6 +15,9 @@ pub struct DumpOptions { pub show_locations: bool, /// Whether to include source text for leaf nodes. pub show_content: bool, + /// Whether to include each node's source range with direct-child ranges + /// replaced by their field names in `⟨angle brackets⟩`. + pub show_abridged_source: bool, } impl Default for DumpOptions { @@ -22,6 +25,7 @@ impl Default for DumpOptions { Self { show_locations: false, show_content: true, + show_abridged_source: false, } } } @@ -47,7 +51,7 @@ pub fn dump_ast(ast: &Ast, root: Id, source: &str) -> String { pub fn dump_ast_with_options(ast: &Ast, root: Id, source: &str, options: &DumpOptions) -> String { let mut out = String::new(); - dump_node(ast, root, source, options, 0, None, &mut out); + dump_node(ast, root, source, options, 0, None, false, &mut out); out } @@ -82,6 +86,7 @@ pub fn dump_ast_with_type_errors_and_options( expected: None, parent_field: None, }), + false, &mut out, ); out @@ -191,6 +196,7 @@ fn dump_node( options: &DumpOptions, indent: usize, type_check: Option>, + external_to_parent: bool, out: &mut String, ) { let node = match ast.get_node(id) { @@ -226,6 +232,13 @@ fn dump_node( } } + if options.show_abridged_source { + write_source_skeleton(ast, node, source, out); + if external_to_parent { + write!(out, " (external)").unwrap(); + } + } + if let Some(context) = type_check { if let Some(err) = type_error_for_node(context.schema, node, context.expected, context.parent_field) @@ -292,9 +305,18 @@ fn dump_node( write!(out, "{prefix} {field_name}:").unwrap(); // Inline single child let child = ast.get_node(children[0]); + let external = child.is_some_and(|child| is_external_child(node, child)); if child.is_some_and(is_leaf) { write!(out, " ").unwrap(); - dump_node_inline(ast, children[0], source, options, child_type_check, out); + dump_node_inline( + ast, + children[0], + source, + options, + child_type_check, + external, + out, + ); } else { writeln!(out).unwrap(); dump_node( @@ -304,12 +326,16 @@ fn dump_node( options, indent + 2, child_type_check, + external, out, ); } } else { writeln!(out, "{prefix} {field_name}:").unwrap(); for &child_id in children { + let external = ast + .get_node(child_id) + .is_some_and(|child| is_external_child(node, child)); dump_node( ast, child_id, @@ -317,6 +343,7 @@ fn dump_node( options, indent + 2, child_type_check, + external, out, ); } @@ -357,6 +384,7 @@ fn dump_node( for &child_id in children { if let Some(child) = ast.get_node(child_id) { if child.is_named() { + let external = is_external_child(node, child); dump_node( ast, child_id, @@ -364,6 +392,7 @@ fn dump_node( options, indent + 1, child_type_check, + external, out, ); } @@ -379,6 +408,7 @@ fn dump_node_inline( source: &str, options: &DumpOptions, type_check: Option>, + external_to_parent: bool, out: &mut String, ) { let node = match ast.get_node(id) { @@ -409,6 +439,13 @@ fn dump_node_inline( } } + if options.show_abridged_source { + write_source_skeleton(ast, node, source, out); + if external_to_parent { + write!(out, " (external)").unwrap(); + } + } + if let Some(context) = type_check { if let Some(err) = type_error_for_node(context.schema, node, context.expected, context.parent_field) @@ -424,6 +461,96 @@ fn is_leaf(node: &Node) -> bool { node.fields.is_empty() } +enum SourceSkeleton { + Missing, + Text(String), + Invalid(String), +} + +fn write_source_skeleton(ast: &Ast, node: &Node, source: &str, out: &mut String) { + match source_skeleton(ast, node, source) { + SourceSkeleton::Missing => write!(out, " source=").unwrap(), + SourceSkeleton::Text(text) => write!(out, " source={text:?}").unwrap(), + SourceSkeleton::Invalid(error) => write!(out, " source=").unwrap(), + } +} + +fn node_source_range(node: &Node) -> Option { + match node.content { + NodeContent::Range(range) => Some(range), + _ => node.source_range, + } +} + +fn is_external_child(parent: &Node, child: &Node) -> bool { + let (Some(parent), Some(child)) = (node_source_range(parent), node_source_range(child)) else { + return false; + }; + child.start_byte < parent.start_byte || child.end_byte > parent.end_byte +} + +fn source_skeleton(ast: &Ast, node: &Node, source: &str) -> SourceSkeleton { + let Some(parent) = node_source_range(node) else { + return SourceSkeleton::Missing; + }; + let parent = parent.start_byte..parent.end_byte; + if parent.start > parent.end || source.get(parent.clone()).is_none() { + return SourceSkeleton::Invalid(format!( + "node range {}..{} is outside the source or not on UTF-8 boundaries", + parent.start, parent.end + )); + } + + let mut children = Vec::new(); + for (field_id, child_ids) in &node.fields { + let field_name = if *field_id == CHILD_FIELD { + "child" + } else { + ast.field_name_for_id(*field_id).unwrap_or("?") + }; + for child_id in child_ids { + let Some(child) = ast.get_node(*child_id) else { + continue; + }; + if !child.is_named() { + continue; + } + let Some(child) = node_source_range(child) else { + continue; + }; + let child = child.start_byte..child.end_byte; + if child.start > child.end || source.get(child.clone()).is_none() { + return SourceSkeleton::Invalid(format!( + "child range {}..{} is outside the source or not on UTF-8 boundaries", + child.start, child.end + )); + } + if child.start < parent.start || child.end > parent.end { + continue; + } + if child.start == child.end { + continue; + } + children.push((child, field_name)); + } + } + children.sort_by_key(|(range, field_name)| (range.start, range.end, *field_name)); + + let mut result = String::new(); + let mut cursor = parent.start; + for (range, field_name) in children { + if cursor < range.start { + result.push_str(source.get(cursor..range.start).unwrap()); + } + result.push('⟨'); + result.push_str(field_name); + result.push('⟩'); + cursor = cursor.max(range.end); + } + result.push_str(source.get(cursor..parent.end).unwrap()); + SourceSkeleton::Text(result) +} + fn node_content(node: &Node, source: &str) -> String { match &node.content { NodeContent::DynamicString(s) if !s.is_empty() => s.clone(), @@ -437,3 +564,161 @@ fn node_content(node: &Node, source: &str) -> String { } } } + +#[cfg(test)] +mod tests { + use super::*; + use crate::{NodeContent, Point, Range}; + use std::collections::BTreeMap; + + fn range(start: usize, end: usize) -> Range { + Range { + start_byte: start, + end_byte: end, + start_point: Point::new(0, start), + end_point: Point::new(0, end), + } + } + + fn dump_with_children(source: &str, parent_range: Range, children: &[(&str, Range)]) -> String { + let mut ast = Ast::with_schema(crate::schema::Schema::new()); + let parent_kind = ast.register_kind("parent"); + let child_kind = ast.register_kind("child"); + let mut fields = BTreeMap::new(); + for (field_name, range) in children { + let field = ast.register_field(field_name); + let child = ast.create_node_with_range( + child_kind, + NodeContent::Range(*range), + BTreeMap::new(), + true, + None, + ); + fields.entry(field).or_insert_with(Vec::new).push(child); + } + let parent = ast.create_node_with_range( + parent_kind, + NodeContent::Range(parent_range), + fields, + true, + None, + ); + ast.set_root(parent); + + dump_ast_with_options( + &ast, + parent, + source, + &DumpOptions { + show_locations: false, + show_content: false, + show_abridged_source: true, + }, + ) + } + + #[test] + fn source_skeleton_elides_direct_children_and_ignores_empty_ranges() { + let source = "αbefore(child)afterω"; + let child_start = source.find("child").unwrap(); + let child_end = child_start + "child".len(); + let dump = dump_with_children( + source, + range(0, source.len()), + &[ + ("value", range(child_start, child_end)), + ("marker", range(child_start, child_start)), + ], + ); + + assert!(dump.starts_with("parent source=\"αbefore(⟨value⟩)afterω\"\n")); + } + + #[test] + fn source_skeleton_preserves_unnamed_tokens() { + let source = "x = 1"; + let runner: crate::Runner = crate::Runner::new(tree_sitter_ruby::LANGUAGE.into(), &[]); + let ast = runner.run(source).unwrap(); + let dump = dump_ast_with_options( + &ast, + ast.get_root(), + source, + &DumpOptions { + show_locations: false, + show_content: false, + show_abridged_source: true, + }, + ); + + assert!(dump.contains("assignment source=\"⟨left⟩ = ⟨right⟩\"")); + } + + #[test] + fn source_skeleton_validates_empty_child_ranges() { + let cases = [ + ( + "abcdef", + range(0, 6), + range(7, 7), + "child range 7..7 is outside the source or not on UTF-8 boundaries", + ), + ( + "αbc", + range(0, 4), + range(1, 1), + "child range 1..1 is outside the source or not on UTF-8 boundaries", + ), + ]; + + for (source, parent, child, error) in cases { + let dump = dump_with_children(source, parent, &[("marker", child)]); + assert!( + dump.starts_with(&format!("parent source=\n")), + "unexpected dump: {dump}" + ); + } + + let dump = dump_with_children("abcdef", range(0, 3), &[("marker", range(4, 4))]); + assert!(dump.starts_with("parent source=\"abc\"\n")); + assert!( + dump.contains("marker: child source=\"\" (external)\n"), + "unexpected dump: {dump}" + ); + } + + #[test] + fn source_skeleton_keeps_adjacent_child_fields_separate() { + let source = "abcdef"; + let dump = dump_with_children( + source, + range(0, source.len()), + &[("left", range(1, 3)), ("right", range(3, 5))], + ); + + assert!(dump.starts_with("parent source=\"a⟨left⟩⟨right⟩f\"\n")); + } + + #[test] + fn source_skeleton_keeps_overlapping_child_fields_separate() { + let source = "abcdef"; + let dump = dump_with_children( + source, + range(0, source.len()), + &[("left", range(1, 4)), ("right", range(3, 5))], + ); + + assert!(dump.starts_with("parent source=\"a⟨left⟩⟨right⟩f\"\n")); + } + + #[test] + fn source_skeleton_marks_children_outside_the_parent() { + let source = "abcdefghi"; + let dump = dump_with_children(source, range(0, 6), &[("child", range(7, 9))]); + + assert!(dump.starts_with("parent source=\"abcdef\"\n")); + assert!( + dump.contains(" child source=\"hi\" (external)\n"), + "unexpected dump: {dump}" + ); + } +} diff --git a/shared/yeast/src/lib.rs b/shared/yeast/src/lib.rs index 94f75faa4763..9a533ee12e3f 100644 --- a/shared/yeast/src/lib.rs +++ b/shared/yeast/src/lib.rs @@ -12,11 +12,10 @@ pub mod node_types_yaml; pub mod query; mod range; pub mod schema; -pub mod tree_builder; mod visitor; pub use range::{Point, Range}; -pub use yeast_macros::{query, rule, rules, tree, trees}; +pub use yeast_macros::{query, rule, rules, tree, tree_at, tree_spanning, trees}; use captures::Captures; use query::QueryNode; @@ -128,9 +127,10 @@ pub trait YeastDisplay { /// Optional source range for values used in `#{expr}` interpolations. /// -/// By default this returns `None`, so synthesized leaves inherit the matched -/// rule's source range. `Id` returns the referenced node's range, letting -/// `(kind #{capture})` carry the captured node's location. +/// By default this returns `None`, so synthesized leaves use the current +/// [`crate::build::BuildCtx`] default range, if any. `Id` returns the +/// referenced node's range, letting `(kind #{capture})` carry the captured +/// node's location. pub trait YeastSourceRange { fn yeast_source_range(&self, ast: &Ast) -> Option; } @@ -143,10 +143,7 @@ impl YeastDisplay for Id { impl YeastSourceRange for Id { fn yeast_source_range(&self, ast: &Ast) -> Option { - ast.get_node(*self).and_then(|n| match &n.content { - NodeContent::Range(r) => Some(*r), - _ => n.source_range, - }) + ast.get_node(*self).and_then(Node::source_range) } } @@ -323,7 +320,7 @@ impl<'a> AstCursor<'a> { fn goto_first_child_opt(&mut self) -> Option<()> { let parent_id = self.node_id; let parent = self.ast.get_node(parent_id)?; - let mut children = ChildrenIter::new(parent); + let mut children = ChildrenIter::new(self.ast, parent); let first_child = children.next()?; self.node_id = first_child; self.parents.push((parent_id, children)); @@ -340,15 +337,35 @@ impl<'a> AstCursor<'a> { #[derive(Debug)] struct ChildrenIter<'a> { current_field: Option, - fields: std::collections::btree_map::Iter<'a, FieldId, Vec>, + fields: &'a BTreeMap>, + field_order: std::vec::IntoIter, field_children: Option>, } impl<'a> ChildrenIter<'a> { - fn new(node: &'a Node) -> Self { + fn new(ast: &'a Ast, node: &'a Node) -> Self { + let fields = &node.fields; + let present: Vec = fields.keys().copied().collect(); + let field_order = match ast.schema.field_order(node.kind_name()) { + Some(order) => { + let mut fields: Vec = order + .iter() + .copied() + .filter(|field| fields.contains_key(field)) + .collect(); + for field in present { + if !fields.contains(&field) { + fields.push(field); + } + } + fields.into_iter() + } + None => present.into_iter(), + }; Self { current_field: None, - fields: node.fields.iter(), + fields, + field_order, field_children: None, } } @@ -363,20 +380,20 @@ impl Iterator for ChildrenIter<'_> { fn next(&mut self) -> Option { match self.field_children.as_mut() { - None => match self.fields.next() { - Some((field, children)) => { - self.current_field = Some(*field); - self.field_children = Some(children.iter()); + None => match self.field_order.next() { + Some(field) => { + self.current_field = Some(field); + self.field_children = Some(self.fields[&field].iter()); self.next() } None => None, }, Some(children) => match children.next() { - None => match self.fields.next() { + None => match self.field_order.next() { None => None, - Some((field, children)) => { - self.current_field = Some(*field); - self.field_children = Some(children.iter()); + Some(field) => { + self.current_field = Some(field); + self.field_children = Some(self.fields[&field].iter()); self.next() } }, @@ -545,6 +562,21 @@ impl Ast { self.nodes.get(id.0) } + fn source_range_ignoring_fields(&self, id: Id, ignored_fields: &[&str]) -> Option { + let node = self.get_node(id)?; + let source_range = node.source_range()?; + let ignored_ranges = node + .fields + .iter() + .filter(|(field_id, _)| { + self.field_name_for_id(**field_id) + .is_some_and(|name| ignored_fields.contains(&name)) + }) + .flat_map(|(_, children)| children) + .filter_map(|child| self.get_node(*child).and_then(Node::source_range)); + Some(source_range.ignoring_boundary_ranges(ignored_ranges)) + } + pub fn print(&self, source: &str, root_id: Id) -> Value { let root = &self.nodes()[root_id.0]; self.print_node(root, source) @@ -571,11 +603,16 @@ impl Ast { let source_range = match &content { // Parsed nodes already carry an exact source range in their content. NodeContent::Range(_) => source_range, - // Synthesized nodes derive location from children when possible, - // and fall back to the inherited rule-match range otherwise. + // Synthesized nodes derive location from both their children and + // any explicitly supplied source range. _ => self .union_source_range_of_children(&fields) - .or(source_range), + .map_or(source_range, |child_range| { + Some(match source_range { + Some(source_range) => child_range.union(source_range), + None => child_range, + }) + }), }; let id = self.nodes.len(); self.nodes.push(Node { @@ -592,6 +629,36 @@ impl Ast { Id(id) } + /// Extend a synthetic node's source range to include `source_range`. + /// + /// Parsed nodes carry their exact range in [`NodeContent::Range`] and must + /// not be modified through this API. + pub fn extend_source_range(&mut self, id: Id, source_range: Range) { + let node = self + .nodes + .get_mut(id.0) + .unwrap_or_else(|| panic!("extend_source_range: invalid node id {}", id.0)); + if matches!(node.content, NodeContent::Range(_)) { + panic!("extend_source_range: cannot modify a parsed node"); + } + node.source_range = Some(match node.source_range { + Some(existing) => existing.union(source_range), + None => source_range, + }); + } + + /// Replace a synthetic node's source range. + pub(crate) fn set_source_range(&mut self, id: Id, source_range: Range) { + let node = self + .nodes + .get_mut(id.0) + .unwrap_or_else(|| panic!("set_source_range: invalid node id {}", id.0)); + if matches!(node.content, NodeContent::Range(_)) { + panic!("set_source_range: cannot modify a parsed node"); + } + node.source_range = Some(source_range); + } + /// Register a named node kind, returning its id (idempotent). Lets callers /// build an AST in a single pass, registering kinds as nodes are created /// rather than pre-populating the schema. @@ -629,35 +696,30 @@ impl Ast { let Some(child) = self.get_node(child_id) else { continue; }; - - let child_start_byte = child.start_byte(); - let child_end_byte = child.end_byte(); - - // Skip children that carry no usable location. - if child_start_byte == 0 && child_end_byte == 0 { + let Some(child_range) = child.source_range() else { continue; - } + }; match start_byte { None => { - start_byte = Some(child_start_byte); - start_point = child.start_position(); + start_byte = Some(child_range.start_byte); + start_point = child_range.start_point; } - Some(current_start) if child_start_byte < current_start => { - start_byte = Some(child_start_byte); - start_point = child.start_position(); + Some(current_start) if child_range.start_byte < current_start => { + start_byte = Some(child_range.start_byte); + start_point = child_range.start_point; } _ => {} } match end_byte { None => { - end_byte = Some(child_end_byte); - end_point = child.end_position(); + end_byte = Some(child_range.end_byte); + end_point = child_range.end_point; } - Some(current_end) if child_end_byte > current_end => { - end_byte = Some(child_end_byte); - end_point = child.end_position(); + Some(current_end) if child_range.end_byte > current_end => { + end_byte = Some(child_range.end_byte); + end_point = child_range.end_point; } _ => {} } @@ -808,36 +870,29 @@ impl Node { Point { row: 0, column: 0 } } - pub fn start_position(&self) -> Point { + pub fn source_range(&self) -> Option { match self.content { - NodeContent::Range(range) => range.start_point, - _ => self - .source_range - .map_or_else(|| self.fake_point(), |r| r.start_point), + NodeContent::Range(range) => Some(range), + _ => self.source_range, } } + pub fn start_position(&self) -> Point { + self.source_range() + .map_or_else(|| self.fake_point(), |range| range.start_point) + } + pub fn end_position(&self) -> Point { - match self.content { - NodeContent::Range(range) => range.end_point, - _ => self - .source_range - .map_or_else(|| self.fake_point(), |r| r.end_point), - } + self.source_range() + .map_or_else(|| self.fake_point(), |range| range.end_point) } pub fn start_byte(&self) -> usize { - match self.content { - NodeContent::Range(range) => range.start_byte, - _ => self.source_range.map_or(0, |r| r.start_byte), - } + self.source_range().map_or(0, |range| range.start_byte) } pub fn end_byte(&self) -> usize { - match self.content { - NodeContent::Range(range) => range.end_byte, - _ => self.source_range.map_or(0, |r| r.end_byte), - } + self.source_range().map_or(0, |range| range.end_byte) } pub fn byte_range(&self) -> std::ops::Range { @@ -893,12 +948,17 @@ impl From for NodeContent { /// directly) can call [`TranslatorHandle::translate`] selectively on /// specific node ids to control when translation happens. pub struct TranslatorHandle<'a, C> { - inner: TranslatorImpl<'a, C>, + index: &'a RuleIndex<'a, C>, + rewrite_depth: usize, + /// The id of the node the current rule is matching. Used by + /// [`auto_translate_captures`] to avoid infinite recursion when a + /// rule captures its own match root (e.g. via `(_) @_`). + matched_root: Id, } // Manual `Copy` / `Clone` so `TranslatorHandle<'_, C>: Copy` holds -// regardless of whether `C: Copy`. `TranslatorImpl` contains only -// shared references, which are `Copy` unconditionally. +// regardless of whether `C: Copy`. All fields are shared references or +// small `Copy` scalars. impl Copy for TranslatorHandle<'_, C> {} impl Clone for TranslatorHandle<'_, C> { fn clone(&self) -> Self { @@ -906,59 +966,16 @@ impl Clone for TranslatorHandle<'_, C> { } } -/// Internal phase-specific translation state. Kept private — callers -/// interact with [`TranslatorHandle`] only. -enum TranslatorImpl<'a, C> { - /// OneShot phase translator: recursively applies OneShot rules. - OneShot { - index: &'a RuleIndex<'a, C>, - fresh: &'a tree_builder::FreshScope, - rewrite_depth: usize, - /// The id of the node the current rule is matching. Used by - /// [`auto_translate_captures`] to avoid infinite recursion when a - /// rule captures its own match root (e.g. via `(_) @_`). - matched_root: Id, - }, - /// Repeating phase translator: translation is not meaningful here - /// (input and output schemas are the same). [`translate`] errors; - /// [`auto_translate_captures`] is a no-op so the macro's auto-prefix - /// works unchanged for Repeating rules. - Repeating, -} - -// Manual `Copy` / `Clone` so `TranslatorImpl<'_, C>: Copy` holds -// regardless of whether `C: Copy`. All variants hold only shared -// references and small `Copy` scalars. -impl Copy for TranslatorImpl<'_, C> {} -impl Clone for TranslatorImpl<'_, C> { - fn clone(&self) -> Self { - *self - } -} - impl<'a, C: Clone> TranslatorHandle<'a, C> { - /// Recursively apply OneShot rules to `id` and return the resulting - /// node ids. Errors in a Repeating phase (where translation is not - /// meaningful). + /// Recursively apply the current phase's rules to `id` and return the + /// resulting node ids. pub fn translate(&self, ast: &mut Ast, user_ctx: &mut C, id: Id) -> Result, String> { - match &self.inner { - TranslatorImpl::OneShot { - index, - fresh, - rewrite_depth, - .. - } => apply_one_shot_rules_inner(index, ast, user_ctx, id, fresh, rewrite_depth + 1), - TranslatorImpl::Repeating => { - Err("translate() is not available in a Repeating phase".into()) - } - } + apply_rules_inner(self.index, ast, user_ctx, id, self.rewrite_depth + 1) } - /// Translate every captured node in `captures` in place (OneShot phase - /// only), except for captures whose name appears in `skip` — those are - /// left as raw (input-schema) ids for the rule body to consume - /// directly. In a Repeating phase this is a no-op — Repeating rules - /// receive raw captures regardless of `skip`. + /// Translate every captured node in `captures` in place, except for + /// captures whose name appears in `skip` — those are left as raw + /// (input-schema) ids for the rule body to consume directly. /// /// Used by the `rule!` macro's generated prefix. `skip` is populated /// from the macro's `@@name` capture markers; for plain `@name` @@ -973,39 +990,32 @@ impl<'a, C: Clone> TranslatorHandle<'a, C> { user_ctx: &mut C, skip: &[&str], ) -> Result<(), String> { - match &self.inner { - TranslatorImpl::OneShot { matched_root, .. } => { - let root = *matched_root; - captures.try_map_captures_except(skip, |cid| { - if cid == root { - Ok(vec![cid]) - } else { - self.translate(ast, user_ctx, cid) - } - }) + captures.try_map_captures_except(skip, |cid| { + if cid == self.matched_root { + Ok(vec![cid]) + } else { + self.translate(ast, user_ctx, cid) } - TranslatorImpl::Repeating => Ok(()), - } + }) } } /// The transform function for a rule. /// -/// Takes the AST, the (raw, untranslated) captured variables, a fresh-name -/// scope, the source range of the matched node, a mutable reference to the -/// user context of type `C`, and a [`TranslatorHandle`] for recursively -/// translating nodes. Returns the IDs of the replacement nodes, or an -/// error message if the transform could not be completed. +/// Takes the AST, the (raw, untranslated) captured variables, the source range +/// of the matched node, a mutable reference to the user context of type `C`, +/// and a [`TranslatorHandle`] for recursively translating nodes. Returns the +/// IDs of the replacement nodes, or an error message if the transform could +/// not be completed. /// /// Transforms produced by [`Rule::new`] receive **raw** captures and must /// translate them themselves (via the handle). Transforms produced by the -/// `rule!` macro have an auto-translation prefix injected for backward -/// compatibility. +/// `rule!` macro have an auto-translation prefix that recursively translates +/// captures. pub type Transform = Box< dyn Fn( &mut Ast, Captures, - &tree_builder::FreshScope, Option, &mut C, TranslatorHandle<'_, C>, @@ -1025,11 +1035,7 @@ pub struct Rule { query: QueryNode, guard: Option>, transform: Transform, - /// If true, after this rule fires on a node the engine will try to - /// re-apply this same rule on the result root. Defaults to false: - /// each rule fires at most once on a given node, which prevents - /// accidental loops where a rule's output matches its own query. - repeated: bool, + ignored_location_fields: Vec<&'static str>, } impl Rule { @@ -1039,7 +1045,7 @@ impl Rule { query, guard: None, transform, - repeated: false, + ignored_location_fields: Vec::new(), } } @@ -1050,17 +1056,12 @@ impl Rule { query, guard: Some(guard), transform, - repeated: false, + ignored_location_fields: Vec::new(), } } - /// Mark this rule as allowed to fire multiple times on the same node. - /// Use when the rule is intentionally iterative (its output may match - /// its own query). Without this, a rule fires at most once per node; - /// other rules can still fire on the result. - pub fn repeated(mut self) -> Self { - self.repeated = true; - self + fn set_ignored_location_fields(&mut self, fields: &[&'static str]) { + self.ignored_location_fields = fields.to_vec(); } /// Attempt to match this rule's query against `node`, returning the raw @@ -1089,27 +1090,22 @@ impl Rule { } } - /// Run this rule's transform with the given captures, using `node`'s - /// source range as the source range of the produced nodes. + /// Run this rule's transform with the given captures, making `node`'s + /// source range available to the transform. fn run_transform( &self, ast: &mut Ast, captures: Captures, node: Id, - fresh: &tree_builder::FreshScope, user_ctx: &mut C, translator: TranslatorHandle<'_, C>, ) -> Result, String> { - fresh.next_scope(); - let source_range = ast.get_node(node).and_then(|n| match n.content { - NodeContent::Range(r) => Some(r), - _ => n.source_range, - }); - (self.transform)(ast, captures, fresh, source_range, user_ctx, translator) + let source_range = ast.source_range_ignoring_fields(node, &self.ignored_location_fields); + (self.transform)(ast, captures, source_range, user_ctx, translator) } } -const MAX_REWRITE_DEPTH: usize = 100; +const MAX_REWRITE_DEPTH: usize = 1000; /// Index of rules by their root query kind for fast lookup. struct RuleIndex<'a, C> { @@ -1141,146 +1137,24 @@ impl<'a, C> RuleIndex<'a, C> { } } -fn apply_repeating_rules( +/// Apply the first matching rule to each visited node. Recursion proceeds +/// only through captured nodes (not through the input node's children +/// directly), and an error is returned if no rule matches a visited node. +fn apply_rules( rules: &[Rule], ast: &mut Ast, user_ctx: &mut C, id: Id, - fresh: &tree_builder::FreshScope, ) -> Result, String> { let index = RuleIndex::new(rules); - apply_repeating_rules_inner(&index, ast, user_ctx, id, fresh, 0, None) + apply_rules_inner(&index, ast, user_ctx, id, 0) } -fn apply_repeating_rules_inner( +fn apply_rules_inner( index: &RuleIndex, ast: &mut Ast, user_ctx: &mut C, id: Id, - fresh: &tree_builder::FreshScope, - rewrite_depth: usize, - skip_rule: Option<*const Rule>, -) -> Result, String> { - if rewrite_depth > MAX_REWRITE_DEPTH { - return Err(format!( - "Desugaring exceeded maximum rewrite depth ({MAX_REWRITE_DEPTH}). \ - This likely indicates a non-terminating rule cycle." - )); - } - - let node_kind = ast.get_node(id).map(|n| n.kind_name()).unwrap_or(""); - for rule in index.rules_for_kind(node_kind) { - let rule_ptr = *rule as *const Rule; - if Some(rule_ptr) == skip_rule { - continue; - } - let Some(captures) = rule.match_query(ast, id)? else { - continue; - }; - - // Give each structurally-matching rule a private clone of the user - // context before its guard runs. Guard mutations are visible to the - // transform and recursive translation when the guard succeeds, but a - // failed guard drops the clone before trying the next rule. - let mut local = user_ctx.clone(); - if !rule.guard_matches(ast, &captures, &mut local)? { - continue; - } - - // Repeating rules don't need a real translator: their captures - // aren't auto-translated (Repeating preserves the input schema), - // and `ctx.translate(id)` errors if invoked from a Repeating - // transform. - let translator = TranslatorHandle { - inner: TranslatorImpl::Repeating, - }; - let result_nodes = rule.run_transform(ast, captures, id, fresh, &mut local, translator)?; - - // For non-repeated rules, suppress further application of *this* - // rule on the result root, so a rule whose output matches its own - // query doesn't loop. Other rules and child traversal are unaffected. - let next_skip = if rule.repeated { None } else { Some(rule_ptr) }; - let mut results = Vec::new(); - for node in result_nodes { - results.extend(apply_repeating_rules_inner( - index, - ast, - &mut local, - node, - fresh, - rewrite_depth + 1, - next_skip, - )?); - } - return Ok(results); - } - - // Take the parent's fields by ownership: the recursion will rewrite - // each child Id, and we'll write the (possibly mutated) field map back - // when we're done. Avoids cloning the whole BTreeMap and its child - // Vecs on entry. Each child Vec is only re-allocated if a rewrite - // actually changes its contents. - // - // Child traversal does not increment rewrite depth and starts fresh - // (no rule is skipped on child subtrees). - let mut fields = std::mem::take(&mut ast.nodes[id.0].fields); - for children in fields.values_mut() { - let mut new_children: Option> = None; - for (i, &child_id) in children.iter().enumerate() { - let result = apply_repeating_rules_inner( - index, - ast, - user_ctx, - child_id, - fresh, - rewrite_depth, - None, - )?; - let unchanged = result.len() == 1 && result[0] == child_id; - match (&mut new_children, unchanged) { - (None, true) => {} // unchanged so far, no allocation needed - (None, false) => { - // First divergence — copy already-processed Ids and - // start collecting the rewritten sequence. - let mut new = Vec::with_capacity(children.len()); - new.extend_from_slice(&children[..i]); - new.extend(result); - new_children = Some(new); - } - (Some(new), _) => { - new.extend(result); - } - } - } - if let Some(new) = new_children { - *children = new; - } - } - ast.nodes[id.0].fields = fields; - Ok(vec![id]) -} - -/// Apply rules using `OneShot` semantics: the first matching rule fires on -/// each visited node, recursion proceeds only through captured nodes (not -/// through the input node's children directly), and an error is returned if -/// no rule matches a visited node. -fn apply_one_shot_rules( - rules: &[Rule], - ast: &mut Ast, - user_ctx: &mut C, - id: Id, - fresh: &tree_builder::FreshScope, -) -> Result, String> { - let index = RuleIndex::new(rules); - apply_one_shot_rules_inner(&index, ast, user_ctx, id, fresh, 0) -} - -fn apply_one_shot_rules_inner( - index: &RuleIndex, - ast: &mut Ast, - user_ctx: &mut C, - id: Id, - fresh: &tree_builder::FreshScope, rewrite_depth: usize, ) -> Result, String> { if rewrite_depth > MAX_REWRITE_DEPTH { @@ -1308,57 +1182,34 @@ fn apply_one_shot_rules_inner( // Build the translator handle the transform will use to recursively // translate captures (or, for macro-generated rules, the - // auto-translate prefix uses it to translate every capture up front, - // preserving the legacy behavior). + // auto-translate prefix uses it to translate every capture up front). let translator = TranslatorHandle { - inner: TranslatorImpl::OneShot { - index, - fresh, - rewrite_depth, - matched_root: id, - }, + index, + rewrite_depth, + matched_root: id, }; - let result = rule.run_transform(ast, captures, id, fresh, &mut local, translator)?; + let result = rule.run_transform(ast, captures, id, &mut local, translator)?; return Ok(result); } - Err(format!( - "OneShot: no rule matched node of kind '{node_kind}'" - )) -} - -#[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub enum PhaseKind { - /// A node is re-processed until none of the rules in the phase matches, - /// albeit a single rule cannot be applied twice in a row unless that rule is also marked as repeating. - /// When a node no longer matches any rules, its children are recursively processed (top down). - Repeating, - - /// A node is processed by the first matching rule, and the engine panics if no rule matches. - /// Rules are then recursively applied to every captured node. - /// In practice this is used when translating from one AST schema to another, where every node must be rewritten, - /// and it would be a type error to match the rule patterns (based on the input schema) against the output nodes (which conform to the output schema). - OneShot, + Err(format!("no rule matched node of kind '{node_kind}'")) } -/// One phase of a desugaring pass: a named bundle of rules that runs to -/// completion (a full traversal applying its rules) before the next phase -/// starts. Rules within a phase compete for matches as usual; rules in -/// different phases never compete because each traversal only considers the -/// current phase's rules. +/// One phase of a translation pass: a named bundle of exhaustive rules that +/// runs before the next phase starts. Rules within a phase compete for matches +/// as usual; rules in different phases never compete because each translation +/// only considers the current phase's rules. pub struct Phase { /// Name used in error messages. pub name: String, pub rules: Vec>, - pub kind: PhaseKind, } impl Phase { - pub fn new(name: impl Into, kind: PhaseKind, rules: Vec>) -> Self { + pub fn new(name: impl Into, rules: Vec>) -> Self { Self { name: name.into(), rules, - kind, } } } @@ -1376,8 +1227,8 @@ impl Phase { /// /// ```ignore /// let config = yeast::DesugaringConfig::new() -/// .add_phase("cleanup", PhaseKind::Repeating, cleanup_rules) -/// .add_phase("desugar", PhaseKind::Repeating, desugar_rules) +/// .add_phase("normalize", normalization_rules) +/// .add_phase("translate", translation_rules) /// .with_output_node_types_yaml(yaml); /// ``` /// @@ -1390,6 +1241,9 @@ pub struct DesugaringConfig { /// node types are used (i.e. the desugared AST has the same node types /// as the tree-sitter grammar). pub output_node_types_yaml: Option<&'static str>, + /// Input field names whose boundary ranges are excluded from rule-result + /// locations. + pub ignored_location_fields: Vec<&'static str>, } // Manual `Default` impl so users with a custom `C` that doesn't implement @@ -1399,6 +1253,7 @@ impl Default for DesugaringConfig { Self { phases: Vec::new(), output_node_types_yaml: None, + ignored_location_fields: Vec::new(), } } } @@ -1410,14 +1265,27 @@ impl DesugaringConfig { Self::default() } - /// Append a new phase with the given name, kind, and rules. - pub fn add_phase( + /// Append a new phase with the given name and exhaustive rules. + pub fn add_phase(mut self, name: impl Into, mut rules: Vec>) -> Self { + for rule in &mut rules { + rule.set_ignored_location_fields(&self.ignored_location_fields); + } + self.phases.push(Phase::new(name, rules)); + self + } + + /// Ignore boundary syntax stored under any of these input field names when + /// calculating matched locations for rule results. + pub fn with_ignored_location_fields( mut self, - name: impl Into, - kind: PhaseKind, - rules: Vec>, + fields: impl IntoIterator, ) -> Self { - self.phases.push(Phase::new(name, kind, rules)); + self.ignored_location_fields = fields.into_iter().collect(); + for phase in &mut self.phases { + for rule in &mut phase.rules { + rule.set_ignored_location_fields(&self.ignored_location_fields); + } + } self } @@ -1556,21 +1424,11 @@ impl<'a, C: Clone> Runner<'a, C> { } /// Apply each phase in turn to the AST, threading the root through. - /// A single `FreshScope` is shared across phases so that fresh - /// identifiers generated in different phases don't collide. fn run_phases(&self, ast: &mut Ast, user_ctx: &mut C) -> Result<(), String> { - let fresh = tree_builder::FreshScope::new(); let mut root = ast.get_root(); for phase in self.phases { - let res = match phase.kind { - PhaseKind::Repeating => { - apply_repeating_rules(&phase.rules, ast, user_ctx, root, &fresh) - } - PhaseKind::OneShot => { - apply_one_shot_rules(&phase.rules, ast, user_ctx, root, &fresh) - } - } - .map_err(|e| format!("Phase `{}`: {e}", phase.name))?; + let res = apply_rules(&phase.rules, ast, user_ctx, root) + .map_err(|e| format!("Phase `{}`: {e}", phase.name))?; if res.len() != 1 { return Err(format!( "Phase `{}`: expected exactly one result node, got {}", diff --git a/shared/yeast/src/range.rs b/shared/yeast/src/range.rs index e56bbcc6fb85..6b0024596bb5 100644 --- a/shared/yeast/src/range.rs +++ b/shared/yeast/src/range.rs @@ -30,3 +30,101 @@ pub struct Range { pub start_point: Point, pub end_point: Point, } + +impl Range { + /// Return the smallest range containing both ranges. + pub fn union(self, other: Self) -> Self { + let (start_byte, start_point) = if self.start_byte <= other.start_byte { + (self.start_byte, self.start_point) + } else { + (other.start_byte, other.start_point) + }; + let (end_byte, end_point) = if self.end_byte >= other.end_byte { + (self.end_byte, self.end_point) + } else { + (other.end_byte, other.end_point) + }; + Self { + start_byte, + end_byte, + start_point, + end_point, + } + } + + /// Return an empty range anchored at this range's start. + pub fn empty_at_start(self) -> Self { + Self { + end_byte: self.start_byte, + end_point: self.start_point, + ..self + } + } + + /// Return an empty range anchored at this range's end. + pub fn empty_at_end(self) -> Self { + Self { + start_byte: self.end_byte, + start_point: self.end_point, + ..self + } + } + + /// Return whether this range contains no source bytes. + pub fn is_empty(self) -> bool { + self.start_byte == self.end_byte + } + + pub(crate) fn ignoring_boundary_ranges( + mut self, + ignored: impl IntoIterator, + ) -> Self { + let ignored: Vec<_> = ignored + .into_iter() + .filter(|range| !range.is_empty()) + .collect(); + loop { + let previous = self; + for range in &ignored { + if *range == self { + return self.empty_at_start(); + } + if range.start_byte == self.start_byte { + self.start_byte = range.end_byte; + self.start_point = range.end_point; + } + if range.end_byte == self.end_byte { + self.end_byte = range.start_byte; + self.end_point = range.start_point; + } + } + if self == previous { + return self; + } + } + } +} + +#[cfg(test)] +mod tests { + use super::{Point, Range}; + + fn range(start_byte: usize, end_byte: usize) -> Range { + Range { + start_byte, + end_byte, + start_point: Point::new(0, start_byte), + end_point: Point::new(0, end_byte), + } + } + + #[test] + fn empty_ignored_ranges_do_not_change_boundaries() { + let source = range(0, 5); + + assert_eq!( + source.ignoring_boundary_ranges([range(0, 0), range(5, 5)]), + source + ); + } +} diff --git a/shared/yeast/src/tree_builder.rs b/shared/yeast/src/tree_builder.rs deleted file mode 100644 index c735c272d283..000000000000 --- a/shared/yeast/src/tree_builder.rs +++ /dev/null @@ -1,43 +0,0 @@ -use std::cell::Cell; -use std::collections::BTreeMap; - -/// Tracks fresh identifier generation during a single tree-building operation. -/// All occurrences of the same `$name` within one build share the same generated value. -pub struct FreshScope { - counter: Cell, - resolved: std::cell::RefCell>, -} - -impl Default for FreshScope { - fn default() -> Self { - Self::new() - } -} - -impl FreshScope { - pub fn new() -> Self { - Self { - counter: Cell::new(0), - resolved: std::cell::RefCell::new(BTreeMap::new()), - } - } - - pub fn resolve(&self, name: &str) -> String { - self.resolved - .borrow_mut() - .entry(name.to_string()) - .or_insert_with(|| { - let id = self.counter.get(); - self.counter.set(id + 1); - format!("${name}-{id}") - }) - .clone() - } - - /// Clear resolved names but keep the counter. Called between rule - /// applications so that `$tmp` in different rules gets different values - /// while the counter increases monotonically. - pub fn next_scope(&self) { - self.resolved.borrow_mut().clear(); - } -} diff --git a/shared/yeast/tests/test.rs b/shared/yeast/tests/test.rs index 60ed8afe84dd..099f5ebe7eb9 100644 --- a/shared/yeast/tests/test.rs +++ b/shared/yeast/tests/test.rs @@ -1,5 +1,7 @@ #![cfg(test)] +use std::collections::BTreeMap; + use yeast::dump::{dump_ast, dump_ast_with_type_errors}; use yeast::*; @@ -12,24 +14,79 @@ fn parse_and_dump(input: &str) -> String { dump_ast(&ast, ast.get_root(), input) } -/// Helper: parse Ruby source with a custom output schema and a single -/// phase of rules, return dump. +fn with_passthrough_rules(mut rules: Vec>) -> Vec> { + let program_rule = Rule::new( + yeast::query!((program (_)* @children)), + Box::new(|ast, captures, source_range, user_ctx, translator| { + let mut children = Vec::new(); + for child in captures.get_all("children") { + children.extend(translator.translate(ast, user_ctx, child)?); + } + let kind = ast + .id_for_node_kind("program") + .ok_or("program kind is not registered")?; + let fields = BTreeMap::from([(CHILD_FIELD, children)]); + let program = ast.create_node_with_range( + kind, + NodeContent::DynamicString(String::new()), + fields, + true, + source_range, + ); + Ok(vec![program]) + }), + ); + let left_assignment_list_rule: Rule = yeast::rule!( + (left_assignment_list (identifier)* @items) + => + (left_assignment_list item: {items}) + ); + let assignment_rule: Rule = yeast::rule!( + (assignment left: (_) @left right: (_) @right) + => + (assignment left: {left} right: {right}) + ); + let identifier_rule: Rule = yeast::rule!( + (identifier) @@node + => + identifier { node } + ); + let integer_rule: Rule = yeast::rule!( + (integer) @@node + => + integer { node } + ); + rules.extend([ + program_rule, + left_assignment_list_rule, + assignment_rule, + identifier_rule, + integer_rule, + ]); + rules +} + +/// Helper: translate Ruby source with a custom output schema and rules, then +/// return its dump. The appended pass-through rules make the small input +/// subset used by these tests exhaustive. fn run_and_dump(input: &str, rules: Vec) -> String { - run_phased_and_dump(input, vec![Phase::new("test", PhaseKind::Repeating, rules)]) + run_phased_and_dump( + input, + vec![Phase::new("test", with_passthrough_rules(rules))], + ) } -/// Helper: parse Ruby source with custom rules and return the transformed AST. +/// Helper: translate Ruby source with custom rules and return the transformed AST. fn run_and_ast(input: &str, rules: Vec) -> Ast { let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); let schema = yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); - let phases = vec![Phase::new("test", PhaseKind::Repeating, rules)]; + let phases = vec![Phase::new("test", with_passthrough_rules(rules))]; let runner: Runner = Runner::with_schema(lang, &schema, &phases); runner.run(input).unwrap() } -/// Helper: parse Ruby source with a custom output schema and multiple -/// rule phases, return dump. +/// Helper: translate Ruby source with multiple rule phases and return its dump. fn run_phased_and_dump(input: &str, phases: Vec) -> String { let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); let schema = @@ -39,19 +96,6 @@ fn run_phased_and_dump(input: &str, phases: Vec) -> String { dump_ast(&ast, ast.get_root(), input) } -/// Helper: like `run_and_dump`, but returns the runner error (if any) -/// instead of unwrapping. -fn run_and_get_error(input: &str, rules: Vec) -> String { - let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); - let schema = - yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); - let phases = vec![Phase::new("test", PhaseKind::Repeating, rules)]; - let runner: Runner = Runner::with_schema(lang, &schema, &phases); - runner - .run(input) - .expect_err("expected runner to return an error") -} - /// Helper: parse Ruby source with no rules and dump with schema type errors. fn parse_and_dump_typed(input: &str, schema_yaml: &str) -> String { let runner: Runner = Runner::new(tree_sitter_ruby::LANGUAGE.into(), &[]); @@ -71,14 +115,16 @@ fn parse_and_dump_typed_with_language(input: &str, schema_yaml: &str) -> String dump_ast_with_type_errors(&ast, ast.get_root(), input, &schema) } -/// Helper: parse Ruby source with custom rules and dump with schema type errors. +/// Helper: translate Ruby source with custom rules and dump with schema type errors. fn run_and_dump_typed(input: &str, rules: Vec, schema_yaml: &str) -> String { let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); - let schema = yeast::node_types_yaml::schema_from_yaml(schema_yaml).unwrap(); - let phases = vec![Phase::new("test", PhaseKind::Repeating, rules)]; - let runner: Runner = Runner::with_schema(lang, &schema, &phases); + let runner_schema = + yeast::node_types_yaml::schema_from_yaml_with_language(schema_yaml, &lang).unwrap(); + let validation_schema = yeast::node_types_yaml::schema_from_yaml(schema_yaml).unwrap(); + let phases = vec![Phase::new("test", with_passthrough_rules(rules))]; + let runner: Runner = Runner::with_schema(lang, &runner_schema, &phases); let ast = runner.run(input).unwrap(); - dump_ast_with_type_errors(&ast, ast.get_root(), input, &schema) + dump_ast_with_type_errors(&ast, ast.get_root(), input, &validation_schema) } /// Assert that a dump equals the expected string, treating the expected @@ -268,8 +314,6 @@ fn test_query_match() { #[test] fn test_run_from_ast_desugars_hand_built_tree() { - use std::collections::BTreeMap; - // Output schema for the desugared tree. Its kind/field names must become // resolvable in the hand-built AST's schema for the rule to build them. let schema_yaml = r#" @@ -289,7 +333,7 @@ named: let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); let config = DesugaringConfig::<()>::new() - .add_phase("test", PhaseKind::OneShot, rules) + .add_phase("test", rules) .with_output_node_types_yaml(schema_yaml); let desugarer = ConcreteDesugarer::new(lang, config).unwrap(); @@ -382,8 +426,7 @@ fn test_reachable_nodes_excludes_orphaned_rewrite_nodes() { yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); let phases: Vec = vec![Phase::new( "test", - PhaseKind::Repeating, - vec![yeast::rule!((integer) => (identifier "replaced"))], + with_passthrough_rules(vec![yeast::rule!((integer) => (identifier "replaced"))]), )]; let runner: Runner = Runner::with_schema(lang, &schema, &phases); @@ -650,10 +693,9 @@ fn test_tree_builder() { query.do_match(&ast, ast.get_root(), &mut captures).unwrap(); // Swap left and right - let fresh = yeast::tree_builder::FreshScope::new(); let mut user_ctx = (); - let mut ctx = yeast::build::BuildCtx::new(&mut ast, &captures, &fresh, &mut user_ctx); - let new_id = yeast::tree!(ctx, + let mut ctx = yeast::build::BuildCtx::new(&mut ast, &captures, &mut user_ctx); + let new_id = yeast::tree!( (program child: (assignment left: {ctx.capture("right")} @@ -679,11 +721,10 @@ fn test_tree_builder() { /// content. fn build_optional_right(ast: &mut Ast, value: Option) -> (yeast::Id, yeast::Id) { let captures = yeast::captures::Captures::new(); - let fresh = yeast::tree_builder::FreshScope::new(); let mut user_ctx = (); - let mut ctx = yeast::build::BuildCtx::new(ast, &captures, &fresh, &mut user_ctx); - let left = yeast::tree!(ctx, (identifier "x")); - let root = yeast::tree!(ctx, + let mut ctx = yeast::build::BuildCtx::new(ast, &captures, &mut user_ctx); + let left = yeast::tree!((identifier "x")); + let root = yeast::tree!( (assignment left: {left} right: (integer #{value})? @@ -734,15 +775,14 @@ fn test_optional_field_propagates_through_nested_nodes() { let mut ast = runner.run("x = 1").unwrap(); let captures = yeast::captures::Captures::new(); - let fresh = yeast::tree_builder::FreshScope::new(); let mut user_ctx = (); - let mut ctx = yeast::build::BuildCtx::new(&mut ast, &captures, &fresh, &mut user_ctx); + let mut ctx = yeast::build::BuildCtx::new(&mut ast, &captures, &mut user_ctx); // The absent value sits two levels below the `?`, so the whole // `left_assignment_list` subtree is abandoned along with it. let absent: Option = None; - let right = yeast::tree!(ctx, (integer "1")); - let root = yeast::tree!(ctx, + let right = yeast::tree!((integer "1")); + let root = yeast::tree!( (assignment left: (left_assignment_list child: (identifier #{absent}))? right: {right} @@ -764,13 +804,12 @@ fn test_innermost_optional_field_catches_first() { let mut ast = runner.run("x = 1").unwrap(); let captures = yeast::captures::Captures::new(); - let fresh = yeast::tree_builder::FreshScope::new(); let mut user_ctx = (); - let mut ctx = yeast::build::BuildCtx::new(&mut ast, &captures, &fresh, &mut user_ctx); + let mut ctx = yeast::build::BuildCtx::new(&mut ast, &captures, &mut user_ctx); // The inner `?` catches, so only `child` is dropped; `left` survives. let absent: Option = None; - let root = yeast::tree!(ctx, + let root = yeast::tree!( (assignment left: (left_assignment_list child: (identifier #{absent})?)? ) @@ -800,7 +839,7 @@ fn ruby_rules() -> Vec { ) => (assignment - left: (identifier $tmp) + left: (identifier "assignment_tmp") right: {right} ) {left.iter().enumerate().map(|(i, &lhs)| @@ -808,7 +847,7 @@ fn ruby_rules() -> Vec { (assignment left: {lhs} right: (element_reference - object: (identifier $tmp) + object: (identifier "assignment_tmp") index: (integer #{i}) ) ) @@ -828,12 +867,12 @@ fn ruby_rules() -> Vec { method: (identifier "each") block: (block parameters: (block_parameters - parameter: (identifier $tmp) + parameter: (identifier "loop_tmp") ) body: (block_body stmt: (assignment left: {pat} - right: (identifier $tmp) + right: (identifier "loop_tmp") ) stmt: {body} ) @@ -852,19 +891,19 @@ fn test_desugar_multiple_assignment() { r#" program assignment - left: identifier "$tmp-0" + left: identifier "assignment_tmp" right: identifier "e" assignment left: identifier "x" right: element_reference - object: identifier "$tmp-0" + object: identifier "assignment_tmp" index: integer "0" assignment left: identifier "y" right: element_reference - object: identifier "$tmp-0" + object: identifier "assignment_tmp" index: integer "1" "#, ); @@ -885,39 +924,17 @@ fn test_desugar_for_loop() { stmt: assignment left: identifier "x" - right: identifier "$tmp-0" + right: identifier "loop_tmp" identifier "y" parameters: block_parameters - parameter: identifier "$tmp-0" + parameter: identifier "loop_tmp" method: identifier "each" receiver: identifier "list" "#, ); } -#[test] -fn test_shorthand_rule() { - let rule: Rule = yeast::rule!( - (assignment - left: (_) @method - right: (_) @receiver - ) - => call - ); - - let dump = run_and_dump("x = 1", vec![rule]); - assert_dump_eq( - &dump, - r#" - program - call - method: identifier "x" - receiver: integer "1" - "#, - ); -} - #[derive(Clone, Default)] struct GuardTestContext { enabled: bool, @@ -951,8 +968,7 @@ fn test_rule_guard_reads_raw_capture_and_user_context() { .unwrap(); let phases = vec![Phase::new( "test", - PhaseKind::Repeating, - guarded_integer_rules(), + with_passthrough_rules(guarded_integer_rules()), )]; let runner = Runner::with_schema(lang, &schema, &phases); let mut user_ctx = GuardTestContext { @@ -1017,29 +1033,35 @@ fn test_rule_guard_binds_optional_and_repeated_raw_captures() { } #[test] -fn test_chained_rules_output_only_kind() { - // Exercise rule chaining where an intermediate kind exists only in the +fn test_multiple_translation_phases() { + // Exercise a second translation phase whose input kind exists only in the // output schema (not in the input tree-sitter grammar): // assignment → first_node (input → output-only) // first_node → second_node (output-only → output-only) // The matcher must look up `first_node` against the schema, which only // knows about it via the YAML node-types file. - let assignment_to_first = yeast::rule!( + let assignment_to_first: Rule = yeast::rule!( (assignment left: (_) @left right: (_) @right ) - => first_node + => (first_node left: {left} right: {right}) ); - let first_to_second = yeast::rule!( + let first_to_second: Rule = yeast::rule!( (first_node left: (_) @left right: (_) @right ) - => second_node + => (second_node left: {left} right: {right}) ); - let dump = run_and_dump("x = 1", vec![assignment_to_first, first_to_second]); + let dump = run_phased_and_dump( + "x = 1", + vec![ + Phase::new("first", with_passthrough_rules(vec![assignment_to_first])), + Phase::new("second", with_passthrough_rules(vec![first_to_second])), + ], + ); assert_dump_eq( &dump, r#" @@ -1051,9 +1073,6 @@ fn test_chained_rules_output_only_kind() { ); } -// A rule that swaps `assignment.left` and `assignment.right`. Each -// application produces another `assignment` whose query the rule -// matches again, so without the once-per-node default it would loop. fn swap_assignment_rule() -> Rule { yeast::rule!( (assignment @@ -1069,21 +1088,9 @@ fn swap_assignment_rule() -> Rule { } #[test] -fn test_repeated_rule_hits_depth_limit() { - // With `.repeated()` the rule is allowed to fire on its own output, - // which cycles forever and trips the rewrite-depth safety net. - let err = run_and_get_error("x = 1", vec![swap_assignment_rule().repeated()]); - assert!( - err.contains("exceeded maximum rewrite depth"), - "expected depth-limit error, got: {err}" - ); -} - -#[test] -fn test_default_rule_fires_at_most_once_per_node() { - // Without `.repeated()` (the default), a rule fires at most once on a - // given node. The swap therefore happens exactly once and the desugaring - // terminates cleanly. +fn test_rule_output_is_not_reprocessed() { + // Translation applies a rule once to an input node and does not match + // rules against the output node. let dump = run_and_dump("x = 1", vec![swap_assignment_rule()]); assert_dump_eq( &dump, @@ -1096,75 +1103,9 @@ fn test_default_rule_fires_at_most_once_per_node() { ); } -// ---- Phase tests ---- - -#[test] -fn test_phased_desugaring() { - // Two phases that could equally have been a single one with chained - // rules. Splitting them makes the intent (cleanup, then desugar) - // explicit and provides per-phase error messages. - let cleanup = vec![yeast::rule!( - (assignment - left: (_) @left - right: (_) @right - ) - => first_node - )]; - let desugar = vec![yeast::rule!( - (first_node - left: (_) @left - right: (_) @right - ) - => second_node - )]; - - let dump = run_phased_and_dump( - "x = 1", - vec![ - Phase::new("cleanup", PhaseKind::Repeating, cleanup), - Phase::new("desugar", PhaseKind::Repeating, desugar), - ], - ); - assert_dump_eq( - &dump, - r#" - program - second_node - left: identifier "x" - right: integer "1" - "#, - ); -} - -#[test] -fn test_phase_error_includes_phase_name() { - // A repeated rule that loops; the error message should identify the - // phase that tripped the depth limit. - let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); - let schema = - yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); - let phases = vec![Phase::new( - "buggy", - PhaseKind::Repeating, - vec![swap_assignment_rule().repeated()], - )]; - let runner: Runner = Runner::with_schema(lang, &schema, &phases); - let err = runner - .run("x = 1") - .expect_err("expected runner to return an error"); - assert!( - err.contains("Phase `buggy`"), - "error should mention the failing phase, got: {err}" - ); - assert!( - err.contains("exceeded maximum rewrite depth"), - "error should mention the depth limit, got: {err}" - ); -} - -/// Helper: an exhaustive set of OneShot rules covering every node reachable -/// (via captures) when translating `"x = 1"`. -fn one_shot_xeq1_rules() -> Vec { +/// Helper: an exhaustive set of rules covering every node reachable via +/// captures when translating `"x = 1"`. +fn translation_xeq1_rules() -> Vec { vec![ yeast::rule!( (program (_)* @stmts) @@ -1182,15 +1123,11 @@ fn one_shot_xeq1_rules() -> Vec { } #[test] -fn test_one_shot_phase() { +fn test_translation_phase() { let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); let schema = yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); - let phases = vec![Phase::new( - "translate", - PhaseKind::OneShot, - one_shot_xeq1_rules(), - )]; + let phases = vec![Phase::new("translate", translation_xeq1_rules())]; let runner: Runner = Runner::with_schema(lang, &schema, &phases); let input = "x = 1"; @@ -1209,19 +1146,19 @@ fn test_one_shot_phase() { } #[test] -fn test_one_shot_phase_errors_when_no_rule_matches() { +fn test_translation_phase_errors_when_no_rule_matches() { let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); let schema = yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); // Drop the `integer` rule so the recursion has no rule for `integer`. - let mut rules = one_shot_xeq1_rules(); + let mut rules = translation_xeq1_rules(); rules.pop(); - let phases = vec![Phase::new("translate", PhaseKind::OneShot, rules)]; + let phases = vec![Phase::new("translate", rules)]; let runner: Runner = Runner::with_schema(lang, &schema, &phases); let err = runner .run("x = 1") - .expect_err("expected OneShot to error on unmatched node"); + .expect_err("expected translation to error on unmatched node"); assert!( err.contains("Phase `translate`"), "error should name the phase, got: {err}" @@ -1233,7 +1170,7 @@ fn test_one_shot_phase_errors_when_no_rule_matches() { } #[test] -fn test_one_shot_guard_runs_before_capture_translation() { +fn test_guard_runs_before_capture_translation() { let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); let schema = yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); @@ -1243,7 +1180,7 @@ fn test_one_shot_guard_runs_before_capture_translation() { => (program stmt: {stmts}) ), - // There is deliberately no OneShot rule for `identifier`. If this + // There is deliberately no rule for `identifier`. If this // rule translated `@left` before binding it raw in the guard, the run // would fail instead of evaluating the guard and falling through to // the next assignment rule. @@ -1255,7 +1192,7 @@ fn test_one_shot_guard_runs_before_capture_translation() { ), yeast::rule!((assignment) => (identifier "fallback")), ]; - let phases = vec![Phase::new("translate", PhaseKind::OneShot, rules)]; + let phases = vec![Phase::new("translate", rules)]; let runner: Runner = Runner::with_schema(lang, &schema, &phases); let input = "x = 1"; @@ -1271,7 +1208,7 @@ fn test_one_shot_guard_runs_before_capture_translation() { } #[test] -fn test_one_shot_guard_context_mutation_is_visible_to_transform() { +fn test_guard_context_mutation_is_visible_to_transform() { let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); let schema = yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); @@ -1294,7 +1231,7 @@ fn test_one_shot_guard_context_mutation_is_visible_to_transform() { } ), ]; - let phases = vec![Phase::new("translate", PhaseKind::OneShot, rules)]; + let phases = vec![Phase::new("translate", rules)]; let runner = Runner::with_schema(lang, &schema, &phases); let mut user_ctx = GuardTestContext::default(); @@ -1310,12 +1247,12 @@ fn test_one_shot_guard_context_mutation_is_visible_to_transform() { ); } -/// OneShot recursion must apply rules to *captured* nodes, even if the rule +/// Translation must apply rules to *captured* nodes, even if the rule /// returns a captured child verbatim. A buggy implementation that only /// recurses into the children of the rule's output (rather than into the /// captures) would leave the returned capture untransformed. #[test] -fn test_one_shot_recurses_into_returned_capture() { +fn test_translation_recurses_into_returned_capture() { let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); let schema = yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); @@ -1334,13 +1271,13 @@ fn test_one_shot_recurses_into_returned_capture() { yeast::rule!((identifier) => (identifier "ID")), yeast::rule!((integer) => (integer "INT")), ]; - let phases = vec![Phase::new("translate", PhaseKind::OneShot, rules)]; + let phases = vec![Phase::new("translate", rules)]; let runner: Runner = Runner::with_schema(lang, &schema, &phases); let input = "x = 1"; let ast = runner.run(input).unwrap(); let dump = dump_ast(&ast, ast.get_root(), input); - // `left` is an `identifier`; OneShot must apply the identifier rule to + // `left` is an `identifier`; translation must apply the identifier rule to // it before the assignment transform returns it verbatim. assert_dump_eq( &dump, @@ -1351,13 +1288,13 @@ fn test_one_shot_recurses_into_returned_capture() { ); } -/// OneShot recursion must NOT descend into the children of the rule's output. +/// Translation must NOT descend into the children of the rule's output. /// A rule may legitimately wrap a captured node in fresh output-schema nodes /// that have no matching rule of their own (since rule patterns target the /// input schema). Recursing into the output would erroneously try to find /// rules for those wrapper kinds and fail. #[test] -fn test_one_shot_does_not_recurse_into_wrapper_output() { +fn test_translation_does_not_recurse_into_wrapper_output() { let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); let schema = yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); @@ -1381,7 +1318,7 @@ fn test_one_shot_does_not_recurse_into_wrapper_output() { yeast::rule!((identifier) => (identifier "ID")), yeast::rule!((integer) => (integer "INT")), ]; - let phases = vec![Phase::new("translate", PhaseKind::OneShot, rules)]; + let phases = vec![Phase::new("translate", rules)]; let runner: Runner = Runner::with_schema(lang, &schema, &phases); let input = "x = 1"; @@ -1434,7 +1371,7 @@ fn test_raw_capture_marker() { yeast::rule!((identifier) => (identifier "ID")), yeast::rule!((integer) => (integer "INT")), ]; - let phases = vec![Phase::new("translate", PhaseKind::OneShot, rules)]; + let phases = vec![Phase::new("translate", rules)]; let runner: Runner = Runner::with_schema(lang, &schema, &phases); let input = "x = 1"; @@ -1489,7 +1426,7 @@ fn test_raw_capture_marker_explicit_translate() { yeast::rule!((identifier) => (identifier "ID")), yeast::rule!((integer) => (integer "INT")), ]; - let phases = vec![Phase::new("translate", PhaseKind::OneShot, rules)]; + let phases = vec![Phase::new("translate", rules)]; let runner: Runner = Runner::with_schema(lang, &schema, &phases); let input = "x = 1"; @@ -1540,44 +1477,6 @@ fn test_cursor_navigation() { assert!(!cursor.goto_parent()); } -#[test] -fn test_desugar_for_with_multiple_assignment() { - let dump = run_and_dump("for a, b in list do\n x\nend", ruby_rules()); - assert_dump_eq( - &dump, - r#" - program - call - block: - block - body: - block_body - stmt: - assignment - left: identifier "$tmp-1" - right: identifier "$tmp-0" - assignment - left: identifier "a" - right: - element_reference - object: identifier "$tmp-1" - index: integer "0" - assignment - left: identifier "b" - right: - element_reference - object: identifier "$tmp-1" - index: integer "1" - identifier "x" - parameters: - block_parameters - parameter: identifier "$tmp-0" - method: identifier "each" - receiver: identifier "list" - "#, - ); -} - /// Regression test: `#{capture}` in a template must render the *source text* /// of the captured node, not its arena `Id`. Captures are bound as `Id`, /// whose `YeastDisplay` impl resolves to the captured node's source text. @@ -1601,7 +1500,7 @@ fn test_hash_brace_renders_capture_source_text() { r#" program call - arguments: argument_list "foo.bar()" + arguments: argument_list method: identifier "bar" receiver: identifier "foo" "#, @@ -1663,6 +1562,359 @@ fn test_hash_brace_uses_capture_location_for_leaf() { assert_eq!(bar.end_byte(), 7); } +/// Regression test: tokens matched by a rule but elided from the output still +/// contribute to the source location of the synthesized replacement node. +#[test] +fn test_elided_tokens_contribute_to_replacement_location() { + let rule: Rule = rule!( + (call + method: (identifier) @name + receiver: (identifier) @recv + ) + => + (call + method: {name} + ) + ); + + let ast = run_and_ast("foo.bar()", vec![rule]); + let call_ids: Vec = ast + .reachable_node_ids() + .into_iter() + .filter(|&id| { + ast.get_node(id) + .is_some_and(|node| node.kind_name() == "call") + }) + .collect(); + + assert_eq!(call_ids.len(), 1, "expected exactly one reachable call"); + let call_id = call_ids[0]; + let call = ast.get_node(call_id).unwrap(); + + assert_eq!(call.start_byte(), 0); + assert_eq!(call.end_byte(), 9); +} + +/// Nested nodes constructed by a rule derive their location from their own +/// children rather than inheriting the range of the rule's matched root. +#[test] +fn test_nested_synthetic_node_uses_child_location() { + let rule: Rule = rule!( + (call + method: (identifier) @name + receiver: (identifier) @recv + ) + => + (call + method: {name} + receiver: {recv} + arguments: (argument_list argument: {recv}) + ) + ); + + let ast = run_and_ast("foo.bar()", vec![rule]); + let call = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "call") + .expect("call exists"); + assert_eq!(call.byte_range(), 0..9); + + let arguments = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "argument_list") + .expect("argument list exists"); + assert_eq!(arguments.byte_range(), 0..3); +} + +/// A nested node with no explicit range or located children gets an empty +/// location at the start of the rule's matched node. +#[test] +fn test_source_less_nested_node_uses_empty_match_start() { + let rule: Rule = rule!( + (call + method: (identifier) @name + receiver: (identifier) @recv + ) + => + (call + method: {name} + receiver: {recv} + arguments: (argument_list) + ) + ); + + let ast = run_and_ast("foo.bar()", vec![rule]); + let arguments = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "argument_list") + .expect("argument list exists"); + let range = arguments.source_range().unwrap(); + assert_eq!(range.start_byte..range.end_byte, 0..0); +} + +/// An explicit empty range at byte zero is a real location, not the sentinel +/// for an absent location, and therefore contributes to parent ranges. +#[test] +fn test_empty_range_at_file_start_contributes_to_parent() { + use std::collections::BTreeMap; + + let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); + let schema = + yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); + let mut ast = Ast::with_schema(schema); + let empty = Range { + start_byte: 0, + end_byte: 0, + start_point: Point::new(0, 0), + end_point: Point::new(0, 0), + }; + let child = + ast.create_named_token_with_range("identifier", "synthetic".to_owned(), Some(empty)); + let fields = BTreeMap::from([(ast.field_id_for_name("method").unwrap(), vec![child])]); + let parent = ast.create_node_with_range( + ast.id_for_node_kind("call").unwrap(), + NodeContent::DynamicString(String::new()), + fields, + true, + None, + ); + + assert_eq!(ast.get_node(parent).unwrap().source_range(), Some(empty)); +} + +/// A rule that only unwraps and returns a translated capture must not widen +/// that capture to the wrapper's source range. +#[test] +fn test_returned_capture_keeps_its_location() { + let rule: Rule = rule!( + (call method: (identifier) @name) + => + identifier { name } + ); + + let ast = run_and_ast("foo.bar()", vec![rule]); + let identifier = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "identifier") + .expect("identifier exists"); + assert_eq!(identifier.byte_range(), 4..7); +} + +#[test] +fn test_ignored_location_field_is_excluded_from_rule_result_location() { + let rule: Rule = rule!( + (assignment + left: (identifier) @left) + => + (call method: {left}) + ); + + let language: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); + let config = DesugaringConfig::new() + .with_ignored_location_fields(["right"]) + .add_phase("test", with_passthrough_rules(vec![rule])) + .with_output_node_types_yaml(OUTPUT_SCHEMA_YAML); + let runner: Runner = Runner::from_config(language, &config).unwrap(); + let ast = runner.run("x = 1").unwrap(); + let call = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "call") + .expect("call exists"); + assert_eq!(call.byte_range(), 0..4); +} + +/// Nodes allocated by an explicit recursive translation belong to that nested +/// rule invocation, even when the outer rule returns one directly. +#[test] +fn test_explicit_recursive_translation_keeps_nested_rule_location() { + let program: Rule = rule!( + (program (_)* @stmts) + => + (program stmt: {stmts}) + ); + let unwrap: Rule = rule!( + (call method: (identifier) @@name) + => + identifier { + ctx.translate(name)? + .into_iter() + .next() + .ok_or("identifier translation produced no result")? + } + ); + let translate_identifier: Rule = rule!((identifier) @@identifier => (identifier #{identifier})); + + let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); + let schema = + yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); + let phases = vec![Phase::new( + "translate", + vec![program, unwrap, translate_identifier], + )]; + let runner: Runner = Runner::with_schema(lang, &schema, &phases); + let ast = runner.run("foo.bar()").unwrap(); + let identifier = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "identifier") + .expect("identifier exists"); + assert_eq!(identifier.byte_range(), 4..7); +} + +/// `tree_at!` assigns the captured node's range only to the template root. +#[test] +fn test_tree_at_assigns_capture_range_to_root_only() { + let rule: Rule = rule!( + (call + method: (identifier) @name + receiver: (identifier) @recv + ) @@source + => + call { + let arguments = tree_at!(source, (argument_list argument: (integer "0"))); + tree!((call method: {name} receiver: {recv} arguments: {arguments})) + } + ); + + let ast = run_and_ast("foo.bar()", vec![rule]); + let arguments = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "argument_list") + .expect("argument list exists"); + assert_eq!(arguments.byte_range(), 0..9); + + let integer = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "integer") + .expect("integer exists"); + assert_eq!(integer.byte_range(), 0..0); +} + +/// `tree_spanning!` assigns the union of the captured node ranges only to the +/// template root. +#[test] +fn test_tree_spanning_assigns_union_to_root_only() { + let rule: Rule = rule!( + (call + method: (identifier) @name + receiver: (identifier) @recv + ) + => + call { + let arguments = tree_spanning!( + [recv, name], + (argument_list argument: (integer "0")) + ); + tree!((call method: {name} receiver: {recv} arguments: {arguments})) + } + ); + + let ast = run_and_ast("foo.bar()", vec![rule]); + let arguments = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "argument_list") + .expect("argument list exists"); + assert_eq!(arguments.byte_range(), 0..7); + + let integer = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| ast.get_node(id)) + .find(|node| node.kind_name() == "integer") + .expect("integer exists"); + assert_eq!(integer.byte_range(), 0..0); +} + +/// Explicit ranges on multiple results must not be widened to the range of the +/// input node matched by the rule. +#[test] +fn test_explicitly_located_multiple_results_keep_their_ranges() { + let rule: Rule = rule!( + (assignment + left: (identifier) @@left + right: (integer) @@right) + => + identifier* { + let left_text = ctx.source_text(left); + let right_text = ctx.source_text(right); + let left_range = left.yeast_source_range(&*ctx.ast); + let right_range = right.yeast_source_range(&*ctx.ast); + vec![ + ctx.literal_with_source_range("identifier", &left_text, left_range), + ctx.literal_with_source_range("identifier", &right_text, right_range), + ] + } + ); + + let ast = run_and_ast("x = 1", vec![rule]); + let mut ranges: Vec<_> = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| { + let node = ast.get_node(id)?; + (node.kind_name() == "identifier").then(|| (ast.source_text(id), node.byte_range())) + }) + .collect(); + ranges.sort_by_key(|(_, range)| range.start); + + assert_eq!( + ranges, + vec![("x".to_string(), 0..1), ("1".to_string(), 4..5)] + ); +} + +/// A range-backed node already carries an exact parsed range and must not be +/// finalized as a synthetic result. +#[test] +fn test_range_backed_result_keeps_its_range() { + use std::collections::BTreeMap; + + let rule: Rule = rule!( + (assignment left: (identifier) @@left) + => + identifier { + let range = left.yeast_source_range(&*ctx.ast).unwrap(); + let kind = ctx.ast.id_for_node_kind("identifier").unwrap(); + ctx.create_node_with_range( + kind, + NodeContent::Range(range), + BTreeMap::new(), + true, + None, + ) + } + ); + + let ast = run_and_ast("x = 1", vec![rule]); + let identifiers: Vec<_> = ast + .reachable_node_ids() + .into_iter() + .filter_map(|id| { + let node = ast.get_node(id)?; + (node.kind_name() == "identifier").then(|| (ast.source_text(id), node.byte_range())) + }) + .collect(); + + assert_eq!(identifiers, vec![("x".to_string(), 0..1)]); +} + // ---- `rules!` macro tests (compile-time type-checking) ---- /// `rules!` should accept well-typed rules using the bare-rule-body @@ -1698,33 +1950,6 @@ fn test_rules_macro_accepts_bare_rule_body() { ); } -/// The bare-rule-body shorthand `=> output_kind` should also be accepted. -#[test] -fn test_rules_macro_accepts_bare_shorthand_form() { - let rules: Vec = yeast::rules! { - input: "tests/input-types.yml", - output: "tests/node-types.yml", - [ - (assignment - left: (_) @method - right: (_) @receiver - ) - => call, - ] - }; - - let dump = run_and_dump("x = 1", rules); - assert_dump_eq( - &dump, - r#" - program - call - method: identifier "x" - receiver: integer "1" - "#, - ); -} - #[test] fn test_rules_macro_accepts_bare_guarded_rule() { let rules: Vec = yeast::rules! { @@ -1893,27 +2118,3 @@ fn test_rule_annotation_single() { } assert!(has_assignment, "expected an assignment node"); } - -/// The shorthand `=> kind` form (no body, no annotation) must still be -/// distinguished from the annotation form and continue to work. -#[test] -fn test_shorthand_still_works_alongside_annotation_syntax() { - let r: Rule = rule!( - (assignment left: (_) @method right: (_) @receiver) - => - call - ); - let ast = run_and_ast("x = 1", vec![r]); - let mut has_call = false; - for id in ast.reachable_node_ids() { - if let Some(n) = ast.get_node(id) { - if n.kind_name() == "call" { - has_call = true; - } - } - } - assert!( - has_call, - "shorthand form should still produce a `call` node" - ); -} diff --git a/swift/extractor/infra/SwiftLocationExtractor.h b/swift/extractor/infra/SwiftLocationExtractor.h index 3a96cdcf6195..3f0e51773a7d 100644 --- a/swift/extractor/infra/SwiftLocationExtractor.h +++ b/swift/extractor/infra/SwiftLocationExtractor.h @@ -30,10 +30,11 @@ template concept HasLAndRParenLoc = requires(T e) { e.getLParenLoc(); e.getRParenLoc(); -} && !(HasSourceRange)&&!(HasStartAndEndLoc); +} && !(HasSourceRange) && !(HasStartAndEndLoc); template -concept HasOneLoc = requires(T e) { e.getLoc(); } && !(HasSourceRange)&&(!HasStartAndEndLoc); +concept HasOneLoc = + requires(T e) { e.getLoc(); } && !(HasSourceRange) && (!HasStartAndEndLoc); template concept HasOneLocField = requires(T e) { e.Loc; }; diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index b907f330f976..264f9f465be8 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 6.8.6 + +No user-facing changes. + +## 6.8.5 + +No user-facing changes. + +## 6.8.4 + +No user-facing changes. + ## 6.8.3 No user-facing changes. diff --git a/swift/ql/lib/change-notes/released/6.8.4.md b/swift/ql/lib/change-notes/released/6.8.4.md new file mode 100644 index 000000000000..be181c65d52d --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.8.4.md @@ -0,0 +1,3 @@ +## 6.8.4 + +No user-facing changes. diff --git a/swift/ql/lib/change-notes/released/6.8.5.md b/swift/ql/lib/change-notes/released/6.8.5.md new file mode 100644 index 000000000000..909623a54ec4 --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.8.5.md @@ -0,0 +1,3 @@ +## 6.8.5 + +No user-facing changes. diff --git a/swift/ql/lib/change-notes/released/6.8.6.md b/swift/ql/lib/change-notes/released/6.8.6.md new file mode 100644 index 000000000000..c7c378416ac4 --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.8.6.md @@ -0,0 +1,3 @@ +## 6.8.6 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index de8d19f816cf..d2d656467e1a 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.8.3 +lastReleaseVersion: 6.8.6 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index dd31b62e1481..bfe8387311bf 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.8.3 +version: 6.8.6 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/swift/ql/lib/utils/test/InlineExpectationsTestQuery.ql index a7c112bc00e0..e41d9310e0bf 100644 --- a/swift/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/swift/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import swift private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/swift/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/swift/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index b96f27c42ac2..718c118ef907 100644 --- a/swift/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/swift/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -25,4 +25,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = S::Location; + + string getRelativeUrl(Location location) { + exists(S::File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index f828ae84a5ac..eb19d8719f62 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.3.13 + +No user-facing changes. + +## 1.3.12 + +No user-facing changes. + +## 1.3.11 + +No user-facing changes. + ## 1.3.10 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.3.11.md b/swift/ql/src/change-notes/released/1.3.11.md new file mode 100644 index 000000000000..975cfda3553c --- /dev/null +++ b/swift/ql/src/change-notes/released/1.3.11.md @@ -0,0 +1,3 @@ +## 1.3.11 + +No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.3.12.md b/swift/ql/src/change-notes/released/1.3.12.md new file mode 100644 index 000000000000..02f63bc590a3 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.3.12.md @@ -0,0 +1,3 @@ +## 1.3.12 + +No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.3.13.md b/swift/ql/src/change-notes/released/1.3.13.md new file mode 100644 index 000000000000..484039d3b4f1 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.3.13.md @@ -0,0 +1,3 @@ +## 1.3.13 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index eb79ac3dca3f..583d83c793b7 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.3.10 +lastReleaseVersion: 1.3.13 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index fd6ec0e549bc..651fafc264ea 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.3.10 +version: 1.3.13 groups: - swift - queries diff --git a/swift/ql/src/queries/Security/CWE-312/CleartextLogging.qhelp b/swift/ql/src/queries/Security/CWE-312/CleartextLogging.qhelp index 5959fe5ef8df..8de3f21878f0 100644 --- a/swift/ql/src/queries/Security/CWE-312/CleartextLogging.qhelp +++ b/swift/ql/src/queries/Security/CWE-312/CleartextLogging.qhelp @@ -40,7 +40,7 @@ Instead, you should encrypt or obfuscate the credentials, or omit them entirely:
    • M. Dowd, J. McDonald and J. Schuhm, The Art of Software Security Assessment, 1st Edition, Chapter 2 - 'Common Vulnerabilities of Encryption', p. 43. Addison Wesley, 2006.
    • M. Howard and D. LeBlanc, Writing Secure Code, 2nd Edition, Chapter 9 - 'Protecting Secret Data', p. 299. Microsoft, 2002.
    • -
    • OWASP: Password Plaintext Storage.
    • +
    • OWASP: Logging Cheat Sheet.
    • diff --git a/swift/third_party/resources/resource-dir-macos.zip b/swift/third_party/resources/resource-dir-macos.zip index 2a606b4771fe..cc53d2e44a66 100644 --- a/swift/third_party/resources/resource-dir-macos.zip +++ b/swift/third_party/resources/resource-dir-macos.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da5cbdd44ee4728606f2dc0dd0718e3c7c8748ae1ec8d6261365282d54ba8db9 -size 548170081 +oid sha256:0589f8b61a87447d03b4b81b915f6b341ff8bcb123effda586cba46cc9487bd6 +size 433044499 diff --git a/unified/.gitignore b/unified/.gitignore index 5878737805f2..0c99561f41e0 100644 --- a/unified/.gitignore +++ b/unified/.gitignore @@ -1,4 +1,5 @@ target +/.build .vscode/launch.json .cache ql/test/**/*.testproj diff --git a/unified/.vscode/extensions.json b/unified/.vscode/extensions.json new file mode 100644 index 000000000000..c1d687c7ab06 --- /dev/null +++ b/unified/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "swiftlang.swift-vscode" + ] +} diff --git a/unified/.vscode/settings.json b/unified/.vscode/settings.json new file mode 100644 index 000000000000..f19460b60d37 --- /dev/null +++ b/unified/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "swift.autoGenerateLaunchConfigurations": false, + "swift.disableAutoResolve": true, + "swift.disableSwiftPackageManagerIntegration": false, + "[swift]": { + "editor.defaultFormatter": "swiftlang.swift-vscode", + "editor.formatOnSave": true + } +} diff --git a/unified/BUILD.bazel b/unified/BUILD.bazel index 55bf87e8e38b..52f720f4cb12 100644 --- a/unified/BUILD.bazel +++ b/unified/BUILD.bazel @@ -45,7 +45,17 @@ codeql_pkg_files( otherwise = ["//unified/extractor"], win64 = ["//unified/extractor-unsupported-os:extractor"], ), - prefix = "tools/{CODEQL_PLATFORM}", + prefix = "{CODEQL_PLATFORM}", +) + +pkg_filegroup( + name = "tools", + srcs = [ + ":extractor-arch", + "//unified/tools", + "//unified/tools/builtins", + ], + prefix = "tools", ) codeql_pack( @@ -53,7 +63,6 @@ codeql_pack( srcs = [ ":codeql-extractor-yml", ":dbscheme-group", - ":extractor-arch", - "//unified/tools", + ":tools", ], ) diff --git a/unified/Package.swift b/unified/Package.swift new file mode 100644 index 000000000000..970f0761b08a --- /dev/null +++ b/unified/Package.swift @@ -0,0 +1,9 @@ +// swift-tools-version: 6.3 + +import PackageDescription + +// This targetless package lets editor tooling discover the standalone Swift test fixtures. +let package = Package( + name: "CodeQLSwiftFixtures", + targets: [] +) diff --git a/unified/extractor/BUILD.bazel b/unified/extractor/BUILD.bazel index f8814c4572a1..26e815d49e8a 100644 --- a/unified/extractor/BUILD.bazel +++ b/unified/extractor/BUILD.bazel @@ -34,6 +34,11 @@ _TESTS = { "compile_data": [], "size": "medium", }, + "location_tests": { + "data": [], + "compile_data": [], + "size": "small", + }, # `include_str!`s a checked-in `parse_to_json` dump. "swift_syntax_pipeline": { "data": [], diff --git a/unified/extractor/Cargo.toml b/unified/extractor/Cargo.toml index 607afc40458b..4938c795e387 100644 --- a/unified/extractor/Cargo.toml +++ b/unified/extractor/Cargo.toml @@ -7,14 +7,15 @@ edition = "2024" # When updating these dependencies, run `misc/bazel/3rdparty/update_cargo_deps.sh` [dependencies] -clap = { version = "4.5", features = ["derive"] } +clap = { version = "4.6", features = ["derive"] } tracing = "0.1" -tracing-subscriber = { version = "0.3.20", features = ["env-filter"] } -rayon = "1.11.0" -regex = "1.11.3" +tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } +rayon = "1.12.0" +regex = "1.13.1" encoding = "0.2" -lazy_static = "1.5.0" -serde_json = "1.0.145" +lazy_static = "1.5.1" +serde = "1.0.229" +serde_json = { version = "1.0.151", features = ["unbounded_depth"] } codeql-extractor = { path = "../../shared/tree-sitter-extractor" } yeast = { path = "../../shared/yeast" } diff --git a/unified/extractor/ast_types.yml b/unified/extractor/ast_types.yml index dd17a9d584bf..47e1ebc7a8ec 100644 --- a/unified/extractor/ast_types.yml +++ b/unified/extractor/ast_types.yml @@ -1,15 +1,19 @@ supertypes: expr: - - name_expr + - identifier + - named_pattern + - expr_pattern - int_literal - float_literal - boolean_literal - string_literal - regex_literal + - string_interpolation_expr - builtin_expr - binary_expr - unary_expr - call_expr + - macro_call_expr - member_access_expr - super_expr - function_expr @@ -20,8 +24,6 @@ supertypes: - type_cast_expr - type_test_expr - if_expr - - assign_expr - - compound_assign_expr - pattern_guard_expr - empty_expr - block @@ -33,25 +35,18 @@ supertypes: - switch_expr - unresolved_operator_sequence - unsupported_node - - pattern - expr_or_type: - - expr - - type_expr + - unhandled_node + - or_pattern + - conditional_pattern + - bulk_importing_pattern + - ignore_pattern + - generic_type_expr + - inferred_type_expr # An element of an `unresolved_operator_sequence`: either an operand (`expr`) # or one of the infix operators separating the operands. expr_or_operator: - expr - infix_operator - pattern: - - name_pattern - - tuple_pattern - - constructor_pattern - - or_pattern - - conditional_pattern - - ignore_pattern - - expr_equality_pattern - - bulk_importing_pattern - - unsupported_node # A statement is anything that can appear in a block. # This type contains all of 'expr' and has partial overlap with 'member'. # For example, type_alias_declaration can appear either as a stmt or member. @@ -70,34 +65,37 @@ supertypes: - for_each_stmt - while_stmt - do_while_stmt + - defer_stmt - labeled_stmt callable: - - top_level - - function_expr - - function_declaration - - constructor_declaration - - destructor_declaration - - accessor_declaration - - initializer_declaration + subtypes: + - top_level + - function_expr + - function_declaration + - constructor_declaration + - destructor_declaration + - accessor_declaration + - initializer_declaration + fields: + parameter*: parameter + body?: block + return_type?: expr # A member is anything that can appear in the body of a class-like declaration member: - - constructor_declaration - - destructor_declaration - - function_declaration - - variable_declaration - - accessor_declaration - - initializer_declaration - - class_like_declaration - - type_alias_declaration - - associated_type_declaration - - unsupported_node - type_expr: - - named_type_expr - - generic_type_expr - - tuple_type_expr - - function_type_expr - - inferred_type_expr - - unsupported_node + subtypes: + - constructor_declaration + - destructor_declaration + - function_declaration + - variable_declaration + - accessor_declaration + - initializer_declaration + - class_like_declaration + - type_alias_declaration + - associated_type_declaration + - unsupported_node + - unhandled_node + fields: + name_node: identifier type_constraint: - equality_type_constraint - bound_type_constraint @@ -111,9 +109,16 @@ named: top_level: body: block - # An identifier used in the context of an expression - name_expr: - identifier: identifier + # A pattern that binds the incoming value to a name, and then applies it to a sub-pattern. + named_pattern: + modifier*: modifier + name_node: identifier + sub_pattern: expr + + # A pattern expression with modifiers, such as `let x` or `var x`. + expr_pattern: + modifier*: modifier + expr: expr # An integer literal int_literal: @@ -136,6 +141,11 @@ named: # A regex literal regex_literal: + # A string interpolation expression. Constant parts are stored as string literals. + string_interpolation_expr: + modifier*: modifier + element*: expr + # Application of a binary operator, such as `a + b` binary_expr: left: expr @@ -160,43 +170,34 @@ named: unresolved_operator_sequence: element*: expr_or_operator - # Plain assignment - assign_expr: - target: expr - value: expr - - # Compound assignment - compound_assign_expr: - target: expr - operator: infix_operator - value: expr - # A function or method call, such as `f(x)` or `obj.m(x)`. # # Method calls are represented as a call whose `function` is a `member_access_expr`. # - # Constructor calls are marked by a language-specific modifier, and the target may be - # a `type_expr` if the parser can deduce that the target is a type. + # Constructor calls are marked by a language-specific modifier. call_expr: modifier*: modifier - callee: expr_or_type + callee: expr + argument*: argument + + # A macro call expression, such as `#expect(x == y)` in Swift or + # `assert!(x == y)` in Rust. + macro_call_expr: + macro_name_node: identifier + type_argument*: expr argument*: argument argument: modifier*: modifier - name?: identifier + name_node?: identifier value: expr # Member access, such as `obj.member`. # - # The base may be a type expression when it is a static member access like `Array.method`. - # In ambiguous cases where the parser cannot distinguish static and instance member access, the base - # will be typically be an expression. - # # For `super.x` the base will be an instance of `super_expr`. member_access_expr: - base: expr_or_type - member: identifier + base: expr + member_name_node: identifier # A type expression that refers to a type inferred from the contextual type. # This is used to translate Swift's leading-dot syntax, `.foo`, which means `T.foo` where @@ -211,8 +212,8 @@ named: modifier*: modifier capture_declaration*: variable_declaration parameter*: parameter - return_type?: type_expr - body: block + return_type?: expr + body?: block array_literal: element*: expr @@ -228,26 +229,25 @@ named: key: expr value: expr - # A tuple expression, such as `(a, b, c)`. + # A tuple expression, pattern, or type, such as `(a, b, c)`. tuple_expr: - element*: expr + element*: argument # A parameter. # # `type` is its declared type annotation (if any) # # `pattern` binds the parameter's internal name(s). For a simple parameter this is a - # `name_pattern`, but may be an arbitrary pattern for languages where patterns may appear - # in the parameter list. + # `named_pattern`, but may be an arbitrary expression where languages allow destructuring. # # `external_name` is the name by which to call sites refer to the parameter, if the parameter # can be passed as a named parameter. For example, the Swift function `func greet(person id: String)` - # would have `person` as the external name and a `name_pattern` wrapping `id` is the parameter's pattern. + # would have `person` as the external name and a `named_pattern` wrapping `id` as the parameter's pattern. parameter: modifier*: modifier - external_name?: identifier - type?: type_expr - pattern?: pattern + external_name_node?: identifier + type?: expr + pattern?: expr default?: expr # An expression that does nothing. Used where the grammar permits an @@ -279,8 +279,8 @@ named: # `chained_declaration` modifier so the grouping can be recovered downstream. variable_declaration: modifier*: modifier - pattern: pattern - type?: type_expr + pattern: expr + type?: expr value?: expr # Evaluate 'condition', and if false, execute 'else' which must break from the enclosing block scope (return, break, etc). @@ -292,17 +292,17 @@ named: # `break` (with optional label) break_expr: - label?: identifier + label_name_node?: identifier # `continue` (with optional label) continue_expr: - label?: identifier + label_name_node?: identifier # A labeled statement, such as `outer: for ... { ... }`. The labeled # statement appears as the `stmt` field; `break`/`continue` may target # the label. labeled_stmt: - label: identifier + label_name_node: identifier stmt: stmt # `return value` or bare `return` @@ -322,31 +322,31 @@ named: # import_declaration: modifier*: modifier - imported_expr: expr # Qualified names are encoded as a chain of member_access_expr ending with a name_expr - pattern?: pattern # Binds local names in scope (possibly via bulk_importing_pattern) + imported_expr: expr # Qualified names are encoded as a chain of member_access_expr ending with an identifier + pattern?: expr # Binds local names in scope (possibly via bulk_importing_pattern) # `typealias Name = Type` type_alias_declaration: modifier*: modifier - name: identifier + name_node: identifier type_parameter*: type_parameter type_constraint*: type_constraint - type: type_expr + type: expr # A top-level function declaration. function_declaration: modifier*: modifier - name: identifier + name_node: identifier type_parameter*: type_parameter type_constraint*: type_constraint parameter*: parameter - return_type?: type_expr + return_type?: expr body?: block # `for pattern in iterable [where guard] { body }`. for_each_stmt: modifier*: modifier - pattern: pattern + pattern: expr iterable: expr guard?: expr body?: block @@ -363,6 +363,9 @@ named: body?: block condition: expr + defer_stmt: + body: expr + # `do { body } catch pattern { ... } catch ...`. Swift uses `do`/`catch` # for error handling; for languages with `try`/`catch`, this is the same shape. try_expr: @@ -372,7 +375,7 @@ named: catch_clause: modifier*: modifier - pattern?: pattern + pattern?: expr body: block # `switch value { case pattern: body case ...: default: body }` @@ -386,7 +389,7 @@ named: # A `default:` entry has no pattern. switch_case: modifier*: modifier - pattern?: pattern + pattern?: expr body: block # Evaluate 'expr' and match its result against 'pattern', and return true if it matches. @@ -396,7 +399,7 @@ named: # # Java: 'if (x instanceof Foo y && w ...) { ... }' pattern_guard_expr: - pattern: pattern + pattern: expr value: expr # A type cast expression, such as `x as T`, `x as? T`, or `x as! T`. The @@ -404,49 +407,19 @@ named: type_cast_expr: expr: expr operator: infix_operator - type: type_expr + type: expr # A type-test expression, such as `x is T`. Yields a boolean indicating # whether `expr` is an instance of `type`. type_test_expr: expr: expr - operator: infix_operator - type: type_expr - - # An identifier that introduces a variable. - # - # When used as a pattern, the pattern matches anything and binds its incoming value to the variable - name_pattern: - modifier*: modifier - identifier: identifier - sub_pattern?: pattern - - # A pattern matching anything, binding no variables, usually using the syntax "_" - ignore_pattern: - - # A pattern that matches if the incoming value is equal to the value of the given expression. - # Used for literal patterns in switch (e.g. `case 1:`). - expr_equality_pattern: - expr: expr - - # A tuple pattern such as `(a, b)` in `let (a, b) = pair`. - # - # Elements of the tuple pattern can have names, such as Swift's `let (foo: x, bar: y) = tuple`. - tuple_pattern: - modifier*: modifier - element*: pattern_element - - # A pattern such as `Some(x)` where `Some` is the constructor and `x` is an element. - # The element names are interpreted as argument labels and/or field names. - constructor_pattern: - modifier*: modifier - constructor: expr_or_type - element*: pattern_element + operator?: infix_operator + type: expr # A disjunction pattern that matches if any of its sub-patterns match. or_pattern: modifier*: modifier - pattern*: pattern + pattern*: expr # A pattern that matches against a nested pattern, and subsequently checks a condition. # The match is rejected if the condition does not hold. @@ -454,34 +427,25 @@ named: conditional_pattern: modifier*: modifier condition: expr - pattern: pattern - - # A pattern with an optional associated name. - pattern_element: - modifier*: modifier - key?: identifier - pattern: pattern - - # A pattern that checks if the incoming value has the given type, and if so, the - # value is matched against the given nested pattern (and succeeds iff the nested match succeeds). - # - # In Swift: `if let y = x as? Foo` is a pattern_guard_expr containing a type_test_pattern - # In Java: `x instanceof Foo y` is a type_test_pattern wrapping a name_pattern - type_test_pattern: - pattern: pattern - type: type_expr + pattern: expr # A '*' pattern that imports all members of the incoming value into the local scope # Currently this can only appear in import declarations. bulk_importing_pattern: modifier*: modifier - # An simple unqualified identifier token + # A pattern that accepts any incoming value, usually written as an `_`. + ignore_pattern: + + # A simple unqualified name token identifier: # A node that we don't yet translate unsupported_node: + # A node kind that has no explicit translation or unsupported classification + unhandled_node: + infix_operator: prefix_operator: @@ -494,27 +458,27 @@ named: type_parameter: modifier*: modifier - name: identifier - bound?: type_expr + name_node: identifier + bound?: expr # A generic constraint of the form `T == U`, requiring two types to be # equal. Appears in `where` clauses on generic declarations # (e.g. Swift `func foo() where T == U`). equality_type_constraint: - left: type_expr - right: type_expr + left: expr + right: expr # A generic constraint of the form `T: Bound`, requiring a type parameter # to conform to (or inherit from) some other type. Appears in `where` # clauses on generic declarations (e.g. Swift `where T: Equatable`). bound_type_constraint: - type: type_expr - bound: type_expr + type: expr + bound: expr # `infix operator +++` (and the like) — a declaration of a custom operator. operator_syntax_declaration: modifier*: modifier - name: identifier + name_node: identifier # The fixity specifier (`prefix`, `infix`, `postfix`), when applicable. fixity?: fixity # The declared precedence level, when present (e.g. Swift's @@ -529,7 +493,8 @@ named: # no `name`; the extended type appears as a `base_type`. class_like_declaration: modifier*: modifier - name?: identifier + name_node?: identifier + extension_target?: expr type_parameter*: type_parameter type_constraint*: type_constraint base_type*: base_type @@ -541,11 +506,11 @@ named: # kind should be included as a modifier on this node. base_type: modifier*: modifier - type: type_expr + type: expr constructor_declaration: modifier*: modifier - name?: identifier + name_node?: identifier parameter*: parameter body: block @@ -565,10 +530,10 @@ named: # (each observer also tagged with `chained_declaration`). accessor_declaration: modifier*: modifier - name: identifier + name_node: identifier accessor_kind: accessor_kind parameter*: parameter - type?: type_expr + type?: expr body?: block # "get", "set", or a language-specific kind like "didSet" @@ -581,30 +546,12 @@ named: associated_type_declaration: modifier*: modifier - name: identifier - bound?: type_expr - - named_type_expr: - qualifier?: type_expr - name: identifier + name_node: identifier + bound?: expr generic_type_expr: - base: type_expr - type_argument*: type_expr - - # A tuple type such as `(Int, String)` or `(a: A, b: B)`. - tuple_type_expr: - element*: tuple_type_element - - # An element of a `tuple_type_expr`, optionally carrying a label. - tuple_type_element: - name?: identifier - type: type_expr - - # A function type such as `(Int, String) -> Bool` or `(x: Int) -> Bool`. - function_type_expr: - parameter*: parameter - return_type: type_expr + base: expr + type_argument*: expr # A modifier such as 'static', 'public', or 'async'. For now this is just a leaf node with a string value. modifier: diff --git a/unified/extractor/src/extractor.rs b/unified/extractor/src/extractor.rs index 82bfe81219b5..8c180c854d1f 100644 --- a/unified/extractor/src/extractor.rs +++ b/unified/extractor/src/extractor.rs @@ -1,10 +1,10 @@ -use clap::Args; -use std::path::PathBuf; - use crate::languages; +use clap::Args; use codeql_extractor::extractor::desugaring; use codeql_extractor::trap; - +use std::path::Path; +use std::path::PathBuf; +use std::{env, fs}; #[derive(Args)] pub struct Options { /// Sets a custom source archive folder @@ -31,6 +31,33 @@ pub fn run(options: Options) -> std::io::Result<()> { lang.prefix = "unified"; } + let scratch_dir = std::env::var("CODEQL_EXTRACTOR_UNIFIED_SCRATCH_DIR") + .expect("failed to read CODEQL_EXTRACTOR_UNIFIED_SCRATCH_DIR environment variable"); + let builtins_path = env::var("CODEQL_EXTRACTOR_UNIFIED_ROOT") + .map(|path| Path::new(&path).join("tools").join("builtins")) + .expect("failed to read CODEQL_EXTRACTOR_UNIFIED_ROOT environment variable"); + let builtins_dir = fs::read_dir(builtins_path).expect("failed to read builtins directory"); + let mut builtins_list = PathBuf::new(); + builtins_list.push(scratch_dir.clone()); + builtins_list.push("builtins"); + builtins_list.set_extension("list"); + + let mut builtins_list_file = fs::OpenOptions::new() + .create_new(true) + .write(true) + .open(&builtins_list) + .expect("failed to open file list"); + for entry in builtins_dir { + let entry = entry.expect("failed to read builtins directory"); + let path = entry.path(); + if path.extension().is_some_and(|ext| ext == "swift") { + use std::io::Write; + writeln!(builtins_list_file, "{}", path.display()) + .expect("failed to write to file list"); + } + } + drop(builtins_list_file); + let extractor = desugaring::Extractor { prefix: "unified".to_string(), languages, @@ -39,7 +66,7 @@ pub fn run(options: Options) -> std::io::Result<()> { "CODEQL_EXTRACTOR_UNIFIED_OPTION_TRAP_COMPRESSION", ), source_archive_dir: options.source_archive_dir, - file_lists: vec![options.file_list], + file_lists: vec![options.file_list, builtins_list], }; extractor.run() diff --git a/unified/extractor/src/languages/swift/adapter.rs b/unified/extractor/src/languages/swift/adapter.rs index ae245eb21e80..dd26a64195b5 100644 --- a/unified/extractor/src/languages/swift/adapter.rs +++ b/unified/extractor/src/languages/swift/adapter.rs @@ -23,6 +23,7 @@ use std::collections::BTreeMap; use codeql_extractor::extractor::ExtraToken; +use serde::Deserialize; use serde_json::Value; use yeast::{Ast, Id, NodeContent, Point, Range}; @@ -61,10 +62,71 @@ const VARYING_TOKEN_KINDS: &[&str] = &[ fn is_metadata_key(key: &str) -> bool { matches!( key, - "kind" | "range" | "tokenKind" | "text" | "leadingTrivia" | "trailingTrivia" + "kind" + | "$pos" + | "$end" + | "$lineStarts" + | "tokenKind" + | "text" + | "leadingTrivia" + | "trailingTrivia" ) } +/// Converts compact UTF-8 byte offsets into tree-sitter-style points. +struct LocationTable { + line_starts: Vec, +} + +impl LocationTable { + fn from_root(root: &Value) -> Result { + let values = root + .get("$lineStarts") + .and_then(Value::as_array) + .ok_or("root node is missing an array `$lineStarts`")?; + let mut line_starts = Vec::with_capacity(values.len()); + for (index, value) in values.iter().enumerate() { + let offset = value + .as_u64() + .and_then(|offset| usize::try_from(offset).ok()) + .ok_or_else(|| format!("`$lineStarts[{index}]` is not a valid byte offset"))?; + line_starts.push(offset); + } + if line_starts.first() != Some(&0) { + return Err("`$lineStarts` must start with offset 0".to_string()); + } + if line_starts.windows(2).any(|pair| pair[0] >= pair[1]) { + return Err("`$lineStarts` offsets must be strictly increasing".to_string()); + } + Ok(Self { line_starts }) + } + + fn point(&self, offset: usize) -> Point { + let row = self + .line_starts + .partition_point(|line_start| *line_start <= offset) + - 1; + Point::new(row, offset - self.line_starts[row]) + } + + /// Parse a node's half-open UTF-8 byte range into a [`yeast::Range`]. + fn range(&self, node: &Value) -> Option { + let offset = |key: &str| { + node.get(key)? + .as_u64() + .and_then(|offset| usize::try_from(offset).ok()) + }; + let start_byte = offset("$pos")?; + let end_byte = offset("$end")?; + Some(Range { + start_byte, + end_byte, + start_point: self.point(start_byte), + end_point: self.point(end_byte), + }) + } +} + /// The classification of a JSON node into a yeast kind name and named-ness. struct KindInfo { /// The name under which the kind is registered in the schema. @@ -141,13 +203,25 @@ fn field_entries(node: &Value) -> Vec<(&str, &Value)> { .unwrap_or_default() } -/// The child node objects held by a field value, which is either a single node -/// object or an array of them (an elided collection). +/// The child node objects held by a field value. +/// +/// Collection nodes are elided by the Swift serializer, so nested collections +/// can produce nested arrays (notably inside `UnexpectedNodesSyntax`). Flatten +/// arrays recursively to preserve the intended collection elision. fn children_of(value: &Value) -> Vec<&Value> { - match value { - Value::Array(items) => items.iter().collect(), - other => vec![other], + fn collect<'a>(value: &'a Value, children: &mut Vec<&'a Value>) { + if let Value::Array(items) = value { + for item in items { + collect(item, children); + } + } else { + children.push(value); + } } + + let mut children = Vec::new(); + collect(value, &mut children); + children } /// Recursively build `node` (and its descendants) into `ast`, returning its id. @@ -158,16 +232,21 @@ fn children_of(value: &Value) -> Vec<&Value> { /// comment/`unexpectedText` trivia carried by a token is harvested into /// `extras` (as [`ExtraToken`]s) during the same pass rather than embedded in /// the tree. -fn build(node: &Value, ast: &mut Ast, extras: &mut Vec) -> Result { +fn build( + node: &Value, + locations: &LocationTable, + ast: &mut Ast, + extras: &mut Vec, +) -> Result { let info = classify(node)?; - collect_extras(node, extras); + collect_extras(node, locations, extras); let mut fields: BTreeMap> = BTreeMap::new(); for (field, value) in field_entries(node) { let field_id = ast.register_field(field); let mut ids = Vec::new(); for child in children_of(value) { - ids.push(build(child, ast, extras)?); + ids.push(build(child, locations, ast, extras)?); } fields.insert(field_id, ids); } @@ -183,7 +262,7 @@ fn build(node: &Value, ast: &mut Ast, extras: &mut Vec) -> Result) -> Result) { +fn collect_extras(node: &Value, locations: &LocationTable, out: &mut Vec) { for key in ["leadingTrivia", "trailingTrivia"] { let Some(Value::Array(pieces)) = node.get(key) else { continue; @@ -199,7 +278,7 @@ fn collect_extras(node: &Value, out: &mut Vec) { for piece in pieces { let (Some(kind), Some(range)) = ( piece.get("kind").and_then(Value::as_str), - parse_range(piece), + locations.range(piece), ) else { continue; }; @@ -232,35 +311,6 @@ fn trivia_kind_id(kind: &str) -> usize { } } -/// Parse a node's `range` into a [`yeast::Range`]. -/// -/// The JSON carries, for `start` and `end`, a 0-based UTF-8 file byte `offset`, -/// a 1-based `line`, and a 1-based UTF-8 byte `column`. yeast (like tree-sitter) -/// uses byte offsets with 0-based rows/columns and an exclusive end, so the -/// line/column are shifted down by one. swift-syntax's end position is already -/// exclusive, so the byte offsets map across directly. -fn parse_range(node: &Value) -> Option { - let range = node.get("range")?; - let point = |key: &str| -> Option<(usize, Point)> { - let p = range.get(key)?; - let offset = p.get("offset")?.as_u64()? as usize; - let line = p.get("line")?.as_u64()? as usize; - let column = p.get("column")?.as_u64()? as usize; - Some(( - offset, - Point::new(line.saturating_sub(1), column.saturating_sub(1)), - )) - }; - let (start_byte, start_point) = point("start")?; - let (end_byte, end_point) = point("end")?; - Some(Range { - start_byte, - end_byte, - start_point, - end_point, - }) -} - /// The authoritative swift-syntax input node-types schema, generated from /// swift-syntax by `swift-syntax-rs/schemagen` (run /// `unified/scripts/regenerate-node-types.sh` to refresh it). @@ -275,11 +325,17 @@ const SWIFT_NODE_TYPES: &str = include_str!("../../../swift_node_types.yml"); /// authoritative swift-syntax schema ([`SWIFT_NODE_TYPES`]); the adapter only /// ever consumes swift-syntax input, so the schema is not a parameter. pub fn json_to_ast(json: &str) -> Result { - let root: Value = serde_json::from_str(json).map_err(|e| format!("invalid JSON: {e}"))?; + let mut deserializer = serde_json::Deserializer::from_str(json); + deserializer.disable_recursion_limit(); + let root = Value::deserialize(&mut deserializer).map_err(|e| format!("invalid JSON: {e}"))?; + deserializer + .end() + .map_err(|e| format!("invalid JSON: {e}"))?; + let locations = LocationTable::from_root(&root)?; let mut ast = Ast::with_schema(yeast::node_types_yaml::schema_from_yaml(SWIFT_NODE_TYPES)?); let mut extras = Vec::new(); - let root_id = build(&root, &mut ast, &mut extras)?; + let root_id = build(&root, &locations, &mut ast, &mut extras)?; ast.set_root(root_id); // Emit extras in source order (the traversal visits nodes bottom-up). @@ -292,28 +348,41 @@ pub fn json_to_ast(json: &str) -> Result { mod tests { use super::*; + fn deeply_nested_json(depth: usize) -> String { + let mut child = r#"{"$pos":0,"$end":0,"kind":"sourceFile"}"#.to_string(); + for _ in 0..depth { + child = format!(r#"{{"$pos":0,"$end":0,"kind":"sourceFile","child":{child}}}"#); + } + format!(r#"{{"$lineStarts":[0],"$pos":0,"$end":0,"kind":"sourceFile","child":{child}}}"#) + } + /// A hand-written JSON tree exercising layout nodes, a named (varying) /// token, a fixed keyword token, and an elided collection field — so the /// adapter is tested without needing the Swift toolchain. fn sample_json() -> &'static str { r#"{ + "$lineStarts": [0], + "$pos": 0, + "$end": 9, "kind": "sourceFile", - "range": {"start":{"offset":0,"line":1,"column":1},"end":{"offset":9,"line":1,"column":10}}, "statements": [ { + "$pos": 0, + "$end": 9, "kind": "variableDecl", - "range": {"start":{"offset":0,"line":1,"column":1},"end":{"offset":9,"line":1,"column":10}}, "bindingSpecifier": { + "$pos": 0, + "$end": 3, "kind": "token", "tokenKind": "keyword(SwiftSyntax.Keyword.let)", - "text": "let", - "range": {"start":{"offset":0,"line":1,"column":1},"end":{"offset":3,"line":1,"column":4}} + "text": "let" }, "name": { + "$pos": 4, + "$end": 5, "kind": "token", "tokenKind": "identifier(\"x\")", - "text": "x", - "range": {"start":{"offset":4,"line":1,"column":5},"end":{"offset":5,"line":1,"column":6}} + "text": "x" } } ] @@ -377,30 +446,113 @@ mod tests { .iter() .find(|n| n.kind_name() == "identifier") .expect("identifier node exists"); - // `x` is at file offset 4..5, line 1, column 5 (1-based) in the JSON, - // which maps to 0-based row 0, column 4 and byte range 4..5. + // `x` is at UTF-8 byte range 4..5 on the first line. assert_eq!(ident.start_byte(), 4); assert_eq!(ident.end_byte(), 5); assert_eq!(ident.start_position(), Point::new(0, 4)); assert_eq!(ident.end_position(), Point::new(0, 5)); } + #[test] + fn maps_utf8_locations_across_swift_line_endings() { + // The implied source prefix is `// é😀\r\nlet `: the second line begins + // at UTF-8 byte 11 and `x` occupies bytes 15..16. + let json = r#"{ + "$lineStarts": [0, 11, 21, 31], + "$pos": 0, + "$end": 31, + "kind": "sourceFile", + "name": { + "$pos": 15, + "$end": 16, + "kind": "token", + "tokenKind": "identifier(\"x\")", + "text": "x" + } + }"#; + let ast = json_to_ast(json).expect("adapter should succeed").ast; + let ident = ast + .nodes() + .iter() + .find(|n| n.kind_name() == "identifier") + .expect("identifier node exists"); + assert_eq!(ident.start_byte(), 15); + assert_eq!(ident.end_byte(), 16); + assert_eq!(ident.start_position(), Point::new(1, 4)); + assert_eq!(ident.end_position(), Point::new(1, 5)); + } + + #[test] + fn flattens_nested_elided_collections() { + let json = r#"{ + "$lineStarts": [0], + "$pos": 0, + "$end": 20, + "kind": "sourceFile", + "unexpected": [ + { + "$pos": 0, + "$end": 1, + "kind": "token", + "tokenKind": "leftBrace", + "text": "{" + }, + [ + { + "$pos": 2, + "$end": 20, + "kind": "precedenceGroupAssociativity" + } + ] + ] + }"#; + let ast = json_to_ast(json) + .expect("adapter should flatten nested collections") + .ast; + + assert!( + ast.nodes() + .iter() + .any(|node| node.kind_name() == "precedenceGroupAssociativity") + ); + } + + #[test] + fn rejects_invalid_line_starts() { + let json = r#"{"$lineStarts":[1],"$pos":0,"$end":0,"kind":"sourceFile"}"#; + let error = match json_to_ast(json) { + Ok(_) => panic!("invalid line starts should fail"), + Err(error) => error, + }; + assert!(error.contains("must start with offset 0"), "{error}"); + } + + #[test] + fn accepts_deeply_nested_json() { + let json = deeply_nested_json(256); + json_to_ast(&json).expect("adapter should accept JSON nested beyond serde_json's default"); + } + #[test] fn collects_extras_into_side_channel() { // A token carrying a trailing line comment in its trivia. let json = r#"{ + "$lineStarts": [0], + "$pos": 0, + "$end": 14, "kind": "sourceFile", - "range": {"start":{"offset":0,"line":1,"column":1},"end":{"offset":14,"line":1,"column":15}}, "value": { + "$pos": 0, + "$end": 1, "kind": "token", "tokenKind": "integerLiteral(\"1\")", "text": "1", - "range": {"start":{"offset":0,"line":1,"column":1},"end":{"offset":1,"line":1,"column":2}}, "trailingTrivia": [ { + "$pos": 2, + "$end": 6, "kind": "lineComment", - "text": "// c", - "range": {"start":{"offset":2,"line":1,"column":3},"end":{"offset":6,"line":1,"column":7}} + "text": "// c" } ] } diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index 6396d4addd75..63da3f1f0acf 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -1,5 +1,5 @@ use codeql_extractor::extractor::desugaring; -use yeast::{ConcreteDesugarer, DesugaringConfig, PhaseKind, Rule, rule, tree}; +use yeast::{ConcreteDesugarer, DesugaringConfig, Rule, rule, tree, tree_at, tree_spanning}; /// User context propagated from outer rules down to the inner rules that /// emit the corresponding output declarations, so that each emitted node @@ -8,10 +8,10 @@ use yeast::{ConcreteDesugarer, DesugaringConfig, PhaseKind, Rule, rule, tree}; /// post-hoc mutation. #[derive(Clone, Default)] struct SwiftContext { - /// Identifier node for the property name. Set by the accessor-bearing + /// Name node for the property name. Set by the accessor-bearing /// `variableDecl` rule before translating the accessor block; read by the /// inner `accessorDecl` rules to name each `accessor_declaration`. - property_name: Option, + property_name_node: Option, /// Translated type node for the property type. Set (for computed /// properties) by the accessor-bearing `variableDecl` rule; read by the /// inner `accessorDecl` rules. Left `None` for stored properties with @@ -30,16 +30,13 @@ struct SwiftContext { /// True while translating the parameters of a `functionType`. swift-syntax /// models a function type's parameters with the same `tupleTypeElement` /// kind as a tuple type's elements, so the shared `tupleTypeElement` rule - /// reads this to emit a `parameter` (function-type param) rather than a - /// `tuple_type_element` (tuple-type element). The `tupleType` / - /// `functionType` rules each set it for their direct children, so nested - /// types are translated in the correct context. + /// reads this to emit a `parameter` (function-type parameter) rather than + /// an `argument` (tuple element). The `tupleType` / `functionType` rules + /// each set it for their direct children, so nested types are translated + /// in the correct context. in_function_type: bool, - /// True while translating the argument list of an enum-case - /// `constructor_pattern` (e.g. `case .foo(let x, 3)`). Read by the - /// `labeledExpr` rules so a bare expression argument becomes an - /// `expr_equality_pattern` (wrapped in a `pattern_element`) rather than a - /// call `argument`. + /// True while translating a pattern. Optional chaining in this context is + /// represented as an `Optional.some` call rather than being unwrapped. in_pattern: bool, } @@ -75,6 +72,23 @@ fn chained_modifier(ctx: &mut yeast::build::BuildCtx<'_, SwiftContext>) -> Optio } } +fn implicit_parameterless_initializer( + ctx: &mut yeast::build::BuildCtx<'_, SwiftContext>, + members: &[yeast::Id], +) -> Option { + let has_explicit_initializer = members.iter().any(|member| { + ctx.ast + .get_node(*member) + .is_some_and(|node| node.kind_name() == "constructor_declaration") + }); + (!has_explicit_initializer).then(|| { + tree!((constructor_declaration + modifier: (modifier "generated") + name_node: (identifier "init") + body: (block))) + }) +} + /// Combine a list of boolean sub-conditions into a single expression by /// left-folding with the infix `&&` operator. Used by control-flow /// rules (`if`, `guard`, `while`, `repeat-while`), which carry one or @@ -89,7 +103,9 @@ fn and_chain( conds .into_iter() .reduce(|acc, elem| { - tree!((binary_expr operator: (infix_operator "&&") left: {acc} right: {elem})) + let operator_range = ctx.empty_source_range_between(acc, elem); + let operator = ctx.literal_with_source_range("infix_operator", "&&", operator_range); + tree!((binary_expr operator: {operator} left: {acc} right: {elem})) }) .expect("control-flow statement must have at least one condition") } @@ -108,7 +124,7 @@ fn make_or_pattern( } /// Translate a multi-part identifier (for example `Foo.Bar.Baz`) into a -/// `member_access_expr` chain rooted at a `name_expr` over the first +/// `member_access_expr` chain rooted at a `name_node` for the first /// part. Panics on an empty input because the grammar's `_+` quantifier /// guarantees at least one part. fn member_chain( @@ -119,27 +135,20 @@ fn member_chain( let first = iter .next() .expect("identifier with `part:` must have at least one part"); - let init = tree!((name_expr identifier: (identifier #{first}))); + let init = tree!((identifier #{first})); iter.fold( init, - |acc, elem| tree!((member_access_expr base: {acc} member: (identifier #{elem}))), + |acc, elem| tree!((member_access_expr base: {acc} member_name_node: (identifier #{elem}))), ) } -/// Compound-assignment operator spellings (`+=`, `<<=`, ...). Used to tell a -/// compound assignment from an ordinary binary application, both of which -/// arrive as a `binaryOperator`-based `infixOperatorExpr`. -const COMPOUND_ASSIGN_OPS: &[&str] = &[ - "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", "&=", "|=", "^=", "&+=", "&-=", "&*=", -]; - fn translation_rules() -> Vec> { vec![ // ---- Top-level ---- // These rules translate the swift-syntax AST (camelCase kind names), - // produced by the sibling `adapter` module from the `swift-syntax-parse` - // binary's JSON. Anything unmatched falls through to the - // `unsupported_node` fallback at the end. + // produced by the sibling `adapter` module from swift-syntax JSON. + // Known kinds without dedicated rules become `unsupported_node`; + // genuinely unknown kinds become `unhandled_node`. // // `sourceFile` holds its top-level statements in an (elided) // `statements` collection; each element is a `codeBlockItem` wrapping @@ -159,28 +168,40 @@ fn translation_rules() -> Vec> { // (hex/binary/octal, single- vs multi-line, raw): each is a single // `*LiteralExpr` kind, so one rule per literal type suffices. rule!((integerLiteralExpr) @@node => expr { - let value = tree!((int_literal #{node})); - if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + tree!((int_literal #{node})) }), rule!((floatLiteralExpr) @@node => expr { - let value = tree!((float_literal #{node})); - if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + tree!((float_literal #{node})) }), rule!((booleanLiteralExpr) @@node => expr { - let value = tree!((boolean_literal #{node})); - if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + tree!((boolean_literal #{node})) }), rule!((nilLiteralExpr) @@node => expr { - let value = tree!((builtin_expr #{node})); - if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } - }), - rule!((stringLiteralExpr) @@node => expr { - let value = tree!((string_literal #{node})); - if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + tree!((builtin_expr #{node})) }), + rule!((simpleStringLiteralExpr) @@node => (string_literal #{node})), + // String literal with a single constant segment (for some reason not typed as simpleStringLiteralExpr) + rule!( + (stringLiteralExpr segments: (stringSegment) segments: _* @@rest) @@node + where rest.is_empty() + => + (string_literal #{node}) + ), + rule!( + (stringLiteralExpr segments: _* @segments) + => + (string_interpolation_expr element: {segments}) + ), + rule!((stringSegment content: @@content) => (string_literal #{content})), + rule!( + (expressionSegment expressions: _* @expressions) + => + (call_expr + callee: (builtin_expr "interpolation") + argument: {expressions}) + ), rule!((regexLiteralExpr) @@node => expr { - let value = tree!((regex_literal #{node})); - if ctx.in_pattern { tree!((expr_equality_pattern expr: {value})) } else { value } + tree!((regex_literal #{node})) }), // ---- Names ---- // A function reference spelled with argument labels (`f(x:y:z:)`) is a @@ -194,23 +215,16 @@ fn translation_rules() -> Vec> { => (unsupported_node) ), - rule!((declReferenceExpr baseName: (identifier) @name) => expr { - let name = tree!((name_expr identifier: (identifier #{name}))); - if ctx.in_pattern { - tree!((expr_equality_pattern expr: {name})) - } else { - name - } + rule!((declReferenceExpr baseName: (identifier) @@name) => expr { + tree!((identifier #{name})) }), // A bare name reference (`x`), and an operator used as a value (`+` in // `reduce(0, +)`), are both `declReferenceExpr`; its `baseName` is the // referenced identifier / operator symbol. - rule!((declReferenceExpr baseName: @name) => (name_expr identifier: (identifier #{name}))), + rule!((declReferenceExpr baseName: @@name) => (identifier #{name})), // A discard `_` used as an expression — e.g. the target of a discarding - // assignment `_ = x`. swift-syntax models it as a `discardAssignmentExpr`; - // the target AST has no expression-level discard (only `ignore_pattern`, - // which is a pattern), so it becomes a `name_expr` over the `_` token. - rule!((discardAssignmentExpr wildcard: @@w) => (name_expr identifier: (identifier #{w}))), + // assignment `_ = x`. swift-syntax models it as a `discardAssignmentExpr`. + rule!((discardAssignmentExpr wildcard: @@w) => (ignore_pattern #{w})), // A generic specialization in expression position (`C`, // `Array`) is represented by swift-syntax as a // `genericSpecializationExpr`. When used as a call target @@ -218,11 +232,11 @@ fn translation_rules() -> Vec> { // `generic_type_expr`, so we map it directly to that shape. rule!( (genericSpecializationExpr - expression: (declReferenceExpr baseName: @name) + expression: (declReferenceExpr baseName: @@name) genericArgumentClause: (genericArgumentClause arguments: (genericArgument argument: @args)*)) => (generic_type_expr - base: (named_type_expr name: (identifier #{name})) + base: (identifier #{name}) type_argument: {args}) ), // ---- Operators ---- @@ -233,30 +247,22 @@ fn translation_rules() -> Vec> { // A `binaryOperatorExpr` wraps the operator token; unwrap it to the // operator leaf. Used by `infixOperatorExpr` (folded) and `sequenceExpr` // (unresolved). - rule!((binaryOperatorExpr operator: @op) => (infix_operator #{op})), - // Compound assignment (`x += y`) vs. an ordinary binary application - // (`a + b`): both are `binaryOperator`-based `infixOperatorExpr`s, - // distinguishable only by the operator's spelling. The query engine - // can't match on token text, so a small Rust block reads the spelling - // and routes to `compound_assign_expr` or `binary_expr`. The operator - // is captured raw (`@@op`) to read its spelling. + rule!((binaryOperatorExpr operator: @@op) => (infix_operator #{op})), + // A `binaryOperator`-based `infixOperatorExpr` represents both ordinary + // binary applications (`a + b`) and compound assignments (`x += y`). + // Both have the same target AST shape; the QL library distinguishes + // assignments by the operator spelling. rule!( (infixOperatorExpr leftOperand: @l operator: (binaryOperatorExpr) @@op rightOperand: @r) => - expr { - if COMPOUND_ASSIGN_OPS.contains(&ctx.source_text(op).as_str()) { - tree!((compound_assign_expr target: {l} operator: (infix_operator #{op}) value: {r})) - } else { - tree!((binary_expr left: {l} operator: (infix_operator #{op}) right: {r})) - } - } + (binary_expr left: {l} operator: (infix_operator #{op}) right: {r}) ), - // Plain assignment (`x = y`). In a folded chain the `=` is an - // `assignmentExpr` node (distinct from other operators), matched by kind. + // Plain assignment (`x = y`). In a folded chain the `=` is represented + // by an `assignmentExpr` node rather than a `binaryOperatorExpr`. rule!( - (infixOperatorExpr leftOperand: @l operator: (assignmentExpr) rightOperand: @r) + (infixOperatorExpr leftOperand: @l operator: (assignmentExpr) @op rightOperand: @r) => - (assign_expr target: {l} value: {r}) + (binary_expr left: {l} operator: (infix_operator #{op}) right: {r}) ), // In an unresolved `sequenceExpr` (below) the operator positions are not // only `binaryOperatorExpr`s: a plain assignment (`=`), an `as`/`is` cast @@ -287,17 +293,30 @@ fn translation_rules() -> Vec> { // infix operators, rather than guessing a structure. rule!((sequenceExpr elements: _* @els) => (unresolved_operator_sequence element: {els})), // Prefix unary operators (`!a`, `-x`). - rule!((prefixOperatorExpr operator: @op expression: @operand) => (unary_expr operator: (prefix_operator #{op}) operand: {operand})), - // A `tupleExpr` is a tuple literal (`(a, b)`) or a parenthesised - // expression (`(x)`). For now it is kept as an opaque `tuple_expr` leaf - // (its source text); its elements are not descended into. - // - // TODO: a parenthesised single-element `tupleExpr` is really a grouping - // expression and should be elided (unwrapped to its inner expression) - // rather than modelled as a tuple. - rule!((tupleExpr) => (tuple_expr)), + rule!((prefixOperatorExpr operator: @@op expression: @operand) => (unary_expr operator: (prefix_operator #{op}) operand: {operand})), + // Postfix unary operators (e.g., `x!`, `x...`, `x++`). + rule!( + (postfixOperatorExpr expression: @operand operator: @@op) + => + (unary_expr operator: (postfix_operator #{op}) operand: {operand}) + ), + // In-out expressions, `&x`, are translated to unary expressions. + rule!( + (inOutExpr ampersand: @@amp expression: @operand) + => + (unary_expr operator: (prefix_operator #{amp}) operand: {operand}) + ), + // A parenthesised expression has a single tuple element; elide the + // grouping and preserve the expression itself. Actual tuple literals + // retain their translated labeled elements as `argument` children. + rule!((tupleExpr + elements: (labeledExpr label: _? @@lbl expression: @element) + elements: _* @@rest) + where rest.is_empty() && lbl.is_none() => expr { element }), + rule!((tupleExpr elements: _* @elements) => (tuple_expr element: {elements})), // A code block contains its statements directly. rule!((codeBlock statements: _* @stmts) => (block stmt: {stmts})), + rule!((accessorBlock accessors: (codeBlockItem)* @stmts) => (block stmt: {stmts})), // ---- Properties with accessors ---- // A computed property with an implicit getter (`var a: T { }`) // becomes a single `accessor_declaration` of kind `get`. This form is @@ -310,14 +329,14 @@ fn translation_rules() -> Vec> { bindings: (patternBinding pattern: (identifierPattern identifier: @@name) typeAnnotation: (typeAnnotation type: @ty) - accessorBlock: (accessorBlock accessors: (codeBlockItem)+ @body))) + accessorBlock: (accessorBlock accessors: (codeBlockItem)+) @body)) => (accessor_declaration modifier: (modifier #{spec}) - name: (identifier #{name}) + name_node: (identifier #{name}) type: {ty} - accessor_kind: (accessor_kind "get") - body: (block stmt: {body})) + accessor_kind: {ctx.literal_at_start_of("accessor_kind", "get", body)} + body: {body}) ), // A property with an explicit accessor block. swift-syntax makes both // shapes plain `accessorDecl`s, so they are told apart by the presence @@ -345,7 +364,7 @@ fn translation_rules() -> Vec> { => member* { ctx.outer_modifiers = vec![tree!((modifier #{spec}))]; - ctx.property_name = Some(tree!((identifier #{name}))); + ctx.property_name_node = Some(tree!((identifier #{name}))); let mut result = Vec::new(); if let Some(val) = val { // Stored property with observers: the initializer is not part @@ -357,7 +376,7 @@ fn translation_rules() -> Vec> { result.push(tree!( (variable_declaration modifier: {ctx.outer_modifiers.clone()} - pattern: (name_pattern identifier: (identifier #{name})) + pattern: (identifier #{name}) type: {ty} value: {val}) )); @@ -392,7 +411,7 @@ fn translation_rules() -> Vec> { }; let chained = chained_modifier(&mut ctx); let name = ctx - .property_name + .property_name_node .ok_or("accessor outside property context")?; let ty = ctx.property_type; let body = match body { @@ -402,11 +421,12 @@ fn translation_rules() -> Vec> { } None => None, }; - tree!( + tree_spanning!( + std::iter::once(spec).chain(body), (accessor_declaration modifier: {binding} modifier: {chained} - name: {name} + name_node: {name} type: {ty} accessor_kind: (accessor_kind #{spec}) body: {body}) @@ -465,7 +485,7 @@ fn translation_rules() -> Vec> { rule!( (enumCaseParameter firstName: _? @@name type: @ty) => - (parameter pattern: (name_pattern identifier: (identifier #{name}))? type: {ty}) + (parameter pattern: (identifier #{name})? type: {ty}) ), // An enum element with associated values (`case circle(radius: Double)`) // becomes a nested `class_like_declaration` whose constructor carries the @@ -475,33 +495,41 @@ fn translation_rules() -> Vec> { // `enumCaseDecl` rule below) and are tagged `enum_case`, after any // `chained_declaration` tag. rule!( - (enumCaseElement name: @name parameterClause: (enumCaseParameterClause parameters: _* @params)) - => - (class_like_declaration - modifier: {ctx.outer_modifiers.clone()} - modifier: {chained_modifier(&mut ctx)} - modifier: (modifier "enum_case") - name: (identifier #{name}) - member: (constructor_declaration parameter: {params} body: (block))) + (enumCaseElement + name: @@name + parameterClause: (enumCaseParameterClause parameters: _* @params) @@clause) + => + class_like_declaration { + let constructor = tree_spanning!( + [name, clause], + (constructor_declaration parameter: {params} body: (block)) + ); + tree!((class_like_declaration + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} + modifier: (modifier "enum_case") + name_node: (identifier #{name}) + member: {constructor})) + } ), rule!( - (enumCaseElement name: @name rawValue: (initializerClause value: @val)) + (enumCaseElement name: @@name rawValue: (initializerClause value: @val)) => (variable_declaration modifier: {ctx.outer_modifiers.clone()} modifier: {chained_modifier(&mut ctx)} modifier: (modifier "enum_case") - pattern: (name_pattern identifier: (identifier #{name})) + pattern: (identifier #{name}) value: {val}) ), rule!( - (enumCaseElement name: @name) + (enumCaseElement name: @@name) => (variable_declaration modifier: {ctx.outer_modifiers.clone()} modifier: {chained_modifier(&mut ctx)} modifier: (modifier "enum_case") - pattern: (name_pattern identifier: (identifier #{name}))) + pattern: (identifier #{name})) ), // Enum cases. A single `case` declaration may carry modifiers // (e.g. `indirect`) and list several comma-separated elements; each @@ -525,22 +553,30 @@ fn translation_rules() -> Vec> { ), // `identifierPattern` wraps a single identifier token. rule!( - (identifierPattern identifier: @name) + (identifierPattern identifier: @@name) + => + (identifier #{name}) + ), + rule!( + (patternExpr pattern: @p) => - (name_pattern identifier: (identifier #{name})) + expr { p } ), // A `let`/`var` value-binding pattern (`let x`) inside a case or `if case` - // introduces a new binding; it unwraps to its inner pattern (a - // `name_pattern`). - rule!((valueBindingPattern pattern: @p) => pattern { p }), + // preserves the binding specifier around its inner pattern. + rule!( + (valueBindingPattern bindingSpecifier: @@spec pattern: @p) + => + (expr_pattern modifier: (modifier #{spec}) expr: {p}) + ), // A tuple destructuring pattern (`let (a, b) = …`). A labelled element - // (`let (x: a) = …`) carries its label through as the `pattern_element` - // key; unlabelled elements have no key. - rule!((tuplePattern elements: _* @els) => (tuple_pattern element: {els})), + // (`let (x: a) = …`) carries its label through as the `argument` name; + // unlabelled elements have no name. + rule!((tuplePattern elements: _* @els) => (tuple_expr element: {els})), rule!( (tuplePatternElement label: _? @@label pattern: @p) => - (pattern_element key: (identifier #{label})? pattern: {p}) + (argument name_node: (identifier #{label})? value: {p}) ), // A type-casting pattern (`case is T`). Not yet supported, so it is // mapped to `unsupported_node` — an explicit reminder that this needs @@ -550,7 +586,7 @@ fn translation_rules() -> Vec> { // A wildcard *binding* pattern (`let _ = x`, `for _ in xs`). swift-syntax // models this as a `wildcardPattern`, distinct from the `_` match form // handled by the context-aware `discardAssignmentExpr` rule. - rule!((wildcardPattern) => (ignore_pattern)), + rule!((wildcardPattern) @@wildcard => (ignore_pattern #{wildcard})), // An expression pattern only establishes pattern context; its child // determines the concrete pattern shape. rule!((expressionPattern expression: @@e) => expr { @@ -564,30 +600,34 @@ fn translation_rules() -> Vec> { // an empty `block`. rule!( (functionDecl - name: @name + modifiers: _* @mods + name: @@name genericParameterClause: (genericParameterClause parameters: _* @type_params)? signature: (functionSignature parameterClause: (functionParameterClause parameters: _* @params) returnClause: (returnClause type: @ret)?) - body: (codeBlock statements: _* @body)) + body: (codeBlock) @body) => (function_declaration - name: (identifier #{name}) + modifier: {mods} + name_node: (identifier #{name}) type_parameter: {type_params} parameter: {params} return_type: {ret} - body: (block stmt: {body})) + body: {body}) ), rule!( (functionDecl - name: @name + modifiers: _* @mods + name: @@name genericParameterClause: (genericParameterClause parameters: _* @type_params)? signature: (functionSignature parameterClause: (functionParameterClause parameters: _* @params) returnClause: (returnClause type: @ret)?)) => (function_declaration - name: (identifier #{name}) + modifier: {mods} + name_node: (identifier #{name}) type_parameter: {type_params} parameter: {params} return_type: {ret} @@ -595,26 +635,31 @@ fn translation_rules() -> Vec> { ), // A function parameter. With two names (`firstName`+`secondName`) the // first is the external argument label and the second the internal name; - // with one name it is just the internal name. The declared type is - // emitted; the default value is optional. + // with one name it is both the external and internal name. rule!( (functionParameter firstName: @@first - secondName: _? @@second + secondName: @@second type: @ty defaultValue: (initializerClause value: @val)?) => - parameter { - let (external, name) = match second { - Some(second) => (Some(tree!((identifier #{first}))), second), - None => (None, first), - }; - tree!((parameter - external_name: {external} - pattern: (name_pattern identifier: (identifier #{name})) - type: {ty} - default: {val})) - } + (parameter + external_name_node: (identifier #{first}) + pattern: (identifier #{second}) + type: {ty} + default: {val}) + ), + rule!( + (functionParameter + firstName: @@first + type: @ty + defaultValue: (initializerClause value: @val)?) + => + (parameter + external_name_node: (identifier #{first}) // duplicate the parameter name + pattern: (identifier #{first}) + type: {ty} + default: {val}) ), // Swift's `[T](...)` array-type constructor syntax is parsed as a call // whose callee is an `arrayExpr` containing `T`. For a generic `T`, @@ -623,39 +668,53 @@ fn translation_rules() -> Vec> { // `Array` generic type constructor instead. rule!( (functionCallExpr - calledExpression: (arrayExpr elements: (arrayElement expression: (genericSpecializationExpr) @element)) + calledExpression: (arrayExpr + elements: (arrayElement expression: (genericSpecializationExpr) @element)) @@array arguments: _* @args - trailingClosure: @tc) - => - (call_expr - callee: (generic_type_expr - base: (named_type_expr name: (identifier "Array")) + trailingClosure: @tc + additionalTrailingClosures: _* @additional) + => + call_expr { + let callee = tree_at!( + array, + (generic_type_expr + base: (identifier "Array") type_argument: {element}) - argument: {args} - argument: (argument value: {tc})) + ); + tree!((call_expr + callee: {callee} + argument: {args} + argument: (argument value: {tc}) + argument: {additional})) + } ), rule!( (functionCallExpr - calledExpression: (arrayExpr elements: (arrayElement expression: (genericSpecializationExpr) @element)) + calledExpression: (arrayExpr + elements: (arrayElement expression: (genericSpecializationExpr) @element)) @@array arguments: _* @args) => - (call_expr - callee: (generic_type_expr - base: (named_type_expr name: (identifier "Array")) + call_expr { + let callee = tree_at!( + array, + (generic_type_expr + base: (identifier "Array") type_argument: {element}) - argument: {args}) + ); + tree!((call_expr callee: {callee} argument: {args})) + } ), // A function/method call (`foo(1, 2)`). `calledExpression` is the callee // and `arguments` is an (elided) list of `labeledExpr`, each translated - // to an `argument` below. A trailing closure (`xs.map { … }`) becomes a - // final unlabelled argument; that variant is matched first. + // to an `argument` below. A trailing closure (`xs.map { … }`) becomes + // a final unlabelled argument, followed by any additional labeled + // trailing closures. rule!( - (functionCallExpr calledExpression: @callee arguments: _* @args trailingClosure: @tc) - => - (call_expr callee: {callee} argument: {args} argument: (argument value: {tc})) - ), - rule!( - (functionCallExpr calledExpression: @@rawCallee arguments: _* @args) + (functionCallExpr + calledExpression: @@rawCallee + arguments: _* @args + trailingClosure: _? @trailing + additionalTrailingClosures: _* @additional) => expr { // Always translate the callee in non-pattern context. @@ -663,65 +722,41 @@ fn translation_rules() -> Vec> { ctx.in_pattern = false; ctx.translate(rawCallee) })?; - if ctx.in_pattern { - tree!((constructor_pattern constructor: {callee} element: {args})) - } else { - tree!((call_expr callee: {callee} argument: {args})) - } - } - ), - // A call argument or an enum-case pattern argument. When translating an - // enum-case `constructor_pattern`'s arguments (`ctx.in_pattern`), a - // `patternExpr` argument (`let x`) becomes a bound `name_pattern`, a - // wildcard (`_`) becomes an `ignore_pattern`, and any other expression - // becomes an `expr_equality_pattern`; each is wrapped in a - // `pattern_element` carrying the optional argument label as its `key`. - // Otherwise the argument keeps its label as the `name` and its value. - // The pattern-only shapes (`patternExpr`, `discardAssignmentExpr`) are - // matched first; they never occur as ordinary call arguments. - rule!( - (labeledExpr - label: _? @@lbl - expression: (functionCallExpr - calledExpression: @constructor - arguments: _* @elements)) - => - argument { - if ctx.in_pattern { - tree!((pattern_element - key: (identifier #{lbl})? - pattern: (constructor_pattern - constructor: {constructor} - element: {elements}))) - } else { - tree!((argument - name: (identifier #{lbl})? - value: (call_expr callee: {constructor} argument: {elements}))) - } + tree!((call_expr + callee: {callee} + argument: {args} + argument: {trailing.map(|trailing| tree!((argument value: {trailing})))} + argument: {additional} + )) } ), + // A call or enum-case pattern argument. rule!( - (labeledExpr label: _? @@lbl expression: (patternExpr pattern: @p)) + (labeledExpr label: _? @@lbl expression: @val) => - (pattern_element key: (identifier #{lbl})? pattern: {p}) + (argument name_node: (identifier #{lbl})? value: {val}) ), + // An additional labeled trailing closure, such as the `c: { ... }` in + // `foo { 42 } c: { ... }`, is turned into an argument to the function. rule!( - (labeledExpr label: _? @@lbl expression: (discardAssignmentExpr) @@wildcard) + (multipleTrailingClosureElement label: @@label closure: @closure) => - (pattern_element key: (identifier #{lbl})? pattern: (ignore_pattern #{wildcard})) + (argument name_node: (identifier #{label}) value: {closure}) ), rule!( - (labeledExpr label: _? @@lbl expression: @val) + (macroExpansionExpr + macroName: @@name + genericArgumentClause: (genericArgumentClause arguments: (genericArgument argument: @type_args)*)? + arguments: _* @args + trailingClosure: _? @trailing + additionalTrailingClosures: _* @additional) => - argument { - if ctx.in_pattern { - tree!((pattern_element - key: (identifier #{lbl})? - pattern: {val})) - } else { - tree!((argument name: (identifier #{lbl})? value: {val})) - } - } + (macro_call_expr + macro_name_node: (identifier #{name}) + type_argument: {type_args} + argument: {args} + argument: {trailing.map(|trailing| tree!((argument value: {trailing})))} + argument: {additional}) ), // Member access (`list.append`). The `declName` is itself a // `declReferenceExpr`; pull its `baseName` out as the member identifier. @@ -732,31 +767,38 @@ fn translation_rules() -> Vec> { // meaning as `Array` rather than an array literal. rule!( (memberAccessExpr - base: (arrayExpr elements: (arrayElement expression: (genericSpecializationExpr) @element)) - declName: (declReferenceExpr baseName: @member)) - => - (member_access_expr - base: (generic_type_expr - base: (named_type_expr name: (identifier "Array")) - type_argument: {element}) - member: (identifier #{member})) + base: (arrayExpr + elements: (arrayElement expression: (genericSpecializationExpr) @element)) @@array + declName: (declReferenceExpr baseName: @@member)) + => + member_access_expr { + let base = tree_at!( + array, + (generic_type_expr + base: (identifier "Array") + type_argument: {element}) + ); + tree!((member_access_expr + base: {base} + member_name_node: (identifier #{member}))) + } ), rule!( - (memberAccessExpr base: @base declName: (declReferenceExpr baseName: @member)) + (memberAccessExpr base: @base declName: (declReferenceExpr baseName: @@member)) => - (member_access_expr base: {base} member: (identifier #{member})) + (member_access_expr base: {base} member_name_node: (identifier #{member})) ), rule!( - (memberAccessExpr period: @dot declName: (declReferenceExpr baseName: @member)) + (memberAccessExpr period: @@dot declName: (declReferenceExpr baseName: @@member)) => - (member_access_expr base: (inferred_type_expr #{dot}) member: (identifier #{member})) + (member_access_expr base: (inferred_type_expr #{dot}) member_name_node: (identifier #{member})) ), // Control transfer, one rule per keyword. `return` carries an optional // value; `break` / `continue` an optional target label; `throw` its // thrown expression. rule!((returnStmt expression: _? @val) => (return_expr value: {val})), - rule!((breakStmt label: _? @@lbl) => (break_expr label: (identifier #{lbl})?)), - rule!((continueStmt label: _? @@lbl) => (continue_expr label: (identifier #{lbl})?)), + rule!((breakStmt label: _? @@lbl) => (break_expr label_name_node: (identifier #{lbl})?)), + rule!((continueStmt label: _? @@lbl) => (continue_expr label_name_node: (identifier #{lbl})?)), rule!((throwStmt expression: @val) => (throw_expr value: {val})), // ---- Closures ---- // A closure (`{ (x: Int) -> Int in … }`) becomes a `function_expr`. The @@ -781,10 +823,8 @@ fn translation_rules() -> Vec> { return_type: {ret} body: (block stmt: {body})) ), - // A closure capture (`[weak self]`, `[x]`, `[y = expr]`). The optional - // ownership specifier (`weak`/`unowned`) becomes a modifier; the - // captured name becomes the bound `name_pattern`; an explicit capture - // initializer (`[y = expr]`) becomes the bound value. + // A closure capture (`[weak self]`, `[x]`, `[y = expr]`). + // Normalize so there is always an explicit initializer, expanding `[x]` into `[x = x]`. rule!( (closureCapture specifier: (closureCaptureSpecifier specifier: @@spec)? @@ -793,24 +833,30 @@ fn translation_rules() -> Vec> { => (variable_declaration modifier: (modifier #{spec})? - pattern: (name_pattern identifier: (identifier #{name})) - value: {val}) + pattern: (identifier #{name}) + value: { + // Expand [x] into [x = x] + match val { + Some(val) => val, + None => tree!((identifier #{name})), + } + }) ), // A closure parameter clause (`(x: Int, y)`) unwraps to its parameters. rule!((closureParameterClause parameters: _* @params) => parameter* { params }), // A closure parameter (`x: Int`, or just `x`). Unlike a function // parameter it has no external label; the type is optional. rule!( - (closureParameter firstName: @name type: _? @ty) + (closureParameter firstName: @@name type: _? @ty) => - (parameter pattern: (name_pattern identifier: (identifier #{name})) type: {ty}) + (parameter pattern: (identifier #{name}) type: {ty}) ), // A shorthand closure parameter (`x` in `{ x, y in … }`): a bare name // with no parentheses and no type. rule!( - (closureShorthandParameter name: @name) + (closureShorthandParameter name: @@name) => - (parameter pattern: (name_pattern identifier: (identifier #{name}))) + (parameter pattern: (identifier #{name})) ), // ---- Control flow ---- // An `if`/`else` expression. Conditions are joined via `and_chain`; the @@ -861,7 +907,13 @@ fn translation_rules() -> Vec> { (switch_case body: (block stmt: {body})) ), // A single case item unwraps to its pattern, possibly boxed in conditional_pattern - rule!((switchCaseItem pattern: @p whereClause: (whereClause condition: @cond)) => (conditional_pattern pattern: { p } condition: {cond})), + rule!( + (switchCaseItem + pattern: @p + whereClause: (whereClause condition: @cond)) + => + (conditional_pattern pattern: {p} condition: {cond}) + ), rule!((switchCaseItem pattern: @p) => pattern { p }), // A pattern-matching condition (`if case let x = e`, `if case .foo(let x) // = e`) becomes a `pattern_guard_expr`: the matched pattern and the @@ -871,28 +923,38 @@ fn translation_rules() -> Vec> { => (pattern_guard_expr pattern: {pat} value: {val}) ), - // Optional binding (`if let x = foo`, or shorthand `if let x`) desugars - // to a `pattern_guard_expr` matching `Optional.some(x)`. The initialized - // form is matched first. + // Optional binding conditions with an initializer (the `let p = y` in + // `if let p = y { ... }`). We translate this to a `pattern_guard_expr` + // matching `Optional.some(p)`. rule!( (optionalBindingCondition - pattern: (identifierPattern identifier: @name) + bindingSpecifier: @@spec + pattern: @pattern initializer: (initializerClause value: @val)) => (pattern_guard_expr value: {val} - pattern: (constructor_pattern - constructor: (member_access_expr base: (named_type_expr name: (identifier "Optional")) member: (identifier "some")) - element: (pattern_element pattern: (name_pattern identifier: (identifier #{name}))))) + pattern: (call_expr + callee: (member_access_expr base: (identifier "Optional") member_name_node: (identifier "some")) + argument: (argument value: (expr_pattern + modifier: (modifier #{spec}) + expr: {pattern})))) ), + // Optional binding conditions in shorthand form, that is, _without_ an + // initializer (the `let p` in `if let p { ... }`). In this case the + // pattern is always an identifier. rule!( - (optionalBindingCondition pattern: (identifierPattern identifier: @name)) + (optionalBindingCondition + bindingSpecifier: @@spec + pattern: (identifierPattern identifier: @@name)) => (pattern_guard_expr - value: (name_expr identifier: (identifier #{name})) - pattern: (constructor_pattern - constructor: (member_access_expr base: (named_type_expr name: (identifier "Optional")) member: (identifier "some")) - element: (pattern_element pattern: (name_pattern identifier: (identifier #{name}))))) + value: (identifier #{name}) + pattern: (call_expr + callee: (member_access_expr base: (identifier "Optional") member_name_node: (identifier "some")) + argument: (argument value: (expr_pattern + modifier: (modifier #{spec}) + expr: (identifier #{name}))))) ), // A single condition in an `if`/`while`/`guard` condition list unwraps to // its inner expression; `and_chain` joins multiple with `&&`. @@ -930,13 +992,15 @@ fn translation_rules() -> Vec> { => (do_while_stmt condition: {cond} body: {body}) ), + // A `defer` statement + rule!((deferStmt body: @body) => (defer_stmt body: {body})), // A labeled statement (`outer: for … { }`). swift-syntax stores the // label and colon as separate tokens, so the label token is already the // bare name (no trailing `:` to strip). rule!( (labeledStmt label: @@lbl statement: @stmt) => - (labeled_stmt label: (identifier #{lbl}) stmt: {stmt}) + (labeled_stmt label_name_node: (identifier #{lbl}) stmt: {stmt}) ), // ---- Collections ---- // An array literal (`[1, 2, 3]`). Each `arrayElement` unwraps to its @@ -947,39 +1011,65 @@ fn translation_rules() -> Vec> { (array_literal element: {els}) ), rule!((arrayElement expression: @e) => expr { e }), - // A dictionary literal (`["a": 1]`) is kept as an opaque `map_literal` - // leaf (its source span). - rule!((dictionaryExpr) => (map_literal)), + // An empty dictionary literal, `[:]`. + rule!((dictionaryExpr content: ":") => (map_literal)), + // A non-empty dictionary literal, `[key: value]`. + rule!( + (dictionaryExpr content: (dictionaryElement)* @els) + => + (map_literal element: {els}) + ), + // A key-value pair, `key: value`. + rule!( + (dictionaryElement key: @key value: @value) + => + (key_value_pair key: {key} value: {value}) + ), // A subscript access (`xs[0]`) is modelled as a call. swift-syntax does // report a distinct `subscriptCallExpr`, so giving // subscripts their own shape needs only a `subscript_expr` node in // ast_types.yml and a remap here. rule!( - (subscriptCallExpr calledExpression: @callee arguments: _* @args) + (subscriptCallExpr + calledExpression: @callee + arguments: _* @args + trailingClosure: _? @trailing + additionalTrailingClosures: _* @additional) => - (call_expr callee: {callee} argument: {args}) + (call_expr + callee: {callee} + argument: {args} + argument: {trailing.map(|trailing| tree!((argument value: {trailing})))} + argument: {additional}) ), // ---- Optionals and errors ---- // Optional chaining — unwrap the marker rule!((optionalChainingExpr expression: @@inner) => expr { let inner = ctx.translate(inner)?.into_iter().next().ok_or("optional chaining expression has no child")?; if ctx.in_pattern { - tree!((constructor_pattern - constructor: (member_access_expr - base: (named_type_expr name: (identifier "Optional")) - member: (identifier "some")) - element: (pattern_element pattern: {inner}))) + tree!((call_expr + callee: (member_access_expr + base: (identifier "Optional") + member_name_node: (identifier "some")) + argument: (argument value: {inner}))) } else { inner } }), // try/try?/try! expr → unary_expr with operator "try", "try?" or "try!" rule!( - (tryExpr questionOrExclamationMark: _? @@m expression: @e) + (tryExpr + tryKeyword: @@keyword + questionOrExclamationMark: _? @@m + expression: @e) => expr { let op = format!("try{}", m.map(|m| ctx.source_text(m)).unwrap_or_default()); - tree!((unary_expr operator: (prefix_operator #{op}) operand: {e})) + let operator = tree_spanning!( + std::iter::once(keyword).chain(m), + (prefix_operator #{op}) + ); + tree!((unary_expr operator: {operator} operand: {e})) } ), // Do-catch → try_expr @@ -991,7 +1081,9 @@ fn translation_rules() -> Vec> { catch_clause: {catches}) ), rule!( - (catchItem pattern: @pattern whereClause: (whereClause condition: @guard)) + (catchItem + pattern: @pattern + whereClause: (whereClause condition: @guard)) => (conditional_pattern pattern: {pattern} condition: {guard}) ), @@ -1013,23 +1105,34 @@ fn translation_rules() -> Vec> { // Catch block without error binding rule!((catchClause body: @body) => (catch_clause body: {body})), // As expression (type cast) — as?, as! - rule!((asExpr expression: @val questionOrExclamationMark: _? @@mark type: @ty) => type_cast_expr { + rule!((asExpr expression: @val asKeyword: @@keyword questionOrExclamationMark: _? @@mark type: @ty) => type_cast_expr { let op = format!("as{}", mark.map(|m| ctx.source_text(m)).unwrap_or_default()); - tree!((type_cast_expr expr: {val} operator: (infix_operator #{op}) type: {ty})) + let operator = tree_spanning!( + std::iter::once(keyword).chain(mark), + (infix_operator #{op}) + ); + tree!((type_cast_expr expr: {val} operator: {operator} type: {ty})) }), // Check expression (`x is T`) → type_test_expr - rule!((isExpr expression: @val type: @ty) => (type_test_expr expr: {val} operator: (infix_operator "is") type: {ty})), + rule!((isExpr expression: @val isKeyword: @@keyword type: @ty) => (type_test_expr + expr: {val} + operator: {tree_at!(keyword, (infix_operator "is"))} + type: {ty})), // Await expression → unary_expr with operator "await" - rule!((awaitExpr expression: @val) => (unary_expr operator: (prefix_operator "await") operand: {val})), + rule!((awaitExpr awaitKeyword: @@keyword expression: @val) => (unary_expr + operator: {tree_at!(keyword, (prefix_operator "await"))} + operand: {val})), // Force-unwrap (`x!`) → postfix unary_expr, via swift-syntax's dedicated // `forceUnwrapExpr` node. - rule!((forceUnwrapExpr expression: @e) => (unary_expr operator: (postfix_operator "!") operand: {e})), + rule!((forceUnwrapExpr expression: @e exclamationMark: @@mark) => (unary_expr + operator: {tree_at!(mark, (postfix_operator "!"))} + operand: {e})), // ---- Imports ---- // An import declaration. The dotted path (a list of - // `importPathComponent`s) becomes a `name_expr`/`member_access_expr` + // `importPathComponent`s) becomes a `name_node`/`member_access_expr` // chain (via `member_chain`). A scoped import (`import struct Foo.Bar`) // has an `importKindSpecifier` and binds the last path component as a - // `name_pattern`; a plain import (`import Foundation`) has none and uses + // raw name node; a plain import (`import Foundation`) has none and uses // a `bulk_importing_pattern` spanning the whole declaration. Any leading // attributes (`@_exported`) and access modifiers (`public`) become // `modifier`s. @@ -1038,15 +1141,19 @@ fn translation_rules() -> Vec> { attributes: _* @attrs modifiers: _* @mods importKindSpecifier: _? @@kind - path: (importPathComponent name: @@parts)*) + path: (importPathComponent name: @@parts)*) @@decl => import_declaration { - let bulk_import = match kind { - None => Some(tree!((bulk_importing_pattern))), - Some(_) => None, // scoped import, no bulk import - }; let last = *parts.last().ok_or("import has no path")?; - let pattern = tree!((name_pattern identifier: (identifier #{last}) sub_pattern: {bulk_import})); + let pattern = match kind { + None => { + let bulk = tree_at!(decl, (bulk_importing_pattern)); + tree!((named_pattern + name_node: (identifier #{last}) + sub_pattern: {bulk})) + } + Some(_) => tree!((identifier #{last})), + }; tree!((import_declaration modifier: (modifier #{kind})? modifier: {attrs} @@ -1061,8 +1168,9 @@ fn translation_rules() -> Vec> { // becomes a `modifier`; its source text is the modifier spelling. rule!((attribute) @m => (modifier #{m})), rule!((declModifier) @m => (modifier #{m})), - // A `super` expression. - rule!((superExpr) => (super_expr)), + // Preserve the `super` keyword as a dedicated expression, normally used + // as the base of a member access (`super.foo`). + rule!((superExpr superKeyword: @@keyword) => (super_expr #{keyword})), // Type expressions. A generic type applied with explicit arguments // (`Set`) becomes a `generic_type_expr` whose `base` is the type // name and whose `type_argument`s are the (structured) arguments — the @@ -1075,82 +1183,80 @@ fn translation_rules() -> Vec> { genericArgumentClause: (genericArgumentClause arguments: (genericArgument argument: @args)*)) => (generic_type_expr - base: (named_type_expr name: (identifier #{name})) + base: (identifier #{name}) type_argument: {args}) ), // A named type (`Int`). `identifierType.name` is the type-name token. - rule!((identifierType name: @@n) => (named_type_expr name: (identifier #{n}))), + rule!((identifierType name: @@n) => (identifier #{n})), // A qualified type (`Outer.Inner`, `NSString.CompareOptions`). swift-syntax - // nests these as `memberType` nodes; preserve the nesting in the - // named_type_expr qualifier field. + // nests these as `memberType` nodes; preserve the nesting as ordinary + // member access. rule!( (memberType baseType: @base name: @@name) => - (named_type_expr qualifier: {base} name: (identifier #{name})) + (member_access_expr base: {base} member_name_node: (identifier #{name})) ), // Sugared types desugar to `generic_type_expr`: `T?` -> Optional, // `[T]` -> Array, `[K: V]` -> Dictionary. rule!( (optionalType wrappedType: @w) => - (generic_type_expr base: (named_type_expr name: (identifier "Optional")) type_argument: {w}) + (generic_type_expr base: (identifier "Optional") type_argument: {w}) ), rule!( (arrayType element: @e) => - (generic_type_expr base: (named_type_expr name: (identifier "Array")) type_argument: {e}) + (generic_type_expr base: (identifier "Array") type_argument: {e}) ), rule!( (dictionaryType key: @k value: @v) => - (generic_type_expr base: (named_type_expr name: (identifier "Dictionary")) type_argument: {k} type_argument: {v}) + (generic_type_expr base: (identifier "Dictionary") type_argument: {k} type_argument: {v}) ), // A tuple type (`(Int, String)`) or function type (`(Int) -> Bool`). // Both hold their contents as `tupleTypeElement`s, but a tuple element - // maps to `tuple_type_element` while a function parameter maps to - // `parameter`. Each container sets `ctx.in_function_type` for its direct + // maps to `argument` while a function parameter maps to `parameter`. + // Each container sets `ctx.in_function_type` for its direct // children (and translates them explicitly, so a nested type is // translated in the right context) and the shared `tupleTypeElement` // rule below reads it. An element's label (`firstName`) is optional. rule!( (tupleType elements: _* @@elems) => - tuple_type_expr { + tuple_expr { ctx.in_function_type = false; let mut out = Vec::new(); for e in elems { out.extend(ctx.translate(e)?); } - tree!((tuple_type_expr element: {out})) + tree!((tuple_expr element: {out})) } ), rule!( (functionType parameters: _* @@params returnClause: (returnClause type: @ret)) => - function_type_expr { + function_expr { ctx.in_function_type = true; let mut out = Vec::new(); for p in params { out.extend(ctx.translate(p)?); } - tree!((function_type_expr parameter: {out} return_type: {ret})) + tree!((function_expr parameter: {out} return_type: {ret})) } ), rule!( - (tupleTypeElement firstName: _? @@name type: @ty) + (tupleTypeElement + firstName: _? @@name + type: @ty) => - tuple_type_element { + argument { if ctx.in_function_type { - tree!((parameter external_name: (identifier #{name})? type: {ty})) + tree!((parameter external_name_node: (identifier #{name})? type: {ty})) } else { - tree!((tuple_type_element name: (identifier #{name})? type: {ty})) + tree!((argument name_node: (identifier #{name})? value: {ty})) } } ), - // Selector expression: `#selector(inner)` -- not yet supported - // (swift-syntax represents `#selector`/`#keyPath` and other macro - // expansions uniformly as a `macroExpansionExpr`). - rule!((macroExpansionExpr) => (unsupported_node)), // A nominal type's `inheritanceClause` (`: Base, Proto`) becomes a list // of `base_type`s, one per inherited type. Each declaration keyword // gets its own rule; the bodies are identical but for the keyword. @@ -1164,7 +1270,7 @@ fn translation_rules() -> Vec> { (type_parameter modifier: {attrs} modifier: (modifier #{spec})? - name: (identifier #{name}) + name_node: (identifier #{name}) bound: {bound}) ), rule!( @@ -1179,12 +1285,15 @@ fn translation_rules() -> Vec> { => (equality_type_constraint left: {left} right: {right}) ), - // Class declaration with body containing members + // Class declaration with body containing members. If the class has no + // explicit initializer, add a (possibly dead) implicit `init`. The implicit + // `init` is dead when the class inherits a constructor from its base class, + // which we cannot check in the extractor. rule!( (classDecl - classKeyword: @kind + classKeyword: @@kind modifiers: _* @mods - name: @name + name: @@name genericParameterClause: (genericParameterClause parameters: _* @params genericWhereClause: (genericWhereClause requirements: _* @parameter_constraints)?)? @@ -1192,22 +1301,26 @@ fn translation_rules() -> Vec> { genericWhereClause: (genericWhereClause requirements: _* @declaration_constraints)? memberBlock: (memberBlock members: _* @members)) => - (class_like_declaration - modifier: (modifier #{kind}) - modifier: {mods} - name: (identifier #{name}) - type_parameter: {params} - type_constraint: {parameter_constraints} - type_constraint: {declaration_constraints} - base_type: {bases.into_iter().map(|ty| tree!((base_type type: {ty})))} - member: {members}) + class_like_declaration { + let implicit_initializer = implicit_parameterless_initializer(&mut ctx, &members); + tree!((class_like_declaration + modifier: (modifier #{kind}) + modifier: {mods} + name_node: (identifier #{name}) + type_parameter: {params} + type_constraint: {parameter_constraints} + type_constraint: {declaration_constraints} + base_type: {bases.into_iter().map(|ty| tree!((base_type type: {ty})))} + member: {members} + member: {implicit_initializer})) + } ), // Enum class declaration: same as a regular class but with an enum body. rule!( (enumDecl - enumKeyword: @kind + enumKeyword: @@kind modifiers: _* @mods - name: @name + name: @@name genericParameterClause: (genericParameterClause parameters: _* @params genericWhereClause: (genericWhereClause requirements: _* @parameter_constraints)?)? @@ -1218,19 +1331,20 @@ fn translation_rules() -> Vec> { (class_like_declaration modifier: (modifier #{kind}) modifier: {mods} - name: (identifier #{name}) + name_node: (identifier #{name}) type_parameter: {params} type_constraint: {parameter_constraints} type_constraint: {declaration_constraints} base_type: {bases.into_iter().map(|ty| tree!((base_type type: {ty})))} member: {members}) ), - // A `struct` declaration. + // A `struct` declaration, including an implicit parameter-less `init` + // when no explicit initializer is present. rule!( (structDecl - structKeyword: @kind + structKeyword: @@kind modifiers: _* @mods - name: @name + name: @@name genericParameterClause: (genericParameterClause parameters: _* @params genericWhereClause: (genericWhereClause requirements: _* @parameter_constraints)?)? @@ -1238,22 +1352,26 @@ fn translation_rules() -> Vec> { genericWhereClause: (genericWhereClause requirements: _* @declaration_constraints)? memberBlock: (memberBlock members: _* @members)) => - (class_like_declaration - modifier: (modifier #{kind}) - modifier: {mods} - name: (identifier #{name}) - type_parameter: {params} - type_constraint: {parameter_constraints} - type_constraint: {declaration_constraints} - base_type: {bases.into_iter().map(|ty| tree!((base_type type: {ty})))} - member: {members}) + class_like_declaration { + let implicit_initializer = implicit_parameterless_initializer(&mut ctx, &members); + tree!((class_like_declaration + modifier: (modifier #{kind}) + modifier: {mods} + name_node: (identifier #{name}) + type_parameter: {params} + type_constraint: {parameter_constraints} + type_constraint: {declaration_constraints} + base_type: {bases.into_iter().map(|ty| tree!((base_type type: {ty})))} + member: {members} + member: {implicit_initializer})) + } ), // Protocol declaration rule!( (protocolDecl - protocolKeyword: @kind + protocolKeyword: @@kind modifiers: _* @mods - name: @name + name: @@name genericParameterClause: (genericParameterClause parameters: _* @params)? inheritanceClause: (inheritanceClause inheritedTypes: (inheritedType type: @bases)*)? genericWhereClause: (genericWhereClause requirements: _* @declaration_constraints)? @@ -1262,28 +1380,25 @@ fn translation_rules() -> Vec> { (class_like_declaration modifier: (modifier #{kind}) modifier: {mods} - name: (identifier #{name}) + name_node: (identifier #{name}) type_parameter: {params} type_constraint: {declaration_constraints} base_type: {bases.into_iter().map(|ty| tree!((base_type type: {ty})))} member: {members}) ), - // An `extension Foo { … }` is likewise a `class_like_declaration`, named - // by the extended type. The extended type is captured opaquely (as its - // source text) so that qualified names (`extension String.Interpolation`, - // a `memberType`) name the declaration just like simple ones. + // An `extension Foo.Bar { … }` is likewise a `class_like_declaration`. rule!( (extensionDecl - extensionKeyword: @kind + extensionKeyword: @@kind modifiers: _* @mods - extendedType: @@name + extendedType: @extendedType inheritanceClause: (inheritanceClause inheritedTypes: (inheritedType type: @bases)*)? memberBlock: (memberBlock members: _* @members)) => (class_like_declaration modifier: (modifier #{kind}) modifier: {mods} - name: (identifier #{name}) + extension_target: {extendedType} base_type: {bases.into_iter().map(|ty| tree!((base_type type: {ty})))} member: {members}) ), @@ -1294,25 +1409,40 @@ fn translation_rules() -> Vec> { // nest under `signature` (as for `functionDecl`). rule!( (initializerDecl + initKeyword: @@initK modifiers: _* @mods signature: (functionSignature parameterClause: (functionParameterClause parameters: _* @params)) - body: (codeBlock statements: _* @body_stmts)?) + body: (codeBlock) @body) => (constructor_declaration modifier: {mods} + name_node: (identifier #{initK}) parameter: {params} - body: (block stmt: {body_stmts})) + body: {body}) + ), + rule!( + (initializerDecl + initKeyword: @@initK + modifiers: _* @mods + signature: (functionSignature + parameterClause: (functionParameterClause parameters: _* @params))) + => + (constructor_declaration + modifier: {mods} + name_node: (identifier #{initK}) + parameter: {params} + body: (block)) ), // Deinit declaration → destructor_declaration. Body statements optional. rule!( (deinitializerDecl modifiers: _* @mods - body: (codeBlock statements: _* @body_stmts)) + body: (codeBlock) @body) => (destructor_declaration modifier: {mods} - body: (block stmt: {body_stmts})) + body: {body}) ), // Typealias declaration rule!( @@ -1324,7 +1454,7 @@ fn translation_rules() -> Vec> { => (type_alias_declaration modifier: {mods} - name: (identifier #{name}) + name_node: (identifier #{name}) type_parameter: {type_params} r#type: {val}) ), @@ -1337,28 +1467,66 @@ fn translation_rules() -> Vec> { => (associated_type_declaration modifier: {mods} - name: (identifier #{name}) + name_node: (identifier #{name}) bound: {bound}) ), - // ---- Fallbacks ---- - // Bare `_` (rather than `(_)`) so this matches both named nodes - // and unnamed tokens. Any unnamed token that escapes the - // input-schema-specific rules (e.g. captured operators in - // `additive_expression op: @op`) has its auto-translated value - // replaced with an `unsupported_node` whose source range is - // inherited from the original token, so `#{op}` still reads the - // original text. - rule!( - _ - => - (unsupported_node) + // ---- Explicitly unsupported roots ---- + // These kinds can reach translation independently, but we do not + // currently map them to the unified AST. Syntax nested inside one of + // these roots is discarded with its parent and needs no separate rule. + rule!((actorDecl) => (unsupported_node)), + rule!((attributedType) => (unsupported_node)), + rule!((borrowExpr) => (unsupported_node)), + rule!((classRestrictionType) => (unsupported_node)), + rule!((compositionType) => (unsupported_node)), + rule!((consumeExpr) => (unsupported_node)), + rule!((copyExpr) => (unsupported_node)), + rule!((discardStmt) => (unsupported_node)), + rule!((fallThroughStmt) => (unsupported_node)), + rule!((ifConfigDecl) => (unsupported_node)), + rule!((implicitlyUnwrappedOptionalType) => (unsupported_node)), + rule!((inlineArrayType) => (unsupported_node)), + rule!((keyPathExpr) => (unsupported_node)), + rule!((macroDecl) => (unsupported_node)), + rule!((metatypeType) => (unsupported_node)), + rule!((namedOpaqueReturnType) => (unsupported_node)), + rule!((operatorDecl) => (unsupported_node)), + rule!((packElementExpr) => (unsupported_node)), + rule!((packElementType) => (unsupported_node)), + rule!((packExpansionExpr) => (unsupported_node)), + rule!((packExpansionType) => (unsupported_node)), + rule!((postfixIfConfigExpr) => (unsupported_node)), + rule!((poundSourceLocation) => (unsupported_node)), + rule!((precedenceGroupDecl) => (unsupported_node)), + rule!((someOrAnyType) => (unsupported_node)), + rule!((subscriptDecl) => (unsupported_node)), + rule!((suppressedType) => (unsupported_node)), + rule!((typeExpr) => (unsupported_node)), + rule!((unsafeExpr) => (unsupported_node)), + rule!((yieldStmt) => (unsupported_node)), + // Anything reaching this final generic handler has neither a + // dedicated rule nor an explicit unsupported entry. + rule!( + _ @@node + => + unhandled_node { + let input = ctx.ast.get_node(node).expect("matched node must exist"); + tracing::error!( + target: "unified_extractor", + node_kind = input.kind_name(), + source_range = ?input.source_range(), + "Unhandled Swift syntax node reached translation" + ); + tree!((unhandled_node)) + } ), ] } pub fn language_spec(desugared_ast_schema: &'static str) -> desugaring::LanguageSpec { let config = DesugaringConfig::::new() - .add_phase("translate", PhaseKind::OneShot, translation_rules()) + .with_ignored_location_fields(["trailingComma"]) + .add_phase("translate", translation_rules()) .with_output_node_types_yaml(desugared_ast_schema); let desugarer = ConcreteDesugarer::without_language(config).expect("failed to build Swift desugarer"); diff --git a/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.output b/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.output index 6833344de16d..573498825bc0 100644 --- a/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.output +++ b/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.output @@ -60,30 +60,25 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "f" source="f" value: - function_expr + function_expr source="{ [⟨capture_declaration⟩] in ⟨body⟩ }" capture_declaration: - variable_declaration - modifier: modifier "weak" - pattern: - name_pattern - identifier: identifier "self" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩⟨value⟩" + modifier: modifier "weak" source="weak" + pattern: identifier "self" source="self" + value: identifier "self" source="self" body: - block + block source="⟨stmt⟩" stmt: - call_expr + call_expr source="⟨callee⟩()" callee: - member_access_expr - base: - name_expr - identifier: identifier "self" - member: identifier "doThing" + member_access_expr source="⟨base⟩?.⟨member_name_node⟩" + base: identifier "self" source="self" + member_name_node: identifier "doThing" source="doThing" diff --git a/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.output b/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.output index c20da77c72cb..786e7d7fb4ee 100644 --- a/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.output +++ b/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.output @@ -62,34 +62,24 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "f" source="f" value: - function_expr + function_expr source="{ (⟨parameter⟩) -> ⟨return_type⟩ in ⟨body⟩ }" parameter: - parameter - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "x" - return_type: - named_type_expr - name: identifier "Int" + parameter source="⟨pattern⟩: ⟨type⟩" + type: identifier "Int" source="Int" + pattern: identifier "x" source="x" + return_type: identifier "Int" source="Int" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator "*" - right: int_literal "2" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "*" source="*" + right: int_literal "2" source="2" diff --git a/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.output b/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.output index 1b07604e02c5..3e30fac78c01 100644 --- a/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.output +++ b/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.output @@ -39,25 +39,19 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "f" source="f" value: - function_expr + function_expr source="{ ⟨body⟩ }" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "$0" - operator: infix_operator "+" - right: - name_expr - identifier: identifier "$1" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "$0" source="$0" + operator: infix_operator "+" source="+" + right: identifier "$1" source="$1" diff --git a/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output b/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output index 4fbc1c8f71f0..f9c054aa0b96 100644 --- a/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output +++ b/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output @@ -93,48 +93,34 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "f" source="f" value: - function_expr + function_expr source="{ (⟨parameter⟩) -> ⟨return_type⟩ in\n ⟨body⟩\n}" parameter: - parameter - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "x" - return_type: - named_type_expr - name: identifier "Int" + parameter source="⟨pattern⟩: ⟨type⟩" + type: identifier "Int" source="Int" + pattern: identifier "x" source="x" + return_type: identifier "Int" source="Int" body: - block + block source="⟨stmt⟩\n ⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "y" source="y" value: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator "+" - right: int_literal "1" - return_expr + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "+" source="+" + right: int_literal "1" source="1" + return_expr source="return ⟨value⟩" value: - binary_expr - left: - name_expr - identifier: identifier "y" - operator: infix_operator "*" - right: int_literal "2" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "y" source="y" + operator: infix_operator "*" source="*" + right: int_literal "2" source="2" diff --git a/unified/extractor/tests/corpus/swift/closures/nested-trailing-closure.output b/unified/extractor/tests/corpus/swift/closures/nested-trailing-closure.output new file mode 100644 index 000000000000..a8594a175bac --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/nested-trailing-closure.output @@ -0,0 +1,76 @@ +print(xs.map { $0 * 2 }) + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + functionCallExpr + arguments: + additionalTrailingClosures: + calledExpression: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "map" + base: + declReferenceExpr + baseName: identifier "xs" + trailingClosure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + infixOperatorExpr + operator: + binaryOperatorExpr + operator: binaryOperator "*" + leftOperand: + declReferenceExpr + baseName: dollarIdentifier "$0" + rightOperand: + integerLiteralExpr + literal: integerLiteral "2" + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "print" + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" + argument: + argument source="⟨value⟩" + value: + call_expr source="⟨callee⟩ ⟨argument⟩" + callee: + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "xs" source="xs" + member_name_node: identifier "map" source="map" + argument: + argument source="⟨value⟩" + value: + function_expr source="{ ⟨body⟩ }" + body: + block source="⟨stmt⟩" + stmt: + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "$0" source="$0" + operator: infix_operator "*" source="*" + right: int_literal "2" source="2" diff --git a/unified/extractor/tests/corpus/swift/closures/nested-trailing-closure.swift b/unified/extractor/tests/corpus/swift/closures/nested-trailing-closure.swift new file mode 100644 index 000000000000..b129e1fba835 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/nested-trailing-closure.swift @@ -0,0 +1 @@ +print(xs.map { $0 * 2 }) diff --git a/unified/extractor/tests/corpus/swift/closures/trailing-closure.output b/unified/extractor/tests/corpus/swift/closures/trailing-closure.output index 3e26ff27eb58..c50bbde02dcc 100644 --- a/unified/extractor/tests/corpus/swift/closures/trailing-closure.output +++ b/unified/extractor/tests/corpus/swift/closures/trailing-closure.output @@ -39,27 +39,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - call_expr + call_expr source="⟨callee⟩ ⟨argument⟩" callee: - member_access_expr - base: - name_expr - identifier: identifier "xs" - member: identifier "map" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "xs" source="xs" + member_name_node: identifier "map" source="map" argument: - argument + argument source="⟨value⟩" value: - function_expr + function_expr source="{ ⟨body⟩ }" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "$0" - operator: infix_operator "*" - right: int_literal "2" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "$0" source="$0" + operator: infix_operator "*" source="*" + right: int_literal "2" source="2" diff --git a/unified/extractor/tests/corpus/swift/collections/array-literal.output b/unified/extractor/tests/corpus/swift/collections/array-literal.output index c6ea2c2094fa..51c65ac2a0f0 100644 --- a/unified/extractor/tests/corpus/swift/collections/array-literal.output +++ b/unified/extractor/tests/corpus/swift/collections/array-literal.output @@ -41,18 +41,16 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "xs" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "xs" source="xs" value: - array_literal + array_literal source="[⟨element⟩, ⟨element⟩, ⟨element⟩]" element: - int_literal "1" - int_literal "2" - int_literal "3" + int_literal "1" source="1" + int_literal "2" source="2" + int_literal "3" source="3" diff --git a/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output index edd306a69cbd..b94bae665654 100644 --- a/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output +++ b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output @@ -1,10 +1,51 @@ -let d = ["a": 1, "b": 2] +let key = "a" +let value = 1 +let d = [key: value, "b": 2] +let empty: [String: Int] = [:] --- sourceFile endOfFileToken: endOfFile statements: + codeBlockItem + item: + variableDecl + attributes: + modifiers: + bindingSpecifier: let + bindings: + patternBinding + initializer: + initializerClause + equal: = + value: + stringLiteralExpr + closingQuote: " + openingQuote: " + segments: + stringSegment + content: stringSegment "a" + pattern: + identifierPattern + identifier: identifier "key" + codeBlockItem + item: + variableDecl + attributes: + modifiers: + bindingSpecifier: let + bindings: + patternBinding + initializer: + initializerClause + equal: = + value: + integerLiteralExpr + literal: integerLiteral "1" + pattern: + identifierPattern + identifier: identifier "value" codeBlockItem item: variableDecl @@ -25,15 +66,11 @@ sourceFile colon: : trailingComma: , value: - integerLiteralExpr - literal: integerLiteral "1" + declReferenceExpr + baseName: identifier "value" key: - stringLiteralExpr - closingQuote: " - openingQuote: " - segments: - stringSegment - content: stringSegment "a" + declReferenceExpr + baseName: identifier "key" dictionaryElement colon: : value: @@ -49,16 +86,73 @@ sourceFile pattern: identifierPattern identifier: identifier "d" + codeBlockItem + item: + variableDecl + attributes: + modifiers: + bindingSpecifier: let + bindings: + patternBinding + initializer: + initializerClause + equal: = + value: + dictionaryExpr + leftSquare: [ + rightSquare: ] + content: : + pattern: + identifierPattern + identifier: identifier "empty" + typeAnnotation: + typeAnnotation + colon: : + type: + dictionaryType + colon: : + leftSquare: [ + rightSquare: ] + value: + identifierType + name: identifier "Int" + key: + identifierType + name: identifier "String" --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩\n⟨stmt⟩\n⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "d" - value: map_literal "[\"a\": 1, \"b\": 2]" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "key" source="key" + value: string_literal "\"a\"" source="\"a\"" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "value" source="value" + value: int_literal "1" source="1" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "d" source="d" + value: + map_literal source="[⟨element⟩, ⟨element⟩]" + element: + key_value_pair source="⟨key⟩: ⟨value⟩" + key: identifier "key" source="key" + value: identifier "value" source="value" + key_value_pair source="⟨key⟩: ⟨value⟩" + key: string_literal "\"b\"" source="\"b\"" + value: int_literal "2" source="2" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "empty" source="empty" + type: + generic_type_expr source="[⟨type_argument⟩: ⟨type_argument⟩]" + base: identifier "Dictionary" source="" + type_argument: + identifier "String" source="String" + identifier "Int" source="Int" + value: map_literal "[:]" source="[:]" diff --git a/unified/extractor/tests/corpus/swift/collections/dictionary-literal.swift b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.swift index 1b9eb5ebe2c4..7f3d9ad7daec 100644 --- a/unified/extractor/tests/corpus/swift/collections/dictionary-literal.swift +++ b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.swift @@ -1 +1,4 @@ -let d = ["a": 1, "b": 2] +let key = "a" +let value = 1 +let d = [key: value, "b": 2] +let empty: [String: Int] = [:] diff --git a/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output b/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output index e2f939e0683c..b7719365bbc6 100644 --- a/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output +++ b/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output @@ -41,20 +41,16 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "v" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "v" source="v" value: - call_expr - callee: - name_expr - identifier: identifier "d" + call_expr source="⟨callee⟩[⟨argument⟩]" + callee: identifier "d" source="d" argument: - argument - value: string_literal "\"key\"" + argument source="⟨value⟩" + value: string_literal "\"key\"" source="\"key\"" diff --git a/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.output b/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.output index e9a70a43bb42..9e05ecaab626 100644 --- a/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.output +++ b/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.output @@ -37,21 +37,15 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "xs" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "xs" source="xs" type: - generic_type_expr - base: - named_type_expr - name: identifier "Array" - type_argument: - named_type_expr - name: identifier "Int" - value: array_literal "[]" + generic_type_expr source="[⟨type_argument⟩]" + base: identifier "Array" source="" + type_argument: identifier "Int" source="Int" + value: array_literal "[]" source="[]" diff --git a/unified/extractor/tests/corpus/swift/collections/set-literal.output b/unified/extractor/tests/corpus/swift/collections/set-literal.output index a06670231ebb..97cf2cf6a72a 100644 --- a/unified/extractor/tests/corpus/swift/collections/set-literal.output +++ b/unified/extractor/tests/corpus/swift/collections/set-literal.output @@ -56,26 +56,20 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "s" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "s" source="s" type: - generic_type_expr - base: - named_type_expr - name: identifier "Set" - type_argument: - named_type_expr - name: identifier "Int" + generic_type_expr source="⟨base⟩<⟨type_argument⟩>" + base: identifier "Set" source="Set" + type_argument: identifier "Int" source="Int" value: - array_literal + array_literal source="[⟨element⟩, ⟨element⟩, ⟨element⟩]" element: - int_literal "1" - int_literal "2" - int_literal "3" + int_literal "1" source="1" + int_literal "2" source="2" + int_literal "3" source="3" diff --git a/unified/extractor/tests/corpus/swift/collections/subscript-access.output b/unified/extractor/tests/corpus/swift/collections/subscript-access.output index ec24f0c1f1df..771004ff717f 100644 --- a/unified/extractor/tests/corpus/swift/collections/subscript-access.output +++ b/unified/extractor/tests/corpus/swift/collections/subscript-access.output @@ -38,20 +38,16 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "first" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "first" source="first" value: - call_expr - callee: - name_expr - identifier: identifier "xs" + call_expr source="⟨callee⟩[⟨argument⟩]" + callee: identifier "xs" source="xs" argument: - argument - value: int_literal "0" + argument source="⟨value⟩" + value: int_literal "0" source="0" diff --git a/unified/extractor/tests/corpus/swift/collections/tuple-literal.output b/unified/extractor/tests/corpus/swift/collections/tuple-literal.output index facbc2fcbb45..51088efb6750 100644 --- a/unified/extractor/tests/corpus/swift/collections/tuple-literal.output +++ b/unified/extractor/tests/corpus/swift/collections/tuple-literal.output @@ -45,13 +45,19 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "t" - value: tuple_expr "(1, \"two\", 3.0)" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "t" source="t" + value: + tuple_expr source="(⟨element⟩, ⟨element⟩, ⟨element⟩)" + element: + argument source="⟨value⟩" + value: int_literal "1" source="1" + argument source="⟨value⟩" + value: string_literal "\"two\"" source="\"two\"" + argument source="⟨value⟩" + value: float_literal "3.0" source="3.0" diff --git a/unified/extractor/tests/corpus/swift/collections/tuple-member-access.output b/unified/extractor/tests/corpus/swift/collections/tuple-member-access.output index 6ecbd22eebe0..d5eb860a528e 100644 --- a/unified/extractor/tests/corpus/swift/collections/tuple-member-access.output +++ b/unified/extractor/tests/corpus/swift/collections/tuple-member-access.output @@ -31,18 +31,14 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "n" source="n" value: - member_access_expr - base: - name_expr - identifier: identifier "t" - member: identifier "0" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "t" source="t" + member_name_node: identifier "0" source="0" diff --git a/unified/extractor/tests/corpus/swift/control-flow/binding-modifier-does-not-leak-to-sibling.output b/unified/extractor/tests/corpus/swift/control-flow/binding-modifier-does-not-leak-to-sibling.output index 800647eb7474..73c3312ea09e 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/binding-modifier-does-not-leak-to-sibling.output +++ b/unified/extractor/tests/corpus/swift/control-flow/binding-modifier-does-not-leak-to-sibling.output @@ -84,38 +84,28 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - value: int_literal "1" - switch_expr - value: - name_expr - identifier: identifier "y" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "x" source="x" + value: int_literal "1" source="1" + switch_expr source="switch ⟨value⟩ {\n⟨case⟩\n⟨case⟩\n}" + value: identifier "y" source="y" case: - switch_case - pattern: - expr_equality_pattern - expr: - name_expr - identifier: identifier "someConstant" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" + pattern: identifier "someConstant" source="someConstant" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"matched\"" - switch_case + argument source="⟨value⟩" + value: string_literal "\"matched\"" source="\"matched\"" + switch_case source="default:\n ⟨body⟩" body: - block - stmt: break_expr "break" + block source="⟨stmt⟩" + stmt: break_expr "break" source="break" diff --git a/unified/extractor/tests/corpus/swift/control-flow/defer-statement.output b/unified/extractor/tests/corpus/swift/control-flow/defer-statement.output index 6e8ec9ae3b9a..dc073f8be151 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/defer-statement.output +++ b/unified/extractor/tests/corpus/swift/control-flow/defer-statement.output @@ -75,20 +75,26 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "withCleanup" + function_declaration source="func ⟨name_node⟩() ⟨body⟩" + name_node: identifier "withCleanup" source="withCleanup" body: - block + block source="{\n ⟨stmt⟩\n ⟨stmt⟩\n}" stmt: - unsupported_node "defer { print(\"cleanup\") }" - call_expr - callee: - name_expr - identifier: identifier "print" + defer_stmt source="defer ⟨body⟩" + body: + block source="{ ⟨stmt⟩ }" + stmt: + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" + argument: + argument source="⟨value⟩" + value: string_literal "\"cleanup\"" source="\"cleanup\"" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"work\"" + argument source="⟨value⟩" + value: string_literal "\"work\"" source="\"work\"" diff --git a/unified/extractor/tests/corpus/swift/control-flow/discard-statement.output b/unified/extractor/tests/corpus/swift/control-flow/discard-statement.output index 7e0eac29c0fc..25dcbe059bd9 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/discard-statement.output +++ b/unified/extractor/tests/corpus/swift/control-flow/discard-statement.output @@ -63,19 +63,24 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "struct" - name: identifier "Resource" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩: ⟨base_type⟩ {\n ⟨member⟩\n}" + modifier: modifier "struct" source="struct" + name_node: identifier "Resource" source="Resource" base_type: - base_type - type: unsupported_node "~Copyable" + base_type source="⟨type⟩" + type: unsupported_node "~Copyable" source="~Copyable" member: - function_declaration - name: identifier "close" + function_declaration source="⟨modifier⟩ func ⟨name_node⟩() ⟨body⟩" + modifier: modifier "consuming" source="consuming" + name_node: identifier "close" source="close" body: - block - stmt: unsupported_node "discard self" + block source="{\n ⟨stmt⟩\n }" + stmt: unsupported_node "discard self" source="discard self" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/control-flow/fallthrough.output b/unified/extractor/tests/corpus/swift/control-flow/fallthrough.output index 9cfe81048402..080c3b0089d3 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/fallthrough.output +++ b/unified/extractor/tests/corpus/swift/control-flow/fallthrough.output @@ -82,37 +82,29 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "classify" + function_declaration source="func ⟨name_node⟩(⟨parameter⟩) ⟨body⟩" + name_node: identifier "classify" source="classify" parameter: - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "x" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "x" source="x" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - switch_expr - value: - name_expr - identifier: identifier "x" + switch_expr source="switch ⟨value⟩ {\n ⟨case⟩\n ⟨case⟩\n }" + value: identifier "x" source="x" case: - switch_case - pattern: - expr_equality_pattern - expr: int_literal "1" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" + pattern: int_literal "1" source="1" body: - block - stmt: unsupported_node "fallthrough" - switch_case + block source="⟨stmt⟩" + stmt: unsupported_node "fallthrough" source="fallthrough" + switch_case source="default:\n ⟨body⟩" body: - block - stmt: break_expr "break" + block source="⟨stmt⟩" + stmt: break_expr "break" source="break" diff --git a/unified/extractor/tests/corpus/swift/control-flow/guard-let-pattern.output b/unified/extractor/tests/corpus/swift/control-flow/guard-let-pattern.output new file mode 100644 index 000000000000..16e1228cdd5f --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/guard-let-pattern.output @@ -0,0 +1,86 @@ +guard let (call, thread) = optional else { + return +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + guardStmt + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + returnStmt + returnKeyword: return + conditions: + conditionElement + condition: + optionalBindingCondition + initializer: + initializerClause + equal: = + value: + declReferenceExpr + baseName: identifier "optional" + pattern: + expressionPattern + expression: + tupleExpr + leftParen: ( + rightParen: ) + elements: + labeledExpr + expression: + patternExpr + pattern: + identifierPattern + identifier: identifier "call" + trailingComma: , + labeledExpr + expression: + patternExpr + pattern: + identifierPattern + identifier: identifier "thread" + bindingSpecifier: let + elseKeyword: else + guardKeyword: guard + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩" + stmt: + guard_if_stmt source="guard ⟨condition⟩ else ⟨else⟩" + condition: + pattern_guard_expr source="⟨pattern⟩ = ⟨value⟩" + pattern: + call_expr source="⟨argument⟩" + callee: + member_access_expr source="" + base: identifier "Optional" source="" + member_name_node: identifier "some" source="" + argument: + argument source="⟨value⟩" + value: + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: + tuple_expr source="(⟨element⟩, ⟨element⟩)" + element: + argument source="⟨value⟩" + value: identifier "call" source="call" + argument source="⟨value⟩" + value: identifier "thread" source="thread" + value: identifier "optional" source="optional" + else: + block source="{\n ⟨stmt⟩\n}" + stmt: return_expr "return" source="return" diff --git a/unified/extractor/tests/corpus/swift/control-flow/guard-let-pattern.swift b/unified/extractor/tests/corpus/swift/control-flow/guard-let-pattern.swift new file mode 100644 index 000000000000..adb99f174f0d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/guard-let-pattern.swift @@ -0,0 +1,3 @@ +guard let (call, thread) = optional else { + return +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/guard-let-shorthand.output b/unified/extractor/tests/corpus/swift/control-flow/guard-let-shorthand.output new file mode 100644 index 000000000000..34e3dd03982a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/guard-let-shorthand.output @@ -0,0 +1,55 @@ +guard let value else { return } + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + guardStmt + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + returnStmt + returnKeyword: return + conditions: + conditionElement + condition: + optionalBindingCondition + pattern: + identifierPattern + identifier: identifier "value" + bindingSpecifier: let + elseKeyword: else + guardKeyword: guard + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩" + stmt: + guard_if_stmt source="guard ⟨condition⟩ else ⟨else⟩" + condition: + pattern_guard_expr source="⟨pattern⟩⟨value⟩" + pattern: + call_expr source="⟨argument⟩" + callee: + member_access_expr source="" + base: identifier "Optional" source="" + member_name_node: identifier "some" source="" + argument: + argument source="⟨value⟩" + value: + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "value" source="value" + value: identifier "value" source="value" + else: + block source="{ ⟨stmt⟩ }" + stmt: return_expr "return" source="return" diff --git a/unified/extractor/tests/corpus/swift/control-flow/guard-let-shorthand.swift b/unified/extractor/tests/corpus/swift/control-flow/guard-let-shorthand.swift new file mode 100644 index 000000000000..ac44daacf17e --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/guard-let-shorthand.swift @@ -0,0 +1 @@ +guard let value else { return } \ No newline at end of file diff --git a/unified/extractor/tests/corpus/swift/control-flow/guard-let.output b/unified/extractor/tests/corpus/swift/control-flow/guard-let.output index d739eca564b5..5d12fd0a7ea4 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/guard-let.output +++ b/unified/extractor/tests/corpus/swift/control-flow/guard-let.output @@ -36,29 +36,26 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - guard_if_stmt + guard_if_stmt source="guard ⟨condition⟩ else ⟨else⟩" condition: - pattern_guard_expr + pattern_guard_expr source="⟨pattern⟩ = ⟨value⟩" pattern: - constructor_pattern - constructor: - member_access_expr - base: - named_type_expr - name: identifier "Optional" - member: identifier "some" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "value" - value: - name_expr - identifier: identifier "optional" + call_expr source="⟨argument⟩" + callee: + member_access_expr source="" + base: identifier "Optional" source="" + member_name_node: identifier "some" source="" + argument: + argument source="⟨value⟩" + value: + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "value" source="value" + value: identifier "optional" source="optional" else: - block - stmt: return_expr "return" + block source="{ ⟨stmt⟩ }" + stmt: return_expr "return" source="return" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.output b/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.output index 2a0676513f23..07ae6d16afae 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.output +++ b/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.output @@ -2,6 +2,10 @@ if case let x = x + 10 { print(x) } +if case var y = y + 10 { + y += 1 +} + --- sourceFile @@ -57,35 +61,97 @@ sourceFile bindingSpecifier: let caseKeyword: case ifKeyword: if + codeBlockItem + item: + expressionStmt + expression: + ifExpr + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + infixOperatorExpr + operator: + binaryOperatorExpr + operator: binaryOperator "+=" + leftOperand: + declReferenceExpr + baseName: identifier "y" + rightOperand: + integerLiteralExpr + literal: integerLiteral "1" + conditions: + conditionElement + condition: + matchingPatternCondition + initializer: + initializerClause + equal: = + value: + infixOperatorExpr + operator: + binaryOperatorExpr + operator: binaryOperator "+" + leftOperand: + declReferenceExpr + baseName: identifier "y" + rightOperand: + integerLiteralExpr + literal: integerLiteral "10" + pattern: + valueBindingPattern + pattern: + identifierPattern + identifier: identifier "y" + bindingSpecifier: var + caseKeyword: case + ifKeyword: if --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n\n⟨stmt⟩" stmt: - if_expr + if_expr source="if ⟨condition⟩ ⟨then⟩" condition: - pattern_guard_expr + pattern_guard_expr source="case ⟨pattern⟩ = ⟨value⟩" pattern: - name_pattern - identifier: identifier "x" + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "x" source="x" value: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator "+" - right: int_literal "10" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "+" source="+" + right: int_literal "10" source="10" then: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "x" + argument source="⟨value⟩" + value: identifier "x" source="x" + if_expr source="if ⟨condition⟩ ⟨then⟩" + condition: + pattern_guard_expr source="case ⟨pattern⟩ = ⟨value⟩" + pattern: + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "var" source="var" + expr: identifier "y" source="y" + value: + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "y" source="y" + operator: infix_operator "+" source="+" + right: int_literal "10" source="10" + then: + block source="{\n ⟨stmt⟩\n}" + stmt: + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "y" source="y" + operator: infix_operator "+=" source="+=" + right: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.swift b/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.swift index c57c8ae5b67c..0939555e91ad 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.swift +++ b/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.swift @@ -1,3 +1,7 @@ if case let x = x + 10 { print(x) } + +if case var y = y + 10 { + y += 1 +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.output b/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.output index 35f1c2c46d2c..b6e3c1bcd939 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.output +++ b/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.output @@ -108,54 +108,44 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - if_expr + if_expr source="if ⟨condition⟩ ⟨then⟩ else ⟨else⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator ">" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator ">" source=">" + right: int_literal "0" source="0" then: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: int_literal "1" + argument source="⟨value⟩" + value: int_literal "1" source="1" else: - if_expr + if_expr source="if ⟨condition⟩ ⟨then⟩ else ⟨else⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator "<" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "<" source="<" + right: int_literal "0" source="0" then: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: int_literal "2" + argument source="⟨value⟩" + value: int_literal "2" source="2" else: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: int_literal "3" + argument source="⟨value⟩" + value: int_literal "3" source="3" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-else.output b/unified/extractor/tests/corpus/swift/control-flow/if-else.output index 744b5c51ab24..121d7e747e89 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/if-else.output +++ b/unified/extractor/tests/corpus/swift/control-flow/if-else.output @@ -73,42 +73,32 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - if_expr + if_expr source="if ⟨condition⟩ ⟨then⟩ else ⟨else⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator ">" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator ">" source=">" + right: int_literal "0" source="0" then: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "x" + argument source="⟨value⟩" + value: identifier "x" source="x" else: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument + argument source="⟨value⟩" value: - unary_expr - operand: - name_expr - identifier: identifier "x" - operator: prefix_operator "-" + unary_expr source="⟨operator⟩⟨operand⟩" + operand: identifier "x" source="x" + operator: prefix_operator "-" source="-" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.output b/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.output index d1bcf82b0faa..097e721e5d40 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.output +++ b/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.output @@ -49,38 +49,31 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - if_expr + if_expr source="if ⟨condition⟩ ⟨then⟩" condition: - pattern_guard_expr + pattern_guard_expr source="⟨pattern⟩ = ⟨value⟩" pattern: - constructor_pattern - constructor: - member_access_expr - base: - named_type_expr - name: identifier "Optional" - member: identifier "some" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "value" - value: - name_expr - identifier: identifier "optional" - then: - block - stmt: - call_expr + call_expr source="⟨argument⟩" callee: - name_expr - identifier: identifier "print" + member_access_expr source="" + base: identifier "Optional" source="" + member_name_node: identifier "some" source="" argument: - argument + argument source="⟨value⟩" value: - name_expr - identifier: identifier "value" + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "value" source="value" + value: identifier "optional" source="optional" + then: + block source="{\n ⟨stmt⟩\n}" + stmt: + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" + argument: + argument source="⟨value⟩" + value: identifier "value" source="value" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-statement.output b/unified/extractor/tests/corpus/swift/control-flow/if-statement.output index 77bba019ffb9..b5616ee887da 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/if-statement.output +++ b/unified/extractor/tests/corpus/swift/control-flow/if-statement.output @@ -48,27 +48,21 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - if_expr + if_expr source="if ⟨condition⟩ ⟨then⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator ">" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator ">" source=">" + right: int_literal "0" source="0" then: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "x" + argument source="⟨value⟩" + value: identifier "x" source="x" diff --git a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output index 66a6f32dab4d..ea814c00d53b 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output +++ b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.output @@ -3,6 +3,8 @@ case let .received(.some(value), timestamp): print(value, timestamp) case Type.some(let value): print(value) +case values?.map { $0 * 2 }: + break default: break } @@ -138,6 +140,53 @@ sourceFile calledExpression: declReferenceExpr baseName: identifier "print" + switchCase + label: + switchCaseLabel + colon: : + caseKeyword: case + caseItems: + switchCaseItem + pattern: + expressionPattern + expression: + functionCallExpr + arguments: + additionalTrailingClosures: + calledExpression: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "map" + base: + optionalChainingExpr + expression: + declReferenceExpr + baseName: identifier "values" + questionMark: ? + trailingClosure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + infixOperatorExpr + operator: + binaryOperatorExpr + operator: binaryOperator "*" + leftOperand: + declReferenceExpr + baseName: dollarIdentifier "$0" + rightOperand: + integerLiteralExpr + literal: integerLiteral "2" + statements: + codeBlockItem + item: + breakStmt + breakKeyword: break switchCase label: switchDefaultLabel @@ -155,82 +204,89 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - switch_expr - value: - name_expr - identifier: identifier "event" + switch_expr source="switch ⟨value⟩ {\n⟨case⟩\n⟨case⟩\n⟨case⟩\n⟨case⟩\n}" + value: identifier "event" source="event" case: - switch_case + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" pattern: - constructor_pattern - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "received" - element: - pattern_element - pattern: - constructor_pattern - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "some" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "value" - pattern_element - pattern: - name_pattern - identifier: identifier "timestamp" - body: - block - stmt: - call_expr + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: + call_expr source="⟨callee⟩(⟨argument⟩, ⟨argument⟩)" callee: - name_expr - identifier: identifier "print" + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "received" source="received" argument: - argument - value: - name_expr - identifier: identifier "value" - argument + argument source="⟨value⟩" value: - name_expr - identifier: identifier "timestamp" - switch_case + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "some" source="some" + argument: + argument source="⟨value⟩" + value: identifier "value" source="value" + argument source="⟨value⟩" + value: identifier "timestamp" source="timestamp" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩(⟨argument⟩, ⟨argument⟩)" + callee: identifier "print" source="print" + argument: + argument source="⟨value⟩" + value: identifier "value" source="value" + argument source="⟨value⟩" + value: identifier "timestamp" source="timestamp" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" pattern: - constructor_pattern - constructor: - member_access_expr - base: - name_expr - identifier: identifier "Type" - member: identifier "some" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "value" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "Type" source="Type" + member_name_node: identifier "some" source="some" + argument: + argument source="⟨value⟩" + value: + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "value" source="value" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "value" - switch_case + argument source="⟨value⟩" + value: identifier "value" source="value" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" + pattern: + call_expr source="⟨callee⟩ ⟨argument⟩" + callee: + member_access_expr source="⟨base⟩?.⟨member_name_node⟩" + base: identifier "values" source="values" + member_name_node: identifier "map" source="map" + argument: + argument source="⟨value⟩" + value: + function_expr source="{ ⟨body⟩ }" + body: + block source="⟨stmt⟩" + stmt: + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "$0" source="$0" + operator: infix_operator "*" source="*" + right: int_literal "2" source="2" + body: + block source="⟨stmt⟩" + stmt: break_expr "break" source="break" + switch_case source="default:\n ⟨body⟩" body: - block - stmt: break_expr "break" + block source="⟨stmt⟩" + stmt: break_expr "break" source="break" diff --git a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift index ed1a6b738a4b..be136fec4a6c 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift +++ b/unified/extractor/tests/corpus/swift/control-flow/nested-enum-case-pattern.swift @@ -3,6 +3,8 @@ case let .received(.some(value), timestamp): print(value, timestamp) case Type.some(let value): print(value) +case values?.map { $0 * 2 }: + break default: break } diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-case-item-where-clauses.output b/unified/extractor/tests/corpus/swift/control-flow/switch-case-item-where-clauses.output index 9d2041aa2ad1..ddd959679201 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/switch-case-item-where-clauses.output +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-case-item-where-clauses.output @@ -150,73 +150,62 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - switch_expr - value: - name_expr - identifier: identifier "n" + switch_expr source="switch ⟨value⟩ {\n⟨case⟩\n⟨case⟩\n⟨case⟩\n}" + value: identifier "n" source="n" case: - switch_case + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" pattern: - conditional_pattern + conditional_pattern source="⟨pattern⟩ where ⟨condition⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator ">" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator ">" source=">" + right: int_literal "0" source="0" pattern: - name_pattern - identifier: identifier "x" + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "x" source="x" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"positive\"" - switch_case + argument source="⟨value⟩" + value: string_literal "\"positive\"" source="\"positive\"" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" pattern: - or_pattern + or_pattern source="⟨pattern⟩, ⟨pattern⟩" pattern: - conditional_pattern + conditional_pattern source="⟨pattern⟩ where ⟨condition⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "y" - operator: infix_operator "<" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "y" source="y" + operator: infix_operator "<" source="<" + right: int_literal "0" source="0" pattern: - name_pattern - identifier: identifier "y" - expr_equality_pattern - expr: int_literal "0" + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "y" source="y" + int_literal "0" source="0" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"non-positive\"" - switch_case + argument source="⟨value⟩" + value: string_literal "\"non-positive\"" source="\"non-positive\"" + switch_case source="default:\n ⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"other\"" + argument source="⟨value⟩" + value: string_literal "\"other\"" source="\"other\"" diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-expression-pattern.output b/unified/extractor/tests/corpus/swift/control-flow/switch-expression-pattern.output new file mode 100644 index 000000000000..bd170eeb80a4 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-expression-pattern.output @@ -0,0 +1,399 @@ +// Arbitrary expressions may appear in pattern context. +switch subject { +case value, value + offset, -value, lower...upper, makeValue(), makeValue().member, + .inferred, (value, offset), [value], [key: value], optional?, try value, + value!, value as Target, value is Target, await value: + consume(value) +case condition ? value : fallback: + consume(fallback) +default: + break +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + expressionStmt + expression: + switchExpr + leftBrace: { + rightBrace: } + cases: + switchCase + label: + switchCaseLabel + colon: : + caseKeyword: case + caseItems: + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + declReferenceExpr + baseName: identifier "value" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + infixOperatorExpr + operator: + binaryOperatorExpr + operator: binaryOperator "+" + leftOperand: + declReferenceExpr + baseName: identifier "value" + rightOperand: + declReferenceExpr + baseName: identifier "offset" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + prefixOperatorExpr + expression: + declReferenceExpr + baseName: identifier "value" + operator: prefixOperator "-" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + infixOperatorExpr + operator: + binaryOperatorExpr + operator: binaryOperator "..." + leftOperand: + declReferenceExpr + baseName: identifier "lower" + rightOperand: + declReferenceExpr + baseName: identifier "upper" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "makeValue" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "member" + base: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "makeValue" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "inferred" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + tupleExpr + leftParen: ( + rightParen: ) + elements: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "value" + trailingComma: , + labeledExpr + expression: + declReferenceExpr + baseName: identifier "offset" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + arrayExpr + elements: + arrayElement + expression: + declReferenceExpr + baseName: identifier "value" + leftSquare: [ + rightSquare: ] + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + dictionaryExpr + leftSquare: [ + rightSquare: ] + content: + dictionaryElement + colon: : + value: + declReferenceExpr + baseName: identifier "value" + key: + declReferenceExpr + baseName: identifier "key" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + optionalChainingExpr + expression: + declReferenceExpr + baseName: identifier "optional" + questionMark: ? + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + tryExpr + expression: + declReferenceExpr + baseName: identifier "value" + tryKeyword: try + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + forceUnwrapExpr + expression: + declReferenceExpr + baseName: identifier "value" + exclamationMark: ! + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + asExpr + expression: + declReferenceExpr + baseName: identifier "value" + asKeyword: as + type: + identifierType + name: identifier "Target" + switchCaseItem + trailingComma: , + pattern: + expressionPattern + expression: + isExpr + expression: + declReferenceExpr + baseName: identifier "value" + type: + identifierType + name: identifier "Target" + isKeyword: is + switchCaseItem + pattern: + expressionPattern + expression: + awaitExpr + expression: + declReferenceExpr + baseName: identifier "value" + awaitKeyword: await + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "value" + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "consume" + switchCase + label: + switchCaseLabel + colon: : + caseKeyword: case + caseItems: + switchCaseItem + pattern: + expressionPattern + expression: + ternaryExpr + colon: : + condition: + declReferenceExpr + baseName: identifier "condition" + questionMark: ? + elseExpression: + declReferenceExpr + baseName: identifier "fallback" + thenExpression: + declReferenceExpr + baseName: identifier "value" + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "fallback" + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "consume" + switchCase + label: + switchDefaultLabel + colon: : + defaultKeyword: default + statements: + codeBlockItem + item: + breakStmt + breakKeyword: break + subject: + declReferenceExpr + baseName: identifier "subject" + switchKeyword: switch + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩" + stmt: + switch_expr source="switch ⟨value⟩ {\n⟨case⟩\n⟨case⟩\n⟨case⟩\n}" + value: identifier "subject" source="subject" + case: + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" + pattern: + or_pattern source="⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩,\n ⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩,\n ⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩, ⟨pattern⟩" + pattern: + identifier "value" source="value" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "value" source="value" + operator: infix_operator "+" source="+" + right: identifier "offset" source="offset" + unary_expr source="⟨operator⟩⟨operand⟩" + operand: identifier "value" source="value" + operator: prefix_operator "-" source="-" + binary_expr source="⟨left⟩⟨operator⟩⟨right⟩" + left: identifier "lower" source="lower" + operator: infix_operator "..." source="..." + right: identifier "upper" source="upper" + call_expr source="⟨callee⟩()" + callee: identifier "makeValue" source="makeValue" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: + call_expr source="⟨callee⟩()" + callee: identifier "makeValue" source="makeValue" + member_name_node: identifier "member" source="member" + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "inferred" source="inferred" + tuple_expr source="(⟨element⟩, ⟨element⟩)" + element: + argument source="⟨value⟩" + value: identifier "value" source="value" + argument source="⟨value⟩" + value: identifier "offset" source="offset" + array_literal source="[⟨element⟩]" + element: identifier "value" source="value" + map_literal source="[⟨element⟩]" + element: + key_value_pair source="⟨key⟩: ⟨value⟩" + key: identifier "key" source="key" + value: identifier "value" source="value" + call_expr source="⟨argument⟩?" + callee: + member_access_expr source="" + base: identifier "Optional" source="" + member_name_node: identifier "some" source="" + argument: + argument source="⟨value⟩" + value: identifier "optional" source="optional" + unary_expr source="⟨operator⟩ ⟨operand⟩" + operand: identifier "value" source="value" + operator: prefix_operator "try" source="try" + unary_expr source="⟨operand⟩⟨operator⟩" + operand: identifier "value" source="value" + operator: postfix_operator "!" source="!" + type_cast_expr source="⟨expr⟩ ⟨operator⟩ ⟨type⟩" + expr: identifier "value" source="value" + operator: infix_operator "as" source="as" + type: identifier "Target" source="Target" + type_test_expr source="⟨expr⟩ ⟨operator⟩ ⟨type⟩" + expr: identifier "value" source="value" + operator: infix_operator "is" source="is" + type: identifier "Target" source="Target" + unary_expr source="⟨operator⟩ ⟨operand⟩" + operand: identifier "value" source="value" + operator: prefix_operator "await" source="await" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "consume" source="consume" + argument: + argument source="⟨value⟩" + value: identifier "value" source="value" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" + pattern: + if_expr source="⟨condition⟩ ? ⟨then⟩ : ⟨else⟩" + condition: identifier "condition" source="condition" + then: identifier "value" source="value" + else: identifier "fallback" source="fallback" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "consume" source="consume" + argument: + argument source="⟨value⟩" + value: identifier "fallback" source="fallback" + switch_case source="default:\n ⟨body⟩" + body: + block source="⟨stmt⟩" + stmt: break_expr "break" source="break" diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-expression-pattern.swift b/unified/extractor/tests/corpus/swift/control-flow/switch-expression-pattern.swift new file mode 100644 index 000000000000..02efbe6e8177 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-expression-pattern.swift @@ -0,0 +1,11 @@ +// Arbitrary expressions may appear in pattern context. +switch subject { +case value, value + offset, -value, lower...upper, makeValue(), makeValue().member, + .inferred, (value, offset), [value], [key: value], optional?, try value, + value!, value as Target, value is Target, await value: + consume(value) +case condition ? value : fallback: + consume(fallback) +default: + break +} \ No newline at end of file diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-statement.output b/unified/extractor/tests/corpus/swift/control-flow/switch-statement.output index a88579852947..7ff90754ac7a 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/switch-statement.output +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-statement.output @@ -120,55 +120,43 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - switch_expr - value: - name_expr - identifier: identifier "x" + switch_expr source="switch ⟨value⟩ {\n⟨case⟩\n⟨case⟩\n⟨case⟩\n}" + value: identifier "x" source="x" case: - switch_case - pattern: - expr_equality_pattern - expr: int_literal "1" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" + pattern: int_literal "1" source="1" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"one\"" - switch_case + argument source="⟨value⟩" + value: string_literal "\"one\"" source="\"one\"" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" pattern: - or_pattern + or_pattern source="⟨pattern⟩, ⟨pattern⟩" pattern: - expr_equality_pattern - expr: int_literal "2" - expr_equality_pattern - expr: int_literal "3" + int_literal "2" source="2" + int_literal "3" source="3" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"two or three\"" - switch_case + argument source="⟨value⟩" + value: string_literal "\"two or three\"" source="\"two or three\"" + switch_case source="default:\n ⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"other\"" + argument source="⟨value⟩" + value: string_literal "\"other\"" source="\"other\"" diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.output b/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.output index 90bb6b44e6e5..9d417531b74e 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.output +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.output @@ -115,60 +115,52 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - switch_expr - value: - name_expr - identifier: identifier "shape" + switch_expr source="switch ⟨value⟩ {\n⟨case⟩\n⟨case⟩\n}" + value: identifier "shape" source="shape" case: - switch_case + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" pattern: - constructor_pattern - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "circle" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "r" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "circle" source="circle" + argument: + argument source="⟨value⟩" + value: + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "r" source="r" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "r" - switch_case + argument source="⟨value⟩" + value: identifier "r" source="r" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" pattern: - constructor_pattern - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "square" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "s" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "square" source="square" + argument: + argument source="⟨value⟩" + value: + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "s" source="s" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "s" + argument source="⟨value⟩" + value: identifier "s" source="s" diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.output b/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.output index 20b17d160e44..623d44545d37 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.output +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.output @@ -123,62 +123,53 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - switch_expr - value: - name_expr - identifier: identifier "x" + switch_expr source="switch ⟨value⟩ {\n⟨case⟩\n⟨case⟩\n}" + value: identifier "x" source="x" case: - switch_case + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" pattern: - constructor_pattern - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "implicit" - element: - pattern_element - key: identifier "isAcknowledged" - pattern: - expr_equality_pattern - expr: boolean_literal "false" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "implicit" source="implicit" + argument: + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "isAcknowledged" source="isAcknowledged" + value: boolean_literal "false" source="false" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"yes\"" - switch_case + argument source="⟨value⟩" + value: string_literal "\"yes\"" source="\"yes\"" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" pattern: - constructor_pattern - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "thread" - element: - pattern_element - key: identifier "threadRowId" - pattern: ignore_pattern "_" - pattern_element - pattern: - name_pattern - identifier: identifier "rowId" + call_expr source="⟨callee⟩(⟨argument⟩, ⟨argument⟩)" + callee: + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "thread" source="thread" + argument: + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "threadRowId" source="threadRowId" + value: ignore_pattern "_" source="_" + argument source="⟨value⟩" + value: + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "rowId" source="rowId" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "rowId" + argument source="⟨value⟩" + value: identifier "rowId" source="rowId" diff --git a/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output b/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output index 88c7bc1b886c..e864a67ea560 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output +++ b/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output @@ -46,26 +46,22 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "y" source="y" value: - if_expr + if_expr source="⟨condition⟩ ? ⟨then⟩ : ⟨else⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator ">" - right: int_literal "0" - then: int_literal "1" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator ">" source=">" + right: int_literal "0" source="0" + then: int_literal "1" source="1" else: - unary_expr - operand: int_literal "1" - operator: prefix_operator "-" + unary_expr source="⟨operator⟩⟨operand⟩" + operand: int_literal "1" source="1" + operator: prefix_operator "-" source="-" diff --git a/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.output b/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.output index 30d9570f3bee..3ee44dd60a05 100644 --- a/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.output +++ b/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.output @@ -20,11 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: int_literal "1" - operator: infix_operator "+" - right: int_literal "2" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: int_literal "1" source="1" + operator: infix_operator "+" source="+" + right: int_literal "2" source="2" diff --git a/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.output b/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.output index 982309ffa5af..e655642a6640 100644 --- a/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.output +++ b/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.output @@ -20,15 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "foo" - operator: infix_operator "+" - right: - name_expr - identifier: identifier "bar" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "foo" source="foo" + operator: infix_operator "+" source="+" + right: identifier "bar" source="bar" diff --git a/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output b/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output index ed16e68e219d..a35890d96301 100644 --- a/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output +++ b/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output @@ -23,21 +23,19 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - import_declaration + import_declaration source="⟨pattern⟩⟨imported_expr⟩" imported_expr: - member_access_expr + member_access_expr source="⟨base⟩.⟨member_name_node⟩" base: - member_access_expr - base: - name_expr - identifier: identifier "Foundation" - member: identifier "Networking" - member: identifier "URLSession" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "Foundation" source="Foundation" + member_name_node: identifier "Networking" source="Networking" + member_name_node: identifier "URLSession" source="URLSession" pattern: - name_pattern - identifier: identifier "URLSession" - sub_pattern: bulk_importing_pattern "import Foundation.Networking.URLSession" + named_pattern source="⟨sub_pattern⟩⟨name_node⟩" + name_node: identifier "URLSession" source="URLSession" + sub_pattern: bulk_importing_pattern "import Foundation.Networking.URLSession" source="import Foundation.Networking.URLSession" diff --git a/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output b/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output index 88f08baa19ce..3f069a347481 100644 --- a/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output +++ b/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output @@ -20,18 +20,16 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - import_declaration + import_declaration source="⟨pattern⟩⟨imported_expr⟩" imported_expr: - member_access_expr - base: - name_expr - identifier: identifier "Foundation" - member: identifier "Networking" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "Foundation" source="Foundation" + member_name_node: identifier "Networking" source="Networking" pattern: - name_pattern - identifier: identifier "Networking" - sub_pattern: bulk_importing_pattern "import Foundation.Networking" + named_pattern source="⟨sub_pattern⟩⟨name_node⟩" + name_node: identifier "Networking" source="Networking" + sub_pattern: bulk_importing_pattern "import Foundation.Networking" source="import Foundation.Networking" diff --git a/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.output b/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.output index 93319c522981..cd7415127b7e 100644 --- a/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.output +++ b/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.output @@ -21,18 +21,14 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - import_declaration - modifier: modifier "struct" + import_declaration source="import ⟨modifier⟩ ⟨imported_expr⟩⟨pattern⟩" + modifier: modifier "struct" source="struct" imported_expr: - member_access_expr - base: - name_expr - identifier: identifier "Foundation" - member: identifier "Date" - pattern: - name_pattern - identifier: identifier "Date" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "Foundation" source="Foundation" + member_name_node: identifier "Date" source="Date" + pattern: identifier "Date" source="Date" diff --git a/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output b/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output index 31261cd952c3..d52673da8dda 100644 --- a/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output +++ b/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output @@ -17,15 +17,13 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - import_declaration - imported_expr: - name_expr - identifier: identifier "Foundation" + import_declaration source="⟨pattern⟩⟨imported_expr⟩" + imported_expr: identifier "Foundation" source="Foundation" pattern: - name_pattern - identifier: identifier "Foundation" - sub_pattern: bulk_importing_pattern "import Foundation" + named_pattern source="⟨sub_pattern⟩⟨name_node⟩" + name_node: identifier "Foundation" source="Foundation" + sub_pattern: bulk_importing_pattern "import Foundation" source="import Foundation" diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output index 43f1c8a553da..28c66609b41b 100644 --- a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output @@ -1,6 +1,8 @@ let values = [Result]() let initialized = [Result](unsafeUninitializedCapacity: 1) { _, count in count = 0 +} completion: { + done() } --- @@ -71,6 +73,24 @@ sourceFile integerLiteralExpr literal: integerLiteral "1" additionalTrailingClosures: + multipleTrailingClosureElement + colon: : + label: identifier "completion" + closure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "done" calledExpression: arrayExpr elements: @@ -124,71 +144,59 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "values" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "values" source="values" value: - call_expr + call_expr source="⟨callee⟩()" callee: - generic_type_expr - base: - named_type_expr - name: identifier "Array" + generic_type_expr source="[⟨type_argument⟩]" + base: identifier "Array" source="" type_argument: - generic_type_expr - base: - named_type_expr - name: identifier "Result" - type_argument: - named_type_expr - name: identifier "Void" - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "initialized" + generic_type_expr source="⟨base⟩<⟨type_argument⟩>" + base: identifier "Result" source="Result" + type_argument: identifier "Void" source="Void" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "initialized" source="initialized" value: - call_expr + call_expr source="⟨callee⟩(⟨argument⟩) ⟨argument⟩ ⟨argument⟩" callee: - generic_type_expr - base: - named_type_expr - name: identifier "Array" + generic_type_expr source="[⟨type_argument⟩]" + base: identifier "Array" source="" type_argument: - generic_type_expr - base: - named_type_expr - name: identifier "Result" - type_argument: - named_type_expr - name: identifier "Void" + generic_type_expr source="⟨base⟩<⟨type_argument⟩>" + base: identifier "Result" source="Result" + type_argument: identifier "Void" source="Void" argument: - argument - name: identifier "unsafeUninitializedCapacity" - value: int_literal "1" - argument + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "unsafeUninitializedCapacity" source="unsafeUninitializedCapacity" + value: int_literal "1" source="1" + argument source="⟨value⟩" value: - function_expr + function_expr source="{ ⟨parameter⟩, ⟨parameter⟩ in\n\t⟨body⟩\n}" parameter: - parameter - pattern: - name_pattern - identifier: identifier "_" - parameter - pattern: - name_pattern - identifier: identifier "count" + parameter source="⟨pattern⟩" + pattern: identifier "_" source="_" + parameter source="⟨pattern⟩" + pattern: identifier "count" source="count" + body: + block source="⟨stmt⟩" + stmt: + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "count" source="count" + operator: infix_operator "=" source="=" + right: int_literal "0" source="0" + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "completion" source="completion" + value: + function_expr source="{\n\t⟨body⟩\n}" body: - block + block source="⟨stmt⟩" stmt: - assign_expr - target: - name_expr - identifier: identifier "count" - value: int_literal "0" + call_expr source="⟨callee⟩()" + callee: identifier "done" source="done" diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift index bd25a9cbb4ce..a4dce57c797e 100644 --- a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.swift @@ -1,4 +1,6 @@ let values = [Result]() let initialized = [Result](unsafeUninitializedCapacity: 1) { _, count in count = 0 +} completion: { + done() } diff --git a/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output b/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output index f06917190b3a..8d0f690b12c6 100644 --- a/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output @@ -48,28 +48,20 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "type" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "type" source="type" value: - member_access_expr + member_access_expr source="⟨base⟩.⟨member_name_node⟩" base: - generic_type_expr - base: - named_type_expr - name: identifier "Array" + generic_type_expr source="[⟨type_argument⟩]" + base: identifier "Array" source="" type_argument: - generic_type_expr - base: - named_type_expr - name: identifier "Result" - type_argument: - named_type_expr - name: identifier "Void" - member: identifier "self" + generic_type_expr source="⟨base⟩<⟨type_argument⟩>" + base: identifier "Result" source="Result" + type_argument: identifier "Void" source="Void" + member_name_node: identifier "self" source="self" diff --git a/unified/extractor/tests/corpus/swift/expressions/consume-expression.output b/unified/extractor/tests/corpus/swift/expressions/consume-expression.output index f20f89b72558..3b9f369f8ad9 100644 --- a/unified/extractor/tests/corpus/swift/expressions/consume-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/consume-expression.output @@ -62,24 +62,20 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "original" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "original" source="original" value: - array_literal + array_literal source="[⟨element⟩, ⟨element⟩, ⟨element⟩]" element: - int_literal "1" - int_literal "2" - int_literal "3" - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "consumed" - value: unsupported_node "consume original" + int_literal "1" source="1" + int_literal "2" source="2" + int_literal "3" source="3" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "consumed" source="consumed" + value: unsupported_node "consume original" source="consume original" diff --git a/unified/extractor/tests/corpus/swift/expressions/copy-expression.output b/unified/extractor/tests/corpus/swift/expressions/copy-expression.output index 9f065b046a90..523e8c9dddec 100644 --- a/unified/extractor/tests/corpus/swift/expressions/copy-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/copy-expression.output @@ -62,24 +62,20 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "original" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "original" source="original" value: - array_literal + array_literal source="[⟨element⟩, ⟨element⟩, ⟨element⟩]" element: - int_literal "1" - int_literal "2" - int_literal "3" - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "copied" - value: unsupported_node "copy original" + int_literal "1" source="1" + int_literal "2" source="2" + int_literal "3" source="3" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "copied" source="copied" + value: unsupported_node "copy original" source="copy original" diff --git a/unified/extractor/tests/corpus/swift/expressions/freestanding-macro-expansions.output b/unified/extractor/tests/corpus/swift/expressions/freestanding-macro-expansions.output new file mode 100644 index 000000000000..80ca79bd0e55 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/freestanding-macro-expansions.output @@ -0,0 +1,164 @@ +#expect(value == 42) + +#custom(value) { + value +} completion: { + value +} + +#Preview { + let previewValue = 42 + previewValue +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + macroExpansionExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + infixOperatorExpr + operator: + binaryOperatorExpr + operator: binaryOperator "==" + leftOperand: + declReferenceExpr + baseName: identifier "value" + rightOperand: + integerLiteralExpr + literal: integerLiteral "42" + additionalTrailingClosures: + macroName: identifier "expect" + pound: # + codeBlockItem + item: + macroExpansionExpr + leftParen: ( + rightParen: ) + arguments: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "value" + additionalTrailingClosures: + multipleTrailingClosureElement + colon: : + label: identifier "completion" + closure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + declReferenceExpr + baseName: identifier "value" + trailingClosure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + declReferenceExpr + baseName: identifier "value" + genericArgumentClause: + genericArgumentClause + arguments: + genericArgument + argument: + identifierType + name: identifier "Int" + leftAngle: < + rightAngle: > + macroName: identifier "custom" + pound: # + codeBlockItem + item: + macroExpansionExpr + arguments: + additionalTrailingClosures: + trailingClosure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + variableDecl + attributes: + modifiers: + bindingSpecifier: let + bindings: + patternBinding + initializer: + initializerClause + equal: = + value: + integerLiteralExpr + literal: integerLiteral "42" + pattern: + identifierPattern + identifier: identifier "previewValue" + codeBlockItem + item: + declReferenceExpr + baseName: identifier "previewValue" + macroName: identifier "Preview" + pound: # + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩\n\n⟨stmt⟩\n\n⟨stmt⟩" + stmt: + macro_call_expr source="#⟨macro_name_node⟩(⟨argument⟩)" + macro_name_node: identifier "expect" source="expect" + argument: + argument source="⟨value⟩" + value: + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "value" source="value" + operator: infix_operator "==" source="==" + right: int_literal "42" source="42" + macro_call_expr source="#⟨macro_name_node⟩<⟨type_argument⟩>(⟨argument⟩) ⟨argument⟩ ⟨argument⟩" + macro_name_node: identifier "custom" source="custom" + type_argument: identifier "Int" source="Int" + argument: + argument source="⟨value⟩" + value: identifier "value" source="value" + argument source="⟨value⟩" + value: + function_expr source="{\n ⟨body⟩\n}" + body: + block source="⟨stmt⟩" + stmt: identifier "value" source="value" + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "completion" source="completion" + value: + function_expr source="{\n ⟨body⟩\n}" + body: + block source="⟨stmt⟩" + stmt: identifier "value" source="value" + macro_call_expr source="#⟨macro_name_node⟩ ⟨argument⟩" + macro_name_node: identifier "Preview" source="Preview" + argument: + argument source="⟨value⟩" + value: + function_expr source="{\n ⟨body⟩\n}" + body: + block source="⟨stmt⟩\n ⟨stmt⟩" + stmt: + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "previewValue" source="previewValue" + value: int_literal "42" source="42" + identifier "previewValue" source="previewValue" diff --git a/unified/extractor/tests/corpus/swift/expressions/freestanding-macro-expansions.swift b/unified/extractor/tests/corpus/swift/expressions/freestanding-macro-expansions.swift new file mode 100644 index 000000000000..9257c28ae3b2 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/freestanding-macro-expansions.swift @@ -0,0 +1,12 @@ +#expect(value == 42) + +#custom(value) { + value +} completion: { + value +} + +#Preview { + let previewValue = 42 + previewValue +} diff --git a/unified/extractor/tests/corpus/swift/expressions/generic-specialization-expression.output b/unified/extractor/tests/corpus/swift/expressions/generic-specialization-expression.output index 94cdf978b9d2..f952f5a44509 100644 --- a/unified/extractor/tests/corpus/swift/expressions/generic-specialization-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/generic-specialization-expression.output @@ -42,22 +42,16 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "numbers" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "numbers" source="numbers" value: - call_expr + call_expr source="⟨callee⟩()" callee: - generic_type_expr - base: - named_type_expr - name: identifier "Array" - type_argument: - named_type_expr - name: identifier "Int" + generic_type_expr source="⟨base⟩<⟨type_argument⟩>" + base: identifier "Array" source="Array" + type_argument: identifier "Int" source="Int" diff --git a/unified/extractor/tests/corpus/swift/expressions/key-path-expression.output b/unified/extractor/tests/corpus/swift/expressions/key-path-expression.output index a803e9e594fd..95a2a440847f 100644 --- a/unified/extractor/tests/corpus/swift/expressions/key-path-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/key-path-expression.output @@ -36,13 +36,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "keyPath" - value: unsupported_node "\\String.count" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "keyPath" source="keyPath" + value: unsupported_node "\\String.count" source="\\String.count" diff --git a/unified/extractor/tests/corpus/swift/expressions/subscript-call.output b/unified/extractor/tests/corpus/swift/expressions/subscript-call.output new file mode 100644 index 000000000000..138caa29eb62 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/subscript-call.output @@ -0,0 +1,137 @@ +handlers[0] + +handlers[0] { + first() +} completion: { + second() +} failure: { + third() +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + subscriptCallExpr + leftSquare: [ + rightSquare: ] + arguments: + labeledExpr + expression: + integerLiteralExpr + literal: integerLiteral "0" + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "handlers" + codeBlockItem + item: + subscriptCallExpr + leftSquare: [ + rightSquare: ] + arguments: + labeledExpr + expression: + integerLiteralExpr + literal: integerLiteral "0" + additionalTrailingClosures: + multipleTrailingClosureElement + colon: : + label: identifier "completion" + closure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "second" + multipleTrailingClosureElement + colon: : + label: identifier "failure" + closure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "third" + calledExpression: + declReferenceExpr + baseName: identifier "handlers" + trailingClosure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "first" + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩\n\n⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩[⟨argument⟩]" + callee: identifier "handlers" source="handlers" + argument: + argument source="⟨value⟩" + value: int_literal "0" source="0" + call_expr source="⟨callee⟩[⟨argument⟩] ⟨argument⟩ ⟨argument⟩ ⟨argument⟩" + callee: identifier "handlers" source="handlers" + argument: + argument source="⟨value⟩" + value: int_literal "0" source="0" + argument source="⟨value⟩" + value: + function_expr source="{\n ⟨body⟩\n}" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩()" + callee: identifier "first" source="first" + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "completion" source="completion" + value: + function_expr source="{\n ⟨body⟩\n}" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩()" + callee: identifier "second" source="second" + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "failure" source="failure" + value: + function_expr source="{\n ⟨body⟩\n}" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩()" + callee: identifier "third" source="third" diff --git a/unified/extractor/tests/corpus/swift/expressions/subscript-call.swift b/unified/extractor/tests/corpus/swift/expressions/subscript-call.swift new file mode 100644 index 000000000000..a0e4b51700bd --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/subscript-call.swift @@ -0,0 +1,9 @@ +handlers[0] + +handlers[0] { + first() +} completion: { + second() +} failure: { + third() +} diff --git a/unified/extractor/tests/corpus/swift/expressions/super-expression.output b/unified/extractor/tests/corpus/swift/expressions/super-expression.output new file mode 100644 index 000000000000..96665cae06c5 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/super-expression.output @@ -0,0 +1,192 @@ +class Base { + var value = 0 + + func update() {} +} + +class Derived: Base { + override func update() { + _ = super.value + super.update() + } +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + classDecl + attributes: + name: identifier "Base" + memberBlock: + memberBlock + leftBrace: { + rightBrace: } + members: + memberBlockItem + decl: + variableDecl + attributes: + modifiers: + bindingSpecifier: var + bindings: + patternBinding + initializer: + initializerClause + equal: = + value: + integerLiteralExpr + literal: integerLiteral "0" + pattern: + identifierPattern + identifier: identifier "value" + memberBlockItem + decl: + functionDecl + attributes: + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + name: identifier "update" + modifiers: + signature: + functionSignature + parameterClause: + functionParameterClause + leftParen: ( + rightParen: ) + parameters: + funcKeyword: func + modifiers: + classKeyword: class + codeBlockItem + item: + classDecl + attributes: + name: identifier "Derived" + inheritanceClause: + inheritanceClause + colon: : + inheritedTypes: + inheritedType + type: + identifierType + name: identifier "Base" + memberBlock: + memberBlock + leftBrace: { + rightBrace: } + members: + memberBlockItem + decl: + functionDecl + attributes: + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + infixOperatorExpr + operator: + assignmentExpr + equal: = + leftOperand: + discardAssignmentExpr + wildcard: _ + rightOperand: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "value" + base: + superExpr + superKeyword: super + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + memberAccessExpr + period: . + declName: + declReferenceExpr + baseName: identifier "update" + base: + superExpr + superKeyword: super + name: identifier "update" + modifiers: + declModifier + name: override + signature: + functionSignature + parameterClause: + functionParameterClause + leftParen: ( + rightParen: ) + parameters: + funcKeyword: func + modifiers: + classKeyword: class + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩\n\n⟨stmt⟩" + stmt: + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "Base" source="Base" + member: + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "var" source="var" + pattern: identifier "value" source="value" + value: int_literal "0" source="0" + function_declaration source="func ⟨name_node⟩() ⟨body⟩" + name_node: identifier "update" source="update" + body: block "{}" source="{}" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩: ⟨base_type⟩ {\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "Derived" source="Derived" + base_type: + base_type source="⟨type⟩" + type: identifier "Base" source="Base" + member: + function_declaration source="⟨modifier⟩ func ⟨name_node⟩() ⟨body⟩" + modifier: modifier "override" source="override" + name_node: identifier "update" source="update" + body: + block source="{\n ⟨stmt⟩\n ⟨stmt⟩\n }" + stmt: + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: ignore_pattern "_" source="_" + operator: infix_operator "=" source="=" + right: + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: super_expr "super" source="super" + member_name_node: identifier "value" source="value" + call_expr source="⟨callee⟩()" + callee: + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: super_expr "super" source="super" + member_name_node: identifier "update" source="update" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/expressions/super-expression.swift b/unified/extractor/tests/corpus/swift/expressions/super-expression.swift new file mode 100644 index 000000000000..6d1c37a70d55 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/expressions/super-expression.swift @@ -0,0 +1,12 @@ +class Base { + var value = 0 + + func update() {} +} + +class Derived: Base { + override func update() { + _ = super.value + super.update() + } +} diff --git a/unified/extractor/tests/corpus/swift/expressions/unsafe-expression.output b/unified/extractor/tests/corpus/swift/expressions/unsafe-expression.output index 2bdc964ddeaa..427b4503f8ad 100644 --- a/unified/extractor/tests/corpus/swift/expressions/unsafe-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/unsafe-expression.output @@ -41,11 +41,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩" stmt: - function_declaration - name: identifier "doWork" - body: block "func doWork() {}" - unsupported_node "unsafe doWork()" + function_declaration source="func ⟨name_node⟩() ⟨body⟩" + name_node: identifier "doWork" source="doWork" + body: block "{}" source="{}" + unsupported_node "unsafe doWork()" source="unsafe doWork()" diff --git a/unified/extractor/tests/corpus/swift/functions/call-with-inout-argument.output b/unified/extractor/tests/corpus/swift/functions/call-with-inout-argument.output index 3dae9884c81e..380eb27b2ada 100644 --- a/unified/extractor/tests/corpus/swift/functions/call-with-inout-argument.output +++ b/unified/extractor/tests/corpus/swift/functions/call-with-inout-argument.output @@ -69,28 +69,28 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩\n⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "a" - value: int_literal "1" - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "b" - value: int_literal "2" - call_expr - callee: - name_expr - identifier: identifier "swap" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "var" source="var" + pattern: identifier "a" source="a" + value: int_literal "1" source="1" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "var" source="var" + pattern: identifier "b" source="b" + value: int_literal "2" source="2" + call_expr source="⟨callee⟩(⟨argument⟩, ⟨argument⟩)" + callee: identifier "swap" source="swap" argument: - argument - value: unsupported_node "&a" - argument - value: unsupported_node "&b" + argument source="⟨value⟩" + value: + unary_expr source="⟨operator⟩⟨operand⟩" + operand: identifier "a" source="a" + operator: prefix_operator "&" source="&" + argument source="⟨value⟩" + value: + unary_expr source="⟨operator⟩⟨operand⟩" + operand: identifier "b" source="b" + operator: prefix_operator "&" source="&" diff --git a/unified/extractor/tests/corpus/swift/functions/constructor-call-with-type-arguments.output b/unified/extractor/tests/corpus/swift/functions/constructor-call-with-type-arguments.output index 37afdfa0d639..d7d24c5c8746 100644 --- a/unified/extractor/tests/corpus/swift/functions/constructor-call-with-type-arguments.output +++ b/unified/extractor/tests/corpus/swift/functions/constructor-call-with-type-arguments.output @@ -76,31 +76,35 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩\n⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Foo" - class_like_declaration - modifier: modifier "class" - name: identifier "C" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {}" + modifier: modifier "class" source="class" + name_node: identifier "Foo" source="Foo" + member: + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩<⟨type_parameter⟩> {}" + modifier: modifier "class" source="class" + name_node: identifier "C" source="C" type_parameter: - type_parameter - name: identifier "T" - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + type_parameter source="⟨name_node⟩" + name_node: identifier "T" source="T" + member: + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "x" source="x" value: - call_expr + call_expr source="⟨callee⟩()" callee: - generic_type_expr - base: - named_type_expr - name: identifier "C" - type_argument: - named_type_expr - name: identifier "Foo" + generic_type_expr source="⟨base⟩<⟨type_argument⟩>" + base: identifier "C" source="C" + type_argument: identifier "Foo" source="Foo" diff --git a/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.output b/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.output index f885d5762f2d..48de52d425d8 100644 --- a/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.output +++ b/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.output @@ -28,15 +28,13 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "greet" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "greet" source="greet" argument: - argument - name: identifier "person" - value: string_literal "\"Bob\"" + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "person" source="person" + value: string_literal "\"Bob\"" source="\"Bob\"" diff --git a/unified/extractor/tests/corpus/swift/functions/function-call.output b/unified/extractor/tests/corpus/swift/functions/function-call.output index a1e2859ccd6a..79fc9e7f52e5 100644 --- a/unified/extractor/tests/corpus/swift/functions/function-call.output +++ b/unified/extractor/tests/corpus/swift/functions/function-call.output @@ -1,5 +1,13 @@ foo(1, 2) +handle { + first() +} completion: { + second() +} failure: { + third() +} + --- sourceFile @@ -24,19 +32,105 @@ sourceFile calledExpression: declReferenceExpr baseName: identifier "foo" + codeBlockItem + item: + functionCallExpr + arguments: + additionalTrailingClosures: + multipleTrailingClosureElement + colon: : + label: identifier "completion" + closure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "second" + multipleTrailingClosureElement + colon: : + label: identifier "failure" + closure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "third" + calledExpression: + declReferenceExpr + baseName: identifier "handle" + trailingClosure: + closureExpr + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + functionCallExpr + leftParen: ( + rightParen: ) + arguments: + additionalTrailingClosures: + calledExpression: + declReferenceExpr + baseName: identifier "first" --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n\n⟨stmt⟩" stmt: - call_expr - callee: - name_expr - identifier: identifier "foo" + call_expr source="⟨callee⟩(⟨argument⟩, ⟨argument⟩)" + callee: identifier "foo" source="foo" + argument: + argument source="⟨value⟩" + value: int_literal "1" source="1" + argument source="⟨value⟩" + value: int_literal "2" source="2" + call_expr source="⟨callee⟩ ⟨argument⟩ ⟨argument⟩ ⟨argument⟩" + callee: identifier "handle" source="handle" argument: - argument - value: int_literal "1" - argument - value: int_literal "2" + argument source="⟨value⟩" + value: + function_expr source="{\n ⟨body⟩\n}" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩()" + callee: identifier "first" source="first" + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "completion" source="completion" + value: + function_expr source="{\n ⟨body⟩\n}" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩()" + callee: identifier "second" source="second" + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "failure" source="failure" + value: + function_expr source="{\n ⟨body⟩\n}" + body: + block source="⟨stmt⟩" + stmt: + call_expr source="⟨callee⟩()" + callee: identifier "third" source="third" diff --git a/unified/extractor/tests/corpus/swift/functions/function-call.swift b/unified/extractor/tests/corpus/swift/functions/function-call.swift index 22594bf8c7da..d3fc9dd70c9c 100644 --- a/unified/extractor/tests/corpus/swift/functions/function-call.swift +++ b/unified/extractor/tests/corpus/swift/functions/function-call.swift @@ -1 +1,9 @@ foo(1, 2) + +handle { + first() +} completion: { + second() +} failure: { + third() +} diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.output b/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.output index 3495a13106fb..76455bed5f27 100644 --- a/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.output +++ b/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.output @@ -61,30 +61,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "greet" + function_declaration source="func ⟨name_node⟩(⟨parameter⟩) ⟨body⟩" + name_node: identifier "greet" source="greet" parameter: - parameter - type: - named_type_expr - name: identifier "String" - pattern: - name_pattern - identifier: identifier "name" - default: string_literal "\"world\"" + parameter source="⟨external_name_node⟩⟨pattern⟩: ⟨type⟩ = ⟨default⟩" + external_name_node: identifier "name" source="name" + type: identifier "String" source="String" + pattern: identifier "name" source="name" + default: string_literal "\"world\"" source="\"world\"" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "name" + argument source="⟨value⟩" + value: identifier "name" source="name" diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-inout-parameter.output b/unified/extractor/tests/corpus/swift/functions/function-with-inout-parameter.output index 232fb6dc2dbc..2cb14ccacbb2 100644 --- a/unified/extractor/tests/corpus/swift/functions/function-with-inout-parameter.output +++ b/unified/extractor/tests/corpus/swift/functions/function-with-inout-parameter.output @@ -57,25 +57,21 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "increment" + function_declaration source="func ⟨name_node⟩(⟨parameter⟩) ⟨body⟩" + name_node: identifier "increment" source="increment" parameter: - parameter - external_name: identifier "_" - type: unsupported_node "inout Int" - pattern: - name_pattern - identifier: identifier "x" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: unsupported_node "inout Int" source="inout Int" + pattern: identifier "x" source="x" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - compound_assign_expr - target: - name_expr - identifier: identifier "x" - operator: infix_operator "+=" - value: int_literal "1" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "+=" source="+=" + right: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.output b/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.output index 7488edbcb231..878581f34212 100644 --- a/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.output +++ b/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.output @@ -52,30 +52,22 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "greet" + function_declaration source="func ⟨name_node⟩(⟨parameter⟩) ⟨body⟩" + name_node: identifier "greet" source="greet" parameter: - parameter - external_name: identifier "person" - type: - named_type_expr - name: identifier "String" - pattern: - name_pattern - identifier: identifier "name" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "person" source="person" + type: identifier "String" source="String" + pattern: identifier "name" source="name" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "name" + argument source="⟨value⟩" + value: identifier "name" source="name" diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.output b/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.output index 4ddc26ae94d6..738cba0116ac 100644 --- a/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.output +++ b/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.output @@ -47,19 +47,17 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "greet" + function_declaration source="func ⟨name_node⟩() ⟨body⟩" + name_node: identifier "greet" source="greet" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"hello\"" + argument source="⟨value⟩" + value: string_literal "\"hello\"" source="\"hello\"" diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.output b/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.output index e69b19307674..1a5eb6bddd7c 100644 --- a/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.output +++ b/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.output @@ -69,42 +69,28 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "add" + function_declaration source="func ⟨name_node⟩(⟨parameter⟩, ⟨parameter⟩) -> ⟨return_type⟩ ⟨body⟩" + name_node: identifier "add" source="add" parameter: - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "a" - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "b" - return_type: - named_type_expr - name: identifier "Int" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "a" source="a" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "b" source="b" + return_type: identifier "Int" source="Int" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - return_expr + return_expr source="return ⟨value⟩" value: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "+" - right: - name_expr - identifier: identifier "b" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "+" source="+" + right: identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/functions/generic-function.output b/unified/extractor/tests/corpus/swift/functions/generic-function.output index dc7831410e23..5c70307c6323 100644 --- a/unified/extractor/tests/corpus/swift/functions/generic-function.output +++ b/unified/extractor/tests/corpus/swift/functions/generic-function.output @@ -59,31 +59,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "identity" + function_declaration source="func ⟨name_node⟩<⟨type_parameter⟩>(⟨parameter⟩) -> ⟨return_type⟩ ⟨body⟩" + name_node: identifier "identity" source="identity" type_parameter: - type_parameter - name: identifier "T" + type_parameter source="⟨name_node⟩" + name_node: identifier "T" source="T" parameter: - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "T" - pattern: - name_pattern - identifier: identifier "x" - return_type: - named_type_expr - name: identifier "T" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "T" source="T" + pattern: identifier "x" source="x" + return_type: identifier "T" source="T" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - return_expr - value: - name_expr - identifier: identifier "x" + return_expr source="return ⟨value⟩" + value: identifier "x" source="x" diff --git a/unified/extractor/tests/corpus/swift/functions/generic-type-alias.output b/unified/extractor/tests/corpus/swift/functions/generic-type-alias.output index 36737bd95bda..4a7bb5d7b787 100644 --- a/unified/extractor/tests/corpus/swift/functions/generic-type-alias.output +++ b/unified/extractor/tests/corpus/swift/functions/generic-type-alias.output @@ -51,27 +51,21 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - type_alias_declaration - name: identifier "Box" + type_alias_declaration source="typealias ⟨name_node⟩<⟨type_parameter⟩, ⟨type_parameter⟩> = ⟨type⟩" + name_node: identifier "Box" source="Box" type_parameter: - type_parameter - name: identifier "T" - bound: - named_type_expr - name: identifier "Equatable" - type_parameter - name: identifier "U" + type_parameter source="⟨name_node⟩: ⟨bound⟩" + name_node: identifier "T" source="T" + bound: identifier "Equatable" source="Equatable" + type_parameter source="⟨name_node⟩" + name_node: identifier "U" source="U" type: - generic_type_expr - base: - named_type_expr - name: identifier "Dictionary" + generic_type_expr source="⟨base⟩<⟨type_argument⟩, ⟨type_argument⟩>" + base: identifier "Dictionary" source="Dictionary" type_argument: - named_type_expr - name: identifier "T" - named_type_expr - name: identifier "U" + identifier "T" source="T" + identifier "U" source="U" diff --git a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output index a5b38e1e2bea..3335f2ba054b 100644 --- a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output +++ b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output @@ -38,21 +38,19 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "y" source="y" value: - call_expr + call_expr source="⟨callee⟩(⟨argument⟩)" callee: - member_access_expr - base: inferred_type_expr "." - member: identifier "some" + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "some" source="some" argument: - argument - value: int_literal "1" + argument source="⟨value⟩" + value: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output index 41128b61818e..233ba6d5c1a7 100644 --- a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output +++ b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output @@ -28,16 +28,14 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "x" source="x" value: - member_access_expr - base: inferred_type_expr "." - member: identifier "foo" + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "foo" source="foo" diff --git a/unified/extractor/tests/corpus/swift/functions/method-call.output b/unified/extractor/tests/corpus/swift/functions/method-call.output index 3c0b150b8235..62c9506ef630 100644 --- a/unified/extractor/tests/corpus/swift/functions/method-call.output +++ b/unified/extractor/tests/corpus/swift/functions/method-call.output @@ -28,17 +28,15 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - call_expr + call_expr source="⟨callee⟩(⟨argument⟩)" callee: - member_access_expr - base: - name_expr - identifier: identifier "list" - member: identifier "append" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "list" source="list" + member_name_node: identifier "append" source="append" argument: - argument - value: int_literal "1" + argument source="⟨value⟩" + value: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/functions/nested-function-type.output b/unified/extractor/tests/corpus/swift/functions/nested-function-type.output index d9ce0cd7a976..f4bdf2845df7 100644 --- a/unified/extractor/tests/corpus/swift/functions/nested-function-type.output +++ b/unified/extractor/tests/corpus/swift/functions/nested-function-type.output @@ -100,57 +100,41 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n\n⟨stmt⟩" stmt: - type_alias_declaration - name: identifier "NestedFunction" + type_alias_declaration source="typealias ⟨name_node⟩ = ⟨type⟩" + name_node: identifier "NestedFunction" source="NestedFunction" type: - function_type_expr + function_expr source="(⟨parameter⟩) -> ⟨return_type⟩" parameter: - parameter + parameter source="⟨type⟩" type: - function_type_expr + function_expr source="(⟨parameter⟩) -> ⟨return_type⟩" parameter: - parameter - type: - named_type_expr - name: identifier "Int" - return_type: - named_type_expr - name: identifier "Bool" - return_type: - named_type_expr - name: identifier "Bool" - type_alias_declaration - name: identifier "MixedParametersAndTuples" + parameter source="⟨type⟩" + type: identifier "Int" source="Int" + return_type: identifier "Bool" source="Bool" + return_type: identifier "Bool" source="Bool" + type_alias_declaration source="typealias ⟨name_node⟩ = ⟨type⟩" + name_node: identifier "MixedParametersAndTuples" source="MixedParametersAndTuples" type: - function_type_expr + function_expr source="(⟨parameter⟩, ⟨parameter⟩) -> ⟨return_type⟩" parameter: - parameter + parameter source="⟨type⟩" type: - function_type_expr + function_expr source="(⟨parameter⟩) -> ⟨return_type⟩" parameter: - parameter - type: - named_type_expr - name: identifier "Int" - return_type: - named_type_expr - name: identifier "Bool" - parameter - type: - named_type_expr - name: identifier "String" + parameter source="⟨type⟩" + type: identifier "Int" source="Int" + return_type: identifier "Bool" source="Bool" + parameter source="⟨type⟩" + type: identifier "String" source="String" return_type: - tuple_type_expr + tuple_expr source="(⟨element⟩, ⟨element⟩)" element: - tuple_type_element - type: - named_type_expr - name: identifier "Bool" - tuple_type_element - type: - named_type_expr - name: identifier "Int" + argument source="⟨value⟩" + value: identifier "Bool" source="Bool" + argument source="⟨value⟩" + value: identifier "Int" source="Int" diff --git a/unified/extractor/tests/corpus/swift/functions/variadic-function.output b/unified/extractor/tests/corpus/swift/functions/variadic-function.output index 78c20ffc01e9..9d5d1a6e5b95 100644 --- a/unified/extractor/tests/corpus/swift/functions/variadic-function.output +++ b/unified/extractor/tests/corpus/swift/functions/variadic-function.output @@ -73,40 +73,30 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "sum" + function_declaration source="func ⟨name_node⟩(⟨parameter⟩) -> ⟨return_type⟩ ⟨body⟩" + name_node: identifier "sum" source="sum" parameter: - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "values" - return_type: - named_type_expr - name: identifier "Int" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩..." + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "values" source="values" + return_type: identifier "Int" source="Int" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - return_expr + return_expr source="return ⟨value⟩" value: - call_expr + call_expr source="⟨callee⟩(⟨argument⟩, ⟨argument⟩)" callee: - member_access_expr - base: - name_expr - identifier: identifier "values" - member: identifier "reduce" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "values" source="values" + member_name_node: identifier "reduce" source="reduce" argument: - argument - value: int_literal "0" - argument - value: - name_expr - identifier: identifier "+" + argument source="⟨value⟩" + value: int_literal "0" source="0" + argument source="⟨value⟩" + value: identifier "+" source="+" diff --git a/unified/extractor/tests/corpus/swift/literals/boolean-literals.output b/unified/extractor/tests/corpus/swift/literals/boolean-literals.output index 34b394712a35..53e784af9d5a 100644 --- a/unified/extractor/tests/corpus/swift/literals/boolean-literals.output +++ b/unified/extractor/tests/corpus/swift/literals/boolean-literals.output @@ -17,9 +17,9 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩" stmt: - boolean_literal "true" - boolean_literal "false" + boolean_literal "true" source="true" + boolean_literal "false" source="false" diff --git a/unified/extractor/tests/corpus/swift/literals/floating-point-literal.output b/unified/extractor/tests/corpus/swift/literals/floating-point-literal.output index 19fa40aac776..879eb5b3f020 100644 --- a/unified/extractor/tests/corpus/swift/literals/floating-point-literal.output +++ b/unified/extractor/tests/corpus/swift/literals/floating-point-literal.output @@ -12,7 +12,7 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block - stmt: float_literal "3.14" + block source="⟨stmt⟩" + stmt: float_literal "3.14" source="3.14" diff --git a/unified/extractor/tests/corpus/swift/literals/integer-literal.output b/unified/extractor/tests/corpus/swift/literals/integer-literal.output index 9df79925753c..9e86858d7bdf 100644 --- a/unified/extractor/tests/corpus/swift/literals/integer-literal.output +++ b/unified/extractor/tests/corpus/swift/literals/integer-literal.output @@ -12,7 +12,7 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block - stmt: int_literal "42" + block source="⟨stmt⟩" + stmt: int_literal "42" source="42" diff --git a/unified/extractor/tests/corpus/swift/literals/line-magic-literal.output b/unified/extractor/tests/corpus/swift/literals/line-magic-literal.output index 1616055fc16c..45361262ecb8 100644 --- a/unified/extractor/tests/corpus/swift/literals/line-magic-literal.output +++ b/unified/extractor/tests/corpus/swift/literals/line-magic-literal.output @@ -28,13 +28,13 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "currentLine" - value: unsupported_node "#line" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "currentLine" source="currentLine" + value: + macro_call_expr source="#⟨macro_name_node⟩" + macro_name_node: identifier "line" source="line" diff --git a/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.output b/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.output index 907944054782..99c94b78bf86 100644 --- a/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.output +++ b/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.output @@ -15,10 +15,10 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - unary_expr - operand: int_literal "7" - operator: prefix_operator "-" + unary_expr source="⟨operator⟩⟨operand⟩" + operand: int_literal "7" source="7" + operator: prefix_operator "-" source="-" diff --git a/unified/extractor/tests/corpus/swift/literals/nil-literal.output b/unified/extractor/tests/corpus/swift/literals/nil-literal.output index c7da232131fd..a81d5a2fd1e1 100644 --- a/unified/extractor/tests/corpus/swift/literals/nil-literal.output +++ b/unified/extractor/tests/corpus/swift/literals/nil-literal.output @@ -12,7 +12,7 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block - stmt: builtin_expr "nil" + block source="⟨stmt⟩" + stmt: builtin_expr "nil" source="nil" diff --git a/unified/extractor/tests/corpus/swift/literals/string-literal.output b/unified/extractor/tests/corpus/swift/literals/string-literal.output index 8d3ea8e796c0..f24e74608866 100644 --- a/unified/extractor/tests/corpus/swift/literals/string-literal.output +++ b/unified/extractor/tests/corpus/swift/literals/string-literal.output @@ -16,7 +16,7 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block - stmt: string_literal "\"hello\"" + block source="⟨stmt⟩" + stmt: string_literal "\"hello\"" source="\"hello\"" diff --git a/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.output b/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.output index 5207085d174c..fab3a3eb38ed 100644 --- a/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.output +++ b/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.output @@ -1,5 +1,21 @@ +// Simple interpolation "hello \(name)" +// Multiple interpolations +"hello \(first) \(last)" + +// Interpolation with expression +"result: \(x + y)" + +// Plain string before and after interpolation +"prefix \(value) suffix" + +// Calls to custom DefaultStringInterpolation.appendInterpolation impls +"foo \(x, y)" +"foo \(x, y, z)" +"foo \(arg: x)" +"foo \(arg: x, arg2: y)" + --- sourceFile @@ -24,10 +40,281 @@ sourceFile baseName: identifier "name" stringSegment content: stringSegment + codeBlockItem + item: + stringLiteralExpr + closingQuote: " + openingQuote: " + segments: + stringSegment + content: stringSegment "hello " + expressionSegment + leftParen: ( + rightParen: ) + backslash: \ + expressions: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "first" + stringSegment + content: stringSegment " " + expressionSegment + leftParen: ( + rightParen: ) + backslash: \ + expressions: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "last" + stringSegment + content: stringSegment + codeBlockItem + item: + stringLiteralExpr + closingQuote: " + openingQuote: " + segments: + stringSegment + content: stringSegment "result: " + expressionSegment + leftParen: ( + rightParen: ) + backslash: \ + expressions: + labeledExpr + expression: + infixOperatorExpr + operator: + binaryOperatorExpr + operator: binaryOperator "+" + leftOperand: + declReferenceExpr + baseName: identifier "x" + rightOperand: + declReferenceExpr + baseName: identifier "y" + stringSegment + content: stringSegment + codeBlockItem + item: + stringLiteralExpr + closingQuote: " + openingQuote: " + segments: + stringSegment + content: stringSegment "prefix " + expressionSegment + leftParen: ( + rightParen: ) + backslash: \ + expressions: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "value" + stringSegment + content: stringSegment " suffix" + codeBlockItem + item: + stringLiteralExpr + closingQuote: " + openingQuote: " + segments: + stringSegment + content: stringSegment "foo " + expressionSegment + leftParen: ( + rightParen: ) + backslash: \ + expressions: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "x" + trailingComma: , + labeledExpr + expression: + declReferenceExpr + baseName: identifier "y" + stringSegment + content: stringSegment + codeBlockItem + item: + stringLiteralExpr + closingQuote: " + openingQuote: " + segments: + stringSegment + content: stringSegment "foo " + expressionSegment + leftParen: ( + rightParen: ) + backslash: \ + expressions: + labeledExpr + expression: + declReferenceExpr + baseName: identifier "x" + trailingComma: , + labeledExpr + expression: + declReferenceExpr + baseName: identifier "y" + trailingComma: , + labeledExpr + expression: + declReferenceExpr + baseName: identifier "z" + stringSegment + content: stringSegment + codeBlockItem + item: + stringLiteralExpr + closingQuote: " + openingQuote: " + segments: + stringSegment + content: stringSegment "foo " + expressionSegment + leftParen: ( + rightParen: ) + backslash: \ + expressions: + labeledExpr + colon: : + label: identifier "arg" + expression: + declReferenceExpr + baseName: identifier "x" + stringSegment + content: stringSegment + codeBlockItem + item: + stringLiteralExpr + closingQuote: " + openingQuote: " + segments: + stringSegment + content: stringSegment "foo " + expressionSegment + leftParen: ( + rightParen: ) + backslash: \ + expressions: + labeledExpr + colon: : + label: identifier "arg" + expression: + declReferenceExpr + baseName: identifier "x" + trailingComma: , + labeledExpr + colon: : + label: identifier "arg2" + expression: + declReferenceExpr + baseName: identifier "y" + stringSegment + content: stringSegment --- -top_level +top_level source="⟨body⟩" body: - block - stmt: string_literal "\"hello \\(name)\"" + block source="⟨stmt⟩\n\n// Multiple interpolations\n⟨stmt⟩\n\n// Interpolation with expression\n⟨stmt⟩\n\n// Plain string before and after interpolation\n⟨stmt⟩\n\n// Calls to custom DefaultStringInterpolation.appendInterpolation impls\n⟨stmt⟩\n⟨stmt⟩\n⟨stmt⟩\n⟨stmt⟩" + stmt: + string_interpolation_expr source="\"⟨element⟩⟨element⟩\"" + element: + string_literal "hello " source="hello " + call_expr source="\\(⟨argument⟩)" + callee: builtin_expr "interpolation" source="" + argument: + argument source="⟨value⟩" + value: identifier "name" source="name" + string_literal source="" + string_interpolation_expr source="\"⟨element⟩⟨element⟩⟨element⟩⟨element⟩\"" + element: + string_literal "hello " source="hello " + call_expr source="\\(⟨argument⟩)" + callee: builtin_expr "interpolation" source="" + argument: + argument source="⟨value⟩" + value: identifier "first" source="first" + string_literal " " source=" " + call_expr source="\\(⟨argument⟩)" + callee: builtin_expr "interpolation" source="" + argument: + argument source="⟨value⟩" + value: identifier "last" source="last" + string_literal source="" + string_interpolation_expr source="\"⟨element⟩⟨element⟩\"" + element: + string_literal "result: " source="result: " + call_expr source="\\(⟨argument⟩)" + callee: builtin_expr "interpolation" source="" + argument: + argument source="⟨value⟩" + value: + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "+" source="+" + right: identifier "y" source="y" + string_literal source="" + string_interpolation_expr source="\"⟨element⟩⟨element⟩⟨element⟩\"" + element: + string_literal "prefix " source="prefix " + call_expr source="\\(⟨argument⟩)" + callee: builtin_expr "interpolation" source="" + argument: + argument source="⟨value⟩" + value: identifier "value" source="value" + string_literal " suffix" source=" suffix" + string_interpolation_expr source="\"⟨element⟩⟨element⟩\"" + element: + string_literal "foo " source="foo " + call_expr source="\\(⟨argument⟩, ⟨argument⟩)" + callee: builtin_expr "interpolation" source="" + argument: + argument source="⟨value⟩" + value: identifier "x" source="x" + argument source="⟨value⟩" + value: identifier "y" source="y" + string_literal source="" + string_interpolation_expr source="\"⟨element⟩⟨element⟩\"" + element: + string_literal "foo " source="foo " + call_expr source="\\(⟨argument⟩, ⟨argument⟩, ⟨argument⟩)" + callee: builtin_expr "interpolation" source="" + argument: + argument source="⟨value⟩" + value: identifier "x" source="x" + argument source="⟨value⟩" + value: identifier "y" source="y" + argument source="⟨value⟩" + value: identifier "z" source="z" + string_literal source="" + string_interpolation_expr source="\"⟨element⟩⟨element⟩\"" + element: + string_literal "foo " source="foo " + call_expr source="\\(⟨argument⟩)" + callee: builtin_expr "interpolation" source="" + argument: + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "arg" source="arg" + value: identifier "x" source="x" + string_literal source="" + string_interpolation_expr source="\"⟨element⟩⟨element⟩\"" + element: + string_literal "foo " source="foo " + call_expr source="\\(⟨argument⟩, ⟨argument⟩)" + callee: builtin_expr "interpolation" source="" + argument: + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "arg" source="arg" + value: identifier "x" source="x" + argument source="⟨name_node⟩: ⟨value⟩" + name_node: identifier "arg2" source="arg2" + value: identifier "y" source="y" + string_literal source="" diff --git a/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.swift b/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.swift index 4c58b37b89e7..b72a94faa00c 100644 --- a/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.swift +++ b/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.swift @@ -1 +1,17 @@ +// Simple interpolation "hello \(name)" + +// Multiple interpolations +"hello \(first) \(last)" + +// Interpolation with expression +"result: \(x + y)" + +// Plain string before and after interpolation +"prefix \(value) suffix" + +// Calls to custom DefaultStringInterpolation.appendInterpolation impls +"foo \(x, y)" +"foo \(x, y, z)" +"foo \(arg: x)" +"foo \(arg: x, arg2: y)" diff --git a/unified/extractor/tests/corpus/swift/loops/break-and-continue.output b/unified/extractor/tests/corpus/swift/loops/break-and-continue.output index 7ce869998272..c24ef267ec62 100644 --- a/unified/extractor/tests/corpus/swift/loops/break-and-continue.output +++ b/unified/extractor/tests/corpus/swift/loops/break-and-continue.output @@ -98,48 +98,36 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - for_each_stmt - pattern: - name_pattern - identifier: identifier "x" - iterable: - name_expr - identifier: identifier "xs" + for_each_stmt source="for ⟨pattern⟩ in ⟨iterable⟩ ⟨body⟩" + pattern: identifier "x" source="x" + iterable: identifier "xs" source="xs" body: - block + block source="{\n ⟨stmt⟩\n ⟨stmt⟩\n ⟨stmt⟩\n}" stmt: - if_expr + if_expr source="if ⟨condition⟩ ⟨then⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator "<" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "<" source="<" + right: int_literal "0" source="0" then: - block - stmt: continue_expr "continue" - if_expr + block source="{ ⟨stmt⟩ }" + stmt: continue_expr "continue" source="continue" + if_expr source="if ⟨condition⟩ ⟨then⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator ">" - right: int_literal "100" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator ">" source=">" + right: int_literal "100" source="100" then: - block - stmt: break_expr "break" - call_expr - callee: - name_expr - identifier: identifier "print" + block source="{ ⟨stmt⟩ }" + stmt: break_expr "break" source="break" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "x" + argument source="⟨value⟩" + value: identifier "x" source="x" diff --git a/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.output b/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.output index 2d8db27bfe85..4d927aad290c 100644 --- a/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.output +++ b/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.output @@ -56,29 +56,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - for_each_stmt - pattern: - name_pattern - identifier: identifier "x" + for_each_stmt source="for ⟨pattern⟩ in ⟨iterable⟩ ⟨body⟩" + pattern: identifier "x" source="x" iterable: - array_literal + array_literal source="[⟨element⟩, ⟨element⟩, ⟨element⟩]" element: - int_literal "1" - int_literal "2" - int_literal "3" + int_literal "1" source="1" + int_literal "2" source="2" + int_literal "3" source="3" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "x" + argument source="⟨value⟩" + value: identifier "x" source="x" diff --git a/unified/extractor/tests/corpus/swift/loops/for-in-over-range.output b/unified/extractor/tests/corpus/swift/loops/for-in-over-range.output index cb8b4e67b68d..856aaf792846 100644 --- a/unified/extractor/tests/corpus/swift/loops/for-in-over-range.output +++ b/unified/extractor/tests/corpus/swift/loops/for-in-over-range.output @@ -48,28 +48,22 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - for_each_stmt - pattern: - name_pattern - identifier: identifier "i" + for_each_stmt source="for ⟨pattern⟩ in ⟨iterable⟩ ⟨body⟩" + pattern: identifier "i" source="i" iterable: - binary_expr - left: int_literal "0" - operator: infix_operator "..<" - right: int_literal "10" + binary_expr source="⟨left⟩⟨operator⟩⟨right⟩" + left: int_literal "0" source="0" + operator: infix_operator "..<" source="..<" + right: int_literal "10" source="10" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "i" + argument source="⟨value⟩" + value: identifier "i" source="i" diff --git a/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.output b/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.output index 6659039029f3..412fc6b3672c 100644 --- a/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.output +++ b/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.output @@ -54,33 +54,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - for_each_stmt - pattern: - name_pattern - identifier: identifier "x" - iterable: - name_expr - identifier: identifier "xs" + for_each_stmt source="for ⟨pattern⟩ in ⟨iterable⟩ where ⟨guard⟩ ⟨body⟩" + pattern: identifier "x" source="x" + iterable: identifier "xs" source="xs" guard: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator ">" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator ">" source=">" + right: int_literal "0" source="0" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "x" + argument source="⟨value⟩" + value: identifier "x" source="x" diff --git a/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output b/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output index 71c49fd2cd10..53e4be6b6e5a 100644 --- a/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output +++ b/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output @@ -43,24 +43,20 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - do_while_stmt + do_while_stmt source="repeat ⟨body⟩ while ⟨condition⟩" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - compound_assign_expr - target: - name_expr - identifier: identifier "x" - operator: infix_operator "-=" - value: int_literal "1" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "-=" source="-=" + right: int_literal "1" source="1" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator ">" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator ">" source=">" + right: int_literal "0" source="0" diff --git a/unified/extractor/tests/corpus/swift/loops/while-loop.output b/unified/extractor/tests/corpus/swift/loops/while-loop.output index 1132c6f9f819..e9e6d67c3bb5 100644 --- a/unified/extractor/tests/corpus/swift/loops/while-loop.output +++ b/unified/extractor/tests/corpus/swift/loops/while-loop.output @@ -44,24 +44,20 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - while_stmt + while_stmt source="while ⟨condition⟩ ⟨body⟩" condition: - binary_expr - left: - name_expr - identifier: identifier "x" - operator: infix_operator ">" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator ">" source=">" + right: int_literal "0" source="0" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - compound_assign_expr - target: - name_expr - identifier: identifier "x" - operator: infix_operator "-=" - value: int_literal "1" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "-=" source="-=" + right: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/operators/addition.output b/unified/extractor/tests/corpus/swift/operators/addition.output index 9ba0f4de4770..20e75d76b371 100644 --- a/unified/extractor/tests/corpus/swift/operators/addition.output +++ b/unified/extractor/tests/corpus/swift/operators/addition.output @@ -20,15 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "+" - right: - name_expr - identifier: identifier "b" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "+" source="+" + right: identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/operators/comparison.output b/unified/extractor/tests/corpus/swift/operators/comparison.output index 49bb8c996f2c..01e9bc0d8de1 100644 --- a/unified/extractor/tests/corpus/swift/operators/comparison.output +++ b/unified/extractor/tests/corpus/swift/operators/comparison.output @@ -20,15 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "<" - right: - name_expr - identifier: identifier "b" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "<" source="<" + right: identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/operators/custom-postfix-operator.output b/unified/extractor/tests/corpus/swift/operators/custom-postfix-operator.output index 5067671aa997..b9e63c4a8550 100644 --- a/unified/extractor/tests/corpus/swift/operators/custom-postfix-operator.output +++ b/unified/extractor/tests/corpus/swift/operators/custom-postfix-operator.output @@ -35,14 +35,15 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n⟨stmt⟩" stmt: - unsupported_node "postfix operator ^^" - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "squared" - value: unsupported_node "3^^" + unsupported_node "postfix operator ^^" source="postfix operator ^^" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "squared" source="squared" + value: + unary_expr source="⟨operand⟩⟨operator⟩" + operand: int_literal "3" source="3" + operator: postfix_operator "^^" source="^^" diff --git a/unified/extractor/tests/corpus/swift/operators/division.output b/unified/extractor/tests/corpus/swift/operators/division.output index f15dce8e8ea5..5400b45146f1 100644 --- a/unified/extractor/tests/corpus/swift/operators/division.output +++ b/unified/extractor/tests/corpus/swift/operators/division.output @@ -20,15 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "/" - right: - name_expr - identifier: identifier "b" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "/" source="/" + right: identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/operators/equality.output b/unified/extractor/tests/corpus/swift/operators/equality.output index 7cf139ffa18d..a6f92fa7471e 100644 --- a/unified/extractor/tests/corpus/swift/operators/equality.output +++ b/unified/extractor/tests/corpus/swift/operators/equality.output @@ -20,15 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "==" - right: - name_expr - identifier: identifier "b" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "==" source="==" + right: identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/operators/logical-and.output b/unified/extractor/tests/corpus/swift/operators/logical-and.output index 32a71ed1088c..1b652d920be4 100644 --- a/unified/extractor/tests/corpus/swift/operators/logical-and.output +++ b/unified/extractor/tests/corpus/swift/operators/logical-and.output @@ -20,15 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "&&" - right: - name_expr - identifier: identifier "b" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "&&" source="&&" + right: identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/operators/logical-not.output b/unified/extractor/tests/corpus/swift/operators/logical-not.output index 1e80aa2ca71e..278667af8241 100644 --- a/unified/extractor/tests/corpus/swift/operators/logical-not.output +++ b/unified/extractor/tests/corpus/swift/operators/logical-not.output @@ -15,12 +15,10 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - unary_expr - operand: - name_expr - identifier: identifier "a" - operator: prefix_operator "!" + unary_expr source="⟨operator⟩⟨operand⟩" + operand: identifier "a" source="a" + operator: prefix_operator "!" source="!" diff --git a/unified/extractor/tests/corpus/swift/operators/logical-or.output b/unified/extractor/tests/corpus/swift/operators/logical-or.output index b75d018dea71..a6762a959794 100644 --- a/unified/extractor/tests/corpus/swift/operators/logical-or.output +++ b/unified/extractor/tests/corpus/swift/operators/logical-or.output @@ -20,15 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "||" - right: - name_expr - identifier: identifier "b" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "||" source="||" + right: identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/operators/multiplication.output b/unified/extractor/tests/corpus/swift/operators/multiplication.output index 387c16439c48..b8fd88cf5299 100644 --- a/unified/extractor/tests/corpus/swift/operators/multiplication.output +++ b/unified/extractor/tests/corpus/swift/operators/multiplication.output @@ -20,15 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "*" - right: - name_expr - identifier: identifier "b" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "*" source="*" + right: identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.output b/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.output index f458c3ef847c..955797c45114 100644 --- a/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.output +++ b/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.output @@ -28,21 +28,15 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "+" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "+" source="+" right: - binary_expr - left: - name_expr - identifier: identifier "b" - operator: infix_operator "*" - right: - name_expr - identifier: identifier "c" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "b" source="b" + operator: infix_operator "*" source="*" + right: identifier "c" source="c" diff --git a/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output b/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output index 0324476ce994..d5d1b99069e6 100644 --- a/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output +++ b/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output @@ -34,13 +34,15 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: tuple_expr "(a + b)" - operator: infix_operator "*" - right: - name_expr - identifier: identifier "c" + binary_expr source="(⟨left⟩) ⟨operator⟩ ⟨right⟩" + left: + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "+" source="+" + right: identifier "b" source="b" + operator: infix_operator "*" source="*" + right: identifier "c" source="c" diff --git a/unified/extractor/tests/corpus/swift/operators/partial-range-from.output b/unified/extractor/tests/corpus/swift/operators/partial-range-from.output index 1b9208cedf8b..da54bf04c071 100644 --- a/unified/extractor/tests/corpus/swift/operators/partial-range-from.output +++ b/unified/extractor/tests/corpus/swift/operators/partial-range-from.output @@ -28,13 +28,14 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "range" - value: unsupported_node "3..." + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "range" source="range" + value: + unary_expr source="⟨operand⟩⟨operator⟩" + operand: int_literal "3" source="3" + operator: postfix_operator "..." source="..." diff --git a/unified/extractor/tests/corpus/swift/operators/range-operator.output b/unified/extractor/tests/corpus/swift/operators/range-operator.output index 55ed3ab971a7..ab5aff23c30f 100644 --- a/unified/extractor/tests/corpus/swift/operators/range-operator.output +++ b/unified/extractor/tests/corpus/swift/operators/range-operator.output @@ -20,11 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: int_literal "1" - operator: infix_operator "..." - right: int_literal "10" + binary_expr source="⟨left⟩⟨operator⟩⟨right⟩" + left: int_literal "1" source="1" + operator: infix_operator "..." source="..." + right: int_literal "10" source="10" diff --git a/unified/extractor/tests/corpus/swift/operators/subtraction.output b/unified/extractor/tests/corpus/swift/operators/subtraction.output index 5c6fd51a2d38..210d25065f8c 100644 --- a/unified/extractor/tests/corpus/swift/operators/subtraction.output +++ b/unified/extractor/tests/corpus/swift/operators/subtraction.output @@ -20,15 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - binary_expr - left: - name_expr - identifier: identifier "a" - operator: infix_operator "-" - right: - name_expr - identifier: identifier "b" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "a" source="a" + operator: infix_operator "-" source="-" + right: identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence-with-casts.output b/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence-with-casts.output index a0563c7bc88b..8dddba738a54 100644 --- a/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence-with-casts.output +++ b/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence-with-casts.output @@ -89,53 +89,39 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "casts" + function_declaration source="func ⟨name_node⟩(⟨parameter⟩, ⟨parameter⟩) ⟨body⟩" + name_node: identifier "casts" source="casts" parameter: - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Any" - pattern: - name_pattern - identifier: identifier "a" - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "b" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Any" source="Any" + pattern: identifier "a" source="a" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "b" source="b" body: - block + block source="{\n ⟨stmt⟩\n ⟨stmt⟩\n}" stmt: - unresolved_operator_sequence + unresolved_operator_sequence source="⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩" element: - name_expr - identifier: identifier "_" - infix_operator "=" - name_expr - identifier: identifier "a" - infix_operator "as" - unsupported_node "Int" - infix_operator ".&" - name_expr - identifier: identifier "b" - unresolved_operator_sequence + ignore_pattern "_" source="_" + infix_operator "=" source="=" + identifier "a" source="a" + infix_operator "as" source="as" + unsupported_node "Int" source="Int" + infix_operator ".&" source=".&" + identifier "b" source="b" + unresolved_operator_sequence source="⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩" element: - name_expr - identifier: identifier "_" - infix_operator "=" - name_expr - identifier: identifier "a" - infix_operator "is" - unsupported_node "Int" - infix_operator ".&" - name_expr - identifier: identifier "b" + ignore_pattern "_" source="_" + infix_operator "=" source="=" + identifier "a" source="a" + infix_operator "is" source="is" + unsupported_node "Int" source="Int" + infix_operator ".&" source=".&" + identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence-with-ternary.output b/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence-with-ternary.output index 57274c32a9c2..c4a869673049 100644 --- a/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence-with-ternary.output +++ b/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence-with-ternary.output @@ -95,63 +95,41 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "choose" + function_declaration source="func ⟨name_node⟩(⟨parameter⟩, ⟨parameter⟩, ⟨parameter⟩, ⟨parameter⟩) -> ⟨return_type⟩ ⟨body⟩" + name_node: identifier "choose" source="choose" parameter: - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Bool" - pattern: - name_pattern - identifier: identifier "c" - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "a" - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "b" - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "d" - return_type: - named_type_expr - name: identifier "Int" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Bool" source="Bool" + pattern: identifier "c" source="c" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "a" source="a" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "b" source="b" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "d" source="d" + return_type: identifier "Int" source="Int" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - return_expr + return_expr source="return ⟨value⟩" value: - unresolved_operator_sequence + unresolved_operator_sequence source="⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩" element: - name_expr - identifier: identifier "c" - infix_operator "?" - name_expr - identifier: identifier "a" - infix_operator ":" - name_expr - identifier: identifier "b" - infix_operator ".&" - name_expr - identifier: identifier "d" + identifier "c" source="c" + infix_operator "?" source="?" + identifier "a" source="a" + infix_operator ":" source=":" + identifier "b" source="b" + infix_operator ".&" source=".&" + identifier "d" source="d" diff --git a/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence.output b/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence.output index 46dc8ca6ae89..cbe6f488db6a 100644 --- a/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence.output +++ b/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence.output @@ -62,39 +62,28 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "combine" + function_declaration source="func ⟨name_node⟩(⟨parameter⟩, ⟨parameter⟩) ⟨body⟩" + name_node: identifier "combine" source="combine" parameter: - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "a" - parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "b" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "a" source="a" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "_" source="_" + type: identifier "Int" source="Int" + pattern: identifier "b" source="b" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - unresolved_operator_sequence + unresolved_operator_sequence source="⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩ ⟨element⟩" element: - name_expr - identifier: identifier "_" - infix_operator "=" - name_expr - identifier: identifier "a" - infix_operator ".&" - name_expr - identifier: identifier "b" + ignore_pattern "_" source="_" + infix_operator "=" source="=" + identifier "a" source="a" + infix_operator ".&" source=".&" + identifier "b" source="b" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/catch-where-clauses.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/catch-where-clauses.output index 79b7879d35fa..5506b163346f 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/catch-where-clauses.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/catch-where-clauses.output @@ -136,72 +136,60 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - try_expr + try_expr source="do ⟨body⟩ ⟨catch_clause⟩ ⟨catch_clause⟩" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - unary_expr + unary_expr source="⟨operator⟩ ⟨operand⟩" operand: - call_expr - callee: - name_expr - identifier: identifier "foo" - operator: prefix_operator "try" + call_expr source="⟨callee⟩()" + callee: identifier "foo" source="foo" + operator: prefix_operator "try" source="try" catch_clause: - catch_clause + catch_clause source="catch ⟨pattern⟩ ⟨body⟩" pattern: - or_pattern + or_pattern source="⟨pattern⟩, ⟨pattern⟩" pattern: - conditional_pattern + conditional_pattern source="⟨pattern⟩ where ⟨condition⟩" condition: - call_expr - callee: - name_expr - identifier: identifier "isNetworkError" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "isNetworkError" source="isNetworkError" argument: - argument - value: - name_expr - identifier: identifier "e" + argument source="⟨value⟩" + value: identifier "e" source="e" pattern: - name_pattern - identifier: identifier "e" - conditional_pattern + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "e" source="e" + conditional_pattern source="⟨pattern⟩ where ⟨condition⟩" condition: - call_expr - callee: - name_expr - identifier: identifier "isTimeout" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "isTimeout" source="isTimeout" argument: - argument - value: - name_expr - identifier: identifier "f" + argument source="⟨value⟩" + value: identifier "f" source="f" pattern: - name_pattern - identifier: identifier "f" + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "f" source="f" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"retry\"" - catch_clause + argument source="⟨value⟩" + value: string_literal "\"retry\"" source="\"retry\"" + catch_clause source="catch ⟨body⟩" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: string_literal "\"fallback\"" + argument source="⟨value⟩" + value: string_literal "\"fallback\"" source="\"fallback\"" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.output index 81491b295fc1..b97772cd71a4 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.output @@ -57,32 +57,26 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - try_expr + try_expr source="do ⟨body⟩ ⟨catch_clause⟩" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - unary_expr + unary_expr source="⟨operator⟩ ⟨operand⟩" operand: - call_expr - callee: - name_expr - identifier: identifier "foo" - operator: prefix_operator "try" + call_expr source="⟨callee⟩()" + callee: identifier "foo" source="foo" + operator: prefix_operator "try" source="try" catch_clause: - catch_clause + catch_clause source="catch ⟨body⟩" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "error" + argument source="⟨value⟩" + value: identifier "error" source="error" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.output index 2c6fd1a6f763..8ed940058d75 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.output @@ -28,18 +28,14 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "n" source="n" value: - unary_expr - operand: - name_expr - identifier: identifier "opt" - operator: postfix_operator "!" + unary_expr source="⟨operand⟩⟨operator⟩" + operand: identifier "opt" source="opt" + operator: postfix_operator "!" source="!" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.output index 31a039ad0065..5a35a80306a5 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.output @@ -33,19 +33,15 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "n" source="n" value: - binary_expr - left: - name_expr - identifier: identifier "opt" - operator: infix_operator "??" - right: int_literal "0" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "opt" source="opt" + operator: infix_operator "??" source="??" + right: int_literal "0" source="0" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.output index b69b0ae47d50..2fb5be96bc8f 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.output @@ -43,21 +43,17 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "n" source="n" value: - member_access_expr + member_access_expr source="⟨base⟩?.⟨member_name_node⟩" base: - member_access_expr - base: - name_expr - identifier: identifier "obj" - member: identifier "foo" - member: identifier "bar" + member_access_expr source="⟨base⟩?.⟨member_name_node⟩" + base: identifier "obj" source="obj" + member_name_node: identifier "foo" source="foo" + member_name_node: identifier "bar" source="bar" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.output index 7b1eb1eea3b4..6e2b26b9678f 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-enum-case-binding.output @@ -72,46 +72,39 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - if_expr + if_expr source="if ⟨condition⟩ ⟨then⟩" condition: - pattern_guard_expr + pattern_guard_expr source="case ⟨pattern⟩ = ⟨value⟩" pattern: - constructor_pattern - constructor: - member_access_expr - base: - named_type_expr - name: identifier "Optional" - member: identifier "some" - element: - pattern_element - pattern: - constructor_pattern - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "some" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "value" - value: - name_expr - identifier: identifier "input" - then: - block - stmt: - call_expr + call_expr source="⟨argument⟩?" callee: - name_expr - identifier: identifier "print" + member_access_expr source="" + base: identifier "Optional" source="" + member_name_node: identifier "some" source="" argument: - argument + argument source="⟨value⟩" value: - name_expr - identifier: identifier "value" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: + member_access_expr source="⟨base⟩⟨member_name_node⟩" + base: inferred_type_expr "." source="." + member_name_node: identifier "some" source="some" + argument: + argument source="⟨value⟩" + value: + expr_pattern source="⟨modifier⟩ ⟨expr⟩" + modifier: modifier "let" source="let" + expr: identifier "value" source="value" + value: identifier "input" source="input" + then: + block source="{\n ⟨stmt⟩\n}" + stmt: + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" + argument: + argument source="⟨value⟩" + value: identifier "value" source="value" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.output index 1927b494ef9a..ceb65bc91c9c 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.output @@ -34,21 +34,15 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "x" source="x" type: - generic_type_expr - base: - named_type_expr - name: identifier "Optional" - type_argument: - named_type_expr - name: identifier "Int" - value: builtin_expr "nil" + generic_type_expr source="⟨type_argument⟩?" + base: identifier "Optional" source="" + type_argument: identifier "Int" source="Int" + value: builtin_expr "nil" source="nil" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.output index e68b4c3c57ac..6e6cc3b99e18 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.output @@ -51,17 +51,15 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - function_declaration - name: identifier "read" - return_type: - named_type_expr - name: identifier "String" + function_declaration source="func ⟨name_node⟩() throws -> ⟨return_type⟩ ⟨body⟩" + name_node: identifier "read" source="read" + return_type: identifier "String" source="String" body: - block + block source="{\n ⟨stmt⟩\n}" stmt: - return_expr - value: string_literal "\"\"" + return_expr source="return ⟨value⟩" + value: string_literal "\"\"" source="\"\"" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.output index aafc0c67c217..0949c7553141 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.output @@ -35,20 +35,16 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "result" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "result" source="result" value: - unary_expr + unary_expr source="⟨operator⟩ ⟨operand⟩" operand: - call_expr - callee: - name_expr - identifier: identifier "foo" - operator: prefix_operator "try!" + call_expr source="⟨callee⟩()" + callee: identifier "foo" source="foo" + operator: prefix_operator "try!" source="try!" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.output index 5b1b0b24d0fa..a5169c10141c 100644 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.output +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.output @@ -35,20 +35,16 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "result" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "result" source="result" value: - unary_expr + unary_expr source="⟨operator⟩ ⟨operand⟩" operand: - call_expr - callee: - name_expr - identifier: identifier "foo" - operator: prefix_operator "try?" + call_expr source="⟨callee⟩()" + callee: identifier "foo" source="foo" + operator: prefix_operator "try?" source="try?" diff --git a/unified/extractor/tests/corpus/swift/types/actor-declaration.output b/unified/extractor/tests/corpus/swift/types/actor-declaration.output index b4fcd605b9e9..89d549b0e749 100644 --- a/unified/extractor/tests/corpus/swift/types/actor-declaration.output +++ b/unified/extractor/tests/corpus/swift/types/actor-declaration.output @@ -39,7 +39,7 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block - stmt: unsupported_node "actor Counter {\n var value = 0\n}" + block source="⟨stmt⟩" + stmt: unsupported_node "actor Counter {\n var value = 0\n}" source="actor Counter {\n var value = 0\n}" diff --git a/unified/extractor/tests/corpus/swift/types/binding-modifier-does-not-leak-into-accessor-body.output b/unified/extractor/tests/corpus/swift/types/binding-modifier-does-not-leak-into-accessor-body.output index c05bc7794437..88674d76efbd 100644 --- a/unified/extractor/tests/corpus/swift/types/binding-modifier-does-not-leak-into-accessor-body.output +++ b/unified/extractor/tests/corpus/swift/types/binding-modifier-does-not-leak-into-accessor-body.output @@ -92,39 +92,31 @@ sourceFile --- -top_level +top_level source="var p: Int {\n ⟨body⟩\n}" body: - block + block source="⟨stmt⟩" stmt: - accessor_declaration - modifier: modifier "var" - name: identifier "p" - accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "Int" + accessor_declaration source="⟨accessor_kind⟩ ⟨body⟩" + modifier: modifier "var" source="var" (external) + name_node: identifier "p" source="p" (external) + accessor_kind: accessor_kind "get" source="get" + type: identifier "Int" source="Int" (external) body: - block + block source="{\n ⟨stmt⟩\n }" stmt: - switch_expr - value: - name_expr - identifier: identifier "y" + switch_expr source="switch ⟨value⟩ {\n ⟨case⟩\n ⟨case⟩\n }" + value: identifier "y" source="y" case: - switch_case - pattern: - expr_equality_pattern - expr: - name_expr - identifier: identifier "someConstant" + switch_case source="case ⟨pattern⟩:\n ⟨body⟩" + pattern: identifier "someConstant" source="someConstant" body: - block + block source="⟨stmt⟩" stmt: - return_expr - value: int_literal "1" - switch_case + return_expr source="return ⟨value⟩" + value: int_literal "1" source="1" + switch_case source="default:\n ⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - return_expr - value: int_literal "2" + return_expr source="return ⟨value⟩" + value: int_literal "2" source="2" diff --git a/unified/extractor/tests/corpus/swift/types/class-function.output b/unified/extractor/tests/corpus/swift/types/class-function.output new file mode 100644 index 000000000000..6e3066aae39b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-function.output @@ -0,0 +1,61 @@ +class Factory { + class func make() {} +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + classDecl + attributes: + name: identifier "Factory" + memberBlock: + memberBlock + leftBrace: { + rightBrace: } + members: + memberBlockItem + decl: + functionDecl + attributes: + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + name: identifier "make" + modifiers: + declModifier + name: class + signature: + functionSignature + parameterClause: + functionParameterClause + leftParen: ( + rightParen: ) + parameters: + funcKeyword: func + modifiers: + classKeyword: class + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩" + stmt: + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "Factory" source="Factory" + member: + function_declaration source="⟨modifier⟩ func ⟨name_node⟩() ⟨body⟩" + modifier: modifier "class" source="class" + name_node: identifier "make" source="make" + body: block "{}" source="{}" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/class-function.swift b/unified/extractor/tests/corpus/swift/types/class-function.swift new file mode 100644 index 000000000000..d4424ab3005e --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-function.swift @@ -0,0 +1,3 @@ +class Factory { + class func make() {} +} diff --git a/unified/extractor/tests/corpus/swift/types/class-inheritance.output b/unified/extractor/tests/corpus/swift/types/class-inheritance.output index 12328f4acb0d..82ae4302188a 100644 --- a/unified/extractor/tests/corpus/swift/types/class-inheritance.output +++ b/unified/extractor/tests/corpus/swift/types/class-inheritance.output @@ -28,15 +28,18 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Dog" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩: ⟨base_type⟩ {}" + modifier: modifier "class" source="class" + name_node: identifier "Dog" source="Dog" base_type: - base_type - type: - named_type_expr - name: identifier "Animal" + base_type source="⟨type⟩" + type: identifier "Animal" source="Animal" + member: + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/class-with-initializer.output b/unified/extractor/tests/corpus/swift/types/class-with-initializer.output index 83945d89e3a0..b2141c5bb6e3 100644 --- a/unified/extractor/tests/corpus/swift/types/class-with-initializer.output +++ b/unified/extractor/tests/corpus/swift/types/class-with-initializer.output @@ -86,41 +86,32 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Point" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "Point" source="Point" member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - constructor_declaration + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "var" source="var" + pattern: identifier "x" source="x" + type: identifier "Int" source="Int" + constructor_declaration source="⟨name_node⟩(⟨parameter⟩) ⟨body⟩" + name_node: identifier "init" source="init" parameter: - parameter - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "x" + parameter source="⟨external_name_node⟩⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "x" source="x" + type: identifier "Int" source="Int" + pattern: identifier "x" source="x" body: - block + block source="{\n ⟨stmt⟩\n }" stmt: - assign_expr - target: - member_access_expr - base: - name_expr - identifier: identifier "self" - member: identifier "x" - value: - name_expr - identifier: identifier "x" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "self" source="self" + member_name_node: identifier "x" source="x" + operator: infix_operator "=" source="=" + right: identifier "x" source="x" diff --git a/unified/extractor/tests/corpus/swift/types/class-with-method.output b/unified/extractor/tests/corpus/swift/types/class-with-method.output index f45cb31e53ad..5eb5a4e4bd69 100644 --- a/unified/extractor/tests/corpus/swift/types/class-with-method.output +++ b/unified/extractor/tests/corpus/swift/types/class-with-method.output @@ -73,28 +73,28 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Counter" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "Counter" source="Counter" member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "n" - value: int_literal "0" - function_declaration - name: identifier "bump" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "var" source="var" + pattern: identifier "n" source="n" + value: int_literal "0" source="0" + function_declaration source="func ⟨name_node⟩() ⟨body⟩" + name_node: identifier "bump" source="bump" body: - block + block source="{\n ⟨stmt⟩\n }" stmt: - compound_assign_expr - target: - name_expr - identifier: identifier "n" - operator: infix_operator "+=" - value: int_literal "1" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "n" source="n" + operator: infix_operator "+=" source="+=" + right: int_literal "1" source="1" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/class-with-multiple-base-types.output b/unified/extractor/tests/corpus/swift/types/class-with-multiple-base-types.output index e66b88e9be3d..9ba006347a46 100644 --- a/unified/extractor/tests/corpus/swift/types/class-with-multiple-base-types.output +++ b/unified/extractor/tests/corpus/swift/types/class-with-multiple-base-types.output @@ -33,19 +33,20 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Button" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩: ⟨base_type⟩, ⟨base_type⟩ {}" + modifier: modifier "class" source="class" + name_node: identifier "Button" source="Button" base_type: - base_type - type: - named_type_expr - name: identifier "Control" - base_type - type: - named_type_expr - name: identifier "Drawable" + base_type source="⟨type⟩" + type: identifier "Control" source="Control" + base_type source="⟨type⟩" + type: identifier "Drawable" source="Drawable" + member: + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.output b/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.output index e184426eb755..4f95ca0e61f7 100644 --- a/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.output +++ b/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.output @@ -57,27 +57,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Point" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "Point" source="Point" member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "y" - type: - named_type_expr - name: identifier "Int" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "var" source="var" + pattern: identifier "x" source="x" + type: identifier "Int" source="Int" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "var" source="var" + pattern: identifier "y" source="y" + type: identifier "Int" source="Int" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/computed-property.output b/unified/extractor/tests/corpus/swift/types/computed-property.output index 24e816be0091..4ed7a0e5d096 100644 --- a/unified/extractor/tests/corpus/swift/types/computed-property.output +++ b/unified/extractor/tests/corpus/swift/types/computed-property.output @@ -97,47 +97,37 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Rect" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n ⟨member⟩\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "Rect" source="Rect" member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "w" - type: - named_type_expr - name: identifier "Double" - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "h" - type: - named_type_expr - name: identifier "Double" - accessor_declaration - modifier: modifier "var" - name: identifier "area" - accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "Double" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "var" source="var" + pattern: identifier "w" source="w" + type: identifier "Double" source="Double" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "var" source="var" + pattern: identifier "h" source="h" + type: identifier "Double" source="Double" + accessor_declaration source="⟨modifier⟩ ⟨name_node⟩: ⟨type⟩ ⟨body⟩" + modifier: modifier "var" source="var" + name_node: identifier "area" source="area" + accessor_kind: accessor_kind "get" source="" + type: identifier "Double" source="Double" body: - block + block source="{\n ⟨stmt⟩\n }" stmt: - return_expr + return_expr source="return ⟨value⟩" value: - binary_expr - left: - name_expr - identifier: identifier "w" - operator: infix_operator "*" - right: - name_expr - identifier: identifier "h" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "w" source="w" + operator: infix_operator "*" source="*" + right: identifier "h" source="h" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/conditional-compilation-in-class-body.output b/unified/extractor/tests/corpus/swift/types/conditional-compilation-in-class-body.output index 2c530111b9ca..05a538e6de09 100644 --- a/unified/extractor/tests/corpus/swift/types/conditional-compilation-in-class-body.output +++ b/unified/extractor/tests/corpus/swift/types/conditional-compilation-in-class-body.output @@ -77,11 +77,16 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "C" - member: unsupported_node "#if DEBUG\n init(x: Int) {}\n deinit {}\n#endif" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "C" source="C" + member: + unsupported_node "#if DEBUG\n init(x: Int) {}\n deinit {}\n#endif" source="#if DEBUG\n init(x: Int) {}\n deinit {}\n#endif" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/constructor-with-parameters.output b/unified/extractor/tests/corpus/swift/types/constructor-with-parameters.output index c9be21dd156a..aaaef2029829 100644 --- a/unified/extractor/tests/corpus/swift/types/constructor-with-parameters.output +++ b/unified/extractor/tests/corpus/swift/types/constructor-with-parameters.output @@ -59,30 +59,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "struct" - name: identifier "Size" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n}" + modifier: modifier "struct" source="struct" + name_node: identifier "Size" source="Size" member: - constructor_declaration + constructor_declaration source="⟨name_node⟩(⟨parameter⟩, ⟨parameter⟩) ⟨body⟩" + name_node: identifier "init" source="init" parameter: - parameter - external_name: identifier "width" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "w" - parameter - external_name: identifier "height" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "h" - body: block "init(width w: Int, height h: Int) {}" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "width" source="width" + type: identifier "Int" source="Int" + pattern: identifier "w" source="w" + parameter source="⟨external_name_node⟩ ⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "height" source="height" + type: identifier "Int" source="Int" + pattern: identifier "h" source="h" + body: block "{}" source="{}" diff --git a/unified/extractor/tests/corpus/swift/types/empty-class.output b/unified/extractor/tests/corpus/swift/types/empty-class.output index 6693744c9b43..e1c4e70fde09 100644 --- a/unified/extractor/tests/corpus/swift/types/empty-class.output +++ b/unified/extractor/tests/corpus/swift/types/empty-class.output @@ -20,10 +20,15 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Foo" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {}" + modifier: modifier "class" source="class" + name_node: identifier "Foo" source="Foo" + member: + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.output b/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.output index 399239bbea30..2d0432557fe5 100644 --- a/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.output +++ b/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.output @@ -65,39 +65,31 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "enum" - name: identifier "Shape" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n case ⟨member⟩\n case ⟨member⟩\n}" + modifier: modifier "enum" source="enum" + name_node: identifier "Shape" source="Shape" member: - class_like_declaration - modifier: modifier "enum_case" - name: identifier "circle" + class_like_declaration source="⟨name_node⟩⟨member⟩" + modifier: modifier "enum_case" source="" + name_node: identifier "circle" source="circle" member: - constructor_declaration + constructor_declaration source="circle(⟨parameter⟩)" parameter: - parameter - type: - named_type_expr - name: identifier "Double" - pattern: - name_pattern - identifier: identifier "radius" - body: block "circle(radius: Double)" - class_like_declaration - modifier: modifier "enum_case" - name: identifier "square" + parameter source="⟨pattern⟩: ⟨type⟩" + type: identifier "Double" source="Double" + pattern: identifier "radius" source="radius" + body: block source="" + class_like_declaration source="⟨name_node⟩⟨member⟩" + modifier: modifier "enum_case" source="" + name_node: identifier "square" source="square" member: - constructor_declaration + constructor_declaration source="square(⟨parameter⟩)" parameter: - parameter - type: - named_type_expr - name: identifier "Double" - pattern: - name_pattern - identifier: identifier "side" - body: block "square(side: Double)" + parameter source="⟨pattern⟩: ⟨type⟩" + type: identifier "Double" source="Double" + pattern: identifier "side" source="side" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/enum-with-cases.output b/unified/extractor/tests/corpus/swift/types/enum-with-cases.output index f081c2a82046..8b3fa7f85775 100644 --- a/unified/extractor/tests/corpus/swift/types/enum-with-cases.output +++ b/unified/extractor/tests/corpus/swift/types/enum-with-cases.output @@ -61,31 +61,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "enum" - name: identifier "Direction" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n case ⟨member⟩\n case ⟨member⟩\n case ⟨member⟩\n case ⟨member⟩\n}" + modifier: modifier "enum" source="enum" + name_node: identifier "Direction" source="Direction" member: - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "north" - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "south" - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "east" - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "west" + variable_declaration source="⟨pattern⟩" + modifier: modifier "enum_case" source="" + pattern: identifier "north" source="north" + variable_declaration source="⟨pattern⟩" + modifier: modifier "enum_case" source="" + pattern: identifier "south" source="south" + variable_declaration source="⟨pattern⟩" + modifier: modifier "enum_case" source="" + pattern: identifier "east" source="east" + variable_declaration source="⟨pattern⟩" + modifier: modifier "enum_case" source="" + pattern: identifier "west" source="west" diff --git a/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.output b/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.output index 6a4ea95e9a62..8325b84b5bef 100644 --- a/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.output +++ b/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.output @@ -40,37 +40,29 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "enum" - name: identifier "Suit" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n case ⟨member⟩, ⟨member⟩, ⟨member⟩, ⟨member⟩\n}" + modifier: modifier "enum" source="enum" + name_node: identifier "Suit" source="Suit" member: - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "clubs" - variable_declaration + variable_declaration source="⟨pattern⟩" + modifier: modifier "enum_case" source="" + pattern: identifier "clubs" source="clubs" + variable_declaration source="⟨pattern⟩" modifier: - modifier "chained_declaration" - modifier "enum_case" - pattern: - name_pattern - identifier: identifier "diamonds" - variable_declaration + modifier "chained_declaration" source="" + modifier "enum_case" source="" + pattern: identifier "diamonds" source="diamonds" + variable_declaration source="⟨pattern⟩" modifier: - modifier "chained_declaration" - modifier "enum_case" - pattern: - name_pattern - identifier: identifier "hearts" - variable_declaration + modifier "chained_declaration" source="" + modifier "enum_case" source="" + pattern: identifier "hearts" source="hearts" + variable_declaration source="⟨pattern⟩" modifier: - modifier "chained_declaration" - modifier "enum_case" - pattern: - name_pattern - identifier: identifier "spades" + modifier "chained_declaration" source="" + modifier "enum_case" source="" + pattern: identifier "spades" source="spades" diff --git a/unified/extractor/tests/corpus/swift/types/extension.output b/unified/extractor/tests/corpus/swift/types/extension.output index 1b1d02ebddad..2830565acf9a 100644 --- a/unified/extractor/tests/corpus/swift/types/extension.output +++ b/unified/extractor/tests/corpus/swift/types/extension.output @@ -64,29 +64,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "extension" - name: identifier "Int" + class_like_declaration source="⟨modifier⟩ ⟨extension_target⟩ {\n ⟨member⟩\n}" + modifier: modifier "extension" source="extension" + extension_target: identifier "Int" source="Int" member: - function_declaration - name: identifier "squared" - return_type: - named_type_expr - name: identifier "Int" + function_declaration source="func ⟨name_node⟩() -> ⟨return_type⟩ ⟨body⟩" + name_node: identifier "squared" source="squared" + return_type: identifier "Int" source="Int" body: - block + block source="{ ⟨stmt⟩ }" stmt: - return_expr + return_expr source="return ⟨value⟩" value: - binary_expr - left: - name_expr - identifier: identifier "self" - operator: infix_operator "*" - right: - name_expr - identifier: identifier "self" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "self" source="self" + operator: infix_operator "*" source="*" + right: identifier "self" source="self" diff --git a/unified/extractor/tests/corpus/swift/types/function-type-with-convention-attribute.output b/unified/extractor/tests/corpus/swift/types/function-type-with-convention-attribute.output index 3d484d6f65d8..39273b1056d0 100644 --- a/unified/extractor/tests/corpus/swift/types/function-type-with-convention-attribute.output +++ b/unified/extractor/tests/corpus/swift/types/function-type-with-convention-attribute.output @@ -58,16 +58,14 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "callback" - type: unsupported_node "@convention(c) () -> Void" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "callback" source="callback" + type: unsupported_node "@convention(c) () -> Void" source="@convention(c) () -> Void" value: - function_expr - body: block "{}" + function_expr source="{}" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/function-type-with-sendable-attribute.output b/unified/extractor/tests/corpus/swift/types/function-type-with-sendable-attribute.output index ef9f838dadbe..9fbaf4167fd3 100644 --- a/unified/extractor/tests/corpus/swift/types/function-type-with-sendable-attribute.output +++ b/unified/extractor/tests/corpus/swift/types/function-type-with-sendable-attribute.output @@ -51,16 +51,14 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "handler" - type: unsupported_node "@Sendable () -> Void" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "handler" source="handler" + type: unsupported_node "@Sendable () -> Void" source="@Sendable () -> Void" value: - function_expr - body: block "{}" + function_expr source="{}" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/generic-class-parameters-and-constraints.output b/unified/extractor/tests/corpus/swift/types/generic-class-parameters-and-constraints.output index 26b17599ae00..ba08e662acb2 100644 --- a/unified/extractor/tests/corpus/swift/types/generic-class-parameters-and-constraints.output +++ b/unified/extractor/tests/corpus/swift/types/generic-class-parameters-and-constraints.output @@ -62,33 +62,28 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Box" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩<⟨type_parameter⟩, ⟨type_parameter⟩> where ⟨type_constraint⟩, ⟨type_constraint⟩ {\n}" + modifier: modifier "class" source="class" + name_node: identifier "Box" source="Box" type_parameter: - type_parameter - name: identifier "T" - bound: - named_type_expr - name: identifier "Equatable" - type_parameter - name: identifier "U" + type_parameter source="⟨name_node⟩: ⟨bound⟩" + name_node: identifier "T" source="T" + bound: identifier "Equatable" source="Equatable" + type_parameter source="⟨name_node⟩" + name_node: identifier "U" source="U" type_constraint: - bound_type_constraint - type: - named_type_expr - name: identifier "U" - bound: - named_type_expr - name: identifier "Equatable" - equality_type_constraint - left: - named_type_expr - name: identifier "U" - right: - named_type_expr - name: identifier "T" + bound_type_constraint source="⟨type⟩: ⟨bound⟩" + type: identifier "U" source="U" + bound: identifier "Equatable" source="Equatable" + equality_type_constraint source="⟨left⟩ == ⟨right⟩" + left: identifier "U" source="U" + right: identifier "T" source="T" + member: + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/generic-type-arguments.output b/unified/extractor/tests/corpus/swift/types/generic-type-arguments.output index ce12c853d9d5..402ec3f8b780 100644 --- a/unified/extractor/tests/corpus/swift/types/generic-type-arguments.output +++ b/unified/extractor/tests/corpus/swift/types/generic-type-arguments.output @@ -56,28 +56,19 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "cache" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "cache" source="cache" type: - generic_type_expr - base: - named_type_expr - name: identifier "Dictionary" + generic_type_expr source="⟨base⟩<⟨type_argument⟩, ⟨type_argument⟩>" + base: identifier "Dictionary" source="Dictionary" type_argument: - named_type_expr - name: identifier "String" - generic_type_expr - base: - named_type_expr - name: identifier "Array" - type_argument: - named_type_expr - name: identifier "Int" - value: map_literal "[:]" + identifier "String" source="String" + generic_type_expr source="⟨base⟩<⟨type_argument⟩>" + base: identifier "Array" source="Array" + type_argument: identifier "Int" source="Int" + value: map_literal "[:]" source="[:]" diff --git a/unified/extractor/tests/corpus/swift/types/inline-array-type.output b/unified/extractor/tests/corpus/swift/types/inline-array-type.output index 5f70d9d55168..39657ec20345 100644 --- a/unified/extractor/tests/corpus/swift/types/inline-array-type.output +++ b/unified/extractor/tests/corpus/swift/types/inline-array-type.output @@ -59,19 +59,17 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "triple" - type: unsupported_node "[3 of Int]" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "triple" source="triple" + type: unsupported_node "[3 of Int]" source="[3 of Int]" value: - array_literal + array_literal source="[⟨element⟩, ⟨element⟩, ⟨element⟩]" element: - int_literal "1" - int_literal "2" - int_literal "3" + int_literal "1" source="1" + int_literal "2" source="2" + int_literal "3" source="3" diff --git a/unified/extractor/tests/corpus/swift/types/noncopyable-type.output b/unified/extractor/tests/corpus/swift/types/noncopyable-type.output index 4fb13ca13ece..0c6bb1fac189 100644 --- a/unified/extractor/tests/corpus/swift/types/noncopyable-type.output +++ b/unified/extractor/tests/corpus/swift/types/noncopyable-type.output @@ -50,22 +50,22 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "struct" - name: identifier "FileHandle" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩: ⟨base_type⟩ {\n ⟨member⟩\n}" + modifier: modifier "struct" source="struct" + name_node: identifier "FileHandle" source="FileHandle" base_type: - base_type - type: unsupported_node "~Copyable" + base_type source="⟨type⟩" + type: unsupported_node "~Copyable" source="~Copyable" member: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "descriptor" - type: - named_type_expr - name: identifier "Int" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "let" source="let" + pattern: identifier "descriptor" source="descriptor" + type: identifier "Int" source="Int" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.output b/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.output index 951768cd8444..ce8d1d6f9bd2 100644 --- a/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.output +++ b/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.output @@ -102,52 +102,45 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Box" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n var v: Int {\n ⟨member⟩\n ⟨member⟩\n }\n}" + modifier: modifier "class" source="class" + name_node: identifier "Box" source="Box" member: - variable_declaration + variable_declaration source="⟨modifier⟩ ⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" modifier: - modifier "var" - modifier "private" - pattern: - name_pattern - identifier: identifier "_v" - value: int_literal "0" - accessor_declaration - modifier: modifier "var" - name: identifier "v" - accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "Int" + modifier "var" source="var" + modifier "private" source="private" + pattern: identifier "_v" source="_v" + value: int_literal "0" source="0" + accessor_declaration source="⟨accessor_kind⟩ ⟨body⟩" + modifier: modifier "var" source="var" (external) + name_node: identifier "v" source="v" (external) + accessor_kind: accessor_kind "get" source="get" + type: identifier "Int" source="Int" (external) body: - block + block source="{ ⟨stmt⟩ }" stmt: - return_expr - value: - name_expr - identifier: identifier "_v" - accessor_declaration + return_expr source="return ⟨value⟩" + value: identifier "_v" source="_v" + accessor_declaration source="⟨accessor_kind⟩ ⟨body⟩" modifier: - modifier "var" - modifier "chained_declaration" - name: identifier "v" - accessor_kind: accessor_kind "set" - type: - named_type_expr - name: identifier "Int" + modifier "var" source="var" (external) + modifier "chained_declaration" source="" + name_node: identifier "v" source="v" (external) + accessor_kind: accessor_kind "set" source="set" + type: identifier "Int" source="Int" (external) body: - block + block source="{ ⟨stmt⟩ }" stmt: - assign_expr - target: - name_expr - identifier: identifier "_v" - value: - name_expr - identifier: identifier "newValue" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "_v" source="_v" + operator: infix_operator "=" source="=" + right: identifier "newValue" source="newValue" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/protocol-declaration.output b/unified/extractor/tests/corpus/swift/types/protocol-declaration.output index e848fb23eb3f..5f1155e278a8 100644 --- a/unified/extractor/tests/corpus/swift/types/protocol-declaration.output +++ b/unified/extractor/tests/corpus/swift/types/protocol-declaration.output @@ -1,5 +1,6 @@ protocol Drawable { func draw() + static func make() } --- @@ -31,19 +32,39 @@ sourceFile rightParen: ) parameters: funcKeyword: func + memberBlockItem + decl: + functionDecl + attributes: + name: identifier "make" + modifiers: + declModifier + name: static + signature: + functionSignature + parameterClause: + functionParameterClause + leftParen: ( + rightParen: ) + parameters: + funcKeyword: func modifiers: protocolKeyword: protocol --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "protocol" - name: identifier "Drawable" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n ⟨member⟩\n}" + modifier: modifier "protocol" source="protocol" + name_node: identifier "Drawable" source="Drawable" member: - function_declaration - name: identifier "draw" - body: block "func draw()" + function_declaration source="func ⟨name_node⟩()" + name_node: identifier "draw" source="draw" + body: block source="" + function_declaration source="⟨modifier⟩ func ⟨name_node⟩()" + modifier: modifier "static" source="static" + name_node: identifier "make" source="make" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/protocol-declaration.swift b/unified/extractor/tests/corpus/swift/types/protocol-declaration.swift index 030b68a60c04..417886c213de 100644 --- a/unified/extractor/tests/corpus/swift/types/protocol-declaration.swift +++ b/unified/extractor/tests/corpus/swift/types/protocol-declaration.swift @@ -1,3 +1,4 @@ protocol Drawable { func draw() + static func make() } diff --git a/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.output b/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.output index 83362740bb1e..8a43a3c70588 100644 --- a/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.output +++ b/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.output @@ -1,6 +1,7 @@ protocol P { var foo: Int { get } var bar: String { get set } + var count: Int { get } } --- @@ -71,35 +72,58 @@ sourceFile attributes: leftBrace: { rightBrace: } + memberBlockItem + decl: + variableDecl + attributes: + modifiers: + bindingSpecifier: var + bindings: + patternBinding + pattern: + identifierPattern + identifier: identifier "count" + typeAnnotation: + typeAnnotation + colon: : + type: + identifierType + name: identifier "Int" + accessorBlock: + accessorBlock + accessors: + accessorDecl + accessorSpecifier: get + attributes: + leftBrace: { + rightBrace: } modifiers: protocolKeyword: protocol --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "protocol" - name: identifier "P" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n var foo: Int { ⟨member⟩ }\n var bar: String { ⟨member⟩ ⟨member⟩ }\n var count: Int { ⟨member⟩ }\n}" + modifier: modifier "protocol" source="protocol" + name_node: identifier "P" source="P" member: - accessor_declaration - name: identifier "foo" - accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "Int" - accessor_declaration - name: identifier "bar" - accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "String" - accessor_declaration - modifier: modifier "chained_declaration" - name: identifier "bar" - accessor_kind: accessor_kind "set" - type: - named_type_expr - name: identifier "String" + accessor_declaration source="⟨accessor_kind⟩" + name_node: identifier "foo" source="foo" (external) + accessor_kind: accessor_kind "get" source="get" + type: identifier "Int" source="Int" (external) + accessor_declaration source="⟨accessor_kind⟩" + name_node: identifier "bar" source="bar" (external) + accessor_kind: accessor_kind "get" source="get" + type: identifier "String" source="String" (external) + accessor_declaration source="⟨accessor_kind⟩" + modifier: modifier "chained_declaration" source="" + name_node: identifier "bar" source="bar" (external) + accessor_kind: accessor_kind "set" source="set" + type: identifier "String" source="String" (external) + accessor_declaration source="⟨accessor_kind⟩" + name_node: identifier "count" source="count" (external) + accessor_kind: accessor_kind "get" source="get" + type: identifier "Int" source="Int" (external) diff --git a/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.swift b/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.swift index 44299edc15b9..24abb0e89fff 100644 --- a/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.swift +++ b/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.swift @@ -1,4 +1,5 @@ protocol P { var foo: Int { get } var bar: String { get set } + var count: Int { get } } diff --git a/unified/extractor/tests/corpus/swift/types/qualified-type.output b/unified/extractor/tests/corpus/swift/types/qualified-type.output index f561dc6ab2dc..3eada1c5f429 100644 --- a/unified/extractor/tests/corpus/swift/types/qualified-type.output +++ b/unified/extractor/tests/corpus/swift/types/qualified-type.output @@ -97,43 +97,48 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩\n\n⟨stmt⟩\n⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "struct" - name: identifier "Outer" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n}" + modifier: modifier "struct" source="struct" + name_node: identifier "Outer" source="Outer" member: - class_like_declaration - modifier: modifier "struct" - name: identifier "Inner" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n }" + modifier: modifier "struct" source="struct" + name_node: identifier "Inner" source="Inner" member: - class_like_declaration - modifier: modifier "struct" - name: identifier "Deep" - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "value" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {}" + modifier: modifier "struct" source="struct" + name_node: identifier "Deep" source="Deep" + member: + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "let" source="let" + pattern: identifier "value" source="value" type: - named_type_expr - qualifier: - named_type_expr - name: identifier "Outer" - name: identifier "Inner" - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "nested" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "Outer" source="Outer" + member_name_node: identifier "Inner" source="Inner" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "let" source="let" + pattern: identifier "nested" source="nested" type: - named_type_expr - qualifier: - named_type_expr - qualifier: - named_type_expr - name: identifier "Outer" - name: identifier "Inner" - name: identifier "Deep" + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: + member_access_expr source="⟨base⟩.⟨member_name_node⟩" + base: identifier "Outer" source="Outer" + member_name_node: identifier "Inner" source="Inner" + member_name_node: identifier "Deep" source="Deep" diff --git a/unified/extractor/tests/corpus/swift/types/static-function.output b/unified/extractor/tests/corpus/swift/types/static-function.output new file mode 100644 index 000000000000..dc761adb3481 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/static-function.output @@ -0,0 +1,61 @@ +class Factory { + static func make() {} +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + classDecl + attributes: + name: identifier "Factory" + memberBlock: + memberBlock + leftBrace: { + rightBrace: } + members: + memberBlockItem + decl: + functionDecl + attributes: + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + name: identifier "make" + modifiers: + declModifier + name: static + signature: + functionSignature + parameterClause: + functionParameterClause + leftParen: ( + rightParen: ) + parameters: + funcKeyword: func + modifiers: + classKeyword: class + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩" + stmt: + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "Factory" source="Factory" + member: + function_declaration source="⟨modifier⟩ func ⟨name_node⟩() ⟨body⟩" + modifier: modifier "static" source="static" + name_node: identifier "make" source="make" + body: block "{}" source="{}" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/types/static-function.swift b/unified/extractor/tests/corpus/swift/types/static-function.swift new file mode 100644 index 000000000000..3b70d91795cb --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/static-function.swift @@ -0,0 +1,3 @@ +class Factory { + static func make() {} +} diff --git a/unified/extractor/tests/corpus/swift/types/struct.output b/unified/extractor/tests/corpus/swift/types/struct.output index 57fb25c9e193..d1e99635635a 100644 --- a/unified/extractor/tests/corpus/swift/types/struct.output +++ b/unified/extractor/tests/corpus/swift/types/struct.output @@ -57,27 +57,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "struct" - name: identifier "Point" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n ⟨member⟩\n}" + modifier: modifier "struct" source="struct" + name_node: identifier "Point" source="Point" member: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" - type: - named_type_expr - name: identifier "Int" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "let" source="let" + pattern: identifier "x" source="x" + type: identifier "Int" source="Int" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "let" source="let" + pattern: identifier "y" source="y" + type: identifier "Int" source="Int" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/variables/assignment.output b/unified/extractor/tests/corpus/swift/variables/assignment.output index a011eb76cafc..cdfb041a8025 100644 --- a/unified/extractor/tests/corpus/swift/variables/assignment.output +++ b/unified/extractor/tests/corpus/swift/variables/assignment.output @@ -20,12 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - assign_expr - target: - name_expr - identifier: identifier "x" - value: int_literal "1" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "=" source="=" + right: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/variables/binding-modifier-does-not-leak-into-initializer.output b/unified/extractor/tests/corpus/swift/variables/binding-modifier-does-not-leak-into-initializer.output index d159cd6b37cb..d42155011399 100644 --- a/unified/extractor/tests/corpus/swift/variables/binding-modifier-does-not-leak-into-initializer.output +++ b/unified/extractor/tests/corpus/swift/variables/binding-modifier-does-not-leak-into-initializer.output @@ -61,31 +61,23 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "x" source="x" value: - switch_expr - value: - name_expr - identifier: identifier "y" + switch_expr source="switch ⟨value⟩ {\n⟨case⟩\n⟨case⟩\n}" + value: identifier "y" source="y" case: - switch_case - pattern: - expr_equality_pattern - expr: - name_expr - identifier: identifier "someConstant" + switch_case source="case ⟨pattern⟩: ⟨body⟩" + pattern: identifier "someConstant" source="someConstant" body: - block - stmt: int_literal "1" - switch_case + block source="⟨stmt⟩" + stmt: int_literal "1" source="1" + switch_case source="default: ⟨body⟩" body: - block - stmt: int_literal "2" + block source="⟨stmt⟩" + stmt: int_literal "2" source="2" diff --git a/unified/extractor/tests/corpus/swift/variables/compound-assignment.output b/unified/extractor/tests/corpus/swift/variables/compound-assignment.output index 485b5044ad69..300996f69952 100644 --- a/unified/extractor/tests/corpus/swift/variables/compound-assignment.output +++ b/unified/extractor/tests/corpus/swift/variables/compound-assignment.output @@ -20,13 +20,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - compound_assign_expr - target: - name_expr - identifier: identifier "x" - operator: infix_operator "+=" - value: int_literal "1" + binary_expr source="⟨left⟩ ⟨operator⟩ ⟨right⟩" + left: identifier "x" source="x" + operator: infix_operator "+=" source="+=" + right: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/variables/let-binding.output b/unified/extractor/tests/corpus/swift/variables/let-binding.output index 4774eb3eeca8..ae64722a29c5 100644 --- a/unified/extractor/tests/corpus/swift/variables/let-binding.output +++ b/unified/extractor/tests/corpus/swift/variables/let-binding.output @@ -25,13 +25,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - value: int_literal "1" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "x" source="x" + value: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.output b/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.output index a56feb445ace..2100371ba3ca 100644 --- a/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.output +++ b/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.output @@ -31,16 +31,12 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - value: int_literal "1" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "x" source="x" + type: identifier "Int" source="Int" + value: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.output b/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.output index 9470a578ad62..5a4907fed714 100644 --- a/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.output +++ b/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.output @@ -36,21 +36,17 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - value: int_literal "1" - variable_declaration + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" + pattern: identifier "x" source="x" + value: int_literal "1" source="1" + variable_declaration source="⟨modifier⟩ x = 1, ⟨pattern⟩ = ⟨value⟩" modifier: - modifier "let" - modifier "chained_declaration" - pattern: - name_pattern - identifier: identifier "y" - value: int_literal "2" + modifier "let" source="let" + modifier "chained_declaration" source="" + pattern: identifier "y" source="y" + value: int_literal "2" source="2" diff --git a/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.output b/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.output index 8071d5d52900..d95dfd51bc74 100644 --- a/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.output +++ b/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.output @@ -97,56 +97,48 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "C" + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩⟨member⟩⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "C" source="C" member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - value: int_literal "0" - accessor_declaration + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩ = ⟨value⟩ {\n willSet { print(newValue) }\n didSet { print(oldValue) }\n }" + modifier: modifier "var" source="var" + pattern: identifier "x" source="x" + type: identifier "Int" source="Int" + value: int_literal "0" source="0" + accessor_declaration source="⟨accessor_kind⟩ ⟨body⟩" modifier: - modifier "var" - modifier "chained_declaration" - name: identifier "x" - accessor_kind: accessor_kind "willSet" + modifier "var" source="var" (external) + modifier "chained_declaration" source="" + name_node: identifier "x" source="x" (external) + accessor_kind: accessor_kind "willSet" source="willSet" body: - block + block source="{ ⟨stmt⟩ }" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "newValue" - accessor_declaration + argument source="⟨value⟩" + value: identifier "newValue" source="newValue" + accessor_declaration source="⟨accessor_kind⟩ ⟨body⟩" modifier: - modifier "var" - modifier "chained_declaration" - name: identifier "x" - accessor_kind: accessor_kind "didSet" + modifier "var" source="var" (external) + modifier "chained_declaration" source="" + name_node: identifier "x" source="x" (external) + accessor_kind: accessor_kind "didSet" source="didSet" body: - block + block source="{ ⟨stmt⟩ }" stmt: - call_expr - callee: - name_expr - identifier: identifier "print" + call_expr source="⟨callee⟩(⟨argument⟩)" + callee: identifier "print" source="print" argument: - argument - value: - name_expr - identifier: identifier "oldValue" + argument source="⟨value⟩" + value: identifier "oldValue" source="oldValue" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output b/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output index 6b6bd81115ed..54f978c8c25b 100644 --- a/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output +++ b/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output @@ -36,23 +36,17 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "let" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "let" source="let" pattern: - tuple_pattern + tuple_expr source="(⟨element⟩, ⟨element⟩)" element: - pattern_element - pattern: - name_pattern - identifier: identifier "a" - pattern_element - pattern: - name_pattern - identifier: identifier "b" - value: - name_expr - identifier: identifier "pair" + argument source="⟨value⟩" + value: identifier "a" source="a" + argument source="⟨value⟩" + value: identifier "b" source="b" + value: identifier "pair" source="pair" diff --git a/unified/extractor/tests/corpus/swift/variables/var-binding.output b/unified/extractor/tests/corpus/swift/variables/var-binding.output index 63498105dc75..ee5a922da8f6 100644 --- a/unified/extractor/tests/corpus/swift/variables/var-binding.output +++ b/unified/extractor/tests/corpus/swift/variables/var-binding.output @@ -25,13 +25,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - value: int_literal "1" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩ = ⟨value⟩" + modifier: modifier "var" source="var" + pattern: identifier "x" source="x" + value: int_literal "1" source="1" diff --git a/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output b/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output index d841ce2bb583..4aac0af4ce32 100644 --- a/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output +++ b/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output @@ -25,15 +25,11 @@ sourceFile --- -top_level +top_level source="⟨body⟩" body: - block + block source="⟨stmt⟩" stmt: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" + variable_declaration source="⟨modifier⟩ ⟨pattern⟩: ⟨type⟩" + modifier: modifier "var" source="var" + pattern: identifier "x" source="x" + type: identifier "Int" source="Int" diff --git a/unified/extractor/tests/corpus_tests.rs b/unified/extractor/tests/corpus_tests.rs index f0a3c448f12b..c757f269d010 100644 --- a/unified/extractor/tests/corpus_tests.rs +++ b/unified/extractor/tests/corpus_tests.rs @@ -2,7 +2,7 @@ use std::fs; use std::path::Path; use codeql_extractor::extractor::desugaring; -use yeast::{dump::dump_ast, dump::dump_ast_with_type_errors}; +use yeast::dump::{DumpOptions, dump_ast, dump_ast_with_type_errors_and_options}; #[path = "../src/languages/mod.rs"] mod languages; @@ -98,9 +98,8 @@ fn collect_corpus_stems(dir: &Path, out: &mut Vec) { #[cfg(bazel)] fn corpus_dir() -> std::path::PathBuf { - let base = std::path::PathBuf::from( - std::env::var("RUNFILES_DIR").expect("RUNFILES_DIR not set"), - ); + let base = + std::path::PathBuf::from(std::env::var("RUNFILES_DIR").expect("RUNFILES_DIR not set")); std::fs::read_dir(&base) .expect("failed to read RUNFILES_DIR") .filter_map(Result::ok) @@ -124,7 +123,7 @@ fn test_corpus() { let output_schema = yeast::node_types_yaml::schema_from_yaml(languages::OUTPUT_AST_SCHEMA) .expect("Failed to parse OUTPUT_AST_SCHEMA YAML"); - let lang_corpus_dir = corpus_dir.join(&lang.prefix); + let lang_corpus_dir = corpus_dir.join(lang.prefix); if !lang_corpus_dir.exists() { continue; } @@ -224,11 +223,15 @@ fn test_corpus() { )); } Ok(actual) => { - let actual_dump = dump_ast_with_type_errors( + let actual_dump = dump_ast_with_type_errors_and_options( &actual, actual.get_root(), &case_input, &output_schema, + &DumpOptions { + show_abridged_source: true, + ..DumpOptions::default() + }, ); if update_mode { case.expected = actual_dump.trim().to_string(); diff --git a/unified/extractor/tests/fixtures/let_x.swiftsyntax.json b/unified/extractor/tests/fixtures/let_x.swiftsyntax.json index 6c3d18e2fef0..a0b911813fff 100644 --- a/unified/extractor/tests/fixtures/let_x.swiftsyntax.json +++ b/unified/extractor/tests/fixtures/let_x.swiftsyntax.json @@ -1,196 +1,80 @@ { + "$end": 10, + "$lineStarts": [ + 0, + 10 + ], + "$pos": 0, "endOfFileToken": { + "$end": 10, + "$pos": 10, "kind": "token", - "range": { - "end": { - "column": 1, - "line": 2, - "offset": 10 - }, - "start": { - "column": 1, - "line": 2, - "offset": 10 - } - }, "text": "", "tokenKind": "endOfFile" }, "kind": "sourceFile", - "range": { - "end": { - "column": 1, - "line": 2, - "offset": 10 - }, - "start": { - "column": 1, - "line": 1, - "offset": 0 - } - }, "statements": [ { + "$end": 9, + "$pos": 0, "item": { + "$end": 9, + "$pos": 0, "attributes": [], "bindings": [ { + "$end": 9, + "$pos": 4, "initializer": { + "$end": 9, + "$pos": 6, "equal": { + "$end": 7, + "$pos": 6, "kind": "token", - "range": { - "end": { - "column": 8, - "line": 1, - "offset": 7 - }, - "start": { - "column": 7, - "line": 1, - "offset": 6 - } - }, "text": "=", "tokenKind": "equal" }, "kind": "initializerClause", - "range": { - "end": { - "column": 10, - "line": 1, - "offset": 9 - }, - "start": { - "column": 7, - "line": 1, - "offset": 6 - } - }, "value": { + "$end": 9, + "$pos": 8, "kind": "integerLiteralExpr", "literal": { + "$end": 9, + "$pos": 8, "kind": "token", - "range": { - "end": { - "column": 10, - "line": 1, - "offset": 9 - }, - "start": { - "column": 9, - "line": 1, - "offset": 8 - } - }, "text": "1", "tokenKind": "integerLiteral(\"1\")" - }, - "range": { - "end": { - "column": 10, - "line": 1, - "offset": 9 - }, - "start": { - "column": 9, - "line": 1, - "offset": 8 - } } } }, "kind": "patternBinding", "pattern": { + "$end": 5, + "$pos": 4, "identifier": { + "$end": 5, + "$pos": 4, "kind": "token", - "range": { - "end": { - "column": 6, - "line": 1, - "offset": 5 - }, - "start": { - "column": 5, - "line": 1, - "offset": 4 - } - }, "text": "x", "tokenKind": "identifier(\"x\")" }, - "kind": "identifierPattern", - "range": { - "end": { - "column": 6, - "line": 1, - "offset": 5 - }, - "start": { - "column": 5, - "line": 1, - "offset": 4 - } - } - }, - "range": { - "end": { - "column": 10, - "line": 1, - "offset": 9 - }, - "start": { - "column": 5, - "line": 1, - "offset": 4 - } + "kind": "identifierPattern" } } ], "bindingSpecifier": { + "$end": 3, + "$pos": 0, "kind": "token", - "range": { - "end": { - "column": 4, - "line": 1, - "offset": 3 - }, - "start": { - "column": 1, - "line": 1, - "offset": 0 - } - }, "text": "let", "tokenKind": "keyword(SwiftSyntax.Keyword.let)" }, "kind": "variableDecl", - "modifiers": [], - "range": { - "end": { - "column": 10, - "line": 1, - "offset": 9 - }, - "start": { - "column": 1, - "line": 1, - "offset": 0 - } - } + "modifiers": [] }, - "kind": "codeBlockItem", - "range": { - "end": { - "column": 10, - "line": 1, - "offset": 9 - }, - "start": { - "column": 1, - "line": 1, - "offset": 0 - } - } + "kind": "codeBlockItem" } ] } diff --git a/unified/extractor/tests/location_tests.rs b/unified/extractor/tests/location_tests.rs new file mode 100644 index 000000000000..2fd288cfb69a --- /dev/null +++ b/unified/extractor/tests/location_tests.rs @@ -0,0 +1,186 @@ +use yeast::Ast; + +#[path = "../src/languages/mod.rs"] +mod languages; + +fn desugar(source: &str) -> Ast { + let lang = languages::all_language_specs() + .into_iter() + .find(|language| { + language + .file_globs + .iter() + .any(|glob| glob.contains("swift")) + }) + .expect("Swift language spec"); + let parsed = (lang.parser)(source.as_bytes()).expect("Swift should parse"); + lang.desugarer + .run_from_ast(parsed.ast) + .expect("Swift should desugar") +} + +fn spans(ast: &Ast, source: &str, kind: &str, content: Option<&str>) -> Vec { + ranges(ast, kind, content) + .into_iter() + .filter_map(|range| source.get(range).map(str::to_owned)) + .collect() +} + +fn ranges(ast: &Ast, kind: &str, content: Option<&str>) -> Vec> { + ast.reachable_node_ids() + .into_iter() + .filter_map(|id| { + let node = ast.get_node(id)?; + if node.kind_name() != kind + || content + .is_some_and(|content| node.opt_string_content().as_deref() != Some(content)) + { + return None; + } + node.source_range() + .map(|range| range.start_byte..range.end_byte) + }) + .collect() +} + +fn assert_has_span(ast: &Ast, source: &str, kind: &str, content: Option<&str>, expected: &str) { + let spans = spans(ast, source, kind, content); + assert!( + spans.iter().any(|span| span == expected), + "expected {kind} {content:?} to span {expected:?}, got {spans:?}" + ); +} + +fn assert_has_empty_span(ast: &Ast, kind: &str, content: Option<&str>, expected_offset: usize) { + let ranges = ranges(ast, kind, content); + assert!( + ranges + .iter() + .any(|range| range.start == expected_offset && range.end == expected_offset), + "expected {kind} {content:?} to have an empty span at {expected_offset}, got {ranges:?}" + ); +} + +#[test] +fn generic_type_children_have_local_ranges() { + let source = "let x = C()"; + let ast = desugar(source); + + assert_has_span(&ast, source, "generic_type_expr", None, "C"); + assert_has_span(&ast, source, "identifier", Some("C"), "C"); + assert_has_span(&ast, source, "identifier", Some("Foo"), "Foo"); +} + +#[test] +fn nested_calls_include_their_delimiters() { + let source = r#"sink(source("first"), source("second"))"#; + let ast = desugar(source); + + assert_has_span(&ast, source, "call_expr", None, r#"source("first")"#); + assert_has_span(&ast, source, "call_expr", None, r#"source("second")"#); +} + +#[test] +fn enum_case_constructors_include_their_parameter_clause() { + let source = "enum Result { case success(T) }"; + let ast = desugar(source); + + assert_has_span(&ast, source, "constructor_declaration", None, "success(T)"); +} + +#[test] +fn synthesized_condition_and_switch_nodes_use_child_ranges() { + let source = "if a, b { c }\nswitch x { case a, b: c }"; + let ast = desugar(source); + + assert_has_span(&ast, source, "binary_expr", None, "a, b"); + assert_has_empty_span( + &ast, + "infix_operator", + Some("&&"), + source.find(',').unwrap(), + ); + assert_has_span(&ast, source, "or_pattern", None, "a, b"); + assert_has_span(&ast, source, "block", None, "c"); +} + +#[test] +fn declaration_and_operator_tokens_keep_precise_ranges() { + let source = "func f() { return x }\nlet y = try? await value! as? T\nlet z = value is T"; + let ast = desugar(source); + + assert_has_span(&ast, source, "block", None, "{ return x }"); + assert_has_span(&ast, source, "return_expr", None, "return x"); + assert_has_span(&ast, source, "prefix_operator", Some("try?"), "try?"); + assert_has_span(&ast, source, "prefix_operator", Some("await"), "await"); + assert_has_span(&ast, source, "postfix_operator", Some("!"), "!"); + assert_has_span(&ast, source, "infix_operator", Some("as?"), "as?"); + assert_has_span(&ast, source, "infix_operator", Some("is"), "is"); +} + +#[test] +fn closure_bodies_exclude_closure_delimiters() { + let source = "let f = { (x: Int) -> Int in x * 2 }"; + let ast = desugar(source); + + assert_has_span(&ast, source, "block", None, "x * 2"); +} + +#[test] +fn synthetic_optional_binding_nodes_anchor_to_binding_keyword() { + let source = "if let value = optional {}"; + let ast = desugar(source); + let binding_start = source.find("let").unwrap(); + + assert_has_empty_span(&ast, "member_access_expr", None, binding_start); + assert_has_empty_span(&ast, "identifier", Some("Optional"), binding_start); + assert_has_empty_span(&ast, "identifier", Some("some"), binding_start); + assert_has_span(&ast, source, "modifier", Some("let"), "let"); +} + +#[test] +fn synthetic_type_and_modifier_nodes_use_empty_scope_start_ranges() { + let source = "let array: [T]\nlet optional: T?\nenum E { case a, b }"; + let ast = desugar(source); + + assert_has_empty_span(&ast, "identifier", Some("Array"), source.find('[').unwrap()); + assert_has_empty_span( + &ast, + "identifier", + Some("Optional"), + source.find("T?").unwrap(), + ); + let case_a = source.find("a, b").unwrap(); + let case_b = case_a + "a, ".len(); + assert_has_empty_span(&ast, "modifier", Some("enum_case"), case_a); + assert_has_empty_span(&ast, "modifier", Some("enum_case"), case_b); + assert_has_empty_span(&ast, "modifier", Some("chained_declaration"), case_b); +} + +#[test] +fn import_member_chain_excludes_import_keyword() { + let source = "import Foundation.Networking.URLSession"; + let ast = desugar(source); + + assert_has_span( + &ast, + source, + "member_access_expr", + None, + "Foundation.Networking", + ); + assert_has_span( + &ast, + source, + "member_access_expr", + None, + "Foundation.Networking.URLSession", + ); + assert_has_span( + &ast, + source, + "import_declaration", + None, + "import Foundation.Networking.URLSession", + ); +} diff --git a/unified/ql/consistency-queries/CaptureSsaConsistency.ql b/unified/ql/consistency-queries/CaptureSsaConsistency.ql new file mode 100644 index 000000000000..19f35b7371fb --- /dev/null +++ b/unified/ql/consistency-queries/CaptureSsaConsistency.ql @@ -0,0 +1,3 @@ +private import unified +private import codeql.unified.internal.dataflow.CaptureSsa +import CaptureSsaOutput::ConsistencyChecks diff --git a/unified/ql/consistency-queries/DataFlowConsistency.ql b/unified/ql/consistency-queries/DataFlowConsistency.ql new file mode 100644 index 000000000000..0f8bbde49324 --- /dev/null +++ b/unified/ql/consistency-queries/DataFlowConsistency.ql @@ -0,0 +1,20 @@ +private import unified +private import codeql.unified.internal.dataflow.AllDataFlow +private import codeql.dataflow.internal.DataFlowImplConsistency + +module ConsistencyInput implements InputSig { + predicate argHasPostUpdateExclude(DataFlowInput::ArgumentNode n) { + not exists(n.getBasicBlock()) // ignore unreachable data flow nodes + } + + predicate reverseReadExclude(DataFlow::Node n) { + // When read steps are contributed by a language plugin we currently don't expect them to + // have post-update nodes for reverse-reads. + any(DataFlowPlugin p).step(n, any(Step s | s.read(_)), _) + } +} + +module ConsistencyOutput = + MakeConsistency; + +import ConsistencyOutput diff --git a/unified/ql/consistency-queries/LocalSsaConsistency.ql b/unified/ql/consistency-queries/LocalSsaConsistency.ql new file mode 100644 index 000000000000..ca0d9550ad20 --- /dev/null +++ b/unified/ql/consistency-queries/LocalSsaConsistency.ql @@ -0,0 +1,4 @@ +private import unified +private import codeql.unified.internal.dataflow.LocalSsa +import LocalSsaOutput::Consistency +import LocalSsaDataFlowOutput::DfConsistency diff --git a/unified/ql/consistency-queries/TypeInferenceConsistency.ql b/unified/ql/consistency-queries/TypeInferenceConsistency.ql new file mode 100644 index 000000000000..8e5c85b8be6e --- /dev/null +++ b/unified/ql/consistency-queries/TypeInferenceConsistency.ql @@ -0,0 +1,8 @@ +/** + * @name Type inference inconsistencies + * @description Lists the type inference inconsistencies in the database. This query is intended for internal use. + * @kind table + * @id unified/diagnostics/type-inference-consistency + */ + +import codeql.unified.internal.typeinference.TypeInferenceConsistency diff --git a/unified/ql/lib/codeql/Definitions.qll b/unified/ql/lib/codeql/Definitions.qll index 3eb6ddcef102..c47a37158724 100644 --- a/unified/ql/lib/codeql/Definitions.qll +++ b/unified/ql/lib/codeql/Definitions.qll @@ -3,14 +3,14 @@ */ private import unified -private import codeql.unified.internal.StaticNameBinding +private import codeql.unified.internal.NameBinding /** * Holds if `reference` refers to `definition`. */ cached -predicate definitionOf(Identifier reference, NameDeclaration definition, string kind) { - definition = getStaticBindingTarget(reference) and - not reference instanceof NameDeclaration and +predicate definitionOf(Identifier reference, NameBinding definition, string kind) { + definition = getStaticBindingTargetFromIdentifier(reference) and + not reference instanceof NameBinding and kind = "name" } diff --git a/unified/ql/lib/codeql/files/FileSystem.qll b/unified/ql/lib/codeql/files/FileSystem.qll index 897a855612be..59c7900c550f 100644 --- a/unified/ql/lib/codeql/files/FileSystem.qll +++ b/unified/ql/lib/codeql/files/FileSystem.qll @@ -37,7 +37,7 @@ module Folder = Impl::Folder; /** A file. */ class File extends Container, Impl::File { /** Holds if this file was extracted from ordinary source code. */ - predicate fromSource() { any() } + predicate fromSource() { exists(this.getRelativePath()) } /** * Gets the number of lines containing code in this file. This value diff --git a/unified/ql/lib/codeql/unified/internal/AnalysisQuality.qll b/unified/ql/lib/codeql/unified/internal/AnalysisQuality.qll index 6f899bba4283..cf837f2f3923 100644 --- a/unified/ql/lib/codeql/unified/internal/AnalysisQuality.qll +++ b/unified/ql/lib/codeql/unified/internal/AnalysisQuality.qll @@ -1,10 +1,13 @@ private import unified private import codeql.util.ReportStats -private import codeql.unified.internal.StaticNameBinding -private import codeql.unified.internal.LocalNameBinding -private import codeql.unified.internal.NameBindingPlugin +private import codeql.unified.internal.NameBinding +private import codeql.unified.internal.dataflow.DataFlowCall +private import codeql.unified.internal.dataflow.DataFlowCallable +private import codeql.unified.internal.dataflow.CallGraph +private import codeql.unified.internal.typeinference.Type as Type +private import codeql.unified.internal.typeinference.TypeMention -/** Stats about identifiers that static name binding could resolve. */ +/** Stats about name nodes that static name binding could resolve. */ module StaticNameResolutionStats implements EntityStatsSig { /** * Holds if `name` has been positively identified as referring to a value, so static name binding @@ -12,7 +15,7 @@ module StaticNameResolutionStats implements EntityStatsSig { */ private predicate resolvesToValue(Identifier name) { exists(AstNode decl | - decl = getStaticBindingTarget(name).getDeclaration() and + decl = getStaticBindingTargetFromIdentifier(name).getDeclaration() and not decl instanceof ClassLikeDeclaration and not decl instanceof TypeAliasDeclaration and not decl instanceof TypeParameter and @@ -44,15 +47,21 @@ module StaticNameResolutionStats implements EntityStatsSig { this = getIdentifierFromRef(ref) and not memberAccessDependsOnTypeInference(ref) ) and - not this instanceof NameDeclaration + not this instanceof NameBinding } NameBindingNode getTarget() { - ( - result.asIdentifier() = getStaticBindingTarget(this) - or - result.isModuleScopeNode(_) and - result.(NamespaceNode).ref().isIdentifier(this) + result.asIdentifier() = getStaticBindingTargetFromIdentifier(this) + or + result.isModuleScopeNode(_) and + result.(NamespaceNode).ref().isIdentifier(this) + or + // Resolving to an implicitly-declared local such as "self" should count as + // as a successfully resolved name + exists(LocalName implicitLocal | + implicitLocal = this.(LocalNameAccess).getLocalName() and + not exists(implicitLocal.getABinding()) and + result.isLocalName(implicitLocal) ) } @@ -83,3 +92,84 @@ module FilesCoveredByModuleManifestStats implements EntityStatsSig { module FilesCoveredByModuleManifestStatsReport = EntityReportStats; + +module CallGraphStats implements EntityStatsSig { + class Candidate extends CallExpr { + Candidate() { exists(DataFlowCall c | c.asExplicitCall() = this) } + + DataFlowCall getDataFlowCall() { result.asExplicitCall() = this } + + DataFlowCallable getTarget() { result = viableCallable(this.getDataFlowCall()) } + + predicate isOk() { exists(this.getTarget()) } + } + + string getOkText() { result = "calls with call target" } + + string getNotOkText() { result = "calls with missing call target" } +} + +module CallGraphStatsReport = EntityReportStats; + +module TypeMentionStats implements EntityStatsSig { + class Candidate extends ExprTypeMention { + predicate isOk() { this.getType() = any(Type::Type t | not t instanceof Type::UnknownType) } + } + + string getOkText() { result = "resolvable type mentions" } + + string getNotOkText() { result = "unresolvable type mentions" } +} + +module TypeMentionStatsReport = EntityReportStats; + +module TaintReach { + private class Candidate extends DataFlow::Node { + Candidate() { exists(this.asExpr()) } + } + + module TaintReachConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { Models::isSource(node, _) } + + predicate isSink(DataFlow::Node node) { node instanceof Candidate } + } + + module TaintReachFlow = TaintTracking::Global; + + DataFlow::Node taintedNode() { TaintReachFlow::flowTo(result) } + + int numberOfTaintedNodes() { result = count(taintedNode()) } + + int numberOfCandidates() { result = count(Candidate c) } + + int perMillionNodes() { + result = (numberOfTaintedNodes() * 1000000) / numberOfCandidates() + or + numberOfCandidates() = 0 and result = 0 + } +} + +/** + * Gets summary statistics about taint. + */ +predicate taintStats(string key, int value) { + // The keys must match those in DCA summary profiles + key = "Taint sources - active" and value = count(DataFlow::Node n | Models::isSource(n, "remote")) + or + key = "Taint sources - disabled" and + value = count(DataFlow::Node n | Models::isSource(n, any(string s | s != "remote"))) + or + key = "Taint sources - sensitive data" and none() + or + key = "Taint edges - number of edges" and none() + or + key = "Taint reach - nodes tainted" and value = TaintReach::numberOfTaintedNodes() + or + key = "Taint reach - total non-summary nodes" and none() + or + key = "Taint reach - per million nodes" and value = TaintReach::perMillionNodes() + or + key = "Taint sinks - query sinks" and value = count(DataFlow::Node n | Models::isSink(n, _)) + or + key = "Taint sinks - cryptographic operations" and none() +} diff --git a/unified/ql/lib/codeql/unified/internal/Ast.qll b/unified/ql/lib/codeql/unified/internal/Ast.qll index cf927e257a9c..9e8fb237ed2c 100644 --- a/unified/ql/lib/codeql/unified/internal/Ast.qll +++ b/unified/ql/lib/codeql/unified/internal/Ast.qll @@ -104,7 +104,7 @@ module Unified { final F::AccessorKind getAccessorKind() { unified_accessor_declaration_def(this, result, _) } /** Gets the node corresponding to the field `body`. */ - final F::Block getBody() { unified_accessor_declaration_body(this, result) } + final override F::Block getBody() { unified_accessor_declaration_body(this, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getModifier(int i) { unified_accessor_declaration_modifier(this, i, result) } @@ -112,19 +112,19 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_accessor_declaration_def(this, _, result) } + /** Gets the node corresponding to the field `name_node`. */ + final override F::Identifier getNameNode() { unified_accessor_declaration_def(this, _, result) } /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getParameter(int i) { + final override F::Parameter getParameter(int i) { unified_accessor_declaration_parameter(this, i, result) } /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getAParameter() { result = this.getParameter(_) } + final override F::Parameter getAParameter() { result = this.getParameter(_) } /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_accessor_declaration_type(this, result) } + final F::Expr getType() { unified_accessor_declaration_type(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -154,8 +154,8 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_argument_name(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final F::Identifier getNameNode() { unified_argument_name_node(this, result) } /** Gets the node corresponding to the field `value`. */ final F::Expr getValue() { unified_argument_def(this, result) } @@ -163,7 +163,7 @@ module Unified { /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { unified_argument_modifier(this, _, result) or - unified_argument_name(this, result) or + unified_argument_name_node(this, result) or unified_argument_def(this, result) } } @@ -183,30 +183,13 @@ module Unified { final override F::AstNode getAFieldOrChild() { unified_array_literal_element(this, _, result) } } - /** A class representing `assign_expr` nodes. */ - class AssignExpr extends @unified_assign_expr, F::Expr { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "AssignExpr" } - - /** Gets the node corresponding to the field `target`. */ - final F::Expr getTarget() { unified_assign_expr_def(this, result, _) } - - /** Gets the node corresponding to the field `value`. */ - final F::Expr getValue() { unified_assign_expr_def(this, _, result) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { - unified_assign_expr_def(this, result, _) or unified_assign_expr_def(this, _, result) - } - } - /** A class representing `associated_type_declaration` nodes. */ class AssociatedTypeDeclaration extends @unified_associated_type_declaration, F::Member { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AssociatedTypeDeclaration" } /** Gets the node corresponding to the field `bound`. */ - final F::TypeExpr getBound() { unified_associated_type_declaration_bound(this, result) } + final F::Expr getBound() { unified_associated_type_declaration_bound(this, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getModifier(int i) { @@ -216,8 +199,10 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_associated_type_declaration_def(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final override F::Identifier getNameNode() { + unified_associated_type_declaration_def(this, result) + } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -239,7 +224,7 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_base_type_def(this, result) } + final F::Expr getType() { unified_base_type_def(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -296,10 +281,10 @@ module Unified { final override string getAPrimaryQlClass() { result = "BoundTypeConstraint" } /** Gets the node corresponding to the field `bound`. */ - final F::TypeExpr getBound() { unified_bound_type_constraint_def(this, result, _) } + final F::Expr getBound() { unified_bound_type_constraint_def(this, result, _) } /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_bound_type_constraint_def(this, _, result) } + final F::Expr getType() { unified_bound_type_constraint_def(this, _, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -313,11 +298,13 @@ module Unified { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BreakExpr" } - /** Gets the node corresponding to the field `label`. */ - final F::Identifier getLabel() { unified_break_expr_label(this, result) } + /** Gets the node corresponding to the field `label_name_node`. */ + final F::Identifier getLabelNameNode() { unified_break_expr_label_name_node(this, result) } /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { unified_break_expr_label(this, result) } + final override F::AstNode getAFieldOrChild() { + unified_break_expr_label_name_node(this, result) + } } /** A class representing `builtin_expr` tokens. */ @@ -327,7 +314,7 @@ module Unified { } /** A class representing `bulk_importing_pattern` nodes. */ - class BulkImportingPattern extends @unified_bulk_importing_pattern, F::Pattern { + class BulkImportingPattern extends @unified_bulk_importing_pattern, F::Expr { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BulkImportingPattern" } @@ -357,7 +344,7 @@ module Unified { final F::Argument getAnArgument() { result = this.getArgument(_) } /** Gets the node corresponding to the field `callee`. */ - final F::ExprOrType getCallee() { unified_call_expr_def(this, result) } + final F::Expr getCallee() { unified_call_expr_def(this, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getModifier(int i) { unified_call_expr_modifier(this, i, result) } @@ -373,7 +360,19 @@ module Unified { } } - class Callable extends @unified_callable, F::AstNode { } + class Callable extends @unified_callable, F::AstNode { + /** Gets the node corresponding to the field `body`. */ + F::Block getBody() { none() } + + /** Gets the node corresponding to the field `parameter`. */ + F::Parameter getParameter(int i) { none() } + + /** Gets the node corresponding to the field `parameter`. */ + F::Parameter getAParameter() { none() } + + /** Gets the node corresponding to the field `return_type`. */ + F::Expr getReturnType() { none() } + } /** A class representing `catch_clause` nodes. */ class CatchClause extends @unified_catch_clause, F::AstNode { @@ -390,7 +389,7 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_catch_clause_pattern(this, result) } + final F::Expr getPattern() { unified_catch_clause_pattern(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -413,6 +412,11 @@ module Unified { /** Gets the node corresponding to the field `base_type`. */ final F::BaseType getABaseType() { result = this.getBaseType(_) } + /** Gets the node corresponding to the field `extension_target`. */ + final F::Expr getExtensionTarget() { + unified_class_like_declaration_extension_target(this, result) + } + /** Gets the node corresponding to the field `member`. */ final F::Member getMember(int i) { unified_class_like_declaration_member(this, i, result) } @@ -427,8 +431,10 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_class_like_declaration_name(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final override F::Identifier getNameNode() { + unified_class_like_declaration_name_node(this, result) + } /** Gets the node corresponding to the field `type_constraint`. */ final F::TypeConstraint getTypeConstraint(int i) { @@ -449,38 +455,17 @@ module Unified { /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { unified_class_like_declaration_base_type(this, _, result) or + unified_class_like_declaration_extension_target(this, result) or unified_class_like_declaration_member(this, _, result) or unified_class_like_declaration_modifier(this, _, result) or - unified_class_like_declaration_name(this, result) or + unified_class_like_declaration_name_node(this, result) or unified_class_like_declaration_type_constraint(this, _, result) or unified_class_like_declaration_type_parameter(this, _, result) } } - /** A class representing `compound_assign_expr` nodes. */ - class CompoundAssignExpr extends @unified_compound_assign_expr, F::Expr { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "CompoundAssignExpr" } - - /** Gets the node corresponding to the field `operator`. */ - final F::InfixOperator getOperator() { unified_compound_assign_expr_def(this, result, _, _) } - - /** Gets the node corresponding to the field `target`. */ - final F::Expr getTarget() { unified_compound_assign_expr_def(this, _, result, _) } - - /** Gets the node corresponding to the field `value`. */ - final F::Expr getValue() { unified_compound_assign_expr_def(this, _, _, result) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { - unified_compound_assign_expr_def(this, result, _, _) or - unified_compound_assign_expr_def(this, _, result, _) or - unified_compound_assign_expr_def(this, _, _, result) - } - } - /** A class representing `conditional_pattern` nodes. */ - class ConditionalPattern extends @unified_conditional_pattern, F::Pattern { + class ConditionalPattern extends @unified_conditional_pattern, F::Expr { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ConditionalPattern" } @@ -494,7 +479,7 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_conditional_pattern_def(this, _, result) } + final F::Expr getPattern() { unified_conditional_pattern_def(this, _, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -512,7 +497,7 @@ module Unified { final override string getAPrimaryQlClass() { result = "ConstructorDeclaration" } /** Gets the node corresponding to the field `body`. */ - final F::Block getBody() { unified_constructor_declaration_def(this, result) } + final override F::Block getBody() { unified_constructor_declaration_def(this, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getModifier(int i) { @@ -522,66 +507,52 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_constructor_declaration_name(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final override F::Identifier getNameNode() { + unified_constructor_declaration_name_node(this, result) + } /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getParameter(int i) { + final override F::Parameter getParameter(int i) { unified_constructor_declaration_parameter(this, i, result) } /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getAParameter() { result = this.getParameter(_) } + final override F::Parameter getAParameter() { result = this.getParameter(_) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { unified_constructor_declaration_def(this, result) or unified_constructor_declaration_modifier(this, _, result) or - unified_constructor_declaration_name(this, result) or + unified_constructor_declaration_name_node(this, result) or unified_constructor_declaration_parameter(this, _, result) } } - /** A class representing `constructor_pattern` nodes. */ - class ConstructorPattern extends @unified_constructor_pattern, F::Pattern { + /** A class representing `continue_expr` nodes. */ + class ContinueExpr extends @unified_continue_expr, F::Expr { /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "ConstructorPattern" } - - /** Gets the node corresponding to the field `constructor`. */ - final F::ExprOrType getConstructor() { unified_constructor_pattern_def(this, result) } - - /** Gets the node corresponding to the field `element`. */ - final F::PatternElement getElement(int i) { - unified_constructor_pattern_element(this, i, result) - } - - /** Gets the node corresponding to the field `element`. */ - final F::PatternElement getAnElement() { result = this.getElement(_) } - - /** Gets the node corresponding to the field `modifier`. */ - final F::Modifier getModifier(int i) { unified_constructor_pattern_modifier(this, i, result) } + final override string getAPrimaryQlClass() { result = "ContinueExpr" } - /** Gets the node corresponding to the field `modifier`. */ - final F::Modifier getAModifier() { result = this.getModifier(_) } + /** Gets the node corresponding to the field `label_name_node`. */ + final F::Identifier getLabelNameNode() { unified_continue_expr_label_name_node(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { - unified_constructor_pattern_def(this, result) or - unified_constructor_pattern_element(this, _, result) or - unified_constructor_pattern_modifier(this, _, result) + unified_continue_expr_label_name_node(this, result) } } - /** A class representing `continue_expr` nodes. */ - class ContinueExpr extends @unified_continue_expr, F::Expr { + /** A class representing `defer_stmt` nodes. */ + class DeferStmt extends @unified_defer_stmt, F::Stmt { /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "ContinueExpr" } + final override string getAPrimaryQlClass() { result = "DeferStmt" } - /** Gets the node corresponding to the field `label`. */ - final F::Identifier getLabel() { unified_continue_expr_label(this, result) } + /** Gets the node corresponding to the field `body`. */ + final F::Expr getBody() { unified_defer_stmt_def(this, result) } /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { unified_continue_expr_label(this, result) } + final override F::AstNode getAFieldOrChild() { unified_defer_stmt_def(this, result) } } /** A class representing `destructor_declaration` nodes. */ @@ -592,7 +563,7 @@ module Unified { final override string getAPrimaryQlClass() { result = "DestructorDeclaration" } /** Gets the node corresponding to the field `body`. */ - final F::Block getBody() { unified_destructor_declaration_def(this, result) } + final override F::Block getBody() { unified_destructor_declaration_def(this, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getModifier(int i) { @@ -646,10 +617,10 @@ module Unified { final override string getAPrimaryQlClass() { result = "EqualityTypeConstraint" } /** Gets the node corresponding to the field `left`. */ - final F::TypeExpr getLeft() { unified_equality_type_constraint_def(this, result, _) } + final F::Expr getLeft() { unified_equality_type_constraint_def(this, result, _) } /** Gets the node corresponding to the field `right`. */ - final F::TypeExpr getRight() { unified_equality_type_constraint_def(this, _, result) } + final F::Expr getRight() { unified_equality_type_constraint_def(this, _, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -658,23 +629,29 @@ module Unified { } } - class Expr extends @unified_expr, F::ExprOrOperator, F::ExprOrType, F::Stmt { } + class Expr extends @unified_expr, F::ExprOrOperator, F::Stmt { } + + class ExprOrOperator extends @unified_expr_or_operator, F::AstNode { } - /** A class representing `expr_equality_pattern` nodes. */ - class ExprEqualityPattern extends @unified_expr_equality_pattern, F::Pattern { + /** A class representing `expr_pattern` nodes. */ + class ExprPattern extends @unified_expr_pattern, F::Expr { /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "ExprEqualityPattern" } + final override string getAPrimaryQlClass() { result = "ExprPattern" } /** Gets the node corresponding to the field `expr`. */ - final F::Expr getExpr() { unified_expr_equality_pattern_def(this, result) } + final F::Expr getExpr() { unified_expr_pattern_def(this, result) } - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { unified_expr_equality_pattern_def(this, result) } - } + /** Gets the node corresponding to the field `modifier`. */ + final F::Modifier getModifier(int i) { unified_expr_pattern_modifier(this, i, result) } - class ExprOrOperator extends @unified_expr_or_operator, F::AstNode { } + /** Gets the node corresponding to the field `modifier`. */ + final F::Modifier getAModifier() { result = this.getModifier(_) } - class ExprOrType extends @unified_expr_or_type, F::AstNode { } + /** Gets a field or child node of this node. */ + final override F::AstNode getAFieldOrChild() { + unified_expr_pattern_def(this, result) or unified_expr_pattern_modifier(this, _, result) + } + } /** A class representing `fixity` tokens. */ class Fixity extends @unified_token_fixity, F::AstNode, F::Token { @@ -709,7 +686,7 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_for_each_stmt_def(this, _, result) } + final F::Expr getPattern() { unified_for_each_stmt_def(this, _, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -727,7 +704,7 @@ module Unified { final override string getAPrimaryQlClass() { result = "FunctionDeclaration" } /** Gets the node corresponding to the field `body`. */ - final F::Block getBody() { unified_function_declaration_body(this, result) } + final override F::Block getBody() { unified_function_declaration_body(this, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getModifier(int i) { unified_function_declaration_modifier(this, i, result) } @@ -735,19 +712,21 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_function_declaration_def(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final override F::Identifier getNameNode() { unified_function_declaration_def(this, result) } /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getParameter(int i) { + final override F::Parameter getParameter(int i) { unified_function_declaration_parameter(this, i, result) } /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getAParameter() { result = this.getParameter(_) } + final override F::Parameter getAParameter() { result = this.getParameter(_) } /** Gets the node corresponding to the field `return_type`. */ - final F::TypeExpr getReturnType() { unified_function_declaration_return_type(this, result) } + final override F::Expr getReturnType() { + unified_function_declaration_return_type(this, result) + } /** Gets the node corresponding to the field `type_constraint`. */ final F::TypeConstraint getTypeConstraint(int i) { @@ -783,7 +762,7 @@ module Unified { final override string getAPrimaryQlClass() { result = "FunctionExpr" } /** Gets the node corresponding to the field `body`. */ - final F::Block getBody() { unified_function_expr_def(this, result) } + final override F::Block getBody() { unified_function_expr_body(this, result) } /** Gets the node corresponding to the field `capture_declaration`. */ final F::VariableDeclaration getCaptureDeclaration(int i) { @@ -800,17 +779,19 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getParameter(int i) { unified_function_expr_parameter(this, i, result) } + final override F::Parameter getParameter(int i) { + unified_function_expr_parameter(this, i, result) + } /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getAParameter() { result = this.getParameter(_) } + final override F::Parameter getAParameter() { result = this.getParameter(_) } /** Gets the node corresponding to the field `return_type`. */ - final F::TypeExpr getReturnType() { unified_function_expr_return_type(this, result) } + final override F::Expr getReturnType() { unified_function_expr_return_type(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { - unified_function_expr_def(this, result) or + unified_function_expr_body(this, result) or unified_function_expr_capture_declaration(this, _, result) or unified_function_expr_modifier(this, _, result) or unified_function_expr_parameter(this, _, result) or @@ -818,42 +799,21 @@ module Unified { } } - /** A class representing `function_type_expr` nodes. */ - class FunctionTypeExpr extends @unified_function_type_expr, F::TypeExpr { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "FunctionTypeExpr" } - - /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getParameter(int i) { unified_function_type_expr_parameter(this, i, result) } - - /** Gets the node corresponding to the field `parameter`. */ - final F::Parameter getAParameter() { result = this.getParameter(_) } - - /** Gets the node corresponding to the field `return_type`. */ - final F::TypeExpr getReturnType() { unified_function_type_expr_def(this, result) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { - unified_function_type_expr_parameter(this, _, result) or - unified_function_type_expr_def(this, result) - } - } - /** A class representing `generic_type_expr` nodes. */ - class GenericTypeExpr extends @unified_generic_type_expr, F::TypeExpr { + class GenericTypeExpr extends @unified_generic_type_expr, F::Expr { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GenericTypeExpr" } /** Gets the node corresponding to the field `base`. */ - final F::TypeExpr getBase() { unified_generic_type_expr_def(this, result) } + final F::Expr getBase() { unified_generic_type_expr_def(this, result) } /** Gets the node corresponding to the field `type_argument`. */ - final F::TypeExpr getTypeArgument(int i) { + final F::Expr getTypeArgument(int i) { unified_generic_type_expr_type_argument(this, i, result) } /** Gets the node corresponding to the field `type_argument`. */ - final F::TypeExpr getATypeArgument() { result = this.getTypeArgument(_) } + final F::Expr getATypeArgument() { result = this.getTypeArgument(_) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -880,7 +840,7 @@ module Unified { } /** A class representing `identifier` tokens. */ - class Identifier extends @unified_token_identifier, F::AstNode, F::Token { + class Identifier extends @unified_token_identifier, F::Expr, F::Token { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Identifier" } } @@ -908,7 +868,7 @@ module Unified { } /** A class representing `ignore_pattern` tokens. */ - class IgnorePattern extends @unified_token_ignore_pattern, F::Pattern, F::Token { + class IgnorePattern extends @unified_token_ignore_pattern, F::Expr, F::Token { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IgnorePattern" } } @@ -928,7 +888,7 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_import_declaration_pattern(this, result) } + final F::Expr getPattern() { unified_import_declaration_pattern(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -939,7 +899,7 @@ module Unified { } /** A class representing `inferred_type_expr` tokens. */ - class InferredTypeExpr extends @unified_token_inferred_type_expr, F::Token, F::TypeExpr { + class InferredTypeExpr extends @unified_token_inferred_type_expr, F::Expr, F::Token { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InferredTypeExpr" } } @@ -958,7 +918,7 @@ module Unified { final override string getAPrimaryQlClass() { result = "InitializerDeclaration" } /** Gets the node corresponding to the field `body`. */ - final F::Block getBody() { unified_initializer_declaration_def(this, result) } + final override F::Block getBody() { unified_initializer_declaration_def(this, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getModifier(int i) { @@ -1003,8 +963,8 @@ module Unified { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LabeledStmt" } - /** Gets the node corresponding to the field `label`. */ - final F::Identifier getLabel() { unified_labeled_stmt_def(this, result, _) } + /** Gets the node corresponding to the field `label_name_node`. */ + final F::Identifier getLabelNameNode() { unified_labeled_stmt_def(this, result, _) } /** Gets the node corresponding to the field `stmt`. */ final F::Stmt getStmt() { unified_labeled_stmt_def(this, _, result) } @@ -1015,6 +975,34 @@ module Unified { } } + /** A class representing `macro_call_expr` nodes. */ + class MacroCallExpr extends @unified_macro_call_expr, F::Expr { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MacroCallExpr" } + + /** Gets the node corresponding to the field `argument`. */ + final F::Argument getArgument(int i) { unified_macro_call_expr_argument(this, i, result) } + + /** Gets the node corresponding to the field `argument`. */ + final F::Argument getAnArgument() { result = this.getArgument(_) } + + /** Gets the node corresponding to the field `macro_name_node`. */ + final F::Identifier getMacroNameNode() { unified_macro_call_expr_def(this, result) } + + /** Gets the node corresponding to the field `type_argument`. */ + final F::Expr getTypeArgument(int i) { unified_macro_call_expr_type_argument(this, i, result) } + + /** Gets the node corresponding to the field `type_argument`. */ + final F::Expr getATypeArgument() { result = this.getTypeArgument(_) } + + /** Gets a field or child node of this node. */ + final override F::AstNode getAFieldOrChild() { + unified_macro_call_expr_argument(this, _, result) or + unified_macro_call_expr_def(this, result) or + unified_macro_call_expr_type_argument(this, _, result) + } + } + /** A class representing `map_literal` nodes. */ class MapLiteral extends @unified_map_literal, F::Expr { /** Gets the name of the primary QL class for this element. */ @@ -1030,7 +1018,10 @@ module Unified { final override F::AstNode getAFieldOrChild() { unified_map_literal_element(this, _, result) } } - class Member extends @unified_member, F::AstNode { } + class Member extends @unified_member, F::AstNode { + /** Gets the node corresponding to the field `name_node`. */ + F::Identifier getNameNode() { none() } + } /** A class representing `member_access_expr` nodes. */ class MemberAccessExpr extends @unified_member_access_expr, F::Expr { @@ -1038,10 +1029,10 @@ module Unified { final override string getAPrimaryQlClass() { result = "MemberAccessExpr" } /** Gets the node corresponding to the field `base`. */ - final F::ExprOrType getBase() { unified_member_access_expr_def(this, result, _) } + final F::Expr getBase() { unified_member_access_expr_def(this, result, _) } - /** Gets the node corresponding to the field `member`. */ - final F::Identifier getMember() { unified_member_access_expr_def(this, _, result) } + /** Gets the node corresponding to the field `member_name_node`. */ + final F::Identifier getMemberNameNode() { unified_member_access_expr_def(this, _, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -1056,57 +1047,28 @@ module Unified { final override string getAPrimaryQlClass() { result = "Modifier" } } - /** A class representing `name_expr` nodes. */ - class NameExpr extends @unified_name_expr, F::Expr { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "NameExpr" } - - /** Gets the node corresponding to the field `identifier`. */ - final F::Identifier getIdentifier() { unified_name_expr_def(this, result) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { unified_name_expr_def(this, result) } - } - - /** A class representing `name_pattern` nodes. */ - class NamePattern extends @unified_name_pattern, F::Pattern { + /** A class representing `named_pattern` nodes. */ + class NamedPattern extends @unified_named_pattern, F::Expr { /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "NamePattern" } - - /** Gets the node corresponding to the field `identifier`. */ - final F::Identifier getIdentifier() { unified_name_pattern_def(this, result) } + final override string getAPrimaryQlClass() { result = "NamedPattern" } /** Gets the node corresponding to the field `modifier`. */ - final F::Modifier getModifier(int i) { unified_name_pattern_modifier(this, i, result) } + final F::Modifier getModifier(int i) { unified_named_pattern_modifier(this, i, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `sub_pattern`. */ - final F::Pattern getSubPattern() { unified_name_pattern_sub_pattern(this, result) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { - unified_name_pattern_def(this, result) or - unified_name_pattern_modifier(this, _, result) or - unified_name_pattern_sub_pattern(this, result) - } - } - - /** A class representing `named_type_expr` nodes. */ - class NamedTypeExpr extends @unified_named_type_expr, F::TypeExpr { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "NamedTypeExpr" } - - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_named_type_expr_def(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final F::Identifier getNameNode() { unified_named_pattern_def(this, result, _) } - /** Gets the node corresponding to the field `qualifier`. */ - final F::TypeExpr getQualifier() { unified_named_type_expr_qualifier(this, result) } + /** Gets the node corresponding to the field `sub_pattern`. */ + final F::Expr getSubPattern() { unified_named_pattern_def(this, _, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { - unified_named_type_expr_def(this, result) or unified_named_type_expr_qualifier(this, result) + unified_named_pattern_modifier(this, _, result) or + unified_named_pattern_def(this, result, _) or + unified_named_pattern_def(this, _, result) } } @@ -1128,8 +1090,8 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_operator_syntax_declaration_def(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final F::Identifier getNameNode() { unified_operator_syntax_declaration_def(this, result) } /** Gets the node corresponding to the field `precedence`. */ final F::Expr getPrecedence() { unified_operator_syntax_declaration_precedence(this, result) } @@ -1144,7 +1106,7 @@ module Unified { } /** A class representing `or_pattern` nodes. */ - class OrPattern extends @unified_or_pattern, F::Pattern { + class OrPattern extends @unified_or_pattern, F::Expr { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OrPattern" } @@ -1155,10 +1117,10 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern(int i) { unified_or_pattern_pattern(this, i, result) } + final F::Expr getPattern(int i) { unified_or_pattern_pattern(this, i, result) } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getAPattern() { result = this.getPattern(_) } + final F::Expr getAPattern() { result = this.getPattern(_) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -1174,8 +1136,8 @@ module Unified { /** Gets the node corresponding to the field `default`. */ final F::Expr getDefault() { unified_parameter_default(this, result) } - /** Gets the node corresponding to the field `external_name`. */ - final F::Identifier getExternalName() { unified_parameter_external_name(this, result) } + /** Gets the node corresponding to the field `external_name_node`. */ + final F::Identifier getExternalNameNode() { unified_parameter_external_name_node(this, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getModifier(int i) { unified_parameter_modifier(this, i, result) } @@ -1184,55 +1146,28 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_parameter_pattern(this, result) } + final F::Expr getPattern() { unified_parameter_pattern(this, result) } /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_parameter_type(this, result) } + final F::Expr getType() { unified_parameter_type(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { unified_parameter_default(this, result) or - unified_parameter_external_name(this, result) or + unified_parameter_external_name_node(this, result) or unified_parameter_modifier(this, _, result) or unified_parameter_pattern(this, result) or unified_parameter_type(this, result) } } - class Pattern extends @unified_pattern, F::Expr { } - - /** A class representing `pattern_element` nodes. */ - class PatternElement extends @unified_pattern_element, F::AstNode { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "PatternElement" } - - /** Gets the node corresponding to the field `key`. */ - final F::Identifier getKey() { unified_pattern_element_key(this, result) } - - /** Gets the node corresponding to the field `modifier`. */ - final F::Modifier getModifier(int i) { unified_pattern_element_modifier(this, i, result) } - - /** Gets the node corresponding to the field `modifier`. */ - final F::Modifier getAModifier() { result = this.getModifier(_) } - - /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_pattern_element_def(this, result) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { - unified_pattern_element_key(this, result) or - unified_pattern_element_modifier(this, _, result) or - unified_pattern_element_def(this, result) - } - } - /** A class representing `pattern_guard_expr` nodes. */ class PatternGuardExpr extends @unified_pattern_guard_expr, F::Expr { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PatternGuardExpr" } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_pattern_guard_expr_def(this, result, _) } + final F::Expr getPattern() { unified_pattern_guard_expr_def(this, result, _) } /** Gets the node corresponding to the field `value`. */ final F::Expr getValue() { unified_pattern_guard_expr_def(this, _, result) } @@ -1276,6 +1211,32 @@ module Unified { class Stmt extends @unified_stmt, F::AstNode { } + /** A class representing `string_interpolation_expr` nodes. */ + class StringInterpolationExpr extends @unified_string_interpolation_expr, F::Expr { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "StringInterpolationExpr" } + + /** Gets the node corresponding to the field `element`. */ + final F::Expr getElement(int i) { unified_string_interpolation_expr_element(this, i, result) } + + /** Gets the node corresponding to the field `element`. */ + final F::Expr getAnElement() { result = this.getElement(_) } + + /** Gets the node corresponding to the field `modifier`. */ + final F::Modifier getModifier(int i) { + unified_string_interpolation_expr_modifier(this, i, result) + } + + /** Gets the node corresponding to the field `modifier`. */ + final F::Modifier getAModifier() { result = this.getModifier(_) } + + /** Gets a field or child node of this node. */ + final override F::AstNode getAFieldOrChild() { + unified_string_interpolation_expr_element(this, _, result) or + unified_string_interpolation_expr_modifier(this, _, result) + } + } + /** A class representing `string_literal` tokens. */ class StringLiteral extends @unified_token_string_literal, F::Expr, F::Token { /** Gets the name of the primary QL class for this element. */ @@ -1303,7 +1264,7 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_switch_case_pattern(this, result) } + final F::Expr getPattern() { unified_switch_case_pattern(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -1359,7 +1320,7 @@ module Unified { final override string getAPrimaryQlClass() { result = "TopLevel" } /** Gets the node corresponding to the field `body`. */ - final F::Block getBody() { unified_top_level_def(this, result) } + final override F::Block getBody() { unified_top_level_def(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { unified_top_level_def(this, result) } @@ -1399,73 +1360,15 @@ module Unified { final override string getAPrimaryQlClass() { result = "TupleExpr" } /** Gets the node corresponding to the field `element`. */ - final F::Expr getElement(int i) { unified_tuple_expr_element(this, i, result) } + final F::Argument getElement(int i) { unified_tuple_expr_element(this, i, result) } /** Gets the node corresponding to the field `element`. */ - final F::Expr getAnElement() { result = this.getElement(_) } + final F::Argument getAnElement() { result = this.getElement(_) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { unified_tuple_expr_element(this, _, result) } } - /** A class representing `tuple_pattern` nodes. */ - class TuplePattern extends @unified_tuple_pattern, F::Pattern { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "TuplePattern" } - - /** Gets the node corresponding to the field `element`. */ - final F::PatternElement getElement(int i) { unified_tuple_pattern_element(this, i, result) } - - /** Gets the node corresponding to the field `element`. */ - final F::PatternElement getAnElement() { result = this.getElement(_) } - - /** Gets the node corresponding to the field `modifier`. */ - final F::Modifier getModifier(int i) { unified_tuple_pattern_modifier(this, i, result) } - - /** Gets the node corresponding to the field `modifier`. */ - final F::Modifier getAModifier() { result = this.getModifier(_) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { - unified_tuple_pattern_element(this, _, result) or - unified_tuple_pattern_modifier(this, _, result) - } - } - - /** A class representing `tuple_type_element` nodes. */ - class TupleTypeElement extends @unified_tuple_type_element, F::AstNode { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "TupleTypeElement" } - - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_tuple_type_element_name(this, result) } - - /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_tuple_type_element_def(this, result) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { - unified_tuple_type_element_name(this, result) or unified_tuple_type_element_def(this, result) - } - } - - /** A class representing `tuple_type_expr` nodes. */ - class TupleTypeExpr extends @unified_tuple_type_expr, F::TypeExpr { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "TupleTypeExpr" } - - /** Gets the node corresponding to the field `element`. */ - final F::TupleTypeElement getElement(int i) { unified_tuple_type_expr_element(this, i, result) } - - /** Gets the node corresponding to the field `element`. */ - final F::TupleTypeElement getAnElement() { result = this.getElement(_) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { - unified_tuple_type_expr_element(this, _, result) - } - } - /** A class representing `type_alias_declaration` nodes. */ class TypeAliasDeclaration extends @unified_type_alias_declaration, F::Member, F::Stmt { /** Gets the name of the primary QL class for this element. */ @@ -1479,11 +1382,13 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_type_alias_declaration_def(this, result, _) } + /** Gets the node corresponding to the field `name_node`. */ + final override F::Identifier getNameNode() { + unified_type_alias_declaration_def(this, result, _) + } /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_type_alias_declaration_def(this, _, result) } + final F::Expr getType() { unified_type_alias_declaration_def(this, _, result) } /** Gets the node corresponding to the field `type_constraint`. */ final F::TypeConstraint getTypeConstraint(int i) { @@ -1523,7 +1428,7 @@ module Unified { final F::InfixOperator getOperator() { unified_type_cast_expr_def(this, _, result, _) } /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_type_cast_expr_def(this, _, _, result) } + final F::Expr getType() { unified_type_cast_expr_def(this, _, _, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -1535,15 +1440,13 @@ module Unified { class TypeConstraint extends @unified_type_constraint, F::AstNode { } - class TypeExpr extends @unified_type_expr, F::ExprOrType { } - /** A class representing `type_parameter` nodes. */ class TypeParameter extends @unified_type_parameter, F::AstNode { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeParameter" } /** Gets the node corresponding to the field `bound`. */ - final F::TypeExpr getBound() { unified_type_parameter_bound(this, result) } + final F::Expr getBound() { unified_type_parameter_bound(this, result) } /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getModifier(int i) { unified_type_parameter_modifier(this, i, result) } @@ -1551,8 +1454,8 @@ module Unified { /** Gets the node corresponding to the field `modifier`. */ final F::Modifier getAModifier() { result = this.getModifier(_) } - /** Gets the node corresponding to the field `name`. */ - final F::Identifier getName() { unified_type_parameter_def(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final F::Identifier getNameNode() { unified_type_parameter_def(this, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { @@ -1568,37 +1471,19 @@ module Unified { final override string getAPrimaryQlClass() { result = "TypeTestExpr" } /** Gets the node corresponding to the field `expr`. */ - final F::Expr getExpr() { unified_type_test_expr_def(this, result, _, _) } + final F::Expr getExpr() { unified_type_test_expr_def(this, result, _) } /** Gets the node corresponding to the field `operator`. */ - final F::InfixOperator getOperator() { unified_type_test_expr_def(this, _, result, _) } - - /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_type_test_expr_def(this, _, _, result) } - - /** Gets a field or child node of this node. */ - final override F::AstNode getAFieldOrChild() { - unified_type_test_expr_def(this, result, _, _) or - unified_type_test_expr_def(this, _, result, _) or - unified_type_test_expr_def(this, _, _, result) - } - } - - /** A class representing `type_test_pattern` nodes. */ - class TypeTestPattern extends @unified_type_test_pattern, F::AstNode { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "TypeTestPattern" } - - /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_type_test_pattern_def(this, result, _) } + final F::InfixOperator getOperator() { unified_type_test_expr_operator(this, result) } /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_type_test_pattern_def(this, _, result) } + final F::Expr getType() { unified_type_test_expr_def(this, _, result) } /** Gets a field or child node of this node. */ final override F::AstNode getAFieldOrChild() { - unified_type_test_pattern_def(this, result, _) or - unified_type_test_pattern_def(this, _, result) + unified_type_test_expr_def(this, result, _) or + unified_type_test_expr_operator(this, result) or + unified_type_test_expr_def(this, _, result) } } @@ -1619,6 +1504,12 @@ module Unified { } } + /** A class representing `unhandled_node` tokens. */ + class UnhandledNode extends @unified_token_unhandled_node, F::Expr, F::Member, F::Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "UnhandledNode" } + } + /** A class representing `unresolved_operator_sequence` nodes. */ class UnresolvedOperatorSequence extends @unified_unresolved_operator_sequence, F::Expr { /** Gets the name of the primary QL class for this element. */ @@ -1639,9 +1530,7 @@ module Unified { } /** A class representing `unsupported_node` tokens. */ - class UnsupportedNode extends @unified_token_unsupported_node, F::Expr, F::Member, F::Pattern, - F::Token, F::TypeExpr - { + class UnsupportedNode extends @unified_token_unsupported_node, F::Expr, F::Member, F::Token { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnsupportedNode" } } @@ -1658,10 +1547,10 @@ module Unified { final F::Modifier getAModifier() { result = this.getModifier(_) } /** Gets the node corresponding to the field `pattern`. */ - final F::Pattern getPattern() { unified_variable_declaration_def(this, result) } + final F::Expr getPattern() { unified_variable_declaration_def(this, result) } /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_variable_declaration_type(this, result) } + final F::Expr getType() { unified_variable_declaration_type(this, result) } /** Gets the node corresponding to the field `value`. */ final F::Expr getValue() { unified_variable_declaration_value(this, result) } @@ -1710,7 +1599,7 @@ module Unified { or result = node.(AccessorDeclaration).getModifier(i) and name = "getModifier" or - result = node.(AccessorDeclaration).getName() and i = -1 and name = "getName" + result = node.(AccessorDeclaration).getNameNode() and i = -1 and name = "getNameNode" or result = node.(AccessorDeclaration).getParameter(i) and name = "getParameter" or @@ -1718,21 +1607,17 @@ module Unified { or result = node.(Argument).getModifier(i) and name = "getModifier" or - result = node.(Argument).getName() and i = -1 and name = "getName" + result = node.(Argument).getNameNode() and i = -1 and name = "getNameNode" or result = node.(Argument).getValue() and i = -1 and name = "getValue" or result = node.(ArrayLiteral).getElement(i) and name = "getElement" or - result = node.(AssignExpr).getTarget() and i = -1 and name = "getTarget" - or - result = node.(AssignExpr).getValue() and i = -1 and name = "getValue" - or result = node.(AssociatedTypeDeclaration).getBound() and i = -1 and name = "getBound" or result = node.(AssociatedTypeDeclaration).getModifier(i) and name = "getModifier" or - result = node.(AssociatedTypeDeclaration).getName() and i = -1 and name = "getName" + result = node.(AssociatedTypeDeclaration).getNameNode() and i = -1 and name = "getNameNode" or result = node.(BaseType).getModifier(i) and name = "getModifier" or @@ -1750,7 +1635,7 @@ module Unified { or result = node.(BoundTypeConstraint).getType() and i = -1 and name = "getType" or - result = node.(BreakExpr).getLabel() and i = -1 and name = "getLabel" + result = node.(BreakExpr).getLabelNameNode() and i = -1 and name = "getLabelNameNode" or result = node.(BulkImportingPattern).getModifier(i) and name = "getModifier" or @@ -1768,22 +1653,20 @@ module Unified { or result = node.(ClassLikeDeclaration).getBaseType(i) and name = "getBaseType" or + result = node.(ClassLikeDeclaration).getExtensionTarget() and + i = -1 and + name = "getExtensionTarget" + or result = node.(ClassLikeDeclaration).getMember(i) and name = "getMember" or result = node.(ClassLikeDeclaration).getModifier(i) and name = "getModifier" or - result = node.(ClassLikeDeclaration).getName() and i = -1 and name = "getName" + result = node.(ClassLikeDeclaration).getNameNode() and i = -1 and name = "getNameNode" or result = node.(ClassLikeDeclaration).getTypeConstraint(i) and name = "getTypeConstraint" or result = node.(ClassLikeDeclaration).getTypeParameter(i) and name = "getTypeParameter" or - result = node.(CompoundAssignExpr).getOperator() and i = -1 and name = "getOperator" - or - result = node.(CompoundAssignExpr).getTarget() and i = -1 and name = "getTarget" - or - result = node.(CompoundAssignExpr).getValue() and i = -1 and name = "getValue" - or result = node.(ConditionalPattern).getCondition() and i = -1 and name = "getCondition" or result = node.(ConditionalPattern).getModifier(i) and name = "getModifier" @@ -1794,17 +1677,13 @@ module Unified { or result = node.(ConstructorDeclaration).getModifier(i) and name = "getModifier" or - result = node.(ConstructorDeclaration).getName() and i = -1 and name = "getName" + result = node.(ConstructorDeclaration).getNameNode() and i = -1 and name = "getNameNode" or result = node.(ConstructorDeclaration).getParameter(i) and name = "getParameter" or - result = node.(ConstructorPattern).getConstructor() and i = -1 and name = "getConstructor" + result = node.(ContinueExpr).getLabelNameNode() and i = -1 and name = "getLabelNameNode" or - result = node.(ConstructorPattern).getElement(i) and name = "getElement" - or - result = node.(ConstructorPattern).getModifier(i) and name = "getModifier" - or - result = node.(ContinueExpr).getLabel() and i = -1 and name = "getLabel" + result = node.(DeferStmt).getBody() and i = -1 and name = "getBody" or result = node.(DestructorDeclaration).getBody() and i = -1 and name = "getBody" or @@ -1820,7 +1699,9 @@ module Unified { or result = node.(EqualityTypeConstraint).getRight() and i = -1 and name = "getRight" or - result = node.(ExprEqualityPattern).getExpr() and i = -1 and name = "getExpr" + result = node.(ExprPattern).getExpr() and i = -1 and name = "getExpr" + or + result = node.(ExprPattern).getModifier(i) and name = "getModifier" or result = node.(ForEachStmt).getBody() and i = -1 and name = "getBody" or @@ -1836,7 +1717,7 @@ module Unified { or result = node.(FunctionDeclaration).getModifier(i) and name = "getModifier" or - result = node.(FunctionDeclaration).getName() and i = -1 and name = "getName" + result = node.(FunctionDeclaration).getNameNode() and i = -1 and name = "getNameNode" or result = node.(FunctionDeclaration).getParameter(i) and name = "getParameter" or @@ -1856,10 +1737,6 @@ module Unified { or result = node.(FunctionExpr).getReturnType() and i = -1 and name = "getReturnType" or - result = node.(FunctionTypeExpr).getParameter(i) and name = "getParameter" - or - result = node.(FunctionTypeExpr).getReturnType() and i = -1 and name = "getReturnType" - or result = node.(GenericTypeExpr).getBase() and i = -1 and name = "getBase" or result = node.(GenericTypeExpr).getTypeArgument(i) and name = "getTypeArgument" @@ -1888,33 +1765,33 @@ module Unified { or result = node.(KeyValuePair).getValue() and i = -1 and name = "getValue" or - result = node.(LabeledStmt).getLabel() and i = -1 and name = "getLabel" + result = node.(LabeledStmt).getLabelNameNode() and i = -1 and name = "getLabelNameNode" or result = node.(LabeledStmt).getStmt() and i = -1 and name = "getStmt" or - result = node.(MapLiteral).getElement(i) and name = "getElement" + result = node.(MacroCallExpr).getArgument(i) and name = "getArgument" or - result = node.(MemberAccessExpr).getBase() and i = -1 and name = "getBase" + result = node.(MacroCallExpr).getMacroNameNode() and i = -1 and name = "getMacroNameNode" or - result = node.(MemberAccessExpr).getMember() and i = -1 and name = "getMember" + result = node.(MacroCallExpr).getTypeArgument(i) and name = "getTypeArgument" or - result = node.(NameExpr).getIdentifier() and i = -1 and name = "getIdentifier" + result = node.(MapLiteral).getElement(i) and name = "getElement" or - result = node.(NamePattern).getIdentifier() and i = -1 and name = "getIdentifier" + result = node.(MemberAccessExpr).getBase() and i = -1 and name = "getBase" or - result = node.(NamePattern).getModifier(i) and name = "getModifier" + result = node.(MemberAccessExpr).getMemberNameNode() and i = -1 and name = "getMemberNameNode" or - result = node.(NamePattern).getSubPattern() and i = -1 and name = "getSubPattern" + result = node.(NamedPattern).getModifier(i) and name = "getModifier" or - result = node.(NamedTypeExpr).getName() and i = -1 and name = "getName" + result = node.(NamedPattern).getNameNode() and i = -1 and name = "getNameNode" or - result = node.(NamedTypeExpr).getQualifier() and i = -1 and name = "getQualifier" + result = node.(NamedPattern).getSubPattern() and i = -1 and name = "getSubPattern" or result = node.(OperatorSyntaxDeclaration).getFixity() and i = -1 and name = "getFixity" or result = node.(OperatorSyntaxDeclaration).getModifier(i) and name = "getModifier" or - result = node.(OperatorSyntaxDeclaration).getName() and i = -1 and name = "getName" + result = node.(OperatorSyntaxDeclaration).getNameNode() and i = -1 and name = "getNameNode" or result = node.(OperatorSyntaxDeclaration).getPrecedence() and i = -1 and @@ -1926,7 +1803,7 @@ module Unified { or result = node.(Parameter).getDefault() and i = -1 and name = "getDefault" or - result = node.(Parameter).getExternalName() and i = -1 and name = "getExternalName" + result = node.(Parameter).getExternalNameNode() and i = -1 and name = "getExternalNameNode" or result = node.(Parameter).getModifier(i) and name = "getModifier" or @@ -1934,18 +1811,16 @@ module Unified { or result = node.(Parameter).getType() and i = -1 and name = "getType" or - result = node.(PatternElement).getKey() and i = -1 and name = "getKey" - or - result = node.(PatternElement).getModifier(i) and name = "getModifier" - or - result = node.(PatternElement).getPattern() and i = -1 and name = "getPattern" - or result = node.(PatternGuardExpr).getPattern() and i = -1 and name = "getPattern" or result = node.(PatternGuardExpr).getValue() and i = -1 and name = "getValue" or result = node.(ReturnExpr).getValue() and i = -1 and name = "getValue" or + result = node.(StringInterpolationExpr).getElement(i) and name = "getElement" + or + result = node.(StringInterpolationExpr).getModifier(i) and name = "getModifier" + or result = node.(SwitchCase).getBody() and i = -1 and name = "getBody" or result = node.(SwitchCase).getModifier(i) and name = "getModifier" @@ -1970,19 +1845,9 @@ module Unified { or result = node.(TupleExpr).getElement(i) and name = "getElement" or - result = node.(TuplePattern).getElement(i) and name = "getElement" - or - result = node.(TuplePattern).getModifier(i) and name = "getModifier" - or - result = node.(TupleTypeElement).getName() and i = -1 and name = "getName" - or - result = node.(TupleTypeElement).getType() and i = -1 and name = "getType" - or - result = node.(TupleTypeExpr).getElement(i) and name = "getElement" - or result = node.(TypeAliasDeclaration).getModifier(i) and name = "getModifier" or - result = node.(TypeAliasDeclaration).getName() and i = -1 and name = "getName" + result = node.(TypeAliasDeclaration).getNameNode() and i = -1 and name = "getNameNode" or result = node.(TypeAliasDeclaration).getType() and i = -1 and name = "getType" or @@ -2000,7 +1865,7 @@ module Unified { or result = node.(TypeParameter).getModifier(i) and name = "getModifier" or - result = node.(TypeParameter).getName() and i = -1 and name = "getName" + result = node.(TypeParameter).getNameNode() and i = -1 and name = "getNameNode" or result = node.(TypeTestExpr).getExpr() and i = -1 and name = "getExpr" or @@ -2008,10 +1873,6 @@ module Unified { or result = node.(TypeTestExpr).getType() and i = -1 and name = "getType" or - result = node.(TypeTestPattern).getPattern() and i = -1 and name = "getPattern" - or - result = node.(TypeTestPattern).getType() and i = -1 and name = "getType" - or result = node.(UnaryExpr).getOperand() and i = -1 and name = "getOperand" or result = node.(UnaryExpr).getOperator() and i = -1 and name = "getOperator" @@ -2053,8 +1914,6 @@ module UnifiedFinal { final class ArrayLiteral = F::ArrayLiteral; - final class AssignExpr = F::AssignExpr; - final class AssociatedTypeDeclaration = F::AssociatedTypeDeclaration; final class BaseType = F::BaseType; @@ -2081,16 +1940,14 @@ module UnifiedFinal { final class ClassLikeDeclaration = F::ClassLikeDeclaration; - final class CompoundAssignExpr = F::CompoundAssignExpr; - final class ConditionalPattern = F::ConditionalPattern; final class ConstructorDeclaration = F::ConstructorDeclaration; - final class ConstructorPattern = F::ConstructorPattern; - final class ContinueExpr = F::ContinueExpr; + final class DeferStmt = F::DeferStmt; + final class DestructorDeclaration = F::DestructorDeclaration; final class DoWhileStmt = F::DoWhileStmt; @@ -2101,11 +1958,9 @@ module UnifiedFinal { final class Expr = F::Expr; - final class ExprEqualityPattern = F::ExprEqualityPattern; - final class ExprOrOperator = F::ExprOrOperator; - final class ExprOrType = F::ExprOrType; + final class ExprPattern = F::ExprPattern; final class Fixity = F::Fixity; @@ -2117,8 +1972,6 @@ module UnifiedFinal { final class FunctionExpr = F::FunctionExpr; - final class FunctionTypeExpr = F::FunctionTypeExpr; - final class GenericTypeExpr = F::GenericTypeExpr; final class GuardIfStmt = F::GuardIfStmt; @@ -2143,6 +1996,8 @@ module UnifiedFinal { final class LabeledStmt = F::LabeledStmt; + final class MacroCallExpr = F::MacroCallExpr; + final class MapLiteral = F::MapLiteral; final class Member = F::Member; @@ -2151,11 +2006,7 @@ module UnifiedFinal { final class Modifier = F::Modifier; - final class NameExpr = F::NameExpr; - - final class NamePattern = F::NamePattern; - - final class NamedTypeExpr = F::NamedTypeExpr; + final class NamedPattern = F::NamedPattern; final class Operator = F::Operator; @@ -2165,10 +2016,6 @@ module UnifiedFinal { final class Parameter = F::Parameter; - final class Pattern = F::Pattern; - - final class PatternElement = F::PatternElement; - final class PatternGuardExpr = F::PatternGuardExpr; final class PostfixOperator = F::PostfixOperator; @@ -2181,6 +2028,8 @@ module UnifiedFinal { final class Stmt = F::Stmt; + final class StringInterpolationExpr = F::StringInterpolationExpr; + final class StringLiteral = F::StringLiteral; final class SuperExpr = F::SuperExpr; @@ -2197,28 +2046,20 @@ module UnifiedFinal { final class TupleExpr = F::TupleExpr; - final class TuplePattern = F::TuplePattern; - - final class TupleTypeElement = F::TupleTypeElement; - - final class TupleTypeExpr = F::TupleTypeExpr; - final class TypeAliasDeclaration = F::TypeAliasDeclaration; final class TypeCastExpr = F::TypeCastExpr; final class TypeConstraint = F::TypeConstraint; - final class TypeExpr = F::TypeExpr; - final class TypeParameter = F::TypeParameter; final class TypeTestExpr = F::TypeTestExpr; - final class TypeTestPattern = F::TypeTestPattern; - final class UnaryExpr = F::UnaryExpr; + final class UnhandledNode = F::UnhandledNode; + final class UnresolvedOperatorSequence = F::UnresolvedOperatorSequence; final class UnsupportedNode = F::UnsupportedNode; diff --git a/unified/ql/lib/codeql/unified/internal/AstExtra.qll b/unified/ql/lib/codeql/unified/internal/AstExtra.qll index f5a9ad09caaa..f2182698f6d0 100644 --- a/unified/ql/lib/codeql/unified/internal/AstExtra.qll +++ b/unified/ql/lib/codeql/unified/internal/AstExtra.qll @@ -1,10 +1,48 @@ /** * Provides additional AST-like classes outside the generated tree-sitter classes. */ +overlay[local?] +module; private import unified +private import codeql.unified.internal.NameBindingPlugin module Public { + /** An assignment, possibly a compound assignment. */ + abstract private class AssignmentImpl extends BinaryExpr { + /** Gets the target of this assignment. */ + abstract Expr getTarget(); + + /** Gets the value assigned by this assignment. */ + abstract Expr getValue(); + } + + final class Assignment = AssignmentImpl; + + /** A plain assignment expression. */ + final class AssignExpr extends BinaryExpr, AssignmentImpl { + AssignExpr() { this.getOperator().getValue() = "=" } + + override Expr getTarget() { result = this.getLeft() } + + override Expr getValue() { result = this.getRight() } + } + + /** A compound assignment expression. */ + final class CompoundAssignExpr extends BinaryExpr, AssignmentImpl { + CompoundAssignExpr() { + this.getOperator().getValue() = + [ + "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", "&=", "|=", "^=", "&+=", "&-=", "&*=", "&&=", + "||=", "??=" + ] + } + + override Expr getTarget() { result = this.getLeft() } + + override Expr getValue() { result = this.getRight() } + } + /** A short-circuiting logical AND expression. */ class LogicalAndExpr extends BinaryExpr { LogicalAndExpr() { this.getOperator().getValue() = "&&" } @@ -29,24 +67,14 @@ module Public { * Declaration of a local or top-level variable. */ class LocalVariableDeclaration extends VariableDeclaration { - private Block block; - - LocalVariableDeclaration() { this = block.getStmt(_) } - - /** Gets the block in which this variable is declared. */ - Block getDeclaringBlock() { result = block } + LocalVariableDeclaration() { not isStaticMember(this) and not isInstanceMember(this) } } /** * Declaration of a local or top-level function. */ class LocalFunctionDeclaration extends FunctionDeclaration { - private Block block; - - LocalFunctionDeclaration() { this = block.getStmt(_) } - - /** Gets the block in which this function is declared. */ - Block getDeclaringBlock() { result = block } + LocalFunctionDeclaration() { not isStaticMember(this) and not isInstanceMember(this) } } /** @@ -68,4 +96,77 @@ module Public { final class TopLevelStmt extends Stmt { TopLevelStmt() { this = any(TopLevel t).getBody().getAStmt() } } + + /** An identifier appearing in the context of a break/continue label, argument/parameter name, or name of a member lookup. */ + final class IdentifierLabel extends Identifier { + IdentifierLabel() { + this = any(MemberAccessExpr e).getMemberNameNode() or + this = any(Argument a).getNameNode() or + this = any(Parameter p).getExternalNameNode() or + this = any(LabeledStmt stmt).getLabelNameNode() or + this = any(BreakExpr expr).getLabelNameNode() or + this = any(ContinueExpr expr).getLabelNameNode() + } + } + + /** An identifier appearing in the context of an expression, pattern, or type annotation. */ + final class IdentifierExpr extends Identifier { + IdentifierExpr() { not this instanceof IdentifierLabel } + } + + /** + * A class representing one of the branches of an algebraic data type. + * + * In Swift, a class with a single constructor is generated for each `case` with data parameters in an `enum` declaration. Example: + * + * ```swift + * enum E { + * case foo(Int) + * } + * ``` + * + * is modeled as + * + * ```swift + * class E { + * class foo { + * init(_ x : Int) + * } + * } + * ``` + */ + final class EnumCaseClass extends ClassLikeDeclaration { + EnumCaseClass() { this.hasModifier("enum_case") } + + /** Gets the constructor of this algebraic data type. */ + EnumCaseConstructor getConstructor() { result = this.getAMember() } + } + + /** + * The constructor of a class representing one of the branches of an algebraic data type. + * + * In Swift, a class with a single constructor is generated for each `case` with data parameters in an `enum` declaration. Example: + * + * ```swift + * enum E { + * case foo(Int) + * } + * ``` + * + * is modeled as + * + * ```swift + * class E { + * class foo { + * init(_ x : Int) + * } + * } + * ``` + */ + final class EnumCaseConstructor extends ConstructorDeclaration { + EnumCaseConstructor() { this = any(EnumCaseClass cls).getAMember() } + + /** Gets the class containing this constructor. */ + EnumCaseClass getEnumCaseClass() { result.getAMember() = this } + } } diff --git a/unified/ql/lib/codeql/unified/internal/AstPlugin.qll b/unified/ql/lib/codeql/unified/internal/AstPlugin.qll new file mode 100644 index 000000000000..02f02f92628a --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/AstPlugin.qll @@ -0,0 +1,78 @@ +overlay[local?] +module; + +private import unified +private import codeql.util.Unit + +private module Plugins { + private import AstPluginSwift +} + +class AstPlugin extends Unit { + bindingset[f] + string getFunctionDeclarationKeyword(FunctionDeclaration f) { none() } + + bindingset[c] + string getConstructorDeclarationKeyword(ConstructorDeclaration c) { none() } + + bindingset[cls] + string getClassLikeDeclarationKeyword(ClassLikeDeclaration cls) { none() } + + bindingset[decl] + string getVariableDeclarationKeyword(VariableDeclaration decl) { none() } + + /** + * Holds if the default constructor `cd` needs a parameter at index `i` with + * the given name. `hasDefault` indicates whether the parameter has a default + * value. + * + * `i = 0` is reserved for the implicit receiver parameter. + */ + bindingset[cd] + predicate defaultConstructorParameter( + ConstructorDeclaration cd, int i, string name, boolean hasDefault + ) { + none() + } + + /** + * Holds if the type of the `i`th parameter of the default constructor `cd` + * is `type`. + */ + bindingset[cd] + predicate defaultConstructorParameterType(ConstructorDeclaration cd, int i, AstNode type) { + none() + } +} + +bindingset[f] +string getFunctionDeclarationKeyword(FunctionDeclaration f) { + result = any(AstPlugin p).getFunctionDeclarationKeyword(f) +} + +bindingset[c] +string getConstructorDeclarationKeyword(ConstructorDeclaration c) { + result = any(AstPlugin p).getConstructorDeclarationKeyword(c) +} + +bindingset[cls] +string getClassLikeDeclarationKeyword(ClassLikeDeclaration cls) { + result = any(AstPlugin p).getClassLikeDeclarationKeyword(cls) +} + +bindingset[decl] +string getVariableDeclarationKeyword(VariableDeclaration decl) { + result = any(AstPlugin p).getVariableDeclarationKeyword(decl) +} + +bindingset[cd] +predicate defaultConstructorParameter( + ConstructorDeclaration cd, int i, string name, boolean hasDefault +) { + any(AstPlugin p).defaultConstructorParameter(cd, i, name, hasDefault) +} + +bindingset[cd] +predicate defaultConstructorParameterType(ConstructorDeclaration cd, int i, AstNode type) { + any(AstPlugin p).defaultConstructorParameterType(cd, i, type) +} diff --git a/unified/ql/lib/codeql/unified/internal/AstPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/AstPluginSwift.qll new file mode 100644 index 000000000000..ff2d03fb9b01 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/AstPluginSwift.qll @@ -0,0 +1,72 @@ +overlay[local?] +module; + +private import unified +private import AstPlugin + +private predicate structHasParameterForField( + ConstructorDeclaration cd, VariableDeclaration decl, int i, string name, boolean hasDefault +) { + exists(ClassLikeDeclaration struct | + struct.hasModifier("struct") and + cd = struct.getAMember() and + decl = struct.getMember(i) and + not decl.hasModifier("static") and + name = decl.getPattern().(Identifier).getValue() + | + // if `decl` has an initializer or `Optional` type then the parameter has a default value + decl.hasModifier("var") and + if + exists(decl.getValue()) + or + // we could make this more precise using static name binding, but for now we + // use a simpler approach to avoid the dependency on static name binding + decl.getType().(GenericTypeExpr).getBase().(Identifier).getValue() = "Optional" + then hasDefault = true + else hasDefault = false + or + decl.hasModifier("let") and + not exists(decl.getValue()) and + hasDefault = false + ) +} + +private class AstPluginSwift extends AstPlugin { + bindingset[f] + override string getFunctionDeclarationKeyword(FunctionDeclaration f) { + exists(f) and result = "func" + } + + bindingset[c] + override string getConstructorDeclarationKeyword(ConstructorDeclaration c) { + c.hasModifier(result) and + result = "convenience" + } + + override string getClassLikeDeclarationKeyword(ClassLikeDeclaration cls) { + cls.hasModifier(result) and + result in ["class", "struct", "enum", "actor", "extension", "protocol"] + } + + override string getVariableDeclarationKeyword(VariableDeclaration decl) { + decl.hasModifier(result) and + result in ["var", "let"] + } + + bindingset[cd] + override predicate defaultConstructorParameter( + ConstructorDeclaration cd, int i, string name, boolean hasDefault + ) { + name = rank[i](int j, string s | structHasParameterForField(cd, _, j, s, _) | s order by j) and + structHasParameterForField(cd, _, _, name, hasDefault) + } + + bindingset[cd] + override predicate defaultConstructorParameterType(ConstructorDeclaration cd, int i, AstNode type) { + exists(VariableDeclaration decl, string name | + this.defaultConstructorParameter(cd, i, name, _) and + structHasParameterForField(cd, decl, _, name, _) and + type = decl.getType() + ) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/Builtins.qll b/unified/ql/lib/codeql/unified/internal/Builtins.qll new file mode 100644 index 000000000000..099ced74d2bb --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/Builtins.qll @@ -0,0 +1,30 @@ +/** + * Provides classes for builtins. + */ + +private import unified + +/** The folder containing builtins. */ +class BuiltinsFolder extends Folder { + BuiltinsFolder() { + not exists(this.getRelativePath()) and + this.getBaseName() = "builtins" and + this.getParentContainer().getBaseName() = "tools" + } +} + +private class BuiltinsTypesFile extends File { + BuiltinsTypesFile() { + this.getBaseName() = "types.swift" and + this.getParentContainer() instanceof BuiltinsFolder + } +} + +/** + * A builtin type, such as `Bool` and `String`. + * + * Builtin types are represented as class-like declarations. + */ +class BuiltinClassLikeDeclaration extends ClassLikeDeclaration { + BuiltinClassLikeDeclaration() { this.getFile() instanceof BuiltinsTypesFile } +} diff --git a/unified/ql/lib/codeql/unified/internal/ControlFlowGraph.qll b/unified/ql/lib/codeql/unified/internal/ControlFlowGraph.qll index 15db0eb3836e..1f5f25cd1fc2 100644 --- a/unified/ql/lib/codeql/unified/internal/ControlFlowGraph.qll +++ b/unified/ql/lib/codeql/unified/internal/ControlFlowGraph.qll @@ -7,6 +7,7 @@ module; private import unified private import codeql.controlflow.ControlFlowGraph private import codeql.controlflow.SuccessorType +private import ControlFlowGraphPlugin private module Cfg0 = Make0; @@ -16,16 +17,23 @@ private module Cfg2 = Make2; private import Cfg0 private import Cfg1 -private import Cfg2 -import Public +import Cfg2 /** Provides an implementation of the AST signature for Unified. */ -private module Ast implements AstSig { +module Ast implements AstSig { private import unified as U class AstNode = U::AstNode; - private predicate skipControlFlow(AstNode e) { e instanceof Modifier or e instanceof Identifier } + private predicate skipControlFlow(AstNode e) { + e instanceof Modifier + or + e instanceof Identifier and not e instanceof IdentifierExpr + or + e instanceof Operator + or + not e.fromSource() + } AstNode getChild(AstNode n, int index) { result.getParent() = n and @@ -33,33 +41,28 @@ private module Ast implements AstSig { not n instanceof Callable and not skipControlFlow(n) and not skipControlFlow(result) + or + n.(FunctionExpr).getCaptureDeclaration(index) = result + or + n.(FunctionDeclaration).getNameNode() = result and index = 0 } - Callable getEnclosingCallable(AstNode node) { - exists(AstNode parent | parent = node.getParent() | - result = parent - or - not parent instanceof Callable and - result = getEnclosingCallable(parent) - ) - } - - class Callable = U::Callable; + Callable getEnclosingCallable(AstNode node) { result = node.getEnclosingCallable() } - AstNode callableGetBody(Callable c) { - result = c.(AccessorDeclaration).getBody() or - result = c.(ConstructorDeclaration).getBody() or - result = c.(DestructorDeclaration).getBody() or - result = c.(FunctionDeclaration).getBody() or - result = c.(FunctionExpr).getBody() or - result = c.(InitializerDeclaration).getBody() or - result = c.(TopLevel).getBody() + class Callable extends U::Callable { + Callable() { this.fromSource() } } + AstNode callableGetBody(Callable c) { result = c.getBody() } + class Parameter extends U::Parameter { Expr getDefaultValue() { result = super.getDefault() } - AstNode getPattern() { result = super.getPattern() } + AstNode getPattern() { + result = super.getPattern() + or + not exists(super.getPattern()) and result = this + } } Parameter callableGetParameter(Callable c, int index) { @@ -81,14 +84,12 @@ private module Ast implements AstSig { Expr getExpr() { none() } } - class IfStmt extends Stmt { - IfStmt() { none() } - - Expr getCondition() { none() } + class IfStmt extends Stmt instanceof U::GuardIfStmt { + Expr getCondition() { result = super.getCondition() } Stmt getThen() { none() } - Stmt getElse() { none() } + Stmt getElse() { result = super.getElse() } } abstract class LoopStmt extends Stmt { @@ -128,7 +129,6 @@ private module Ast implements AstSig { // TODO support foreach guard // - // TODO: Expr != Pattern Expr getVariable() { result = super.getPattern() } Expr getCollection() { result = super.getIterable() } @@ -138,6 +138,8 @@ private module Ast implements AstSig { class ContinueStmt = U::ContinueExpr; + class LabeledStmt = U::LabeledStmt; + class GotoStmt extends Stmt { GotoStmt() { none() } } @@ -207,20 +209,23 @@ private module Ast implements AstSig { class LogicalNotExpr = U::LogicalNotExpr; - // TODO - class Assignment extends BinaryExpr { - Assignment() { none() } - } + class Assignment extends BinaryExpr, U::Assignment { } - class AssignExpr extends Assignment { } + class AssignExpr extends Assignment, U::AssignExpr { } - class CompoundAssignment extends Assignment { } + class CompoundAssignment extends Assignment, U::CompoundAssignExpr { } - class AssignLogicalAndExpr extends CompoundAssignment { } + class AssignLogicalAndExpr extends CompoundAssignment { + AssignLogicalAndExpr() { this.getOperator().getValue() = "&&=" } + } - class AssignLogicalOrExpr extends CompoundAssignment { } + class AssignLogicalOrExpr extends CompoundAssignment { + AssignLogicalOrExpr() { this.getOperator().getValue() = "||=" } + } - class AssignNullCoalescingExpr extends CompoundAssignment { } + class AssignNullCoalescingExpr extends CompoundAssignment { + AssignNullCoalescingExpr() { this.getOperator().getValue() = "??=" } + } class BooleanLiteral extends U::BooleanLiteral { boolean getValue() { result.toString() = super.getValue() } @@ -233,6 +238,8 @@ private module Ast implements AstSig { } } +private predicate mayThrow(AstNode ast) { any(ControlFlowGraphPlugin p).mayThrow(ast) } + private module Input implements InputSig1, InputSig2 { private import codeql.util.Void @@ -240,27 +247,20 @@ private module Input implements InputSig1, InputSig2 { class Label extends string { Label() { - any(LabeledStmt l).getLabel().getValue() = this or - any(BreakExpr b).getLabel().getValue() = this or - any(ContinueExpr c).getLabel().getValue() = this + any(LabeledStmt l).getLabelName() = this or + any(BreakExpr b).getLabelName() = this or + any(ContinueExpr c).getLabelName() = this } string toString() { result = this } } - private Label getLabelOfStmt(Stmt s) { - exists(LabeledStmt l | s = l.getStmt() | - result = l.getLabel().getValue() or - result = getLabelOfStmt(l) - ) - } - predicate hasLabel(Ast::AstNode n, Label l) { - l = getLabelOfStmt(n) + l = n.(LabeledStmt).getLabelName() or - l = n.(BreakExpr).getLabel().getValue() + l = n.(BreakExpr).getLabelName() or - l = n.(ContinueExpr).getLabel().getValue() + l = n.(ContinueExpr).getLabelName() } class CallableContext = Void; @@ -268,7 +268,10 @@ private module Input implements InputSig1, InputSig2 { predicate beginAbruptCompletion( AstNode ast, PreControlFlowNode n, AbruptCompletion c, boolean always ) { - none() + mayThrow(ast) and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = false } predicate endAbruptCompletion(AstNode ast, PreControlFlowNode n, AbruptCompletion c) { none() } diff --git a/unified/ql/lib/codeql/unified/internal/ControlFlowGraphPlugin.qll b/unified/ql/lib/codeql/unified/internal/ControlFlowGraphPlugin.qll new file mode 100644 index 000000000000..ae1f5fa25ce5 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/ControlFlowGraphPlugin.qll @@ -0,0 +1,10 @@ +private import unified +private import codeql.util.Unit + +private module Plugins { + private import ControlFlowGraphPluginSwift +} + +class ControlFlowGraphPlugin extends Unit { + predicate mayThrow(AstNode ast) { none() } +} diff --git a/unified/ql/lib/codeql/unified/internal/ControlFlowGraphPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/ControlFlowGraphPluginSwift.qll new file mode 100644 index 000000000000..fac0d2bacf1c --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/ControlFlowGraphPluginSwift.qll @@ -0,0 +1,16 @@ +private import unified +private import ControlFlowGraphPlugin + +private predicate inTry(AstNode ast) { + ast.(UnaryExpr).getOperator().(Token).getValue() = "try" + or + exists(AstNode parent | + parent = ast.getParent() and + inTry(ast.getParent()) and + not parent instanceof Callable + ) +} + +private class ControlFlowGraphPluginSwift extends ControlFlowGraphPlugin { + override predicate mayThrow(AstNode ast) { ast instanceof CallExpr and inTry(ast) } +} diff --git a/unified/ql/lib/codeql/unified/internal/ExprPositions.qll b/unified/ql/lib/codeql/unified/internal/ExprPositions.qll new file mode 100644 index 000000000000..ed311bca83c8 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/ExprPositions.qll @@ -0,0 +1,85 @@ +private import unified +private import NameBinding as NameBinding +private import ExprPositionsPlugin + +/** + * Holds if `expr` appears in a context where it must refer to a type. + */ +predicate isInTypeContext(Expr expr) { + expr = any(TypeCastExpr n).getType() + or + expr = any(TypeTestExpr n).getType() + or + expr = any(VariableDeclaration n).getType() + or + expr = any(FunctionDeclaration n).getReturnType() + or + expr = any(FunctionExpr n).getReturnType() + or + expr = any(AccessorDeclaration n).getType() + or + expr = any(Parameter n).getType() + or + expr = any(TypeAliasDeclaration n).getType() + or + expr = any(BaseType n).getType() + or + expr = any(TypeParameter n).getBound() + or + expr = any(AssociatedTypeDeclaration n).getBound() + or + expr = any(ClassLikeDeclaration c).getExtensionTarget() + or + expr = any(GenericTypeExpr gte).getATypeArgument() + or + expr.getParent() instanceof TypeConstraint + or + exists(Identifier id | id = NameBinding::getStaticBindingTargetFromRef(expr) | + id = any(ClassLikeDeclaration c).getNameNode() + or + id = any(TypeAliasDeclaration t).getNameNode() + or + id = any(TypeParameter t).getNameNode() + ) + or + any(ExprPositionsPlugin p).isInTypeContext(expr) + or + isInTypeContext(expr.getEnclosingExpr()) +} + +/** Holds if `e` appears in a name-binding position inside `declaration` */ +predicate isInBindingContext(Expr e, AstNode declaration) { + NameBinding::bindingContext(e, _, declaration) +} + +/** Holds if `e` is part of the target of `assignment`. */ +predicate isInAssignmentContext(Expr e, AstNode assignment) { + e = assignment.(AssignExpr).getTarget() + or + e = assignment.(CompoundAssignExpr).getTarget() + or + exists(TupleExpr tuple | + isInAssignmentContext(tuple, assignment) and + e = tuple.getAnElement().getValue() + ) +} + +/** + * Holds if `e` receives an incoming value because it is part of a binding pattern + * or assignment target. + */ +predicate hasIncomingValue(Expr e, AstNode declarationOrAssignment) { + isInBindingContext(e, declarationOrAssignment) + or + isInAssignmentContext(e, declarationOrAssignment) +} + +/** + * Holds if `e` evaluates to a result. + */ +predicate hasResultValue(Expr e) { + not isInTypeContext(e) and + not isInBindingContext(e, _) and + not isInAssignmentContext(e, any(AssignExpr n)) and // non-compound assignment target + not e instanceof IdentifierLabel +} diff --git a/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll b/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll new file mode 100644 index 000000000000..8877439ea5dc --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll @@ -0,0 +1,10 @@ +private import unified +private import codeql.util.Unit + +private module Plugins { + private import ExprPositionsPluginSwift +} + +class ExprPositionsPlugin extends Unit { + predicate isInTypeContext(Expr e) { none() } +} diff --git a/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll new file mode 100644 index 000000000000..f4f5d2a9ca72 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll @@ -0,0 +1,6 @@ +private import unified +private import ExprPositionsPlugin + +private class ExprPositionsPluginSwift extends ExprPositionsPlugin { + override predicate isInTypeContext(Expr e) { e = any(GenericTypeExpr g).getBase() } +} diff --git a/unified/ql/lib/codeql/unified/internal/FacadeAst.qll b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll index 3da8de4b8f03..f82683c7f88a 100644 --- a/unified/ql/lib/codeql/unified/internal/FacadeAst.qll +++ b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll @@ -4,7 +4,9 @@ overlay[local?] module; +private import AstPlugin private import codeql.files.FileSystem +private import codeql.unified.internal.NameBinding as NameBinding module Unified { private import Ast::Unified as G @@ -15,6 +17,18 @@ module Unified { /** Gets the file containing this AST node. */ File getFile() { result = this.getLocation().getFile() } + private predicate isGenerated() { + this.hasModifier("generated") + or + this.getParent().isGenerated() + } + + /** Holds if this AST node comes from ordinary source code. */ + predicate fromSource() { + this.getFile().fromSource() and + not this.isGenerated() + } + /** Holds if this AST node has a modifier with the given text. */ predicate hasModifier(string text) { exists(Modifier mod | @@ -23,12 +37,53 @@ module Unified { ) } - /** Gets the nearest enclosing class declaration, possibly this node itself. */ + /** Gets the nearest enclosing class declaration, if any. */ ClassLikeDeclaration getEnclosingClass() { - result = this + exists(AstNode parent | parent = this.getParent() | + result = parent + or + not parent instanceof ClassLikeDeclaration and + result = parent.getEnclosingClass() + ) + } + + private AstNode overrideEnclosingCallableParent() { + exists(FunctionExpr func | + // Capture declarations are evaluated as part of the outer context, and + // considered to be captured by the function expression. + this = func.getACaptureDeclaration() and + result = func.getParent() + ) or - not this instanceof ClassLikeDeclaration and - result = this.getParent().getEnclosingClass() + exists(FunctionDeclaration func | + // The name of a function declaration is a variable belonging to the enclosing callable. + this = func.getNameNode() and + result = func.getParent() + ) + } + + /** + * Gets the nearest callable containing this AST node. + * + * If this node is itself a callable, this gets the outer callable, not the node itself. + * + * Note that the `TopLevel` is callable, so all nodes other than the `TopLevel` itself has an enclosing callable. + * + * In some cases this predicate skips overs the syntactically-enclosing callable in order to get the callable in which + * the AST is actually evaluated (such as for capture declarations in a function expression). + */ + Callable getEnclosingCallable() { + exists(AstNode parent | + parent = this.overrideEnclosingCallableParent() + or + not exists(this.overrideEnclosingCallableParent()) and + parent = this.getParent() + | + result = parent + or + not parent instanceof Callable and + result = parent.getEnclosingCallable() + ) } /** Gets the depth of this node in the AST. The root node has a depth of 0. */ @@ -53,35 +108,284 @@ module Unified { string getStringValue() { // TODO: we'll want to cook the string literals extractor-side, but for now // just strip the quotes here and ignore escape sequences. - result = this.(StringLiteral).getValue().regexpCapture("\"(.*)\"", 1) + exists(string text | text = this.(StringLiteral).getValue() | + result = text.regexpCapture("\"(.*)\"", 1) + or + // Constant-segments of string interpolations are represented as string literals, but their raw text does not have quotes + not exists(text.regexpCapture("\"(.*)\"", 1)) and + result = text + ) + } + + /** Gets the immediately-enclosing expression, skipping over intermediate sub-nodes like `Argument`, and without crossing a function boundary. */ + Expr getEnclosingExpr() { + result = this.getParent() and + not result instanceof Callable + or + result = this.getParent().(Argument).getParent() + } + } + + class AccessorDeclaration extends G::AccessorDeclaration { + /** Gets the name of this accessor. */ + string getName() { result = this.getNameNode().getValue() } + } + + class Argument extends G::Argument { + /** Gets the name of this argument. */ + string getName() { result = this.getNameNode().getValue() } + + /** Holds if this is a positional argument. */ + predicate isPositional() { not exists(this.getName()) } + + /** Gets the 0-based index of this argument among the positional arguments in the surrounding call or tuple. */ + int getPositionalIndex() { + this = + rank[result + 1](Argument a | + a.getParent() = this.getParent() and a.isPositional() + | + a order by a.getParentIndex() + ) + } + } + + class AssociatedTypeDeclaration extends G::AssociatedTypeDeclaration { + /** Gets the name of this associated type. */ + string getName() { result = this.getNameNode().getValue() } + } + + class BreakExpr extends G::BreakExpr { + /** Gets the label name targeted by this break. */ + string getLabelName() { result = this.getLabelNameNode().getValue() } + } + + class Member extends G::Member { + /** Gets the unqualified name of this member or a fallback name such as `(anonymous function)` if it has no explicit name. */ + string getNameOrFallback() { + result = this.getNameNode().getValue() + or + not exists(this.getNameNode()) and + ( + this instanceof ConstructorDeclaration and + result = "(constructor)" + or + this instanceof DestructorDeclaration and + result = "(destructor)" + or + this instanceof FunctionDeclaration and + result = "(anonymous function)" + or + this instanceof VariableDeclaration and + result = "(pattern assignment)" // this case is only reachable when the target is a destructuring pattern + or + this instanceof InitializerDeclaration and + result = "(initializer block)" + or + exists(ClassLikeDeclaration cls | this = cls | + result = NameBinding::getIdentifierFromRef(cls.getExtensionTarget()).getValue() + or + not exists(cls.getExtensionTarget()) and + result = "(anonymous class)" + ) + or + this instanceof TypeAliasDeclaration and + result = "(anonymous type alias)" + or + this instanceof AssociatedTypeDeclaration and + result = "(anonymous associated type)" + or + this instanceof UnsupportedNode and + result = "(unsupported node)" + or + this instanceof UnhandledNode and + result = "(unhandled node)" + ) + } + + /** + * Gets the name of this member qualified by the short names of each immediately-enclosing class. + */ + string getQualifiedName() { + exists(ClassLikeDeclaration cls | + this = cls.getAMember() and + result = cls.getQualifiedName() + "." + this.getNameOrFallback() + ) + or + not this = any(ClassLikeDeclaration cls).getAMember() and + result = this.getNameOrFallback() + } + } + + class ClassLikeDeclaration extends G::ClassLikeDeclaration { + /** Gets the name of this declaration. */ + string getName() { result = this.getNameNode().getValue() } + + /** Gets a direct base class of this class. */ + ClassLikeDeclaration getABaseClass() { + result.getNameNode() = + NameBinding::getStaticBindingTargetFromRef(this.getABaseType().getType()) + } + + override string toString() { + result = concat(getClassLikeDeclarationKeyword(this) + " ") + concat(this.getQualifiedName()) + } + } + + class ConstructorDeclaration extends G::ConstructorDeclaration { + /** Gets the name of this constructor. */ + string getName() { result = this.getNameNode().getValue() } + + override string toString() { + result = + concat(getConstructorDeclarationKeyword(this) + " ") + concat(this.getQualifiedName()) } } + class ContinueExpr extends G::ContinueExpr { + /** Gets the label name targeted by this continue. */ + string getLabelName() { result = this.getLabelNameNode().getValue() } + } + + class FunctionDeclaration extends G::FunctionDeclaration { + /** Gets the name of this function. */ + string getName() { result = this.getNameNode().getValue() } + + override string toString() { + result = concat(getFunctionDeclarationKeyword(this) + " ") + concat(this.getQualifiedName()) + } + } + + class VariableDeclaration extends G::VariableDeclaration { + /** Gets the name node of this variable declaration, if any. */ + override Identifier getNameNode() { result = this.getPattern() } + + /** Gets the name of the variable being declared, if any. */ + string getName() { result = this.getNameNode().getValue() } + + override string toString() { + result = concat(getVariableDeclarationKeyword(this) + " ") + concat(this.getQualifiedName()) + } + } + + class LabeledStmt extends G::LabeledStmt { + /** Gets the label name of this statement. */ + string getLabelName() { result = this.getLabelNameNode().getValue() } + } + + class MemberAccessExpr extends G::MemberAccessExpr { + override string toString() { result = "... ." + this.getMemberName() } + + /** Gets the member name of this access. */ + string getMemberName() { result = this.getMemberNameNode().getValue() } + } + + class NamedPattern extends G::NamedPattern { + /** Gets the name bound by this pattern. */ + string getName() { result = this.getNameNode().getValue() } + } + + class OperatorSyntaxDeclaration extends G::OperatorSyntaxDeclaration { + /** Gets the name of this operator. */ + string getName() { result = this.getNameNode().getValue() } + } + + class Parameter extends G::Parameter { + /** + * Gets the external name of this parameter. + * + * Has no result for pseudo-names like `_` that indicate that this is actually a positional parameter. + */ + string getExternalName() { result = this.getExternalNameNode().getValue() and not result = "_" } + + /** Gets the callable on which this parameter appears. */ + Callable getDeclaringCallable() { result = this.getParent() } + + /** Holds if this is a positional parameter. */ + predicate isPositional() { not exists(this.getExternalName()) } + + /** Gets the 0-based index of this parameter among the positional parameters of the declaring callable. */ + int getPositionalIndex() { + this = + rank[result + 1](Parameter p | + p.getDeclaringCallable() = this.getDeclaringCallable() and p.isPositional() + | + p order by p.getParentIndex() + ) + } + } + + /** A tuple expression. */ + class TupleExpr extends G::TupleExpr { + /** Gets the number of elements in this tuple expression. */ + int getNumberOfElements() { result = count(this.getAnElement()) } + } + + class TypeAliasDeclaration extends G::TypeAliasDeclaration { + /** Gets the name of this type alias. */ + string getName() { result = this.getNameNode().getValue() } + } + + class TypeParameter extends G::TypeParameter { + /** Gets the name of this type parameter. */ + string getName() { result = this.getNameNode().getValue() } + } + /** A binary expression. */ class BinaryExpr extends G::BinaryExpr { + override string toString() { result = "... " + this.getOperator().getValue() + " ..." } + /** Gets an operand of this binary expression. */ Expr getAnOperand() { result = [this.getLeft(), this.getRight()] } } + /** A unary expression. */ + class UnaryExpr extends G::UnaryExpr { + override string toString() { + result = this.getOperator().(PrefixOperator).getValue() + " ..." or + result = "... " + this.getOperator().(PostfixOperator).getValue() + } + } + /** A function call */ class CallExpr extends G::CallExpr { + override string toString() { + exists(Expr callee | callee = this.getCallee() | + result = callee.(Token).getValue() + "(...)" + or + result = "... ." + callee.(MemberAccessExpr).getMemberName() + "(...)" + or + not callee instanceof Token and + not callee instanceof MemberAccessExpr and + result = "...(...)" + ) + } + /** Gets the named argument with the given `name`. */ Expr getNamedArgument(string name) { exists(Argument arg | arg = this.getAnArgument() and - arg.getName().getValue() = name and + arg.getName() = name and result = arg.getValue() ) } - } - /** The base class for all patterns. */ - class Pattern extends G::Pattern { - /** Gets the immediately-enclosing pattern in which this is a nested pattern. */ - Pattern getEnclosingPattern() { - result = this.getParent() - or - result = this.getParent().(PatternElement).getParent() + /** Gets the number of arguments passed to this call, not counting implicit arguments like receiver. */ + int getNumberOfArguments() { result = count(this.getAnArgument()) } + + /** Gets the number of positional arguments passed to this call. */ + int getNumberOfPositionalArguments() { + result = count(Argument arg | arg = this.getAnArgument() and arg.isPositional()) } } + + /** A function expression. */ + class FunctionExpr extends G::FunctionExpr { + /** Gets the number of parameters of this function. */ + int getNumberOfParameters() { result = count(this.getAParameter()) } + } + + class ArrayLiteral extends G::ArrayLiteral { + /** Gets the number of elements in this array literal. */ + int getNumberOfElements() { result = count(this.getAnElement()) } + } } diff --git a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll index 5a44080464cc..e4a179741207 100644 --- a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll @@ -1,12 +1,22 @@ /** * Provides classes for reasoning about lexically scoped names and references to these. */ +overlay[local?] +module; private import unified private import unified as U private import codeql.namebinding.LocalNameBinding +private import codeql.unified.internal.NameBindingPlugin +private import codeql.unified.internal.StaticNameBinding private module LocalNameBindingInput implements LocalNameBindingInputSig { + predicate cacheRevRef() { + (bindingContext(_, _, _) implies any()) + or + (implicitDeclInScope(_, _, _) implies any()) + } + class AstNode = U::AstNode; private class LogicalAndRoot extends LogicalAndExpr { @@ -62,35 +72,10 @@ private module LocalNameBindingInput implements LocalNameBindingInputSig; @@ -344,14 +360,20 @@ module Public { /** Gets the name of this local, as a string. */ string getName() { result = super.getName() } + + /** Gets an access to this entity, through its lexically scoped name. */ + LocalNameAccess getAnAccess() { result.getLocalName() = this } + + /** Gets a name binding that declares this local name. */ + NameBinding getABinding() { result.getLocalName() = this } } - /** An identifier that appears as the declaration site of a name, such as the `x` in `let x = 123`. */ - class NameDeclaration extends Identifier { - NameDeclaration() { LocalNameBindingInput::bindingContext(this, _, _) } + /** An identifier appearing in a name-binding position, such as the `x` in `let x = 123`. */ + class NameBinding extends Identifier { + NameBinding() { bindingContext(this, _, _) } /** Gets the statement-like node declaring this name, such as a `VariableDeclaration` or `CatchClause`. */ - AstNode getDeclaration() { LocalNameBindingInput::bindingContext(this, _, result) } + AstNode getDeclaration() { bindingContext(this, _, result) } /** Gets the name being declared. */ string getName() { result = this.getValue() } @@ -359,10 +381,87 @@ module Public { /** Gets the representative for the local name introduced by this declaration. */ LocalName getLocalName() { result = this.(LocalNameBindingOutput::LocalAccess).getLocal() } } + + final class LocalVariable = LocalVariableImpl; + + /** A representative for a lexically scoped local variable. */ + abstract private class LocalVariableImpl extends LocalName { + /** Gets the callable containing the declaration of this local variable. */ + abstract Callable getDeclaringCallable(); + + /** Holds if this local variable is captured, that is, it is accessed from another callable than the one declaring it. */ + predicate isCaptured() { + this.getAnAccess().getEnclosingCallable() != this.getDeclaringCallable() + } + + /** + * Holds if this local variable represents an implicit receiver parameter of the given callable. + */ + abstract predicate isImplicitReceiverParameter(Callable c); + } + + private class ExplicitLocalVariable extends LocalVariableImpl { + ExplicitLocalVariable() { + exists(AstNode decl | + decl = this.getABinding().getDeclaration() and + not isInstanceMember(decl) and + not isStaticMember(decl) + | + decl instanceof VariableDeclaration or + decl instanceof FunctionDeclaration or // treat functions as values + decl instanceof Parameter or + decl instanceof ForEachStmt or + decl instanceof PatternGuardExpr or + decl instanceof CatchClause or + decl instanceof SwitchCase + ) + } + + override Callable getDeclaringCallable() { result = this.getABinding().getEnclosingCallable() } + + override predicate isImplicitReceiverParameter(Callable c) { none() } + } + + private class ImplicitLocalVariable extends LocalVariableImpl instanceof LocalNameBindingOutput::ImplicitLocal + { + AstNode scope; + string name; + + ImplicitLocalVariable() { + // For implicitly-declared locals we can't expect to find a binding. Check 'implicitDeclInScope' directly. + super.hasNameAndScope(name, scope) and + LocalNameBindingInput::implicitDeclInScope(name, scope, true) + } + + override Callable getDeclaringCallable() { + result = scope + or + not scope instanceof Callable and + result = scope.getEnclosingCallable() + } + + override predicate isImplicitReceiverParameter(Callable c) { + name = any(NameBindingPlugin p).getImplicitReceiverParameterName(scope) and + scope = c + } + } + + /** An access to a locally-declared name. */ + class LocalNameAccess extends PotentialLocalNameAccess { + LocalNameAccess() { not this instanceof UnqualifiedMemberAccess } + } + + /** An access to a local variable. */ + class LocalVariableAccess extends LocalNameAccess { + LocalVariableAccess() { this.getLocalName() instanceof LocalVariable } + + /** Gets the local variable being accessed. Alias for `getLocalName()`. */ + LocalVariable getLocalVariable() { result = this.getLocalName() } + } } /** - * An identifier node that is possibly a reference to a local name, but could also refer to a member + * A name node that is possibly a reference to a local name, but could also refer to a member * visible through imports or inheritance. * * For example, the type annotation `C` below is a potential access to `class C`, but could @@ -374,23 +473,21 @@ module Public { * } * ``` */ -class PotentialLocalNameAccess extends Identifier { - PotentialLocalNameAccess() { - this = any(NameExpr e).getIdentifier() - or - this = any(NamePattern e).getIdentifier() - or - this = any(NamedTypeExpr e | not exists(e.getQualifier())).getName() - or - this instanceof NameDeclaration - or - this = any(ClassLikeDeclaration cls | cls.hasModifier("extension")).getName() // TODO: Fix in the AST mapping: type extensions should reference their type, not declare it - } - +class PotentialLocalNameAccess extends IdentifierExpr { + /** Gets the representative for the local name being accessed. */ LocalName getLocalName() { result = this.(LocalNameBindingOutput::LocalAccess).getLocal() } + /** Gets the name being accessed. */ string getName() { result = this.getValue() } - /** Holds if this is one of the declaration sites for a name, such as the `x` in `let x = 123`. */ - predicate isDeclarationSite() { this instanceof NameDeclaration } + /** Holds if this is one of the binding sites for a name, such as the `x` in `let x = 123`. */ + predicate isBindingSite() { this instanceof NameBinding } +} + +/** Gets the implicitly-declared variable through which the given callable refers to its receiver. */ +LocalVariable getImplicitReceiverVariable(Callable callable) { + exists(string name | + name = any(NameBindingPlugin p).getImplicitReceiverParameterName(callable) and + result.(LocalNameBindingOutput::ImplicitLocal).hasNameAndScope(name, callable) + ) } diff --git a/unified/ql/lib/codeql/unified/internal/NameBinding.qll b/unified/ql/lib/codeql/unified/internal/NameBinding.qll new file mode 100644 index 000000000000..a07142de1d5f --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/NameBinding.qll @@ -0,0 +1,15 @@ +/** + * Re-exports everything from the name-binding passes, while avoiding conflicts on 'Public'. + * + * TODO: move name binding passes into a subfolder. + */ + +import StaticNameBinding +import LocalNameBinding +import NameBindingPlugin + +module Public { + // re-declare here to avoid conflicting import + import StaticNameBinding::Public + import LocalNameBinding::Public +} diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll index 4c8aa3e49e6c..d2320f8cab1b 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPlugin.qll @@ -1,10 +1,21 @@ private import unified private import codeql.util.Unit -private import codeql.unified.internal.LocalNameBinding -private import codeql.unified.internal.NameBindingPluginSwift // ensure overrides are seen +private import codeql.util.Option +private import StaticNameBinding + +private module Plugins { + private import codeql.unified.internal.NameBindingPluginSwift +} /** Extension point for language-specific inputs to name binding. */ class NameBindingPlugin extends Unit { + /** + * Holds if `e`, occurring in pattern context, should be interpreted a sub-expression + * whose result is to be compared to the incoming value. + */ + bindingset[e] + predicate isNonPattern(Expr e) { none() } + /** * Holds if `member` is an instance member. * @@ -33,11 +44,42 @@ class NameBindingPlugin extends Unit { */ bindingset[cls, member] predicate isInheritableMember(ClassLikeDeclaration cls, Member member) { none() } + + /** + * Holds if `member` is considered invalid within the namespace `n`. + */ + bindingset[n, member] + predicate isInvalidMember(NamespaceNode n, Member member) { none() } + + /** + * Gets the key used to determine if `m` is shadowed by another declaration + * with the same name and key. + * + * Nodes without shadowing keys will not shadow inherited declarations. + * + * This means that shadowing can be completely disabled by not implementing this + * predicate, and completely enabled by assigning the same key to all members. + */ + string getShadowingKey(Member m) { none() } + + /** Gets the name of the implicit receiver parameter in `callable`, if it has one. */ + string getImplicitReceiverParameterName(Callable callable) { none() } + + /** + * Gets the name through which static members of the enclosing class `cls` can be + * accessed, for example `Self` in Swift. + */ + bindingset[cls] + string getStaticSelfName(ClassLikeDeclaration cls) { none() } } /** Holds if `member` is an instance member. */ predicate isInstanceMember(Member member) { - (member instanceof VariableDeclaration or member instanceof FunctionDeclaration) and + ( + member instanceof VariableDeclaration or + member instanceof FunctionDeclaration or + member instanceof ConstructorDeclaration + ) and exists(ClassLikeDeclaration cls | cls.getAMember() = member | any(NameBindingPlugin p).isInstanceMember(cls, member) ) @@ -45,10 +87,15 @@ predicate isInstanceMember(Member member) { /** * Holds if `member` is a non-instance member declared in the context of a class or top-level. + * + * Instance constructors are also considered static members, in order to be able to look them + * up as both instance members (`self.init()`) and static members (`C1.init()`). */ predicate isStaticMember(Member member) { exists(ClassLikeDeclaration cls | cls.getAMember() = member | not any(NameBindingPlugin p).isInstanceMember(cls, member) + or + member instanceof ConstructorDeclaration ) or member = any(TopLevel t).getBody().getAStmt() @@ -61,18 +108,26 @@ predicate isInheritableMember(Member member) { ) } -/** Holds if `binding` is only visible in its local scope. */ -pragma[nomagic] -predicate isPrivateToLocalScope(AstNode binding) { - exists(Stmt member | - bindingContext(binding, _, member) and - ( - member = any(ClassLikeDeclaration cls).getAMember() or - member = any(TopLevel t).getBody().getAStmt() - ) and - (binding instanceof NameDeclaration or binding instanceof BulkImportingPattern) and - any(NameBindingPlugin p).isPrivateToLocalScope(member, binding) - ) +bindingset[n, member] +predicate isInvalidMember(NamespaceNode n, Member member) { + any(NameBindingPlugin p).isInvalidMember(n, member) +} + +private string getShadowingKey0(NameBindingNode n) { + result = any(NameBindingPlugin p).getShadowingKey(any(Member m | n.isMember(m))) +} + +private class ShadowingKey extends string { + ShadowingKey() { this = getShadowingKey0(_) } +} + +class ShadowingKeyOpt = Option::Option; + +ShadowingKeyOpt getShadowingKey(NameBindingNode n) { + result.asSome() = getShadowingKey0(n) + or + not exists(getShadowingKey0(n)) and + result.isNone() } /** @@ -93,8 +148,8 @@ abstract class ModuleScopeRepr extends AstNode { predicate shouldInclude(Container c, string path) { none() } /** - * Holds if this module scope can be referenced by an identifier `name` - * appearing as the leading identifier of an import path. + * Holds if this module scope can be referenced by the given `name` + * appearing as the leading name of an import path. */ predicate hasImportableName(string name) { none() } diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll index 329246f4474d..eecd22e22aab 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll @@ -3,9 +3,25 @@ */ private import unified +private import codeql.unified.internal.StaticNameBinding private import codeql.unified.internal.NameBindingPlugin +private class GeneratedConstructor extends ConstructorDeclaration { + GeneratedConstructor() { this.hasModifier("generated") } +} + +private class ConvenienceConstructor extends ConstructorDeclaration { + ConvenienceConstructor() { this.hasModifier("convenience") } +} + +private class DesignatedConstructor extends ConstructorDeclaration { + DesignatedConstructor() { not this instanceof ConvenienceConstructor } +} + class NameBindingPluginSwift extends NameBindingPlugin { + bindingset[e] + override predicate isNonPattern(Expr e) { isUnboundPattern(e.(Identifier)) } + // Note: For now we assume all code is Swift, but in the future we must restrict these rules to Swift-files bindingset[cls, member] override predicate isInstanceMember(ClassLikeDeclaration cls, Member member) { @@ -33,8 +49,73 @@ class NameBindingPluginSwift extends NameBindingPlugin { bindingset[cls, member] override predicate isInheritableMember(ClassLikeDeclaration cls, Member member) { exists(cls) and - not member.hasModifier("private") + not member.hasModifier("private") and + not (cls.hasModifier("protocol") and member instanceof ConstructorDeclaration) } + + bindingset[n, member] + override predicate isInvalidMember(NamespaceNode n, Member member) { + exists(NamespaceNode parent | + parent = n.getAnInheritanceParent() and + not parent + .isInstanceOrStaticMemberNamespace(any(ClassLikeDeclaration p | p.hasModifier("protocol"))) + | + // Remove generated constructors when there are inherited constructors available + // Note: If the base class only has private constructors, this class must have an + // explicit constructor, in which case there is no generated constructor to begin + // with + member instanceof GeneratedConstructor and + n.getOwnMember(_).isMember(member) and + parent.getMemberFull(_, _).isMember(any(ConstructorDeclaration inherited)) + or + // Remove inherited designated constructors (generated or not) when there are + // explicit designated constructors available + // Note: We always inherit convenience constructors, even though it may not actually + // be the case in Swift; this should be OK, since there can then not exist any calls + // that target those constructors + parent.getMemberFull(_, _).isMember(member.(DesignatedConstructor)) and + exists(DesignatedConstructor designated | + n.getOwnMember(_).isMember(designated) and + not designated instanceof GeneratedConstructor + ) + ) + } + + override string getShadowingKey(Member m) { + not m instanceof Callable and result = "" + or + not m instanceof GeneratedConstructor and + result = + concat(int i, Parameter p | + p = m.(Callable).getParameter(i) + | + p.getExternalNameNode().getValue(), "," order by i + ) + } + + override string getImplicitReceiverParameterName(Callable callable) { + // TODO: field initializers can also reference 'self' but are not currently wrapped in a Callable + callable = any(ClassLikeDeclaration cls).getAMember() and + result = "self" + } + + bindingset[cls] + override string getStaticSelfName(ClassLikeDeclaration cls) { exists(cls) and result = "Self" } +} + +/** Holds if `node` is in a context where a bare name node should be seen as a reference rather than a declaration. */ +private predicate isUnboundPattern(Expr node) { + // 'case/catch/guard' start an unbound-pattern context, 'let/var' terminate it + ( + node = any(SwitchCase c).getPattern() + or + node = any(CatchClause c).getPattern() + or + node = any(PatternGuardExpr c).getPattern() + or + isUnboundPattern(node.(Expr).getEnclosingExpr()) + ) and + not node.(ExprPattern).hasModifier(["let", "var"]) } private predicate predefinedSourceFolders(string folder, int ordering) { @@ -63,7 +144,7 @@ class SwiftPackageTarget extends ModuleScopeRepr, CallExpr { SwiftPackageTarget() { this.getFile().getBaseName() = "Package.swift" and - this.getCallee().(MemberAccessExpr).getMember().getValue() = targetKind and + this.getCallee().(MemberAccessExpr).getMemberName() = targetKind and targetKind = [ "target", "executableTarget", "testTarget", "systemLibrary", "binaryTarget", "plugin", diff --git a/unified/ql/lib/codeql/unified/internal/ParameterEx.qll b/unified/ql/lib/codeql/unified/internal/ParameterEx.qll new file mode 100644 index 000000000000..0ec703cb2b66 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/ParameterEx.qll @@ -0,0 +1,124 @@ +/** + * Provides logic for synthesizing parameters. + */ + +private import unified +private import AstPlugin +private import NameBinding + +private newtype TParameterEx = + TAstParameter(Parameter p) or + TImplicitReceiverParameter(Callable c) { + exists(LocalVariable v | v.isImplicitReceiverParameter(c)) + } or + TDefaultConstructorParameter(ConstructorDeclaration cd, int i, string name, boolean hasDefault) { + cd.hasModifier("generated") and + defaultConstructorParameter(cd, i, name, hasDefault) + } + +final class ParameterEx = ParameterExImpl; + +/** + * A parameter from source code or a synthesized parameter. + */ +abstract private class ParameterExImpl extends TParameterEx { + /** + * Gets the source code parameter that this entity represents, if any. + */ + Parameter asParameter() { this = TAstParameter(result) } + + /** + * Holds if this entity represents a regular parameter from source code. + */ + predicate isParameter() { exists(this.asParameter()) } + + /** + * Holds if this entity represents an implicit receiver parameter of `c`. + */ + predicate isImplicitReceiverParameter(Callable c) { this = TImplicitReceiverParameter(c) } + + /** + * Holds if this entity represents the `i`th parameter of the default + * constructor `cd` with name `name`. + */ + predicate isDefaultConstructorParameter(ConstructorDeclaration cd, int i, string name) { + this = TDefaultConstructorParameter(cd, i, name, _) + } + + /** Gets the callable that this parameter belongs to. */ + Callable getCallable() { + this.asParameter() = + [ + result.(FunctionDeclaration).getAParameter(), + result.(ConstructorDeclaration).getAParameter(), + result.(AccessorDeclaration).getAParameter(), + result.(FunctionExpr).getAParameter() + ] + or + this.isImplicitReceiverParameter(result) + or + this.isDefaultConstructorParameter(result, _, _) + } + + /** Holds if this parameter has a default value. */ + abstract predicate hasDefault(); + + /** Gets the type declaration of this parameter, if any. */ + abstract AstNode getType(); + + /** Gets a textual representation of this parameter. */ + abstract string toString(); + + /** Gets the location of this parameter. */ + abstract Location getLocation(); +} + +private class AstParameterEx extends ParameterExImpl, TAstParameter { + Parameter p; + + AstParameterEx() { this = TAstParameter(p) } + + override predicate hasDefault() { exists(p.getDefault()) } + + override AstNode getType() { result = p.getType() } + + override string toString() { result = p.toString() } + + override Location getLocation() { result = p.getLocation() } +} + +private class ImplicitReceiverParameterEx extends ParameterExImpl, TImplicitReceiverParameter { + Callable c; + + ImplicitReceiverParameterEx() { this = TImplicitReceiverParameter(c) } + + override predicate hasDefault() { none() } + + override AstNode getType() { none() } + + override string toString() { + exists(LocalVariable v | + v.isImplicitReceiverParameter(c) and + result = v.getName() + ) + } + + override Location getLocation() { result = c.getLocation() } +} + +private class DefaultConstructorParameterEx extends ParameterExImpl, TDefaultConstructorParameter { + ConstructorDeclaration cd; + int i; + string name; + boolean hasDefault; + + DefaultConstructorParameterEx() { this = TDefaultConstructorParameter(cd, i, name, hasDefault) } + + override AstNode getType() { defaultConstructorParameterType(cd, i, result) } + + override predicate hasDefault() { hasDefault = true } + + override string toString() { result = name + " [" + cd.getName() + " default constructor]" } + + override Location getLocation() { result = cd.getLocation() } +} diff --git a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll index d0f0288704e4..60487c6c12a0 100644 --- a/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/StaticNameBinding.qll @@ -1,13 +1,16 @@ /** * Provides classes for reasoning about static references to the members of classes and top-levels. */ +overlay[local?] +module; private import unified private import codeql.unified.internal.LocalNameBinding private import codeql.unified.internal.NameBindingPlugin +cached private newtype TNameBindingNode = - TIdentifier(Identifier n) or + TIdentifier(Identifier n) { CachedStage::ref() } or TBulkImport(BulkImportingPattern p) or TLocalName(LocalName local) or TStaticMemberNamespace(ClassLikeDeclaration cls) or @@ -28,6 +31,8 @@ class NameBindingNode extends TNameBindingNode { Identifier asIdentifier() { this.isIdentifier(result) } + predicate isMember(Member m) { this.asIdentifier() = m.getNameNode() } + predicate isBulkImport(BulkImportingPattern p) { this = TBulkImport(p) } predicate isLocalName(LocalName local) { this = TLocalName(local) } @@ -40,6 +45,10 @@ class NameBindingNode extends TNameBindingNode { this = TInstanceMemberNamespace(cls) } + predicate isInstanceOrStaticMemberNamespace(ClassLikeDeclaration cls) { + this.isInstanceMemberNamespace(cls) or this.isStaticMemberNamespace(cls) + } + /** Holds if this represents the set of members that can be accessed unqualified within the given scope. */ predicate isLocalNamespace(AstNode n) { this = TLocalNamespace(n) } @@ -119,13 +128,31 @@ class NameBindingNode extends TNameBindingNode { } Identifier getIdentifierFromRef(AstNode n) { - result = n.(NameExpr).getIdentifier() + result = n.(PotentialLocalNameAccess) or - result = n.(NamePattern).getIdentifier() + result = getIdentifierFromRef(n.(GenericTypeExpr).getBase()) or - result = n.(MemberAccessExpr).getMember() + result = n.(MemberAccessExpr).getMemberNameNode() +} + +private Identifier getImportBindingIdentifier(ImportDeclaration imprt) { + result = imprt.getPattern().(Identifier) or - result = n.(NamedTypeExpr).getName() + result = imprt.getPattern().(NamedPattern).getNameNode() +} + +/** Holds if `binding` is only visible in its local scope. */ +pragma[nomagic] +private predicate isPrivateToLocalScope(AstNode binding) { + exists(Stmt member | + bindingContext(binding, _, member) and + ( + member = any(ClassLikeDeclaration cls).getAMember() or + member = any(TopLevel t).getBody().getAStmt() + ) and + (binding instanceof NameBinding or binding instanceof BulkImportingPattern) and + any(NameBindingPlugin p).isPrivateToLocalScope(member, binding) + ) } NameBindingNode getNodeFromRef(AstNode n) { @@ -147,44 +174,41 @@ private NameBindingNode getNodeFromUncertainScope(AstNode n) { result.isLocalNam predicate readStep(NameBindingNode node1, string name, NameBindingNode node2) { exists(MemberAccessExpr expr | node1 = getNodeFromRef(expr.getBase()) and - name = expr.getMember().getValue() and - node2 = getNodeFromRef(expr) - ) - or - exists(NamedTypeExpr expr | - node1 = getNodeFromRef(expr.getQualifier()) and - name = expr.getName().getValue() and + name = expr.getMemberName() and node2 = getNodeFromRef(expr) ) or exists(PotentialLocalNameAccess access | - not access.isDeclarationSite() and + not access.isBindingSite() and name = access.getName() and node1 = getNodeFromUncertainScope(LocalNameBindingOutput::getAnUncertainScope(access, name)) and node2.isIdentifier(access) ) or - exists(NameExpr expr | + exists(Identifier expr | isImportPrefix(expr) and node1.isModuleRoot() and - name = expr.getIdentifier().getValue() and + name = expr.getValue() and node2 = getNodeFromRef(expr) ) } predicate storeStep(NameBindingNode node1, string name, NameBindingNode node2) { - exists(ClassLikeDeclaration cls, Member member, NameDeclaration nameDecl | + exists(ClassLikeDeclaration cls, Member member, NameBinding nameDecl | member = cls.getAMember() and not isPrivateToLocalScope(nameDecl) and nameDecl.getDeclaration() = member and node1.isIdentifier(nameDecl) and - name = nameDecl.getName() and - if isInstanceMember(member) - then node2.isInstanceMemberNamespace(cls) - else node2.isStaticMemberNamespace(cls) + name = nameDecl.getName() + | + isInstanceMember(member) and + node2.isInstanceMemberNamespace(cls) + or + isStaticMember(member) and + node2.isStaticMemberNamespace(cls) ) or - exists(TopLevel top, Stmt stmt, NameDeclaration nameDecl | + exists(TopLevel top, Stmt stmt, NameBinding nameDecl | stmt = top.getBody().getAStmt() and not isPrivateToLocalScope(nameDecl) and nameDecl.getDeclaration() = stmt and @@ -204,18 +228,18 @@ predicate storeStep(NameBindingNode node1, string name, NameBindingNode node2) { predicate valueStep(NameBindingNode node1, NameBindingNode node2) { exists(PotentialLocalNameAccess access | - access.isDeclarationSite() and + access.isBindingSite() and node1.isIdentifier(access) and node2.isLocalName(access.getLocalName()) or - not access.isDeclarationSite() and + not access.isBindingSite() and node1.isLocalName(access.getLocalName()) and node2.isIdentifier(access) ) or exists(ClassLikeDeclaration cls | node1.isStaticMemberNamespace(cls) and - node2.isIdentifier(cls.getName()) + node2.isIdentifier(cls.getNameNode()) ) or exists(ClassLikeDeclaration cls | @@ -230,7 +254,7 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { or exists(ImportDeclaration imprt | node1 = getNodeFromRef(imprt.getImportedExpr()) and - node2 = getNodeFromRef(imprt.getPattern()) + node2 = getNodeFromRef(getImportBindingIdentifier(imprt)) ) or exists(BulkImportingPattern p, AstNode scope, AstNode declaration | @@ -247,12 +271,25 @@ predicate valueStep(NameBindingNode node1, NameBindingNode node2) { ) ) or - exists(NamePattern p | - node1 = getNodeFromRef(p) and + exists(NamedPattern p | + node1 = getNodeFromRef(p.getNameNode()) and node2 = getNodeFromRef(p.getSubPattern()) ) or + // Extensions have access to the members of the entity they extend. + // TODO: The type parameters of the target type should also be in the local scope (for Swift). + exists(ClassLikeDeclaration extension | + node1 = getNodeFromRef(extension.getExtensionTarget()) and + node2.isLocalNamespace(extension) + ) + or FolderHeuristic::valueStep(node1, node2) + or + exists(ClassLikeDeclaration cls, LocalNameBindingOutput::ImplicitLocal self | + node1.isIdentifier(cls.getNameNode()) and + node2.isLocalName(self) and + self.hasNameAndScope(any(NameBindingPlugin p).getStaticSelfName(cls), cls) + ) } private predicate isImportPrefix(Expr e) { @@ -272,10 +309,21 @@ predicate inheritanceStep(NameBindingNode supertype, NameBindingNode subtype) { ) } +predicate extensionStep(NameBindingNode extension, NameBindingNode targetClass) { + exists(ClassLikeDeclaration cls | + targetClass = getNodeFromRef(cls.getExtensionTarget()) and + extension.isStaticMemberNamespace(cls) + ) +} + signature module TrackInputSig { /** Holds if the forward-flow of `node` should be tracked. */ predicate shouldTrack(NameBindingNode node); + default NameBindingNode getMember(NamespaceNode namespace, string name) { + result = namespace.getMember(name) + } + default predicate additionalValueStep(NameBindingNode node1, NameBindingNode node2) { none() } } @@ -291,6 +339,25 @@ module Track { exists(NameBindingNode prev | prev = track(node) | valueStepEx(prev, result)) } + pragma[nomagic] + private predicate derivedStoreReadStep0( + NamespaceNode namespace, string name, NameBindingNode node2 + ) { + readStep(namespace.ref(), name, node2) + } + + /** + * Holds if `node1 -> node2` is derived by combining a store and a read step, with zero or more value steps and inheritance steps in-between. + */ + pragma[nomagic] + private predicate derivedStoreReadStep(NameBindingNode node1, NameBindingNode node2) { + exists(NamespaceNode namespace, string name | + node1 = getMember(namespace, name) and // getMember() combines a store step with subsequent inheritance steps + derivedStoreReadStep0(namespace, name, node2) and + node1 != node2 + ) + } + /** Holds if there is an effective value step `node1 -> node2`. */ pragma[inline] private predicate valueStepEx(NameBindingNode node1, NameBindingNode node2) { @@ -302,22 +369,10 @@ module Track { } } -/** - * Holds if `node1 -> node2` is derived by combining a store and a read step, with zero or more value steps and inheritance steps in-between. - */ -pragma[nomagic] -private predicate derivedStoreReadStep(NameBindingNode node1, NameBindingNode node2) { - exists(NamespaceNode namespace, string name | - node1 = namespace.getMember(name) and // getMember() combines a store step with subsequent inheritance steps - readStep(namespace.ref(), name, node2) and - node1 != node2 - ) -} - /** Holds if the member represented by `node` can be inherited. */ pragma[nomagic] private predicate isInheritableMemberNode(NameBindingNode node) { - exists(NameDeclaration decl | + exists(NameBinding decl | node.isIdentifier(decl) and isInheritableMember(decl.getDeclaration()) ) @@ -325,10 +380,15 @@ private predicate isInheritableMemberNode(NameBindingNode node) { /** A name-binding node that can have members. */ class NamespaceNode extends NameBindingNode { + cached NamespaceNode() { - storeStep(_, _, this) or - inheritanceStep(_, this) or - this.isInstanceMemberNamespace(_) or + CachedStage::ref() and + storeStep(_, _, this) + or + inheritanceStep(_, this) + or + this.isInstanceMemberNamespace(_) + or this.isStaticMemberNamespace(_) } @@ -336,10 +396,13 @@ class NamespaceNode extends NameBindingNode { NameBindingNode ref() { result = TrackNamespace::track(this) } /** Gets an own (non-inherited) member of this namespace of the given name. */ - NameBindingNode getOwnMember(string name) { storeStep(result, name, this) } + NameBindingNode getOwnMember(string name, ShadowingKeyOpt shadowingKey) { + storeStep(result, name, this) and + shadowingKey = getShadowingKey(result) + } - /** Holds if this namespace has an own-member of the given name */ - predicate hasOwnMember(string name) { exists(this.getOwnMember(name)) } + /** Gets an own (non-inherited) member of this namespace of the given name. */ + NameBindingNode getOwnMember(string name) { result = this.getOwnMember(name, _) } /** If this is the static namespace for a class, gets the corresponding instance namespace. */ NamespaceNode toInstanceNamespace() { @@ -352,6 +415,17 @@ class NamespaceNode extends NameBindingNode { /** If this is the instance namespace for a class, gets the corresponding static namespace. */ NamespaceNode toStaticNamespace() { result.toInstanceNamespace() = this } + private NamespaceNode getAnExtension1() { extensionStep(result, this.ref()) } + + /** Gets a namespace that is an extension (i.e. containing extension methods) of this node. */ + NamespaceNode getAnExtension() { + result = this.getAnExtension1() + or + // `extensionStep` connects the static namespaces of classes. + // Add the corresponding extension relation between the instance namespaces. + result = this.toStaticNamespace().getAnExtension1().toInstanceNamespace() + } + private NamespaceNode getAnInheritanceParent1() { inheritanceStep(result.ref(), this) } /** Gets a namespace from which this namespace inherits directly. */ @@ -366,60 +440,105 @@ class NamespaceNode extends NameBindingNode { /** Gets a namespace that directly inherits from this one. */ NamespaceNode getAnInheritanceChild() { result.getAnInheritanceParent() = this } - /** Gets a member of this namespace of the given name. */ pragma[nomagic] - NameBindingNode getMember(string name) { - result = this.getOwnMember(name) + private predicate hasOwnMemberWithShadowingKey(string name, string shadowingKey) { + exists(this.getOwnMember(name, any(ShadowingKeyOpt opt | opt.asSome() = shadowingKey))) + } + + /** + * Gets a potential member of this namespace of the given name. + * + * Unlike `getMember`, this predicate does not filter away invalid members. + */ + pragma[nomagic] + NameBindingNode getMemberFull(string name, ShadowingKeyOpt shadowingKey) { + result = this.getOwnMember(name) and + shadowingKey = getShadowingKey(result) or - not this.hasOwnMember(name) and - result = this.getAnInheritanceParent().getMember(name) and + not this.hasOwnMemberWithShadowingKey(name, shadowingKey.asSome()) and + result = this.getAnInheritanceParent().getMemberFull(name, shadowingKey) and isInheritableMemberNode(result) + or + result = this.getAnExtension().getMemberFull(name, shadowingKey) + } + + private NameBindingNode getMember(string name, ShadowingKeyOpt shadowingKey) { + CachedStage::ref() and + not exists(Member m | result.isMember(m) | isInvalidMember(this, m)) and + ( + result = this.getOwnMember(name) and + shadowingKey = getShadowingKey(result) + or + result = this.getAnExtension().getMember(name, shadowingKey) + or + exists(NamespaceNode parent | + parent = this.getAnInheritanceParent() and + not this.hasOwnMemberWithShadowingKey(name, shadowingKey.asSome()) and + result = parent.getMember(name, shadowingKey) and + isInheritableMemberNode(result) + ) + ) } + + /** Gets a member of this namespace of the given name. */ + cached + NameBindingNode getMember(string name) { result = this.getMember(name, _) } } private module TrackNamespaceInput implements TrackInputSig { predicate shouldTrack(NameBindingNode node) { node instanceof NamespaceNode } + NameBindingNode getMember(NamespaceNode namespace, string name) { + result = namespace.getMemberFull(name, _) + } + predicate additionalValueStep(NameBindingNode node1, NameBindingNode node2) { // Namespace-tracking goes through aliases, but declaration-tracking does not exists(TypeAliasDeclaration decl | node1 = getNodeFromRef(decl.getType()) and - node2.isIdentifier(decl.getName()) + node2.isIdentifier(decl.getNameNode()) ) } } private module TrackNamespace = Track; +bindingset[node1, node2] +pragma[inline_late] +private predicate sameName(Identifier node1, Identifier node2) { + node1.getValue() = node2.getValue() +} + /** * Holds if `decl` is a trivial local alias for an imported name. * * Declaration-tracking usually stops at type-aliases, but trivial aliases * will be passed through. */ -predicate isTrivialNameAlias(NameDeclaration decl) { +pragma[nomagic] +predicate isTrivialNameAlias(NameBinding decl) { exists(ImportDeclaration imprt | - decl = getIdentifierFromRef(imprt.getPattern()) and - decl.getName() = getIdentifierFromRef(imprt.getImportedExpr()).getValue() + decl = getImportBindingIdentifier(imprt) and + sameName(decl, getIdentifierFromRef(imprt.getImportedExpr())) ) } -private module TrackNameDeclarationInput implements TrackInputSig { +private module TrackNameBindingInput implements TrackInputSig { predicate shouldTrack(NameBindingNode node) { - exists(NameDeclaration decl | + exists(NameBinding decl | node.isIdentifier(decl) and not isTrivialNameAlias(decl) ) } } -private module TrackNameDeclaration = Track; +private module TrackNameBinding = Track; /** Gets a name-binding node that may refer to the given declaration. */ -NameBindingNode trackNameDeclaration(NameDeclaration decl) { +private NameBindingNode trackNameBinding(NameBinding decl) { exists(NameBindingNode start | start.isIdentifier(decl) and - result = TrackNameDeclaration::track(start) + result = TrackNameBinding::track(start) ) } @@ -463,6 +582,9 @@ module DebugGraph { or inheritanceStep(node1, node2) and value = "inheritedBy" + or + extensionStep(node1, node2) and + value = "extensionOf" ) } } @@ -473,7 +595,7 @@ module DebugGraph { */ private module FolderHeuristic { private predicate topLevelNameDef(File file, string name, NameBindingNode node) { - exists(TopLevel top, Stmt stmt, NameDeclaration nameDecl | + exists(TopLevel top, Stmt stmt, NameBinding nameDecl | top.getFile() = file and stmt = top.getBody().getAStmt() and not isPrivateToLocalScope(nameDecl) and @@ -559,6 +681,17 @@ private module FolderHeuristic { } } +private ClassLikeDeclaration resolveExtensionTarget(ClassLikeDeclaration cls) { + trackNameBinding(result.getNameNode()) = getNodeFromRef(cls.getExtensionTarget()) +} + +private ClassLikeDeclaration tryResolveExtensionTarget(ClassLikeDeclaration cls) { + result = resolveExtensionTarget(cls) + or + not exists(resolveExtensionTarget(cls)) and + result = cls +} + /** * Holds if `access` may resolve to `target` through the enclosing `accessingClass`. * @@ -566,10 +699,10 @@ private module FolderHeuristic { * or as a static member. */ private predicate unqualifiedMemberAccessCand( - PotentialLocalNameAccess access, boolean instanceAccess, NameDeclaration target, + PotentialLocalNameAccess access, boolean instanceAccess, NameBinding target, ClassLikeDeclaration accessingClass ) { - not access instanceof NameDeclaration and + not access instanceof NameBinding and ( // Resolved by local scoping exists(LocalName local | @@ -587,7 +720,8 @@ private predicate unqualifiedMemberAccessCand( // Resolved in an uncertain scope exists(NamespaceNode namespace, string name | name = access.getName() and - accessingClass = LocalNameBindingOutput::getAnUncertainScope(access, name) + accessingClass = + tryResolveExtensionTarget(LocalNameBindingOutput::getAnUncertainScope(access, name)) | instanceAccess = true and namespace.isInstanceMemberNamespace(accessingClass) and @@ -610,42 +744,112 @@ private int unqualifiedMemberAccessDepth(PotentialLocalNameAccess access) { * `accessingClass` is the enclosing class in which the member was found, and * `instanceAccess` indicates if it is an instance member or static member. */ +cached predicate unqualifiedMemberAccess( - PotentialLocalNameAccess access, boolean instanceAccess, NameDeclaration target, + PotentialLocalNameAccess access, boolean instanceAccess, NameBinding target, ClassLikeDeclaration accessingClass ) { + CachedStage::ref() and unqualifiedMemberAccessCand(access, instanceAccess, target, accessingClass) and accessingClass.getDepth() = unqualifiedMemberAccessDepth(access) } -/** - * An identifier appearing in a unqualified position, referring to a member of an enclosing class. - */ -class UnqualifiedMemberAccess extends Identifier { - private boolean instanceAccess; - private NameDeclaration target; - private ClassLikeDeclaration accessingClass; +module Public { + /** + * A name node appearing in an unqualified position, referring to a member of an enclosing class. + */ + class UnqualifiedMemberAccess extends Identifier { + private boolean instanceAccess; + private NameBinding target; + private ClassLikeDeclaration accessingClass; - UnqualifiedMemberAccess() { - unqualifiedMemberAccess(this, instanceAccess, target, accessingClass) - } + UnqualifiedMemberAccess() { + unqualifiedMemberAccess(this, instanceAccess, target, accessingClass) + } + + /** Gets the name binding of the member being accessed. */ + NameBinding getTarget() { result = target } - /** Gets the name declaration of the member being accessed. */ - NameDeclaration getTarget() { result = target } + /** Gets the enclosing class whose (possibly inherited) member is being accessed. */ + ClassLikeDeclaration getAccessingClass() { result = accessingClass } - /** Gets the enclosing class whose (possibly inherited) member is being accessed. */ - ClassLikeDeclaration getAccessingClass() { result = accessingClass } + /** Holds if this is an instance access on the accessing class. */ + predicate isInstanceAccess() { instanceAccess = true } - /** Holds if this is an instance access on the accessing class. */ - predicate isInstanceAccess() { instanceAccess = true } + /** Gets the local variable implicitly referenced as the base of this access. */ + cached + LocalVariable getImplicitQualifierVariable() { + ResolveImplicitReceiverAccess::access(this, result) + } + + /** Gets the simple name of this identifier, that is, the name of the member being accessed. */ + string getName() { result = this.getValue() } + } } -/** Gets the declaration being accessed by `access`, as determined by static name binding. */ -NameDeclaration getStaticBindingTarget(Identifier access) { +/** Gets the declaration being accessed by identifier `i`, as determined by static name binding. */ +cached +NameBinding getStaticBindingTargetFromIdentifier(Identifier i) { + CachedStage::ref() and // For unqualified accesses, use the shadowing-aware lookup - result = access.(UnqualifiedMemberAccess).getTarget() + result = i.(UnqualifiedMemberAccess).getTarget() or // For others, just follow the name binding graph - not access instanceof UnqualifiedMemberAccess and - trackNameDeclaration(result).asIdentifier() = access + not i instanceof UnqualifiedMemberAccess and + trackNameBinding(result).asIdentifier() = i +} + +/** + * Gets the declaration being accessed by `access`, as determined by static name binding. + * + * Unlike `getStaticBindingTargetFromIdentifier`, this works with any AST node that contains + * a reference to an identifier, for example `x.foo` and `foo` resolve to whatever the + * identifiers `foo` resolve to. + */ +NameBinding getStaticBindingTargetFromRef(AstNode access) { + result = getStaticBindingTargetFromIdentifier(getIdentifierFromRef(access)) +} + +/** + * Gets the name of the implicit receiver parameter in scope at `callable` (possibly declared by an outer callable). + * + * Note that we only propagate the name, not the LocalVariable, since capture-declarations and Swift's `guard let self` statements + * may re-introduce a new binding for `self`, which becomes the one referenced by subsequent unqualified member accesses. + */ +private string getEnclosingReceiverParameterName(Callable callable) { + result = any(NameBindingPlugin p).getImplicitReceiverParameterName(callable) + or + not exists(any(NameBindingPlugin p).getImplicitReceiverParameterName(callable)) and + result = getEnclosingReceiverParameterName(callable.getEnclosingCallable()) +} + +/** Holds if `access` contains a reference to the implicit receiver parameter `name`. */ +private predicate implicitReceiverAccess(AstNode access, string name) { + name = getEnclosingReceiverParameterName(access.(UnqualifiedMemberAccess).getEnclosingCallable()) +} + +private module ResolveImplicitReceiverAccess = + LocalNameBindingOutput::ResolveAccesses; + +cached +private module CachedStage { + /** Reference to the cached stage of this module. */ + cached + predicate ref() { any() } + + /** Reverse references to the predicates that reference `ref()`. */ + cached + predicate revRef() { + any() + or + (exists(NameBindingNode n) implies any()) + or + (exists(any(NamespaceNode n).getMember(_)) implies any()) + or + (unqualifiedMemberAccess(_, _, _, _) implies any()) + or + (exists(any(UnqualifiedMemberAccess u).getImplicitQualifierVariable()) implies any()) + or + (exists(getStaticBindingTargetFromIdentifier(_)) implies any()) + } } diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/AllDataFlow.qll b/unified/ql/lib/codeql/unified/internal/dataflow/AllDataFlow.qll new file mode 100644 index 000000000000..442d9b1efad0 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/AllDataFlow.qll @@ -0,0 +1,18 @@ +/** Re-exports all the files in the internal dataflow folder (except DataFlowPublic). */ + +import CallGraph +import CaptureSsa +import Content +import ConstructorPatterns +import DataFlowCall +import DataFlowCallable +import DataFlowGraph +import DataFlowInstantiation +import DataFlowNode +import DataFlowPlugin +import LocalSsa +import ParameterPositions +import Step +import TaintTrackingInstantiation +import VariableRefKind +import LocalVariableRefNode diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/CallGraph.qll b/unified/ql/lib/codeql/unified/internal/dataflow/CallGraph.qll new file mode 100644 index 000000000000..1ff981153fee --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/CallGraph.qll @@ -0,0 +1,7 @@ +private import unified +private import AllDataFlow +private import codeql.unified.internal.typeinference.TypeInference as T + +DataFlowCallable viableCallable(DataFlowCall c) { + result.asSourceCallable() = T::resolveCallTarget(c.asExplicitCall()) +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/CaptureSsa.qll b/unified/ql/lib/codeql/unified/internal/dataflow/CaptureSsa.qll new file mode 100644 index 000000000000..cd74ad53eafd --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/CaptureSsa.qll @@ -0,0 +1,180 @@ +/** + * SSA for captured variables. + */ + +private import unified +private import unified as U +private import AllDataFlow +private import codeql.dataflow.VariableCapture +private import codeql.unified.internal.ControlFlowGraph +private import codeql.unified.internal.ExprPositions + +module CaptureSsaInput implements InputSig { + final private class FinalCallable = U::Callable; + + class Callable extends FinalCallable { + Callable() { this.fromSource() } + + predicate isConstructor() { none() } // TODO + } + + Callable basicBlockGetEnclosingCallable(BasicBlock bb) { result = bb.getEnclosingCallable() } + + class CapturedVariable extends LocalVariable { + CapturedVariable() { this.isCaptured() } + + Callable getCallable() { result = super.getDeclaringCallable() } + } + + class CapturedParameter extends CapturedVariable { + // This class should be empty, as the capture library never gets to work with a node that corresponds to a `DataFlowInput::ParameterNode`. + // + // When a variable is mentioned in a pattern in the parameter list, the pattern itself (TValueNode) becomes the ParameterNode + // and the assignment to the variable is modeled as an ordinary variable-assignment at the point where the variable mention appears in the CFG. + // Likewise, the receiver is represented by TImplicitParameterNode and its assignment to 'self/this' is modeled as an ordinary assignment. + CapturedParameter() { none() } + } + + private class TExpr = TCallableNode or TLocalVariableRefNode; + + private predicate isTopLevelCallable(BuilderNode callable) { + callable.isCallable(any(TopLevel t)) + } + + class Expr extends TExpr { + Expr() { not isTopLevelCallable(this) } + + string toString() { result = this.(BuilderNode).toString() } + + Location getLocation() { result = this.(BuilderNode).getLocation() } + + predicate hasCfgNode(BasicBlock bb, int i) { + this.(LocalVariableRefNode).hasCfgNode(bb, i) + or + exists(DataFlowCallable callable | + this = TCallableNode(callable) and + bb.getNode(i).injects(callable.asSourceCallable()) + ) + } + } + + final private class FinalLocalVariableRefNode = LocalVariableRefNode; + + class VariableWrite extends FinalLocalVariableRefNode { + VariableWrite() { + this.getRefKind().isWrite() and super.getVariable() instanceof CapturedVariable + } + + CapturedVariable getVariable() { result = super.getVariable() } + } + + class VariableRead extends Expr instanceof LocalVariableRefNode { + VariableRead() { + super.getVariable() instanceof CapturedVariable and + super.getRefKind().isRead() + } + + CapturedVariable getVariable() { result = super.getVariable() } + } + + /** + * Holds if `node` is a possible alias for `callable`. + */ + private predicate callableHasLocalAlias(Callable callable, Stage2Node node) { + node.(BuilderNode).isCallable(callable) + or + exists(Stage2Node prev | callableHasLocalAlias(callable, prev) | + step(prev, any(Step s | s.value()), node) + or + localSsaStep(prev, node, _) + ) + or + exists(CapturedVariable var | + callableHasLocalAliasVar(callable, var) and + node.(BuilderNode).isLocalVariableRead(_, var) + ) + } + + pragma[nomagic] + private predicate callableHasLocalAliasVar(Callable callable, CapturedVariable var) { + exists(BuilderNode ref | + callableHasLocalAlias(callable, ref) and + ref.isLocalVariableWrite(_, var) + ) + } + + class ClosureExpr extends Expr instanceof TCallableNode { + // TODO: In order to support classes with captures, this needs to cover constructor calls to such classes as well. + private Callable callable; + + ClosureExpr() { this.(BuilderNode).isCallable(callable) } + + predicate hasBody(Callable body) { callable = body } + + predicate hasAliasedAccess(Expr f) { + // TODO: Restrict to places where the function is called or escapes into a call where it might get called. + callableHasLocalAlias(callable, f) and not f.(LocalVariableRefNode).getRefKind().isWrite() + } + } +} + +module CaptureSsaOutput = Flow; + +Node getNodeFromCaptureSsaNode(CaptureSsaOutput::ClosureNode n) { + result = TCaptureSsaNode(n) + or + result = n.(CaptureSsaOutput::ExprNode).getExpr() + or + result = n.(CaptureSsaOutput::ExprPostUpdateNode).getExpr().(BuilderNode).getPostUpdateNode() + or + result = n.(CaptureSsaOutput::VariableWriteSourceNode).getVariableWrite() + or + // NOTE: This only supports lambdas at the moment. Local classes in Swift cannot capture variables. + result = n.(CaptureSsaOutput::MallocNode).getClosureExpr() + or + exists(CaptureSsaOutput::ThisParameterNode thisParam, Callable callable | + n = thisParam and + callable = thisParam.getCallable() and + result + .(BuilderNode) + .isImplicitParameter(toDataFlowCallable(callable), any(ParameterPosition p | p.isCallee())) + ) +} + +CaptureSsaOutput::ClosureNode getCaptureSsaNodeFromNode(Node n) { + n = getNodeFromCaptureSsaNode(result) +} + +predicate captureSsaLocalFlowStep(Node node1, Node node2) { + CaptureSsaOutput::localFlowStep(getCaptureSsaNodeFromNode(node1), getCaptureSsaNodeFromNode(node2)) +} + +predicate captureSsaStoreStep(Node node1, ContentSet contents, Node node2) { + CaptureSsaOutput::storeStep(getCaptureSsaNodeFromNode(node1), + contents.asSingleton().asCapturedVariable(), getCaptureSsaNodeFromNode(node2)) +} + +predicate captureSsaReadStep(Node node1, ContentSet contents, Node node2) { + CaptureSsaOutput::readStep(getCaptureSsaNodeFromNode(node1), + contents.asSingleton().asCapturedVariable(), getCaptureSsaNodeFromNode(node2)) +} + +predicate captureSsaClearsContent(Node node, ContentSet contents) { + CaptureSsaOutput::clearsContent(getCaptureSsaNodeFromNode(node), + contents.asSingleton().asCapturedVariable()) +} + +Node getCaptureSsaPostUpdate(Node pre) { + CaptureSsaOutput::capturePostUpdateNode(getCaptureSsaNodeFromNode(result), + getCaptureSsaNodeFromNode(pre)) +} + +predicate captureSsaAllowParameterReturnInSelf(Node param) { + exists(Callable callable | + CaptureSsaOutput::heuristicAllowInstanceParameterReturnInSelf(callable) and + param = + getNodeFromCaptureSsaNode(any(CaptureSsaOutput::ThisParameterNode n | + n.getCallable() = callable + )) + ) +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/ConstructorPatterns.qll b/unified/ql/lib/codeql/unified/internal/dataflow/ConstructorPatterns.qll new file mode 100644 index 000000000000..a1b242f1fef3 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/ConstructorPatterns.qll @@ -0,0 +1,75 @@ +/** + * Provides data-flow modelling of constructor patterns / enum-case constructors. + */ + +private import unified +private import AllDataFlow +private import codeql.unified.internal.ExprPositions +private import codeql.unified.internal.NameBinding as NameBinding +private import codeql.unified.internal.typeinference.TypeInference as T + +/** + * A constructor pattern, such as `Optional.some(let x)`. + */ +class ConstructorPattern extends CallExpr { + ConstructorPattern() { isInBindingContext(this, _) } +} + +/** + * Gets the unqualified name of the enum-case constructor that might be referenced by `call`. + */ +private string getShortConstructorName(CallExpr call) { + result = call.getCallee().(MemberAccessExpr).getMemberName() + // note: enum constructors can only be accessed qualified (possibly with leading-dot syntax) + // so do not do this for Identifiers +} + +/** + * Holds if `call` targets a member called `name` and has the given `arity`. + */ +pragma[nomagic] +private predicate callSiteHasSignature(CallExpr call, string name, int arity) { + name = call.getCallee().(MemberAccessExpr).getMemberName() and + arity = call.getNumberOfArguments() +} + +/** + * Holds if a constructor pattern has the given short `name` and `arity`. + */ +pragma[nomagic] +private predicate isSignatureUsedInConstructorPattern(string name, int arity) { + callSiteHasSignature(any(ConstructorPattern p), name, arity) +} + +/** + * Holds if `call` resolves to a known enum-case constructor, or is assumed to resolve to an unseen enum-case constructor. + */ +pragma[nomagic] +private predicate assumeResolvesToEnumCaseConstructor(CallExpr call) { + call instanceof ConstructorPattern + or + T::resolveCallTarget(call) instanceof EnumCaseConstructor + or + // If the `E` in `E.foo(...)` could not be resolved, check if the name `foo` matches a constructor pattern. + exists(MemberAccessExpr callee, Expr base, string name, int arity | + callee = call.getCallee() and + base = callee.getBase() and + not exists(NameBinding::getStaticBindingTargetFromRef(base)) and + not exists(T::inferType(base)) and + callSiteHasSignature(call, name, arity) and + isSignatureUsedInConstructorPattern(name, arity) + ) +} + +/** + * Gets the field name for the enum-case data parameter corresponding to the given argument. + */ +string getEnumCaseParameterFieldFromArgument(CallExpr call, Argument arg) { + assumeResolvesToEnumCaseConstructor(call) and + exists(int i | + // Note: The label name is optional when calling an enum-case constructor, but the arguments + // must occur in declaration order, so use the raw argument index to handle both the labelled and unlabelled cases. + arg = call.getArgument(i) and + result = getShortConstructorName(call) + "." + i + ) +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/Content.qll b/unified/ql/lib/codeql/unified/internal/dataflow/Content.qll new file mode 100644 index 000000000000..d8d929f1b4a3 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/Content.qll @@ -0,0 +1,55 @@ +private import unified +private import AllDataFlow + +private newtype TContent = + TArrayElement() or + TNamedMember(string name) { + name = any(Identifier id).getValue() + or + // Tuple elements can be accessed as named members, e.g. `tuple.0`, `tuple.1`, etc, + // so just model their elements as named members. + name = [0 .. 20].toString() + or + name = getEnumCaseParameterFieldFromArgument(_, _) + } or + TCapturedVariable(CaptureSsaInput::CapturedVariable v) + +class Content extends TContent { + string asNamedMember() { this = TNamedMember(result) } + + predicate isArrayElement() { this = TArrayElement() } + + string toString() { + result = this.asNamedMember() + or + this.isArrayElement() and result = "ArrayElement" + or + result = this.asCapturedVariable().toString() + } + + LocalVariable asCapturedVariable() { this = TCapturedVariable(result) } + + Location getLocation() { result = this.asCapturedVariable().getLocation() } +} + +private newtype TContentSet = TSingleton(Content content) + +class ContentSet extends TContentSet { + Content asSingleton() { this = TSingleton(result) } + + string toString() { result = this.asSingleton().toString() } + + Location getLocation() { result = this.asSingleton().getLocation() } + + Content getAStoreContent() { result = this.asSingleton() } + + Content getAReadContent() { result = this.asSingleton() } +} + +module ContentSet { + ContentSet namedMember(string name) { result.asSingleton().asNamedMember() = name } + + ContentSet arrayElement() { result.asSingleton().isArrayElement() } + + ContentSet capturedVariable(LocalVariable v) { result.asSingleton().asCapturedVariable() = v } +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowCall.qll b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowCall.qll new file mode 100644 index 000000000000..e7ba66d5e58c --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowCall.qll @@ -0,0 +1,32 @@ +private import unified +private import AllDataFlow +private import codeql.unified.internal.ExprPositions + +private newtype TDataFlowCall = + TExplicitCall(CallExpr call) { + not isInBindingContext(call, _) // ignore constructor patterns + } + +/** + * A call site, covering explicit calls such as `foo(1,2)`, as well as implicit + * calls and calls derived from library models. + * + * Currently only explicit calls are implemented. + */ +class DataFlowCall extends TDataFlowCall { + /** Gets the `CallExpr` wrapped by this dataflow call, if any. */ + CallExpr asExplicitCall() { this = TExplicitCall(result) } + + /** Gets a textual representation of this call. */ + string toString() { result = this.asExplicitCall().toString() } + + /** Gets the location of this call, if any. */ + Location getLocation() { result = this.asExplicitCall().getLocation() } + + /** Gets the callable containing this call. */ + DataFlowCallable getEnclosingCallable() { + result.asSourceCallable() = this.asExplicitCall().getEnclosingCallable() + } +} + +DataFlowCall toDataFlowCall(CallExpr call) { result.asExplicitCall() = call } diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowCallable.qll b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowCallable.qll new file mode 100644 index 000000000000..b9d7905f37fe --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowCallable.qll @@ -0,0 +1,25 @@ +private import unified +private import AllDataFlow +private import codeql.unified.internal.ExprPositions + +private newtype TDataFlowCallable = + TSourceCallable(Callable callable) { not isInTypeContext(callable) } + +/** + * A callable entity: either a function-like entity in source code or + * an entity derived from a library model. + * + * Currently only callables in source code are implemented. + */ +class DataFlowCallable extends TDataFlowCallable { + /** Gets the `Callable` wrapped by this dataflow callable, if any. */ + Callable asSourceCallable() { this = TSourceCallable(result) } + + /** Gets a string representation of this call. */ + string toString() { result = this.asSourceCallable().toString() } + + /** Gets the location of this call, if any. */ + Location getLocation() { result = this.asSourceCallable().getLocation() } +} + +DataFlowCallable toDataFlowCallable(Callable callable) { result.asSourceCallable() = callable } diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowGraph.qll b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowGraph.qll new file mode 100644 index 000000000000..7f52d15605d2 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowGraph.qll @@ -0,0 +1,259 @@ +private import unified +private import AllDataFlow +private import codeql.unified.internal.LocalNameBinding + +predicate step(BuilderNode node1, Step step, BuilderNode node2) { + any(DataFlowPlugin p).step(node1, step, node2) + or + exists(Callable callable | + node1.isReceiverParameter(callable) and + step.value() and + node2.isLocalVariableWrite(callable, getImplicitReceiverVariable(callable)) + ) + or + exists(CallExpr call, Expr receiverExpr | + receiverExpr = call.getCallee().(MemberAccessExpr).getBase() + | + node1.isResultValue(receiverExpr) and + step.value() and + node2.isReceiverArgument(call) + or + node1.isReceiverPostUpdate(call) and + step.value() and + node2.isPostUpdate(receiverExpr) + ) + or + exists(CallExpr call | + node1.isResultValue(call.getCallee()) and + step.value() and + node2.isCalleeArgument(call) + or + node1.isCalleePostUpdate(call) and + step.value() and + node2.isPostUpdate(call.getCallee()) + ) + or + exists(CallExpr call, UnqualifiedMemberAccess callee | callee = call.getCallee() | + node1.isLocalVariableRead(callee, callee.getImplicitQualifierVariable()) and + step.value() and + node2.isReceiverArgument(call) + or + node1.isReceiverPostUpdate(call) and + step.value() and + node2.isLocalVariablePostUpdate(callee, callee.getImplicitQualifierVariable()) + ) + or + exists(VariableDeclaration decl | + node1.isResultValue(decl.getValue()) and + step.value() and + node2.isIncomingValue(decl.getPattern()) + ) + or + exists(AssignExpr assign | + node1.isResultValue(assign.getValue()) and + step.value() and + node2.isIncomingValue(assign.getTarget()) + ) + or + // For compound assignments, the result of the expression represents the result of the operator. + // Make it flow to the target of the assignment. + exists(CompoundAssignExpr assign | + node1.isResultValue(assign) and + step.value() and + node2.isIncomingValue(assign.getTarget()) + ) + or + exists(LocalVariableAccess access | + node1.isLocalVariableRead(access, access.getLocalVariable()) and + step.value() and + node2.isResultValue(access) + or + node1.isIncomingValue(access) and + step.value() and + node2.isLocalVariableWrite(access, access.getLocalVariable()) + or + node1.isPostUpdate(access) and + step.value() and + node2.isLocalVariablePostUpdate(access, access.getLocalVariable()) + ) + or + exists(UnqualifiedMemberAccess access | access.isInstanceAccess() | + node1.isLocalVariableRead(access, access.getImplicitQualifierVariable()) and + step.readName(access.getName()) and + node2.isResultValue(access) + or + (node1.isIncomingValue(access) or node1.isPostUpdate(access)) and + step.storeName(access.getName()) and + node2.isLocalVariablePostUpdate(access, access.getImplicitQualifierVariable()) + ) + or + exists(StringInterpolationExpr expr | + node1.isResultValue(expr.getAnElement()) and + step.taint() and + node2.isResultValue(expr) + ) + or + exists(TupleExpr expr, int i | + node1.isResultValue(expr.getElement(i).getValue()) and + step.storeName(i.toString()) and + node2.isResultValue(expr) + or + node1.isIncomingValue(expr) and + step.readName(i.toString()) and + node2.isIncomingValue(expr.getElement(i).getValue()) + ) + or + exists(MemberAccessExpr expr | + node1.isResultValue(expr.getBase()) and + step.readName(expr.getMemberName()) and + node2.isResultValue(expr) + or + (node1.isIncomingValue(expr) or node1.isPostUpdate(expr)) and + step.storeName(expr.getMemberName()) and + node2.isPostUpdate(expr.getBase()) + ) + or + // Calls and constructor-patterns targeting an enum-case constructor. + exists(CallExpr call, Argument arg, string field | + field = getEnumCaseParameterFieldFromArgument(call, arg) + | + node1.isResultValue(arg.getValue()) and + step.storeName(field) and + node2.isResultValue(call) + or + node1.isIncomingValue(call) and + step.readName(field) and + node2.isIncomingValue(arg.getValue()) + ) + or + exists(SwitchExpr expr | + node1.isResultValue(expr.getValue()) and + step.value() and + node2.isIncomingValue(expr.getACase().getPattern()) + ) + or + exists(PatternGuardExpr expr | + node1.isResultValue(expr.getValue()) and + step.value() and + node2.isIncomingValue(expr.getPattern()) + ) + or + exists(ExprPattern expr | + node1.isIncomingValue(expr) and + step.value() and + node2.isIncomingValue(expr.getExpr()) + ) + or + exists(ArrayLiteral expr | + node1.isResultValue(expr.getAnElement()) and + step.store(ContentSet::arrayElement()) and + node2.isResultValue(expr) + ) + or + exists(ForEachStmt stmt | + node1.isResultValue(stmt.getIterable()) and + step.readArrayElement() and + node2.isIncomingValue(stmt.getPattern()) + ) + or + exists(FunctionExpr expr | + node1.isCallable(expr) and + step.value() and + node2.isResultValue(expr) + ) + or + exists(FunctionDeclaration fun | + node1.isCallable(fun) and + step.value() and + node2.isIncomingValue(fun.getNameNode()) + ) + or + none() // Temporarily disable compilation errors from unsatisfiable types +} + +/** Holds if `node` should be included in the debug view. */ +private signature predicate relevantNodeSig(AstNode node); + +module DebugGraph { + private Node adjacent1(Node n) { + step(n, _, result) + or + localSsaStep(n, result, _) + or + captureSsaLocalFlowStep(n, result) + or + captureSsaReadStep(n, _, result) + or + captureSsaStoreStep(n, _, result) + or + result = n.getPostUpdateNode() + } + + private Node adjacent(Node n) { + result = adjacent1(n) + or + n = adjacent1(result) + } + + private predicate relevantDataFlowNode(Node node) { + relevantNode(node.getWrappedAstNode()) + or + not exists(node.getWrappedAstNode()) and + relevantDataFlowNode(adjacent(node)) + } + + private string getANodeAnnotation(Node n) { + result = + " [capture-clear: " + + strictconcat(ContentSet c | captureSsaClearsContent(n, c) | c.toString(), ",") + "]" + } + + query predicate nodes(Node node, string key, string value) { + relevantDataFlowNode(node) and + key = "semmle.label" and + value = node.toString() + concat(getANodeAnnotation(node)) + } + + private predicate isBypassedStoreReadStep(Step s) { + exists(ContentSet contents | + s.read(contents) + or + s.store(contents) + | + bypassContentSet(contents) + ) + } + + query predicate edges(Node node1, Node node2, string key, string value) { + key = "semmle.label" and + relevantDataFlowNode(node1) and + relevantDataFlowNode(node2) and + ( + exists(Step step | + step(node1, step, node2) and + if isBypassedStoreReadStep(step) + then value = "value [bypassed " + step.toString() + "]" + else value = step.toString() + ) + or + exists(boolean isUseStep | + localSsaStep(node1, node2, isUseStep) and + if isUseStep = true then value = "use-use" else value = "def-use" + ) + or + node2 = node1.getPostUpdateNode() and + value = "post-update" + or + captureSsaLocalFlowStep(node1, node2) and + value = "value" + or + exists(ContentSet contents | + captureSsaReadStep(node1, contents, node2) and + value = "read[" + contents.toString() + "]" + or + captureSsaStoreStep(node1, contents, node2) and + value = "store[" + contents.toString() + "]" + ) + ) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowInstantiation.qll b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowInstantiation.qll new file mode 100644 index 000000000000..169dcf5bd393 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowInstantiation.qll @@ -0,0 +1,239 @@ +private import unified +private import AllDataFlow +private import AllDataFlow as D +private import codeql.dataflow.DataFlow +private import codeql.util.Void +private import codeql.util.Unit + +module DataFlowInput implements InputSig { + class Node = D::Node; + + // + // Contents + // + class Content = D::Content; + + class ContentSet = D::ContentSet; + + class ContentApprox = Content; // TODO + + ContentApprox getContentApprox(Content c) { result = c } // TODO + + // + // Parameter, argument, return, and out nodes and their positions/kinds + // + class ReturnNode extends Node { + ReturnNode() { + // TODO: Handle short-hand returns such as `func foo() -> Int { 5 }` + this.asExpr() = any(ReturnExpr r).getValue() + } + + ReturnKind getKind() { exists(result) } + } + + class OutNode extends Node { + OutNode() { this.asExpr() instanceof CallExpr } + } + + class ReturnKind = Unit; + + import ParameterPositions + // + // Calls and callables + // + import DataFlowCall + import DataFlowCallable + import CallGraph + + DataFlowCallable nodeGetEnclosingCallable(Node node) { result = node.getEnclosingCallableEx() } + + private predicate isParameterNodeImpl(Node p, DataFlowCallable c, ParameterPosition pos) { + exists(Parameter param | + p.asExpr() = param.getPattern() and + c.asSourceCallable() = param.getEnclosingCallable() + | + pos.asPositional() = param.getPositionalIndex() + or + pos.asNamed() = param.getExternalName() + ) + or + p.(BuilderNode).isImplicitParameter(c, pos) + } + + class ParameterNode extends Node { + ParameterNode() { isParameterNodeImpl(this, _, _) } + } + + predicate isParameterNode(ParameterNode p, DataFlowCallable c, ParameterPosition pos) { + // This predicate is needed to implement the signature without empty recursion through ParameterNode + isParameterNodeImpl(p, c, pos) + } + + private predicate isArgumentNodeImpl(Node n, DataFlowCall call, ArgumentPosition pos) { + exists(Argument arg | + n.asExpr() = arg.getValue() and + call.asExplicitCall().getAnArgument() = arg + | + pos.asPositional() = arg.getPositionalIndex() + or + pos.asNamed() = arg.getName() + ) + or + n.(BuilderNode).isImplicitArgument(call, pos, false) + } + + class ArgumentNode extends Node { + ArgumentNode() { isArgumentNodeImpl(this, _, _) } + } + + predicate isArgumentNode(ArgumentNode n, DataFlowCall call, ArgumentPosition pos) { + // This predicate is needed to implement the signature without empty recursion through ArgumentNode + isArgumentNodeImpl(n, call, pos) + } + + OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { + result.asExpr() = call.asExplicitCall() and exists(kind) + } + + // + // Post-update nodes + // + class PostUpdateNode extends Node { + PostUpdateNode() { this = any(Node n).getPostUpdateNode() } + + Node getPreUpdateNode() { this = result.getPostUpdateNode() } + } + + // + // Types + // + class DataFlowType extends Unit { + // TODO: track proper types + string toString() { result = "" } // do not include "unit" type in path steps + } + + class CastNode extends Node { + CastNode() { none() } // TODO + } + + DataFlowType getNodeType(Node node) { any() } // TODO + + predicate compatibleTypes(DataFlowType t1, DataFlowType t2) { any() } // TODO + + predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { any() } // TODO + + // + // Steps + // + pragma[nomagic] + private Step valueStepEx() { + result.value() + or + exists(ContentSet contents | bypassContentSet(contents) | + result.read(contents) + or + result.store(contents) + ) + } + + predicate simpleLocalFlowStep(Node node1, Node node2, string model) { + step(node1, valueStepEx(), node2) and model = "" + or + localSsaStep(node1, node2, _) and model = "" + or + captureSsaLocalFlowStep(node1, node2) and model = "" + } + + predicate jumpStep(Node node1, Node node2) { step(node1, any(Step s | s.jump()), node2) } + + predicate readStep(Node node1, ContentSet c, Node node2) { + ( + step(node1, any(Step s | s.read(c)), node2) + or + captureSsaReadStep(node1, c, node2) + ) and + not bypassContentSet(c) + } + + predicate storeStep(Node node1, ContentSet c, Node node2) { + ( + step(node1, any(Step s | s.store(c)), node2) + or + captureSsaStoreStep(node1, c, node2) + ) and + not bypassContentSet(c) + } + + predicate clearsContent(Node n, ContentSet c) { captureSsaClearsContent(n, c) } // TODO + + predicate expectsContent(Node n, ContentSet c) { none() } // TODO + + predicate localMustFlowStep(Node node1, Node node2) { localSsaMustFlowStep(node1, node2) } // TODO + + // + // Misc + // + additional predicate nodeIsVisible(Node node) { + exists(Expr e | + node = TValueNode(e) and + not e instanceof ExprPattern + ) + or + node instanceof TStrictlyIncomingValue + or + node instanceof TExprPostUpdateNode + } + + predicate nodeIsHidden(Node node) { not nodeIsVisible(node) } + + predicate neverSkipInPathGraph(Node n) { + n.isIncomingValue(_) or // Never skip assignment target + n.asExpr() instanceof LocalVariableAccess // Never skip a variable reference + } + + class DataFlowExpr = Expr; + + Node exprNode(DataFlowExpr e) { none() } // TODO + + predicate forceHighPrecision(Content c) { none() } // TODO + + class NodeRegion extends Void { + NodeRegion() { none() } // TODO + + predicate contains(Node n) { none() } // TODO + + string toString() { none() } // TODO + } + + predicate isUnreachableInCall(NodeRegion nr, DataFlowCall call) { none() } // TODO + + predicate allowParameterReturnInSelf(ParameterNode p) { captureSsaAllowParameterReturnInSelf(p) } + + class LambdaCallKind extends Unit { } + + predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { + creation.isCallableEx(c) and + exists(kind) + } + + predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { + receiver.(BuilderNode).isImplicitArgument(call, any(ArgumentPosition p | p.isCallee()), false) and + exists(kind) + } + + predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preservesValue) { + none() // TODO + } + + predicate knownSourceModel(Node source, string model) { none() } // TODO + + predicate knownSinkModel(Node sink, string model) { none() } // TODO + + class DataFlowSecondLevelScope extends Void { + DataFlowSecondLevelScope() { none() } // TODO + + string toString() { none() } // TODO + } +} + +module DataFlowOutput = DataFlowMake; diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowNode.qll b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowNode.qll new file mode 100644 index 000000000000..03116cfe9e99 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowNode.qll @@ -0,0 +1,495 @@ +private import unified +private import AllDataFlow +private import codeql.unified.internal.ExprPositions +private import codeql.unified.internal.LocalNameBinding +private import codeql.util.Boolean + +private predicate hasIncomingValueAtCfgNode(Expr expr, ControlFlowNode cfgNode) { + exists(AstNode declOrAssignment | hasIncomingValue(expr, declOrAssignment) | + // In cases where the CFG node for 'expr' appears before its actual assignment, + // use the CFG node from the surrounding assignment-like node + cfgNode.injects(declOrAssignment.(Assignment)) + or + // Variable declarations are pre-order and visit the target first. + // Use the after node. + cfgNode.isAfter(declOrAssignment.(VariableDeclaration)) + or + // Hoist local functions to the top of their block + declOrAssignment instanceof LocalFunctionDeclaration and + cfgNode.isBefore(declOrAssignment.getParent()) + or + // In other cases, it's a binding pattern whose CFG node can be used + // as its assignment time + not declOrAssignment instanceof Assignment and + not declOrAssignment instanceof VariableDeclaration and + not declOrAssignment instanceof LocalFunctionDeclaration and + cfgNode.injects(expr) + ) +} + +private predicate hasPostUpdate(Expr expr, ControlFlowNode cfgNode) { + exists(MemberAccessExpr member | + (hasIncomingValueAtCfgNode(member, cfgNode) or hasPostUpdate(member, cfgNode)) and + expr = member.getBase() + ) + or + exists(CallExpr call | cfgNode.isAfter(call) | + expr = call.getAnArgument().getValue() + or + expr = call.getCallee() + ) +} + +/** + * Holds if `repr` performs an access to `var` of the given `kind` at `cfgNode`. + * + * `repr` should be an arbitrary but unique representative for the access. + */ +predicate performsVariableAccess( + AstNode repr, LocalVariable var, VariableRefKind kind, ControlFlowNode cfgNode +) { + exists(LocalVariableAccess access | var = access.getLocalVariable() and repr = access | + hasResultValue(access) and kind.isRead() and cfgNode.asExpr() = repr + or + hasIncomingValueAtCfgNode(access, cfgNode) and kind.isWrite() + or + hasPostUpdate(access, cfgNode) and kind.isPostUpdate() + ) + or + exists(UnqualifiedMemberAccess access | + access.isInstanceAccess() and var = access.getImplicitQualifierVariable() and repr = access + | + kind.isRead() and cfgNode.isBefore(access) + or + (hasIncomingValueAtCfgNode(access, cfgNode) or hasPostUpdate(access, cfgNode)) and + kind.isPostUpdate() + or + exists(CallExpr call | + access = call.getCallee() and + cfgNode.isAfter(call) and + kind.isPostUpdate() + ) + ) + or + exists(Callable callable | + repr = callable and + var = getImplicitReceiverVariable(callable) and + kind.isWrite() and + cfgNode.(ControlFlow::EntryNode).getEnclosingCallable() = callable + ) +} + +newtype TDataFlowNode = + TValueNode(Expr expr) { hasResultValue(expr) or hasIncomingValue(expr, _) } or + TStrictlyIncomingValue(Expr expr) { hasResultValue(expr) and hasIncomingValue(expr, _) } or + TExprPostUpdateNode(Expr expr) { hasPostUpdate(expr, _) } or + TLocalVariableRefNode(AstNode repr, LocalVariable var, VariableRefKind kind) { + performsVariableAccess(repr, var, kind, _) + } or + TCallableNode(DataFlowCallable callable) or + TImplicitParameterNode(DataFlowCallable callable, ImplicitParameterPosition pos) or + TImplicitArgumentNode(DataFlowCall call, ImplicitArgumentPosition pos, Boolean isPost) or + TLocalSsaNode(LocalSsaDataFlowOutput::SsaNode node) or + TCaptureSsaNode(CaptureSsaOutput::SynthesizedCaptureNode node) + +class TDataFlowNodeStage1 = + TValueNode or TStrictlyIncomingValue or TExprPostUpdateNode or TLocalVariableRefNode or + TCallableNode or TImplicitParameterNode or TImplicitArgumentNode; + +class TDataFlowNodeStage2 = TDataFlowNodeStage1 or TLocalSsaNode; + +/** + * A data-flow node used during construction of the local data flow graph. + * + * This only contains nodes that are materialised in "stage 1". + */ +class BuilderNode extends TDataFlowNodeStage1 { + /** Holds if this is the result of evaluating `expr`. */ + pragma[nomagic] + predicate isResultValue(Expr expr) { hasResultValue(expr) and this = TValueNode(expr) } + + /** Holds if this represents the value about to be assigned to `expr` or pattern-matched against `expr`. */ + pragma[nomagic] + predicate isIncomingValue(Expr expr) { + // Use the TValueNode when it is not needed for representing the result value + hasIncomingValue(expr, _) and + not hasResultValue(expr) and + this = TValueNode(expr) + or + this = TStrictlyIncomingValue(expr) + } + + /** Holds if this represents the reference to `v` at `repr`. */ + predicate isLocalVariableRef(AstNode repr, LocalVariable v, VariableRefKind kind) { + this = TLocalVariableRefNode(repr, v, kind) + } + + /** Holds if this represents the value read from `v` at `repr`. */ + predicate isLocalVariableRead(AstNode repr, LocalVariable v) { + this.isLocalVariableRef(repr, v, TRead()) + } + + /** Holds if this represents the value written to `v` at `repr`. */ + predicate isLocalVariableWrite(AstNode repr, LocalVariable v) { + this.isLocalVariableRef(repr, v, TWrite()) + } + + /** Holds if this represents the updated state of the value held in `v` after it has been mutated by the surrounding assignment or call. */ + predicate isLocalVariablePostUpdate(AstNode repr, LocalVariable v) { + this.isLocalVariableRef(repr, v, TPostUpdate()) + } + + /** Holds if this represents the updated state of the value returned by `expr` after it has been mutated by the surrounding assignment or call. */ + predicate isPostUpdate(Expr expr) { this = TExprPostUpdateNode(expr) } + + /** Holds if this node represents an implicit parameter of `callable`. */ + predicate isImplicitParameter(DataFlowCallable callable, ImplicitParameterPosition pos) { + this = TImplicitParameterNode(callable, pos) + } + + /** Holds if this node represents an implicit argument to `call` (or its post-update). */ + predicate isImplicitArgument(DataFlowCall call, ImplicitArgumentPosition pos, boolean isPost) { + this = TImplicitArgumentNode(call, pos, isPost) + } + + /** + * Holds if this represents the receiver passed to the given callable. + * + * Note that for non-methods and closures that capture the receiver from the enclosing method, + * this node still exists but will typically not flow anywhere. + */ + predicate isReceiverParameter(Callable callable) { + this.isImplicitParameter(toDataFlowCallable(callable), any(ParameterPosition p | p.isReceiver())) + } + + /** Holds if this node represents the receiver argument passed to `call`. */ + predicate isReceiverArgument(CallExpr call) { + this.isImplicitArgument(toDataFlowCall(call), any(ArgumentPosition p | p.isReceiver()), false) + } + + /** Holds if this node represents the updated state of the receiver of `call` after the call returns. */ + predicate isReceiverPostUpdate(CallExpr call) { + this.isImplicitArgument(toDataFlowCall(call), any(ArgumentPosition p | p.isReceiver()), true) + } + + /** Holds if this is the canonical representative for the given `callable`. */ + predicate isCallableEx(DataFlowCallable callable) { this = TCallableNode(callable) } + + /** Holds if this is the canonical representative for the given `callable`. */ + predicate isCallable(Callable callable) { this = TCallableNode(toDataFlowCallable(callable)) } + + /** Holds if this node represents the function being invoked at `call`. */ + predicate isCalleeArgument(CallExpr call) { + this.isImplicitArgument(toDataFlowCall(call), any(ArgumentPosition p | p.isCallee()), false) + } + + /** Holds if this node represents the updated state of the function being invoked at `call`, after the call returns. */ + predicate isCalleePostUpdate(CallExpr call) { + this.isImplicitArgument(toDataFlowCall(call), any(ArgumentPosition p | p.isCallee()), true) + } + + /** + * Gets the post-update node for this node, if any. + * + * The post-update node represents the updated state of the value held in this node, after it has been mutated by the surrounding assignment or call. + */ + pragma[nomagic] + BuilderNode getPostUpdateNode() { + exists(Expr expr | + this.isResultValue(expr) and + result.isPostUpdate(expr) + ) + or + exists(Expr expr, LocalVariable var | + this.isLocalVariableRead(expr, var) and + result.isLocalVariablePostUpdate(expr, var) + ) + or + exists(DataFlowCall call, ArgumentPosition pos | + this.isImplicitArgument(call, pos, false) and + result.isImplicitArgument(call, pos, true) + ) + } + + /** + * Gets the AST node wrapped by this data flow, if any. + */ + AstNode getWrappedAstNode() { + this = TValueNode(result) or + this = TStrictlyIncomingValue(result) or + this = TExprPostUpdateNode(result) + } + + /** Get a string representation of this element. */ + string toString() { + exists(Expr expr | + this = TValueNode(expr) and + result = expr.toString() + or + this = TStrictlyIncomingValue(expr) and + result = "[incoming] " + expr.toString() + or + this = TExprPostUpdateNode(expr) and + result = "[post] " + expr.toString() + ) + or + exists(LocalVariable v, VariableRefKind kind | + this = TLocalVariableRefNode(_, v, kind) and + result = "[variable " + kind + "] " + v.toString() + ) + or + exists(DataFlowCallable callable | + exists(ParameterPosition pos | + this.isImplicitParameter(callable, pos) and + result = "[" + pos + " param] " + callable.toString() + ) + or + this.isCallableEx(callable) and + result = "[callable] " + callable.toString() + ) + or + exists(DataFlowCall call, ArgumentPosition pos | + this.isImplicitArgument(call, pos, false) and + result = "[" + pos + " arg] " + call.toString() + or + this.isImplicitArgument(call, pos, true) and + result = "[" + pos + " post] " + call.toString() + ) + } + + /** Gets the location of this data flow node. */ + Location getLocation() { + result = this.getWrappedAstNode().getLocation() + or + exists(AstNode repr | + this.isLocalVariableRef(repr, _, _) and + result = repr.getLocation() + ) + or + exists(DataFlowCallable callable | + this.isImplicitParameter(callable, _) + or + this.isCallableEx(callable) + | + result = callable.getLocation() + ) + or + exists(DataFlowCall call | + this.isImplicitArgument(call, _, _) and + result = call.getLocation() + ) + } +} + +/** A node in stage 2, which includes stage 1 and local SSA nodes. */ +class Stage2Node extends TDataFlowNodeStage2 { + /** Get a string representation of this element. */ + string toString() { + result = this.(BuilderNode).toString() + or + exists(LocalSsaDataFlowOutput::SsaNode node | + this = TLocalSsaNode(node) and + result = node.toString() + ) + } + + /** Gets the location of this data flow node. */ + Location getLocation() { + result = this.(BuilderNode).getLocation() + or + exists(LocalSsaDataFlowOutput::SsaNode node | + this = TLocalSsaNode(node) and + result = node.getLocation() + ) + } +} + +class Node extends TDataFlowNode { + /** Gets the expression represented by this node. */ + Expr asExpr() { this = TValueNode(result) } + + /** Holds if this is the result of evaluating `expr`. */ + pragma[nomagic] + predicate isResultValue(Expr expr) { this.(BuilderNode).isResultValue(expr) } + + /** Holds if this represents the value about to be assigned to `expr` or pattern-matched against `expr`. */ + pragma[nomagic] + predicate isIncomingValue(Expr expr) { this.(BuilderNode).isIncomingValue(expr) } + + /** Holds if this represents the reference to `v` at `repr`. */ + predicate isLocalVariableRef(AstNode repr, LocalVariable v, VariableRefKind kind) { + this.(BuilderNode).isLocalVariableRef(repr, v, kind) + } + + /** Holds if this represents the value read from `v` at `repr`. */ + predicate isLocalVariableRead(AstNode repr, LocalVariable v) { + this.(BuilderNode).isLocalVariableRead(repr, v) + } + + /** Holds if this represents the value written to `v` at `repr`. */ + predicate isLocalVariableWrite(AstNode repr, LocalVariable v) { + this.(BuilderNode).isLocalVariableWrite(repr, v) + } + + /** Holds if this represents the updated state of the value held in `v` after it has been mutated by the surrounding assignment or call. */ + predicate isLocalVariablePostUpdate(AstNode repr, LocalVariable v) { + this.(BuilderNode).isLocalVariablePostUpdate(repr, v) + } + + /** Holds if this represents the updated state of the value returned by `expr` after it has been mutated by the surrounding assignment or call. */ + predicate isPostUpdate(Expr expr) { this.(BuilderNode).isPostUpdate(expr) } + + /** + * Holds if this represents the receiver passed to the given callable. + * + * Note that for non-methods and closures that capture the receiver from the enclosing method, + * this node still exists but will typically not flow anywhere. + */ + predicate isReceiverParameter(Callable callable) { + this.(BuilderNode).isReceiverParameter(callable) + } + + /** Holds if this node represents the receiver argument passed to `call`. */ + predicate isReceiverArgument(CallExpr call) { this.(BuilderNode).isReceiverArgument(call) } + + /** Holds if this node represents the updated state of the receiver of `call` after the call returns. */ + predicate isReceiverPostUpdate(CallExpr call) { this.(BuilderNode).isReceiverPostUpdate(call) } + + /** Holds if this is the canonical representative for the given `callable`. */ + predicate isCallableEx(DataFlowCallable callable) { this.(BuilderNode).isCallableEx(callable) } + + /** Holds if this is the canonical representative for the given `callable`. */ + predicate isCallable(Callable callable) { this.(BuilderNode).isCallable(callable) } + + /** + * Gets the AST node wrapped by this data flow, if any. + */ + AstNode getWrappedAstNode() { result = this.(BuilderNode).getWrappedAstNode() } + + /** Get a string representation of this element. */ + string toString() { + result = this.(Stage2Node).toString() + or + exists(CaptureSsaOutput::SynthesizedCaptureNode node | + this = TCaptureSsaNode(node) and + result = "[capture] " + node.toString() + ) + } + + /** Gets the location of this data flow node. */ + Location getLocation() { + result = this.(Stage2Node).getLocation() + or + exists(CaptureSsaOutput::SynthesizedCaptureNode node | + this = TCaptureSsaNode(node) and + result = node.getLocation() + ) + } + + /** Gets the data-flow callable containing this data flow node. */ + DataFlowCallable getEnclosingCallableEx() { + result.asSourceCallable() = this.getWrappedAstNode().getEnclosingCallable() + or + exists(AstNode repr, LocalVariable var, VariableRefKind kind, ControlFlowNode cfgNode | + this.isLocalVariableRef(repr, var, kind) and + performsVariableAccess(repr, var, kind, cfgNode) and + result.asSourceCallable() = cfgNode.getEnclosingCallable() + ) + or + exists(LocalSsaDataFlowOutput::SsaNode node | + this = TLocalSsaNode(node) and + result.asSourceCallable() = node.getSourceVariable().getDeclaringCallable() + ) + or + this.(BuilderNode).isImplicitParameter(result, _) + or + exists(CaptureSsaOutput::SynthesizedCaptureNode node | + this = TCaptureSsaNode(node) and + result.asSourceCallable() = node.getEnclosingCallable() + ) + or + this.(BuilderNode).isImplicitParameter(result, _) + or + exists(DataFlowCall call | + this.(BuilderNode).isImplicitArgument(call, _, _) and + result = call.getEnclosingCallable() + ) + or + exists(DataFlowCallable callable | + this.isCallableEx(callable) and + result.asSourceCallable() = callable.asSourceCallable().getEnclosingCallable() + ) + } + + /** Gets the callable containing this data flow node. */ + Callable getEnclosingCallable() { result = this.getEnclosingCallableEx().asSourceCallable() } + + /** + * Holds if this data flow node is associated with the `i`'th index in the given basic block. + * + * Note that some data flow nodes may have an index appearing before the first or after the + * last `ControlFlowNode` node in the basic block. Multiple data flow nodes may share the same control flow position. + * + * Also note that some data flow nodes have no associated control flow position, either because they are + * in unreachable code, or belong to a synthesized callable that has no control flow graph. + */ + predicate hasControlFlowPosition(BasicBlock bb, int i) { + exists(ControlFlowNode cfgNode | cfgNode = bb.getNode(i) | + exists(Expr expr | + this.isResultValue(expr) and cfgNode.asExpr() = expr + or + this.isIncomingValue(expr) and hasIncomingValueAtCfgNode(expr, cfgNode) + or + this.isPostUpdate(expr) and hasPostUpdate(expr, cfgNode) + ) + or + exists(AstNode repr, LocalVariable var, VariableRefKind kind | + this.isLocalVariableRef(repr, var, kind) and + performsVariableAccess(repr, var, kind, cfgNode) + ) + or + exists(DataFlowCallable callable | + this.(BuilderNode).isImplicitParameter(callable, _) and + cfgNode.(ControlFlow::EntryNode).getEnclosingCallable() = callable.asSourceCallable() + or + this.isCallableEx(callable) and + cfgNode.injects(callable.asSourceCallable()) + ) + or + exists(DataFlowCall call, CallExpr sourceCall, boolean isPost | + call.asExplicitCall() = sourceCall and + this.(BuilderNode).isImplicitArgument(call, _, isPost) and + ( + isPost = false and cfgNode.injects(sourceCall) + or + isPost = true and cfgNode.isAfter(sourceCall) + ) + ) + ) + or + exists(LocalSsaDataFlowOutput::SsaNode node | + this = TLocalSsaNode(node) and + bb = node.getBasicBlock() and + i = node.getIndex() // TODO: why is this marked as internal in the SSA library? + ) + or + exists(CaptureSsaOutput::SynthesizedCaptureNode node | + this = TCaptureSsaNode(node) and + node.hasCfgNode(bb, i) + ) + } + + /** Gets the basic block associated with this data flow node, if any. */ + BasicBlock getBasicBlock() { this.hasControlFlowPosition(result, _) } + + /** + * Gets the post-update node for this node, if any. + * + * The post-update node represents the updated state of the value held in this node, after it has been mutated by the surrounding assignment or call. + */ + Node getPostUpdateNode() { + result = this.(BuilderNode).getPostUpdateNode() + or + result = getCaptureSsaPostUpdate(this) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPlugin.qll b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPlugin.qll new file mode 100644 index 000000000000..05a0a63907ae --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPlugin.qll @@ -0,0 +1,28 @@ +/** + * Provides an interface for language-specific data flow rules. + */ + +private import unified +private import AllDataFlow +private import codeql.util.Unit + +private module Plugins { + private import DataFlowPluginSwift +} + +class DataFlowPlugin extends Unit { + /** Holds if there is a language-specific step from `node1 -> step -> node2`. */ + predicate step(BuilderNode node1, Step step, BuilderNode node2) { none() } + + /** + * Holds if a read/store step with the given `contents` should be converted to a value step. + * + * This affects the steps generated by the language-agnostic code as well as steps from the plugin itself. + */ + predicate bypassContentSet(ContentSet contents) { none() } +} + +/** + * Holds if a read/store step with the given `contents` should be converted to a value step. + */ +predicate bypassContentSet(ContentSet contents) { any(DataFlowPlugin p).bypassContentSet(contents) } diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPluginSwift.qll new file mode 100644 index 000000000000..efb8562688d6 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPluginSwift.qll @@ -0,0 +1,71 @@ +/** + * Provides Swift-specific data flow rules. + */ + +private import unified +private import AllDataFlow + +private class SwiftDataFlowPlugin extends DataFlowPlugin { + override predicate bypassContentSet(ContentSet contents) { + contents.asSingleton().asNamedMember() = "some.0" + } + + // Note: For now we assume all code is Swift, but in the future we must restrict these rules to Swift-files + override predicate step(BuilderNode node1, Step step, BuilderNode node2) { + exists(BinaryExpr expr | + expr.getOperator().getValue() = ["+", "+="] and + node1.isResultValue([expr.getLeft(), expr.getRight()]) and + step.taint() and + node2.isResultValue(expr) + ) + or + exists(CallExpr call | + // String interpolations in Swift currently insert a call to a built-in called "interpolation". + // Add taint through plain 1-argument calls to this built-in. + call.getCallee().(BuiltinExpr).getValue() = "interpolation" and + call.getNumberOfArguments() = 1 and + not exists(call.getArgument(0).getName()) and + node1.isResultValue(call.getArgument(0).getValue()) and + step.value() and + node2.isResultValue(call) + ) + or + exists(UnaryExpr expr | + expr.getOperator().(PostfixOperator).getValue() = "!" + or + expr.getOperator().(PrefixOperator).getValue() = ["try", "try!", "try?", "await"] + | + node1.isResultValue(expr.getOperand()) and + step.value() and + node2.isResultValue(expr) + ) + or + exists(TypeCastExpr expr | + // Type-cast operators: + // - "as": Safe upcast conversion + // - "as?": Wrap in Optional if cast succeeds + // - "as!": Throw if cast fails + // + // Since we bypass Optional content, we model all of these as value steps. + expr.getOperator().getValue() = ["as", "as?", "as!"] and + node1.isResultValue(expr.getExpr()) and + step.value() and + node2.isResultValue(expr) + ) + or + exists(NullCoalescingExpr expr | + // We bypass Optional content so we add value-flow out of both operands of "??" + node1.isResultValue(expr.getAnOperand()) and + step.value() and + node2.isResultValue(expr) + ) + or + // Taint flow through URL(string: x). TODO: Model with MaD and flow summaries + exists(CallExpr call | + call.getCallee().(Identifier).getValue() = ["URL", "NSURL"] and + node1.isResultValue(call.getNamedArgument("string")) and + step.taint() and + node2.isResultValue(call) + ) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPublic.qll b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPublic.qll new file mode 100644 index 000000000000..b25ca7202505 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPublic.qll @@ -0,0 +1,13 @@ +private import unified +private import AllDataFlow +private import AllDataFlow as D + +module DataFlow { + class Node = D::Node; + + import DataFlowOutput +} + +module TaintTracking { + import TaintTrackingOutput +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/LocalSsa.qll b/unified/ql/lib/codeql/unified/internal/dataflow/LocalSsa.qll new file mode 100644 index 000000000000..2a92691a6347 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/LocalSsa.qll @@ -0,0 +1,126 @@ +/** + * SSA for non-captured variables. + */ + +private import unified +private import unified as U +private import AllDataFlow +private import codeql.ssa.Ssa +private import codeql.util.Void + +module LocalSsaInput implements InputSig { + class SourceVariable extends LocalVariable { + SourceVariable() { not this.isCaptured() } + } + + predicate variableWrite(BasicBlock bb, int i, SourceVariable v, boolean certain) { + certain = true and + ( + performsVariableAccess(_, v, TWrite(), bb.getNode(i)) + or + // Add implicit initialization of all variables at index -1 before the entry block + bb.(EntryBasicBlock).getEnclosingCallable() = v.getDeclaringCallable() and + i = -1 + ) + } + + predicate variableRead(BasicBlock bb, int i, SourceVariable v, boolean certain) { + certain = true and + performsVariableAccess(_, v, TRead(), bb.getNode(i)) + or + certain = true and + performsVariableAccess(_, v, TPostUpdate(), bb.getNode(i)) + } +} + +module LocalSsaOutput = Make; + +private import LocalSsaOutput + +module LocalSsaDataFlowInput implements DataFlowIntegrationInputSig { + class Expr = LocalVariableRefNode; + + class GuardValue = Void; + + class Guard extends Void { + string toString() { none() } + + predicate hasValueBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue val) { none() } + + predicate valueControlsBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue val) { none() } + } + + predicate guardDirectlyControlsBlock(Guard guard, BasicBlock bb, GuardValue val) { none() } + + predicate postUpdateCfgNode(Expr read, BasicBlock bb, int i) { + exists(LocalVariable var, U::AstNode repr | + read = TLocalVariableRefNode(repr, var, TRead()) and + performsVariableAccess(repr, var, TPostUpdate(), bb.getNode(i)) + ) + } +} + +module LocalSsaDataFlowOutput = DataFlowIntegration; + +private module Ssa = LocalSsaDataFlowOutput; + +/** + * Holds if `node` represents the synthetic read we use to represent a post-update node. + * + * We want to skip use-use flow through such a node, as we don't want use-use ordinary flow + * targeting a post-update node. + */ +private predicate postUpdateReadNode(Ssa::Node node) { + node.(Ssa::ExprNode).getExpr() = TLocalVariableRefNode(_, _, TPostUpdate()) +} + +Stage2Node getNodeFromLocalSsaNode(Ssa::Node n) { + result = TLocalSsaNode(n) + or + result = n.(Ssa::ExprNode).getExpr() and + not postUpdateReadNode(n) + or + result = n.(Ssa::ExprPostUpdateNode).getExpr().(BuilderNode).getPostUpdateNode() + or + exists(LocalVariable v, BasicBlock bb, int i, AstNode repr | + n.(Ssa::WriteDefSourceNode).getDefinition().definesAt(v, bb, i) and + performsVariableAccess(repr, v, TWrite(), bb.getNode(i)) and + result.(BuilderNode).isLocalVariableWrite(repr, v) + ) +} + +/** + * Holds if there is use-use flow from `node1`, through one or more post-update reads, into `node2`. + */ +predicate skipPostUpdateRead(Ssa::Node node1, Ssa::Node node2) { + Ssa::localFlowStep(_, node1, node2, true) and + postUpdateReadNode(node2) + or + exists(Ssa::Node mid | + skipPostUpdateRead(node1, mid) and + postUpdateReadNode(mid) and + Ssa::localFlowStep(_, mid, node2, _) + ) +} + +predicate localSsaStep(Stage2Node node1, Stage2Node node2, boolean isUseStep) { + exists(Ssa::Node ssa1, Ssa::Node ssa2 | + ( + Ssa::localFlowStep(_, ssa1, ssa2, isUseStep) + or + skipPostUpdateRead(ssa1, ssa2) and + isUseStep = true + ) and + not postUpdateReadNode(ssa2) and + node1 = getNodeFromLocalSsaNode(ssa1) and + node2 = getNodeFromLocalSsaNode(ssa2) + ) +} + +predicate localSsaMustFlowStep(Stage2Node node1, Stage2Node node2) { + exists(Ssa::Node ssa1, Ssa::Node ssa2 | + Ssa::localMustFlowStep(_, ssa1, ssa2) and + node1 = getNodeFromLocalSsaNode(ssa1) and + node2 = getNodeFromLocalSsaNode(ssa2) + ) +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/LocalVariableRefNode.qll b/unified/ql/lib/codeql/unified/internal/dataflow/LocalVariableRefNode.qll new file mode 100644 index 000000000000..6d54df58f9bd --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/LocalVariableRefNode.qll @@ -0,0 +1,25 @@ +private import unified +private import AllDataFlow + +/** + * A reference to a local variable (read, write, or post-update). + * + * This is backed by same entity as the corresponding data-flow node, but is referenced before + * the full `Node` type has been materialised (during SSA construction). + */ +class LocalVariableRefNode extends BuilderNode, TLocalVariableRefNode { + private AstNode repr; + private LocalVariable var; + private VariableRefKind kind; + + LocalVariableRefNode() { this = TLocalVariableRefNode(repr, var, kind) } + + predicate hasCfgNode(BasicBlock bb, int i) { + this = TLocalVariableRefNode(repr, var, kind) and + performsVariableAccess(repr, var, kind, bb.getNode(i)) + } + + LocalVariable getVariable() { result = var } + + VariableRefKind getRefKind() { result = kind } +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/ParameterPositions.qll b/unified/ql/lib/codeql/unified/internal/dataflow/ParameterPositions.qll new file mode 100644 index 000000000000..433123353e08 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/ParameterPositions.qll @@ -0,0 +1,46 @@ +private import unified + +private newtype TParameterPosition = + TReceiverParameter() or + TCalleeParameter() or + TPositionalParameter(int n) { n = [0 .. 20] } or + TNamedParameter(string name) { + name = any(Parameter p).getExternalName() + or + name = any(Argument arg).getName() + } + +class ParameterPosition extends TParameterPosition { + /** Holds if this represents the receiver passed to a call (usually called `this` or `self`). */ + predicate isReceiver() { this = TReceiverParameter() } + + /** Holds if this represents the function value being invoked in a call. */ + predicate isCallee() { this = TCalleeParameter() } + + int asPositional() { this = TPositionalParameter(result) } + + string asNamed() { this = TNamedParameter(result) } + + string toString() { + this.isReceiver() and result = "receiver" + or + this.isCallee() and result = "callee" + or + result = this.asPositional().toString() + or + // Suffix with a colon to prevent a confusing name clash with "receiver". This also aligns with MaD syntax. + result = this.asNamed() + ":" + } +} + +class ArgumentPosition = ParameterPosition; + +/** A parameter position that is either `receiver` or `callee`. */ +class ImplicitParameterPosition extends ParameterPosition { + ImplicitParameterPosition() { this.isReceiver() or this.isCallee() } +} + +/** An argument position that is either `receiver` or `callee`. */ +class ImplicitArgumentPosition = ImplicitParameterPosition; + +predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { apos = ppos } diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/Step.qll b/unified/ql/lib/codeql/unified/internal/dataflow/Step.qll new file mode 100644 index 000000000000..ccf2354a6291 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/Step.qll @@ -0,0 +1,59 @@ +private import unified +private import AllDataFlow + +private newtype TStep = + TValueStep() or + TJumpStep() or + TTaintStep() or + TReadStep(ContentSet contents) or + TStoreStep(ContentSet contents) + +/** + * A type of data flow step, used during construction of the data flow graph. + */ +class Step extends TStep { + /** Holds if this represents a value-preserving step. */ + predicate value() { this = TValueStep() } + + /** Holds if this represents a value-preserving jump step (propagating across unrelated call stacks). */ + predicate jump() { this = TJumpStep() } + + /** Holds if this represents a taint-preserving step. */ + predicate taint() { this = TTaintStep() } + + /** Holds if this represents a step reading `contents`. */ + predicate read(ContentSet contents) { this = TReadStep(contents) } + + /** Holds if this represents a step reading the named member `name`. */ + pragma[nomagic] + predicate readName(string name) { this.read(ContentSet::namedMember(name)) } + + /** Holds if this represents a step reading an element from an array. */ + pragma[nomagic] + predicate readArrayElement() { this.read(ContentSet::arrayElement()) } + + /** Holds if this represents a step storing into `contents`. */ + predicate store(ContentSet contents) { this = TStoreStep(contents) } + + /** Holds if this represents a step storing into the named member `name`. */ + pragma[nomagic] + predicate storeName(string name) { this.store(ContentSet::namedMember(name)) } + + /** Holds if this represents a step storing a value into an array. */ + pragma[nomagic] + predicate storeArrayElement() { this.store(ContentSet::arrayElement()) } + + string toString() { + this.value() and result = "value" + or + this.jump() and result = "jump" + or + this.taint() and result = "taint" + or + exists(ContentSet contents | + this.read(contents) and result = "read[" + contents + "]" + or + this.store(contents) and result = "store[" + contents + "]" + ) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/TaintTrackingInstantiation.qll b/unified/ql/lib/codeql/unified/internal/dataflow/TaintTrackingInstantiation.qll new file mode 100644 index 000000000000..ad911bc72224 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/TaintTrackingInstantiation.qll @@ -0,0 +1,18 @@ +private import unified +private import AllDataFlow +private import codeql.dataflow.TaintTracking + +module TaintTrackingInput implements InputSig { + predicate defaultTaintSanitizer(Node node) { none() } // TODO + + predicate defaultAdditionalTaintStep(Node src, Node sink, string model) { + step(src, any(Step s | s.taint()), sink) and model = "" + } + + bindingset[node] + predicate defaultImplicitTaintRead(Node node, ContentSet c) { none() } // TODO + + predicate speculativeTaintStep(Node src, Node sink) { none() } // TODO +} + +module TaintTrackingOutput = TaintFlowMake; diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/VariableRefKind.qll b/unified/ql/lib/codeql/unified/internal/dataflow/VariableRefKind.qll new file mode 100644 index 000000000000..1ae34f665704 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/VariableRefKind.qll @@ -0,0 +1,22 @@ +private import unified + +newtype TVariableRefKind = + TRead() or + TWrite() or + TPostUpdate() + +class VariableRefKind extends TVariableRefKind { + predicate isRead() { this = TRead() } + + predicate isWrite() { this = TWrite() } + + predicate isPostUpdate() { this = TPostUpdate() } + + string toString() { + this.isRead() and result = "read" + or + this.isWrite() and result = "write" + or + this.isPostUpdate() and result = "post-update" + } +} diff --git a/unified/ql/lib/codeql/unified/internal/dev/debugDataFlowGraph.ql b/unified/ql/lib/codeql/unified/internal/dev/debugDataFlowGraph.ql new file mode 100644 index 000000000000..7f79b0d151e7 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dev/debugDataFlowGraph.ql @@ -0,0 +1,19 @@ +/** + * @name Debug data flow graph + * @description Renders the data flow graph + * @kind graph + * @id unified/debug-data-flow-graph + */ + +private import unified +private import codeql.unified.internal.dataflow.DataFlowGraph + +/** + * Holds if `node` should be shown in the graph. + */ +predicate relevantNode(AstNode node) { + // Match an ancestor node by location so its whole subtree is shown. + node.getParent*().getLocation().toString().matches("%test.swift@13:%") +} + +import DebugGraph diff --git a/unified/ql/lib/codeql/unified/internal/dev/debugLocalNameBindingGraph.ql b/unified/ql/lib/codeql/unified/internal/dev/debugLocalNameBindingGraph.ql index 71887f476f16..4c0db3a049df 100644 --- a/unified/ql/lib/codeql/unified/internal/dev/debugLocalNameBindingGraph.ql +++ b/unified/ql/lib/codeql/unified/internal/dev/debugLocalNameBindingGraph.ql @@ -6,7 +6,7 @@ */ private import unified -private import codeql.unified.internal.LocalNameBinding +private import codeql.unified.internal.NameBinding /** * Holds if `node` should be shown in the graph. diff --git a/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql b/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql index f365d3915f89..e8c97ce41852 100644 --- a/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql +++ b/unified/ql/lib/codeql/unified/internal/dev/debugStaticNameBindingGraph.ql @@ -6,7 +6,7 @@ */ private import unified -private import codeql.unified.internal.StaticNameBinding +private import codeql.unified.internal.NameBinding /** * Holds if `node` should be shown in the graph. diff --git a/unified/ql/lib/codeql/unified/internal/mad/LegacyMaD.qll b/unified/ql/lib/codeql/unified/internal/mad/LegacyMaD.qll new file mode 100644 index 000000000000..492ef6abc453 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/mad/LegacyMaD.qll @@ -0,0 +1,363 @@ +/** + * Provides an approximate interpreter for MaD models imported from legacy Swift. + */ + +private import unified +private import codeql.dataflow.internal.AccessPathSyntax + +extensible predicate legacySourceModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string output, string kind, string provenance +); + +extensible predicate legacySinkModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string kind, string provenance +); + +extensible predicate legacySummaryModel( + string namespace, string type, boolean subtypes, string name, string signature, string ext, + string input, string output, string kind, string provenance +); + +private predicate modelContainsMethodName(string name) { + legacySourceModel(_, _, _, name, _, _, _, _, _) + or + legacySinkModel(_, _, _, name, _, _, _, _, _) + or + legacySummaryModel(_, _, _, name, _, _, _, _, _, _) +} + +private predicate parsedRawMethodName(string rawName, string name, string argLabels) { + // NOTE: We only support method names at the moment, not property names like `String.count`. + modelContainsMethodName(rawName) and + exists(string regex | + regex = "([^(]+)\\((.*)\\)" and + name = rawName.regexpCapture(regex, 1) and + argLabels = rawName.regexpCapture(regex, 2) + ) +} + +private string getSimpleNameFromExpr(Expr e) { + result = e.(Identifier).getValue() + or + result = e.(MemberAccessExpr).getMemberName() +} + +private string getQualifiedNameFromExpr(Expr e) { + result = e.(Identifier).getValue() + or + exists(MemberAccessExpr access | e = access | + result = getQualifiedNameFromExpr(access.getBase()) + "." + access.getMemberName() + ) +} + +private string getArgLabelsFromCall(CallExpr call) { + result = + concat(Argument arg, string name, int group | + arg = call.getAnArgument() and + ( + arg.isPositional() and + name = "_" and + group = 0 + or + name = arg.getName() and + group = 1 + ) + | + name + ":" order by group, name + ) +} + +pragma[nomagic] +private predicate methodCallSelector(CallExpr call, string name, string argLabels) { + name = getSimpleNameFromExpr(call.getCallee()) and + argLabels = getArgLabelsFromCall(call) +} + +pragma[nomagic] +private predicate constructorCallSelector(CallExpr call, string name, string argLabels) { + ( + if call.getCallee().(MemberAccessExpr).getMemberName() = "init" + then name = getQualifiedNameFromExpr(call.getCallee().(MemberAccessExpr).getBase()) + else name = getQualifiedNameFromExpr(call.getCallee()) + ) and + argLabels = getArgLabelsFromCall(call) +} + +private predicate isSubclassOfType(ClassLikeDeclaration cls, string typeName) { + typeName = any(Selector s).getTypeString() and + ( + getQualifiedNameFromExpr(cls.getABaseType().getType()) = typeName + or + isSubclassOfType(cls.getABaseClass(), typeName) + ) +} + +private string getArgLabelsFromCallable(Callable callable) { + result = + concat(Parameter param, string name, int group | + param.getParent() = callable and + ( + param.isPositional() and + name = "_" and + group = 0 + or + name = param.getExternalName() and + group = 1 + ) + | + name + ":" order by group, name + ) +} + +pragma[nomagic] +private predicate callableSelector( + FunctionDeclaration callable, string type, string name, string argLabels +) { + name = callable.getName() and + argLabels = getArgLabelsFromCallable(callable) and + exists(ClassLikeDeclaration cls | + callable = cls.getAMember() and + isSubclassOfType(cls, type) + ) +} + +private newtype TSelector = + MkSelector(string type, boolean subtypes, string name, string argLabels, string argTypes) { + exists(string rawName | + legacySourceModel(_, type, subtypes, rawName, argTypes, _, _, _, _) + or + legacySinkModel(_, type, subtypes, rawName, argTypes, _, _, _, _) + or + legacySummaryModel(_, type, subtypes, rawName, argTypes, _, _, _, _, _) + | + parsedRawMethodName(rawName, name, argLabels) + ) + } + +/** + * A tuple from a model that identifies call sites. + */ +private class Selector extends TSelector { + string getTypeString() { this = MkSelector(result, _, _, _, _) } + + boolean getSubtypesFlag() { this = MkSelector(_, result, _, _, _) } + + string getName() { this = MkSelector(_, _, result, _, _) } + + string getArgLabels() { this = MkSelector(_, _, _, result, _) } + + string getArgTypes() { this = MkSelector(_, _, _, _, result) } + + private string ppSubtypes() { + if this.getSubtypesFlag() = true then result = "+" else result = "" + } + + string toString() { + result = + this.getTypeString() + this.ppSubtypes() + "." + this.getName() + "(" + this.getArgLabels() + + ")" + this.getArgTypes() + } + + /** Holds if `name,argLabels` should be used to join with `methodCallSelector`. */ + pragma[nomagic] + private predicate matchesMethodCallSelector(string name, string argLabels) { + this = MkSelector(_, _, name, argLabels, _) and + name != "init" + } + + /** Holds if `name,argLabels` should be used to join with `constructorCallSelector`. */ + pragma[nomagic] + private predicate matchesConstructorCallSelector(string name, string argLabels) { + this = MkSelector(name, _, "init", argLabels, _) + } + + predicate matchesCall(CallExpr call) { + exists(string name, string argLabels | + this.matchesMethodCallSelector(name, argLabels) and + methodCallSelector(call, name, argLabels) + or + this.matchesConstructorCallSelector(name, argLabels) and + constructorCallSelector(call, name, argLabels) + ) + } + + predicate matchesCallable(Callable callable) { + exists(string type, string name, string argLabels | + callableSelector(callable, type, name, argLabels) and + this = MkSelector(type, true, name, argLabels, _) + ) + } + + int getPositionalArity() { result = count(int n | this.getArgLabels().splitAt(":", n) = "_") } + + string getANamedArgument() { result = this.getArgLabels().splitAt(":") and result != "_" } +} + +private predicate isAccessPath(string path) { + legacySourceModel(_, _, _, _, _, _, path, _, _) // output + or + legacySinkModel(_, _, _, _, _, _, path, _, _) // input + or + legacySummaryModel(_, _, _, _, _, _, path, _, _, _) // input + or + legacySummaryModel(_, _, _, _, _, _, _, path, _, _) // output +} + +private module AccessPathOutput = AccessPath; + +private import AccessPathOutput + +/** + * Gets the input to `call` specified by `token`. Only singleton access paths are supported. + */ +bindingset[call, token] +private DataFlow::Node getSinkFromCall(CallExpr call, AccessPathToken token) { + token.getName() = "Argument" and + exists(Argument arg | + arg = call.getAnArgument() and + result.asExpr() = arg.getValue() + | + arg.getPositionalIndex() = parseIntUnbounded(token.getAnArgument()) + or + arg.getName() + ":" = token.getAnArgument() + ) + or + token = "Argument[self]" and + result.isReceiverArgument(call) +} + +/** + * Gets the output from `call` specified by `token`. Only singleton access paths are supported. + */ +bindingset[call, token] +private DataFlow::Node getSourceFromCall(CallExpr call, AccessPathToken token) { + token = "ReturnValue" and + result.asExpr() = call + or + result = getSinkFromCall(call, token).getPostUpdateNode() +} + +/** + * Gets the sink from `callable` specified by `token`. Only singleton access paths are supported. + */ +bindingset[callable, token] +private DataFlow::Node getSinkFromCallable(Callable callable, AccessPathToken token) { + token = "ReturnValue" and + result.asExpr() = any(ReturnExpr r | r.getEnclosingCallable() = callable).getValue() // TODO: expose canonical return node in data flow +} + +/** + * Gets the source from `callable` specified by `token`. Only singleton access paths are supported. + */ +bindingset[callable, token] +private DataFlow::Node getSourceFromCallable(Callable callable, AccessPathToken token) { + token.getName() = "Parameter" and + exists(Parameter param | + param.getParent() = callable and + result.asExpr() = param.getPattern() + | + param.getPositionalIndex() = parseIntUnbounded(token.getAnArgument()) + or + param.getExternalName() + ":" = token.getAnArgument() + ) + or + token = "Parameter[self]" and + result.isReceiverParameter(callable) +} + +private predicate normalizedSourceModel( + Selector selector, AccessPath output, string kind, string provenance +) { + exists( + string type, boolean subtypes, string rawName, string name, string argLabels, string argTypes + | + legacySourceModel(_, type, subtypes, rawName, argTypes, _, output, kind, provenance) and + parsedRawMethodName(rawName, name, argLabels) and + selector = MkSelector(type, subtypes, name, argLabels, argTypes) + ) +} + +private predicate normalizedSinkModel( + Selector selector, AccessPath output, string kind, string provenance +) { + exists( + string type, boolean subtypes, string rawName, string name, string argLabels, string argTypes + | + legacySinkModel(_, type, subtypes, rawName, argTypes, _, output, kind, provenance) and + parsedRawMethodName(rawName, name, argLabels) and + selector = MkSelector(type, subtypes, name, argLabels, argTypes) + ) +} + +/** + * Gets a flow source with the given `kind` and `provenance`. + */ +DataFlow::Node getASource(string kind, string provenance) { + exists(Selector selector, AccessPath output | + normalizedSourceModel(selector, output, kind, provenance) + | + exists(CallExpr call | + selector.matchesCall(call) and + result = getSourceFromCall(call, output) + ) + or + exists(Callable callable | + selector.matchesCallable(callable) and + result = getSourceFromCallable(callable, output) + ) + ) +} + +/** + * Gets a sink with the given `kind` and `provenance`. + */ +DataFlow::Node getASink(string kind, string provenance) { + exists(Selector selector, AccessPath input | + normalizedSinkModel(selector, input, kind, provenance) + | + exists(CallExpr call | + selector.matchesCall(call) and + result = getSinkFromCall(call, input) + ) + or + exists(Callable callable | + selector.matchesCallable(callable) and + result = getSinkFromCallable(callable, input) + ) + ) +} + +module Public { + /** Provides access to data from library models. */ + module Models { + /** Holds if `node` is a source of the given `kind`. */ + predicate isSource(DataFlow::Node node, string kind) { node = getASource(kind, _) } + + /** Holds if `node` is a sink of the given `kind`. */ + predicate isSink(DataFlow::Node node, string kind) { node = getASink(kind, _) } + } +} + +private module Debug { + query predicate invalidAccessPath(Selector selector, AccessPathToken ap) { + ( + normalizedSourceModel(selector, ap, _, _) + or + normalizedSinkModel(selector, ap, _, _) + ) and + ap.getName() = ["Argument", "Parameter"] and + ( + exists(int n | + parseInt(ap.getAnArgument()) = n and + not n in [0 .. selector.getPositionalArity() - 1] + ) + or + exists(string name | + name = ap.getAnArgument().regexpCapture("(.*):", 1) and + not name = selector.getANamedArgument() + ) + ) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll b/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll new file mode 100644 index 000000000000..934b6d90f6fc --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll @@ -0,0 +1,221 @@ +/** Provides classes representing types without type arguments. */ +overlay[local?] +module; + +import unified // reexport in order to shadow e.g. the `TypeParameter` class +private import unified as Unified +private import TypeInference +private import codeql.unified.internal.StaticNameBinding + +/** + * Holds if `a` is an associated type of `c`, in which case we model it + * as a type parameter. + * + * `inherited` indicates whether the associated type is declared in `c` + * or inherited from a base class. + */ +private predicate associatedTypeParameter( + ClassLikeDeclaration c, AssociatedTypeDeclaration a, boolean inherited +) { + a = c.getAMember() and + inherited = false + or + exists(string name | + associatedTypeParameterInherited(c, a, _, _, name) and + not c.getAMember().(TypeAliasDeclaration).getName() = name and + inherited = true + ) +} + +pragma[nomagic] +predicate associatedTypeParameterInherited( + ClassLikeDeclaration c, AssociatedTypeDeclaration a, ClassLikeDeclaration base, Expr baseRef, + string name +) { + associatedTypeParameter(base, a, _) and + baseRef = c.getABaseType().getType() and + base.getNameNode() = getStaticBindingTargetFromRef(baseRef) and + name = a.getName() +} + +cached +newtype TType = + TClassLikeDeclarationType(ClassLikeDeclaration c) { + CachedStage::ref() and + exists(c.getNameNode()) + } or + TClosureParameterPseudoType(Parameter p) { + exists(FunctionExpr fe | + p = fe.getAParameter() and + not exists(p.getType()) + ) + } or + TTypeParameterType(Unified::TypeParameter tp) or + TAssociatedTypeParameterType( + ClassLikeDeclaration c, AssociatedTypeDeclaration a, boolean inherited + ) { + associatedTypeParameter(c, a, inherited) + } or + TUnknownType() or + TUnknownTypeTypeParameter(int i) { i in [0 .. 20] } + +final class Type = TypeImpl; + +/** + * A type without type arguments. + */ +abstract private class TypeImpl extends TType { + /** + * Gets the `i`th positional type parameter of this type, if any. + * + * This excludes synthetic type parameters, such as associated types. + */ + abstract TypeParameter getPositionalTypeParameter(int i); + + /** + * Gets a type parameter of this type. + * + * This includes both positional type parameters and synthetic type parameters, + * such as associated types. + */ + TypeParameter getATypeParameter() { result = this.getPositionalTypeParameter(_) } + + /** Gets a textual representation of this type. */ + abstract string toString(); + + /** Gets the location of this type. */ + abstract Location getLocation(); +} + +/** + * A type representing a class-like declaration. + */ +class ClassLikeDeclarationType extends TypeImpl, TClassLikeDeclarationType { + ClassLikeDeclaration c; + + ClassLikeDeclarationType() { this = TClassLikeDeclarationType(c) } + + ClassLikeDeclaration getClassLikeDeclaration() { result = c } + + string getName() { result = c.getName() } + + override TypeParameter getPositionalTypeParameter(int i) { + result = TTypeParameterType(c.getTypeParameter(i)) + } + + override TypeParameter getATypeParameter() { + result = super.getATypeParameter() + or + result = TAssociatedTypeParameterType(c, _, _) + } + + override string toString() { result = c.getName() } + + override Location getLocation() { result = c.getLocation() } +} + +/** + * A pseudo type that does not correspond to any concrete type in the source code. + */ +abstract class PseudoType extends TypeImpl { } + +/** + * A type representing an unknown type. + */ +class UnknownType extends PseudoType, TUnknownType { + override TypeParameter getPositionalTypeParameter(int i) { result = TUnknownTypeTypeParameter(i) } + + override string toString() { result = "(unknown type)" } + + override Location getLocation() { result instanceof EmptyLocation } +} + +/** + * A type representing a closure parameter. + */ +class ClosureParameterPseudoType extends PseudoType, TClosureParameterPseudoType { + private Parameter param; + + ClosureParameterPseudoType() { this = TClosureParameterPseudoType(param) } + + Parameter getParam() { result = param } + + override TypeParameter getPositionalTypeParameter(int i) { none() } + + override string toString() { result = "(closure parameter " + param + ")" } + + override Location getLocation() { result = param.getLocation() } +} + +/** A type parameter. */ +abstract class TypeParameter extends TypeImpl { + override TypeParameter getPositionalTypeParameter(int i) { none() } + + abstract AstNode getDeclaringItem(); +} + +private class IdAstNode = + @unified_type_parameter or @unified_class_like_declaration or @unified_associated_type_declaration; + +private predicate id(IdAstNode x, IdAstNode y) { x = y } + +private predicate idOf(IdAstNode x, int y) = equivalenceRelation(id/2)(x, y) + +int idOfTypeParameterAstNode(AstNode node) { idOf(node, result) } + +/** A type parameter from source code. */ +class TypeParameterType extends TypeParameter, TTypeParameterType { + private Unified::TypeParameter typeParam; + + TypeParameterType() { this = TTypeParameterType(typeParam) } + + Unified::TypeParameter getTypeParameter() { result = typeParam } + + override ClassLikeDeclaration getDeclaringItem() { typeParam = result.getATypeParameter() } + + override string toString() { result = typeParam.getName() } + + override Location getLocation() { result = typeParam.getLocation() } +} + +/** + * An associated type viewed as a type parameter. + */ +class AssociatedTypeParameterType extends TypeParameter, TAssociatedTypeParameterType { + private Unified::ClassLikeDeclaration c; + private Unified::AssociatedTypeDeclaration assocTypeDecl; + private boolean inherited; + + AssociatedTypeParameterType() { this = TAssociatedTypeParameterType(c, assocTypeDecl, inherited) } + + Unified::AssociatedTypeDeclaration getAssociatedTypeDeclaration() { result = assocTypeDecl } + + override ClassLikeDeclaration getDeclaringItem() { result = c } + + override string toString() { + if inherited = true + then result = assocTypeDecl.getName() + " (inherited)" + else result = assocTypeDecl.getName() + } + + override Location getLocation() { + if inherited = true then result = c.getLocation() else result = assocTypeDecl.getLocation() + } +} + +/** + * A type parameter of the special `UnknownType`. + */ +class UnknownTypeTypeParameter extends TypeParameter, TUnknownTypeTypeParameter { + private int i; + + UnknownTypeTypeParameter() { this = TUnknownTypeTypeParameter(i) } + + override AstNode getDeclaringItem() { none() } + + override TypeParameter getPositionalTypeParameter(int j) { none() } + + override string toString() { result = "unknown type parameter " + i } + + override Location getLocation() { result instanceof EmptyLocation } +} diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeAbstraction.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeAbstraction.qll new file mode 100644 index 000000000000..cde6a2449e2d --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeAbstraction.qll @@ -0,0 +1,19 @@ +private import unified as Unified +private import Type + +/** + * A type abstraction. I.e., a place in the program where type variables may + * be introduced. + */ +abstract class TypeAbstraction extends AstNode { + abstract TypeParameter getATypeParameter(); +} + +/** + * A class-like declaration. Unlike `ClassLikeDeclarationType`, this includes + * declarations that do not define a new type, such as `extension`s in Swift. + */ +private class ClassLikeDeclarationTypeAbstraction extends TypeAbstraction instanceof Unified::ClassLikeDeclaration +{ + override TypeParameter getATypeParameter() { this = result.getDeclaringItem() } +} diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInference.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInference.qll new file mode 100644 index 000000000000..5bd2d7f885bc --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInference.qll @@ -0,0 +1,753 @@ +/** Provides functionality for inferring types. */ + +/* + * Known limitations: + * - Implicit constructors in classes and structs are not generated by the extractor + * - Pattern matching, including enum destructuring + * - Inferred qualifiers `.foo` + * - Type parameter bounds (`foo(x : T)`) + * - Type parameter constraints (`foo(x : T) where T: Protocol`); are currently not extracted + * - Associated types on type parameters, e.g. `func foo(x : T) -> T.AssociatedType` + * - `Self` inside protocol extensions + * - Type parameters inherited in extensions (extractor change?) + * - Primary associated types + * - Key paths + * - Overloading (both arity based and type based) + * - Indexing expressions + * - Operations + * - Inherited constructors + * - Closure short-hand parameters `$0`, `$1`, etc (extractor change?) + */ + +private import codeql.util.Unit +private import codeql.typeinference.internal.TypeInference +private import codeql.unified.internal.ParameterEx +private import codeql.unified.internal.ExprPositions +private import codeql.unified.internal.NameBinding +private import utils.test.InlineExpectationsTest +private import Type +private import Type as T +private import TypeAbstraction +private import TypeAbstraction as TA +private import TypeMention +private import TypeInferencePlugin +private import TypeInferencePlugin as Plugin + +class Type = T::Type; + +private module Input1 implements InputSig1 { + private import Type as T + + class Type = T::Type; + + class PseudoType = T::PseudoType; + + class TypeParameter = T::TypeParameter; + + class TypeAbstraction = TA::TypeAbstraction; + + int getTypeParameterId(TypeParameter tp) { + CachedStage::ref() and + tp = + rank[result](TypeParameter tp0, int kind, int id1, int id2 | + kind = 1 and + id1 = idOfTypeParameterAstNode(tp0.(TypeParameterType).getTypeParameter()) and + id2 = 0 + or + kind = 2 and + exists(ClassLikeDeclaration c, AssociatedTypeDeclaration a | + tp0 = TAssociatedTypeParameterType(c, a, _) and + id1 = idOfTypeParameterAstNode(c) and + id2 = idOfTypeParameterAstNode(a) + ) + or + kind = 3 and + tp0 = TUnknownTypeTypeParameter(id1) and + id2 = 0 + | + tp0 order by kind, id1, id2 + ) + } +} + +private import Input1 + +private module M1 = Make1; + +import M1 + +predicate getTypePathLimit = Input1::getTypePathLimit/0; + +predicate getTypeParameterId = Input1::getTypeParameterId/1; + +class TypePath = M1::TypePath; + +module TypePath = M1::TypePath; + +private module Input2 implements InputSig2 { + TypeMention getATypeParameterConstraint(TypeParameter tp) { + result = tp.(TypeParameterType).getTypeParameter().getBound() + } + + predicate conditionSatisfiesConstraint( + TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive + ) { + transitive = true and + abs = + any(ClassLikeDeclaration c | + condition = getClassLikeDeclarationTypeMention(c) and + constraint = c.getABaseType().getType() + ) + } + + predicate typeParameterIsFunctionallyDetermined(TypeParameter tp) { + tp instanceof AssociatedTypeParameterType + } + + predicate typeAbstractionHasAmbiguousConstraintAt( + TypeAbstraction abs, Type constraint, TypePath path + ) { + none() // todo + } +} + +private import Input2 + +private module M2 = Make2; + +import M2 + +module Input3 implements InputSig3 { + private import unified as Unified + + predicate cacheRevRef() { + (exists(resolveFieldAccess(_)) implies any()) + or + (exists(resolveCallTarget(_)) implies any()) + } + + predicate inferTypeForDefaults = M3::inferType/2; + + class UnknownType = T::UnknownType; + + class BoolType = Plugin::BoolType; + + class AstNode = Unified::AstNode; + + class Expr extends Unified::Expr { + Expr() { isInAssignmentContext(this, _) or hasResultValue(this) } + } + + class Cast extends Expr, TypeCastExpr { + TypeMention getType() { result = TypeCastExpr.super.getType() } + } + + class Switch extends Expr, SwitchExpr { + Expr getExpr() { result = super.getValue() } + + Case getCase(int index) { result = super.getCase(index) } + } + + class Case extends SwitchCase { + AstNode getAPattern() { result = super.getPattern() } + + AstNode getBody() { result = super.getBody() } + } + + class ConditionalExpr extends Expr instanceof IfExpr { + Expr getCondition() { result = super.getCondition() } + + Expr getThen() { result = super.getThen() } + + Expr getElse() { result = super.getElse() } + } + + class BinaryExpr extends Expr, Unified::BinaryExpr { + Expr getLeftOperand() { result = super.getLeft() } + + Expr getRightOperand() { result = super.getRight() } + } + + class LogicalAndExpr extends BinaryExpr, Unified::LogicalAndExpr { } + + class LogicalOrExpr extends BinaryExpr, Unified::LogicalOrExpr { } + + class Assignment extends BinaryExpr, Unified::Assignment { } + + class AssignExpr extends Assignment, Unified::AssignExpr { } + + class ParenExpr extends Expr { + ParenExpr() { none() } + + Expr getExpr() { none() } + } + + private newtype TDeclaration = + TAstVariableDeclaration(Unified::VariableDeclaration decl) or + TCallableDeclaration(Unified::Callable c) or + TParameterExDeclaration(ParameterEx p) + + final class Declaration = DeclarationImpl; + + abstract private class DeclarationImpl extends TDeclaration { + abstract TypeMention getDeclaringType(); + + abstract TypeMention getType(); + + abstract Identifier getNameNode(); + + abstract string toString(); + + abstract Location getLocation(); + + pragma[nomagic] + predicate isInstanceMemberOf(ClassLikeDeclaration cls, string name) { + exists(NamespaceNode ns, Identifier i | + ns.isInstanceMemberNamespace(cls) and + ns.getMember(name).isIdentifier(i) and + i = this.getNameNode() + ) + } + + Unified::Callable asCallable() { this = TCallableDeclaration(result) } + } + + class Variable extends LocalNameBindingOutput::Local { + Expr getAnAccess() { result = super.getAnAccess() } + } + + final class VariableDeclaration = VariableDeclarationImpl; + + abstract private class VariableDeclarationImpl extends DeclarationImpl { + abstract AstNode getPattern(); + + abstract AstNode getInitializer(); + + predicate preservesInitializerType() { any() } + } + + private class AstVariableDeclaration extends VariableDeclarationImpl, TAstVariableDeclaration { + Unified::VariableDeclaration decl; + + AstVariableDeclaration() { this = TAstVariableDeclaration(decl) } + + Unified::VariableDeclaration getDecl() { result = decl } + + override TypeMention getDeclaringType() { none() } + + override TypeMention getType() { result = decl.getType() } + + override Identifier getNameNode() { result = decl.getPattern() } + + override AstNode getPattern() { result = decl.getPattern() } + + override AstNode getInitializer() { result = decl.getValue() } + + override string toString() { result = decl.toString() } + + override Location getLocation() { result = decl.getLocation() } + } + + class Field extends AstVariableDeclaration { + ClassLikeDeclaration cls; + + Field() { decl = cls.getAMember() } + + override TypeMention getDeclaringType() { result = getClassLikeDeclarationTypeMention(cls) } + } + + private class EnumField_ extends Field { + override EnumField decl; + + override TypeMention getType() { result = decl.getEnum().getNameNode() } + } + + abstract class FieldAccess extends Expr { + abstract Expr getReceiver(); + + abstract Field getField(); + } + + pragma[nomagic] + private predicate lookupMember0(MemberAccessExpr mae, ClassLikeDeclaration cls, string name) { + cls = inferType(mae.getBase()).(ClassLikeDeclarationType).getClassLikeDeclaration() and + name = mae.getMemberName() + } + + pragma[nomagic] + private Declaration lookupInstanceMember(MemberAccessExpr mae) { + exists(ClassLikeDeclaration cls, string name | + lookupMember0(mae, cls, name) and + result.isInstanceMemberOf(cls, name) + ) + } + + private class MemberAccessExprFieldAccess extends FieldAccess, MemberAccessExpr { + override Expr getReceiver() { result = this.getBase() } + + pragma[nomagic] + private predicate isTupleProjection(TupleType tuple, string name) { + tuple = inferType(this.getBase()) and + name = this.getMemberName() + } + + override Field getField() { + // mutual recursion; resolving qualified fields requires resolving types and vice versa + result = lookupInstanceMember(this) + or + // also mutual recursion + exists(TupleType tuple, string name | + this.isTupleProjection(tuple, name) and + result.getDecl() = tuple.getField(name) + ) + or + // no mutual recursion; can be resolved directly with static name binding + result.getNameNode() = getStaticBindingTargetFromRef(this) + } + } + + private Type getImplicitReceiverType(UnqualifiedMemberAccess uma, TypePath path) { + exists(Parameter p, Unified::Callable c | + p.getParameterEx().isImplicitReceiverParameter(c) and + c = uma.getImplicitQualifierVariable().getDeclaringCallable() and + result = p.getType().getTypeAt(path) + ) + } + + private class UnqualifiedMemberAccessFieldAccess extends FieldAccess, UnqualifiedMemberAccess { + override Expr getReceiver() { none() } + + override Field getField() { result.getNameNode() = this.getTarget() } + } + + Type inferFieldAccessReceiverType(FieldAccess fa, TypePath path) { + // instance field with explicit receiver + result = inferType(fa.getReceiver(), path) + or + // static field with type qualifier + result = fa.(MemberAccessExpr).getBase().(TypeMention).getTypeAt(path) + or + // field with implicit receiver + result = getImplicitReceiverType(fa, path) + } + + Type inferFieldAccessReceiverTypeContextual(Expr receiver, TypePath path) { + result = M3::inferFieldAccessReceiverTypeContextualDefault(_, receiver, path) + } + + class Return extends ReturnExpr { + Expr getExpr() { result = this.getValue() } + } + + class Parameter extends VariableDeclarationImpl, TParameterExDeclaration { + ParameterEx p; + + Parameter() { this = TParameterExDeclaration(p) } + + ParameterEx getParameterEx() { result = p } + + override AstNode getPattern() { result = p.asParameter().getPattern() } + + override AstNode getInitializer() { none() } + + override TypeMention getDeclaringType() { none() } + + override TypeMention getType() { + result = p.getType() + or + exists(Callable c | + p.isImplicitReceiverParameter(_) and + this = c.getParameter(_) and + result = c.getDeclaringType() + ) + } + + override Identifier getNameNode() { none() } + + override string toString() { result = p.toString() } + + override Location getLocation() { result = p.getLocation() } + } + + predicate implicitParameterDecl(Parameter p, Variable v) { + exists(Unified::Callable c | + p.getParameterEx().isImplicitReceiverParameter(c) and + v.(LocalVariable).isImplicitReceiverParameter(c) + ) + } + + class Callable extends DeclarationImpl, TCallableDeclaration { + Unified::Callable c; + + Callable() { this = TCallableDeclaration(c) } + + Unified::Callable getCallable() { result = c } + + override TypeMention getDeclaringType() { + result = c.(EnumConstructor).getEnum().getNameNode() + or + not c instanceof EnumConstructor and + exists(ClassLikeDeclaration cls | + c = cls.getAMember() and + result = getClassLikeDeclarationTypeMention(cls) + ) + } + + override TypeMention getType() { + result = c.getReturnType() + or + c instanceof ConstructorDeclaration and + result = this.getDeclaringType() + } + + override Identifier getNameNode() { + result = c.(AccessorDeclaration).getNameNode() + or + result = c.(FunctionDeclaration).getNameNode() + or + result = c.(EnumConstructor).getEnclosingClass().getNameNode() + or + not c instanceof EnumConstructor and + result = c.(ConstructorDeclaration).getNameNode() + } + + string getName() { + result = this.getNameNode().getValue() + or + c instanceof DestructorDeclaration and + result = "" + or + c instanceof InitializerDeclaration and + result = "" + } + + TypeParameter getTypeParameter(int i) { + result = TTypeParameterType(c.(FunctionDeclaration).getTypeParameter(i)) + } + + TypeMention getAdditionalTypeParameterConstraint(TypeParameter tp) { + // todo: type equalities? + exists(BoundTypeConstraint constraint | + constraint = c.(FunctionDeclaration).getATypeConstraint() and + tp = constraint.getType().(TypeMention).getType() and + result = constraint.getBound() + ) + } + + Parameter getParameter(int i) { + exists(ParameterEx param | param = result.getParameterEx() | + param.isImplicitReceiverParameter(c) and + i = 0 + or + param.asParameter() = c.getParameter(i - 1) + or + param.isDefaultConstructorParameter(c, i, _) + ) + } + + AstNode getBody() { result = c.getBody() } + + override string toString() { result = c.toString() } + + override Location getLocation() { result = c.getLocation() } + } + + Callable getEnclosingCallable(AstNode node) { result.asCallable() = node.getEnclosingCallable() } + + class InvocationResolutionContext = Unit; + + class Invocation extends Expr, CallExpr { + Type getTypeQualifier(TypePath path) { + exists(TypeMention tm | result = tm.getTypeAt(path) | + tm = super.getCallee() + or + not super.getCallee() instanceof TypeMention and + tm = super.getCallee().(MemberAccessExpr).getBase() + ) + } + + Type getTypeArgument(int i, TypePath path) { none() } + + int getNumberOfArguments() { result = CallExpr.super.getNumberOfArguments() + 1 } + + Expr getArgument(int i) { + i = 0 and + exists(boolean isFunctionExprInvoke | exists(this.getTargetImpl(isFunctionExprInvoke)) | + if isFunctionExprInvoke = true + then result = CallExpr.super.getCallee() + else result = CallExpr.super.getCallee().(MemberAccessExpr).getBase() + ) + or + result = CallExpr.super.getArgument(i - 1).getValue() + } + + /** Gets the special `invoke` target when the callee evaluates to a function expression. */ + pragma[nomagic] + Unified::Callable getInvokeTarget(Type t) { + t = inferType(this.getCallee()) and + result = getFunctionInvoke(t) + } + + private Callable getTargetViaStaticNameBinding() { + exists(NameBinding b | b = getStaticBindingTargetFromRef(this.getCallee()) | + // object creation (including enum constructors): `String(42)`, `Optional.Some(42)` + exists(ClassLikeDeclaration cls, ConstructorDeclaration init | + cls.getNameNode() = b and + init = cls.getAMember() and + result.asCallable() = init + ) + or + // call without explicit receiver: `foo(42)` + result.getNameNode() = b + ) + } + + Callable getTargetImpl(boolean isFunctionExprInvoke) { + // mutual recursion; call with explicit receiver: `obj.foo(42)` + result = lookupInstanceMember(this.getCallee()) and + isFunctionExprInvoke = false + or + // mutual recursion; call to a function expression: `callback(42)` + result.asCallable() = this.getInvokeTarget(_) and + isFunctionExprInvoke = true + or + // no mutual recursion; can be resolved directly with static name binding + result = this.getTargetViaStaticNameBinding() and + isFunctionExprInvoke = false + } + + Callable getTarget(InvocationResolutionContext c) { + result = this.getTargetImpl(_) and + exists(c) + } + + Callable getATargetForTypeQualifierMatching() { result = this.getTargetViaStaticNameBinding() } + } + + Type inferInvocationArgumentType( + Invocation invocation, InvocationResolutionContext ctx, int i, TypePath path + ) { + exists(ctx) and + ( + // A call to a function expression + exists(Type t | exists(invocation.getInvokeTarget(t)) | + i = 0 and + result = inferType(invocation.(CallExpr).getCallee(), path) + or + exists(TypePath prefix, TypePath suffix, int j | + functionInvokeSignature(t, invocation.getNumberOfArguments() - 1, j, i, prefix) and + result = inferType(invocation.getArgument(j + 1), suffix) and + path = prefix.append(suffix) + ) + ) + or + // A call to a regular function or method + exists(invocation.getTargetImpl(false)) and + ( + result = inferType(invocation.getArgument(i), path) + or + i = 0 and + result = getImplicitReceiverType(invocation.getCallee(), path) + ) + ) + } + + Type inferInvocationArgumentTypeContextual(Expr arg, TypePath path) { + result = M3::inferInvocationArgumentTypeContextualDefault(_, _, _, arg, path) + } + + Type inferInvocationType(Invocation invocation, TypePath path) { + result = M3::inferInvocationTypeDefault(invocation, _, path) + } + + class Closure extends Callable { + private FunctionExpr fe; + + Closure() { fe = this.getCallable() } + + Expr getDefiningExpr() { result = fe } + } + + class ClosureParameterPseudoType extends T::ClosureParameterPseudoType { + Parameter getParameter() { result.getParameterEx().asParameter() = this.getParam() } + } + + pragma[nomagic] + Type getClosureType(Closure c) { result = getFunctionExprType(c.getDefiningExpr()) } + + pragma[nomagic] + TypePath getClosureParameterTypePath(Parameter p) { + exists(FunctionExpr fe, Type t, int i | + p.getParameterEx().asParameter() = fe.getParameter(i) and + t = getFunctionExprType(fe) and + result = getFunctionExprParameterTypePath(t, fe.getNumberOfParameters(), i) + ) + } + + pragma[nomagic] + TypePath getClosureReturnTypePath(Closure c) { + result = getFunctionExprReturnTypePath(getClosureType(c)) + } + + predicate stepLanguageSpecific(AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2) { + n1 = n2.(Block).getLastStmt() and + prefix1.isEmpty() and + prefix2.isEmpty() + or + hasResultValue(n2) and + n1 = n2.(ArrayLiteral).getAnElement() and + prefix1.isEmpty() and + prefix2 = TypePath::singleton(getArrayElementTypeParameter()) + or + hasResultValue(n2) and + n2 = + any(TupleExpr te | + exists(int i, int arity, TupleType tt | + n1 = te.getElement(i).getValue() and + arity = te.getNumberOfElements() and + tt.getArity() = arity and + prefix1.isEmpty() and + prefix2 = TypePath::singleton(tt.getPositionalTypeParameter(i)) + ) + ) + } + + Type inferTypeLanguageSpecific(AstNode n, TypePath path) { + result = Plugin::inferType(n, path) + or + n instanceof BooleanLiteral and + result instanceof BoolType and + path.isEmpty() + or + n instanceof IntLiteral and + result instanceof IntType and + path.isEmpty() + or + n instanceof FloatLiteral and + result instanceof FloatType and + path.isEmpty() + or + n instanceof StringLiteral and + result instanceof StringType and + path.isEmpty() + or + exists(ClassLikeDeclaration c | + c = n.(SuperExpr).getEnclosingClass() and + result = c.getBaseType(0).getType().(TypeMention).getTypeAt(path) + ) + or + // `Optional.none` has an unknown `Wrapper` type + exists(EnumField_ f, TypeParameter tp | + n.(FieldAccess).getField() = f and + tp = f.getType().getType().getATypeParameter() and + path = TypePath::singleton(tp) and + // `Optional.none` does not have an unknown `Wrapper` type + not exists(n.(MemberAccessExpr).getBase().(TypeMention).getTypeAt(path)) + ) and + result instanceof UnknownType + or + hasResultValue(n) and + n.(ArrayLiteral).getNumberOfElements() = 0 and + path = TypePath::singleton(getArrayElementTypeParameter()) and + result instanceof UnknownType + } + + pragma[nomagic] + Type inferTypeCertainLanguageSpecific(AstNode n, TypePath path) { none() } +} + +private module M3 = Make3; + +predicate inferType = M3::inferType/1; + +predicate inferType = M3::inferType/2; + +predicate inferTypeCertain = M3::inferTypeCertain/2; + +module Consistency = M3::Consistency; + +module CachedStage = M3::CachedStage; + +/** + * Gets the field that is accessed by the given expression. + * + * `access` is either a `MemberAccessExpr` or an `Identifier` (when + * the field is accessed with an implicit receiver). + */ +cached +VariableDeclaration resolveFieldAccess(Expr access) { + CachedStage::ref() and + result = access.(Input3::FieldAccess).getField().getDecl() +} + +/** + * Gets the static call target of the given call expression. + * + * Does not yet take overloading into account. + */ +cached +Callable resolveCallTarget(CallExpr ce) { + CachedStage::ref() and + result = ce.(Input3::Invocation).getTargetImpl(_).asCallable() +} + +private predicate typeTestAstNodeRepr(AstNode n, string repr) { + repr = [n.toString(), n.(Identifier).getValue(), "." + n.(MemberAccessExpr).getMemberName()] +} + +module TypeTest implements TestSig { + private module M = M3::TypeTest; + + import M + + predicate hasOptionalResult = M::hasOptionalResult/4; +} + +/** Provides predicates for debugging the type inference implementation. */ +private module Debug { + AstNode getRelevantNode() { + exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | + result.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + filepath.matches("%/test.swift") and + startline = 1 + ) + } + + Type debugInferType(AstNode n, TypePath path) { + n = getRelevantNode() and + result = inferType(n, path) + } + + Callable debugResolveCallTarget(CallExpr ce) { + ce = getRelevantNode() and + result = resolveCallTarget(ce) + } + + predicate debugTypeMention(TypeMention tm, TypePath path, Type type) { + tm = getRelevantNode() and + tm.getTypeAt(path) = type + } + + predicate atLimit = M3::Debug::atLimit/1; + + predicate inferTypeForNodeAtLimit = M3::Debug::inferTypeForNodeAtLimit/2; + + predicate countTypesForNodeAtLimit = M3::Debug::countTypesForNodeAtLimit/2; + + predicate maxTypes = M3::Debug::maxTypes/4; + + predicate maxTypePath = M3::Debug::maxTypePath/4; + + predicate maxTypePaths = M3::Debug::maxTypePaths/4; + + Type debugInferTypeCertain(AstNode n, TypePath path) { + n = getRelevantNode() and + result = inferTypeCertain(n, path) + } + + Type debugInferCertainNonUniqueType(AstNode n, TypePath path) { + n = getRelevantNode() and + Consistency::nonUniqueCertainType(n, path) and + result = inferTypeCertain(n, path) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll new file mode 100644 index 000000000000..20aa749a7216 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll @@ -0,0 +1,19 @@ +/** + * Provides logic for recognizing type inference inconsistencies. + */ + +private import Type +private import TypeMention +private import TypeInference +private import TypeInference::Consistency as Consistency +import TypeInference::Consistency + +query predicate illFormedTypeMention(TypeMention tm) { + Consistency::illFormedTypeMention(tm) and + tm.fromSource() +} + +query predicate nonUniqueCertainType(AstNode n, TypePath path) { + Consistency::nonUniqueCertainType(n, path) and + n.fromSource() +} diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePlugin.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePlugin.qll new file mode 100644 index 000000000000..0680c6914ada --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePlugin.qll @@ -0,0 +1,168 @@ +/** + * Provides an interface for language-specific type inference logic. + */ + +private import Type +private import TypeInference +private import codeql.util.Unit + +private module Plugins { + private import TypeInferencePluginSwift +} + +// todo: once we support multiple languages, these predicates will need to be +// tagged with the language +class TypeInferencePlugin extends Unit { + /** Gets the boolean type which will be assigned to boolean literals. */ + abstract Type getBoolType(); + + /** Gets the integer type which will be assigned to integer literals. */ + abstract Type getIntType(); + + /** Gets the floating-point type which will be assigned to floating-point literals. */ + abstract Type getFloatType(); + + /** Gets the string type which will be assigned to string literals. */ + abstract Type getStringType(); + + /** Gets the type parameter representing the element type of an array. */ + abstract TypeParameter getArrayElementTypeParameter(); + + /** + * Gets the type of the given function expression. + * + * For example `Fn` in Rust (which does not depend on `fe`). + */ + bindingset[fe] + abstract Type getFunctionExprType(FunctionExpr fe); + + /** + * Gets the type path for the `i`th parameter of the given function type + * when the function type has the given arity. + * + * For example `"Args.Ti"` in Rust, where `Args` is the type argument of + * `Fn` and `Ti` is the `i`th type parameter of the tuple type with arity + * `arity`. + */ + bindingset[t, arity, i] + abstract TypePath getFunctionExprParameterTypePath(Type t, int arity, int i); + + /** + * Gets the type path for the return type of the given function type. + * + * For example `"Output"` in Rust, where `Output` is the associated type + * of `Fn`. + */ + bindingset[t] + abstract TypePath getFunctionExprReturnTypePath(Type t); + + /** + * Gets the `invoke` function for the given function type. + * + * For example the `call` method of the `Fn` trait in Rust. + */ + abstract Callable getFunctionInvoke(Type t); + + /** + * Holds if the `i`th syntactic argument in a call to the `invoke` function + * belonging to `t` should map to position `j` and type path `path`. + * + * For example, in Rust, in a call `closure(arg0, arg1)` the first argument + * maps to `(1, "T0")` and the second argument maps to `(1, "T1")`, where `T0` + * is the first type parameter of the 2-tuple type and `T1` is the second type + * parameter. + */ + bindingset[t, arity, i] + abstract predicate functionInvokeSignature(Type t, int arity, int i, int j, TypePath path); + + /** Gets the tuple type with the given arity. */ + abstract Type getTupleType(int arity); + + /** Holds if `field` is a field of the tuple type `tuple` with the given `name`. */ + abstract predicate tupleField(Type tuple, string name, VariableDeclaration field); + + /** Holds if `case` is an enum case constructor of `enum` with identifier `i`. */ + abstract predicate isEnumConstructor( + ClassLikeDeclaration enum, ConstructorDeclaration case, Identifier i + ); + + /** Holds if `field` is an enum field of `enum`. */ + abstract predicate isEnumField(ClassLikeDeclaration enum, VariableDeclaration field); + + /** Gets the inferred type for the given AST node and type path. */ + Type inferType(AstNode n, TypePath path) { none() } +} + +class BoolType extends Type { + BoolType() { this = any(TypeInferencePlugin p).getBoolType() } +} + +class IntType extends Type { + IntType() { this = any(TypeInferencePlugin p).getIntType() } +} + +class FloatType extends Type { + FloatType() { this = any(TypeInferencePlugin p).getFloatType() } +} + +class StringType extends Type { + StringType() { this = any(TypeInferencePlugin p).getStringType() } +} + +TypeParameter getArrayElementTypeParameter() { + result = any(TypeInferencePlugin p).getArrayElementTypeParameter() +} + +bindingset[fe] +Type getFunctionExprType(FunctionExpr fe) { + result = any(TypeInferencePlugin p).getFunctionExprType(fe) +} + +bindingset[t, arity, i] +TypePath getFunctionExprParameterTypePath(Type t, int arity, int i) { + result = any(TypeInferencePlugin pl).getFunctionExprParameterTypePath(t, arity, i) +} + +TypePath getFunctionExprReturnTypePath(Type t) { + result = any(TypeInferencePlugin pl).getFunctionExprReturnTypePath(t) +} + +class TupleType extends Type { + int arity; + + TupleType() { this = any(TypeInferencePlugin p).getTupleType(arity) } + + int getArity() { result = arity } + + VariableDeclaration getField(string name) { + any(TypeInferencePlugin p).tupleField(this, name, result) + } +} + +class EnumConstructor extends ConstructorDeclaration { + private ClassLikeDeclaration enum; + private Identifier id; + + EnumConstructor() { any(TypeInferencePlugin p).isEnumConstructor(enum, this, id) } + + ClassLikeDeclaration getEnum() { result = enum } + + Identifier getNameNode() { result = id } +} + +class EnumField extends VariableDeclaration { + private ClassLikeDeclaration enum; + + EnumField() { any(TypeInferencePlugin p).isEnumField(enum, this) } + + ClassLikeDeclaration getEnum() { result = enum } +} + +Type inferType(AstNode n, TypePath path) { result = any(TypeInferencePlugin p).inferType(n, path) } + +Callable getFunctionInvoke(Type t) { result = any(TypeInferencePlugin p).getFunctionInvoke(t) } + +bindingset[t, arity, i] +predicate functionInvokeSignature(Type t, int arity, int i, int j, TypePath path) { + any(TypeInferencePlugin p).functionInvokeSignature(t, arity, i, j, path) +} diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePluginSwift.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePluginSwift.qll new file mode 100644 index 000000000000..2ea9ccd4afdc --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePluginSwift.qll @@ -0,0 +1,192 @@ +/** + * Provides Swift-specific type inference logic. + */ +overlay[local?] +module; + +private import Type +private import TypeInference +private import TypeInferencePlugin as Plugin +private import codeql.unified.internal.Builtins + +private class StructType extends ClassLikeDeclarationType { + StructType() { c.getAModifier().getValue() = "struct" } +} + +private class EnumType extends ClassLikeDeclarationType { + EnumType() { c.getAModifier().getValue() = "enum" } +} + +private class BuiltinType extends ClassLikeDeclarationType { + BuiltinType() { this.getClassLikeDeclaration() instanceof BuiltinClassLikeDeclaration } +} + +private class BuiltinStructType extends BuiltinType, StructType { } + +private class BuiltinEnumType extends BuiltinType, EnumType { } + +private class BoolType extends BuiltinStructType { + BoolType() { this.getName() = "Bool" } +} + +private class IntType extends BuiltinStructType { + IntType() { this.getName() = "Int" } +} + +private class DoubleType extends BuiltinStructType { + DoubleType() { this.getName() = "Double" } +} + +private class StringType extends BuiltinStructType { + StringType() { this.getName() = "String" } +} + +private class ArrayType extends BuiltinStructType { + ArrayType() { this.getName() = "Array" } +} + +class FunctionType extends BuiltinStructType { + FunctionType() { this.getName() = "Function" } +} + +class OptionalType extends BuiltinEnumType { + OptionalType() { this.getName() = "Optional" } +} + +pragma[nomagic] +TypeParameter getFunctionArgsTypeParameter() { + result = any(FunctionType t).getPositionalTypeParameter(0) +} + +pragma[nomagic] +TypeParameter getFunctionReturnTypeParameter() { + result = any(FunctionType t).getPositionalTypeParameter(1) +} + +/** Gets the path to a closure's `index`th parameter type, where the arity is `arity`. */ +pragma[nomagic] +private TypePath functionParameterPath(int arity, int index) { + result = + TypePath::cons(getFunctionArgsTypeParameter(), + TypePath::singleton(getTupleTypeParameter(arity, index))) +} + +pragma[nomagic] +private TypePath functionReturnPath() { + result = TypePath::singleton(getFunctionReturnTypeParameter()) +} + +private class TupleType extends BuiltinStructType { + private int arity; + + TupleType() { arity = this.getName().regexpCapture("Tuple([0-9]+)", 1).toInt() } + + int getArity() { result = arity } + + VariableDeclaration getField(string name) { + result = this.getClassLikeDeclaration().getAMember() and + name = result.getPattern().(Identifier).getValue().regexpCapture("\\_(.+)", 1) + } +} + +pragma[nomagic] +TypeParameter getTupleTypeParameter(int arity, int i) { + result = any(TupleType t | t.getArity() = arity).getPositionalTypeParameter(i) +} + +private class Enum extends ClassLikeDeclaration { + Enum() { this.getAModifier().getValue() = "enum" } +} + +private class EnumConstructor extends EnumCaseConstructor { + private Enum e; + + EnumConstructor() { this = e.getAMember().(EnumCaseClass).getConstructor() } + + Identifier getNameNode() { result = this.getEnumCaseClass().getNameNode() } + + Enum getEnum() { result = e } +} + +private class EnumField extends VariableDeclaration { + private Enum e; + + EnumField() { + this = e.getAMember() and + this.getAModifier().getValue() = "enum_case" + } + + Enum getEnum() { result = e } +} + +private predicate inferTypeAlias = inferType/2; + +private class SwiftTypeInferencePlugin extends Plugin::TypeInferencePlugin { + override Type getBoolType() { result instanceof BoolType } + + override Type getIntType() { result instanceof IntType } + + override Type getFloatType() { result instanceof DoubleType } + + override Type getStringType() { result instanceof StringType } + + override TypeParameter getArrayElementTypeParameter() { + result = any(ArrayType t).getPositionalTypeParameter(0) + } + + bindingset[fe] + override Type getFunctionExprType(FunctionExpr fe) { + result instanceof FunctionType and + exists(fe) + } + + bindingset[t] + override TypePath getFunctionExprParameterTypePath(Type t, int arity, int i) { + result = functionParameterPath(arity, i) and exists(t) + } + + bindingset[t] + override TypePath getFunctionExprReturnTypePath(Type t) { + result = functionReturnPath() and exists(t) + } + + pragma[nomagic] + override FunctionDeclaration getFunctionInvoke(Type t) { + result = t.(FunctionType).getClassLikeDeclaration().getAMember() and + result.getName() = "callAsFunction" + } + + bindingset[t, arity, i] + override predicate functionInvokeSignature(Type t, int arity, int i, int j, TypePath path) { + j = 1 and + path = TypePath::singleton(getTupleTypeParameter(arity, i)) and + exists(t) + } + + override Type getTupleType(int arity) { result.(TupleType).getArity() = arity } + + override predicate tupleField(Type tuple, string name, VariableDeclaration field) { + field = tuple.(TupleType).getField(name) + } + + override predicate isEnumConstructor( + ClassLikeDeclaration enum, ConstructorDeclaration case, Identifier i + ) { + case = + any(EnumConstructor ec | + enum = ec.getEnum() and + i = ec.getNameNode() + ) + } + + override predicate isEnumField(ClassLikeDeclaration enum, VariableDeclaration field) { + enum = field.(EnumField).getEnum() + } + + override Type inferType(AstNode n, TypePath path) { + // todo: approximation for now + n instanceof BinaryExpr and + result = inferTypeAlias(n.(BinaryExpr).getLeft(), path) and + result = inferTypeAlias(n.(BinaryExpr).getRight(), path) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll new file mode 100644 index 000000000000..99d12990044b --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll @@ -0,0 +1,192 @@ +private import unified as Unified +private import Type +private import TypeInference +private import TypeInferencePlugin as Plugin +private import codeql.unified.internal.StaticNameBinding +private import codeql.unified.internal.ExprPositions + +final class TypeMention = TypeMentionImpl; + +/** An AST node that mentions a type. */ +abstract private class TypeMentionImpl extends AstNode { + /** + * Gets the type mentioned at `path`. + */ + pragma[nomagic] + abstract Type getTypeAt(TypePath path); + + /** + * Gets the type mentioned at the root of this type mention. + */ + final Type getType() { result = this.getTypeAt(TypePath::nil()) } +} + +private Type resolveType(Identifier access) { + exists(NameBinding b | b = getStaticBindingTargetFromIdentifier(access) | + b = result.(ClassLikeDeclarationType).getClassLikeDeclaration().getNameNode() + or + b = result.(TypeParameterType).getTypeParameter().getNameNode() + ) +} + +final class ExprTypeMention = ExprTypeMentionImpl; + +abstract private class ExprTypeMentionImpl extends TypeMentionImpl, Expr { + ExprTypeMentionImpl() { isInTypeContext(this) } + + pragma[nomagic] + abstract TypePath getTypeArgumentPath(int i); +} + +/** + * A type mention that resolves via an alias (aliases are expanded). + */ +private class AliasExprTypeMention extends ExprTypeMentionImpl { + private TypeAliasDeclaration alias; + + AliasExprTypeMention() { alias.getNameNode() = getStaticBindingTargetFromRef(this) } + + private TypeParameterType getAliasTypeParameter(int i) { + result.getTypeParameter() = alias.getTypeParameter(i) + } + + override TypePath getTypeArgumentPath(int i) { + exists(TypeParameterType tp | + tp = this.getAliasTypeParameter(i) and + tp = alias.getType().(TypeMention).getTypeAt(result) + ) + } + + override Type getTypeAt(TypePath path) { + result = alias.getType().(TypeMention).getTypeAt(path) and + not result = this.getAliasTypeParameter(_) + } +} + +/** + * A type mention that does not resolve via an alias. + */ +private class NonAliasExprTypeMention extends ExprTypeMentionImpl { + NonAliasExprTypeMention() { not this instanceof AliasExprTypeMention } + + private Type getRootType0() { + result = resolveType(this) + or + result = Plugin::getFunctionExprType(this) + or + result.(Plugin::TupleType).getArity() = this.(TupleExpr).getNumberOfElements() + } + + Type getRootType() { + result = this.getRootType0() + or + not exists(this.getRootType0()) and + result instanceof UnknownType + } + + override TypePath getTypeArgumentPath(int i) { + result = TypePath::singleton(this.getRootType().getPositionalTypeParameter(i)) + } + + override Type getTypeAt(TypePath path) { + result = this.getRootType() and + path.isEmpty() + or + exists( + ClassLikeDeclaration c, AssociatedTypeDeclaration a, ClassLikeDeclaration base, + AssociatedTypeParameterType baseTp, string name + | + // protocol Base { + // associatedtype BaseTp + // } + associatedTypeParameterInherited(c, a, base, this, name) and + baseTp = TAssociatedTypeParameterType(base, a, _) + | + // protocol Sub : Base { + // ^^^^ // `BaseTp` is instantiated with `BaseTp (inherited)` + // } + path = TypePath::singleton(baseTp) and + result = TAssociatedTypeParameterType(c, a, true) + or + // struct S : Base { + // ^^^^ // `BaseTp` is instantiated with `String` + // typealias BaseTp = String + // } + exists(TypeAliasDeclaration alias, TypePath suffix | + alias = c.getAMember() and + alias.getName() = name and + path = TypePath::cons(baseTp, suffix) and + result = alias.getType().(TypeMention).getTypeAt(suffix) + ) + ) + or + exists(FunctionExpr fe, Type t, TypePath prefix, TypePath suffix | + this = fe and + t = Plugin::getFunctionExprType(fe) and + path = prefix.append(suffix) + | + exists(int i | + prefix = Plugin::getFunctionExprParameterTypePath(t, fe.getNumberOfParameters(), i) and + result = fe.getParameter(i).getType().(TypeMention).getTypeAt(suffix) + ) + or + prefix = Plugin::getFunctionExprReturnTypePath(t) and + result = fe.getReturnType().(TypeMention).getTypeAt(suffix) + ) + or + this = + any(TupleExpr te | + exists(Plugin::TupleType tt, int i, TypePath suffix | + tt.getArity() = te.getNumberOfElements() and + result = te.getElement(i).getValue().(TypeMention).getTypeAt(suffix) and + path = TypePath::cons(tt.getPositionalTypeParameter(i), suffix) + ) + ) + } +} + +private class GenericTypeExprTypeMention extends TypeMentionImpl, GenericTypeExpr { + private ExprTypeMention base; + + GenericTypeExprTypeMention() { base = this.getBase() } + + pragma[nomagic] + private Type getTypeArgumentAt(int i, TypePath path) { + result = this.getTypeArgument(i).(TypeMention).getTypeAt(path) + } + + override Type getTypeAt(TypePath path) { + result = base.getTypeAt(path) + or + exists(int i, TypePath prefix, TypePath suffix | + prefix = base.getTypeArgumentPath(i) and + result = this.getTypeArgumentAt(i, suffix) and + path = prefix.append(suffix) + ) + } +} + +/** A class declaration mentions itself. */ +private class ClassLikeDeclarationTypeMention extends TypeMentionImpl, Identifier { + private ClassLikeDeclaration c; + + ClassLikeDeclarationTypeMention() { this = c.getNameNode() } + + ClassLikeDeclarationType getRootType() { c = result.getClassLikeDeclaration() } + + ClassLikeDeclaration getClassLikeDeclaration() { result = c } + + override Type getTypeAt(TypePath path) { + result = this.getRootType() and + path.isEmpty() + or + result = this.getRootType().getATypeParameter() and + path = TypePath::singleton(result) + } +} + +TypeMention getClassLikeDeclarationTypeMention(ClassLikeDeclaration c) { + result = c.getNameNode() + or + result = c.getExtensionTarget() +} diff --git a/unified/ql/lib/codeql/unified/printAst.qll b/unified/ql/lib/codeql/unified/printAst.qll index 93ff11f5c8b1..06dc4de34ca1 100644 --- a/unified/ql/lib/codeql/unified/printAst.qll +++ b/unified/ql/lib/codeql/unified/printAst.qll @@ -49,9 +49,11 @@ private string reorderName(string name) { } class PrintAstNode extends AstNode { + PrintAstNode() { shouldPrintNode(this) } + final int getOrder() { this = - rank[result](AstNode parent, AstNode child, string name, int i | + rank[result](PrintAstNode parent, PrintAstNode child, string name, int i | child = PrintAst::getChild(parent, name, i) | child order by reorderName(name), i @@ -70,10 +72,7 @@ class PrintAstNode extends AstNode { * Holds if `node` belongs to the output tree, and its property `key` has the * given `value`. */ -query predicate nodes(PrintAstNode node, string key, string value) { - shouldPrintNode(node) and - value = node.getProperty(key) -} +query predicate nodes(PrintAstNode node, string key, string value) { value = node.getProperty(key) } /** * Holds if `target` is a child of `source` in the AST, and property `key` of diff --git a/unified/ql/lib/ext/legacy-swift.model.yml b/unified/ql/lib/ext/legacy-swift.model.yml new file mode 100644 index 000000000000..1c69c303c757 --- /dev/null +++ b/unified/ql/lib/ext/legacy-swift.model.yml @@ -0,0 +1,1187 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: legacySourceModel + data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance + - ["", "String", true, "count", "", "", "", "string-length", "manual"] + - ["", "String", true, "init(contentsOf:)", "(URL)", "", "ReturnValue", "remote", "manual"] + - ["", "String", true, "init(contentsOfFile:)", "(String)", "", "ReturnValue", "local", "manual"] + - ["", "String", true, "init(contentsOf:encoding:)", "(URL,String.Encoding)", "", "ReturnValue", "remote", "manual"] + - ["", "String", true, "init(contentsOfFile:encoding:)", "(String,String.Encoding)", "", "ReturnValue", "local", "manual"] + - ["", "String", true, "init(contentsOf:usedEncoding:)", "(URL,String.Encoding)", "", "ReturnValue", "remote", "manual"] + - ["", "String", true, "init(contentsOfFile:usedEncoding:)", "(String,String.Encoding)", "", "ReturnValue", "local", "manual"] + - ["", "", false, "SecKeyCopyExternalRepresentation(_:_:)", "", "", "ReturnValue", "sensitive-password", "manual"] + - ["", "URL", true, "lines", "", "", "", "remote", "manual"] + - ["", "URL", true, "resourceBytes", "", "", "", "remote", "manual"] + - ["", "UITextField", true, "text", "", "", "", "local", "manual"] + - ["", "UITextField", true, "attributedText", "", "", "", "local", "manual"] + - ["", "DataResponse", true, "value", "", "", "", "remote", "manual"] + - ["", "DataResponse", true, "result", "", "", "", "remote", "manual"] + - ["", "DataResponse", true, "data", "", "", "", "remote", "manual"] + - ["", "URL.AsyncBytes", true, "lines", "", "", "", "remote", "manual"] + - ["", "DownloadResponse", true, "value", "", "", "", "remote", "manual"] + - ["", "DownloadResponse", true, "result", "", "", "", "remote", "manual"] + - ["", "DownloadResponse", true, "data", "", "", "", "remote", "manual"] + - ["", "JSContext", true, "globalObject", "", "", "", "remote", "manual"] + - ["", "JSContext", true, "objectForKeyedSubscript(_:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "JSContext", true, "objectAtIndexedSubscript(_:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "UITextInput", true, "text(in:)", "", "", "ReturnValue", "local", "manual"] + - ["", "UITextInput", true, "shouldChangeText(in:replacementText:)", "", "", "Parameter[replacementText:]", "local", "manual"] + - ["", "NSData", true, "init(contentsOf:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "NSData", true, "init(contentsOf:options:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "NSString", true, "length", "", "", "", "nsstring-length", "manual"] + - ["", "NSString", true, "init(contentsOf:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "NSString", true, "init(contentsOfFile:)", "", "", "ReturnValue", "local", "manual"] + - ["", "NSString", true, "string(withContentsOf:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "NSString", true, "init(contentsOf:encoding:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "NSString", true, "string(withContentsOfFile:)", "", "", "ReturnValue", "local", "manual"] + - ["", "NSString", true, "init(contentsOfFile:encoding:)", "", "", "ReturnValue", "local", "manual"] + - ["", "NSString", true, "init(contentsOf:usedEncoding:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "NSString", true, "init(contentsOfFile:usedEncoding:)", "", "", "ReturnValue", "local", "manual"] + - ["", "FileManager", true, "contents(atPath:)", "", "", "ReturnValue", "local", "manual"] + - ["", "Data", true, "init(contentsOf:options:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "Data", true, "init(contentsOf:)", "", "", "ReturnValue", "remote", "manual"] + - ["", "UISceneDelegate", true, "scene(_:continue:)", "", "", "Parameter[continue:]", "remote", "manual"] + - ["", "UISceneDelegate", true, "scene(_:didUpdate:)", "", "", "Parameter[didUpdate:]", "remote", "manual"] + - ["", "UISceneDelegate", true, "scene(_:openURLContexts:)", "", "", "Parameter[openURLContexts:]", "remote", "manual"] + - ["", "UISceneDelegate", true, "scene(_:options:willConnectTo:)", "", "", "Parameter[options:]", "remote", "manual"] + - ["", "UIApplicationDelegate", true, "application(_:handleOpen:)", "", "", "Parameter[handleOpen:]", "remote", "manual"] + - ["", "UIApplicationDelegate", true, "application(_:open:options:)", "", "", "Parameter[open:]", "remote", "manual"] + - ["", "UIApplicationDelegate", true, "application(_:annotation:open:sourceApplication:)", "", "", "Parameter[open:]", "remote", "manual"] + - ["", "WKScriptMessageHandler", true, "userContentController(_:didReceive:)", "", "", "Parameter[didReceive:]", "remote", "manual"] + - ["", "UITextViewDelegate", true, "textView(_:replacementText:shouldChangeTextIn:)", "", "", "Parameter[replacementText:]", "local", "manual"] + - ["", "UITextFieldDelegate", true, "textField(_:replacementString:shouldChangeCharactersIn:)", "", "", "Parameter[replacementString:]", "local", "manual"] + - ["", "NSMutableString", true, "length", "", "", "", "nsstring-length", "manual"] + - addsTo: + pack: codeql/unified-all + extensible: legacySinkModel + data: # namespace, type, subtypes, name, signature, ext, input, kind, provenance + - ["", "String", true, "index(_:offsetBy:)", "", "", "Argument[0,offsetBy:]", "string-length", "manual"] + - ["", "String", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] + - ["", "String", true, "init(contentsOfFile:encoding:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] + - ["", "String", true, "init(contentsOfFile:usedEncoding:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] + - ["", "String", true, "index(_:limitBy:offsetBy:)", "", "", "Argument[0,offsetBy:]", "string-length", "manual"] + - ["", "String", true, "md5()", "", "", "Argument[self]", "weak-hash-input-MD5", "manual"] + - ["", "String", true, "sha1()", "", "", "Argument[self]", "weak-hash-input-SHA1", "manual"] + - ["", "String", true, "sha2(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA2", "manual"] + - ["", "String", true, "sha224()", "", "", "Argument[self]", "weak-password-hash-input-SHA224", "manual"] + - ["", "String", true, "sha256()", "", "", "Argument[self]", "weak-password-hash-input-SHA256", "manual"] + - ["", "String", true, "sha3(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA3", "manual"] + - ["", "String", true, "sha384()", "", "", "Argument[self]", "weak-password-hash-input-SHA384", "manual"] + - ["", "String", true, "sha512()", "", "", "Argument[self]", "weak-password-hash-input-SHA512", "manual"] + - ["", "Array", true, "md5()", "", "", "Argument[self]", "weak-hash-input-MD5", "manual"] + - ["", "Array", true, "sha1()", "", "", "Argument[self]", "weak-hash-input-SHA1", "manual"] + - ["", "Array", true, "sha2(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA2", "manual"] + - ["", "Array", true, "sha224()", "", "", "Argument[self]", "weak-password-hash-input-SHA224", "manual"] + - ["", "Array", true, "sha256()", "", "", "Argument[self]", "weak-password-hash-input-SHA256", "manual"] + - ["", "Array", true, "sha3(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA3", "manual"] + - ["", "Array", true, "sha384()", "", "", "Argument[self]", "weak-password-hash-input-SHA384", "manual"] + - ["", "Array", true, "sha512()", "", "", "Argument[self]", "weak-password-hash-input-SHA512", "manual"] + - ["", "String.Index", true, "init(encodedOffset:)", "", "", "Argument[encodedOffset:]", "string-length", "manual"] + - ["", "Regex", true, "init(_:)", "", "", "Argument[0]", "regex-use", "manual"] + - ["", "Regex", true, "init(_:as:)", "", "", "Argument[0]", "regex-use", "manual"] + - ["", "", false, "assert(_:_:file:line:)", "", "", "Argument[1]", "log-injection", "manual"] + - ["", "", false, "precondition(_:_:file:line:)", "", "", "Argument[1]", "log-injection", "manual"] + - ["", "", false, "assertionFailure(_:file:line:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "", false, "preconditionFailure(_:file:line:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "", false, "fatalError(_:file:line:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "", false, "dump(_:indent:maxDepth:maxItems:name:)", "", "", "Argument[0,name:]", "log-injection", "manual"] + - ["", "", false, "print(_:separator:terminator:)", "", "", "Argument[0,separator:,terminator:]", "log-injection", "manual"] + - ["", "", false, "debugPrint(_:separator:terminator:)", "", "", "Argument[0,separator:,terminator:]", "log-injection", "manual"] + - ["", "", false, "NSMakeRange(_:_:)", "", "", "Argument[0,1]", "nsstring-length", "manual"] + - ["", "", false, "sqlite3_key(_:_:_:)", "", "", "Argument[1]", "encryption-key", "manual"] + - ["", "", false, "sqlite3_key_v2(_:_:_:_:)", "", "", "Argument[2]", "encryption-key", "manual"] + - ["", "", false, "sqlite3_rekey(_:_:_:)", "", "", "Argument[1]", "encryption-key", "manual"] + - ["", "", false, "sqlite3_rekey_v2(_:_:_:_:)", "", "", "Argument[2]", "encryption-key", "manual"] + - ["", "", false, "NSLog(_:_:)", "", "", "Argument[0,1]", "log-injection", "manual"] + - ["", "", false, "NSLogv(_:_:)", "", "", "Argument[0,1]", "log-injection", "manual"] + - ["", "", false, "os_log(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "", false, "os_log(_:_:_:dso:log:)", "", "", "Argument[0,2]", "log-injection", "manual"] + - ["", "", false, "os_log(_:_:dso:log:type:)", "", "", "Argument[0,1]", "log-injection", "manual"] + - ["", "", false, "os_log(_:_:log:)", "", "", "Argument[1]", "log-injection", "manual"] + - ["", "", false, "print(_:separator:terminator:toStream:)", "", "", "Argument[0,separator:,terminator:]", "log-injection", "manual"] + - ["", "", false, "vfprintf(_:_:_:)", "", "", "Argument[1,2]", "log-injection", "manual"] + - ["", "", false, "sqlite3_bind_blob(_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_bind_blob64(_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_bind_double(_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_bind_int(_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_bind_int64(_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_bind_pointer(_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_bind_text(_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_bind_text16(_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_bind_text64(_:_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_bind_value(_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] + - ["", "", false, "sqlite3_exec(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "", false, "sqlite3_prepare(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "", false, "sqlite3_prepare16(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "", false, "sqlite3_prepare16_v2(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "", false, "sqlite3_prepare16_v3(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "", false, "sqlite3_prepare_v2(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "", false, "sqlite3_prepare_v3(_:_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "", false, "sqlite3_database_file_object(_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "", false, "sqlite3_filename_database(_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "", false, "sqlite3_filename_journal(_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "", false, "sqlite3_filename_wal(_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "", false, "sqlite3_free_filename(_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "", false, "sqlite3_open(_:_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "", false, "sqlite3_open16(_:_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "", false, "sqlite3_open_v2(_:_:_:_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "NSData", true, "init(contentsOf:)", "", "", "Argument[contentsOf:]", "path-injection", "manual"] + - ["", "NSData", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] + - ["", "NSData", true, "init(contentsOf:options:)", "", "", "Argument[contentsOf:]", "path-injection", "manual"] + - ["", "NSData", true, "dataWithContentsOfMappedFile(_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "NSData", true, "init(contentsOfFile:options:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] + - ["", "NSData", true, "init(contentsOfMappedFile:)", "", "", "Argument[contentsOfMappedFile:]", "path-injection", "manual"] + - ["", "NSData", true, "write(options:to:)", "", "", "Argument[to:]", "path-injection", "manual"] + - ["", "NSData", true, "write(atomically:to:)", "", "", "Argument[to:]", "path-injection", "manual"] + - ["", "NSData", true, "write(atomically:toFile:)", "", "", "Argument[toFile:]", "path-injection", "manual"] + - ["", "NSData", true, "write(options:toFile:)", "", "", "Argument[toFile:]", "path-injection", "manual"] + - ["", "NSString", true, "character(at:)", "", "", "Argument[at:]", "nsstring-length", "manual"] + - ["", "NSString", true, "init(contentsOfFile:encoding:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] + - ["", "NSString", true, "init(contentsOfFile:usedEncoding:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] + - ["", "NSString", true, "substring(from:)", "", "", "Argument[from:]", "nsstring-length", "manual"] + - ["", "NSString", true, "substring(to:)", "", "", "Argument[to:]", "nsstring-length", "manual"] + - ["", "NSString", true, "write(atomically:encoding:to:)", "", "", "Argument[to:]", "path-injection", "manual"] + - ["", "NSString", true, "write(atomically:encoding:toFile:)", "", "", "Argument[toFile:]", "path-injection", "manual"] + - ["", "FileManager", true, "contents(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "unzipItem(at:pathEncoding:progress:skipCRC32:to:)", "", "", "Argument[at:]", "unsafe-unpack", "manual"] + - ["", "FileManager", true, "attributesOfItem(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "changeCurrentDirectoryPath(_:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "FileManager", true, "changeFileAttributes(_:atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "contentsEqual(andPath:atPath:)", "", "", "Argument[atPath:,andPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "contentsOfDirectory(at:includingPropertiesForKeys:options:)", "", "", "Argument[at:]", "path-injection", "manual"] + - ["", "FileManager", true, "contentsOfDirectory(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "copyItem(at:to:)", "", "", "Argument[at:,to:]", "path-injection", "manual"] + - ["", "FileManager", true, "copyItem(atPath:toPath:)", "", "", "Argument[atPath:,toPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "createDirectory(at:attributes:withIntermediateDirectories:)", "", "", "Argument[at:]", "path-injection", "manual"] + - ["", "FileManager", true, "createDirectory(atPath:attributes:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "createDirectory(atPath:attributes:withIntermediateDirectories:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "createFile(atPath:attributes:contents:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "createSymbolicLink(at:withDestinationURL:)", "", "", "Argument[at:,withDestinationURL:]", "path-injection", "manual"] + - ["", "FileManager", true, "createSymbolicLink(atPath:pathContent:)", "", "", "Argument[atPath:,pathContent:]", "path-injection", "manual"] + - ["", "FileManager", true, "createSymbolicLink(atPath:withDestinationPath:)", "", "", "Argument[atPath:,withDestinationPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "destinationOfSymbolicLink(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "directoryContents(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "enumerator(at:errorHandler:includingPropertiesForKeys:options:)", "", "", "Argument[at:]", "path-injection", "manual"] + - ["", "FileManager", true, "enumerator(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "fileAttributes(atPath:traverseLink:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "fileExists(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "fileExists(atPath:isDirectory:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "linkItem(at:to:)", "", "", "Argument[at:,to:]", "path-injection", "manual"] + - ["", "FileManager", true, "linkItem(atPath:toPath:)", "", "", "Argument[atPath:,toPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "moveItem(at:to:)", "", "", "Argument[at:,to:]", "path-injection", "manual"] + - ["", "FileManager", true, "moveItem(atPath:toPath:)", "", "", "Argument[atPath:,toPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "pathContentOfSymbolicLink(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "removeItem(at:)", "", "", "Argument[at:]", "path-injection", "manual"] + - ["", "FileManager", true, "removeItem(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "replaceItem(at:backupItemName:options:resultingItemURL:withItemAt:)", "", "", "Argument[at:,withItemAt:]", "path-injection", "manual"] + - ["", "FileManager", true, "replaceItemAt(_:backupItemName:options:withItemAt:)", "", "", "Argument[0,withItemAt:]", "path-injection", "manual"] + - ["", "FileManager", true, "replaceItemAtURL(backupItemName:options:originalItemURL:withItemAtURL:)", "", "", "Argument[originalItemURL:,withItemAtURL:]", "path-injection", "manual"] + - ["", "FileManager", true, "setAttributes(_:ofItemAtPath:)", "", "", "Argument[ofItemAtPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "subpaths(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "subpathsOfDirectory(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] + - ["", "FileManager", true, "trashItem(at:resultingItemURL:)", "", "", "Argument[at:]", "path-injection", "manual"] + - ["", "FileManager", true, "unmountVolume(at:completionHandler:options:)", "", "", "Argument[at:]", "path-injection", "manual"] + - ["", "Data", true, "init(contentsOf:options:)", "", "", "Argument[contentsOf:]", "path-injection", "manual"] + - ["", "Data", true, "md5()", "", "", "Argument[self]", "weak-hash-input-MD5", "manual"] + - ["", "Data", true, "sha1()", "", "", "Argument[self]", "weak-hash-input-SHA1", "manual"] + - ["", "Data", true, "sha2(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA2", "manual"] + - ["", "Data", true, "sha224()", "", "", "Argument[self]", "weak-password-hash-input-SHA224", "manual"] + - ["", "Data", true, "sha256()", "", "", "Argument[self]", "weak-password-hash-input-SHA256", "manual"] + - ["", "Data", true, "sha3(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA3", "manual"] + - ["", "Data", true, "sha384()", "", "", "Argument[self]", "weak-password-hash-input-SHA384", "manual"] + - ["", "Data", true, "sha512()", "", "", "Argument[self]", "weak-password-hash-input-SHA512", "manual"] + - ["", "Data", true, "write(options:to:)", "", "", "Argument[to:]", "path-injection", "manual"] + - ["", "NSMutableString", true, "insert(_:at:)", "", "", "Argument[at:]", "nsstring-length", "manual"] + - ["", "NSMutableString", true, "character(at:)", "", "", "Argument[at:]", "nsstring-length", "manual"] + - ["", "NSMutableString", true, "substring(from:)", "", "", "Argument[from:]", "nsstring-length", "manual"] + - ["", "NSMutableString", true, "substring(to:)", "", "", "Argument[to:]", "nsstring-length", "manual"] + - ["", "AES", true, "init(blockMode:key:)", "", "", "Argument[blockMode:]", "encryption-block-mode", "manual"] + - ["", "AES", true, "init(blockMode:key:padding:)", "", "", "Argument[blockMode:]", "encryption-block-mode", "manual"] + - ["", "NSPredicate", true, "init(_:format:)", "", "", "Argument[format:]", "predicate-injection", "manual"] + - ["", "NSPredicate", true, "init(arguments:format:)", "", "", "Argument[format:]", "predicate-injection", "manual"] + - ["", "NSPredicate", true, "init(argumentArray:format:)", "", "", "Argument[format:]", "predicate-injection", "manual"] + - ["", "NSPredicate", true, "init(fromMetadataQueryString:)", "", "", "Argument[fromMetadataQueryString:]", "predicate-injection", "manual"] + - ["", "NSRegularExpression", true, "init(options:pattern:)", "", "", "Argument[pattern:]", "regex-use", "manual"] + - ["", "Blowfish", true, "init(blockMode:key:padding:)", "", "", "Argument[blockMode:]", "encryption-block-mode", "manual"] + - ["", "URLSessionConfiguration", false, "tlsMaximumSupportedProtocol", "", "", "PostUpdate", "tls-protocol-version", "manual"] + - ["", "URLSessionConfiguration", false, "tlsMinimumSupportedProtocol", "", "", "PostUpdate", "tls-protocol-version", "manual"] + - ["", "URLSessionConfiguration", false, "tlsMaximumSupportedProtocolVersion", "", "", "PostUpdate", "tls-protocol-version", "manual"] + - ["", "URLSessionConfiguration", false, "tlsMinimumSupportedProtocolVersion", "", "", "PostUpdate", "tls-protocol-version", "manual"] + - ["", "NWConnection", true, "send(completion:content:contentContext:isComplete:)", "", "", "Argument[content:]", "transmission", "manual"] + - ["", "Zip", true, "unzipFile(_:destination:fileOutputHandler:overwrite:password:progress:)", "", "", "Argument[0]", "unsafe-unpack", "manual"] + - ["", "NSRange", true, "init(length:location:)", "", "", "Argument[location:,length:]", "nsstring-length", "manual"] + - ["", "NSUserScriptTask", true, "init(url:)", "", "", "Argument[url:]", "command-injection", "manual"] + - ["", "NSUserUnixTask", true, "execute(completionHandler:withArguments:)", "", "", "Argument[withArguments:]", "command-injection", "manual"] + - ["", "Process", true, "arguments", "", "", "PostUpdate", "command-injection", "manual"] + - ["", "Process", true, "currentDirectory", "", "", "PostUpdate", "command-injection", "manual"] + - ["", "Process", true, "currentDirectoryPath", "", "", "PostUpdate", "command-injection", "manual"] + - ["", "Process", true, "environment", "", "", "PostUpdate", "command-injection", "manual"] + - ["", "Process", true, "executableURL", "", "", "PostUpdate", "command-injection", "manual"] + - ["", "Process", true, "launchPath", "", "", "PostUpdate", "command-injection", "manual"] + - ["", "Process", true, "launchedProcess(arguments:launchPath:)", "", "", "Argument[launchPath:,arguments:]", "command-injection", "manual"] + - ["", "Process", true, "run(_:arguments:terminationHandler:)", "", "", "Argument[0,arguments:]", "command-injection", "manual"] + - ["", "Process", true, "standardError", "", "", "PostUpdate", "command-injection", "manual"] + - ["", "Process", true, "standardInput", "", "", "PostUpdate", "command-injection", "manual"] + - ["", "Process", true, "standardOutput", "", "", "PostUpdate", "command-injection", "manual"] + - ["", "Connection", true, "key(_:db:)", "", "", "Argument[0]", "encryption-key", "manual"] + - ["", "Connection", true, "keyAndMigrate(_:db:)", "", "", "Argument[0]", "encryption-key", "manual"] + - ["", "Connection", true, "rekey(_:db:)", "", "", "Argument[0]", "encryption-key", "manual"] + - ["", "Connection", true, "sqlcipher_export(_:key:)", "", "", "Argument[key:]", "encryption-key", "manual"] + - ["", "Connection", true, "execute(_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "Connection", true, "prepare(_:_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "Connection", true, "prepare(_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "Connection", true, "run(_:_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "Connection", true, "run(_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "Connection", true, "scalar(_:_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "Connection", true, "scalar(_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "Connection", true, "init(_:readonly:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "Connection.Location", true, "uri(_:parameters:)", "", "", "Argument[0]", "path-injection", "manual"] + - ["", "Database", true, "changePassphrase(_:)", "", "", "Argument[0]", "encryption-key", "manual"] + - ["", "Database", true, "usePassphrase(_:)", "", "", "Argument[0]", "encryption-key", "manual"] + - ["", "Database", true, "allStatements(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "Database", true, "execute(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "Database", true, "init(configuration:description:path:)", "", "", "Argument[path:]", "path-injection", "manual"] + - ["", "Realm.Configuration", true, "encryptionKey", "", "", "PostUpdate", "encryption-key", "manual"] + - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[fileURL:]", "path-injection", "manual"] + - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[encryptionKey:]", "encryption-key", "manual"] + - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:seedFilePath:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[fileURL:]", "path-injection", "manual"] + - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:seedFilePath:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[encryptionKey:]", "encryption-key", "manual"] + - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:seedFilePath:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[seedFilePath:]", "path-injection", "manual"] + - ["", "Realm.Configuration", true, "fileURL", "", "", "PostUpdate", "path-injection", "manual"] + - ["", "Realm.Configuration", true, "seedFilePath", "", "", "PostUpdate", "path-injection", "manual"] + - ["", "Digest", true, "md5(_:)", "", "", "Argument[0]", "weak-hash-input-MD5", "manual"] + - ["", "Digest", true, "sha1(_:)", "", "", "Argument[0]", "weak-hash-input-SHA1", "manual"] + - ["", "Digest", true, "sha2(_:variant:)", "", "", "Argument[0]", "weak-password-hash-input-SHA2", "manual"] + - ["", "Digest", true, "sha224(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA224", "manual"] + - ["", "Digest", true, "sha256(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA256", "manual"] + - ["", "Digest", true, "sha3(_:variant:)", "", "", "Argument[0]", "weak-password-hash-input-SHA3", "manual"] + - ["", "Digest", true, "sha384(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA384", "manual"] + - ["", "Digest", true, "sha512(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA512", "manual"] + - ["", "Insecure.MD5", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-hash-input-MD5", "manual"] + - ["", "Insecure.MD5", true, "hash(data:)", "", "", "Argument[data:]", "weak-hash-input-MD5", "manual"] + - ["", "Insecure.MD5", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-hash-input-MD5", "manual"] + - ["", "Insecure.MD5", true, "update(data:)", "", "", "Argument[data:]", "weak-hash-input-MD5", "manual"] + - ["", "Insecure.SHA1", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-hash-input-SHA1", "manual"] + - ["", "Insecure.SHA1", true, "hash(data:)", "", "", "Argument[data:]", "weak-hash-input-SHA1", "manual"] + - ["", "Insecure.SHA1", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-hash-input-SHA1", "manual"] + - ["", "Insecure.SHA1", true, "update(data:)", "", "", "Argument[data:]", "weak-hash-input-SHA1", "manual"] + - ["", "MD5", true, "callAsFunction(_:)", "", "", "Argument[0]", "weak-hash-input-MD5", "manual"] + - ["", "MD5", true, "calculate(for:)", "", "", "Argument[for:]", "weak-hash-input-MD5", "manual"] + - ["", "MD5", true, "process(block:currentHash:)", "", "", "Argument[block:]", "weak-hash-input-MD5", "manual"] + - ["", "MD5", true, "update(isLast:withBytes:)", "", "", "Argument[withBytes:]", "weak-hash-input-MD5", "manual"] + - ["", "SHA1", true, "callAsFunction(_:)", "", "", "Argument[0]", "weak-hash-input-SHA1", "manual"] + - ["", "SHA1", true, "calculate(for:)", "", "", "Argument[for:]", "weak-hash-input-SHA1", "manual"] + - ["", "SHA1", true, "process(block:currentHash:)", "", "", "Argument[block:]", "weak-hash-input-SHA1", "manual"] + - ["", "SHA1", true, "update(isLast:withBytes:)", "", "", "Argument[withBytes:]", "weak-hash-input-SHA1", "manual"] + - ["", "Logger", true, "warning(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "Logger", true, "error(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "Logger", true, "critical(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "Logger", true, "debug(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "Logger", true, "fault(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "Logger", true, "info(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "Logger", true, "log(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "Logger", true, "log(_:level:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "Logger", true, "notice(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "Logger", true, "trace(_:)", "", "", "Argument[0]", "log-injection", "manual"] + - ["", "NSException", true, "init(name:reason:userInfo:)", "", "", "Argument[reason:]", "log-injection", "manual"] + - ["", "NSException", true, "raise(_:arguments:format:)", "", "", "Argument[format:,arguments:]", "log-injection", "manual"] + - ["", "SHA256", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA256", "manual"] + - ["", "SHA256", true, "hash(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA256", "manual"] + - ["", "SHA256", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA256", "manual"] + - ["", "SHA256", true, "update(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA256", "manual"] + - ["", "SHA2", true, "callAsFunction(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA2", "manual"] + - ["", "SHA2", true, "calculate(for:)", "", "", "Argument[for:]", "weak-password-hash-input-SHA2", "manual"] + - ["", "SHA2", true, "update(isLast:withBytes:)", "", "", "Argument[withBytes:]", "weak-password-hash-input-SHA2", "manual"] + - ["", "SHA2", true, "process32(block:currentHash:)", "", "", "Argument[block:]", "weak-password-hash-input-SHA2", "manual"] + - ["", "SHA2", true, "process64(block:currentHash:)", "", "", "Argument[block:]", "weak-password-hash-input-SHA2", "manual"] + - ["", "SHA384", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA384", "manual"] + - ["", "SHA384", true, "hash(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA384", "manual"] + - ["", "SHA384", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA384", "manual"] + - ["", "SHA384", true, "update(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA384", "manual"] + - ["", "SHA3", true, "callAsFunction(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA2", "manual"] + - ["", "SHA3", true, "calculate(for:)", "", "", "Argument[for:]", "weak-password-hash-input-SHA2", "manual"] + - ["", "SHA3", true, "process(block:currentHash:)", "", "", "Argument[block:]", "weak-password-hash-input-SHA2", "manual"] + - ["", "SHA3", true, "update(isLast:withBytes:)", "", "", "Argument[withBytes:]", "weak-password-hash-input-SHA2", "manual"] + - ["", "SHA512", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA512", "manual"] + - ["", "SHA512", true, "hash(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA512", "manual"] + - ["", "SHA512", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA512", "manual"] + - ["", "SHA512", true, "update(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA512", "manual"] + - ["", "CommonTableExpression", true, "init(arguments:columns:named:recursive:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "DatabaseValueConvertible", true, "fetchAll(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "DatabaseValueConvertible", true, "fetchCursor(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "DatabaseValueConvertible", true, "fetchOne(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "DatabaseValueConvertible", true, "fetchSet(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "FetchableRecord", true, "fetchAll(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "FetchableRecord", true, "fetchCursor(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "FetchableRecord", true, "fetchOne(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "FetchableRecord", true, "fetchSet(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "FetchableRecord", true, "fetchAll(_:adapter:arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "FetchableRecord", true, "fetchCursor(_:adapter:arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "FetchableRecord", true, "fetchOne(_:adapter:arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "FetchableRecord", true, "fetchSet(_:adapter:arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "QueryType", true, "insert(_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "QueryType", true, "update(_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "QueryType", true, "insert(_:_:)", "", "", "Argument[0,1]", "database-store", "manual"] + - ["", "QueryType", true, "insert(_:or:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "QueryType", true, "insertMany(_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "QueryType", true, "insertMany(_:or:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "QueryType", true, "update(_:_:)", "", "", "Argument[0,1]", "database-store", "manual"] + - ["", "QueryType", true, "update(_:or:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "QueryType", true, "upsert(_:onConflictOf:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "QueryType", true, "upsert(_:onConflictOf:setValues:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "QueryType", true, "upsert(_:onConflictOf:setValues:)", "", "", "Argument[setValues:]", "database-store", "manual"] + - ["", "Row", true, "fetchAll(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "Row", true, "fetchCursor(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "Row", true, "fetchOne(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "Row", true, "fetchSet(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "SQL", true, "append(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "SQL", true, "init(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "SQLRequest", true, "init(adapter:arguments:cached:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "SQLStatementCursor", true, "init(arguments:database:prepFlags:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "Statement", true, "init(_:_:)", "", "", "Argument[1]", "database-store", "manual"] + - ["", "Statement", true, "scalar(_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "Statement", true, "bind(_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "Statement", true, "execute(arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "Statement", true, "run(_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "Statement", true, "setArguments(_:)", "", "", "Argument[0]", "database-store", "manual"] + - ["", "TableRecord", true, "filter(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "TableRecord", true, "order(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "TableRecord", true, "select(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "TableRecord", true, "select(arguments:as:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] + - ["", "ArchiveByteStream", true, "fileStream(automaticClose:fd:)", "", "", "Argument[fd:]", "path-injection", "manual"] + - ["", "ArchiveByteStream", true, "fileStream(mode:options:path:permissions:)", "", "", "Argument[path:]", "path-injection", "manual"] + - ["", "ArchiveByteStream", true, "withFileStream(_:automaticClose:fd:)", "", "", "Argument[fd:]", "path-injection", "manual"] + - ["", "ArchiveByteStream", true, "withFileStream(_:mode:options:path:permissions:)", "", "", "Argument[path:]", "path-injection", "manual"] + - ["", "Bundle", true, "init(url:)", "", "", "Argument[url:]", "path-injection", "manual"] + - ["", "Bundle", true, "init(path:)", "", "", "Argument[path:]", "path-injection", "manual"] + - ["", "DatabasePool", true, "init(configuration:path:)", "", "", "Argument[path:]", "path-injection", "manual"] + - ["", "DatabaseQueue", true, "init(configuration:path:)", "", "", "Argument[path:]", "path-injection", "manual"] + - ["", "DatabaseSnapshotPool", true, "init(configuration:path:)", "", "", "Argument[path:]", "path-injection", "manual"] + - ["", "NIOFileHandle", true, "init(path:)", "", "", "Argument[path:]", "path-injection", "manual"] + - ["", "NIOFileHandle", true, "init(descriptor:)", "", "", "Argument[descriptor:]", "path-injection", "manual"] + - ["", "NIOFileHandle", true, "init(flags:mode:path:)", "", "", "Argument[path:]", "path-injection", "manual"] + - ["", "NSKeyedUnarchiver", true, "unarchiveObject(withFile:)", "", "", "Argument[withFile:]", "path-injection", "manual"] + - ["", "SerializedDatabase", true, "init(configuration:defaultLabel:path:purpose:)", "", "", "Argument[path:]", "path-injection", "manual"] + - addsTo: + pack: codeql/unified-all + extensible: legacySummaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + - ["", "UnsafeMutableRawPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeMutableRawPointer", true, "init(_:)", "", "", "Argument[0].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] + - ["", "UnsafeMutableRawPointer", true, "init(mutating:)", "", "", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeMutableRawPointer", true, "init(mutating:)", "", "", "Argument[mutating:].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] + - ["", "UnsafeMutableRawPointer", true, "storeBytes(as:of:toByteOffset:)", "", "", "Argument[of:]", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "UnsafeMutableRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "bindMemory(capacity:to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "alignedDown(toMultipleOf:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "alignedUp(toMultipleOf:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "alignedDown(for:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "alignedUp(for:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "moveInitializeMemory(as:count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "moveInitializeMemory(as:count:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:count:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:count:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:count:repeating:)", "", "", "Argument[repeating:]", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:to:)", "", "", "Argument[to:]", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "copyBytes(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "copyMemory(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:at:count:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:at:count:to:)", "", "", "Argument[to:]", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsignedInteger", true, "init(exactly:)", "", "", "Argument[exactly:]", "ReturnValue.OptionalSome", "value", "manual"] + - ["", "UnsignedInteger", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "FixedWidthInteger", true, "init(littleEndian:)", "", "", "Argument[littleEndian:]", "ReturnValue", "taint", "manual"] + - ["", "FixedWidthInteger", true, "init(bigEndian:)", "", "", "Argument[bigEndian:]", "ReturnValue", "taint", "manual"] + - ["", "FixedWidthInteger", true, "dividingFullWidth(_:)", "", "", "Argument[self]", "ReturnValue.TupleElement[0,1]", "taint", "manual"] + - ["", "FixedWidthInteger", true, "dividingFullWidth(_:)", "", "", "Argument[1].TupleElement[0,1]", "ReturnValue.TupleElement[0,1]", "taint", "manual"] + - ["", "FixedWidthInteger", true, "multipliedFullWidth(by:)", "", "", "Argument[self,by:]", "ReturnValue.TupleElement[0,1]", "taint", "manual"] + - ["", "FixedWidthInteger", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "FixedWidthInteger", true, "remainderReportingOverflow(dividingBy:)", "", "", "Argument[self,dividingBy:]", "ReturnValue.TupleElement[0]", "taint", "manual"] + - ["", "FixedWidthInteger", true, "dividedReportingOverflow(by:)", "", "", "Argument[self,by:]", "ReturnValue.TupleElement[0]", "taint", "manual"] + - ["", "FixedWidthInteger", true, "multipliedReportingOverflow(by:)", "", "", "Argument[self,by:]", "ReturnValue.TupleElement[0]", "taint", "manual"] + - ["", "FixedWidthInteger", true, "subtractingReportingOverflow(_:)", "", "", "Argument[self,0]", "ReturnValue.TupleElement[0]", "taint", "manual"] + - ["", "FixedWidthInteger", true, "addingReportingOverflow(_:)", "", "", "Argument[self,0]", "ReturnValue.TupleElement[0]", "taint", "manual"] + - ["", "FixedWidthInteger", true, "init(bitPattern:)", "", "", "Argument[bitPattern:]", "ReturnValue", "taint", "manual"] + - ["", "FixedWidthInteger", true, "init(clamping:)", "", "", "Argument[clamping:]", "ReturnValue", "taint", "manual"] + - ["", "FixedWidthInteger", true, "init(truncatingIfNeeded:)", "", "", "Argument[truncatingIfNeeded:]", "ReturnValue", "taint", "manual"] + - ["", "FixedWidthInteger", true, "init(_:radix:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "FixedWidthInteger", true, "init(truncating:)", "", "", "Argument[truncating:]", "ReturnValue", "taint", "manual"] + - ["", "Numeric", true, "init(exactly:)", "", "", "Argument[exactly:]", "ReturnValue.OptionalSome", "value", "manual"] + - ["", "Numeric", true, "init(bitPattern:)", "", "", "Argument[bitPattern:]", "ReturnValue", "taint", "manual"] + - ["", "Numeric", true, "init(truncating:)", "", "", "Argument[truncating:]", "ReturnValue", "taint", "manual"] + - ["", "BinaryInteger", true, "quotientAndRemainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "ReturnValue.TupleElement[0,1]", "taint", "manual"] + - ["", "BinaryInteger", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "BinaryInteger", true, "init(clamping:)", "", "", "Argument[clamping:]", "ReturnValue", "taint", "manual"] + - ["", "BinaryInteger", true, "init(truncatingIfNeeded:)", "", "", "Argument[truncatingIfNeeded:]", "ReturnValue", "taint", "manual"] + - ["", "BinaryInteger", true, "advanced(by:)", "", "", "Argument[self,by:]", "ReturnValue", "taint", "manual"] + - ["", "BinaryInteger", true, "distance(to:)", "", "", "Argument[self,to:]", "ReturnValue", "taint", "manual"] + - ["", "BinaryInteger", true, "formatted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BinaryInteger", true, "formatted(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BinaryInteger", true, "init(_:format:lenient:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "BinaryInteger", true, "init(_:strategy:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "withContiguousStorageIfAvailable(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Sequence", true, "withContiguousStorageIfAvailable(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] + - ["", "Sequence", true, "withContiguousStorageIfAvailable(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue.OptionalSome", "value", "manual"] + - ["", "Sequence", true, "makeIterator()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "suffix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "suffix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "dropLast(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "dropLast(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "split(maxSplits:omittingEmptySubsequences:whereSeparator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "split(maxSplits:omittingEmptySubsequences:whereSeparator:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "prefix(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "prefix(while:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "prefix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "prefix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "drop(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "drop(while:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "dropFirst(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "dropFirst(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "split(maxSplits:omittingEmptySubsequences:separator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "split(maxSplits:omittingEmptySubsequences:separator:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "shuffled()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "shuffled()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "shuffled(using:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "shuffled(using:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "forEach(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0]", "value", "manual"] + - ["", "Sequence", true, "joined()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "joined()", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "joined()", "", "", "Argument[self].CollectionElement.CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "joined(separator:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "joined(separator:)", "", "", "Argument[self].CollectionElement.CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "joined(separator:)", "", "", "Argument[separator:,self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "reversed()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "reversed()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "first(where:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] + - ["", "Sequence", true, "enumerated()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement.TupleElement[1]", "value", "manual"] + - ["", "Sequence", true, "max(by:)", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "Sequence", true, "min(by:)", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "Sequence", true, "max()", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "Sequence", true, "min()", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "Sequence", true, "sorted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "sorted()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "sorted(by:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Sequence", true, "sorted(by:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Sequence", true, "formatted()", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "UnsafeBufferPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeBufferPointer", true, "init(count:start:)", "", "", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "UnsafeBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "UnsafeBufferPointer", true, "init(rebasing:)", "", "", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "UnsafePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "init(_:)", "", "", "Argument[0].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "init(mutating:)", "", "", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "init(mutating:)", "", "", "Argument[mutating:].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutablePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutablePointer", true, "initialize(count:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "initialize(to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "move()", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "assign(count:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "update(count:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "assign(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "update(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "moveInitialize(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "initialize(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "moveUpdate(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "moveAssign(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutablePointer", true, "initialize(count:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "init(count:start:)", "", "", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "init(mutating:)", "", "", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "update(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "moveElement(from:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "initializeElement(at:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "moveUpdate(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "moveInitialize(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "update(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "update(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "update(from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "initialize(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "initialize(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "init(rebasing:)", "", "", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeMutableBufferPointer", true, "assign(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "ContiguousArray", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "ContiguousArray", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] + - ["", "ContiguousArray", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "ContiguousArray", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "ContiguousArray", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "ContiguousArray", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] + - ["", "ContiguousArray", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "ContiguousArray", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "ContiguousArray", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "ContiguousArray", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "ContiguousArray", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "Collection", true, "makeIterator()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "removeFirst()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "suffix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "suffix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "dropLast(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "dropLast(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "randomElement()", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "value", "manual"] + - ["", "Collection", true, "randomElement(using:)", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "value", "manual"] + - ["", "Collection", true, "popFirst()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "split(maxSplits:omittingEmptySubsequences:whereSeparator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "prefix(through:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "prefix(through:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "suffix(from:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "prefix(upTo:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "prefix(upTo:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "prefix(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "prefix(while:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "prefix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "prefix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "dropFirst(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "dropFirst(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "split(maxSplits:omittingEmptySubsequences:separator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "flatMap(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "flatMap(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "trimmingPrefix(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "trimmingPrefix(while:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Collection", true, "trimmingPrefix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Collection", true, "trimmingPrefix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeRawPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeRawPointer", true, "init(_:)", "", "", "Argument[0].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] + - ["", "UnsafeRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "UnsafeRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "UnsafeRawPointer", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "UnsafeRawPointer", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "UnsafeRawPointer", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeRawPointer", true, "bindMemory(capacity:to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeRawPointer", true, "alignedDown(toMultipleOf:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeRawPointer", true, "alignedUp(toMultipleOf:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeRawPointer", true, "alignedDown(for:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeRawPointer", true, "alignedUp(for:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Slice", true, "init(base:bounds:)", "", "", "Argument[base:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Slice", true, "remove(at:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] + - ["", "Slice", true, "insert(_:at:)", "", "", "Argument[0]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "insert(at:contentsOf:)", "", "", "Argument[contentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "replaceSubrange(_:with:)", "", "", "Argument[with:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "storeBytes(as:of:toByteOffset:)", "", "", "Argument[of:]", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "update(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "Slice", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "Slice", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Slice", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "Slice", true, "bindMemory(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Slice", true, "moveInitializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "moveInitializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initializeMemory(as:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initializeMemory(as:repeating:)", "", "", "Argument[repeating:]", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Slice", true, "copyBytes(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "moveElement(from:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] + - ["", "Slice", true, "initializeElement(at:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "moveUpdate(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "moveInitialize(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "update(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "update(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "update(from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initialize(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "initialize(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Slice", true, "withContiguousMutableStorageIfAvailable(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[to:].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "withContiguousMutableStorageIfAvailable(_:to:)", "", "", "Argument[to:].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Slice", true, "withContiguousMutableStorageIfAvailable(_:to:)", "", "", "Argument[to:].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "SignedInteger", true, "init(exactly:)", "", "", "Argument[exactly:]", "ReturnValue.OptionalSome", "value", "manual"] + - ["", "SignedInteger", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "BidirectionalCollection", true, "popLast()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BidirectionalCollection", true, "suffix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BidirectionalCollection", true, "suffix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "BidirectionalCollection", true, "dropLast(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BidirectionalCollection", true, "dropLast(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "BidirectionalCollection", true, "suffix(from:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BidirectionalCollection", true, "last(where:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BidirectionalCollection", true, "joined(separator:)", "", "", "Argument[self,separator:]", "ReturnValue", "taint", "manual"] + - ["", "BidirectionalCollection", true, "joined(separator:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "BidirectionalCollection", true, "joined(separator:)", "", "", "Argument[self].CollectionElement.CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "BidirectionalCollection", true, "reversed()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BidirectionalCollection", true, "reversed()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "String", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(_:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(count:repeating:)", "", "", "Argument[repeating:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "insert(at:contentsOf:)", "", "", "Argument[contentsOf:]", "Argument[self]", "taint", "manual"] + - ["", "String", true, "init(extendedGraphemeClusterLiteral:)", "", "", "Argument[extendedGraphemeClusterLiteral:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(unicodeScalarLiteral:)", "", "", "Argument[unicodeScalarLiteral:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "encode(to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] + - ["", "String", true, "init(from:)", "", "", "Argument[from:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(from:)", "", "", "Argument[from:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "randomElement()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "randomElement(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "split(maxSplits:omittingEmptySubsequences:whereSeparator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(stringLiteral:)", "", "", "Argument[stringLiteral:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(stringInterpolation:)", "", "", "Argument[stringInterpolation:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "decodeCString(_:as:repairingInvalidCodeUnits:)", "", "", "Argument[0]", "ReturnValue.TupleElement[0]", "taint", "manual"] + - ["", "String", true, "decodeCString(_:as:repairingInvalidCodeUnits:)", "", "", "Argument[0].CollectionElement", "ReturnValue.TupleElement[0]", "taint", "manual"] + - ["", "String", true, "init(validatingUTF8:)", "", "", "Argument[validatingUTF8:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(validatingUTF8:)", "", "", "Argument[validatingUTF8:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "enumerated()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "max(by:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "min(by:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "max()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "min()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "withUTF8(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "String", true, "withUTF8(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self]", "taint", "manual"] + - ["", "String", true, "withUTF8(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "String", true, "init(initializingUTF8With:unsafeUninitializedCapacity:)", "", "", "Argument[initializingUTF8With:].Parameter[0].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(_:radix:uppercase:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(validating:)", "", "", "Argument[validating:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(describing:)", "", "", "Argument[describing:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(contentsOf:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(contentsOf:encoding:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(contentsOfFile:encoding:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(contentsOfFile:usedEncoding:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(platformString:)", "", "", "Argument[platformString:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(platformString:)", "", "", "Argument[platformString:].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "String", true, "withPlatformString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "String", true, "withPlatformString(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "String", true, "init(bytesNoCopy:encoding:freeWhenDone:length:)", "", "", "Argument[bytesNoCopy:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(cString:encoding:)", "", "", "Argument[cString:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(cString:encoding:)", "", "", "Argument[cString:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(data:encoding:)", "", "", "Argument[data:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(_:format:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(_:format:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(arguments:format:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(arguments:format:)", "", "", "Argument[arguments:].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(_:format:locale:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(_:format:locale:)", "", "", "Argument[2].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(arguments:format:locale:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(arguments:format:locale:)", "", "", "Argument[arguments:].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(utf8String:)", "", "", "Argument[utf8String:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(utf8String:)", "", "", "Argument[utf8String:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "localizedStringWithFormat(_:_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "localizedStringWithFormat(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(bytes:encoding:)", "", "", "Argument[bytes:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(contendsOf:usedEncoding:)", "", "", "Argument[contendsOf:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(decoding:)", "", "", "Argument[decoding:]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(count:utf16CodeUnits:)", "", "", "Argument[utf16CodeUnits:].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(count:freeWhenDone:utf16CodeUnitsNoCopy:)", "", "", "Argument[utf16CodeUnitsNoCopy:].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "String", true, "init(validatingPlatformString:)", "", "", "Argument[validatingPlatformString:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "init(validatingPlatformString:)", "", "", "Argument[validatingPlatformString:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "String", true, "subscript(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "String", true, "withMutableCharacters(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "value", "manual"] + - ["", "String", true, "withMutableCharacters(_:)", "", "", "Argument[0].Parameter[0]", "Argument[self]", "value", "manual"] + - ["", "String", true, "withMutableCharacters(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self]", "taint", "manual"] + - ["", "String", true, "withMutableCharacters(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "BinaryFloatingPoint", true, "init(exponentBitPattern:sign:significandBitPattern:)", "", "", "Argument[sign:,exponentBitPattern:,significandBitPattern:]", "ReturnValue", "taint", "manual"] + - ["", "BinaryFloatingPoint", true, "formatted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BinaryFloatingPoint", true, "formatted(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "BinaryFloatingPoint", true, "init(_:format:lenient:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "BinaryFloatingPoint", true, "init(_:strategy:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "UnsafeRawBufferPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeRawBufferPointer", true, "init(count:start:)", "", "", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeRawBufferPointer", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "UnsafeRawBufferPointer", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "UnsafeRawBufferPointer", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "UnsafeRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "UnsafeRawBufferPointer", true, "bindMemory(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeRawBufferPointer", true, "init(rebasing:)", "", "", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Array", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Array", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] + - ["", "Array", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Array", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "Array", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Array", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] + - ["", "Array", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "Array", true, "makeIterator()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Array", true, "insert(_:at:)", "", "", "Argument[0]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Array", true, "insert(_:at:)", "", "", "Argument[at:]", "Argument[self]", "taint", "manual"] + - ["", "Array", true, "init(arrayLiteral:)", "", "", "Argument[arrayLiteral:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Array", true, "withUnsafeBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Array", true, "withUnsafeBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Array", true, "withUnsafeBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "Array", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Array", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Array", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Array", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "MutableCollection", true, "withContiguousMutableStorageIfAvailable(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "MutableCollection", true, "withContiguousMutableStorageIfAvailable(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] + - ["", "MutableCollection", true, "withContiguousMutableStorageIfAvailable(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "MutableCollection", true, "withContiguousMutableStorageIfAvailable(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue.OptionalSome", "value", "manual"] + - ["", "RangeReplaceableCollection", true, "init(_:)", "", "", "Argument[0]", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "RangeReplaceableCollection", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "RangeReplaceableCollection", true, "append(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "RangeReplaceableCollection", true, "remove(at:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "RangeReplaceableCollection", true, "insert(_:at:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "RangeReplaceableCollection", true, "append(contentsOf:)", "", "", "Argument[contentsOf:]", "Argument[self]", "taint", "manual"] + - ["", "RangeReplaceableCollection", true, "init(count:repeating:)", "", "", "Argument[repeating:]", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "RangeReplaceableCollection", true, "removeFirst()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "RangeReplaceableCollection", true, "replaceSubrange(_:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] + - ["", "RangeReplaceableCollection", true, "replaceSubrange(_:with:)", "", "", "Argument[with:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "RangeReplaceableCollection", true, "removeLast()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "IteratorProtocol", true, "next()", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "value", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "init(count:start:)", "", "", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "init(mutating:)", "", "", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "storeBytes(as:of:toByteOffset:)", "", "", "Argument[of:]", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "bindMemory(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "moveInitializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "moveInitializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:repeating:)", "", "", "Argument[repeating:]", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "copyBytes(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "init(rebasing:)", "", "", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "UnsafeMutableRawBufferPointer", true, "copyMemory(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "LosslessStringConvertible", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "RawRepresentable", true, "init(rawValue:)", "", "", "Argument[rawValue:]", "ReturnValue", "taint", "manual"] + - ["", "Dictionary", true, "makeIterator()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Dictionary", true, "updateValue(_:forKey:)", "", "", "Argument[0]", "Argument[self].CollectionElement.TupleElement[1]", "value", "manual"] + - ["", "Dictionary", true, "updateValue(_:forKey:)", "", "", "Argument[forKey:]", "Argument[self].CollectionElement.TupleElement[0]", "value", "manual"] + - ["", "Dictionary", true, "updateValue(_:forKey:)", "", "", "Argument[self].CollectionElement.TupleElement[1]", "ReturnValue.OptionalSome", "value", "manual"] + - ["", "Set", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "Set", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Set", true, "remove(at:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] + - ["", "Set", true, "removeFirst()", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] + - ["", "Set", true, "filter(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Set", true, "insert(_:)", "", "", "Argument[0]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Set", true, "insert(_:)", "", "", "Argument[0]", "ReturnValue.TupleElement[1]", "taint", "manual"] + - ["", "Set", true, "intersection(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Set", true, "subtracting(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Set", true, "symmetricDifference(_:)", "", "", "Argument[self,0].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "Set", true, "union(_:)", "", "", "Argument[self,0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] + - ["", "Set", true, "update(with:)", "", "", "Argument[with:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "Set", true, "update(with:)", "", "", "Argument[with:]", "Argument[self].CollectionElement", "value", "manual"] + - ["", "Set", true, "remove(_:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "Set", true, "formSymmetricDifference(_:)", "", "", "Argument[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Set", true, "formUnion(_:)", "", "", "Argument[0].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] + - ["", "TextOutputStreamable", true, "write(to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] + - ["", "TextOutputStream", true, "write(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "Substring", true, "withUTF8(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Substring", true, "withUTF8(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self]", "taint", "manual"] + - ["", "Substring", true, "withUTF8(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "StringProtocol", true, "withCString(_:encodedAs:)", "", "", "Argument[self]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "StringProtocol", true, "withCString(_:encodedAs:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "StringProtocol", true, "withCString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "StringProtocol", true, "withCString(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "StringProtocol", true, "init(as:decodingCString:)", "", "", "Argument[decodingCString:].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.TupleElement[0]", "taint", "manual"] + - ["", "StringProtocol", true, "init(cString:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "init(cString:)", "", "", "Argument[cString:].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "init(as:decoding:)", "", "", "Argument[decoding:]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "uppercased()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "lowercased()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "getBytes(_:encoding:maxLength:options:range:remaining:usedLength:)", "", "", "Argument[self]", "Argument[0].CollectionElement", "taint", "manual"] + - ["", "StringProtocol", true, "getCString(_:encoding:maxLength:)", "", "", "Argument[self]", "Argument[0].CollectionElement", "taint", "manual"] + - ["", "StringProtocol", true, "appending(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "addingPercentEscapes(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "appendingFormat(_:_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "appendingFormat(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "applyingTransform(_:reverse:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "cString(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "capitalized(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "completePath(caseSensitive:filterTypes:into:matchesInto:)", "", "", "Argument[self]", "Argument[into:].CollectionElement", "taint", "manual"] + - ["", "StringProtocol", true, "completePath(caseSensitive:filterTypes:into:matchesInto:)", "", "", "Argument[self]", "Argument[matchesInto:].CollectionElement.CollectionElement", "taint", "manual"] + - ["", "StringProtocol", true, "components(separatedBy:)", "", "", "Argument[self]", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "StringProtocol", true, "data(allowLossyConversion:using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "folding(locale:options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "lowercased(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "padding(startingAt:toLength:withPad:)", "", "", "Argument[withPad:]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "padding(startingAt:toLength:withPad:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "propertyList()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "propertyListFromStringsFileFormat()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "replacingCharacters(in:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "replacingCharacters(in:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "replacingOccurrences(of:options:range:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "replacingOccurrences(of:options:range:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "replacingPercentEscapes(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "substring(from:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "substring(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "trimmingCharacters(in:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "uppercased(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "StringProtocol", true, "addingPercentEncoding(withAllowedCharacter:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Strideable", true, "advanced(by:)", "", "", "Argument[self,by:]", "ReturnValue", "taint", "manual"] + - ["", "Strideable", true, "distance(to:)", "", "", "Argument[self,to:]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "rounded(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "maximumMagnitude(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "minimumMagnitude(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "maximum(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "minimum(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "addProduct(_:_:)", "", "", "Argument[self,0,1]", "Argument[self]", "taint", "manual"] + - ["", "FloatingPoint", true, "addingProduct(_:_:)", "", "", "Argument[self,0,1]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "squareRoot()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "formTruncatingRemainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "Argument[self]", "taint", "manual"] + - ["", "FloatingPoint", true, "truncatingRemainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "formRemainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "Argument[self]", "taint", "manual"] + - ["", "FloatingPoint", true, "remainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "init(magnitudeOf:signOf:)", "", "", "Argument[magnitudeOf:]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "init(exponent:sign:significand:)", "", "", "Argument[exponent:,significand:]", "ReturnValue", "taint", "manual"] + - ["", "FloatingPoint", true, "rounded()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "OptionSet", true, "init(rawValue:)", "", "", "Argument[rawValue:]", "ReturnValue", "taint", "manual"] + - ["", "", false, "min(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] + - ["", "", false, "min(_:_:_:_:)", "", "", "Argument[0,1,2]", "ReturnValue", "taint", "manual"] + - ["", "", false, "min(_:_:_:_:)", "", "", "Argument[3].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "", false, "max(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] + - ["", "", false, "max(_:_:_:_:)", "", "", "Argument[0,1,2]", "ReturnValue", "taint", "manual"] + - ["", "", false, "max(_:_:_:_:)", "", "", "Argument[3].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "", false, "unsafeBitCast(_:to:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", false, "unsafeDowncast(_:to:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", false, "dump(_:indent:maxDepth:maxItems:name:to:)", "", "", "Argument[0,name:]", "Argument[to:]", "taint", "manual"] + - ["", "", false, "abs(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", false, "numericCast(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", false, "withExtendedLifetime(_:_:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "", false, "withUnsafeMutablePointer(_:to:)", "", "", "Argument[to:]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "", false, "withUnsafeMutablePointer(_:to:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[to:]", "value", "manual"] + - ["", "", false, "withUnsafeMutablePointer(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "", false, "withUnsafePointer(_:to:)", "", "", "Argument[to:]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "", false, "withUnsafePointer(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "", false, "swap(_:_:)", "", "", "Argument[0]", "Argument[1]", "value", "manual"] + - ["", "", false, "swap(_:_:)", "", "", "Argument[1]", "Argument[0]", "value", "manual"] + - ["", "", false, "print(_:separator:terminator:to:)", "", "", "Argument[0].CollectionElement", "Argument[to:]", "taint", "manual"] + - ["", "", false, "print(_:separator:terminator:to:)", "", "", "Argument[separator:,terminator:]", "Argument[to:]", "taint", "manual"] + - ["", "", false, "debugPrint(_:separator:terminator:to:)", "", "", "Argument[0].CollectionElement", "Argument[to:]", "taint", "manual"] + - ["", "", false, "debugPrint(_:separator:terminator:to:)", "", "", "Argument[separator:,terminator:]", "Argument[to:]", "taint", "manual"] + - ["", "", false, "withUnsafeTemporaryAllocation(_:alignment:byteCount:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "", false, "withUnsafeTemporaryAllocation(_:capacity:of:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "", false, "withVaList(_:_:)", "", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] + - ["", "", false, "getVaList(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue", "value", "manual"] + - ["", "", false, "withUnsafeMutableBytes(_:of:)", "", "", "Argument[of:]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "", false, "withUnsafeMutableBytes(_:of:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[of:]", "taint", "manual"] + - ["", "", false, "withUnsafeMutableBytes(_:of:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "", false, "withUnsafeBytes(_:of:)", "", "", "Argument[of:]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "", false, "withUnsafeBytes(_:of:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "", false, "<-(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] + - ["", "", false, "JSStringRetain(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", false, "JSStringCreateWithUTF8CString(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", false, "JSStringCreateWithCharacters(_:_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(_:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "URL", true, "init(fileReferenceLiteralResourceName:)", "", "", "Argument[fileReferenceLiteralResourceName:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(string:)", "(String)", "", "Argument[string:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "URL", true, "appendingPathExtension(for:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "appendingPathComponent(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "appendingPathExtension(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "appendingPathComponent(_:isDirectory:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "appendingPathComponent(_:conformingTo:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "formatted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "formatted(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(_:strategy:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "append(component:directoryHint:)", "", "", "Argument[self,component:]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "append(components:directoryHint:)", "", "", "Argument[self,components:]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "append(directoryHint:path:)", "", "", "Argument[self,path:]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "append(queryItems:)", "", "", "Argument[self,queryItems:]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "appendPathComponent(_:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "appendPathComponent(_:conformingTo:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "appendPathComponent(_:isDirectory:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "appendPathExtension(_:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "appending(component:directoryHint:)", "", "", "Argument[self,component:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "appending(components:directoryHint:)", "", "", "Argument[self,components:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "appending(directoryHint:path:)", "", "", "Argument[self,path:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "appending(queryItems:)", "", "", "Argument[self,queryItems:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "bookmarkData(includingResourceValuesForKeys:options:relativeTo:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "bookmarkData(includingResourceValuesForKeys:options:relativeTo:)", "", "", "Argument[includingResourceValuesForKeys:].OptionalSome.CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "bookmarkData(includingResourceValuesForKeys:options:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "bookmarkData(withContentsOf:)", "", "", "Argument[withContentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "deletingLastPathComponent()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "deletingPathExtension()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "fragment(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "homeDirectory(forUser:)", "", "", "Argument[forUser:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "host(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(_:isDirectory:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "URL", true, "init(dataRepresentation:isAbsolute:relativeTo:)", "", "", "Argument[dataRepresentation:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(dataRepresentation:isAbsolute:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(filePath:)", "", "", "Argument[filePath:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "URL", true, "init(directoryHint:filePath:)", "", "", "Argument[filePath:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "URL", true, "init(directoryHint:filePath:relativeTo:)", "", "", "Argument[filePath:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(directoryHint:filePath:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(filePath:isDirectory:)", "", "", "Argument[filePath:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "URL", true, "init(fileURLWithFileSystemRepresentation:isDirectory:relativeTo:)", "", "", "Argument[fileURLWithFileSystemRepresentation:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(fileURLWithFileSystemRepresentation:isDirectory:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(fileURLWithPath:)", "", "", "Argument[fileURLWithPath:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(fileURLWithPath:isDirectory:)", "", "", "Argument[fileURLWithPath:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(fileURLWithPath:isDirectory:relativeTo:)", "", "", "Argument[fileURLWithPath:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(fileURLWithPath:isDirectory:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(fileURLWithPath:relativeTo:)", "", "", "Argument[fileURLWithPath:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(fileURLWithPath:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(appropriateFor:create:for:in:)", "", "", "Argument[for:,in:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(appropriateFor:create:for:in:)", "", "", "Argument[appropriateFor:].OptionalSome", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(options:resolvingAliasFileAt:)", "", "", "Argument[resolvingAliasFileAt:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(bookmarkDataIsStale:options:relativeTo:resolvingBookmarkData:)", "", "", "Argument[resolvingBookmarkData:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(bookmarkDataIsStale:options:relativeTo:resolvingBookmarkData:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(resource:)", "", "", "Argument[resource:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "init(encodingInvalidCharacters:string:)", "", "", "Argument[string:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "URL", true, "init(relativeTo:string:)", "(String,URL?)", "", "Argument[string:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "URL", true, "init(relativeTo:string:)", "(String,URL?)", "", "Argument[relativeTo:].OptionalSome", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "URL", true, "password(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "path(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "promisedItemResourceValues(forKeys:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "query(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "resolvingSymlinksInPath()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "resourceValues(forKeys:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "resourceValues(forKeys:fromBookmarkData:)", "", "", "Argument[fromBookmarkData:]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "setResourceValues(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "setTemporaryResourceValue(_:forKey:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] + - ["", "URL", true, "user(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URL", true, "withUnsafeFileSystemRepresentation(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].OptionalSome.CollectionElement", "taint", "manual"] + - ["", "URL", true, "withUnsafeFileSystemRepresentation(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(contentsOf:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(contentsOf:options:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(data:)", "", "", "Argument[data:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(bytes:length:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "base64EncodedData(options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "base64EncodedString(options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "base64Encoding()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "compressed(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "dataWithContentsOfMappedFile(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "decompressed(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "enumerateBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "taint", "manual"] + - ["", "NSData", true, "getBytes(_:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSData", true, "getBytes(_:length:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSData", true, "getBytes(_:range:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSData", true, "init(base64Encoded:options:)", "", "", "Argument[base64Encoded:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(base64Encoding:)", "", "", "Argument[base64Encoding:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(bytesNoCopy:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(bytesNoCopy:deallocator:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(bytesNoCopy:freeWhenDone:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(contentsOfFile:options:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "init(contentsOfMappedFile:)", "", "", "Argument[contentsOfMappedFile:]", "ReturnValue", "taint", "manual"] + - ["", "NSData", true, "subdata(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(coder:)", "", "", "Argument[coder:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(cString:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "getBytes(_:encoding:maxLength:options:range:remaining:usedLength:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSString", true, "getCharacters(_:range:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSString", true, "character(at:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "getCString(_:encoding:maxLength:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSString", true, "init(string:)", "", "", "Argument[string:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "appending(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(contentsOf:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "string(withContentsOf:)", "", "", "Argument[withContentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(contentsOf:encoding:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "string(withContentsOfFile:)", "", "", "Argument[withContentsOfFile:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(contentsOfFile:encoding:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(contentsOf:usedEncoding:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(contentsOfFile:usedEncoding:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "appendingPathComponent(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "appendingPathExtension(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "appendingPathComponent(_:conformingTo:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "addingPercentEncoding(withAllowedCharacters:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "addingPercentEscapes(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "appendingFormat(_:_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "appendingFormat(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "applyTransform(_:range:reverse:updatedRange:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "applyingTransform(_:reverse:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "cString()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "cString(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "capitalized(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "completePath(caseSensitive:filterTypes:into:matchesInto:)", "", "", "Argument[self]", "Argument[into:].CollectionElement", "taint", "manual"] + - ["", "NSString", true, "completePath(caseSensitive:filterTypes:into:matchesInto:)", "", "", "Argument[self]", "Argument[matchesInto:].CollectionElement.CollectionElement", "taint", "manual"] + - ["", "NSString", true, "components(separatedBy:)", "", "", "Argument[self]", "ReturnValue.CollectionElement", "taint", "manual"] + - ["", "NSString", true, "data(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "data(allowLossyConversion:using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "enumerateLines(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "taint", "manual"] + - ["", "NSString", true, "enumerateLinguisticTags(in:options:orthography:scheme:using:)", "", "", "Argument[self]", "Argument[using:].Parameter[0].OptionalSome", "taint", "manual"] + - ["", "NSString", true, "enumerateSubstrings(in:options:using:)", "", "", "Argument[self]", "Argument[using:].Parameter[0].OptionalSome", "taint", "manual"] + - ["", "NSString", true, "enumerateSubstrings(in:options:using:)", "", "", "Argument[using:].Parameter[0].OptionalSome", "Argument[self]", "taint", "manual"] + - ["", "NSString", true, "folding(locale:options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "getCString(_:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSString", true, "getCString(_:maxLength:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSString", true, "getCString(_:maxLength:range:remaining:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSString", true, "getCharacters(_:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSString", true, "getFileSystemRepresentation(_:maxLength:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] + - ["", "NSString", true, "init(bytes:encoding:length:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(bytesNoCopy:deallocator:encoding:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(bytesNoCopy:encoding:freeWhenDone:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(cString:encoding:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(cString:length:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(cStringNoCopy:freeWhenDone:length:)", "", "", "Argument[cStringNoCopy:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(characters:length:)", "", "", "Argument[characters:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(charactersNoCopy:dellocator:length:)", "", "", "Argument[charactersNoCopy:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(charactersNoCopy:freeWhenDone:length:)", "", "", "Argument[charactersNoCopy:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(data:encoding:)", "", "", "Argument[data:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(_:format:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(_:format:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(arguments:format:)", "", "", "Argument[format:,arguments:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(_:format:locale:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(_:format:locale:)", "", "", "Argument[2].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(arguments:format:locale:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(arguments:format:locale:)", "", "", "Argument[arguments:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "init(utf8String:)", "", "", "Argument[utf8String:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "localizedStringWithFormat(_:_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "localizedStringWithFormat(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "lossyCString()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "lowercased(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "padding(startingAt:toLength:withPad:)", "", "", "Argument[withPad:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "padding(startingAt:toLength:withPad:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "path(withComponents:)", "", "", "Argument[withComponents:].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "propertyList()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "propertyListFromStringsFileFormat()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "replacingCharacters(in:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "replacingCharacters(in:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "replacingOccurrences(of:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "replacingOccurrences(of:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "replacingOccurrences(of:options:range:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "replacingOccurrences(of:options:range:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "replacingPercentEscapes(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "string(withCString:)", "", "", "Argument[withCString:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "string(length:withCString:)", "", "", "Argument[withCString:]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "stringEncoding(convertedString:encodingOptions:for:usedLossyCompression:)", "", "", "Argument[for:]", "Argument[convertedString:]", "taint", "manual"] + - ["", "NSString", true, "strings(byAppendingPaths:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "strings(byAppendingPaths:)", "", "", "Argument[byAppendingPaths:].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "substring(from:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "substring(to:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "substring(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "trimmingCharacters(in:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "uppercased(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSString", true, "variantFittingPresentationWidth(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "append(_:count:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "Data", true, "insert(at:contentsOf:)", "", "", "Argument[contentsOf:]", "Argument[self]", "taint", "manual"] + - ["", "Data", true, "replaceSubrange(_:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] + - ["", "Data", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Data", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "Data", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] + - ["", "Data", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "Data", true, "map(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "shuffled()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "shuffled(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "compactMap(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "flatMap(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "reduce(_:into:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "sorted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "sorted(by:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "replace(_:maxReplacements:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] + - ["", "Data", true, "replacing(_:maxReplacements:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] + - ["", "Data", true, "replacing(_:maxReplacements:subrange:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] + - ["", "Data", true, "trimmingPrefix(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "trimmingPrefix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "init(contentsOf:options:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "base64EncodedData(options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "base64EncodedString(options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "init(base64Encoded:options:)", "", "", "Argument[base64Encoded:]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "init(buffer:)", "", "", "Argument[buffer:]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "init(bytes:count:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "init(bytesNoCopy:count:deallocator:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "init(referencing:)", "", "", "Argument[referencing:]", "ReturnValue", "taint", "manual"] + - ["", "Data", true, "replaceSubrange(_:count:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] + - ["", "Data", true, "sorted(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSObject", true, "copy()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSObject", true, "mutableCopy()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "Blob", true, "init(bytes:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] + - ["", "Blob", true, "init(bytes:length:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] + - ["", "Expression", true, "init(_:_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "Expression", true, "init(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] + - ["", "NSCopying", true, "copy(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "ExpressionType", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "ExpressionType", true, "replace(_:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] + - ["", "InputStream", true, "init(data:)", "", "", "Argument[data:]", "ReturnValue", "taint", "manual"] + - ["", "NSMutableData", true, "append(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "NSMutableData", true, "setData(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "NSMutableData", true, "append(_:length:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "NSMutableData", true, "replaceBytes(in:withBytes:)", "", "", "Argument[withBytes:]", "Argument[self]", "taint", "manual"] + - ["", "NSMutableData", true, "replaceBytes(in:length:withBytes:)", "", "", "Argument[withBytes:]", "Argument[self]", "taint", "manual"] + - ["", "NSURL", true, "init(string:)", "(String)", "", "Argument[string:]", "ReturnValue.OptionalSome", "taint", "manual"] + - ["", "NSURL", true, "appendingPathExtension(for:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "NSURL", true, "appendingPathComponent(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "NSURL", true, "appendingPathExtension(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "NSURL", true, "appendingPathComponent(_:isDirectory:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "NSURL", true, "appendingPathComponent(_:conformingTo:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "NSMutableCopying", true, "mutableCopy(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "URLSession", true, "dataTask(completionHandler:with:)", "", "", "Argument[with:]", "Argument[completionHandler:].Parameter[0]", "taint", "manual"] + - ["", "WKUserScript", true, "init(forMainFrameOnly:injectionTime:source:)", "", "", "Argument[source:]", "ReturnValue", "taint", "manual"] + - ["", "WKUserScript", true, "init(forMainFrameOnly:in:injectionTime:source:)", "", "", "Argument[source:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "atIndex(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "defineProperty(_:descriptor:)", "", "", "Argument[descriptor:]", "Argument[self]", "taint", "manual"] + - ["", "JSValue", true, "forProperty(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "init(bool:in:)", "", "", "Argument[bool:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "init(double:in:)", "", "", "Argument[double:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "init(in:int32:)", "", "", "Argument[int32:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "init(in:object:)", "", "", "Argument[object:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "init(in:point:)", "", "", "Argument[point:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "init(in:range:)", "", "", "Argument[range:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "init(in:rect:)", "", "", "Argument[rect:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "init(in:size:)", "", "", "Argument[size:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "init(in:uInt32:)", "", "", "Argument[uInt32:]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "setValue(_:at:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "JSValue", true, "setValue(_:forProperty:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "JSValue", true, "toArray()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toBool()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toDate()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toDictionary()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toDouble()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toInt32()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toNumber()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toObject()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toObjectOf(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toPoint()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toRange()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toRect()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toSize()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toString()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "JSValue", true, "toUInt32()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "FilePath.Component", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "FilePath.Component", true, "init(platformString:)", "", "", "Argument[platformString:]", "ReturnValue", "taint", "manual"] + - ["", "FilePath.Component", true, "withPlatformString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "taint", "manual"] + - ["", "FilePath.Root", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "FilePath.Root", true, "init(platformString:)", "", "", "Argument[platformString:]", "ReturnValue", "taint", "manual"] + - ["", "FilePath.Root", true, "withPlatformString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "taint", "manual"] + - ["", "FilePath", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "append(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "FilePath", true, "init(extendedGraphemeClusterLiteral:)", "", "", "Argument[extendedGraphemeClusterLiteral:]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "init(unicodeScalarLiteral:)", "", "", "Argument[unicodeScalarLiteral:]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "encode(to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] + - ["", "FilePath", true, "init(from:)", "", "", "Argument[from:]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "init(stringLiteral:)", "(String)", "", "Argument[stringLiteral:]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "withCString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "FilePath", true, "withCString(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "init(cString:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "push(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "FilePath", true, "appending(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "init(platformString:)", "", "", "Argument[platformString:]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "withPlatformString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "FilePath", true, "withPlatformString(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "init(_:root:)", "", "", "Argument[root:,1]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "init(components:root:)", "", "", "Argument[root:,components:]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "lexicallyNormalized()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "lexicallyResolving(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "pushing(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "removingLastComponent()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "FilePath", true, "removingRoot()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["", "DataProtocol", true, "copyBytes(to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] + - ["", "DataProtocol", true, "copyBytes(count:to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] + - ["", "DataProtocol", true, "copyBytes(from:to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] + - ["", "ContiguousBytes", true, "withUnsafeBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "ContiguousBytes", true, "withUnsafeBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] + - ["", "ContiguousBytes", true, "withUnsafeBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] + - ["", "URLResource", true, "init(bundle:locale:name:subdirectory:)", "", "", "Argument[name:,subdirectory:]", "ReturnValue", "taint", "manual"] + - ["", "NSMutableString", true, "append(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "NSMutableString", true, "insert(_:at:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "NSMutableString", true, "appendFormat(_:_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] + - ["", "NSMutableString", true, "appendFormat(_:_:)", "", "", "Argument[1].CollectionElement", "Argument[self]", "taint", "manual"] + - ["", "NSMutableString", true, "replaceCharacters(in:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] + - ["", "NSMutableString", true, "replaceOccurrences(of:options:range:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] + - ["", "NSMutableString", true, "setString(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] diff --git a/unified/ql/lib/ide-contextual-queries/definitions.ql b/unified/ql/lib/ide-contextual-queries/definitions.ql index f72c91bcd9dd..0d2477a83b57 100644 --- a/unified/ql/lib/ide-contextual-queries/definitions.ql +++ b/unified/ql/lib/ide-contextual-queries/definitions.ql @@ -13,7 +13,7 @@ import unified external string selectedSourceFile(); -from Identifier reference, NameDeclaration definition, string kind +from Identifier reference, NameBinding definition, string kind where definitionOf(reference, definition, kind) and reference.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile()) diff --git a/unified/ql/lib/ide-contextual-queries/printCfg.ql b/unified/ql/lib/ide-contextual-queries/printCfg.ql index f183c5c63cc9..aab7918d487e 100644 --- a/unified/ql/lib/ide-contextual-queries/printCfg.ql +++ b/unified/ql/lib/ide-contextual-queries/printCfg.ql @@ -8,6 +8,7 @@ */ private import unified +private import codeql.unified.internal.ControlFlowGraph private import codeql.Locations external string selectedSourceFile(); @@ -30,7 +31,7 @@ module ViewCfgQueryInput implements ControlFlow::ViewCfgQueryInputSig { predicate selectedSourceColumn = selectedSourceColumnAlias/0; predicate cfgScopeSpan( - Callable scope, File file, int startLine, int startColumn, int endLine, int endColumn + Ast::Callable scope, File file, int startLine, int startColumn, int endLine, int endColumn ) { file = scope.getFile() and scope.getLocation().hasLocationInfo(_, startLine, startColumn, endLine, endColumn) diff --git a/unified/ql/lib/qlpack.yml b/unified/ql/lib/qlpack.yml index 0167b114ba96..19a6bc29e4c6 100644 --- a/unified/ql/lib/qlpack.yml +++ b/unified/ql/lib/qlpack.yml @@ -6,8 +6,14 @@ extractor: unified library: true upgrades: upgrades dependencies: + codeql/concepts: ${workspace} codeql/controlflow: ${workspace} + codeql/ssa: ${workspace} + codeql/dataflow: ${workspace} codeql/namebinding: ${workspace} + codeql/typeinference: ${workspace} codeql/util: ${workspace} +dataExtensions: + - ext/*.model.yml warnOnImplicitThis: true compileForOverlayEval: true diff --git a/unified/ql/lib/unified.dbscheme b/unified/ql/lib/unified.dbscheme index 56312bb69d2c..165eaffd4c3d 100644 --- a/unified/ql/lib/unified.dbscheme +++ b/unified/ql/lib/unified.dbscheme @@ -157,13 +157,13 @@ unified_accessor_declaration_parameter( unified_accessor_declaration_type( unique int unified_accessor_declaration: @unified_accessor_declaration ref, - unique int type__: @unified_type_expr ref + unique int type__: @unified_expr ref ); unified_accessor_declaration_def( unique int id: @unified_accessor_declaration, int accessor_kind: @unified_token_accessor_kind ref, - int name: @unified_token_identifier ref + int name_node: @unified_token_identifier ref ); #keyset[unified_argument, index] @@ -173,9 +173,9 @@ unified_argument_modifier( unique int modifier: @unified_token_modifier ref ); -unified_argument_name( +unified_argument_name_node( unique int unified_argument: @unified_argument ref, - unique int name: @unified_token_identifier ref + unique int name_node: @unified_token_identifier ref ); unified_argument_def( @@ -194,15 +194,9 @@ unified_array_literal_def( unique int id: @unified_array_literal ); -unified_assign_expr_def( - unique int id: @unified_assign_expr, - int target: @unified_expr ref, - int value: @unified_expr ref -); - unified_associated_type_declaration_bound( unique int unified_associated_type_declaration: @unified_associated_type_declaration ref, - unique int bound: @unified_type_expr ref + unique int bound: @unified_expr ref ); #keyset[unified_associated_type_declaration, index] @@ -214,7 +208,7 @@ unified_associated_type_declaration_modifier( unified_associated_type_declaration_def( unique int id: @unified_associated_type_declaration, - int name: @unified_token_identifier ref + int name_node: @unified_token_identifier ref ); #keyset[unified_base_type, index] @@ -226,7 +220,7 @@ unified_base_type_modifier( unified_base_type_def( unique int id: @unified_base_type, - int type__: @unified_type_expr ref + int type__: @unified_expr ref ); unified_binary_expr_def( @@ -249,13 +243,13 @@ unified_block_def( unified_bound_type_constraint_def( unique int id: @unified_bound_type_constraint, - int bound: @unified_type_expr ref, - int type__: @unified_type_expr ref + int bound: @unified_expr ref, + int type__: @unified_expr ref ); -unified_break_expr_label( +unified_break_expr_label_name_node( unique int unified_break_expr: @unified_break_expr ref, - unique int label: @unified_token_identifier ref + unique int label_name_node: @unified_token_identifier ref ); unified_break_expr_def( @@ -289,7 +283,7 @@ unified_call_expr_modifier( unified_call_expr_def( unique int id: @unified_call_expr, - int callee: @unified_expr_or_type ref + int callee: @unified_expr ref ); @unified_callable = @unified_accessor_declaration | @unified_constructor_declaration | @unified_destructor_declaration | @unified_function_declaration | @unified_function_expr | @unified_initializer_declaration | @unified_top_level @@ -303,7 +297,7 @@ unified_catch_clause_modifier( unified_catch_clause_pattern( unique int unified_catch_clause: @unified_catch_clause ref, - unique int pattern: @unified_pattern ref + unique int pattern: @unified_expr ref ); unified_catch_clause_def( @@ -318,6 +312,11 @@ unified_class_like_declaration_base_type( unique int base_type: @unified_base_type ref ); +unified_class_like_declaration_extension_target( + unique int unified_class_like_declaration: @unified_class_like_declaration ref, + unique int extension_target: @unified_expr ref +); + #keyset[unified_class_like_declaration, index] unified_class_like_declaration_member( int unified_class_like_declaration: @unified_class_like_declaration ref, @@ -332,9 +331,9 @@ unified_class_like_declaration_modifier( unique int modifier: @unified_token_modifier ref ); -unified_class_like_declaration_name( +unified_class_like_declaration_name_node( unique int unified_class_like_declaration: @unified_class_like_declaration ref, - unique int name: @unified_token_identifier ref + unique int name_node: @unified_token_identifier ref ); #keyset[unified_class_like_declaration, index] @@ -355,13 +354,6 @@ unified_class_like_declaration_def( unique int id: @unified_class_like_declaration ); -unified_compound_assign_expr_def( - unique int id: @unified_compound_assign_expr, - int operator: @unified_token_infix_operator ref, - int target: @unified_expr ref, - int value: @unified_expr ref -); - #keyset[unified_conditional_pattern, index] unified_conditional_pattern_modifier( int unified_conditional_pattern: @unified_conditional_pattern ref, @@ -372,7 +364,7 @@ unified_conditional_pattern_modifier( unified_conditional_pattern_def( unique int id: @unified_conditional_pattern, int condition: @unified_expr ref, - int pattern: @unified_pattern ref + int pattern: @unified_expr ref ); #keyset[unified_constructor_declaration, index] @@ -382,9 +374,9 @@ unified_constructor_declaration_modifier( unique int modifier: @unified_token_modifier ref ); -unified_constructor_declaration_name( +unified_constructor_declaration_name_node( unique int unified_constructor_declaration: @unified_constructor_declaration ref, - unique int name: @unified_token_identifier ref + unique int name_node: @unified_token_identifier ref ); #keyset[unified_constructor_declaration, index] @@ -399,34 +391,20 @@ unified_constructor_declaration_def( int body: @unified_block ref ); -#keyset[unified_constructor_pattern, index] -unified_constructor_pattern_element( - int unified_constructor_pattern: @unified_constructor_pattern ref, - int index: int ref, - unique int element: @unified_pattern_element ref -); - -#keyset[unified_constructor_pattern, index] -unified_constructor_pattern_modifier( - int unified_constructor_pattern: @unified_constructor_pattern ref, - int index: int ref, - unique int modifier: @unified_token_modifier ref -); - -unified_constructor_pattern_def( - unique int id: @unified_constructor_pattern, - int constructor: @unified_expr_or_type ref -); - -unified_continue_expr_label( +unified_continue_expr_label_name_node( unique int unified_continue_expr: @unified_continue_expr ref, - unique int label: @unified_token_identifier ref + unique int label_name_node: @unified_token_identifier ref ); unified_continue_expr_def( unique int id: @unified_continue_expr ); +unified_defer_stmt_def( + unique int id: @unified_defer_stmt, + int body: @unified_expr ref +); + #keyset[unified_destructor_declaration, index] unified_destructor_declaration_modifier( int unified_destructor_declaration: @unified_destructor_declaration ref, @@ -458,20 +436,25 @@ unified_do_while_stmt_def( unified_equality_type_constraint_def( unique int id: @unified_equality_type_constraint, - int left: @unified_type_expr ref, - int right: @unified_type_expr ref + int left: @unified_expr ref, + int right: @unified_expr ref ); -@unified_expr = @unified_array_literal | @unified_assign_expr | @unified_binary_expr | @unified_block | @unified_break_expr | @unified_call_expr | @unified_compound_assign_expr | @unified_continue_expr | @unified_function_expr | @unified_if_expr | @unified_key_value_pair | @unified_map_literal | @unified_member_access_expr | @unified_name_expr | @unified_pattern | @unified_pattern_guard_expr | @unified_return_expr | @unified_switch_expr | @unified_throw_expr | @unified_token_boolean_literal | @unified_token_builtin_expr | @unified_token_empty_expr | @unified_token_float_literal | @unified_token_int_literal | @unified_token_regex_literal | @unified_token_string_literal | @unified_token_super_expr | @unified_token_unsupported_node | @unified_try_expr | @unified_tuple_expr | @unified_type_cast_expr | @unified_type_test_expr | @unified_unary_expr | @unified_unresolved_operator_sequence - -unified_expr_equality_pattern_def( - unique int id: @unified_expr_equality_pattern, - int expr: @unified_expr ref -); +@unified_expr = @unified_array_literal | @unified_binary_expr | @unified_block | @unified_break_expr | @unified_bulk_importing_pattern | @unified_call_expr | @unified_conditional_pattern | @unified_continue_expr | @unified_expr_pattern | @unified_function_expr | @unified_generic_type_expr | @unified_if_expr | @unified_key_value_pair | @unified_macro_call_expr | @unified_map_literal | @unified_member_access_expr | @unified_named_pattern | @unified_or_pattern | @unified_pattern_guard_expr | @unified_return_expr | @unified_string_interpolation_expr | @unified_switch_expr | @unified_throw_expr | @unified_token_boolean_literal | @unified_token_builtin_expr | @unified_token_empty_expr | @unified_token_float_literal | @unified_token_identifier | @unified_token_ignore_pattern | @unified_token_inferred_type_expr | @unified_token_int_literal | @unified_token_regex_literal | @unified_token_string_literal | @unified_token_super_expr | @unified_token_unhandled_node | @unified_token_unsupported_node | @unified_try_expr | @unified_tuple_expr | @unified_type_cast_expr | @unified_type_test_expr | @unified_unary_expr | @unified_unresolved_operator_sequence @unified_expr_or_operator = @unified_expr | @unified_token_infix_operator -@unified_expr_or_type = @unified_expr | @unified_type_expr +#keyset[unified_expr_pattern, index] +unified_expr_pattern_modifier( + int unified_expr_pattern: @unified_expr_pattern ref, + int index: int ref, + unique int modifier: @unified_token_modifier ref +); + +unified_expr_pattern_def( + unique int id: @unified_expr_pattern, + int expr: @unified_expr ref +); unified_for_each_stmt_body( unique int unified_for_each_stmt: @unified_for_each_stmt ref, @@ -493,7 +476,7 @@ unified_for_each_stmt_modifier( unified_for_each_stmt_def( unique int id: @unified_for_each_stmt, int iterable: @unified_expr ref, - int pattern: @unified_pattern ref + int pattern: @unified_expr ref ); unified_function_declaration_body( @@ -517,7 +500,7 @@ unified_function_declaration_parameter( unified_function_declaration_return_type( unique int unified_function_declaration: @unified_function_declaration ref, - unique int return_type: @unified_type_expr ref + unique int return_type: @unified_expr ref ); #keyset[unified_function_declaration, index] @@ -536,7 +519,12 @@ unified_function_declaration_type_parameter( unified_function_declaration_def( unique int id: @unified_function_declaration, - int name: @unified_token_identifier ref + int name_node: @unified_token_identifier ref +); + +unified_function_expr_body( + unique int unified_function_expr: @unified_function_expr ref, + unique int body: @unified_block ref ); #keyset[unified_function_expr, index] @@ -562,36 +550,23 @@ unified_function_expr_parameter( unified_function_expr_return_type( unique int unified_function_expr: @unified_function_expr ref, - unique int return_type: @unified_type_expr ref + unique int return_type: @unified_expr ref ); unified_function_expr_def( - unique int id: @unified_function_expr, - int body: @unified_block ref -); - -#keyset[unified_function_type_expr, index] -unified_function_type_expr_parameter( - int unified_function_type_expr: @unified_function_type_expr ref, - int index: int ref, - unique int parameter: @unified_parameter ref -); - -unified_function_type_expr_def( - unique int id: @unified_function_type_expr, - int return_type: @unified_type_expr ref + unique int id: @unified_function_expr ); #keyset[unified_generic_type_expr, index] unified_generic_type_expr_type_argument( int unified_generic_type_expr: @unified_generic_type_expr ref, int index: int ref, - unique int type_argument: @unified_type_expr ref + unique int type_argument: @unified_expr ref ); unified_generic_type_expr_def( unique int id: @unified_generic_type_expr, - int base: @unified_type_expr ref + int base: @unified_expr ref ); unified_guard_if_stmt_def( @@ -624,7 +599,7 @@ unified_import_declaration_modifier( unified_import_declaration_pattern( unique int unified_import_declaration: @unified_import_declaration ref, - unique int pattern: @unified_pattern ref + unique int pattern: @unified_expr ref ); unified_import_declaration_def( @@ -652,10 +627,29 @@ unified_key_value_pair_def( unified_labeled_stmt_def( unique int id: @unified_labeled_stmt, - int label: @unified_token_identifier ref, + int label_name_node: @unified_token_identifier ref, int stmt: @unified_stmt ref ); +#keyset[unified_macro_call_expr, index] +unified_macro_call_expr_argument( + int unified_macro_call_expr: @unified_macro_call_expr ref, + int index: int ref, + unique int argument: @unified_argument ref +); + +#keyset[unified_macro_call_expr, index] +unified_macro_call_expr_type_argument( + int unified_macro_call_expr: @unified_macro_call_expr ref, + int index: int ref, + unique int type_argument: @unified_expr ref +); + +unified_macro_call_expr_def( + unique int id: @unified_macro_call_expr, + int macro_name_node: @unified_token_identifier ref +); + #keyset[unified_map_literal, index] unified_map_literal_element( int unified_map_literal: @unified_map_literal ref, @@ -667,44 +661,25 @@ unified_map_literal_def( unique int id: @unified_map_literal ); -@unified_member = @unified_accessor_declaration | @unified_associated_type_declaration | @unified_class_like_declaration | @unified_constructor_declaration | @unified_destructor_declaration | @unified_function_declaration | @unified_initializer_declaration | @unified_token_unsupported_node | @unified_type_alias_declaration | @unified_variable_declaration +@unified_member = @unified_accessor_declaration | @unified_associated_type_declaration | @unified_class_like_declaration | @unified_constructor_declaration | @unified_destructor_declaration | @unified_function_declaration | @unified_initializer_declaration | @unified_token_unhandled_node | @unified_token_unsupported_node | @unified_type_alias_declaration | @unified_variable_declaration unified_member_access_expr_def( unique int id: @unified_member_access_expr, - int base: @unified_expr_or_type ref, - int member: @unified_token_identifier ref + int base: @unified_expr ref, + int member_name_node: @unified_token_identifier ref ); -unified_name_expr_def( - unique int id: @unified_name_expr, - int identifier: @unified_token_identifier ref -); - -#keyset[unified_name_pattern, index] -unified_name_pattern_modifier( - int unified_name_pattern: @unified_name_pattern ref, +#keyset[unified_named_pattern, index] +unified_named_pattern_modifier( + int unified_named_pattern: @unified_named_pattern ref, int index: int ref, unique int modifier: @unified_token_modifier ref ); -unified_name_pattern_sub_pattern( - unique int unified_name_pattern: @unified_name_pattern ref, - unique int sub_pattern: @unified_pattern ref -); - -unified_name_pattern_def( - unique int id: @unified_name_pattern, - int identifier: @unified_token_identifier ref -); - -unified_named_type_expr_qualifier( - unique int unified_named_type_expr: @unified_named_type_expr ref, - unique int qualifier: @unified_type_expr ref -); - -unified_named_type_expr_def( - unique int id: @unified_named_type_expr, - int name: @unified_token_identifier ref +unified_named_pattern_def( + unique int id: @unified_named_pattern, + int name_node: @unified_token_identifier ref, + int sub_pattern: @unified_expr ref ); @unified_operator = @unified_token_infix_operator | @unified_token_postfix_operator | @unified_token_prefix_operator @@ -728,7 +703,7 @@ unified_operator_syntax_declaration_precedence( unified_operator_syntax_declaration_def( unique int id: @unified_operator_syntax_declaration, - int name: @unified_token_identifier ref + int name_node: @unified_token_identifier ref ); #keyset[unified_or_pattern, index] @@ -742,7 +717,7 @@ unified_or_pattern_modifier( unified_or_pattern_pattern( int unified_or_pattern: @unified_or_pattern ref, int index: int ref, - unique int pattern: @unified_pattern ref + unique int pattern: @unified_expr ref ); unified_or_pattern_def( @@ -754,9 +729,9 @@ unified_parameter_default( unique int default: @unified_expr ref ); -unified_parameter_external_name( +unified_parameter_external_name_node( unique int unified_parameter: @unified_parameter ref, - unique int external_name: @unified_token_identifier ref + unique int external_name_node: @unified_token_identifier ref ); #keyset[unified_parameter, index] @@ -768,40 +743,21 @@ unified_parameter_modifier( unified_parameter_pattern( unique int unified_parameter: @unified_parameter ref, - unique int pattern: @unified_pattern ref + unique int pattern: @unified_expr ref ); unified_parameter_type( unique int unified_parameter: @unified_parameter ref, - unique int type__: @unified_type_expr ref + unique int type__: @unified_expr ref ); unified_parameter_def( unique int id: @unified_parameter ); -@unified_pattern = @unified_bulk_importing_pattern | @unified_conditional_pattern | @unified_constructor_pattern | @unified_expr_equality_pattern | @unified_name_pattern | @unified_or_pattern | @unified_token_ignore_pattern | @unified_token_unsupported_node | @unified_tuple_pattern - -unified_pattern_element_key( - unique int unified_pattern_element: @unified_pattern_element ref, - unique int key__: @unified_token_identifier ref -); - -#keyset[unified_pattern_element, index] -unified_pattern_element_modifier( - int unified_pattern_element: @unified_pattern_element ref, - int index: int ref, - unique int modifier: @unified_token_modifier ref -); - -unified_pattern_element_def( - unique int id: @unified_pattern_element, - int pattern: @unified_pattern ref -); - unified_pattern_guard_expr_def( unique int id: @unified_pattern_guard_expr, - int pattern: @unified_pattern ref, + int pattern: @unified_expr ref, int value: @unified_expr ref ); @@ -814,7 +770,25 @@ unified_return_expr_def( unique int id: @unified_return_expr ); -@unified_stmt = @unified_accessor_declaration | @unified_class_like_declaration | @unified_constructor_declaration | @unified_destructor_declaration | @unified_do_while_stmt | @unified_expr | @unified_for_each_stmt | @unified_function_declaration | @unified_guard_if_stmt | @unified_import_declaration | @unified_labeled_stmt | @unified_operator_syntax_declaration | @unified_type_alias_declaration | @unified_variable_declaration | @unified_while_stmt +@unified_stmt = @unified_accessor_declaration | @unified_class_like_declaration | @unified_constructor_declaration | @unified_defer_stmt | @unified_destructor_declaration | @unified_do_while_stmt | @unified_expr | @unified_for_each_stmt | @unified_function_declaration | @unified_guard_if_stmt | @unified_import_declaration | @unified_labeled_stmt | @unified_operator_syntax_declaration | @unified_type_alias_declaration | @unified_variable_declaration | @unified_while_stmt + +#keyset[unified_string_interpolation_expr, index] +unified_string_interpolation_expr_element( + int unified_string_interpolation_expr: @unified_string_interpolation_expr ref, + int index: int ref, + unique int element: @unified_expr ref +); + +#keyset[unified_string_interpolation_expr, index] +unified_string_interpolation_expr_modifier( + int unified_string_interpolation_expr: @unified_string_interpolation_expr ref, + int index: int ref, + unique int modifier: @unified_token_modifier ref +); + +unified_string_interpolation_expr_def( + unique int id: @unified_string_interpolation_expr +); #keyset[unified_switch_case, index] unified_switch_case_modifier( @@ -825,7 +799,7 @@ unified_switch_case_modifier( unified_switch_case_pattern( unique int unified_switch_case: @unified_switch_case ref, - unique int pattern: @unified_pattern ref + unique int pattern: @unified_expr ref ); unified_switch_case_def( @@ -889,52 +863,13 @@ unified_try_expr_def( unified_tuple_expr_element( int unified_tuple_expr: @unified_tuple_expr ref, int index: int ref, - unique int element: @unified_expr ref + unique int element: @unified_argument ref ); unified_tuple_expr_def( unique int id: @unified_tuple_expr ); -#keyset[unified_tuple_pattern, index] -unified_tuple_pattern_element( - int unified_tuple_pattern: @unified_tuple_pattern ref, - int index: int ref, - unique int element: @unified_pattern_element ref -); - -#keyset[unified_tuple_pattern, index] -unified_tuple_pattern_modifier( - int unified_tuple_pattern: @unified_tuple_pattern ref, - int index: int ref, - unique int modifier: @unified_token_modifier ref -); - -unified_tuple_pattern_def( - unique int id: @unified_tuple_pattern -); - -unified_tuple_type_element_name( - unique int unified_tuple_type_element: @unified_tuple_type_element ref, - unique int name: @unified_token_identifier ref -); - -unified_tuple_type_element_def( - unique int id: @unified_tuple_type_element, - int type__: @unified_type_expr ref -); - -#keyset[unified_tuple_type_expr, index] -unified_tuple_type_expr_element( - int unified_tuple_type_expr: @unified_tuple_type_expr ref, - int index: int ref, - unique int element: @unified_tuple_type_element ref -); - -unified_tuple_type_expr_def( - unique int id: @unified_tuple_type_expr -); - #keyset[unified_type_alias_declaration, index] unified_type_alias_declaration_modifier( int unified_type_alias_declaration: @unified_type_alias_declaration ref, @@ -958,24 +893,22 @@ unified_type_alias_declaration_type_parameter( unified_type_alias_declaration_def( unique int id: @unified_type_alias_declaration, - int name: @unified_token_identifier ref, - int type__: @unified_type_expr ref + int name_node: @unified_token_identifier ref, + int type__: @unified_expr ref ); unified_type_cast_expr_def( unique int id: @unified_type_cast_expr, int expr: @unified_expr ref, int operator: @unified_token_infix_operator ref, - int type__: @unified_type_expr ref + int type__: @unified_expr ref ); @unified_type_constraint = @unified_bound_type_constraint | @unified_equality_type_constraint -@unified_type_expr = @unified_function_type_expr | @unified_generic_type_expr | @unified_named_type_expr | @unified_token_inferred_type_expr | @unified_token_unsupported_node | @unified_tuple_type_expr - unified_type_parameter_bound( unique int unified_type_parameter: @unified_type_parameter ref, - unique int bound: @unified_type_expr ref + unique int bound: @unified_expr ref ); #keyset[unified_type_parameter, index] @@ -987,20 +920,18 @@ unified_type_parameter_modifier( unified_type_parameter_def( unique int id: @unified_type_parameter, - int name: @unified_token_identifier ref + int name_node: @unified_token_identifier ref +); + +unified_type_test_expr_operator( + unique int unified_type_test_expr: @unified_type_test_expr ref, + unique int operator: @unified_token_infix_operator ref ); unified_type_test_expr_def( unique int id: @unified_type_test_expr, int expr: @unified_expr ref, - int operator: @unified_token_infix_operator ref, - int type__: @unified_type_expr ref -); - -unified_type_test_pattern_def( - unique int id: @unified_type_test_pattern, - int pattern: @unified_pattern ref, - int type__: @unified_type_expr ref + int type__: @unified_expr ref ); unified_unary_expr_def( @@ -1029,7 +960,7 @@ unified_variable_declaration_modifier( unified_variable_declaration_type( unique int unified_variable_declaration: @unified_variable_declaration ref, - unique int type__: @unified_type_expr ref + unique int type__: @unified_expr ref ); unified_variable_declaration_value( @@ -1039,7 +970,7 @@ unified_variable_declaration_value( unified_variable_declaration_def( unique int id: @unified_variable_declaration, - int pattern: @unified_pattern ref + int pattern: @unified_expr ref ); unified_while_stmt_body( @@ -1083,7 +1014,8 @@ case @unified_token.kind of | 15 = @unified_token_regex_literal | 16 = @unified_token_string_literal | 17 = @unified_token_super_expr -| 18 = @unified_token_unsupported_node +| 18 = @unified_token_unhandled_node +| 19 = @unified_token_unsupported_node ; @@ -1093,7 +1025,7 @@ unified_trivia_tokeninfo( string value: string ref ); -@unified_ast_node = @unified_accessor_declaration | @unified_argument | @unified_array_literal | @unified_assign_expr | @unified_associated_type_declaration | @unified_base_type | @unified_binary_expr | @unified_block | @unified_bound_type_constraint | @unified_break_expr | @unified_bulk_importing_pattern | @unified_call_expr | @unified_catch_clause | @unified_class_like_declaration | @unified_compound_assign_expr | @unified_conditional_pattern | @unified_constructor_declaration | @unified_constructor_pattern | @unified_continue_expr | @unified_destructor_declaration | @unified_do_while_stmt | @unified_equality_type_constraint | @unified_expr_equality_pattern | @unified_for_each_stmt | @unified_function_declaration | @unified_function_expr | @unified_function_type_expr | @unified_generic_type_expr | @unified_guard_if_stmt | @unified_if_expr | @unified_import_declaration | @unified_initializer_declaration | @unified_key_value_pair | @unified_labeled_stmt | @unified_map_literal | @unified_member_access_expr | @unified_name_expr | @unified_name_pattern | @unified_named_type_expr | @unified_operator_syntax_declaration | @unified_or_pattern | @unified_parameter | @unified_pattern_element | @unified_pattern_guard_expr | @unified_return_expr | @unified_switch_case | @unified_switch_expr | @unified_throw_expr | @unified_token | @unified_top_level | @unified_trivia_token | @unified_try_expr | @unified_tuple_expr | @unified_tuple_pattern | @unified_tuple_type_element | @unified_tuple_type_expr | @unified_type_alias_declaration | @unified_type_cast_expr | @unified_type_parameter | @unified_type_test_expr | @unified_type_test_pattern | @unified_unary_expr | @unified_unresolved_operator_sequence | @unified_variable_declaration | @unified_while_stmt +@unified_ast_node = @unified_accessor_declaration | @unified_argument | @unified_array_literal | @unified_associated_type_declaration | @unified_base_type | @unified_binary_expr | @unified_block | @unified_bound_type_constraint | @unified_break_expr | @unified_bulk_importing_pattern | @unified_call_expr | @unified_catch_clause | @unified_class_like_declaration | @unified_conditional_pattern | @unified_constructor_declaration | @unified_continue_expr | @unified_defer_stmt | @unified_destructor_declaration | @unified_do_while_stmt | @unified_equality_type_constraint | @unified_expr_pattern | @unified_for_each_stmt | @unified_function_declaration | @unified_function_expr | @unified_generic_type_expr | @unified_guard_if_stmt | @unified_if_expr | @unified_import_declaration | @unified_initializer_declaration | @unified_key_value_pair | @unified_labeled_stmt | @unified_macro_call_expr | @unified_map_literal | @unified_member_access_expr | @unified_named_pattern | @unified_operator_syntax_declaration | @unified_or_pattern | @unified_parameter | @unified_pattern_guard_expr | @unified_return_expr | @unified_string_interpolation_expr | @unified_switch_case | @unified_switch_expr | @unified_throw_expr | @unified_token | @unified_top_level | @unified_trivia_token | @unified_try_expr | @unified_tuple_expr | @unified_type_alias_declaration | @unified_type_cast_expr | @unified_type_parameter | @unified_type_test_expr | @unified_unary_expr | @unified_unresolved_operator_sequence | @unified_variable_declaration | @unified_while_stmt unified_ast_node_location( unique int node: @unified_ast_node ref, diff --git a/unified/ql/lib/unified.qll b/unified/ql/lib/unified.qll index 033d00aa6def..7aed5441f0f7 100644 --- a/unified/ql/lib/unified.qll +++ b/unified/ql/lib/unified.qll @@ -6,5 +6,7 @@ import codeql.Locations import codeql.files.FileSystem import codeql.unified.internal.Ast::UnifiedFinal import codeql.unified.internal.AstExtra::Public -import codeql.unified.internal.ControlFlowGraph -import codeql.unified.internal.LocalNameBinding::Public +import codeql.unified.internal.ControlFlowGraph::Public +import codeql.unified.internal.NameBinding::Public +import codeql.unified.internal.dataflow.DataFlowPublic +import codeql.unified.internal.mad.LegacyMaD::Public diff --git a/unified/ql/lib/utils/test/CommentUtil.qll b/unified/ql/lib/utils/test/CommentUtil.qll index bd6f887a4010..932be8671a86 100644 --- a/unified/ql/lib/utils/test/CommentUtil.qll +++ b/unified/ql/lib/utils/test/CommentUtil.qll @@ -12,7 +12,7 @@ predicate plainCommentAt(string filepath, int line, string text) { predicate keyValueCommentAt(string filepath, int line, string key, string value) { exists(string text, string regexp, string match | plainCommentAt(filepath, line, text) and - regexp = "(\\w+)=([\\w.0-9]+)" and + regexp = "([\\w.-]+)=([\\w.0-9]+)" and match = text.regexpFind(regexp, _, _) and key = match.regexpCapture(regexp, 1) and value = match.regexpCapture(regexp, 2) diff --git a/unified/ql/lib/utils/test/ExternalLocationPostProcessing.ql b/unified/ql/lib/utils/test/ExternalLocationPostProcessing.ql new file mode 100644 index 000000000000..bf2d21d9b65c --- /dev/null +++ b/unified/ql/lib/utils/test/ExternalLocationPostProcessing.ql @@ -0,0 +1,9 @@ +/** + * @kind test-postprocess + */ + +private import unified +private import codeql.util.test.ExternalLocationPostProcessing +import Make + +private string getSourceLocationPrefix() { sourceLocationPrefix(result) } diff --git a/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql index 039194bc2e38..96e655dbecfb 100644 --- a/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql +++ b/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -6,16 +6,4 @@ private import unified private import codeql.util.test.InlineExpectationsTest as T private import internal.InlineExpectationsTestImpl import T::TestPostProcessing -import T::TestPostProcessing::Make - -private module Input implements T::TestPostProcessing::InputSig { - string getRelativeUrl(Location location) { - exists(File f, int startline, int startcolumn, int endline, int endcolumn | - location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - f = location.getFile() - | - result = - f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn - ) - } -} +import T::TestPostProcessing::Make diff --git a/unified/ql/lib/utils/test/InlineFlowTest.qll b/unified/ql/lib/utils/test/InlineFlowTest.qll new file mode 100644 index 000000000000..967a2446c32c --- /dev/null +++ b/unified/ql/lib/utils/test/InlineFlowTest.qll @@ -0,0 +1,38 @@ +/** + * Inline flow tests for the unified language. + * See `shared/util/codeql/dataflow/test/InlineFlowTest.qll` + */ + +private import unified +private import codeql.dataflow.test.InlineFlowTest +private import codeql.unified.internal.dataflow.AllDataFlow +private import internal.InlineExpectationsTestImpl as InlineExpectationsTestImpl + +private string getCalleeName(CallExpr call) { result = call.getCallee().(Identifier).getValue() } + +private module FlowTestImpl implements InputSig { + predicate defaultSource(DataFlow::Node source) { getCalleeName(source.asExpr()) = "source" } + + predicate defaultSink(DataFlow::Node sink) { + any(CallExpr call | getCalleeName(call) = "sink").getAnArgument().getValue() = sink.asExpr() + } + + private string getSourceArgString(DataFlow::Node src) { + defaultSource(src) and + result = src.asExpr().(CallExpr).getArgument(0).getValue().getStringValue() + } + + bindingset[src, sink] + string getArgString(DataFlow::Node src, DataFlow::Node sink) { + ( + result = getSourceArgString(src) + or + not exists(getSourceArgString(src)) and result = "" + ) and + exists(sink) + } + + predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) { none() } +} + +import InlineFlowTestMake diff --git a/unified/ql/lib/utils/test/TestUtils.qll b/unified/ql/lib/utils/test/TestUtils.qll index 8a35f6277465..f99f24b8aabb 100644 --- a/unified/ql/lib/utils/test/TestUtils.qll +++ b/unified/ql/lib/utils/test/TestUtils.qll @@ -1,29 +1,44 @@ private import unified private import CommentUtil -private import codeql.unified.internal.StaticNameBinding +private import codeql.unified.internal.NameBinding +private import codeql.unified.internal.typeinference.TypeInference as TypeInference +private import codeql.unified.internal.typeinference.TypeInferencePlugin private string deriveClassName(ClassLikeDeclaration cls) { - not exists(cls.getParent().getEnclosingClass()) and - result = cls.getName().getValue() + not exists(cls.getEnclosingClass()) and + result = cls.getName() or - result = deriveClassName(cls.getParent().getEnclosingClass()) + "." + cls.getName().getValue() + result = getStaticBindingTargetFromRef(cls.getExtensionTarget()).getValue() + or + result = deriveClassName(cls.getEnclosingClass()) + "." + cls.getName() +} + +private string getTupleFieldName(NameBinding decl) { + decl = any(TupleType tt).getField(result).getPattern() } -private string defaultName(NameDeclaration decl) { - exists(ClassLikeDeclaration cls | - decl.getDeclaration() = cls.getAMember() and - result = deriveClassName(cls) + "." + decl.getName() +private string defaultName(NameBinding decl) { + exists(string name | + name = getTupleFieldName(decl) + or + not exists(getTupleFieldName(decl)) and name = decl.getName() + | + exists(ClassLikeDeclaration cls | + decl.getDeclaration() = cls.getAMember() and + result = deriveClassName(cls) + "." + name + ) + or + not decl.getDeclaration() = any(ClassLikeDeclaration cls).getAMember() and + result = name ) - or - not decl.getDeclaration() = any(ClassLikeDeclaration cls).getAMember() and - result = decl.getName() } -private predicate declAt(NameDeclaration v, string filepath, int line) { +private predicate declAt(NameBinding v, string filepath, int line) { v.getLocation().hasLocationInfo(filepath, line, _, _, _) } -predicate nameDeclaration(NameDeclaration v, string alias) { +/** Holds if the name-binding `v` has been assigned the given `alias` by a comment in the test code. */ +predicate nameBinding(NameBinding v, string alias) { exists(string filepath, int line | declAt(v, filepath, line) | keyValueCommentAt(filepath, line, "name", alias) or @@ -31,3 +46,36 @@ predicate nameDeclaration(NameDeclaration v, string alias) { alias = defaultName(v) ) } + +private string defaultCallableName(Callable c) { + exists(TypeInference::Input3::Callable callable | callable.asCallable() = c | + not c instanceof EnumConstructor and + exists(ClassLikeDeclaration cls | + c = cls.getAMember() and + result = deriveClassName(cls) + "." + callable.getName() + ) + or + not c = any(ClassLikeDeclaration cls).getAMember() and + result = callable.getName() + or + exists(ClassLikeDeclaration enum, EnumConstructor ctor | + ctor = c and + enum = ctor.getEnum() and + result = deriveClassName(enum) + "." + ctor.getEnclosingClass().getName() + ) + ) +} + +private predicate callableAt(Callable c, string filepath, int line) { + c.getLocation().hasLocationInfo(filepath, line, _, _, _) +} + +/** Holds if the callable `c` has been assigned the given `alias` by a comment in the test code. */ +predicate callableName(Callable c, string alias) { + exists(string filepath, int line | callableAt(c, filepath, line) | + keyValueCommentAt(filepath, line, "name", alias) + or + not keyValueCommentAt(filepath, line, "name", _) and + alias = defaultCallableName(c) + ) +} diff --git a/unified/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/unified/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index b73301687412..7379e1b94e66 100644 --- a/unified/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/unified/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -9,4 +9,14 @@ module Impl implements InlineExpectationsTestSig { } class Location = U::Location; + + string getRelativeUrl(Location location) { + exists(File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } } diff --git a/unified/ql/src/diagnostic/CallGraph.ql b/unified/ql/src/diagnostic/CallGraph.ql new file mode 100644 index 000000000000..96477bffe193 --- /dev/null +++ b/unified/ql/src/diagnostic/CallGraph.ql @@ -0,0 +1,17 @@ +/** + * @name Call graph + * @description Calls that could be resolved to a target callable + * @kind problem + * @problem.severity recommendation + * @id unified/diagnostic/call-graph + * @tags meta + * @precision very-low + */ + +import unified +import codeql.unified.internal.dataflow.DataFlowCallable +import codeql.unified.internal.AnalysisQuality + +from CallGraphStats::Candidate c, DataFlowCallable target +where target = c.getTarget() +select c, "Call to $@.", target, target.toString() diff --git a/unified/ql/src/diagnostic/ExtractorInformation.ql b/unified/ql/src/diagnostic/ExtractorInformation.ql index 6e52b4fa0887..ddf225db6fd8 100644 --- a/unified/ql/src/diagnostic/ExtractorInformation.ql +++ b/unified/ql/src/diagnostic/ExtractorInformation.ql @@ -41,7 +41,9 @@ where numberOfLinesOfCode(key, value) or numberOfLinesOfCodeByExtension(key, value) or StaticNameResolutionStatsReport::keyValuePair(key, value) or - FilesCoveredByModuleManifestStatsReport::keyValuePair(key, value) + FilesCoveredByModuleManifestStatsReport::keyValuePair(key, value) or + CallGraphStatsReport::keyValuePair(key, value) or + TypeMentionStatsReport::keyValuePair(key, value) ) and /* Infinity */ value != 1.0 / 0.0 and diff --git a/unified/ql/src/diagnostic/FilesCoveredByModuleManifest.ql b/unified/ql/src/diagnostic/FilesCoveredByModuleManifest.ql index 6ac4cec641bd..ca226bedc005 100644 --- a/unified/ql/src/diagnostic/FilesCoveredByModuleManifest.ql +++ b/unified/ql/src/diagnostic/FilesCoveredByModuleManifest.ql @@ -9,7 +9,7 @@ */ import unified -import codeql.unified.internal.StaticNameBinding +import codeql.unified.internal.NameBinding import codeql.unified.internal.NameBindingPlugin import codeql.unified.internal.AnalysisQuality diff --git a/unified/ql/src/diagnostic/StaticNameResolution.ql b/unified/ql/src/diagnostic/StaticNameResolution.ql index 501c39126e54..b15516a3b7b8 100644 --- a/unified/ql/src/diagnostic/StaticNameResolution.ql +++ b/unified/ql/src/diagnostic/StaticNameResolution.ql @@ -9,7 +9,7 @@ */ import unified -import codeql.unified.internal.StaticNameBinding +import codeql.unified.internal.NameBinding import codeql.unified.internal.AnalysisQuality from StaticNameResolutionStats::Candidate c, NameBindingNode target diff --git a/unified/ql/src/diagnostic/TaintSinks.ql b/unified/ql/src/diagnostic/TaintSinks.ql new file mode 100644 index 000000000000..5709909010a9 --- /dev/null +++ b/unified/ql/src/diagnostic/TaintSinks.ql @@ -0,0 +1,15 @@ +/** + * @name Taint sinks + * @description Taint sinks + * @kind problem + * @problem.severity recommendation + * @id unified/diagnostic/taint-sinks + * @tags meta + * @precision very-low + */ + +import unified + +from DataFlow::Node node, string kind +where Models::isSink(node, kind) +select node, "Sink of kind '" + kind + "'" diff --git a/unified/ql/src/diagnostic/TaintSources.ql b/unified/ql/src/diagnostic/TaintSources.ql new file mode 100644 index 000000000000..95695f45d284 --- /dev/null +++ b/unified/ql/src/diagnostic/TaintSources.ql @@ -0,0 +1,15 @@ +/** + * @name Taint sources + * @description Taint sources + * @kind problem + * @problem.severity recommendation + * @id unified/diagnostic/taint-sources + * @tags meta + * @precision very-low + */ + +import unified + +from DataFlow::Node node, string kind +where Models::isSource(node, kind) +select node, "Source of kind '" + kind + "'" diff --git a/unified/ql/src/queries/security/CWE-022/PathInjection.qhelp b/unified/ql/src/queries/security/CWE-022/PathInjection.qhelp new file mode 100644 index 000000000000..a4ec83290a19 --- /dev/null +++ b/unified/ql/src/queries/security/CWE-022/PathInjection.qhelp @@ -0,0 +1,58 @@ + + + + +

      Accessing paths controlled by users can expose resources to attackers.

      + +

      Paths that are naively constructed from data controlled by a user may contain unexpected special characters, +such as ... Such a path could point to any directory on the file system.

      +
      + + + +

      Validate user input before using it to construct a file path. Ideally, follow these rules:

      + +
        +
      • Do not allow more than a single . character.
      • +
      • Do not allow directory separators such as / or \ (depending on the file system).
      • +
      • Do not rely on simply replacing problematic sequences such as ../. For example, after applying this filter to +.../...// the resulting string would still be ../.
      • +
      • Use a whitelist of known good patterns.
      • +
      + +
      + + +

      +The following code shows two bad examples. +

      + + + +

      +In the first, a file name is read from an HTTP request and then used to access a file. In this case, a malicious response could include a file name that is an absolute path, such as +"/Applications/(current_application)/Documents/sensitive.data". +

      + +

      +In the second bad example, it appears that the user is restricted to opening a file within the +"/Library/Caches" home directory. In this case, a malicious response could contain a file name containing +special characters. For example, the string "../../Documents/sensitive.data" will result in the code +reading the file located at "/Applications/(current_application)/Library/Caches/../../Documents/sensitive.data", +which contains users' sensitive data. This file may then be made accessible to an attacker, giving them access to all this data. +

      + +

      +In the following (good) example, the path used to access the file system is normalized before being checked against a +known prefix. This ensures that regardless of the user input, the resulting path is safe. +

      + + +
      + + +
    • OWASP: Path Traversal.
    • +
      +
      diff --git a/unified/ql/src/queries/security/CWE-022/PathInjection.ql b/unified/ql/src/queries/security/CWE-022/PathInjection.ql new file mode 100644 index 000000000000..20779510fc1b --- /dev/null +++ b/unified/ql/src/queries/security/CWE-022/PathInjection.ql @@ -0,0 +1,70 @@ +/** + * @name Uncontrolled data used in path expression + * @description Accessing paths influenced by users can allow an attacker to access unexpected resources. + * @kind path-problem + * @problem.severity error + * @security-severity 7.5 + * @precision high + * @id unified/swift/path-injection + * @tags security + * external/cwe/cwe-022 + * external/cwe/cwe-023 + * external/cwe/cwe-036 + * external/cwe/cwe-073 + * external/cwe/cwe-099 + */ + +import unified + +/** + * A string that might be a label for a path argument. + */ +pragma[inline] +private predicate pathLikeHeuristic(string label) { + label = + [ + "atFile", "atPath", "atDirectory", "toFile", "toPath", "toDirectory", "inFile", "inPath", + "inDirectory", "contentsOfFile", "contentsOfPath", "contentsOfDirectory", "filePath", + "directory", "directoryPath" + ] +} + +predicate heuristicSink(DataFlow::Node node) { + node.isIncomingValue(any(Identifier id | id.getValue() = "sqlite3_temp_directory")) + or + exists(Argument arg | + pathLikeHeuristic(arg.getName()) and + node.asExpr() = arg.getValue() + ) +} + +module PathInjectionConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { Models::isSource(node, _) } + + predicate isSink(DataFlow::Node node) { + Models::isSink(node, "path-injection") or + heuristicSink(node) + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(MemberAccessExpr expr | + expr.getMemberName() = "path" and + node1.isResultValue(expr.getBase()) and + node2.isResultValue(expr) + ) + } + + predicate isBarrier(DataFlow::Node node) { + // TODO: add barriers + none() + } +} + +module PathInjectionFlow = TaintTracking::Global; + +import PathInjectionFlow::PathGraph + +from PathInjectionFlow::PathNode source, PathInjectionFlow::PathNode sink +where PathInjectionFlow::flowPath(source, sink) +select sink.getNode(), source, sink, "This path depends on a $@.", source.getNode(), + "user-provided value" diff --git a/unified/ql/src/queries/security/CWE-022/PathInjectionBad.swift b/unified/ql/src/queries/security/CWE-022/PathInjectionBad.swift new file mode 100644 index 000000000000..9ce9d0f42e8b --- /dev/null +++ b/unified/ql/src/queries/security/CWE-022/PathInjectionBad.swift @@ -0,0 +1,10 @@ +let fm = FileManager.default +let path = try String(contentsOf: URL(string: "http://example.com/")!) + +// BAD +return fm.contents(atPath: path) + +// BAD +if (path.hasPrefix(NSHomeDirectory() + "/Library/Caches")) { + return fm.contents(atPath: path) +} diff --git a/unified/ql/src/queries/security/CWE-022/PathInjectionGood.swift b/unified/ql/src/queries/security/CWE-022/PathInjectionGood.swift new file mode 100644 index 000000000000..8e0799fc4862 --- /dev/null +++ b/unified/ql/src/queries/security/CWE-022/PathInjectionGood.swift @@ -0,0 +1,8 @@ +let fm = FileManager.default +let path = try String(contentsOf: URL(string: "http://example.com/")!) + +// GOOD +let filePath = FilePath(stringLiteral: path) +if (filePath.lexicallyNormalized().starts(with: FilePath(stringLiteral: NSHomeDirectory() + "/Library/Caches"))) { + return fm.contents(atPath: path) +} diff --git a/unified/ql/src/queries/security/CWE-312/CleartextLogging.qhelp b/unified/ql/src/queries/security/CWE-312/CleartextLogging.qhelp new file mode 100644 index 000000000000..8de3f21878f0 --- /dev/null +++ b/unified/ql/src/queries/security/CWE-312/CleartextLogging.qhelp @@ -0,0 +1,46 @@ + + + + +

      +Attackers could gain access to sensitive information that is logged unencrypted. +

      +
      + + +

      +Always make sure to encrypt or obfuscate sensitive information before you log it. +

      + +

      +Generally, you should decrypt sensitive information only at the point where it is necessary for it to be used in cleartext. +

      + +

      +Be aware that external processes often store the standard output and +standard error streams of the application. This will include logged sensitive information. +

      +
      + + +

      +The following example code logs user credentials (in this case, their password) +in plaintext: +

      + +

      +Instead, you should encrypt or obfuscate the credentials, or omit them entirely: +

      + +
      + + + +
    • M. Dowd, J. McDonald and J. Schuhm, The Art of Software Security Assessment, 1st Edition, Chapter 2 - 'Common Vulnerabilities of Encryption', p. 43. Addison Wesley, 2006.
    • +
    • M. Howard and D. LeBlanc, Writing Secure Code, 2nd Edition, Chapter 9 - 'Protecting Secret Data', p. 299. Microsoft, 2002.
    • +
    • OWASP: Logging Cheat Sheet.
    • + +
      +
      diff --git a/unified/ql/src/queries/security/CWE-312/CleartextLogging.ql b/unified/ql/src/queries/security/CWE-312/CleartextLogging.ql new file mode 100644 index 000000000000..4aa751a1e91a --- /dev/null +++ b/unified/ql/src/queries/security/CWE-312/CleartextLogging.ql @@ -0,0 +1,52 @@ +/** + * @name Cleartext logging of sensitive information + * @description Logging sensitive information in plaintext can + * expose it to an attacker. + * @kind path-problem + * @problem.severity error + * @security-severity 7.5 + * @precision high + * @id unified/swift/cleartext-logging + * @tags security + * external/cwe/cwe-312 + * external/cwe/cwe-359 + * external/cwe/cwe-532 + */ + +// +// FIXME: This is a deliberately dumb and noisy version of the query used to exercise data flow early on. +// +import unified +import codeql.concepts.internal.SensitiveDataHeuristics + +private string getNameFromExpr(Expr e) { + result = e.(IdentifierExpr).getValue() + or + result = e.(MemberAccessExpr).getMemberName() +} + +module DummyConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { + exists(string name | + name = getNameFromExpr(node.asExpr()) and + HeuristicNames::nameIndicatesSensitiveData(name) + ) + } + + predicate isSink(DataFlow::Node node) { + exists(CallExpr call | + getNameFromExpr(call.getCallee()).regexpMatch("(?i)(ns)?(log|warn(ing)?|error|print).*") and + node.asExpr() = call.getAnArgument().getValue() + ) + } + + predicate isBarrierIn(DataFlow::Node node) { isSource(node) } +} + +module DummyFlow = TaintTracking::Global; + +import DummyFlow::PathGraph + +from DummyFlow::PathNode source, DummyFlow::PathNode sink +where DummyFlow::flowPath(source, sink) +select sink.getNode(), source, sink, "Logging of $@", source.getNode(), "sensitive data" diff --git a/unified/ql/src/queries/security/CWE-312/CleartextLoggingBad.swift b/unified/ql/src/queries/security/CWE-312/CleartextLoggingBad.swift new file mode 100644 index 000000000000..036001e87179 --- /dev/null +++ b/unified/ql/src/queries/security/CWE-312/CleartextLoggingBad.swift @@ -0,0 +1,2 @@ +let password = "P@ssw0rd" +NSLog("User password changed to \(password)") diff --git a/unified/ql/src/queries/security/CWE-312/CleartextLoggingGood.swift b/unified/ql/src/queries/security/CWE-312/CleartextLoggingGood.swift new file mode 100644 index 000000000000..1d90ac5e5656 --- /dev/null +++ b/unified/ql/src/queries/security/CWE-312/CleartextLoggingGood.swift @@ -0,0 +1,2 @@ +let password = "P@ssw0rd" +NSLog("User password changed") diff --git a/unified/ql/src/queries/unusedentities/UnusedVariable.ql b/unified/ql/src/queries/unusedentities/UnusedVariable.ql new file mode 100644 index 000000000000..d5747df44863 --- /dev/null +++ b/unified/ql/src/queries/unusedentities/UnusedVariable.ql @@ -0,0 +1,40 @@ +/** + * @name Unused variable + * @description Unused variables may be an indication that the code is incomplete or has a typo. + * @kind problem + * @problem.severity recommendation + * @id unified/unused-variable + * @precision high + */ + +private import unified + +private predicate isUnusedLocal(LocalName local) { + local.getABinding().fromSource() and // ignore unused implicit locals, and ignore locals in built-ins + not ignoreDeclaration(local.getABinding().getDeclaration()) and // ignore fields, method, etc + not local.getName().regexpMatch("_.*") and + not exists(LocalNameAccess access | + access = local.getAnAccess() and + not access instanceof NameBinding + ) and + not local = any(UnqualifiedMemberAccess access).getImplicitQualifierVariable() +} + +private predicate ignoreDeclaration(AstNode n) { + // ignore fields and methods etc + n = any(ClassLikeDeclaration cls).getAMember() + or + // ignore top-level statements, which are often exported + n = any(TopLevel t).getBody().getAStmt() + or + // Parameters are often needed to satisfy an interface + n instanceof Parameter +} + +string getKind(LocalName local) { + if local instanceof LocalVariable then result = "local variable" else result = "declaration" +} + +from LocalName local +where isUnusedLocal(local) +select local, "Unused " + getKind(local) + " '" + local.getName() + "'" diff --git a/unified/ql/src/summary/SummaryStats.ql b/unified/ql/src/summary/SummaryStats.ql new file mode 100644 index 000000000000..916d3388baff --- /dev/null +++ b/unified/ql/src/summary/SummaryStats.ql @@ -0,0 +1,14 @@ +/** + * @name Summary Statistics + * @description A table of summary statistics about a database. + * @kind metric + * @id unified/summary/summary-statistics + * @tags summary telemetry + */ + +import unified +import codeql.unified.internal.AnalysisQuality + +from string key, int value +where taintStats(key, value) +select key, value order by key diff --git a/unified/ql/test/library-tests/BasicTest/strings.swift b/unified/ql/test/library-tests/BasicTest/strings.swift index db9ae84e980b..0015521eae05 100644 --- a/unified/ql/test/library-tests/BasicTest/strings.swift +++ b/unified/ql/test/library-tests/BasicTest/strings.swift @@ -1 +1,4 @@ -let x = "hello" +let x1 = "hello" +let x2 = "hello \(123) world" +let x3 = "hello \(arg: 123) world" +let x4 = "hello \(1, 2, 3) world" diff --git a/unified/ql/test/library-tests/BasicTest/test.expected b/unified/ql/test/library-tests/BasicTest/test.expected index 301cd90ca2a5..95d54935f8ee 100644 --- a/unified/ql/test/library-tests/BasicTest/test.expected +++ b/unified/ql/test/library-tests/BasicTest/test.expected @@ -1,39 +1,185 @@ -nameExpr -| name_expr.swift:1:9:1:9 | NameExpr | y | -| test.swift:1:8:1:17 | NameExpr | Foundation | -| test.swift:8:9:8:13 | NameExpr | items | -| test.swift:8:22:8:25 | NameExpr | item | -| test.swift:12:16:12:20 | NameExpr | items | -| test.swift:12:31:12:34 | NameExpr | item | -| test.swift:25:18:25:22 | NameExpr | Array | -| test.swift:25:24:25:28 | NameExpr | first | -| test.swift:26:17:26:22 | NameExpr | second | -| test.swift:27:13:27:18 | NameExpr | result | -| test.swift:27:29:27:32 | NameExpr | item | -| test.swift:28:13:28:18 | NameExpr | result | -| test.swift:28:27:28:30 | NameExpr | item | -| test.swift:31:12:31:17 | NameExpr | result | -| test.swift:40:16:40:19 | NameExpr | data | -| test.swift:44:9:44:12 | NameExpr | data | -| test.swift:48:15:48:19 | NameExpr | index | -| test.swift:48:29:48:33 | NameExpr | index | -| test.swift:48:37:48:40 | NameExpr | data | -| test.swift:49:16:49:19 | NameExpr | data | -| test.swift:49:21:49:25 | NameExpr | index | -| test.swift:53:9:53:12 | NameExpr | data | -| test.swift:53:21:53:24 | NameExpr | item | -| test.swift:63:16:63:19 | NameExpr | self | -| test.swift:65:29:65:37 | NameExpr | transform | -| test.swift:65:39:65:43 | NameExpr | value | -| test.swift:67:29:67:33 | NameExpr | error | -| test.swift:76:16:76:19 | NameExpr | self | -| test.swift:76:21:76:21 | NameExpr | i | -| test.swift:76:26:76:29 | NameExpr | self | -| test.swift:76:31:76:31 | NameExpr | i | -| test.swift:86:12:86:17 | NameExpr | values | -| test.swift:87:12:87:17 | NameExpr | values | -| test.swift:87:38:87:43 | NameExpr | values | -| test.swift:87:49:87:57 | NameExpr | transform | +identifier +| name_expr.swift:1:5:1:5 | x | x | +| name_expr.swift:1:9:1:9 | y | y | +| strings.swift:1:5:1:6 | x1 | x1 | +| strings.swift:2:5:2:6 | x2 | x2 | +| strings.swift:3:5:3:6 | x3 | x3 | +| strings.swift:3:19:3:21 | arg | arg | +| strings.swift:4:5:4:6 | x4 | x4 | +| test.swift:1:8:1:17 | Foundation | Foundation | +| test.swift:1:8:1:17 | Foundation | Foundation | +| test.swift:4:8:4:16 | Container | Container | +| test.swift:4:18:4:18 | T | T | +| test.swift:4:21:4:29 | Equatable | Equatable | +| test.swift:5:9:5:13 | items | items | +| test.swift:5:16:5:15 | Array | Array | +| test.swift:5:17:5:17 | T | T | +| test.swift:7:19:7:21 | add | add | +| test.swift:7:23:7:23 | _ | _ | +| test.swift:7:25:7:28 | item | item | +| test.swift:7:31:7:31 | T | T | +| test.swift:8:9:8:13 | items | items | +| test.swift:8:15:8:20 | append | append | +| test.swift:8:22:8:25 | item | item | +| test.swift:11:10:11:17 | contains | contains | +| test.swift:11:19:11:19 | _ | _ | +| test.swift:11:21:11:24 | item | item | +| test.swift:11:27:11:27 | T | T | +| test.swift:11:33:11:36 | Bool | Bool | +| test.swift:12:16:12:20 | items | items | +| test.swift:12:22:12:29 | contains | contains | +| test.swift:12:31:12:34 | item | item | +| test.swift:17:10:17:19 | DataSource | DataSource | +| test.swift:18:20:18:26 | Element | Element | +| test.swift:19:9:19:13 | count | count | +| test.swift:19:16:19:18 | Int | Int | +| test.swift:20:10:20:13 | item | item | +| test.swift:20:15:20:16 | at | at | +| test.swift:20:18:20:22 | index | index | +| test.swift:20:25:20:27 | Int | Int | +| test.swift:20:33:20:32 | Optional | Optional | +| test.swift:20:33:20:39 | Element | Element | +| test.swift:24:6:24:10 | merge | merge | +| test.swift:24:12:24:12 | T | T | +| test.swift:24:15:24:24 | Collection | Collection | +| test.swift:24:27:24:27 | _ | _ | +| test.swift:24:29:24:33 | first | first | +| test.swift:24:36:24:36 | T | T | +| test.swift:24:39:24:39 | _ | _ | +| test.swift:24:41:24:46 | second | second | +| test.swift:24:49:24:49 | T | T | +| test.swift:24:55:24:54 | Array | Array | +| test.swift:24:56:24:56 | T | T | +| test.swift:24:58:24:64 | Element | Element | +| test.swift:25:9:25:14 | result | result | +| test.swift:25:18:25:22 | Array | Array | +| test.swift:25:24:25:28 | first | first | +| test.swift:26:9:26:12 | item | item | +| test.swift:26:17:26:22 | second | second | +| test.swift:27:13:27:18 | result | result | +| test.swift:27:20:27:27 | contains | contains | +| test.swift:27:29:27:32 | item | item | +| test.swift:28:13:28:18 | result | result | +| test.swift:28:20:28:25 | append | append | +| test.swift:28:27:28:30 | item | item | +| test.swift:31:12:31:17 | result | result | +| test.swift:35:7:35:17 | DataManager | DataManager | +| test.swift:35:19:35:19 | T | T | +| test.swift:35:23:35:32 | DataSource | DataSource | +| test.swift:36:15:36:21 | Element | Element | +| test.swift:36:25:36:25 | T | T | +| test.swift:37:17:37:20 | data | data | +| test.swift:37:23:37:22 | Array | Array | +| test.swift:37:24:37:24 | T | T | +| test.swift:39:9:39:13 | count | count | +| test.swift:39:16:39:18 | Int | Int | +| test.swift:40:16:40:19 | data | data | +| test.swift:40:21:40:25 | count | count | +| test.swift:43:9:43:15 | isEmpty | isEmpty | +| test.swift:43:18:43:21 | Bool | Bool | +| test.swift:44:9:44:12 | data | data | +| test.swift:44:14:44:20 | isEmpty | isEmpty | +| test.swift:47:10:47:13 | item | item | +| test.swift:47:15:47:16 | at | at | +| test.swift:47:18:47:22 | index | index | +| test.swift:47:25:47:27 | Int | Int | +| test.swift:47:33:47:32 | Optional | Optional | +| test.swift:47:33:47:33 | T | T | +| test.swift:48:15:48:19 | index | index | +| test.swift:48:29:48:33 | index | index | +| test.swift:48:37:48:40 | data | data | +| test.swift:48:42:48:46 | count | count | +| test.swift:49:16:49:19 | data | data | +| test.swift:49:21:49:25 | index | index | +| test.swift:52:10:52:12 | add | add | +| test.swift:52:14:52:14 | _ | _ | +| test.swift:52:16:52:19 | item | item | +| test.swift:52:22:52:22 | T | T | +| test.swift:53:9:53:12 | data | data | +| test.swift:53:14:53:19 | append | append | +| test.swift:53:21:53:24 | item | item | +| test.swift:58:6:58:11 | Result | Result | +| test.swift:58:13:58:19 | Success | Success | +| test.swift:58:22:58:28 | Failure | Failure | +| test.swift:58:31:58:35 | Error | Error | +| test.swift:59:10:59:16 | success | success | +| test.swift:59:18:59:24 | Success | Success | +| test.swift:60:10:60:16 | failure | failure | +| test.swift:60:18:60:24 | Failure | Failure | +| test.swift:62:10:62:12 | map | map | +| test.swift:62:14:62:14 | U | U | +| test.swift:62:17:62:17 | _ | _ | +| test.swift:62:19:62:27 | transform | transform | +| test.swift:62:31:62:37 | Success | Success | +| test.swift:62:43:62:43 | U | U | +| test.swift:62:49:62:54 | Result | Result | +| test.swift:62:56:62:56 | U | U | +| test.swift:62:59:62:65 | Failure | Failure | +| test.swift:63:16:63:19 | self | self | +| test.swift:64:15:64:21 | success | success | +| test.swift:64:27:64:31 | value | value | +| test.swift:65:21:65:27 | success | success | +| test.swift:65:29:65:37 | transform | transform | +| test.swift:65:39:65:43 | value | value | +| test.swift:66:15:66:21 | failure | failure | +| test.swift:66:27:66:31 | error | error | +| test.swift:67:21:67:27 | failure | failure | +| test.swift:67:29:67:33 | error | error | +| test.swift:73:11:73:15 | Array | Array | +| test.swift:74:10:74:17 | isSorted | isSorted | +| test.swift:74:24:74:27 | Bool | Bool | +| test.swift:75:13:75:13 | i | i | +| test.swift:75:23:75:27 | count | count | +| test.swift:76:16:76:19 | self | self | +| test.swift:76:21:76:21 | i | i | +| test.swift:76:26:76:29 | self | self | +| test.swift:76:31:76:31 | i | i | +| test.swift:85:6:85:12 | combine | combine | +| test.swift:85:14:85:14 | T | T | +| test.swift:85:17:85:17 | _ | _ | +| test.swift:85:19:85:24 | values | values | +| test.swift:85:27:85:26 | Array | Array | +| test.swift:85:28:85:28 | T | T | +| test.swift:85:32:85:40 | transform | transform | +| test.swift:85:32:85:40 | transform | transform | +| test.swift:85:44:85:44 | T | T | +| test.swift:85:47:85:47 | T | T | +| test.swift:85:53:85:53 | T | T | +| test.swift:85:59:85:58 | Optional | Optional | +| test.swift:85:59:85:59 | T | T | +| test.swift:86:12:86:17 | values | values | +| test.swift:86:19:86:25 | isEmpty | isEmpty | +| test.swift:87:12:87:17 | values | values | +| test.swift:87:19:87:27 | dropFirst | dropFirst | +| test.swift:87:31:87:36 | reduce | reduce | +| test.swift:87:38:87:43 | values | values | +| test.swift:87:49:87:57 | transform | transform | +| test.swift:90:5:90:9 | tuple | tuple | +| test.swift:91:5:91:10 | unary1 | unary1 | +| test.swift:92:5:92:10 | unary2 | unary2 | +namedPattern +| test.swift:1:1:1:17 | NamedPattern | Foundation | unsupported -stringValue -| strings.swift:1:9:1:15 | "hello" | "hello" | +rawStringValue +| strings.swift:1:10:1:16 | "hello" | "hello" | +| strings.swift:2:11:2:16 | hello | hello | +| strings.swift:2:23:2:28 | world | world | +| strings.swift:3:11:3:16 | hello | hello | +| strings.swift:3:28:3:33 | world | world | +| strings.swift:4:11:4:16 | hello | hello | +| strings.swift:4:27:4:32 | world | world | +| test.swift:90:17:90:23 | "hello" | "hello" | +| test.swift:91:15:91:29 | "parenthesized" | "parenthesized" | +| test.swift:92:16:92:37 | "double-parenthesized" | "double-parenthesized" | +exprStringValue +| strings.swift:1:10:1:16 | "hello" | hello | +| strings.swift:2:11:2:16 | hello | hello | +| strings.swift:2:23:2:28 | world | world | +| strings.swift:3:11:3:16 | hello | hello | +| strings.swift:3:28:3:33 | world | world | +| strings.swift:4:11:4:16 | hello | hello | +| strings.swift:4:27:4:32 | world | world | +| test.swift:90:17:90:23 | "hello" | hello | +| test.swift:91:15:91:29 | "parenthesized" | parenthesized | +| test.swift:92:16:92:37 | "double-parenthesized" | double-parenthesized | +unexpectedUnaryTuple diff --git a/unified/ql/test/library-tests/BasicTest/test.ql b/unified/ql/test/library-tests/BasicTest/test.ql index 8e30af381d61..a3f7947eea98 100644 --- a/unified/ql/test/library-tests/BasicTest/test.ql +++ b/unified/ql/test/library-tests/BasicTest/test.ql @@ -1,7 +1,19 @@ import unified -query predicate nameExpr(NameExpr node, string value) { value = node.getIdentifier().getValue() } +query predicate identifier(Identifier node, string value) { + node.fromSource() and value = node.getValue() +} + +query predicate namedPattern(NamedPattern node, string value) { value = node.getName() } query predicate unsupported(UnsupportedNode node, string value) { value = node.getValue() } -query predicate stringValue(StringLiteral e, string value) { value = e.getValue() } +query predicate rawStringValue(StringLiteral e, string value) { + e.fromSource() and value = e.getValue() +} + +query predicate exprStringValue(Expr e, string value) { + e.fromSource() and value = e.getStringValue() +} + +query predicate unexpectedUnaryTuple(TupleExpr tuple) { count(tuple.getAnElement()) = 1 } diff --git a/unified/ql/test/library-tests/BasicTest/test.swift b/unified/ql/test/library-tests/BasicTest/test.swift index 158ef26f598b..77e95074b383 100644 --- a/unified/ql/test/library-tests/BasicTest/test.swift +++ b/unified/ql/test/library-tests/BasicTest/test.swift @@ -86,3 +86,7 @@ func combine(_ values: [T], transform: (T, T) -> T) -> T? { guard !values.isEmpty else { return nil } return values.dropFirst().reduce(values[0], transform) } + +let tuple = (1, "hello", true) +let unary1 = ("parenthesized") +let unary2 = (("double-parenthesized")) diff --git a/unified/ql/test/library-tests/comments/comments.ql b/unified/ql/test/library-tests/comments/comments.ql index db64ff737a71..a17b318cff6e 100644 --- a/unified/ql/test/library-tests/comments/comments.ql +++ b/unified/ql/test/library-tests/comments/comments.ql @@ -1,3 +1,3 @@ import unified -query predicate comments(Comment c, string text) { text = c.getCommentText() } +query predicate comments(Comment c, string text) { c.fromSource() and text = c.getCommentText() } diff --git a/unified/ql/test/library-tests/constructors/constructors.swift b/unified/ql/test/library-tests/constructors/constructors.swift new file mode 100644 index 000000000000..2e03b1092fcf --- /dev/null +++ b/unified/ql/test/library-tests/constructors/constructors.swift @@ -0,0 +1,62 @@ +class C1 {} // implicit parameterless `init` + +class C2: C1 {} // inherits `init` + +class C3 { + init() {} +} + +class C4: C3 { + init(_ x: Int) { + super.init() + } + + override convenience init() { + self.init(0) + } +} + +class C5: C4 {} // inherits `init` and `convenience init` + +class C6 { + init(x: T1, y: T2) {} + + private init(s: String) {} + + convenience init(x: T1) { + fatalError("Convenience initializer not implemented") + } +} + +class C7: C6 {} // inherits `init(x: T4, y: T3)` and `convenience init(x: T4)` + +class C8: C7 { // inherits `init(x: String, y: Int)` + convenience init(x: String) { + self.init(x: x, y: 0) + } +} + +struct S1 { // implicit `init(f1: Int = 0, f2: String, f4: Double, f6: Double, f7: Double = 0, f8: Int? = nil)` + var f1 = 0 + var f2: String + let f3: Bool = false + let f4: Double + static var f5: Float = 0.0 + var f6: Double { // todo: unlike `f7`, this is not extracted as a `VariableDeclaration` + willSet { + print("Changing from \(f6) to \(newValue)") + } + didSet { + print("Changed from \(oldValue) to \(f6)") + } + } + var f7: Double = 0.0 { + willSet { + print("Changing from \(f7) to \(newValue)") + } + didSet { + print("Changed from \(oldValue) to \(f7)") + } + } + var f8: Int? +} diff --git a/unified/ql/test/library-tests/constructors/test.expected b/unified/ql/test/library-tests/constructors/test.expected new file mode 100644 index 000000000000..b08af30bc754 --- /dev/null +++ b/unified/ql/test/library-tests/constructors/test.expected @@ -0,0 +1,34 @@ +generatedConstructor +| constructors.swift:1:1:1:0 | C1.init | +| constructors.swift:3:1:3:0 | C2.init | +| constructors.swift:19:1:19:0 | C5.init | +| constructors.swift:31:1:31:0 | C7.init | +| constructors.swift:39:1:39:0 | S1.init | +implicitReceiverParameter +| constructors.swift:1:1:1:0 | self | constructors.swift:1:1:1:0 | C1.init | +| constructors.swift:3:1:3:0 | self | constructors.swift:3:1:3:0 | C2.init | +| constructors.swift:6:5:6:13 | self | constructors.swift:6:5:6:13 | C3.init | +| constructors.swift:10:5:12:5 | self | constructors.swift:10:5:12:5 | C4.init | +| constructors.swift:14:5:16:5 | self | constructors.swift:14:5:16:5 | convenience C4.init | +| constructors.swift:19:1:19:0 | self | constructors.swift:19:1:19:0 | C5.init | +| constructors.swift:22:5:22:25 | self | constructors.swift:22:5:22:25 | C6.init | +| constructors.swift:24:5:24:30 | self | constructors.swift:24:5:24:30 | C6.init | +| constructors.swift:26:5:28:5 | self | constructors.swift:26:5:28:5 | convenience C6.init | +| constructors.swift:31:1:31:0 | self | constructors.swift:31:1:31:0 | C7.init | +| constructors.swift:34:5:36:5 | self | constructors.swift:34:5:36:5 | convenience C8.init | +| constructors.swift:39:1:39:0 | self | constructors.swift:39:1:39:0 | S1.init | +| constructors.swift:46:9:48:9 | self | constructors.swift:46:9:48:9 | AccessorDeclaration | +| constructors.swift:49:9:51:9 | self | constructors.swift:49:9:51:9 | AccessorDeclaration | +| constructors.swift:54:9:56:9 | self | constructors.swift:54:9:56:9 | AccessorDeclaration | +| constructors.swift:57:9:59:9 | self | constructors.swift:57:9:59:9 | AccessorDeclaration | +defaultConstructorParameter +| constructors.swift:39:1:39:0 | S1.init | 1 | constructors.swift:39:1:39:0 | f1 [init default constructor] | f1 | true | +| constructors.swift:39:1:39:0 | S1.init | 2 | constructors.swift:39:1:39:0 | f2 [init default constructor] | f2 | false | +| constructors.swift:39:1:39:0 | S1.init | 3 | constructors.swift:39:1:39:0 | f4 [init default constructor] | f4 | false | +| constructors.swift:39:1:39:0 | S1.init | 4 | constructors.swift:39:1:39:0 | f7 [init default constructor] | f7 | true | +| constructors.swift:39:1:39:0 | S1.init | 5 | constructors.swift:39:1:39:0 | f8 [init default constructor] | f8 | true | +defaultConstructorParameterType +| constructors.swift:39:1:39:0 | S1.init | 2 | constructors.swift:39:1:39:0 | f2 [init default constructor] | f2 | constructors.swift:41:13:41:18 | String | +| constructors.swift:39:1:39:0 | S1.init | 3 | constructors.swift:39:1:39:0 | f4 [init default constructor] | f4 | constructors.swift:43:13:43:18 | Double | +| constructors.swift:39:1:39:0 | S1.init | 4 | constructors.swift:39:1:39:0 | f7 [init default constructor] | f7 | constructors.swift:53:13:53:18 | Double | +| constructors.swift:39:1:39:0 | S1.init | 5 | constructors.swift:39:1:39:0 | f8 [init default constructor] | f8 | constructors.swift:61:13:61:16 | GenericTypeExpr | diff --git a/unified/ql/test/library-tests/constructors/test.ql b/unified/ql/test/library-tests/constructors/test.ql new file mode 100644 index 000000000000..268b69cb474a --- /dev/null +++ b/unified/ql/test/library-tests/constructors/test.ql @@ -0,0 +1,27 @@ +import unified +import codeql.unified.internal.ParameterEx + +query predicate generatedConstructor(ConstructorDeclaration c) { + c = any(ClassLikeDeclaration cls | cls.fromSource()).getAMember() and + c.hasModifier("generated") +} + +query predicate implicitReceiverParameter(ParameterEx p, Callable c) { + p.isImplicitReceiverParameter(c) and + c.getFile().fromSource() +} + +query predicate defaultConstructorParameter( + ConstructorDeclaration cd, int i, ParameterEx p, string name, boolean hasDefault +) { + p.isDefaultConstructorParameter(cd, i, name) and + cd.getFile().fromSource() and + if p.hasDefault() then hasDefault = true else hasDefault = false +} + +query predicate defaultConstructorParameterType( + ConstructorDeclaration cd, int i, ParameterEx p, string name, AstNode type +) { + defaultConstructorParameter(cd, i, p, name, _) and + type = p.getType() +} diff --git a/unified/ql/test/library-tests/controlflow/basicblock-slices.expected b/unified/ql/test/library-tests/controlflow/basicblock-slices.expected new file mode 100644 index 000000000000..f267c41d21a6 --- /dev/null +++ b/unified/ql/test/library-tests/controlflow/basicblock-slices.expected @@ -0,0 +1,472 @@ +| 1 | cfg.swift:1:1:604:1 | Block | 'Block -V var topLevelDecl -V topLevelDecl -> Int -> 0' | +| 2 | cfg.swift:2:1:2:1 | 0 | '0' | +| 3 | cfg.swift:3:1:3:12 | topLevelDecl | 'topLevelDecl -> 1 -^ ... + ...' | +| 5 | cfg.swift:5:1:5:37 | func returnZero | 'func returnZero -V returnZero' | +| 5 | cfg.swift:5:26:5:37 | Block | 'Block -V 0 -^ ReturnExpr' | +| 7 | cfg.swift:7:1:7:10 | returnZero | 'returnZero -^ returnZero(...)' | +| 8 | cfg.swift:8:1:8:6 | Double | 'Double -> Argument -V topLevelDecl -^ Double(...)' | +| 10 | cfg.swift:10:1:13:1 | enum MyError | 'enum MyError -V MyError -> BaseType -V Error' | +| 11 | cfg.swift:11:10:11:15 | MyError.error1 | 'MyError.error1 -V error1 -> MyError.error2 -V error2' | +| 12 | cfg.swift:12:10:12:31 | MyError.error3 | 'MyError.error3 -V error3 -^ MyError.error3.(constructor)' | +| 12 | cfg.swift:12:17:12:25 | withParam | 'withParam -? Block' | +| 15 | cfg.swift:15:1:17:1 | func isZero | 'func isZero -V isZero' | +| 15 | cfg.swift:15:13:15:13 | x | 'x -> Block' | +| 16 | cfg.swift:16:10:16:10 | x | 'x -> 0 -^ ... == ... -^ ReturnExpr' | +| 19 | cfg.swift:19:1:26:1 | func mightThrow | 'func mightThrow -V mightThrow' | +| 19 | cfg.swift:19:17:19:17 | x | 'x -> Block' | +| 20 | cfg.swift:20:3:22:3 | GuardIfStmt | 'GuardIfStmt -V x -> 0 -^ ... >= ...' | +| 20 | cfg.swift:20:21:22:3 | Block | 'Block' | +| 21 | cfg.swift:21:11:21:17 | MyError | 'MyError -^ ... .error1 -^ ThrowExpr' | +| 23 | cfg.swift:23:3:25:3 | GuardIfStmt | 'GuardIfStmt -V x -> 0 -^ ... <= ...' | +| 23 | cfg.swift:23:21:25:3 | Block | 'Block' | +| 24 | cfg.swift:24:11:24:17 | MyError | 'MyError -^ ... .error3 -> Argument -V x -> 1 -^ ... + ... -^ ... .error3(...) -^ ThrowExpr' | +| 28 | cfg.swift:28:1:45:1 | func tryCatch | 'func tryCatch -V tryCatch' | +| 28 | cfg.swift:28:15:28:15 | x | 'x -> Block' | +| 29 | cfg.swift:29:3:43:3 | TryExpr | 'TryExpr -V Block' | +| 30 | cfg.swift:30:5:30:24 | try ... | 'try ...' | +| 30 | cfg.swift:30:9:30:18 | mightThrow | 'mightThrow -> Argument -V 0 -^ mightThrow(...)' | +| 31 | cfg.swift:31:5:31:9 | print | 'print -> Argument -V "Did not throw." -^ print(...)' | +| 32 | cfg.swift:32:10:32:19 | mightThrow | 'mightThrow -> Argument -V 0 -^ mightThrow(...) -^ try! ...' | +| 33 | cfg.swift:33:5:33:9 | print | 'print -> Argument -V "Still did not throw." -^ print(...)' | +| 35 | cfg.swift:35:5:37:3 | CatchClause | 'CatchClause -V MyError -^ ... .error1 -> isZero -> Argument -V x -^ isZero(...) -? MyError -^ ... .error2 -^ ConditionalPattern -^ OrPattern' | +| 35 | cfg.swift:35:62:37:3 | Block | 'Block' | +| 36 | cfg.swift:36:12:36:12 | 0 | '0 -^ ReturnExpr' | +| 37 | cfg.swift:37:5:39:3 | CatchClause | 'CatchClause -V MyError -^ ... .error3 -> Argument -V withParam -^ ExprPattern -^ ... .error3(...)' | +| 37 | cfg.swift:37:41:39:3 | Block | 'Block' | +| 38 | cfg.swift:38:12:38:20 | withParam | 'withParam -^ ReturnExpr' | +| 39 | cfg.swift:39:5:41:3 | CatchClause | 'CatchClause -V ' | +| 39 | cfg.swift:39:22:41:3 | Block | 'Block' | +| 40 | cfg.swift:40:5:40:9 | print | 'print -> Argument -V "MyError" -^ print(...)' | +| 41 | cfg.swift:41:5:43:3 | CatchClause | 'CatchClause -V Block' | +| 42 | cfg.swift:42:5:42:9 | print | 'print -> Argument -V Unknown error -> interpolation -> Argument -V error -^ interpolation(...) -> -^ StringInterpolationExpr -^ print(...)' | +| 44 | cfg.swift:44:10:44:10 | 0 | '0 -^ ReturnExpr' | +| 47 | cfg.swift:47:1:51:1 | func createClosure1 | 'func createClosure1 -V createClosure1' | +| 47 | cfg.swift:47:21:47:21 | s | 's -> Block' | +| 48 | cfg.swift:48:10:50:3 | FunctionExpr | 'FunctionExpr -^ ReturnExpr' | +| 49 | cfg.swift:49:5:49:17 | Block | 'Block -V s -> "" -^ ... + ... -^ ReturnExpr' | +| 53 | cfg.swift:53:1:58:1 | func createClosure2 | 'func createClosure2 -V createClosure2' | +| 53 | cfg.swift:53:21:53:21 | x | 'x -> Block' | +| 54 | cfg.swift:54:3:56:3 | func f | 'func f -V f' | +| 54 | cfg.swift:54:10:54:10 | y | 'y -> Block' | +| 55 | cfg.swift:55:12:55:12 | x | 'x -> y -^ ... + ... -^ ReturnExpr' | +| 57 | cfg.swift:57:10:57:10 | f | 'f -^ ReturnExpr' | +| 60 | cfg.swift:60:1:64:1 | func createClosure3 | 'func createClosure3 -V createClosure3' | +| 60 | cfg.swift:60:21:60:21 | x | 'x -> Block' | +| 61 | cfg.swift:61:10:63:3 | FunctionExpr | 'FunctionExpr -^ ReturnExpr' | +| 62 | cfg.swift:62:6:62:6 | y | 'y -> Block -V x -> y -^ ... + ...' | +| 66 | cfg.swift:66:1:70:1 | func callClosures | 'func callClosures -V callClosures' | +| 66 | cfg.swift:66:21:70:1 | Block | 'Block' | +| 67 | cfg.swift:67:3:67:34 | var x1 | 'var x1 -V x1 -> createClosure1 -> Argument -V "" -^ createClosure1(...) -^ ...(...)' | +| 68 | cfg.swift:68:3:68:35 | var x2 | 'var x2 -V x2 -> createClosure2 -> Argument -V 0 -^ createClosure2(...) -> Argument -V 10 -^ ...(...)' | +| 69 | cfg.swift:69:3:69:35 | var x3 | 'var x3 -V x3 -> createClosure3 -> Argument -V 0 -^ createClosure3(...) -> Argument -V 10 -^ ...(...)' | +| 72 | cfg.swift:72:1:75:1 | func maybeParseInt | 'func maybeParseInt -V maybeParseInt' | +| 72 | cfg.swift:72:20:72:20 | s | 's -> Block' | +| 73 | cfg.swift:73:3:73:23 | var n | 'var n -V n -> Optional -> Int -^ GenericTypeExpr -> Int -> Argument -V s -^ Int(...)' | +| 74 | cfg.swift:74:10:74:10 | n | 'n -^ ReturnExpr' | +| 77 | cfg.swift:77:1:81:1 | func forceAndBackToOptional | 'func forceAndBackToOptional -V forceAndBackToOptional' | +| 77 | cfg.swift:77:39:81:1 | Block | 'Block' | +| 78 | cfg.swift:78:3:78:36 | var nBang | 'var nBang -V nBang -> maybeParseInt -> Argument -V "42" -^ maybeParseInt(...) -^ ... !' | +| 79 | cfg.swift:79:3:79:31 | var n | 'var n -V n -> maybeParseInt -> Argument -V "42" -^ maybeParseInt(...)' | +| 80 | cfg.swift:80:10:80:14 | nBang | 'nBang -> n -^ ... ! -^ ... + ... -^ ReturnExpr' | +| 83 | cfg.swift:83:1:98:1 | func testInOut | 'func testInOut -V testInOut' | +| 83 | cfg.swift:83:25:98:1 | Block | 'Block' | +| 84 | cfg.swift:84:3:84:15 | var temp | 'var temp -V temp -> 10' | +| 86 | cfg.swift:86:3:88:3 | func add | 'func add -V add' | +| 86 | cfg.swift:86:12:86:12 | a | 'a -> Block' | +| 87 | cfg.swift:87:5:87:5 | a | 'a -> a -> 1 -^ ... + ... -^ ... = ...' | +| 90 | cfg.swift:90:3:92:3 | func addOptional | 'func addOptional -V addOptional' | +| 90 | cfg.swift:90:20:90:20 | a | 'a -> Block' | +| 91 | cfg.swift:91:5:91:5 | a | 'a -> nil -^ ... = ...' | +| 94 | cfg.swift:94:3:94:5 | add | 'add -> Argument -V temp -^ & ... -^ add(...)' | +| 95 | cfg.swift:95:3:95:30 | var tempOptional | 'var tempOptional -V tempOptional -> Optional -> Int -^ GenericTypeExpr -> 10' | +| 96 | cfg.swift:96:3:96:13 | addOptional | 'addOptional -> Argument -V tempOptional -^ & ... -^ addOptional(...)' | +| 97 | cfg.swift:97:10:97:13 | temp | 'temp -> tempOptional -^ ... ! -^ ... + ... -^ ReturnExpr' | +| 100 | cfg.swift:100:1:109:1 | class C | 'class C -V C' | +| 101 | cfg.swift:101:3:101:16 | let C.myInt | 'let C.myInt -V myInt -> Int' | +| 102 | cfg.swift:102:3:104:3 | C.init | 'C.init' | +| 102 | cfg.swift:102:8:102:8 | n | 'n -> Block' | +| 103 | cfg.swift:103:5:103:9 | myInt | 'myInt -> n -^ ... = ...' | +| 106 | cfg.swift:106:3:108:3 | func C.getMyInt | 'func C.getMyInt -V getMyInt' | +| 106 | cfg.swift:106:26:108:3 | Block | 'Block' | +| 107 | cfg.swift:107:12:107:16 | myInt | 'myInt -^ ReturnExpr' | +| 111 | cfg.swift:111:1:137:1 | func testMemberRef | 'func testMemberRef -V testMemberRef' | +| 111 | cfg.swift:111:20:111:24 | param | 'param -> inoutParam -> opt -> Block' | +| 112 | cfg.swift:112:3:112:18 | let c | 'let c -V c -> C -> Argument -V 42 -^ C(...)' | +| 113 | cfg.swift:113:3:113:18 | let n1 | 'let n1 -V n1 -> c -^ ... .myInt' | +| 114 | cfg.swift:114:3:114:23 | let n2 | 'let n2 -V n2 -> c -^ ... .self -^ ... .myInt' | +| 115 | cfg.swift:115:3:115:23 | let n3 | 'let n3 -V n3 -> c -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 116 | cfg.swift:116:3:116:28 | let n4 | 'let n4 -V n4 -> c -^ ... .self -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 117 | cfg.swift:117:3:117:22 | let n5 | 'let n5 -V n5 -> param -^ ... .myInt' | +| 118 | cfg.swift:118:3:118:27 | let n6 | 'let n6 -V n6 -> param -^ ... .self -^ ... .myInt' | +| 120 | cfg.swift:120:3:120:32 | let n8 | 'let n8 -V n8 -> param -^ ... .self -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 122 | cfg.swift:122:3:122:27 | let n9 | 'let n9 -V n9 -> inoutParam -^ ... .myInt' | +| 123 | cfg.swift:123:3:123:27 | let n7 | 'let n7 -V n7 -> param -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 124 | cfg.swift:124:3:124:33 | let n10 | 'let n10 -V n10 -> inoutParam -^ ... .self -^ ... .myInt' | +| 125 | cfg.swift:125:3:125:33 | let n11 | 'let n11 -V n11 -> inoutParam -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 126 | cfg.swift:126:3:126:38 | let n12 | 'let n12 -V n12 -> inoutParam -^ ... .self -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 128 | cfg.swift:128:3:128:22 | let n13 | 'let n13 -V n13 -> opt -^ ... ! -^ ... .myInt' | +| 129 | cfg.swift:129:3:129:27 | let n14 | 'let n14 -V n14 -> opt -^ ... ! -^ ... .self -^ ... .myInt' | +| 130 | cfg.swift:130:3:130:27 | let n15 | 'let n15 -V n15 -> opt -^ ... ! -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 131 | cfg.swift:131:3:131:32 | let n16 | 'let n16 -V n16 -> opt -^ ... ! -^ ... .self -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 133 | cfg.swift:133:3:133:22 | let n17 | 'let n17 -V n17 -> opt -^ ... .myInt' | +| 134 | cfg.swift:134:3:134:27 | let n18 | 'let n18 -V n18 -> opt -^ ... .self -^ ... .myInt' | +| 135 | cfg.swift:135:3:135:27 | let n19 | 'let n19 -V n19 -> opt -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 136 | cfg.swift:136:3:136:32 | let n20 | 'let n20 -V n20 -> opt -^ ... .self -^ ... .getMyInt -^ ... .getMyInt(...)' | +| 139 | cfg.swift:139:1:166:1 | func patterns | 'func patterns -V patterns' | +| 139 | cfg.swift:139:15:139:15 | x | 'x -> Block' | +| 140 | cfg.swift:140:3:141:12 | ForEachStmt | 'ForEachStmt -V 0 -> 10 -^ ... ... ...' | +| 140 | cfg.swift:140:7:140:7 | _ | '_' | +| 141 | cfg.swift:141:9:141:12 | Block | 'Block' | +| 143 | cfg.swift:143:3:153:3 | SwitchExpr | 'SwitchExpr -V x' | +| 144 | cfg.swift:144:5:146:17 | SwitchCase | 'SwitchCase -V 0 -> 1 -^ OrPattern' | +| 145 | cfg.swift:145:7:146:17 | Block | 'Block -V true -^ ReturnExpr' | +| 147 | cfg.swift:147:5:150:17 | SwitchCase | 'SwitchCase' | +| 147 | cfg.swift:147:10:147:10 | x | 'x -^ ConditionalPattern' | +| 148 | cfg.swift:148:9:149:17 | ... && ... | '... && ... -V x -> 2 -^ ... >= ...' | +| 149 | cfg.swift:149:13:149:13 | x | 'x -> 5 -^ ... < ...' | +| 150 | cfg.swift:150:7:150:17 | Block | 'Block -V true -^ ReturnExpr' | +| 151 | cfg.swift:151:5:152:18 | SwitchCase | 'SwitchCase' | +| 152 | cfg.swift:152:7:152:18 | Block | 'Block -V false -^ ReturnExpr' | +| 168 | cfg.swift:168:1:184:1 | func testDefer | 'func testDefer -V testDefer' | +| 168 | cfg.swift:168:16:168:16 | x | 'x -> Block' | +| 170 | cfg.swift:170:3:172:3 | DeferStmt | 'DeferStmt -V Block' | +| 171 | cfg.swift:171:5:171:9 | print | 'print -> Argument -V "4" -^ print(...)' | +| 174 | cfg.swift:174:3:176:3 | DeferStmt | 'DeferStmt -V Block' | +| 175 | cfg.swift:175:5:175:9 | print | 'print -> Argument -V "3" -^ print(...)' | +| 178 | cfg.swift:178:3:183:3 | DeferStmt | 'DeferStmt -V Block' | +| 179 | cfg.swift:179:5:179:9 | print | 'print -> Argument -V "1" -^ print(...)' | +| 180 | cfg.swift:180:6:182:5 | DeferStmt | 'DeferStmt -V Block' | +| 181 | cfg.swift:181:7:181:11 | print | 'print -> Argument -V "2" -^ print(...)' | +| 186 | cfg.swift:186:1:198:1 | func m1 | 'func m1 -V m1' | +| 186 | cfg.swift:186:9:186:9 | x | 'x -> Block' | +| 187 | cfg.swift:187:3:197:3 | IfExpr | 'IfExpr -V x -> 2 -^ ... > ...' | +| 187 | cfg.swift:187:12:189:3 | Block | 'Block' | +| 188 | cfg.swift:188:5:188:9 | print | 'print -> Argument -V "x is greater than 2" -^ print(...)' | +| 190 | cfg.swift:190:8:197:3 | IfExpr | 'IfExpr -V ... && ... -V ... && ... -V x -> 2 -^ ... <= ...' | +| 191 | cfg.swift:191:13:191:13 | x | 'x -> 0 -^ ... > ...' | +| 192 | cfg.swift:192:13:192:21 | ! ... | '! ... -V x -> 5 -^ ... == ...' | +| 192 | cfg.swift:192:23:194:3 | Block | 'Block' | +| 193 | cfg.swift:193:5:193:9 | print | 'print -> Argument -V "x is 1" -^ print(...)' | +| 195 | cfg.swift:195:8:197:3 | Block | 'Block' | +| 196 | cfg.swift:196:5:196:9 | print | 'print -> Argument -V "I can't guess the number" -^ print(...)' | +| 200 | cfg.swift:200:1:205:1 | func m2 | 'func m2 -V m2' | +| 200 | cfg.swift:200:9:200:9 | b | 'b -> Block' | +| 201 | cfg.swift:201:3:203:3 | IfExpr | 'IfExpr -V b' | +| 201 | cfg.swift:201:8:203:3 | Block | 'Block' | +| 202 | cfg.swift:202:12:202:12 | 0 | '0 -^ ReturnExpr' | +| 204 | cfg.swift:204:10:204:10 | 1 | '1 -^ ReturnExpr' | +| 207 | cfg.swift:207:1:215:1 | func m3 | 'func m3 -V m3' | +| 207 | cfg.swift:207:9:207:9 | x | 'x -> Block' | +| 208 | cfg.swift:208:3:213:3 | IfExpr | 'IfExpr -V x -> 0 -^ ... < ...' | +| 208 | cfg.swift:208:12:213:3 | Block | 'Block' | +| 209 | cfg.swift:209:5:209:5 | x | 'x -> x -^ - ... -^ ... = ...' | +| 210 | cfg.swift:210:5:212:5 | IfExpr | 'IfExpr -V x -> 10 -^ ... > ...' | +| 210 | cfg.swift:210:15:212:5 | Block | 'Block' | +| 211 | cfg.swift:211:7:211:7 | x | 'x -> x -> 1 -^ ... - ... -^ ... = ...' | +| 214 | cfg.swift:214:10:214:10 | x | 'x -^ ReturnExpr' | +| 217 | cfg.swift:217:1:223:1 | func m4 | 'func m4 -V m4' | +| 217 | cfg.swift:217:10:217:11 | b1 | 'b1 -> b2 -> b3 -> Block' | +| 218 | cfg.swift:218:3:222:20 | ReturnExpr | 'ReturnExpr' | +| 218 | cfg.swift:218:10:222:20 | IfExpr | 'IfExpr -V IfExpr -V b1' | +| 219 | cfg.swift:219:13:219:14 | b2 | 'b2' | +| 220 | cfg.swift:220:13:220:14 | b3 | 'b3' | +| 221 | cfg.swift:221:9:221:18 | "b2 \|\| b3" | '"b2 \|\| b3"' | +| 222 | cfg.swift:222:9:222:20 | "!b2 \|\| !b3" | '"!b2 \|\| !b3"' | +| 225 | cfg.swift:225:1:234:1 | func conversionsInSplitEntry | 'func conversionsInSplitEntry -V conversionsInSplitEntry' | +| 225 | cfg.swift:225:31:225:31 | b | 'b -> Block' | +| 226 | cfg.swift:226:3:233:3 | IfExpr | 'IfExpr -V IfExpr -V b' | +| 227 | cfg.swift:227:8:227:11 | true | 'true' | +| 228 | cfg.swift:228:7:228:10 | Bool | 'Bool -> Argument -V false -^ Bool(...)' | +| 228 | cfg.swift:228:19:230:3 | Block | 'Block' | +| 229 | cfg.swift:229:12:229:14 | "b" | '"b" -^ ReturnExpr' | +| 231 | cfg.swift:231:8:233:3 | Block | 'Block' | +| 232 | cfg.swift:232:12:232:15 | "!b" | '"!b" -^ ReturnExpr' | +| 236 | cfg.swift:236:1:240:1 | func constant_condition | 'func constant_condition -V constant_condition' | +| 236 | cfg.swift:236:27:240:1 | Block | 'Block' | +| 237 | cfg.swift:237:3:239:3 | IfExpr | 'IfExpr -V ! ... -V true' | +| 242 | cfg.swift:242:1:248:1 | func empty_else | 'func empty_else -V empty_else' | +| 242 | cfg.swift:242:17:242:17 | b | 'b -> Block' | +| 243 | cfg.swift:243:3:246:9 | IfExpr | 'IfExpr -V b' | +| 243 | cfg.swift:243:8:245:3 | Block | 'Block' | +| 244 | cfg.swift:244:5:244:9 | print | 'print -> Argument -V "true" -^ print(...)' | +| 246 | cfg.swift:246:8:246:9 | Block | 'Block' | +| 247 | cfg.swift:247:3:247:7 | print | 'print -> Argument -V "done" -^ print(...)' | +| 250 | cfg.swift:250:1:254:1 | func disjunct | 'func disjunct -V disjunct' | +| 250 | cfg.swift:250:16:250:17 | b1 | 'b1 -> b2 -> Block' | +| 251 | cfg.swift:251:3:253:3 | IfExpr | 'IfExpr -V ... \|\| ... -V b1' | +| 251 | cfg.swift:251:13:251:14 | b2 | 'b2' | +| 251 | cfg.swift:251:17:253:3 | Block | 'Block' | +| 252 | cfg.swift:252:5:252:9 | print | 'print -> Argument -V "b1 or b2" -^ print(...)' | +| 256 | cfg.swift:256:1:273:1 | func binaryExprs | 'func binaryExprs -V binaryExprs' | +| 256 | cfg.swift:256:18:256:18 | a | 'a -> b -> Block' | +| 257 | cfg.swift:257:3:257:15 | let c | 'let c -V c -> a -> b -^ ... + ...' | +| 258 | cfg.swift:258:3:258:15 | let d | 'let d -V d -> a -> b -^ ... - ...' | +| 259 | cfg.swift:259:3:259:15 | let e | 'let e -V e -> a -> b -^ ... * ...' | +| 260 | cfg.swift:260:3:260:15 | let f | 'let f -V f -> a -> b -^ ... / ...' | +| 261 | cfg.swift:261:3:261:15 | let g | 'let g -V g -> a -> b -^ ... % ...' | +| 262 | cfg.swift:262:3:262:15 | let h | 'let h -V h -> a -> b -^ ... & ...' | +| 263 | cfg.swift:263:3:263:15 | let i | 'let i -V i -> a -> b -^ ... \| ...' | +| 264 | cfg.swift:264:3:264:15 | let j | 'let j -V j -> a -> b -^ ... ^ ...' | +| 265 | cfg.swift:265:3:265:16 | let k | 'let k -V k -> a -> b -^ ... << ...' | +| 266 | cfg.swift:266:3:266:16 | let l | 'let l -V l -> a -> b -^ ... >> ...' | +| 267 | cfg.swift:267:3:267:16 | let o | 'let o -V o -> a -> b -^ ... == ...' | +| 268 | cfg.swift:268:3:268:16 | let p | 'let p -V p -> a -> b -^ ... != ...' | +| 269 | cfg.swift:269:3:269:15 | let q | 'let q -V q -> a -> b -^ ... < ...' | +| 270 | cfg.swift:270:3:270:16 | let r | 'let r -V r -> a -> b -^ ... <= ...' | +| 271 | cfg.swift:271:3:271:15 | let s | 'let s -V s -> a -> b -^ ... > ...' | +| 272 | cfg.swift:272:3:272:16 | let t | 'let t -V t -> a -> b -^ ... >= ...' | +| 275 | cfg.swift:275:1:277:1 | func interpolatedString | 'func interpolatedString -V interpolatedString' | +| 275 | cfg.swift:275:25:275:25 | x | 'x -> y -> Block' | +| 276 | cfg.swift:276:11:276:10 | | ' -> interpolation -> Argument -V x -^ interpolation(...) -> + -> interpolation -> Argument -V y -^ interpolation(...) -> is equal to -> interpolation -> Argument -V x -> y -^ ... + ... -^ interpolation(...) -> and here is a zero: -> interpolation -> Argument -V returnZero -^ returnZero(...) -^ interpolation(...) -> -^ StringInterpolationExpr -^ ReturnExpr' | +| 279 | cfg.swift:279:1:310:1 | func testSubscriptExpr | 'func testSubscriptExpr -V testSubscriptExpr' | +| 279 | cfg.swift:279:55:310:1 | Block | 'Block' | +| 280 | cfg.swift:280:3:280:44 | var a | 'var a -V a -> 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10 -^ ArrayLiteral' | +| 281 | cfg.swift:281:3:281:3 | a | 'a -> Argument -V 0 -^ a(...) -> 0 -^ ... = ...' | +| 282 | cfg.swift:282:3:282:3 | a | 'a -> Argument -V 1 -^ a(...) -> 1 -^ ... += ...' | +| 283 | cfg.swift:283:3:283:3 | a | 'a -> Argument -V 2 -^ a(...) -> 1 -^ ... -= ...' | +| 284 | cfg.swift:284:3:284:3 | a | 'a -> Argument -V 3 -^ a(...) -> 1 -^ ... *= ...' | +| 285 | cfg.swift:285:3:285:3 | a | 'a -> Argument -V 4 -^ a(...) -> 1 -^ ... /= ...' | +| 286 | cfg.swift:286:3:286:3 | a | 'a -> Argument -V 5 -^ a(...) -> 1 -^ ... %= ...' | +| 287 | cfg.swift:287:3:287:3 | a | 'a -> Argument -V 6 -^ a(...) -> 1 -^ ... &= ...' | +| 288 | cfg.swift:288:3:288:3 | a | 'a -> Argument -V 7 -^ a(...) -> 1 -^ ... \|= ...' | +| 289 | cfg.swift:289:3:289:3 | a | 'a -> Argument -V 8 -^ a(...) -> 1 -^ ... ^= ...' | +| 290 | cfg.swift:290:3:290:3 | a | 'a -> Argument -V 9 -^ a(...) -> 1 -^ ... <<= ...' | +| 291 | cfg.swift:291:3:291:3 | a | 'a -> Argument -V 10 -^ a(...) -> 1 -^ ... >>= ...' | +| 293 | cfg.swift:293:3:293:49 | var tupleWithA | 'var tupleWithA -V tupleWithA -> Argument -V a -> Argument -V 0 -^ a(...) -> Argument -V a -> Argument -V 1 -^ a(...) -> Argument -V a -> Argument -V 2 -^ a(...) -> Argument -V a -> Argument -V 3 -^ a(...) -> Argument -V a -> Argument -V 4 -^ a(...) -^ TupleExpr' | +| 295 | cfg.swift:295:3:295:48 | var b | 'var b -V b -> 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10 -> 11 -^ ArrayLiteral' | +| 296 | cfg.swift:296:3:296:3 | b | 'b -> Argument -V 0 -^ b(...) -> a -> Argument -V 10 -^ a(...) -^ ... = ...' | +| 297 | cfg.swift:297:3:297:3 | b | 'b -> Argument -V 1 -^ b(...) -> b -> Argument -V 0 -^ b(...) -> 1 -^ ... + ... -^ ... = ...' | +| 298 | cfg.swift:298:3:298:3 | b | 'b -> Argument -V 2 -^ b(...) -> b -> Argument -V 1 -^ b(...) -> 1 -^ ... - ... -^ ... = ...' | +| 299 | cfg.swift:299:3:299:3 | b | 'b -> Argument -V 3 -^ b(...) -> b -> Argument -V 2 -^ b(...) -> 1 -^ ... * ... -^ ... = ...' | +| 300 | cfg.swift:300:3:300:3 | b | 'b -> Argument -V 4 -^ b(...) -> b -> Argument -V 3 -^ b(...) -> 1 -^ ... / ... -^ ... = ...' | +| 301 | cfg.swift:301:3:301:3 | b | 'b -> Argument -V 5 -^ b(...) -> b -> Argument -V 4 -^ b(...) -> 1 -^ ... % ... -^ ... = ...' | +| 302 | cfg.swift:302:3:302:3 | b | 'b -> Argument -V 6 -^ b(...) -> b -> Argument -V 5 -^ b(...) -> 1 -^ ... & ... -^ ... = ...' | +| 303 | cfg.swift:303:3:303:3 | b | 'b -> Argument -V 7 -^ b(...) -> b -> Argument -V 6 -^ b(...) -> 1 -^ ... \| ... -^ ... = ...' | +| 304 | cfg.swift:304:3:304:3 | b | 'b -> Argument -V 8 -^ b(...) -> b -> Argument -V 7 -^ b(...) -> 1 -^ ... ^ ... -^ ... = ...' | +| 305 | cfg.swift:305:3:305:3 | b | 'b -> Argument -V 9 -^ b(...) -> b -> Argument -V 8 -^ b(...) -> 1 -^ ... << ... -^ ... = ...' | +| 306 | cfg.swift:306:3:306:3 | b | 'b -> Argument -V 10 -^ b(...) -> b -> Argument -V 9 -^ b(...) -> 1 -^ ... >> ... -^ ... = ...' | +| 308 | cfg.swift:308:3:308:39 | let (pattern assignment) | 'let (pattern assignment) -V Argument -V a1 -> Argument -V a2 -> Argument -V a3 -> Argument -V a4 -> Argument -V a5 -^ TupleExpr -> tupleWithA' | +| 309 | cfg.swift:309:11:309:19 | Argument | 'Argument -V a1 -> b -> Argument -V 0 -^ b(...) -^ ... + ... -> Argument -V a2 -> b -> Argument -V 1 -^ b(...) -^ ... + ... -> Argument -V a3 -> b -> Argument -V 2 -^ b(...) -^ ... + ... -> Argument -V a4 -> b -> Argument -V 3 -^ b(...) -^ ... + ... -> Argument -V a5 -> b -> Argument -V 4 -^ b(...) -^ ... + ... -^ TupleExpr -^ ReturnExpr' | +| 312 | cfg.swift:312:1:317:1 | func loop1 | 'func loop1 -V loop1' | +| 312 | cfg.swift:312:12:312:12 | x | 'x -> Block' | +| 313 | cfg.swift:313:3:316:3 | WhileStmt | 'WhileStmt' | +| 313 | cfg.swift:313:9:313:9 | x | 'x -> 0 -^ ... >= ...' | +| 313 | cfg.swift:313:16:316:3 | Block | 'Block' | +| 314 | cfg.swift:314:5:314:9 | print | 'print -> Argument -V x -^ print(...)' | +| 315 | cfg.swift:315:5:315:5 | x | 'x -> 1 -^ ... -= ...' | +| 319 | cfg.swift:319:1:332:1 | func loop2 | 'func loop2 -V loop2' | +| 319 | cfg.swift:319:12:319:12 | x | 'x -> Block' | +| 320 | cfg.swift:320:3:330:3 | WhileStmt | 'WhileStmt' | +| 320 | cfg.swift:320:9:320:9 | x | 'x -> 0 -^ ... >= ...' | +| 320 | cfg.swift:320:16:330:3 | Block | 'Block' | +| 321 | cfg.swift:321:5:321:9 | print | 'print -> Argument -V x -^ print(...)' | +| 322 | cfg.swift:322:5:322:5 | x | 'x -> 1 -^ ... -= ...' | +| 323 | cfg.swift:323:5:328:5 | IfExpr | 'IfExpr -V x -> 100 -^ ... > ...' | +| 323 | cfg.swift:323:16:325:5 | Block | 'Block' | +| 324 | cfg.swift:324:7:324:11 | BreakExpr | 'BreakExpr' | +| 326 | cfg.swift:326:10:328:5 | IfExpr | 'IfExpr -V x -> 50 -^ ... > ...' | +| 326 | cfg.swift:326:20:328:5 | Block | 'Block' | +| 327 | cfg.swift:327:7:327:14 | ContinueExpr | 'ContinueExpr' | +| 329 | cfg.swift:329:5:329:9 | print | 'print -> Argument -V "Iter" -^ print(...)' | +| 331 | cfg.swift:331:3:331:7 | print | 'print -> Argument -V "Done" -^ print(...)' | +| 334 | cfg.swift:334:1:349:1 | func labeledLoop | 'func labeledLoop -V labeledLoop' | +| 334 | cfg.swift:334:18:334:18 | x | 'x -> Block' | +| 335 | cfg.swift:335:3:348:3 | LabeledStmt | 'LabeledStmt -V WhileStmt' | +| 335 | cfg.swift:335:16:335:16 | x | 'x -> 0 -^ ... >= ...' | +| 335 | cfg.swift:335:23:348:3 | Block | 'Block' | +| 336 | cfg.swift:336:5:346:5 | LabeledStmt | 'LabeledStmt -V WhileStmt' | +| 336 | cfg.swift:336:18:336:18 | x | 'x -> 0 -^ ... >= ...' | +| 336 | cfg.swift:336:25:346:5 | Block | 'Block' | +| 337 | cfg.swift:337:7:337:11 | print | 'print -> Argument -V x -^ print(...)' | +| 338 | cfg.swift:338:7:338:7 | x | 'x -> 1 -^ ... -= ...' | +| 339 | cfg.swift:339:7:344:7 | IfExpr | 'IfExpr -V x -> 100 -^ ... > ...' | +| 339 | cfg.swift:339:18:341:7 | Block | 'Block' | +| 340 | cfg.swift:340:9:340:19 | BreakExpr | 'BreakExpr' | +| 342 | cfg.swift:342:12:344:7 | IfExpr | 'IfExpr -V x -> 50 -^ ... > ...' | +| 342 | cfg.swift:342:22:344:7 | Block | 'Block' | +| 343 | cfg.swift:343:9:343:22 | ContinueExpr | 'ContinueExpr' | +| 345 | cfg.swift:345:7:345:11 | print | 'print -> Argument -V "Iter" -^ print(...)' | +| 347 | cfg.swift:347:5:347:9 | print | 'print -> Argument -V "Done" -^ print(...)' | +| 351 | cfg.swift:351:1:356:1 | func testRepeat | 'func testRepeat -V testRepeat' | +| 351 | cfg.swift:351:17:351:17 | x | 'x -> Block' | +| 352 | cfg.swift:352:3:355:16 | DoWhileStmt | 'DoWhileStmt' | +| 352 | cfg.swift:352:10:355:3 | Block | 'Block' | +| 353 | cfg.swift:353:5:353:9 | print | 'print -> Argument -V x -^ print(...)' | +| 354 | cfg.swift:354:5:354:5 | x | 'x -> 1 -^ ... -= ...' | +| 355 | cfg.swift:355:11:355:11 | x | 'x -> 0 -^ ... >= ...' | +| 358 | cfg.swift:358:1:363:1 | func loop_with_identity_expr | 'func loop_with_identity_expr -V loop_with_identity_expr' | +| 358 | cfg.swift:358:32:363:1 | Block | 'Block' | +| 359 | cfg.swift:359:3:359:11 | var x | 'var x -V x -> 0' | +| 360 | cfg.swift:360:3:362:3 | WhileStmt | 'WhileStmt' | +| 360 | cfg.swift:360:9:360:9 | x | 'x -> 10 -^ ... < ...' | +| 360 | cfg.swift:360:17:362:3 | Block | 'Block' | +| 361 | cfg.swift:361:5:361:5 | x | 'x -> 1 -^ ... += ...' | +| 365 | cfg.swift:365:1:374:1 | class OptionalC | 'class OptionalC -V OptionalC' | +| 366 | cfg.swift:366:3:366:11 | let OptionalC.c | 'let OptionalC.c -V c -> Optional -> C -^ GenericTypeExpr' | +| 367 | cfg.swift:367:3:369:3 | OptionalC.init | 'OptionalC.init' | +| 367 | cfg.swift:367:8:367:10 | arg | 'arg -> Block' | +| 368 | cfg.swift:368:5:368:5 | c | 'c -> arg -^ ... = ...' | +| 371 | cfg.swift:371:3:373:3 | func OptionalC.getOptional | 'func OptionalC.getOptional -V getOptional' | +| 371 | cfg.swift:371:28:373:3 | Block | 'Block' | +| 372 | cfg.swift:372:12:372:12 | c | 'c -^ ReturnExpr' | +| 376 | cfg.swift:376:1:378:1 | func testOptional | 'func testOptional -V testOptional' | +| 376 | cfg.swift:376:19:376:19 | c | 'c -> Block' | +| 377 | cfg.swift:377:10:377:10 | c | 'c -^ ... .getOptional -^ ... .getOptional(...) -^ ... .getMyInt -^ ... .getMyInt(...) -^ ReturnExpr' | +| 380 | cfg.swift:380:1:384:1 | func testCapture | 'func testCapture -V testCapture' | +| 380 | cfg.swift:380:18:380:18 | x | 'x -> y -> Block' | +| 381 | cfg.swift:381:13:381:21 | z | 'z -V z -> x -> y -^ ... + ... -> t -V t -> "literal" -^ FunctionExpr -^ ReturnExpr' | +| 382 | cfg.swift:382:5:382:12 | Block | 'Block -V z -^ ReturnExpr' | +| 386 | cfg.swift:386:1:388:1 | func testTupleElement | 'func testTupleElement -V testTupleElement' | +| 386 | cfg.swift:386:23:386:23 | t | 't -> Block' | +| 387 | cfg.swift:387:10:387:10 | t | 't -^ ... .a -> t -^ ... .1 -^ ... + ... -> t -^ ... .c -^ ... + ... -> Argument -V 1 -> Argument -V 2 -> Argument -V 3 -^ TupleExpr -^ ... .0 -^ ... + ... -^ ReturnExpr' | +| 390 | cfg.swift:390:1:394:1 | class Derived | 'class Derived -V Derived -> BaseType -V C' | +| 391 | cfg.swift:391:3:393:3 | Derived.init | 'Derived.init' | +| 391 | cfg.swift:391:10:393:3 | Block | 'Block' | +| 392 | cfg.swift:392:5:392:9 | super | 'super -^ ... .init -> Argument -V 0 -^ ... .init(...)' | +| 396 | cfg.swift:396:1:404:1 | func doWithoutCatch | 'func doWithoutCatch -V doWithoutCatch' | +| 396 | cfg.swift:396:21:396:21 | x | 'x -> Block' | +| 397 | cfg.swift:397:3:402:3 | TryExpr | 'TryExpr -V Block' | +| 398 | cfg.swift:398:5:398:24 | try ... | 'try ...' | +| 398 | cfg.swift:398:9:398:18 | mightThrow | 'mightThrow -> Argument -V 0 -^ mightThrow(...)' | +| 399 | cfg.swift:399:5:399:9 | print | 'print -> Argument -V "Did not throw." -^ print(...)' | +| 400 | cfg.swift:400:10:400:19 | mightThrow | 'mightThrow -> Argument -V 0 -^ mightThrow(...) -^ try! ...' | +| 401 | cfg.swift:401:5:401:9 | print | 'print -> Argument -V "Still did not throw." -^ print(...)' | +| 403 | cfg.swift:403:10:403:10 | 0 | '0 -^ ReturnExpr' | +| 406 | cfg.swift:406:1:415:1 | class Structors | 'class Structors -V Structors' | +| 407 | cfg.swift:407:3:407:16 | var Structors.field | 'var Structors.field -V field -> Int' | +| 408 | cfg.swift:408:3:410:3 | Structors.init | 'Structors.init' | +| 408 | cfg.swift:408:10:410:3 | Block | 'Block' | +| 409 | cfg.swift:409:5:409:9 | field | 'field -> 10 -^ ... = ...' | +| 412 | cfg.swift:412:3:414:3 | DestructorDeclaration | 'DestructorDeclaration' | +| 412 | cfg.swift:412:10:414:3 | Block | 'Block' | +| 413 | cfg.swift:413:5:413:9 | field | 'field -> 0 -^ ... = ...' | +| 417 | cfg.swift:417:1:419:1 | func dictionaryLiteral | 'func dictionaryLiteral -V dictionaryLiteral' | +| 417 | cfg.swift:417:24:417:24 | x | 'x -> y -> Block' | +| 418 | cfg.swift:418:11:418:13 | "x" | '"x" -> x -^ KeyValuePair -> "y" -> y -^ KeyValuePair -^ MapLiteral -^ ReturnExpr' | +| 421 | cfg.swift:421:1:444:1 | func localDeclarations | 'func localDeclarations -V localDeclarations' | +| 421 | cfg.swift:421:33:444:1 | Block | 'Block' | +| 422 | cfg.swift:422:3:427:3 | class MyLocalClass | 'class MyLocalClass -V MyLocalClass' | +| 423 | cfg.swift:423:5:423:14 | var MyLocalClass.x | 'var MyLocalClass.x -V x -> Int' | +| 424 | cfg.swift:424:5:426:5 | MyLocalClass.init | 'MyLocalClass.init' | +| 424 | cfg.swift:424:12:426:5 | Block | 'Block' | +| 425 | cfg.swift:425:7:425:7 | x | 'x -> 10 -^ ... = ...' | +| 429 | cfg.swift:429:3:434:3 | struct MyLocalStruct | 'struct MyLocalStruct -V MyLocalStruct' | +| 430 | cfg.swift:430:5:430:14 | var MyLocalStruct.x | 'var MyLocalStruct.x -V x -> Int' | +| 431 | cfg.swift:431:5:433:5 | MyLocalStruct.init | 'MyLocalStruct.init' | +| 431 | cfg.swift:431:12:433:5 | Block | 'Block' | +| 432 | cfg.swift:432:7:432:7 | x | 'x -> 10 -^ ... = ...' | +| 436 | cfg.swift:436:3:439:3 | enum MyLocalEnum | 'enum MyLocalEnum -V MyLocalEnum' | +| 437 | cfg.swift:437:10:437:10 | MyLocalEnum.A | 'MyLocalEnum.A -V A' | +| 438 | cfg.swift:438:10:438:10 | MyLocalEnum.B | 'MyLocalEnum.B -V B' | +| 441 | cfg.swift:441:3:441:22 | var myLocalVar | 'var myLocalVar -V myLocalVar -> Int' | +| 443 | cfg.swift:443:10:443:10 | 0 | '0 -^ ReturnExpr' | +| 446 | cfg.swift:446:1:448:1 | struct B | 'struct B -V B' | +| 447 | cfg.swift:447:3:447:13 | var B.x | 'var B.x -V x -> Int' | +| 450 | cfg.swift:450:1:454:1 | struct A | 'struct A -V A' | +| 451 | cfg.swift:451:3:451:11 | var A.b | 'var A.b -V b -> B' | +| 452 | cfg.swift:452:3:452:14 | var A.bs | 'var A.bs -V bs -> Array -> B -^ GenericTypeExpr' | +| 453 | cfg.swift:453:3:453:15 | var A.mayB | 'var A.mayB -V mayB -> Optional -> B -^ GenericTypeExpr' | +| 456 | cfg.swift:456:1:466:1 | func test | 'func test -V test' | +| 456 | cfg.swift:456:11:456:11 | a | 'a -> Block' | +| 457 | cfg.swift:457:3:457:24 | var kpGet_b_x | 'var kpGet_b_x -V kpGet_b_x -> ' | +| 458 | cfg.swift:458:3:458:31 | var kpGet_bs_0_x | 'var kpGet_bs_0_x -V kpGet_bs_0_x -> ' | +| 459 | cfg.swift:459:3:459:37 | var kpGet_mayB_force_x | 'var kpGet_mayB_force_x -V kpGet_mayB_force_x -> ' | +| 460 | cfg.swift:460:3:460:31 | var kpGet_mayB_x | 'var kpGet_mayB_x -V kpGet_mayB_x -> ' | +| 462 | cfg.swift:462:3:462:45 | var apply_kpGet_b_x | 'var apply_kpGet_b_x -V apply_kpGet_b_x -> a -> Argument -V kpGet_b_x -^ a(...)' | +| 463 | cfg.swift:463:3:463:51 | var apply_kpGet_bs_0_x | 'var apply_kpGet_bs_0_x -V apply_kpGet_bs_0_x -> a -> Argument -V kpGet_bs_0_x -^ a(...)' | +| 464 | cfg.swift:464:3:464:63 | var apply_kpGet_mayB_force_x | 'var apply_kpGet_mayB_force_x -V apply_kpGet_mayB_force_x -> a -> Argument -V kpGet_mayB_force_x -^ a(...)' | +| 465 | cfg.swift:465:3:465:51 | var apply_kpGet_mayB_x | 'var apply_kpGet_mayB_x -V apply_kpGet_mayB_x -> a -> Argument -V kpGet_mayB_x -^ a(...)' | +| 468 | cfg.swift:468:1:495:1 | func testIfConfig | 'func testIfConfig -V testIfConfig' | +| 468 | cfg.swift:468:21:495:1 | Block | 'Block' | +| 469 | cfg.swift:469:1:475:6 | | '' | +| 477 | cfg.swift:477:3:477:3 | 5 | '5' | +| 479 | cfg.swift:479:1:482:6 | | '' | +| 484 | cfg.swift:484:3:484:3 | 8 | '8' | +| 486 | cfg.swift:486:1:492:6 | | '' | +| 494 | cfg.swift:494:3:494:4 | 13 | '13' | +| 497 | cfg.swift:497:1:522:1 | func testAvailable | 'func testAvailable -V testAvailable' | +| 497 | cfg.swift:497:29:522:1 | Block | 'Block' | +| 498 | cfg.swift:498:3:498:11 | var x | 'var x -V x -> 0' | +| 500 | cfg.swift:500:3:502:3 | IfExpr | 'IfExpr -V ' | +| 500 | cfg.swift:500:30:502:3 | Block | 'Block' | +| 501 | cfg.swift:501:5:501:5 | x | 'x -> 1 -^ ... += ...' | +| 504 | cfg.swift:504:3:506:3 | IfExpr | 'IfExpr -V ' | +| 504 | cfg.swift:504:33:506:3 | Block | 'Block' | +| 505 | cfg.swift:505:5:505:5 | x | 'x -> 1 -^ ... += ...' | +| 508 | cfg.swift:508:3:510:3 | IfExpr | 'IfExpr -V ' | +| 508 | cfg.swift:508:49:510:3 | Block | 'Block' | +| 509 | cfg.swift:509:5:509:5 | x | 'x -> 1 -^ ... += ...' | +| 512 | cfg.swift:512:3:514:3 | GuardIfStmt | 'GuardIfStmt -V ' | +| 512 | cfg.swift:512:38:514:3 | Block | 'Block' | +| 513 | cfg.swift:513:5:513:5 | x | 'x -> 1 -^ ... += ...' | +| 516 | cfg.swift:516:3:519:3 | IfExpr | 'IfExpr -V ... && ... -V ' | +| 517 | cfg.swift:517:7:517:27 | | '' | +| 517 | cfg.swift:517:29:519:3 | Block | 'Block' | +| 518 | cfg.swift:518:5:518:5 | x | 'x -> 1 -^ ... += ...' | +| 521 | cfg.swift:521:10:521:10 | x | 'x -^ ReturnExpr' | +| 524 | cfg.swift:524:1:538:1 | func testAsyncFor | 'func testAsyncFor -V testAsyncFor' | +| 524 | cfg.swift:524:28:538:1 | Block | 'Block' | +| 525 | cfg.swift:525:5:533:6 | var stream | 'var stream -V stream -> AsyncStream -> Argument -V Int -^ ... .self -> Argument -V . -^ ... .bufferingNewest -> Argument -V 5 -^ ... .bufferingNewest(...) -> Argument -V FunctionExpr -^ AsyncStream(...)' | +| 526 | cfg.swift:526:9:526:20 | continuation | 'continuation' | +| 527 | cfg.swift:527:13:532:13 | Block | 'Block -V Task -^ ... .detached -> Argument -V FunctionExpr -^ ... .detached(...)' | +| 528 | cfg.swift:528:17:531:37 | Block | 'Block -V ForEachStmt -V 1 -> 100 -^ ... ... ...' | +| 528 | cfg.swift:528:21:528:21 | i | 'i -> Block' | +| 529 | cfg.swift:529:21:529:32 | continuation | 'continuation -^ ... .yield -> Argument -V i -^ ... .yield(...)' | +| 531 | cfg.swift:531:17:531:28 | continuation | 'continuation -^ ... .finish -^ ... .finish(...)' | +| 535 | cfg.swift:535:5:537:5 | ForEachStmt | 'ForEachStmt -V stream' | +| 535 | cfg.swift:535:19:535:19 | i | 'i -> Block' | +| 536 | cfg.swift:536:9:536:13 | print | 'print -> Argument -V i -^ print(...)' | +| 540 | cfg.swift:540:1:544:1 | func testNilCoalescing | 'func testNilCoalescing -V testNilCoalescing' | +| 540 | cfg.swift:540:24:540:24 | x | 'x -> Block' | +| 541 | cfg.swift:541:3:543:9 | ReturnExpr | 'ReturnExpr' | +| 542 | cfg.swift:542:5:543:9 | ... ?? ... | '... ?? ... -V x' | +| 543 | cfg.swift:543:9:543:9 | 0 | '0' | +| 546 | cfg.swift:546:1:553:1 | func testNilCoalescing2 | 'func testNilCoalescing2 -V testNilCoalescing2' | +| 546 | cfg.swift:546:25:546:25 | x | 'x -> Block' | +| 547 | cfg.swift:547:3:552:3 | IfExpr | 'IfExpr -V ... ?? ... -V x' | +| 548 | cfg.swift:548:7:548:11 | false | 'false' | +| 548 | cfg.swift:548:13:550:3 | Block | 'Block' | +| 549 | cfg.swift:549:12:549:12 | 1 | '1 -^ ReturnExpr' | +| 550 | cfg.swift:550:10:552:3 | Block | 'Block' | +| 551 | cfg.swift:551:12:551:12 | 0 | '0 -^ ReturnExpr' | +| 555 | cfg.swift:555:1:557:1 | func usesAutoclosure | 'func usesAutoclosure -V usesAutoclosure' | +| 555 | cfg.swift:555:24:555:27 | expr | 'expr -> Block' | +| 556 | cfg.swift:556:10:556:13 | expr | 'expr -^ expr(...) -^ ReturnExpr' | +| 559 | cfg.swift:559:1:561:1 | func autoclosureTest | 'func autoclosureTest -V autoclosureTest' | +| 559 | cfg.swift:559:24:561:1 | Block | 'Block' | +| 560 | cfg.swift:560:3:560:17 | usesAutoclosure | 'usesAutoclosure -> Argument -V 1 -^ usesAutoclosure(...)' | +| 565 | cfg.swift:565:1:567:1 | protocol MyProtocol | 'protocol MyProtocol -V MyProtocol' | +| 566 | cfg.swift:566:2:566:1 | Block | 'Block' | +| 566 | cfg.swift:566:2:566:21 | func MyProtocol.source | 'func MyProtocol.source -V source' | +| 569 | cfg.swift:569:1:571:1 | class MyProcotolImpl | 'class MyProcotolImpl -V MyProcotolImpl -> BaseType -V MyProtocol' | +| 570 | cfg.swift:570:2:570:34 | func MyProcotolImpl.source | 'func MyProcotolImpl.source -V source' | +| 570 | cfg.swift:570:23:570:34 | Block | 'Block -V 0 -^ ReturnExpr' | +| 573 | cfg.swift:573:1:573:62 | func getMyProtocol | 'func getMyProtocol -V getMyProtocol' | +| 573 | cfg.swift:573:36:573:62 | Block | 'Block -V MyProcotolImpl -^ MyProcotolImpl(...) -^ ReturnExpr' | +| 574 | cfg.swift:574:1:574:70 | func getMyProtocolImpl | 'func getMyProtocolImpl -V getMyProtocolImpl' | +| 574 | cfg.swift:574:44:574:70 | Block | 'Block -V MyProcotolImpl -^ MyProcotolImpl(...) -^ ReturnExpr' | +| 576 | cfg.swift:576:1:576:23 | func sink | 'func sink -V sink' | +| 576 | cfg.swift:576:11:576:13 | arg | 'arg -> Block' | +| 578 | cfg.swift:578:1:583:1 | func testOpenExistentialExpr | 'func testOpenExistentialExpr -V testOpenExistentialExpr' | +| 578 | cfg.swift:578:30:578:30 | x | 'x -> y -> Block' | +| 579 | cfg.swift:579:2:579:5 | sink | 'sink -> Argument -V x -^ ... .source -^ ... .source(...) -^ sink(...)' | +| 580 | cfg.swift:580:2:580:5 | sink | 'sink -> Argument -V y -^ ... .source -^ ... .source(...) -^ sink(...)' | +| 581 | cfg.swift:581:2:581:5 | sink | 'sink -> Argument -V getMyProtocol -^ getMyProtocol(...) -^ ... .source -^ ... .source(...) -^ sink(...)' | +| 582 | cfg.swift:582:2:582:5 | sink | 'sink -> Argument -V getMyProtocolImpl -^ getMyProtocolImpl(...) -^ ... .source -^ ... .source(...) -^ sink(...)' | +| 585 | cfg.swift:585:1:593:1 | func singleStmtExpr | 'func singleStmtExpr -V singleStmtExpr' | +| 585 | cfg.swift:585:23:585:23 | x | 'x -> Block' | +| 586 | cfg.swift:586:3:589:3 | let a | 'let a -V a -> SwitchExpr -V x' | +| 587 | cfg.swift:587:5:587:17 | SwitchCase | 'SwitchCase -V 0 -> 5 -^ ... ..< ...' | +| 587 | cfg.swift:587:17:587:17 | Block | 'Block -V 1' | +| 588 | cfg.swift:588:5:588:14 | SwitchCase | 'SwitchCase -V Block -V 2' | +| 590 | cfg.swift:590:3:592:18 | let b | 'let b -V b' | +| 591 | cfg.swift:591:9:592:18 | IfExpr | 'IfExpr -V x -> 42 -^ ... < ...' | +| 591 | cfg.swift:591:21:591:25 | Block | 'Block -V 1' | +| 592 | cfg.swift:592:14:592:18 | Block | 'Block -V 2' | +| 596 | cfg.swift:596:1:598:1 | struct ValueGenericsStruct | 'struct ValueGenericsStruct -V ValueGenericsStruct -> TypeParameter -V N -> Int' | +| 597 | cfg.swift:597:5:597:13 | var ValueGenericsStruct.x | 'var ValueGenericsStruct.x -V x -> N' | +| 600 | cfg.swift:600:1:604:1 | func valueGenericsFn | 'func valueGenericsFn -V valueGenericsFn' | +| 600 | cfg.swift:600:36:600:40 | value | 'value -> Block' | +| 601 | cfg.swift:601:5:601:13 | var x | 'var x -V x -> N' | +| 602 | cfg.swift:602:5:602:9 | print | 'print -> Argument -V x -^ print(...)' | +| 603 | cfg.swift:603:5:603:5 | _ | '_ -> value -^ ... = ...' | diff --git a/unified/ql/test/library-tests/controlflow/basicblock-slices.ql b/unified/ql/test/library-tests/controlflow/basicblock-slices.ql new file mode 100644 index 000000000000..1b57b4b5d5e2 --- /dev/null +++ b/unified/ql/test/library-tests/controlflow/basicblock-slices.ql @@ -0,0 +1,2 @@ +import unified +import ControlFlow::TestCfgInline::BlockSlices diff --git a/unified/ql/test/library-tests/controlflow/cfg.expected b/unified/ql/test/library-tests/controlflow/cfg.expected new file mode 100644 index 000000000000..52ba36cd4454 --- /dev/null +++ b/unified/ql/test/library-tests/controlflow/cfg.expected @@ -0,0 +1,157 @@ +bbContinues +bbStep +| cfg.swift:20:9:20:14 | ... >= ... | '... >= ... : false -> Block(+0)' | +| cfg.swift:20:9:20:14 | ... >= ... | '... >= ... : true -> GuardIfStmt(+3)' | +| cfg.swift:23:9:23:14 | ... <= ... | '... <= ... : false -> Block(+0)' | +| cfg.swift:30:9:30:24 | mightThrow(...) | 'mightThrow(...) : exception -> CatchClause(+5)' | +| cfg.swift:30:9:30:24 | mightThrow(...) | 'mightThrow(...) : successor -> try ...(+0)' | +| cfg.swift:33:5:33:33 | print(...) | 'print(...) : successor -> 0(+11)' | +| cfg.swift:35:11:35:60 | OrPattern | 'OrPattern : match -> Block(+0)' | +| cfg.swift:35:11:35:60 | OrPattern | 'OrPattern : no-match -> CatchClause(+2)' | +| cfg.swift:37:11:37:39 | ... .error3(...) | '... .error3(...) : match -> Block(+0)' | +| cfg.swift:37:11:37:39 | ... .error3(...) | '... .error3(...) : no-match -> CatchClause(+2)' | +| cfg.swift:39:11:39:20 | | ' : match -> Block(+0)' | +| cfg.swift:39:11:39:20 | | ' : no-match -> CatchClause(+2)' | +| cfg.swift:40:5:40:20 | print(...) | 'print(...) : successor -> 0(+4)' | +| cfg.swift:42:5:42:35 | print(...) | 'print(...) : successor -> 0(+2)' | +| cfg.swift:140:12:140:17 | ... ... ... | '... ... ... : empty -> SwitchExpr(+3)' | +| cfg.swift:140:12:140:17 | ... ... ... | '... ... ... : non-empty -> _(+0)' | +| cfg.swift:141:9:141:12 | Block | 'Block : successor -> SwitchExpr(+2)' | +| cfg.swift:141:9:141:12 | Block | 'Block : successor -> _(-1)' | +| cfg.swift:144:10:144:13 | OrPattern | 'OrPattern : match -> Block(+1)' | +| cfg.swift:144:10:144:13 | OrPattern | 'OrPattern : no-match -> SwitchCase(+3)' | +| cfg.swift:147:10:147:10 | ConditionalPattern | 'ConditionalPattern : match -> Block(+3)' | +| cfg.swift:147:10:147:10 | ConditionalPattern | 'ConditionalPattern : no-match -> SwitchCase(+4)' | +| cfg.swift:148:10:148:15 | ... >= ... | '... >= ... : false -> x(-1)' | +| cfg.swift:148:10:148:15 | ... >= ... | '... >= ... : true -> x(+1)' | +| cfg.swift:149:13:149:17 | ... < ... | '... < ... : successor -> x(-2)' | +| cfg.swift:187:6:187:10 | ... > ... | '... > ... : false -> IfExpr(+3)' | +| cfg.swift:187:6:187:10 | ... > ... | '... > ... : true -> Block(+0)' | +| cfg.swift:190:11:190:16 | ... <= ... | '... <= ... : false,false,false -> Block(+5)' | +| cfg.swift:190:11:190:16 | ... <= ... | '... <= ... : true -> x(+1)' | +| cfg.swift:191:13:191:17 | ... > ... | '... > ... : false,false,false -> Block(+4)' | +| cfg.swift:191:13:191:17 | ... > ... | '... > ... : true -> ! ...(+1)' | +| cfg.swift:192:15:192:20 | ... == ... | '... == ... : false -> Block(+0)' | +| cfg.swift:192:15:192:20 | ... == ... | '... == ... : true,false -> Block(+3)' | +| cfg.swift:201:6:201:6 | b | 'b : false -> 1(+3)' | +| cfg.swift:201:6:201:6 | b | 'b : true -> Block(+0)' | +| cfg.swift:208:6:208:10 | ... < ... | '... < ... : false -> x(+6)' | +| cfg.swift:208:6:208:10 | ... < ... | '... < ... : true -> Block(+0)' | +| cfg.swift:210:8:210:13 | ... > ... | '... > ... : false -> x(+4)' | +| cfg.swift:210:8:210:13 | ... > ... | '... > ... : true -> Block(+0)' | +| cfg.swift:211:7:211:15 | ... = ... | '... = ... : successor -> x(+3)' | +| cfg.swift:218:11:218:12 | b1 | 'b1 : false -> b3(+2)' | +| cfg.swift:218:11:218:12 | b1 | 'b1 : true -> b2(+1)' | +| cfg.swift:219:13:219:14 | b2 | 'b2 : false,false -> "!b2 \|\| !b3"(+3)' | +| cfg.swift:219:13:219:14 | b2 | 'b2 : true,true -> "b2 \|\| b3"(+2)' | +| cfg.swift:220:13:220:14 | b3 | 'b3 : false,false -> "!b2 \|\| !b3"(+2)' | +| cfg.swift:220:13:220:14 | b3 | 'b3 : true,true -> "b2 \|\| b3"(+1)' | +| cfg.swift:221:9:221:18 | "b2 \|\| b3" | '"b2 \|\| b3" : successor -> ReturnExpr(-3)' | +| cfg.swift:222:9:222:20 | "!b2 \|\| !b3" | '"!b2 \|\| !b3" : successor -> ReturnExpr(-4)' | +| cfg.swift:226:6:226:6 | b | 'b : false -> Bool(+2)' | +| cfg.swift:226:6:226:6 | b | 'b : true -> true(+1)' | +| cfg.swift:227:8:227:11 | true | 'true : true -> Block(+1)' | +| cfg.swift:228:7:228:17 | Bool(...) | 'Bool(...) : false -> Block(+3)' | +| cfg.swift:228:7:228:17 | Bool(...) | 'Bool(...) : true,true -> Block(+0)' | +| cfg.swift:243:6:243:6 | b | 'b : false -> Block(+3)' | +| cfg.swift:243:6:243:6 | b | 'b : true -> Block(+0)' | +| cfg.swift:244:5:244:17 | print(...) | 'print(...) : successor -> print(+3)' | +| cfg.swift:246:8:246:9 | Block | 'Block : successor -> print(+1)' | +| cfg.swift:251:7:251:8 | b1 | 'b1 : false -> b2(+0)' | +| cfg.swift:251:7:251:8 | b1 | 'b1 : true,true -> Block(+0)' | +| cfg.swift:251:13:251:14 | b2 | 'b2 : true,true -> Block(+0)' | +| cfg.swift:313:3:313:3 | WhileStmt | 'WhileStmt : successor -> x(+0)' | +| cfg.swift:313:9:313:14 | ... >= ... | '... >= ... : true -> Block(+0)' | +| cfg.swift:315:5:315:10 | ... -= ... | '... -= ... : successor -> x(-2)' | +| cfg.swift:320:3:320:3 | WhileStmt | 'WhileStmt : successor -> x(+0)' | +| cfg.swift:320:9:320:14 | ... >= ... | '... >= ... : false -> print(+11)' | +| cfg.swift:320:9:320:14 | ... >= ... | '... >= ... : true -> Block(+0)' | +| cfg.swift:323:8:323:14 | ... > ... | '... > ... : false -> IfExpr(+3)' | +| cfg.swift:323:8:323:14 | ... > ... | '... > ... : true -> Block(+0)' | +| cfg.swift:324:7:324:11 | BreakExpr | 'BreakExpr : break -> print(+7)' | +| cfg.swift:326:13:326:18 | ... > ... | '... > ... : false -> print(+3)' | +| cfg.swift:326:13:326:18 | ... > ... | '... > ... : true -> Block(+0)' | +| cfg.swift:327:7:327:14 | ContinueExpr | 'ContinueExpr : continue -> x(-7)' | +| cfg.swift:329:5:329:17 | print(...) | 'print(...) : successor -> x(-9)' | +| cfg.swift:335:10:335:10 | WhileStmt | 'WhileStmt : successor -> x(+0)' | +| cfg.swift:335:16:335:21 | ... >= ... | '... >= ... : true -> Block(+0)' | +| cfg.swift:336:12:336:12 | WhileStmt | 'WhileStmt : successor -> x(+0)' | +| cfg.swift:336:18:336:23 | ... >= ... | '... >= ... : false -> print(+11)' | +| cfg.swift:336:18:336:23 | ... >= ... | '... >= ... : true -> Block(+0)' | +| cfg.swift:339:10:339:16 | ... > ... | '... > ... : false -> IfExpr(+3)' | +| cfg.swift:339:10:339:16 | ... > ... | '... > ... : true -> Block(+0)' | +| cfg.swift:342:15:342:20 | ... > ... | '... > ... : false -> print(+3)' | +| cfg.swift:342:15:342:20 | ... > ... | '... > ... : true -> Block(+0)' | +| cfg.swift:343:9:343:22 | ContinueExpr | 'ContinueExpr : continue -> x(-7)' | +| cfg.swift:345:7:345:19 | print(...) | 'print(...) : successor -> x(-9)' | +| cfg.swift:347:5:347:17 | print(...) | 'print(...) : successor -> x(-12)' | +| cfg.swift:352:3:352:3 | DoWhileStmt | 'DoWhileStmt : successor -> Block(+0)' | +| cfg.swift:355:11:355:16 | ... >= ... | '... >= ... : true -> Block(-3)' | +| cfg.swift:360:3:360:3 | WhileStmt | 'WhileStmt : successor -> x(+0)' | +| cfg.swift:360:9:360:14 | ... < ... | '... < ... : true -> Block(+0)' | +| cfg.swift:361:5:361:10 | ... += ... | '... += ... : successor -> x(-1)' | +| cfg.swift:398:9:398:24 | mightThrow(...) | 'mightThrow(...) : successor -> try ...(+0)' | +| cfg.swift:500:6:500:28 | | ' : false -> IfExpr(+4)' | +| cfg.swift:500:6:500:28 | | ' : true -> Block(+0)' | +| cfg.swift:501:5:501:10 | ... += ... | '... += ... : successor -> IfExpr(+3)' | +| cfg.swift:504:6:504:31 | | ' : false -> IfExpr(+4)' | +| cfg.swift:504:6:504:31 | | ' : true -> Block(+0)' | +| cfg.swift:505:5:505:10 | ... += ... | '... += ... : successor -> IfExpr(+3)' | +| cfg.swift:508:6:508:47 | | ' : false -> GuardIfStmt(+4)' | +| cfg.swift:508:6:508:47 | | ' : true -> Block(+0)' | +| cfg.swift:509:5:509:10 | ... += ... | '... += ... : successor -> GuardIfStmt(+3)' | +| cfg.swift:512:9:512:31 | | ' : false -> Block(+0)' | +| cfg.swift:512:9:512:31 | | ' : true -> IfExpr(+4)' | +| cfg.swift:513:5:513:10 | ... += ... | '... += ... : successor -> IfExpr(+3)' | +| cfg.swift:516:6:516:28 | | ' : false,false -> x(+5)' | +| cfg.swift:516:6:516:28 | | ' : true -> (+1)' | +| cfg.swift:517:7:517:27 | | ' : false,false -> x(+4)' | +| cfg.swift:517:7:517:27 | | ' : true -> Block(+0)' | +| cfg.swift:518:5:518:10 | ... += ... | '... += ... : successor -> x(+3)' | +| cfg.swift:528:26:528:32 | ... ... ... | '... ... ... : empty -> continuation(+3)' | +| cfg.swift:528:26:528:32 | ... ... ... | '... ... ... : non-empty -> i(+0)' | +| cfg.swift:529:21:529:41 | ... .yield(...) | '... .yield(...) : successor -> continuation(+2)' | +| cfg.swift:529:21:529:41 | ... .yield(...) | '... .yield(...) : successor -> i(-1)' | +| cfg.swift:535:24:535:29 | stream | 'stream : non-empty -> i(+0)' | +| cfg.swift:536:9:536:16 | print(...) | 'print(...) : successor -> i(-1)' | +| cfg.swift:542:5:542:5 | x | 'x : non-null -> ReturnExpr(-1)' | +| cfg.swift:542:5:542:5 | x | 'x : null -> 0(+1)' | +| cfg.swift:543:9:543:9 | 0 | '0 : successor -> ReturnExpr(-2)' | +| cfg.swift:547:6:547:6 | x | 'x : non-null,false -> Block(+3)' | +| cfg.swift:547:6:547:6 | x | 'x : non-null,true -> Block(+1)' | +| cfg.swift:547:6:547:6 | x | 'x : null -> false(+1)' | +| cfg.swift:548:7:548:11 | false | 'false : false -> Block(+2)' | +| cfg.swift:587:10:587:14 | ... ..< ... | '... ..< ... : match -> Block(+0)' | +| cfg.swift:587:10:587:14 | ... ..< ... | '... ..< ... : no-match -> SwitchCase(+1)' | +| cfg.swift:587:17:587:17 | 1 | '1 : successor -> let b(+3)' | +| cfg.swift:588:14:588:14 | 2 | '2 : successor -> let b(+2)' | +| cfg.swift:591:13:591:18 | ... < ... | '... < ... : false -> Block(+1)' | +| cfg.swift:591:13:591:18 | ... < ... | '... < ... : true -> Block(+0)' | +noCfg +| cfg.swift:47:42:47:47 | String | +| cfg.swift:53:34:53:34 | _ | +| cfg.swift:60:34:60:34 | _ | +| cfg.swift:77:34:77:33 | Optional | +| cfg.swift:83:21:83:23 | Int | +| cfg.swift:106:22:106:24 | Int | +| cfg.swift:146:7:146:17 | ReturnExpr | +| cfg.swift:155:3:155:5 | var | +| cfg.swift:156:6:156:8 | obj | +| cfg.swift:157:5:157:15 | ReturnExpr | +| cfg.swift:160:3:160:5 | let | +| cfg.swift:161:6:161:34 | PatternGuardExpr | +| cfg.swift:162:5:162:17 | ReturnExpr | +| cfg.swift:164:5:164:16 | ReturnExpr | +| cfg.swift:238:5:238:9 | print | +| cfg.swift:279:29:279:53 | TupleExpr | +| cfg.swift:371:25:371:24 | Optional | +| cfg.swift:380:45:380:47 | Int | +| cfg.swift:391:3:391:6 | init | +| cfg.swift:408:3:408:6 | init | +| cfg.swift:421:29:421:31 | Int | +| cfg.swift:424:5:424:8 | init | +| cfg.swift:431:5:431:8 | init | +| cfg.swift:497:25:497:27 | Int | +nonSimple +| cfg.swift:12:17:12:25 | withParam | 'withParam -? Block' | +| cfg.swift:35:5:35:5 | CatchClause | 'CatchClause -V MyError -^ ... .error1 -> isZero -> Argument -V x -^ isZero(...) -? MyError -^ ... .error2 -^ ConditionalPattern -^ OrPattern' | diff --git a/unified/ql/test/library-tests/controlflow/cfg.ql b/unified/ql/test/library-tests/controlflow/cfg.ql new file mode 100644 index 000000000000..e86a681954e8 --- /dev/null +++ b/unified/ql/test/library-tests/controlflow/cfg.ql @@ -0,0 +1,2 @@ +import unified +import ControlFlow::TestCfgInline diff --git a/unified/ql/test/library-tests/controlflow/cfg.qlref b/unified/ql/test/library-tests/controlflow/cfg.qlref new file mode 100644 index 000000000000..d1b031838715 --- /dev/null +++ b/unified/ql/test/library-tests/controlflow/cfg.qlref @@ -0,0 +1,2 @@ +query: cfg.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/unified/ql/test/library-tests/controlflow/cfg.swift b/unified/ql/test/library-tests/controlflow/cfg.swift new file mode 100644 index 000000000000..14c231837044 --- /dev/null +++ b/unified/ql/test/library-tests/controlflow/cfg.swift @@ -0,0 +1,604 @@ +var topLevelDecl : Int = 0 +0 +topLevelDecl + 1 + +func returnZero() -> Int { return 0 } + +returnZero() +Double(topLevelDecl) + +enum MyError: Error { + case error1, error2 + case error3(withParam: Int) // $ nonSimple='withParam -? Block' +} + +func isZero(x : Int) -> Bool { + return x == 0 +} + +func mightThrow(x : Int) throws -> Void { + guard x >= 0 else { // $ bbStep='... >= ... : false -> Block(+0)' bbStep='... >= ... : true -> GuardIfStmt(+3)' + throw MyError.error1 + } + guard x <= 0 else { // $ bbStep='... <= ... : false -> Block(+0)' + throw MyError.error3(withParam: x + 1) + } +} + +func tryCatch(x : Int) -> Int { + do { + try mightThrow(x: 0) // $ bbStep='mightThrow(...) : exception -> CatchClause(+5)' bbStep='mightThrow(...) : successor -> try ...(+0)' + print("Did not throw.") + try! mightThrow(x: 0) + print("Still did not throw.") // $ bbStep='print(...) : successor -> 0(+11)' + + } catch MyError.error1 , MyError.error2 where isZero(x: x) { // $ bbStep='OrPattern : match -> Block(+0)' bbStep='OrPattern : no-match -> CatchClause(+2)' nonSimple='CatchClause -V MyError -^ ... .error1 -> isZero -> Argument -V x -^ isZero(...) -? MyError -^ ... .error2 -^ ConditionalPattern -^ OrPattern' + return 0 + } catch MyError.error3(let withParam) { // $ bbStep='... .error3(...) : match -> Block(+0)' bbStep='... .error3(...) : no-match -> CatchClause(+2)' + return withParam + } catch is MyError { // $ bbStep=' : match -> Block(+0)' bbStep=' : no-match -> CatchClause(+2)' + print("MyError") // $ bbStep='print(...) : successor -> 0(+4)' + } catch { + print("Unknown error \(error)") // $ bbStep='print(...) : successor -> 0(+2)' + } + return 0 +} + +func createClosure1(s : String) -> () -> String { // $ noCfg + return { + return s + "" + } +} + +func createClosure2(x : Int) -> (_ : Int) -> Int { // $ noCfg + func f(y : Int) -> Int { + return x + y + } + return f +} + +func createClosure3(x : Int) -> (_ : Int) -> Int { // $ noCfg + return { + (y) -> Int in x + y + } +} + +func callClosures() { + var x1 = createClosure1(s: "")() + var x2 = createClosure2(x: 0)(10) + var x3 = createClosure3(x: 0)(10) +} + +func maybeParseInt(s : String) -> Int? { + var n : Int? = Int(s) + return n +} + +func forceAndBackToOptional() -> Int? { // $ noCfg + var nBang = maybeParseInt(s:"42")! + var n = maybeParseInt(s:"42") + return nBang + n! +} + +func testInOut() -> Int { // $ noCfg + var temp = 10 + + func add(a: inout Int) { + a = a + 1 + } + + func addOptional(a: inout Int?) { + a = nil + } + + add(a:&temp) + var tempOptional : Int? = 10 + addOptional(a:&tempOptional) + return temp + tempOptional! +} + +class C { + let myInt: Int + init(n: Int) { + myInt = n + } + + func getMyInt() -> Int { // $ noCfg + return myInt + } +} + +func testMemberRef(param : C, inoutParam : inout C, opt : C?) { + let c = C(n: 42) + let n1 = c.myInt + let n2 = c.self.myInt + let n3 = c.getMyInt() + let n4 = c.self.getMyInt() + let n5 = param.myInt + let n6 = param.self.myInt + + let n8 = param.self.getMyInt() + + let n9 = inoutParam.myInt + let n7 = param.getMyInt() + let n10 = inoutParam.self.myInt + let n11 = inoutParam.getMyInt() + let n12 = inoutParam.self.getMyInt() + + let n13 = opt!.myInt + let n14 = opt!.self.myInt + let n15 = opt!.getMyInt() + let n16 = opt!.self.getMyInt() + + let n17 = opt?.myInt + let n18 = opt?.self.myInt + let n19 = opt?.getMyInt() + let n20 = opt?.self.getMyInt() +} + +func patterns(x : Int) -> Bool { + for _ in 0...10 // $ bbStep='... ... ... : empty -> SwitchExpr(+3)' bbStep='... ... ... : non-empty -> _(+0)' + { } // $ bbStep='Block : successor -> _(-1)' bbStep='Block : successor -> SwitchExpr(+2)' + + switch x { + case 0, 1: // $ bbStep='OrPattern : match -> Block(+1)' bbStep='OrPattern : no-match -> SwitchCase(+3)' + return true + return true // $ noCfg + case x where // $ bbStep='ConditionalPattern : match -> Block(+3)' bbStep='ConditionalPattern : no-match -> SwitchCase(+4)' + (x >= 2) && // $ bbStep='... >= ... : false -> x(-1)' bbStep='... >= ... : true -> x(+1)' + x < 5: // $ bbStep='... < ... : successor -> x(-2)' + return true + default: + return false + } + + var obj : AnyObject = C(n: x) // $ noCfg + if obj is C { // $ noCfg + return true // $ noCfg + } + + let xOptional: Int? = x // $ noCfg + if case .some(let x) = xOptional { // $ noCfg + return x == 0 // $ noCfg + } else { + return false // $ noCfg + } +} + +func testDefer(x : inout Int) { + // Will print 1, 2, 3, 4 + defer { + print("4") + } + + defer { + print("3") + } + + defer { + print("1") + defer { + print("2") + } + } +} + +func m1(x : Int) { + if x > 2 { // $ bbStep='... > ... : false -> IfExpr(+3)' bbStep='... > ... : true -> Block(+0)' + print("x is greater than 2") + } + else if x <= 2 && // $ bbStep='... <= ... : false,false,false -> Block(+5)' bbStep='... <= ... : true -> x(+1)' + x > 0 && // $ bbStep='... > ... : false,false,false -> Block(+4)' bbStep='... > ... : true -> ! ...(+1)' + !(x == 5) { // $ bbStep='... == ... : false -> Block(+0)' bbStep='... == ... : true,false -> Block(+3)' + print("x is 1") + } + else { + print("I can't guess the number") + } +} + +func m2(b : Bool) -> Int { + if b { // $ bbStep='b : false -> 1(+3)' bbStep='b : true -> Block(+0)' + return 0 + } + return 1 +} + +func m3(x : inout Int) -> Int { + if x < 0 { // $ bbStep='... < ... : false -> x(+6)' bbStep='... < ... : true -> Block(+0)' + x = -x + if x > 10 { // $ bbStep='... > ... : false -> x(+4)' bbStep='... > ... : true -> Block(+0)' + x = x - 1 // $ bbStep='... = ... : successor -> x(+3)' + } + } + return x +} + +func m4 (b1 : Bool, b2 : Bool, b3 : Bool) -> String { + return (b1 ? // $ bbStep='b1 : false -> b3(+2)' bbStep='b1 : true -> b2(+1)' + b2 : // $ bbStep='b2 : false,false -> "!b2 \|\| !b3"(+3)' bbStep='b2 : true,true -> "b2 \|\| b3"(+2)' + b3) ? // $ bbStep='b3 : false,false -> "!b2 \|\| !b3"(+2)' bbStep='b3 : true,true -> "b2 \|\| b3"(+1)' + "b2 || b3" : // $ bbStep='"b2 \|\| b3" : successor -> ReturnExpr(-3)' + "!b2 || !b3" // $ bbStep='"!b2 \|\| !b3" : successor -> ReturnExpr(-4)' +} + +func conversionsInSplitEntry (b : Bool) -> String { + if b ? // $ bbStep='b : false -> Bool(+2)' bbStep='b : true -> true(+1)' + (true) : // $ bbStep='true : true -> Block(+1)' + Bool(false) { // $ bbStep='Bool(...) : false -> Block(+3)' bbStep='Bool(...) : true,true -> Block(+0)' + return "b" + } + else { + return "!b" + } +} + +func constant_condition() { + if !true { + print("Impossible") // $ noCfg + } +} + +func empty_else(b : Bool) { + if b { // $ bbStep='b : false -> Block(+3)' bbStep='b : true -> Block(+0)' + print("true") // $ bbStep='print(...) : successor -> print(+3)' + } + else {} // $ bbStep='Block : successor -> print(+1)' + print("done") +} + +func disjunct (b1 : Bool, b2 : Bool) { + if (b1 || b2) { // $ bbStep='b1 : false -> b2(+0)' bbStep='b1 : true,true -> Block(+0)' bbStep='b2 : true,true -> Block(+0)' + print("b1 or b2") + } +} + +func binaryExprs(a : Int, b : Int) { + let c = a + b + let d = a - b + let e = a * b + let f = a / b + let g = a % b + let h = a & b + let i = a | b + let j = a ^ b + let k = a << b + let l = a >> b + let o = a == b + let p = a != b + let q = a < b + let r = a <= b + let s = a > b + let t = a >= b +} + +func interpolatedString(x : Int, y : Int) -> String { + return "\(x) + \(y) is equal to \(x + y) and here is a zero: \(returnZero())" +} + +func testSubscriptExpr() -> (Int, Int, Int, Int, Int) { // $ noCfg + var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + a[0] = 0 + a[1] += 1 + a[2] -= 1 + a[3] *= 1 + a[4] /= 1 + a[5] %= 1 + a[6] &= 1 + a[7] |= 1 + a[8] ^= 1 + a[9] <<= 1 + a[10] >>= 1 + + var tupleWithA = (a[0], a[1], a[2], a[3], a[4]) + + var b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] + b[0] = a[10] + b[1] = b[0] + 1 + b[2] = b[1] - 1 + b[3] = b[2] * 1 + b[4] = b[3] / 1 + b[5] = b[4] % 1 + b[6] = b[5] & 1 + b[7] = b[6] | 1 + b[8] = b[7] ^ 1 + b[9] = b[8] << 1 + b[10] = b[9] >> 1 + + let (a1, a2, a3, a4, a5) = tupleWithA + return (a1 + b[0], a2 + b[1], a3 + b[2], a4 + b[3], a5 + b[4]) +} + +func loop1(x : inout Int) { + while x >= 0 { // $ bbStep='WhileStmt : successor -> x(+0)' bbStep='... >= ... : true -> Block(+0)' + print(x) + x -= 1 // $ bbStep='... -= ... : successor -> x(-2)' + } +} + +func loop2(x : inout Int) { + while x >= 0 { // $ bbStep='WhileStmt : successor -> x(+0)' bbStep='... >= ... : false -> print(+11)' bbStep='... >= ... : true -> Block(+0)' + print(x) + x -= 1 + if x > 100 { // $ bbStep='... > ... : false -> IfExpr(+3)' bbStep='... > ... : true -> Block(+0)' + break // $ bbStep='BreakExpr : break -> print(+7)' + } + else if x > 50 { // $ bbStep='... > ... : false -> print(+3)' bbStep='... > ... : true -> Block(+0)' + continue // $ bbStep='ContinueExpr : continue -> x(-7)' + } + print("Iter") // $ bbStep='print(...) : successor -> x(-9)' + } + print("Done") +} + +func labeledLoop(x : inout Int) { + outer: while x >= 0 { // $ bbStep='WhileStmt : successor -> x(+0)' bbStep='... >= ... : true -> Block(+0)' + inner: while x >= 0 { // $ bbStep='WhileStmt : successor -> x(+0)' bbStep='... >= ... : false -> print(+11)' bbStep='... >= ... : true -> Block(+0)' + print(x) + x -= 1 + if x > 100 { // $ bbStep='... > ... : false -> IfExpr(+3)' bbStep='... > ... : true -> Block(+0)' + break outer + } + else if x > 50 { // $ bbStep='... > ... : false -> print(+3)' bbStep='... > ... : true -> Block(+0)' + continue inner // $ bbStep='ContinueExpr : continue -> x(-7)' + } + print("Iter") // $ bbStep='print(...) : successor -> x(-9)' + } + print("Done") // $ bbStep='print(...) : successor -> x(-12)' + } +} + +func testRepeat(x : inout Int) { + repeat { // $ bbStep='DoWhileStmt : successor -> Block(+0)' + print(x) + x -= 1 + } while x >= 0 // $ bbStep='... >= ... : true -> Block(-3)' +} + +func loop_with_identity_expr() { + var x = 0 + while(x < 10) { // $ bbStep='WhileStmt : successor -> x(+0)' bbStep='... < ... : true -> Block(+0)' + x += 1 // $ bbStep='... += ... : successor -> x(-1)' + } +} + +class OptionalC { + let c: C? + init(arg: C?) { + c = arg + } + + func getOptional() -> C? { // $ noCfg + return c + } +} + +func testOptional(c : OptionalC?) -> Int? { + return c?.getOptional()?.getMyInt() +} + +func testCapture(x : Int, y : Int) -> () -> Int { // $ noCfg + return { [z = x + y, t = "literal"] in + return z + } +} + +func testTupleElement(t : (a: Int, Int, c: Int)) -> Int { + return t.a + t.1 + t.c + (1, 2, 3).0 +} + +class Derived : C { + init() { // $ noCfg + super.init(n: 0) + } +} + +func doWithoutCatch(x : Int) throws -> Int { + do { + try mightThrow(x: 0) // $ bbStep='mightThrow(...) : successor -> try ...(+0)' + print("Did not throw.") + try! mightThrow(x: 0) + print("Still did not throw.") + } + return 0 +} + +class Structors { + var field: Int + init() { // $ noCfg + field = 10 + } + + deinit { + field = 0 + } +} + +func dictionaryLiteral(x: Int, y: Int) -> [String: Int] { + return ["x": x, "y": y] +} + +func localDeclarations() -> Int { // $ noCfg + class MyLocalClass { + var x: Int + init() { // $ noCfg + x = 10 + } + } + + struct MyLocalStruct { + var x: Int + init() { // $ noCfg + x = 10 + } + } + + enum MyLocalEnum { + case A + case B + } + + var myLocalVar : Int; + + return 0 +} + +struct B { + var x : Int +} + +struct A { + var b : B + var bs : [B] + var mayB : B? +} + +func test(a : A) { + var kpGet_b_x = \A.b.x + var kpGet_bs_0_x = \A.bs[0].x + var kpGet_mayB_force_x = \A.mayB!.x + var kpGet_mayB_x = \A.mayB?.x + + var apply_kpGet_b_x = a[keyPath: kpGet_b_x] + var apply_kpGet_bs_0_x = a[keyPath: kpGet_bs_0_x] + var apply_kpGet_mayB_force_x = a[keyPath: kpGet_mayB_force_x] + var apply_kpGet_mayB_x = a[keyPath: kpGet_mayB_x] +} + +func testIfConfig() { +#if FOO + 1 + 2 +#else + 3 + 4 +#endif + + 5 + +#if BAR + 6 + 7 +#endif + + 8 + +#if FOO + 9 + 10 +#elseif true + 11 + 12 +#endif + + 13 +} + +func testAvailable() -> Int { // $ noCfg + var x = 0; + + if #available(macOS 10, *) { // $ bbStep=' : false -> IfExpr(+4)' bbStep=' : true -> Block(+0)' + x += 1 // $ bbStep='... += ... : successor -> IfExpr(+3)' + } + + if #available(macOS 10.13, *) { // $ bbStep=' : false -> IfExpr(+4)' bbStep=' : true -> Block(+0)' + x += 1 // $ bbStep='... += ... : successor -> IfExpr(+3)' + } + + if #unavailable(iOS 10, watchOS 10, macOS 10) { // $ bbStep=' : false -> GuardIfStmt(+4)' bbStep=' : true -> Block(+0)' + x += 1 // $ bbStep='... += ... : successor -> GuardIfStmt(+3)' + } + + guard #available(macOS 12, *) else { // $ bbStep=' : false -> Block(+0)' bbStep=' : true -> IfExpr(+4)' + x += 1 // $ bbStep='... += ... : successor -> IfExpr(+3)' + } + + if #available(macOS 12, *), // $ bbStep=' : true -> (+1)' bbStep=' : false,false -> x(+5)' + #available(iOS 12, *) { // $ bbStep=' : false,false -> x(+4)' bbStep=' : true -> Block(+0)' + x += 1 // $ bbStep='... += ... : successor -> x(+3)' + } + + return x +} + +func testAsyncFor () async { + var stream = AsyncStream(Int.self, bufferingPolicy: .bufferingNewest(5), { + continuation in + Task.detached { + for i in 1...100 { // $ bbStep='... ... ... : empty -> continuation(+3)' bbStep='... ... ... : non-empty -> i(+0)' + continuation.yield(i) // $ bbStep='... .yield(...) : successor -> continuation(+2)' bbStep='... .yield(...) : successor -> i(-1)' + } + continuation.finish() + } + }) + + for try await i in stream { // $ bbStep='stream : non-empty -> i(+0)' + print(i) // $ bbStep='print(...) : successor -> i(-1)' + } +} + +func testNilCoalescing(x: Int?) -> Int { + return + x ?? // $ bbStep='x : non-null -> ReturnExpr(-1)' bbStep='x : null -> 0(+1)' + 0 // $ bbStep='0 : successor -> ReturnExpr(-2)' +} + +func testNilCoalescing2(x: Bool?) -> Int { + if x ?? // $ bbStep='x : non-null,false -> Block(+3)' bbStep='x : non-null,true -> Block(+1)' bbStep='x : null -> false(+1)' + false { // $ bbStep='false : false -> Block(+2)' + return 1 + } else { + return 0 + } +} + +func usesAutoclosure(_ expr: @autoclosure () -> Int) -> Int { + return expr() +} + +func autoclosureTest() { + usesAutoclosure(1) +} + +// --- + +protocol MyProtocol { + func source() -> Int +} + +class MyProcotolImpl : MyProtocol { + func source() -> Int { return 0 } +} + +func getMyProtocol() -> MyProtocol { return MyProcotolImpl() } +func getMyProtocolImpl() -> MyProcotolImpl { return MyProcotolImpl() } + +func sink(arg: Int) { } + +func testOpenExistentialExpr(x: MyProtocol, y: MyProcotolImpl) { + sink(arg: x.source()) + sink(arg: y.source()) + sink(arg: getMyProtocol().source()) + sink(arg: getMyProtocolImpl().source()) +} + +func singleStmtExpr(_ x: Int) { + let a = switch x { + case 0..<5: 1 // $ bbStep='1 : successor -> let b(+3)' bbStep='... ..< ... : match -> Block(+0)' bbStep='... ..< ... : no-match -> SwitchCase(+1)' + default: 2 // $ bbStep='2 : successor -> let b(+2)' + } + let b = + if (x < 42) { 1 } // $ bbStep='... < ... : false -> Block(+1)' bbStep='... < ... : true -> Block(+0)' + else { 2 } +} +// --- + +struct ValueGenericsStruct { + var x = N; +} + +func valueGenericsFn(_ value: ValueGenericsStruct) { + var x = N; + print(x); + _ = value; +} diff --git a/unified/ql/test/library-tests/dataflow/calls.swift b/unified/ql/test/library-tests/dataflow/calls.swift new file mode 100644 index 000000000000..1735fc4d6d45 --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/calls.swift @@ -0,0 +1,126 @@ +func source(_ s: String) -> String { return s } + +@discardableResult +func sink(_ s: String) -> String { return "" } + +func t1() { + func target(_ x: String) { + sink(x) // $ hasValueFlow=t1.1 + } + target(source("t1.1")) +} + +func t2() { + func target() -> String { + return source("t2.1") + } + sink(target()) // $ hasValueFlow=t2.1 +} + +func t3() { + func target(x: String) { + sink(x) // $ hasValueFlow=t3.1 + } + target(x: source("t3.1")) +} + +func t4() { + func target(_ x: String) -> String { + return x + "foo" + } + sink(target(source("t4.1"))) // $ hasTaintFlow=t4.1 + sink(target(source("t4.2"))) // $ hasTaintFlow=t4.2 + sink(target("safe")) +} + +func t5() { + func target1(name x: String) { + sink(x) // $ hasValueFlow=t5.1 + } + target1(name: source("t5.1")) + + func target2(name: String) { + sink(name) // $ hasValueFlow=t5.2 + } + target2(name: source("t5.2")) +} + +func t6() { + func target(_ x: String, _ y: String) { + sink(x) // $ hasValueFlow=t6.1 + sink(y) // $ hasValueFlow=t6.2 + } + target(source("t6.1"), source("t6.2")) +} + +class Box { + var field: String = "" +} + +func t7() { + func target(_ x: Box) { + x.field = source("t7.1") + } + let b = Box() + sink(b.field) // no flow + target(b) + sink(b.field) // $ hasValueFlow=t7.1 +} + +func t8() { + class C { + var field: String = "" + + func store() { + field = source("t8.1") + } + + func read1() { + sink(field) // no flow + store() + sink(field) // $ hasValueFlow=t8.1 + } + + func read2() { + sink(field) // no flow + store() + sink(self.field) // $ hasValueFlow=t8.1 + } + + func read3() { + sink(field) // no flow + self.store() + sink(field) // $ hasValueFlow=t8.1 + } + + func read4() { + sink(field) // no flow + self.store() + sink(self.field) // $ hasValueFlow=t8.1 + } + + func read5() { + sink(self.field) // no flow + store() + sink(field) // $ hasValueFlow=t8.1 + } + + func read6() { + sink(self.field) // no flow + store() + sink(self.field) // $ hasValueFlow=t8.1 + } + + func read7() { + sink(self.field) // no flow + self.store() + sink(field) // $ hasValueFlow=t8.1 + } + + func read8() { + sink(self.field) // no flow + self.store() + sink(self.field) // $ hasValueFlow=t8.1 + } + } +} diff --git a/unified/ql/test/library-tests/dataflow/capture.swift b/unified/ql/test/library-tests/dataflow/capture.swift new file mode 100644 index 000000000000..75b583ee109d --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/capture.swift @@ -0,0 +1,190 @@ +func source(_ s: String) -> String { return s } + +@discardableResult +func sink(_ s: String) -> String { + print(s) + return "" +} + +func t1() { + let x = source("t1.1") + let closure = { (_: Int) in + sink(x) // $ hasValueFlow=t1.1 + } + closure(123) +} + +func t2() { + var x = "safe" + let closure = { (arg: Int) in + x = source("t2.1") + } + sink(x) // no flow + closure(123) + sink(x) // $ hasValueFlow=t2.1 +} + +func t3() { + let x = source("t3.1") + var y1 = "safe" + var y2 = "safe" + let closure = { (arg: Int) in + y1 = x + y2 = x + "blah" + } + sink(y1) // no flow + sink(y2) // no flow + closure(123) + sink(y1) // $ hasValueFlow=t3.1 + sink(y2) // $ hasTaintFlow=t3.1 +} + +func t4() { + let x = source("t4.1") + var y = "safe" + let closure = { (arg: String) in + y = arg + } + sink(y) // no flow + closure(x) + sink(y) // $ hasValueFlow=t4.1 +} + +func t5() { + let x = source("t5.1") + var y = ("safe", "safe") + let closure = { (arg: String) in + y.0 = arg + } + sink(y.0) // no flow + closure(x) + sink(y.0) // $ hasValueFlow=t5.1 +} + +func t6() { + var x = "safe" + let closure = { (_: Int) in + sink(x) // $ hasValueFlow=t6.1 + } + x = source("t6.1") + closure(123) +} + +func t7() { + let x = source("t7.1") + func local(_: Int) { + sink(x) // $ hasValueFlow=t7.1 + } + local(123) +} + +func t8() { + var x = "safe" + func local(arg: Int) { + x = source("t8.1") + } + sink(x) // no flow + local(arg: 123) + sink(x) // $ hasValueFlow=t8.1 +} + +func t9() { + // Use of a local function before its declaration + let x = source("t9.1") + let y = local() + sink(y) // $ hasValueFlow=t9.1 + + func local() -> String { + sink(x) // $ hasValueFlow=t9.1 + return x + } +} + +func t10() { + let x = source("t10.1") + let closure1 = { [x1 = x] in + sink(x1) // $ hasValueFlow=t10.1 + } + let closure2 = { [x] in + sink(x) // $ hasValueFlow=t10.1 + } + closure1() + closure2() +} + +func t11() { + let x = source("t11.1") + let closure = { [x = x, blah = x] in + sink(x) // $ hasValueFlow=t11.1 + sink(blah) // $ hasValueFlow=t11.1 + } + closure() +} + +func t12() { + class Box { + var value: String + init(_ x: String) { self.value = x } + } + let x = Box(source("t12.1")) + let closure = { [weak x] in + guard let x else { return } + sink(x.value) // $ MISSING: hasValueFlow=t12.1 + } + closure() +} + +func t13() { + var x = "safe" + let closure1 = { [x] in + sink(x) // no flow + } + let closure2 = { + sink(x) // $ hasValueFlow=t13.1 + } + closure1() + closure2() + x = source("t13.1") + closure1() + closure2() +} + +class C { + var x: String + + func capture_self_by_ref() { + x = source("C.1") + let closure = { + sink(self.x) // $ hasValueFlow=C.1 + } + closure() + } + + func capture_self() { + x = source("C.2") + let closure = { [self] in + sink(self.x) // $ hasValueFlow=C.2 + sink(x) // $ hasValueFlow=C.2 + } + closure() + } + + func capture_weak_self() { + x = source("C.3") + let closure = { [weak self] in + guard let self else { return } + sink(self.x) // $ hasValueFlow=C.3 + sink(x) // $ hasValueFlow=C.3 + } + closure() + } + + func capture_unowned_self() { + x = source("C.4") + let closure = { [unowned self] in + sink(self.x) // $ hasValueFlow=C.4 + sink(x) // $ hasValueFlow=C.4 + } + closure() + } +} diff --git a/unified/ql/test/library-tests/dataflow/enums.swift b/unified/ql/test/library-tests/dataflow/enums.swift new file mode 100644 index 000000000000..25fd568748c2 --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/enums.swift @@ -0,0 +1,88 @@ +func source(_ s: String) -> String { return s } + +@discardableResult +func sink(_ s: Any) -> String { return "" } + +enum E { + case case1(String) + case case2(String) +} + +func t1() { + let e = E.case1(source("t1.1")) + sink(e) // no flow + switch e { + case E.case1(let x): + sink(x) // $ hasValueFlow=t1.1 + default: + break + } +} + +func t2() { + let e = E.case1(source("t2.1")) + sink(e) // no flow + switch e { + case .case1(let x): // use leading-dot syntax + sink(x) // $ hasValueFlow=t2.1 + default: + break + } +} + +func t3() { + let e = E.case1(source("t3.1")) + guard case E.case1(let x) = e else { return } + sink(x) // $ hasValueFlow=t3.1 +} + +func t4() { + let e = E.case2(source("t4.1")) + switch e { + case E.case1(let x): + sink(x) // no flow + case E.case2(let x): + sink(x) // $ hasValueFlow=t4.1 + } + // same but in opposite match order + switch e { + case E.case2(let x): + sink(x) // $ hasValueFlow=t4.1 + case E.case1(let x): + sink(x) // no flow + } +} + +func t5() { + let opt_x = Optional.some(source("t5.1")) + guard let x = opt_x else { return } + sink(x) // $ hasValueFlow=t5.1 +} + +func t6() { + let opt_x = Optional.some(source("t6.1")) + guard let opt_x else { return } + sink(opt_x) // $ hasValueFlow=t6.1 +} + +enum OptionalLabel { + case foo(x: String) +} + +func t7() { + let e = OptionalLabel.foo(x: source("t7.1")) + switch e { + case .foo(let x): + sink(x) // $ hasValueFlow=t7.1 + default: + break + } + // Note: swift-format will try to remove the 'x:' label in the call below + // swift-format-ignore + switch e { + case .foo(x: let x): + sink(x) // $ hasValueFlow=t7.1 + default: + break + } +} diff --git a/unified/ql/test/library-tests/dataflow/implicit-self.swift b/unified/ql/test/library-tests/dataflow/implicit-self.swift new file mode 100644 index 000000000000..87d9dc172524 --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/implicit-self.swift @@ -0,0 +1,89 @@ +func source(_ s: String) -> String { return s } + +@discardableResult +func sink(_ s: String) -> String { return "" } + +class Box { + var x: String = "" +} + +class C { + var x: String = "" + var box = Box() + + func t1() { + sink(self.x) // no flow + self.x = source("t1.1") + sink(self.x) // $ hasValueFlow=t1.1 + } + + func t2() { + sink(x) // no flow + x = source("t2.1") + sink(x) // $ hasValueFlow=t2.1 + } + + func t3() { + sink(self.x) // no flow + x = source("t3.1") + sink(self.x) // $ hasValueFlow=t3.1 + } + + func t4() { + sink(x) // no flow + self.x = source("t4.1") + sink(x) // $ hasValueFlow=t4.1 + } + + func t5() { + sink(self.box.x) // no flow + self.box.x = source("t5.1") + sink(self.box.x) // $ hasValueFlow=t5.1 + } + + func t6() { + sink(box.x) // no flow + box.x = source("t6.1") + sink(box.x) // $ hasValueFlow=t6.1 + } + + func t7() { + sink(self.box.x) // no flow + box.x = source("t7.1") + sink(self.box.x) // $ hasValueFlow=t7.1 + } + + func t8() { + sink(box.x) // no flow + self.box.x = source("t8.1") + sink(box.x) // $ hasValueFlow=t8.1 + } + + func t9() { + x = "safe" + x += sink(x) + source("t9.1") + sink(x) // $ hasTaintFlow=t9.1 + sink(self.x) // $ hasTaintFlow=t9.1 + } + + func t10() { + x = "safe" + self.x += sink(x) + source("t10.1") + sink(x) // $ hasTaintFlow=t10.1 + sink(self.x) // $ hasTaintFlow=t10.1 + } + + func t11() { + self.x = "safe" + x += sink(x) + source("t11.1") + sink(x) // $ hasTaintFlow=t11.1 + sink(self.x) // $ hasTaintFlow=t11.1 + } + + func t12() { + self.x = "safe" + self.x += sink(x) + source("t12.1") + sink(x) // $ hasTaintFlow=t12.1 + sink(self.x) // $ hasTaintFlow=t12.1 + } +} diff --git a/unified/ql/test/library-tests/dataflow/test.expected b/unified/ql/test/library-tests/dataflow/test.expected new file mode 100644 index 000000000000..b7532f8ba4e9 --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/test.expected @@ -0,0 +1,975 @@ +models +edges +| calls.swift:7:19:7:19 | x | calls.swift:8:14:8:14 | x | provenance | | +| calls.swift:10:12:10:25 | source(...) | calls.swift:7:19:7:19 | x | provenance | | +| calls.swift:15:16:15:29 | source(...) | calls.swift:17:10:17:17 | target(...) | provenance | | +| calls.swift:21:17:21:17 | x | calls.swift:22:14:22:14 | x | provenance | | +| calls.swift:24:15:24:28 | source(...) | calls.swift:21:17:21:17 | x | provenance | | +| calls.swift:28:19:28:19 | x | calls.swift:29:16:29:16 | x | provenance | | +| calls.swift:29:16:29:16 | x | calls.swift:29:16:29:24 | ... + ... | provenance | | +| calls.swift:31:17:31:30 | source(...) | calls.swift:28:19:28:19 | x | provenance | | +| calls.swift:31:17:31:30 | source(...) | calls.swift:31:10:31:31 | target(...) | provenance | | +| calls.swift:32:17:32:30 | source(...) | calls.swift:28:19:28:19 | x | provenance | | +| calls.swift:32:17:32:30 | source(...) | calls.swift:32:10:32:31 | target(...) | provenance | | +| calls.swift:37:23:37:23 | x | calls.swift:38:14:38:14 | x | provenance | | +| calls.swift:40:19:40:32 | source(...) | calls.swift:37:23:37:23 | x | provenance | | +| calls.swift:42:18:42:21 | name | calls.swift:43:14:43:17 | name | provenance | | +| calls.swift:45:19:45:32 | source(...) | calls.swift:42:18:42:21 | name | provenance | | +| calls.swift:49:19:49:19 | x | calls.swift:50:14:50:14 | x | provenance | | +| calls.swift:49:32:49:32 | y | calls.swift:51:14:51:14 | y | provenance | | +| calls.swift:53:12:53:25 | source(...) | calls.swift:49:19:49:19 | x | provenance | | +| calls.swift:53:28:53:41 | source(...) | calls.swift:49:32:49:32 | y | provenance | | +| calls.swift:61:19:61:19 | x [Return] [field] | calls.swift:66:12:66:12 | [post] b [field] | provenance | | +| calls.swift:62:9:62:9 | [post] x [field] | calls.swift:61:19:61:19 | x [Return] [field] | provenance | | +| calls.swift:62:9:62:15 | ... .field | calls.swift:62:9:62:9 | [post] x [field] | provenance | | +| calls.swift:62:19:62:32 | source(...) | calls.swift:62:9:62:15 | ... .field | provenance | | +| calls.swift:66:12:66:12 | [post] b [field] | calls.swift:67:10:67:10 | b [field] | provenance | | +| calls.swift:67:10:67:10 | b [field] | calls.swift:67:10:67:16 | ... .field | provenance | | +| calls.swift:75:13:75:17 | field | calls.swift:81:18:81:22 | field | provenance | | +| calls.swift:75:13:75:17 | field | calls.swift:87:18:87:21 | self [field] | provenance | | +| calls.swift:75:13:75:17 | field | calls.swift:93:18:93:22 | field | provenance | | +| calls.swift:75:13:75:17 | field | calls.swift:99:18:99:21 | self [field] | provenance | | +| calls.swift:75:13:75:17 | field | calls.swift:105:18:105:22 | field | provenance | | +| calls.swift:75:13:75:17 | field | calls.swift:111:18:111:21 | self [field] | provenance | | +| calls.swift:75:13:75:17 | field | calls.swift:117:18:117:22 | field | provenance | | +| calls.swift:75:13:75:17 | field | calls.swift:123:18:123:21 | self [field] | provenance | | +| calls.swift:75:21:75:34 | source(...) | calls.swift:75:13:75:17 | field | provenance | | +| calls.swift:87:18:87:21 | self [field] | calls.swift:87:18:87:27 | ... .field | provenance | | +| calls.swift:99:18:99:21 | self [field] | calls.swift:99:18:99:27 | ... .field | provenance | | +| calls.swift:111:18:111:21 | self [field] | calls.swift:111:18:111:27 | ... .field | provenance | | +| calls.swift:123:18:123:21 | self [field] | calls.swift:123:18:123:27 | ... .field | provenance | | +| capture.swift:10:9:10:9 | x | capture.swift:14:5:14:11 | closure [x] | provenance | | +| capture.swift:10:13:10:26 | source(...) | capture.swift:10:9:10:9 | x | provenance | | +| capture.swift:14:5:14:11 | closure [x] | capture.swift:12:14:12:14 | x | provenance | | +| capture.swift:20:9:20:9 | x | capture.swift:24:10:24:10 | x | provenance | | +| capture.swift:20:13:20:26 | source(...) | capture.swift:20:9:20:9 | x | provenance | | +| capture.swift:28:9:28:9 | x | capture.swift:37:5:37:11 | closure [x] | provenance | | +| capture.swift:28:13:28:26 | source(...) | capture.swift:28:9:28:9 | x | provenance | | +| capture.swift:32:14:32:14 | x | capture.swift:32:9:32:10 | y1 | provenance | | +| capture.swift:33:14:33:14 | x | capture.swift:33:9:33:10 | y2 | provenance | | +| capture.swift:37:5:37:11 | closure [x] | capture.swift:32:14:32:14 | x | provenance | | +| capture.swift:37:5:37:11 | closure [x] | capture.swift:33:14:33:14 | x | provenance | | +| capture.swift:37:5:37:11 | closure [x] | capture.swift:38:10:38:11 | y1 | provenance | | +| capture.swift:37:5:37:11 | closure [x] | capture.swift:39:10:39:11 | y2 | provenance | | +| capture.swift:43:9:43:9 | x | capture.swift:49:13:49:13 | x | provenance | | +| capture.swift:43:13:43:26 | source(...) | capture.swift:43:9:43:9 | x | provenance | | +| capture.swift:45:22:45:24 | arg | capture.swift:46:13:46:15 | arg | provenance | | +| capture.swift:46:13:46:15 | arg | capture.swift:46:9:46:9 | y | provenance | | +| capture.swift:49:13:49:13 | x | capture.swift:45:22:45:24 | arg | provenance | | +| capture.swift:49:13:49:13 | x | capture.swift:50:10:50:10 | y | provenance | | +| capture.swift:54:9:54:9 | x | capture.swift:60:13:60:13 | x | provenance | | +| capture.swift:54:13:54:26 | source(...) | capture.swift:54:9:54:9 | x | provenance | | +| capture.swift:56:22:56:24 | arg | capture.swift:57:15:57:17 | arg | provenance | | +| capture.swift:57:9:57:11 | ... .0 | capture.swift:57:9:57:9 | [post] y [0] | provenance | | +| capture.swift:57:15:57:17 | arg | capture.swift:57:9:57:11 | ... .0 | provenance | | +| capture.swift:60:13:60:13 | x | capture.swift:56:22:56:24 | arg | provenance | | +| capture.swift:60:13:60:13 | x | capture.swift:61:10:61:10 | y [0] | provenance | | +| capture.swift:61:10:61:10 | y [0] | capture.swift:61:10:61:12 | ... .0 | provenance | | +| capture.swift:69:5:69:5 | x | capture.swift:70:5:70:11 | closure [x] | provenance | | +| capture.swift:69:9:69:22 | source(...) | capture.swift:69:5:69:5 | x | provenance | | +| capture.swift:70:5:70:11 | closure [x] | capture.swift:67:14:67:14 | x | provenance | | +| capture.swift:74:9:74:9 | x | capture.swift:78:5:78:9 | local [x] | provenance | | +| capture.swift:74:13:74:26 | source(...) | capture.swift:74:9:74:9 | x | provenance | | +| capture.swift:78:5:78:9 | local [x] | capture.swift:76:14:76:14 | x | provenance | | +| capture.swift:84:9:84:9 | x | capture.swift:88:10:88:10 | x | provenance | | +| capture.swift:84:13:84:26 | source(...) | capture.swift:84:9:84:9 | x | provenance | | +| capture.swift:93:9:93:9 | x | capture.swift:94:13:94:17 | local [x] | provenance | | +| capture.swift:93:13:93:26 | source(...) | capture.swift:93:9:93:9 | x | provenance | | +| capture.swift:94:9:94:9 | y | capture.swift:95:10:95:10 | y | provenance | | +| capture.swift:94:13:94:17 | local [x] | capture.swift:94:13:94:19 | local(...) | provenance | | +| capture.swift:94:13:94:17 | local [x] | capture.swift:98:14:98:14 | x | provenance | | +| capture.swift:94:13:94:17 | local [x] | capture.swift:99:16:99:16 | x | provenance | | +| capture.swift:94:13:94:19 | local(...) | capture.swift:94:9:94:9 | y | provenance | | +| capture.swift:104:9:104:9 | x | capture.swift:105:28:105:28 | x | provenance | | +| capture.swift:104:9:104:9 | x | capture.swift:108:23:108:23 | x | provenance | | +| capture.swift:104:13:104:27 | source(...) | capture.swift:104:9:104:9 | x | provenance | | +| capture.swift:105:23:105:24 | x1 | capture.swift:111:5:111:12 | closure1 [x1] | provenance | | +| capture.swift:105:28:105:28 | x | capture.swift:105:23:105:24 | x1 | provenance | | +| capture.swift:108:23:108:23 | x | capture.swift:108:23:108:23 | x | provenance | | +| capture.swift:108:23:108:23 | x | capture.swift:112:5:112:12 | closure2 [x] | provenance | | +| capture.swift:111:5:111:12 | closure1 [x1] | capture.swift:106:14:106:15 | x1 | provenance | | +| capture.swift:112:5:112:12 | closure2 [x] | capture.swift:109:14:109:14 | x | provenance | | +| capture.swift:116:9:116:9 | x | capture.swift:117:26:117:26 | x | provenance | | +| capture.swift:116:13:116:27 | source(...) | capture.swift:116:9:116:9 | x | provenance | | +| capture.swift:117:22:117:22 | x | capture.swift:117:36:117:36 | x | provenance | | +| capture.swift:117:22:117:22 | x | capture.swift:121:5:121:11 | closure [x] | provenance | | +| capture.swift:117:26:117:26 | x | capture.swift:117:22:117:22 | x | provenance | | +| capture.swift:117:29:117:32 | blah | capture.swift:121:5:121:11 | closure [blah] | provenance | | +| capture.swift:117:36:117:36 | x | capture.swift:117:29:117:32 | blah | provenance | | +| capture.swift:121:5:121:11 | closure [blah] | capture.swift:119:14:119:17 | blah | provenance | | +| capture.swift:121:5:121:11 | closure [x] | capture.swift:118:14:118:14 | x | provenance | | +| capture.swift:147:5:147:5 | x | capture.swift:149:5:149:12 | closure2 [x] | provenance | | +| capture.swift:147:9:147:23 | source(...) | capture.swift:147:5:147:5 | x | provenance | | +| capture.swift:149:5:149:12 | closure2 [x] | capture.swift:143:14:143:14 | x | provenance | | +| capture.swift:156:9:156:9 | x | capture.swift:160:9:160:15 | closure [self, x] | provenance | | +| capture.swift:156:13:156:25 | source(...) | capture.swift:156:9:156:9 | x | provenance | | +| capture.swift:158:18:158:21 | self [x] | capture.swift:158:18:158:23 | ... .x | provenance | | +| capture.swift:160:9:160:15 | closure [self, x] | capture.swift:158:18:158:21 | self [x] | provenance | | +| capture.swift:164:9:164:9 | x | capture.swift:165:26:165:29 | self [x] | provenance | | +| capture.swift:164:13:164:25 | source(...) | capture.swift:164:9:164:9 | x | provenance | | +| capture.swift:165:26:165:29 | self [x] | capture.swift:165:26:165:29 | self [x] | provenance | | +| capture.swift:165:26:165:29 | self [x] | capture.swift:169:9:169:15 | closure [self, x] | provenance | | +| capture.swift:166:18:166:21 | self [x] | capture.swift:166:18:166:23 | ... .x | provenance | | +| capture.swift:169:9:169:15 | closure [self, x] | capture.swift:166:18:166:21 | self [x] | provenance | | +| capture.swift:169:9:169:15 | closure [self, x] | capture.swift:167:18:167:18 | x | provenance | | +| capture.swift:173:9:173:9 | x | capture.swift:174:31:174:34 | self [x] | provenance | | +| capture.swift:173:13:173:25 | source(...) | capture.swift:173:9:173:9 | x | provenance | | +| capture.swift:174:31:174:34 | self [x] | capture.swift:174:31:174:34 | self [x] | provenance | | +| capture.swift:174:31:174:34 | self [x] | capture.swift:179:9:179:15 | closure [self, x] | provenance | | +| capture.swift:175:19:175:26 | ... .some(...) [x] | capture.swift:175:23:175:26 | self [x] | provenance | | +| capture.swift:175:23:175:26 | self [x] | capture.swift:175:19:175:26 | ... .some(...) [x] | provenance | | +| capture.swift:175:23:175:26 | self [x] | capture.swift:176:18:176:21 | self [x] | provenance | | +| capture.swift:175:23:175:26 | self [x] | capture.swift:177:18:177:18 | x | provenance | | +| capture.swift:176:18:176:21 | self [x] | capture.swift:176:18:176:23 | ... .x | provenance | | +| capture.swift:179:9:179:15 | closure [self, x] | capture.swift:175:23:175:26 | self [x] | provenance | | +| capture.swift:183:9:183:9 | x | capture.swift:184:34:184:37 | self [x] | provenance | | +| capture.swift:183:13:183:25 | source(...) | capture.swift:183:9:183:9 | x | provenance | | +| capture.swift:184:34:184:37 | self [x] | capture.swift:184:34:184:37 | self [x] | provenance | | +| capture.swift:184:34:184:37 | self [x] | capture.swift:188:9:188:15 | closure [self, x] | provenance | | +| capture.swift:185:18:185:21 | self [x] | capture.swift:185:18:185:23 | ... .x | provenance | | +| capture.swift:188:9:188:15 | closure [self, x] | capture.swift:185:18:185:21 | self [x] | provenance | | +| capture.swift:188:9:188:15 | closure [self, x] | capture.swift:186:18:186:18 | x | provenance | | +| enums.swift:12:9:12:9 | e [case1.0] | enums.swift:14:12:14:12 | e [case1.0] | provenance | | +| enums.swift:12:13:12:35 | ... .case1(...) [case1.0] | enums.swift:12:9:12:9 | e [case1.0] | provenance | | +| enums.swift:12:21:12:34 | source(...) | enums.swift:12:13:12:35 | ... .case1(...) [case1.0] | provenance | | +| enums.swift:14:12:14:12 | e [case1.0] | enums.swift:15:10:15:23 | ... .case1(...) [case1.0] | provenance | | +| enums.swift:15:10:15:23 | ... .case1(...) [case1.0] | enums.swift:15:22:15:22 | x | provenance | | +| enums.swift:15:22:15:22 | x | enums.swift:16:14:16:14 | x | provenance | | +| enums.swift:23:9:23:9 | e [case1.0] | enums.swift:25:12:25:12 | e [case1.0] | provenance | | +| enums.swift:23:13:23:35 | ... .case1(...) [case1.0] | enums.swift:23:9:23:9 | e [case1.0] | provenance | | +| enums.swift:23:21:23:34 | source(...) | enums.swift:23:13:23:35 | ... .case1(...) [case1.0] | provenance | | +| enums.swift:25:12:25:12 | e [case1.0] | enums.swift:26:10:26:22 | ... .case1(...) [case1.0] | provenance | | +| enums.swift:26:10:26:22 | ... .case1(...) [case1.0] | enums.swift:26:21:26:21 | x | provenance | | +| enums.swift:26:21:26:21 | x | enums.swift:27:14:27:14 | x | provenance | | +| enums.swift:34:9:34:9 | e [case1.0] | enums.swift:35:33:35:33 | e [case1.0] | provenance | | +| enums.swift:34:13:34:35 | ... .case1(...) [case1.0] | enums.swift:34:9:34:9 | e [case1.0] | provenance | | +| enums.swift:34:21:34:34 | source(...) | enums.swift:34:13:34:35 | ... .case1(...) [case1.0] | provenance | | +| enums.swift:35:16:35:29 | ... .case1(...) [case1.0] | enums.swift:35:28:35:28 | x | provenance | | +| enums.swift:35:28:35:28 | x | enums.swift:36:10:36:10 | x | provenance | | +| enums.swift:35:33:35:33 | e [case1.0] | enums.swift:35:16:35:29 | ... .case1(...) [case1.0] | provenance | | +| enums.swift:40:9:40:9 | e [case2.0] | enums.swift:41:12:41:12 | e [case2.0] | provenance | | +| enums.swift:40:9:40:9 | e [case2.0] | enums.swift:48:12:48:12 | e [case2.0] | provenance | | +| enums.swift:40:13:40:35 | ... .case2(...) [case2.0] | enums.swift:40:9:40:9 | e [case2.0] | provenance | | +| enums.swift:40:21:40:34 | source(...) | enums.swift:40:13:40:35 | ... .case2(...) [case2.0] | provenance | | +| enums.swift:41:12:41:12 | e [case2.0] | enums.swift:44:10:44:23 | ... .case2(...) [case2.0] | provenance | | +| enums.swift:44:10:44:23 | ... .case2(...) [case2.0] | enums.swift:44:22:44:22 | x | provenance | | +| enums.swift:44:22:44:22 | x | enums.swift:45:14:45:14 | x | provenance | | +| enums.swift:48:12:48:12 | e [case2.0] | enums.swift:49:10:49:23 | ... .case2(...) [case2.0] | provenance | | +| enums.swift:49:10:49:23 | ... .case2(...) [case2.0] | enums.swift:49:22:49:22 | x | provenance | | +| enums.swift:49:22:49:22 | x | enums.swift:50:14:50:14 | x | provenance | | +| enums.swift:57:9:57:13 | opt_x | enums.swift:58:19:58:23 | opt_x | provenance | | +| enums.swift:57:31:57:44 | source(...) | enums.swift:57:9:57:13 | opt_x | provenance | | +| enums.swift:58:11:58:15 | ... .some(...) | enums.swift:58:15:58:15 | x | provenance | | +| enums.swift:58:15:58:15 | x | enums.swift:59:10:59:10 | x | provenance | | +| enums.swift:58:19:58:23 | opt_x | enums.swift:58:11:58:15 | ... .some(...) | provenance | | +| enums.swift:63:9:63:13 | opt_x | enums.swift:64:15:64:19 | opt_x | provenance | | +| enums.swift:63:31:63:44 | source(...) | enums.swift:63:9:63:13 | opt_x | provenance | | +| enums.swift:64:11:64:19 | ... .some(...) | enums.swift:64:15:64:19 | opt_x | provenance | | +| enums.swift:64:15:64:19 | opt_x | enums.swift:64:11:64:19 | ... .some(...) | provenance | | +| enums.swift:64:15:64:19 | opt_x | enums.swift:65:10:65:14 | opt_x | provenance | | +| enums.swift:73:9:73:9 | e [foo.0] | enums.swift:74:12:74:12 | e [foo.0] | provenance | | +| enums.swift:73:9:73:9 | e [foo.0] | enums.swift:82:12:82:12 | e [foo.0] | provenance | | +| enums.swift:73:13:73:48 | ... .foo(...) [foo.0] | enums.swift:73:9:73:9 | e [foo.0] | provenance | | +| enums.swift:73:34:73:47 | source(...) | enums.swift:73:13:73:48 | ... .foo(...) [foo.0] | provenance | | +| enums.swift:74:12:74:12 | e [foo.0] | enums.swift:75:10:75:20 | ... .foo(...) [foo.0] | provenance | | +| enums.swift:75:10:75:20 | ... .foo(...) [foo.0] | enums.swift:75:19:75:19 | x | provenance | | +| enums.swift:75:19:75:19 | x | enums.swift:76:14:76:14 | x | provenance | | +| enums.swift:82:12:82:12 | e [foo.0] | enums.swift:83:10:83:23 | ... .foo(...) [foo.0] | provenance | | +| enums.swift:83:10:83:23 | ... .foo(...) [foo.0] | enums.swift:83:22:83:22 | x | provenance | | +| enums.swift:83:22:83:22 | x | enums.swift:84:14:84:14 | x | provenance | | +| implicit-self.swift:16:9:16:12 | [post] self [x] | implicit-self.swift:17:14:17:17 | self [x] | provenance | | +| implicit-self.swift:16:9:16:14 | ... .x | implicit-self.swift:16:9:16:12 | [post] self [x] | provenance | | +| implicit-self.swift:16:18:16:31 | source(...) | implicit-self.swift:16:9:16:14 | ... .x | provenance | | +| implicit-self.swift:17:14:17:17 | self [x] | implicit-self.swift:17:14:17:19 | ... .x | provenance | | +| implicit-self.swift:22:9:22:9 | x | implicit-self.swift:23:14:23:14 | x | provenance | | +| implicit-self.swift:22:13:22:26 | source(...) | implicit-self.swift:22:9:22:9 | x | provenance | | +| implicit-self.swift:28:9:28:9 | x | implicit-self.swift:29:14:29:17 | self [x] | provenance | | +| implicit-self.swift:28:13:28:26 | source(...) | implicit-self.swift:28:9:28:9 | x | provenance | | +| implicit-self.swift:29:14:29:17 | self [x] | implicit-self.swift:29:14:29:19 | ... .x | provenance | | +| implicit-self.swift:34:9:34:12 | [post] self [x] | implicit-self.swift:35:14:35:14 | x | provenance | | +| implicit-self.swift:34:9:34:14 | ... .x | implicit-self.swift:34:9:34:12 | [post] self [x] | provenance | | +| implicit-self.swift:34:18:34:31 | source(...) | implicit-self.swift:34:9:34:14 | ... .x | provenance | | +| implicit-self.swift:40:9:40:12 | [post] self [box, x] | implicit-self.swift:41:14:41:17 | self [box, x] | provenance | | +| implicit-self.swift:40:9:40:16 | [post] ... .box [x] | implicit-self.swift:40:9:40:12 | [post] self [box, x] | provenance | | +| implicit-self.swift:40:9:40:18 | ... .x | implicit-self.swift:40:9:40:16 | [post] ... .box [x] | provenance | | +| implicit-self.swift:40:22:40:35 | source(...) | implicit-self.swift:40:9:40:18 | ... .x | provenance | | +| implicit-self.swift:41:14:41:17 | self [box, x] | implicit-self.swift:41:14:41:21 | ... .box [x] | provenance | | +| implicit-self.swift:41:14:41:21 | ... .box [x] | implicit-self.swift:41:14:41:23 | ... .x | provenance | | +| implicit-self.swift:46:9:46:11 | [post] box [x] | implicit-self.swift:47:14:47:16 | box [x] | provenance | | +| implicit-self.swift:46:9:46:13 | ... .x | implicit-self.swift:46:9:46:11 | [post] box [x] | provenance | | +| implicit-self.swift:46:17:46:30 | source(...) | implicit-self.swift:46:9:46:13 | ... .x | provenance | | +| implicit-self.swift:47:14:47:16 | box [x] | implicit-self.swift:47:14:47:18 | ... .x | provenance | | +| implicit-self.swift:52:9:52:11 | [post] box [x] | implicit-self.swift:53:14:53:17 | self [box, x] | provenance | | +| implicit-self.swift:52:9:52:13 | ... .x | implicit-self.swift:52:9:52:11 | [post] box [x] | provenance | | +| implicit-self.swift:52:17:52:30 | source(...) | implicit-self.swift:52:9:52:13 | ... .x | provenance | | +| implicit-self.swift:53:14:53:17 | self [box, x] | implicit-self.swift:53:14:53:21 | ... .box [x] | provenance | | +| implicit-self.swift:53:14:53:21 | ... .box [x] | implicit-self.swift:53:14:53:23 | ... .x | provenance | | +| implicit-self.swift:58:9:58:12 | [post] self [box, x] | implicit-self.swift:59:14:59:16 | box [x] | provenance | | +| implicit-self.swift:58:9:58:16 | [post] ... .box [x] | implicit-self.swift:58:9:58:12 | [post] self [box, x] | provenance | | +| implicit-self.swift:58:9:58:18 | ... .x | implicit-self.swift:58:9:58:16 | [post] ... .box [x] | provenance | | +| implicit-self.swift:58:22:58:35 | source(...) | implicit-self.swift:58:9:58:18 | ... .x | provenance | | +| implicit-self.swift:59:14:59:16 | box [x] | implicit-self.swift:59:14:59:18 | ... .x | provenance | | +| implicit-self.swift:64:9:64:9 | [incoming] x | implicit-self.swift:65:14:65:14 | x | provenance | | +| implicit-self.swift:64:9:64:9 | [incoming] x | implicit-self.swift:66:14:66:17 | self [x] | provenance | | +| implicit-self.swift:64:24:64:37 | source(...) | implicit-self.swift:64:9:64:9 | [incoming] x | provenance | | +| implicit-self.swift:66:14:66:17 | self [x] | implicit-self.swift:66:14:66:19 | ... .x | provenance | | +| implicit-self.swift:71:9:71:12 | [post] self [x] | implicit-self.swift:72:14:72:14 | x | provenance | | +| implicit-self.swift:71:9:71:12 | [post] self [x] | implicit-self.swift:73:14:73:17 | self [x] | provenance | | +| implicit-self.swift:71:9:71:14 | [incoming] ... .x | implicit-self.swift:71:9:71:12 | [post] self [x] | provenance | | +| implicit-self.swift:71:29:71:43 | source(...) | implicit-self.swift:71:9:71:14 | [incoming] ... .x | provenance | | +| implicit-self.swift:73:14:73:17 | self [x] | implicit-self.swift:73:14:73:19 | ... .x | provenance | | +| implicit-self.swift:78:9:78:9 | [incoming] x | implicit-self.swift:79:14:79:14 | x | provenance | | +| implicit-self.swift:78:9:78:9 | [incoming] x | implicit-self.swift:80:14:80:17 | self [x] | provenance | | +| implicit-self.swift:78:24:78:38 | source(...) | implicit-self.swift:78:9:78:9 | [incoming] x | provenance | | +| implicit-self.swift:80:14:80:17 | self [x] | implicit-self.swift:80:14:80:19 | ... .x | provenance | | +| implicit-self.swift:85:9:85:12 | [post] self [x] | implicit-self.swift:86:14:86:14 | x | provenance | | +| implicit-self.swift:85:9:85:12 | [post] self [x] | implicit-self.swift:87:14:87:17 | self [x] | provenance | | +| implicit-self.swift:85:9:85:14 | [incoming] ... .x | implicit-self.swift:85:9:85:12 | [post] self [x] | provenance | | +| implicit-self.swift:85:29:85:43 | source(...) | implicit-self.swift:85:9:85:14 | [incoming] ... .x | provenance | | +| implicit-self.swift:87:14:87:17 | self [x] | implicit-self.swift:87:14:87:19 | ... .x | provenance | | +| test.swift:17:10:17:23 | source(...) | test.swift:17:10:17:32 | ... + ... | provenance | | +| test.swift:18:19:18:32 | source(...) | test.swift:18:10:18:32 | ... + ... | provenance | | +| test.swift:20:13:20:26 | source(...) | test.swift:20:10:20:33 | StringInterpolationExpr | provenance | | +| test.swift:21:18:21:31 | source(...) | test.swift:21:10:21:33 | StringInterpolationExpr | provenance | | +| test.swift:22:18:22:31 | source(...) | test.swift:22:10:22:38 | StringInterpolationExpr | provenance | | +| test.swift:27:10:27:33 | TupleExpr [0] | test.swift:27:10:27:35 | ... .0 | provenance | | +| test.swift:27:11:27:24 | source(...) | test.swift:27:10:27:33 | TupleExpr [0] | provenance | | +| test.swift:30:10:30:33 | TupleExpr [1] | test.swift:30:10:30:35 | ... .1 | provenance | | +| test.swift:30:19:30:32 | source(...) | test.swift:30:10:30:33 | TupleExpr [1] | provenance | | +| test.swift:34:9:34:9 | a | test.swift:35:10:35:10 | a | provenance | | +| test.swift:34:13:34:26 | source(...) | test.swift:34:9:34:9 | a | provenance | | +| test.swift:39:9:39:14 | TupleExpr [0] | test.swift:39:10:39:10 | a | provenance | | +| test.swift:39:10:39:10 | a | test.swift:40:10:40:10 | a | provenance | | +| test.swift:39:18:39:41 | TupleExpr [0] | test.swift:39:9:39:14 | TupleExpr [0] | provenance | | +| test.swift:39:19:39:32 | source(...) | test.swift:39:18:39:41 | TupleExpr [0] | provenance | | +| test.swift:43:9:43:14 | TupleExpr [1] | test.swift:43:13:43:13 | d | provenance | | +| test.swift:43:13:43:13 | d | test.swift:45:10:45:10 | d | provenance | | +| test.swift:43:18:43:41 | TupleExpr [1] | test.swift:43:9:43:14 | TupleExpr [1] | provenance | | +| test.swift:43:27:43:40 | source(...) | test.swift:43:18:43:41 | TupleExpr [1] | provenance | | +| test.swift:49:9:49:9 | a | test.swift:50:10:50:10 | a | provenance | | +| test.swift:49:13:49:26 | source(...) | test.swift:49:9:49:9 | a | provenance | | +| test.swift:57:5:57:9 | [post] tuple [0] | test.swift:58:10:58:14 | tuple [0] | provenance | | +| test.swift:57:5:57:11 | ... .0 | test.swift:57:5:57:9 | [post] tuple [0] | provenance | | +| test.swift:57:15:57:28 | source(...) | test.swift:57:5:57:11 | ... .0 | provenance | | +| test.swift:58:10:58:14 | tuple [0] | test.swift:58:10:58:16 | ... .0 | provenance | | +| test.swift:64:5:64:14 | [post] deep_tuple [1, 0] | test.swift:69:10:69:19 | deep_tuple [1, 0] | provenance | | +| test.swift:64:5:64:16 | [post] ... .1 [0] | test.swift:64:5:64:14 | [post] deep_tuple [1, 0] | provenance | | +| test.swift:64:5:64:18 | ... .0 | test.swift:64:5:64:16 | [post] ... .1 [0] | provenance | | +| test.swift:64:22:64:35 | source(...) | test.swift:64:5:64:18 | ... .0 | provenance | | +| test.swift:69:10:69:19 | deep_tuple [1, 0] | test.swift:69:10:69:21 | ... .1 [0] | provenance | | +| test.swift:69:10:69:21 | ... .1 [0] | test.swift:69:10:69:23 | ... .0 | provenance | | +| test.swift:75:5:75:16 | TupleExpr [0] | test.swift:75:6:75:12 | ... .1 | provenance | | +| test.swift:75:6:75:10 | [post] tuple [1] | test.swift:77:10:77:14 | tuple [1] | provenance | | +| test.swift:75:6:75:12 | ... .1 | test.swift:75:6:75:10 | [post] tuple [1] | provenance | | +| test.swift:75:20:75:51 | TupleExpr [0] | test.swift:75:5:75:16 | TupleExpr [0] | provenance | | +| test.swift:75:21:75:34 | source(...) | test.swift:75:20:75:51 | TupleExpr [0] | provenance | | +| test.swift:77:10:77:14 | tuple [1] | test.swift:77:10:77:16 | ... .1 | provenance | | +| test.swift:85:5:85:9 | [post] tuple [0] | test.swift:86:10:86:14 | tuple [0] | provenance | | +| test.swift:85:5:85:11 | ... .0 | test.swift:85:5:85:9 | [post] tuple [0] | provenance | | +| test.swift:85:15:85:29 | source(...) | test.swift:85:5:85:11 | ... .0 | provenance | | +| test.swift:86:10:86:14 | tuple [0] | test.swift:86:10:86:16 | ... .0 | provenance | | +| test.swift:97:9:97:9 | x | test.swift:101:10:101:10 | x | provenance | | +| test.swift:97:9:97:9 | x | test.swift:110:14:110:14 | x | provenance | | +| test.swift:97:13:97:27 | source(...) | test.swift:97:9:97:9 | x | provenance | | +| test.swift:105:9:105:9 | y | test.swift:107:10:107:10 | y | provenance | | +| test.swift:105:9:105:9 | y | test.swift:111:14:111:14 | y | provenance | | +| test.swift:105:13:105:27 | source(...) | test.swift:105:9:105:9 | y | provenance | | +| test.swift:118:9:118:13 | [post] tuple [0] | test.swift:123:10:123:14 | tuple [0] | provenance | | +| test.swift:118:9:118:15 | ... .0 | test.swift:118:9:118:13 | [post] tuple [0] | provenance | | +| test.swift:118:19:118:33 | source(...) | test.swift:118:9:118:15 | ... .0 | provenance | | +| test.swift:123:10:123:14 | tuple [0] | test.swift:123:10:123:16 | ... .0 | provenance | | +| test.swift:128:9:128:13 | tuple [0] | test.swift:131:18:131:22 | tuple [0] | provenance | | +| test.swift:128:9:128:13 | tuple [1] | test.swift:131:18:131:22 | tuple [1] | provenance | | +| test.swift:128:17:128:50 | TupleExpr [0] | test.swift:128:9:128:13 | tuple [0] | provenance | | +| test.swift:128:17:128:50 | TupleExpr [1] | test.swift:128:9:128:13 | tuple [1] | provenance | | +| test.swift:128:18:128:32 | source(...) | test.swift:128:17:128:50 | TupleExpr [0] | provenance | | +| test.swift:128:35:128:49 | source(...) | test.swift:128:17:128:50 | TupleExpr [1] | provenance | | +| test.swift:131:9:131:14 | TupleExpr [0] | test.swift:131:10:131:10 | a | provenance | | +| test.swift:131:9:131:14 | TupleExpr [1] | test.swift:131:13:131:13 | b | provenance | | +| test.swift:131:10:131:10 | a | test.swift:136:10:136:10 | a | provenance | | +| test.swift:131:13:131:13 | b | test.swift:137:10:137:10 | b | provenance | | +| test.swift:131:18:131:22 | tuple [0] | test.swift:131:9:131:14 | TupleExpr [0] | provenance | | +| test.swift:131:18:131:22 | tuple [1] | test.swift:131:9:131:14 | TupleExpr [1] | provenance | | +| test.swift:142:5:142:5 | a | test.swift:143:10:143:10 | a | provenance | | +| test.swift:142:19:142:33 | source(...) | test.swift:142:5:142:5 | a | provenance | | +| test.swift:148:5:148:5 | [incoming] a | test.swift:149:10:149:10 | a | provenance | | +| test.swift:148:10:148:24 | source(...) | test.swift:148:5:148:5 | [incoming] a | provenance | | +| test.swift:154:5:154:5 | [incoming] a | test.swift:155:10:155:10 | a | provenance | | +| test.swift:154:20:154:34 | source(...) | test.swift:154:5:154:5 | [incoming] a | provenance | | +| test.swift:160:5:160:5 | [post] a [0] | test.swift:161:10:161:10 | a [0] | provenance | | +| test.swift:160:5:160:7 | ... .0 | test.swift:160:5:160:5 | [post] a [0] | provenance | | +| test.swift:160:23:160:37 | source(...) | test.swift:160:5:160:7 | ... .0 | provenance | | +| test.swift:161:10:161:10 | a [0] | test.swift:161:10:161:12 | ... .0 | provenance | | +| test.swift:167:5:167:12 | TupleExpr [0] | test.swift:167:6:167:8 | ... .0 | provenance | | +| test.swift:167:6:167:6 | [post] a [0] | test.swift:168:10:168:10 | a [0] | provenance | | +| test.swift:167:6:167:8 | ... .0 | test.swift:167:6:167:6 | [post] a [0] | provenance | | +| test.swift:167:16:167:61 | TupleExpr [0] | test.swift:167:5:167:12 | TupleExpr [0] | provenance | | +| test.swift:167:17:167:43 | ... + ... | test.swift:167:16:167:61 | TupleExpr [0] | provenance | | +| test.swift:167:29:167:43 | source(...) | test.swift:167:17:167:43 | ... + ... | provenance | | +| test.swift:168:10:168:10 | a [0] | test.swift:168:10:168:12 | ... .0 | provenance | | +| test.swift:175:5:175:10 | TupleExpr [0] | test.swift:175:6:175:6 | a | provenance | | +| test.swift:175:5:175:10 | TupleExpr [1] | test.swift:175:9:175:9 | b | provenance | | +| test.swift:175:6:175:6 | a | test.swift:176:10:176:10 | a | provenance | | +| test.swift:175:9:175:9 | b | test.swift:177:10:177:10 | b | provenance | | +| test.swift:175:14:175:67 | TupleExpr [0] | test.swift:175:5:175:10 | TupleExpr [0] | provenance | | +| test.swift:175:14:175:67 | TupleExpr [1] | test.swift:175:5:175:10 | TupleExpr [1] | provenance | | +| test.swift:175:15:175:39 | ... + ... | test.swift:175:14:175:67 | TupleExpr [0] | provenance | | +| test.swift:175:25:175:39 | source(...) | test.swift:175:15:175:39 | ... + ... | provenance | | +| test.swift:175:42:175:66 | ... + ... | test.swift:175:14:175:67 | TupleExpr [1] | provenance | | +| test.swift:175:52:175:66 | source(...) | test.swift:175:42:175:66 | ... + ... | provenance | | +| test.swift:182:9:182:9 | x | test.swift:185:10:185:10 | x | provenance | | +| test.swift:182:13:182:27 | source(...) | test.swift:182:9:182:9 | x | provenance | | +| test.swift:183:9:183:9 | y | test.swift:186:10:186:10 | y | provenance | | +| test.swift:183:13:183:27 | source(...) | test.swift:183:9:183:9 | y | provenance | | +| test.swift:189:22:189:22 | s | test.swift:189:58:189:58 | s | provenance | | +| test.swift:191:25:191:25 | s | test.swift:191:62:191:62 | s | provenance | | +| test.swift:193:30:193:30 | s | test.swift:193:73:193:73 | s | provenance | | +| test.swift:196:16:196:45 | asyncIdentity(...) | test.swift:196:10:196:45 | await ... | provenance | | +| test.swift:196:30:196:44 | source(...) | test.swift:189:22:189:22 | s | provenance | | +| test.swift:196:30:196:44 | source(...) | test.swift:196:16:196:45 | asyncIdentity(...) | provenance | | +| test.swift:200:14:200:46 | throwingIdentity(...) | test.swift:200:10:200:46 | try ... | provenance | | +| test.swift:200:31:200:45 | source(...) | test.swift:191:25:191:25 | s | provenance | | +| test.swift:200:31:200:45 | source(...) | test.swift:200:14:200:46 | throwingIdentity(...) | provenance | | +| test.swift:201:9:201:11 | opt | test.swift:202:12:202:14 | opt | provenance | | +| test.swift:201:20:201:52 | throwingIdentity(...) | test.swift:201:9:201:11 | opt | provenance | | +| test.swift:201:37:201:51 | source(...) | test.swift:191:25:191:25 | s | provenance | | +| test.swift:201:37:201:51 | source(...) | test.swift:201:20:201:52 | throwingIdentity(...) | provenance | | +| test.swift:202:8:202:14 | ... .some(...) | test.swift:202:12:202:14 | opt | provenance | | +| test.swift:202:12:202:14 | opt | test.swift:202:8:202:14 | ... .some(...) | provenance | | +| test.swift:202:12:202:14 | opt | test.swift:203:14:203:16 | opt | provenance | | +| test.swift:205:15:205:47 | throwingIdentity(...) | test.swift:205:10:205:47 | try! ... | provenance | | +| test.swift:205:32:205:46 | source(...) | test.swift:191:25:191:25 | s | provenance | | +| test.swift:205:32:205:46 | source(...) | test.swift:205:15:205:47 | throwingIdentity(...) | provenance | | +| test.swift:209:20:209:57 | asyncThrowingIdentity(...) | test.swift:209:10:209:57 | try ... | provenance | | +| test.swift:209:42:209:56 | source(...) | test.swift:193:30:193:30 | s | provenance | | +| test.swift:209:42:209:56 | source(...) | test.swift:209:20:209:57 | asyncThrowingIdentity(...) | provenance | | +| test.swift:210:9:210:11 | opt | test.swift:211:12:211:14 | opt | provenance | | +| test.swift:210:26:210:63 | asyncThrowingIdentity(...) | test.swift:210:9:210:11 | opt | provenance | | +| test.swift:210:48:210:62 | source(...) | test.swift:193:30:193:30 | s | provenance | | +| test.swift:210:48:210:62 | source(...) | test.swift:210:26:210:63 | asyncThrowingIdentity(...) | provenance | | +| test.swift:211:8:211:14 | ... .some(...) | test.swift:211:12:211:14 | opt | provenance | | +| test.swift:211:12:211:14 | opt | test.swift:211:8:211:14 | ... .some(...) | provenance | | +| test.swift:211:12:211:14 | opt | test.swift:212:14:212:16 | opt | provenance | | +| test.swift:214:21:214:58 | asyncThrowingIdentity(...) | test.swift:214:10:214:58 | try! ... | provenance | | +| test.swift:214:43:214:57 | source(...) | test.swift:193:30:193:30 | s | provenance | | +| test.swift:214:43:214:57 | source(...) | test.swift:214:21:214:58 | asyncThrowingIdentity(...) | provenance | | +| test.swift:218:9:218:9 | x | test.swift:219:10:219:10 | x | provenance | | +| test.swift:218:9:218:9 | x | test.swift:220:10:220:10 | x | provenance | | +| test.swift:218:9:218:9 | x | test.swift:221:16:221:16 | x | provenance | | +| test.swift:218:13:218:27 | source(...) | test.swift:218:9:218:9 | x | provenance | | +| test.swift:219:10:219:10 | x | test.swift:219:10:219:20 | TypeCastExpr | provenance | | +| test.swift:220:10:220:10 | x | test.swift:220:10:220:21 | TypeCastExpr | provenance | | +| test.swift:221:8:221:12 | ... .some(...) | test.swift:221:12:221:12 | y | provenance | | +| test.swift:221:12:221:12 | y | test.swift:222:14:222:14 | y | provenance | | +| test.swift:221:16:221:16 | x | test.swift:221:8:221:12 | ... .some(...) | provenance | | +| test.swift:227:9:227:9 | x [ArrayElement] | test.swift:228:20:228:20 | x [ArrayElement] | provenance | | +| test.swift:227:13:227:46 | ArrayLiteral [ArrayElement] | test.swift:227:9:227:9 | x [ArrayElement] | provenance | | +| test.swift:227:14:227:28 | source(...) | test.swift:227:13:227:46 | ArrayLiteral [ArrayElement] | provenance | | +| test.swift:227:31:227:45 | source(...) | test.swift:227:13:227:46 | ArrayLiteral [ArrayElement] | provenance | | +| test.swift:228:9:228:15 | element | test.swift:229:14:229:20 | element | provenance | | +| test.swift:228:20:228:20 | x [ArrayElement] | test.swift:228:9:228:15 | element | provenance | | +| test.swift:243:16:243:45 | ... .some(...) | test.swift:246:18:246:30 | getOptional(...) | provenance | | +| test.swift:243:30:243:44 | source(...) | test.swift:243:16:243:45 | ... .some(...) | provenance | | +| test.swift:246:9:246:9 | x | test.swift:247:12:247:12 | x | provenance | | +| test.swift:246:18:246:30 | getOptional(...) | test.swift:246:9:246:9 | x | provenance | | +| test.swift:247:8:247:12 | ... .some(...) | test.swift:247:12:247:12 | x | provenance | | +| test.swift:247:12:247:12 | x | test.swift:247:8:247:12 | ... .some(...) | provenance | | +| test.swift:247:12:247:12 | x | test.swift:248:14:248:14 | x | provenance | | +| test.swift:254:16:254:45 | ... .some(...) | test.swift:256:10:256:22 | getOptional(...) | provenance | | +| test.swift:254:16:254:45 | ... .some(...) | test.swift:257:20:257:32 | getOptional(...) | provenance | | +| test.swift:254:30:254:44 | source(...) | test.swift:254:16:254:45 | ... .some(...) | provenance | | +| test.swift:256:10:256:22 | getOptional(...) | test.swift:256:10:256:35 | ... ?? ... | provenance | | +| test.swift:257:20:257:32 | getOptional(...) | test.swift:257:10:257:32 | ... ?? ... | provenance | | +nodes +| calls.swift:7:19:7:19 | x | semmle.label | x | +| calls.swift:8:14:8:14 | x | semmle.label | x | +| calls.swift:10:12:10:25 | source(...) | semmle.label | source(...) | +| calls.swift:15:16:15:29 | source(...) | semmle.label | source(...) | +| calls.swift:17:10:17:17 | target(...) | semmle.label | target(...) | +| calls.swift:21:17:21:17 | x | semmle.label | x | +| calls.swift:22:14:22:14 | x | semmle.label | x | +| calls.swift:24:15:24:28 | source(...) | semmle.label | source(...) | +| calls.swift:28:19:28:19 | x | semmle.label | x | +| calls.swift:29:16:29:16 | x | semmle.label | x | +| calls.swift:29:16:29:24 | ... + ... | semmle.label | ... + ... | +| calls.swift:31:10:31:31 | target(...) | semmle.label | target(...) | +| calls.swift:31:17:31:30 | source(...) | semmle.label | source(...) | +| calls.swift:32:10:32:31 | target(...) | semmle.label | target(...) | +| calls.swift:32:17:32:30 | source(...) | semmle.label | source(...) | +| calls.swift:37:23:37:23 | x | semmle.label | x | +| calls.swift:38:14:38:14 | x | semmle.label | x | +| calls.swift:40:19:40:32 | source(...) | semmle.label | source(...) | +| calls.swift:42:18:42:21 | name | semmle.label | name | +| calls.swift:43:14:43:17 | name | semmle.label | name | +| calls.swift:45:19:45:32 | source(...) | semmle.label | source(...) | +| calls.swift:49:19:49:19 | x | semmle.label | x | +| calls.swift:49:32:49:32 | y | semmle.label | y | +| calls.swift:50:14:50:14 | x | semmle.label | x | +| calls.swift:51:14:51:14 | y | semmle.label | y | +| calls.swift:53:12:53:25 | source(...) | semmle.label | source(...) | +| calls.swift:53:28:53:41 | source(...) | semmle.label | source(...) | +| calls.swift:61:19:61:19 | x [Return] [field] | semmle.label | x [Return] [field] | +| calls.swift:62:9:62:9 | [post] x [field] | semmle.label | [post] x [field] | +| calls.swift:62:9:62:15 | ... .field | semmle.label | ... .field | +| calls.swift:62:19:62:32 | source(...) | semmle.label | source(...) | +| calls.swift:66:12:66:12 | [post] b [field] | semmle.label | [post] b [field] | +| calls.swift:67:10:67:10 | b [field] | semmle.label | b [field] | +| calls.swift:67:10:67:16 | ... .field | semmle.label | ... .field | +| calls.swift:75:13:75:17 | field | semmle.label | field | +| calls.swift:75:21:75:34 | source(...) | semmle.label | source(...) | +| calls.swift:81:18:81:22 | field | semmle.label | field | +| calls.swift:87:18:87:21 | self [field] | semmle.label | self [field] | +| calls.swift:87:18:87:27 | ... .field | semmle.label | ... .field | +| calls.swift:93:18:93:22 | field | semmle.label | field | +| calls.swift:99:18:99:21 | self [field] | semmle.label | self [field] | +| calls.swift:99:18:99:27 | ... .field | semmle.label | ... .field | +| calls.swift:105:18:105:22 | field | semmle.label | field | +| calls.swift:111:18:111:21 | self [field] | semmle.label | self [field] | +| calls.swift:111:18:111:27 | ... .field | semmle.label | ... .field | +| calls.swift:117:18:117:22 | field | semmle.label | field | +| calls.swift:123:18:123:21 | self [field] | semmle.label | self [field] | +| calls.swift:123:18:123:27 | ... .field | semmle.label | ... .field | +| capture.swift:10:9:10:9 | x | semmle.label | x | +| capture.swift:10:13:10:26 | source(...) | semmle.label | source(...) | +| capture.swift:12:14:12:14 | x | semmle.label | x | +| capture.swift:14:5:14:11 | closure [x] | semmle.label | closure [x] | +| capture.swift:20:9:20:9 | x | semmle.label | x | +| capture.swift:20:13:20:26 | source(...) | semmle.label | source(...) | +| capture.swift:24:10:24:10 | x | semmle.label | x | +| capture.swift:28:9:28:9 | x | semmle.label | x | +| capture.swift:28:13:28:26 | source(...) | semmle.label | source(...) | +| capture.swift:32:9:32:10 | y1 | semmle.label | y1 | +| capture.swift:32:14:32:14 | x | semmle.label | x | +| capture.swift:33:9:33:10 | y2 | semmle.label | y2 | +| capture.swift:33:14:33:14 | x | semmle.label | x | +| capture.swift:37:5:37:11 | closure [x] | semmle.label | closure [x] | +| capture.swift:38:10:38:11 | y1 | semmle.label | y1 | +| capture.swift:39:10:39:11 | y2 | semmle.label | y2 | +| capture.swift:43:9:43:9 | x | semmle.label | x | +| capture.swift:43:13:43:26 | source(...) | semmle.label | source(...) | +| capture.swift:45:22:45:24 | arg | semmle.label | arg | +| capture.swift:46:9:46:9 | y | semmle.label | y | +| capture.swift:46:13:46:15 | arg | semmle.label | arg | +| capture.swift:49:13:49:13 | x | semmle.label | x | +| capture.swift:50:10:50:10 | y | semmle.label | y | +| capture.swift:54:9:54:9 | x | semmle.label | x | +| capture.swift:54:13:54:26 | source(...) | semmle.label | source(...) | +| capture.swift:56:22:56:24 | arg | semmle.label | arg | +| capture.swift:57:9:57:9 | [post] y [0] | semmle.label | [post] y [0] | +| capture.swift:57:9:57:11 | ... .0 | semmle.label | ... .0 | +| capture.swift:57:15:57:17 | arg | semmle.label | arg | +| capture.swift:60:13:60:13 | x | semmle.label | x | +| capture.swift:61:10:61:10 | y [0] | semmle.label | y [0] | +| capture.swift:61:10:61:12 | ... .0 | semmle.label | ... .0 | +| capture.swift:67:14:67:14 | x | semmle.label | x | +| capture.swift:69:5:69:5 | x | semmle.label | x | +| capture.swift:69:9:69:22 | source(...) | semmle.label | source(...) | +| capture.swift:70:5:70:11 | closure [x] | semmle.label | closure [x] | +| capture.swift:74:9:74:9 | x | semmle.label | x | +| capture.swift:74:13:74:26 | source(...) | semmle.label | source(...) | +| capture.swift:76:14:76:14 | x | semmle.label | x | +| capture.swift:78:5:78:9 | local [x] | semmle.label | local [x] | +| capture.swift:84:9:84:9 | x | semmle.label | x | +| capture.swift:84:13:84:26 | source(...) | semmle.label | source(...) | +| capture.swift:88:10:88:10 | x | semmle.label | x | +| capture.swift:93:9:93:9 | x | semmle.label | x | +| capture.swift:93:13:93:26 | source(...) | semmle.label | source(...) | +| capture.swift:94:9:94:9 | y | semmle.label | y | +| capture.swift:94:13:94:17 | local [x] | semmle.label | local [x] | +| capture.swift:94:13:94:19 | local(...) | semmle.label | local(...) | +| capture.swift:95:10:95:10 | y | semmle.label | y | +| capture.swift:98:14:98:14 | x | semmle.label | x | +| capture.swift:99:16:99:16 | x | semmle.label | x | +| capture.swift:104:9:104:9 | x | semmle.label | x | +| capture.swift:104:13:104:27 | source(...) | semmle.label | source(...) | +| capture.swift:105:23:105:24 | x1 | semmle.label | x1 | +| capture.swift:105:28:105:28 | x | semmle.label | x | +| capture.swift:106:14:106:15 | x1 | semmle.label | x1 | +| capture.swift:108:23:108:23 | x | semmle.label | x | +| capture.swift:108:23:108:23 | x | semmle.label | x | +| capture.swift:109:14:109:14 | x | semmle.label | x | +| capture.swift:111:5:111:12 | closure1 [x1] | semmle.label | closure1 [x1] | +| capture.swift:112:5:112:12 | closure2 [x] | semmle.label | closure2 [x] | +| capture.swift:116:9:116:9 | x | semmle.label | x | +| capture.swift:116:13:116:27 | source(...) | semmle.label | source(...) | +| capture.swift:117:22:117:22 | x | semmle.label | x | +| capture.swift:117:26:117:26 | x | semmle.label | x | +| capture.swift:117:29:117:32 | blah | semmle.label | blah | +| capture.swift:117:36:117:36 | x | semmle.label | x | +| capture.swift:118:14:118:14 | x | semmle.label | x | +| capture.swift:119:14:119:17 | blah | semmle.label | blah | +| capture.swift:121:5:121:11 | closure [blah] | semmle.label | closure [blah] | +| capture.swift:121:5:121:11 | closure [x] | semmle.label | closure [x] | +| capture.swift:143:14:143:14 | x | semmle.label | x | +| capture.swift:147:5:147:5 | x | semmle.label | x | +| capture.swift:147:9:147:23 | source(...) | semmle.label | source(...) | +| capture.swift:149:5:149:12 | closure2 [x] | semmle.label | closure2 [x] | +| capture.swift:156:9:156:9 | x | semmle.label | x | +| capture.swift:156:13:156:25 | source(...) | semmle.label | source(...) | +| capture.swift:158:18:158:21 | self [x] | semmle.label | self [x] | +| capture.swift:158:18:158:23 | ... .x | semmle.label | ... .x | +| capture.swift:160:9:160:15 | closure [self, x] | semmle.label | closure [self, x] | +| capture.swift:164:9:164:9 | x | semmle.label | x | +| capture.swift:164:13:164:25 | source(...) | semmle.label | source(...) | +| capture.swift:165:26:165:29 | self [x] | semmle.label | self [x] | +| capture.swift:165:26:165:29 | self [x] | semmle.label | self [x] | +| capture.swift:166:18:166:21 | self [x] | semmle.label | self [x] | +| capture.swift:166:18:166:23 | ... .x | semmle.label | ... .x | +| capture.swift:167:18:167:18 | x | semmle.label | x | +| capture.swift:169:9:169:15 | closure [self, x] | semmle.label | closure [self, x] | +| capture.swift:173:9:173:9 | x | semmle.label | x | +| capture.swift:173:13:173:25 | source(...) | semmle.label | source(...) | +| capture.swift:174:31:174:34 | self [x] | semmle.label | self [x] | +| capture.swift:174:31:174:34 | self [x] | semmle.label | self [x] | +| capture.swift:175:19:175:26 | ... .some(...) [x] | semmle.label | ... .some(...) [x] | +| capture.swift:175:23:175:26 | self [x] | semmle.label | self [x] | +| capture.swift:175:23:175:26 | self [x] | semmle.label | self [x] | +| capture.swift:176:18:176:21 | self [x] | semmle.label | self [x] | +| capture.swift:176:18:176:23 | ... .x | semmle.label | ... .x | +| capture.swift:177:18:177:18 | x | semmle.label | x | +| capture.swift:179:9:179:15 | closure [self, x] | semmle.label | closure [self, x] | +| capture.swift:183:9:183:9 | x | semmle.label | x | +| capture.swift:183:13:183:25 | source(...) | semmle.label | source(...) | +| capture.swift:184:34:184:37 | self [x] | semmle.label | self [x] | +| capture.swift:184:34:184:37 | self [x] | semmle.label | self [x] | +| capture.swift:185:18:185:21 | self [x] | semmle.label | self [x] | +| capture.swift:185:18:185:23 | ... .x | semmle.label | ... .x | +| capture.swift:186:18:186:18 | x | semmle.label | x | +| capture.swift:188:9:188:15 | closure [self, x] | semmle.label | closure [self, x] | +| enums.swift:12:9:12:9 | e [case1.0] | semmle.label | e [case1.0] | +| enums.swift:12:13:12:35 | ... .case1(...) [case1.0] | semmle.label | ... .case1(...) [case1.0] | +| enums.swift:12:21:12:34 | source(...) | semmle.label | source(...) | +| enums.swift:14:12:14:12 | e [case1.0] | semmle.label | e [case1.0] | +| enums.swift:15:10:15:23 | ... .case1(...) [case1.0] | semmle.label | ... .case1(...) [case1.0] | +| enums.swift:15:22:15:22 | x | semmle.label | x | +| enums.swift:16:14:16:14 | x | semmle.label | x | +| enums.swift:23:9:23:9 | e [case1.0] | semmle.label | e [case1.0] | +| enums.swift:23:13:23:35 | ... .case1(...) [case1.0] | semmle.label | ... .case1(...) [case1.0] | +| enums.swift:23:21:23:34 | source(...) | semmle.label | source(...) | +| enums.swift:25:12:25:12 | e [case1.0] | semmle.label | e [case1.0] | +| enums.swift:26:10:26:22 | ... .case1(...) [case1.0] | semmle.label | ... .case1(...) [case1.0] | +| enums.swift:26:21:26:21 | x | semmle.label | x | +| enums.swift:27:14:27:14 | x | semmle.label | x | +| enums.swift:34:9:34:9 | e [case1.0] | semmle.label | e [case1.0] | +| enums.swift:34:13:34:35 | ... .case1(...) [case1.0] | semmle.label | ... .case1(...) [case1.0] | +| enums.swift:34:21:34:34 | source(...) | semmle.label | source(...) | +| enums.swift:35:16:35:29 | ... .case1(...) [case1.0] | semmle.label | ... .case1(...) [case1.0] | +| enums.swift:35:28:35:28 | x | semmle.label | x | +| enums.swift:35:33:35:33 | e [case1.0] | semmle.label | e [case1.0] | +| enums.swift:36:10:36:10 | x | semmle.label | x | +| enums.swift:40:9:40:9 | e [case2.0] | semmle.label | e [case2.0] | +| enums.swift:40:13:40:35 | ... .case2(...) [case2.0] | semmle.label | ... .case2(...) [case2.0] | +| enums.swift:40:21:40:34 | source(...) | semmle.label | source(...) | +| enums.swift:41:12:41:12 | e [case2.0] | semmle.label | e [case2.0] | +| enums.swift:44:10:44:23 | ... .case2(...) [case2.0] | semmle.label | ... .case2(...) [case2.0] | +| enums.swift:44:22:44:22 | x | semmle.label | x | +| enums.swift:45:14:45:14 | x | semmle.label | x | +| enums.swift:48:12:48:12 | e [case2.0] | semmle.label | e [case2.0] | +| enums.swift:49:10:49:23 | ... .case2(...) [case2.0] | semmle.label | ... .case2(...) [case2.0] | +| enums.swift:49:22:49:22 | x | semmle.label | x | +| enums.swift:50:14:50:14 | x | semmle.label | x | +| enums.swift:57:9:57:13 | opt_x | semmle.label | opt_x | +| enums.swift:57:31:57:44 | source(...) | semmle.label | source(...) | +| enums.swift:58:11:58:15 | ... .some(...) | semmle.label | ... .some(...) | +| enums.swift:58:15:58:15 | x | semmle.label | x | +| enums.swift:58:19:58:23 | opt_x | semmle.label | opt_x | +| enums.swift:59:10:59:10 | x | semmle.label | x | +| enums.swift:63:9:63:13 | opt_x | semmle.label | opt_x | +| enums.swift:63:31:63:44 | source(...) | semmle.label | source(...) | +| enums.swift:64:11:64:19 | ... .some(...) | semmle.label | ... .some(...) | +| enums.swift:64:15:64:19 | opt_x | semmle.label | opt_x | +| enums.swift:64:15:64:19 | opt_x | semmle.label | opt_x | +| enums.swift:65:10:65:14 | opt_x | semmle.label | opt_x | +| enums.swift:73:9:73:9 | e [foo.0] | semmle.label | e [foo.0] | +| enums.swift:73:13:73:48 | ... .foo(...) [foo.0] | semmle.label | ... .foo(...) [foo.0] | +| enums.swift:73:34:73:47 | source(...) | semmle.label | source(...) | +| enums.swift:74:12:74:12 | e [foo.0] | semmle.label | e [foo.0] | +| enums.swift:75:10:75:20 | ... .foo(...) [foo.0] | semmle.label | ... .foo(...) [foo.0] | +| enums.swift:75:19:75:19 | x | semmle.label | x | +| enums.swift:76:14:76:14 | x | semmle.label | x | +| enums.swift:82:12:82:12 | e [foo.0] | semmle.label | e [foo.0] | +| enums.swift:83:10:83:23 | ... .foo(...) [foo.0] | semmle.label | ... .foo(...) [foo.0] | +| enums.swift:83:22:83:22 | x | semmle.label | x | +| enums.swift:84:14:84:14 | x | semmle.label | x | +| implicit-self.swift:16:9:16:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:16:9:16:14 | ... .x | semmle.label | ... .x | +| implicit-self.swift:16:18:16:31 | source(...) | semmle.label | source(...) | +| implicit-self.swift:17:14:17:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:17:14:17:19 | ... .x | semmle.label | ... .x | +| implicit-self.swift:22:9:22:9 | x | semmle.label | x | +| implicit-self.swift:22:13:22:26 | source(...) | semmle.label | source(...) | +| implicit-self.swift:23:14:23:14 | x | semmle.label | x | +| implicit-self.swift:28:9:28:9 | x | semmle.label | x | +| implicit-self.swift:28:13:28:26 | source(...) | semmle.label | source(...) | +| implicit-self.swift:29:14:29:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:29:14:29:19 | ... .x | semmle.label | ... .x | +| implicit-self.swift:34:9:34:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:34:9:34:14 | ... .x | semmle.label | ... .x | +| implicit-self.swift:34:18:34:31 | source(...) | semmle.label | source(...) | +| implicit-self.swift:35:14:35:14 | x | semmle.label | x | +| implicit-self.swift:40:9:40:12 | [post] self [box, x] | semmle.label | [post] self [box, x] | +| implicit-self.swift:40:9:40:16 | [post] ... .box [x] | semmle.label | [post] ... .box [x] | +| implicit-self.swift:40:9:40:18 | ... .x | semmle.label | ... .x | +| implicit-self.swift:40:22:40:35 | source(...) | semmle.label | source(...) | +| implicit-self.swift:41:14:41:17 | self [box, x] | semmle.label | self [box, x] | +| implicit-self.swift:41:14:41:21 | ... .box [x] | semmle.label | ... .box [x] | +| implicit-self.swift:41:14:41:23 | ... .x | semmle.label | ... .x | +| implicit-self.swift:46:9:46:11 | [post] box [x] | semmle.label | [post] box [x] | +| implicit-self.swift:46:9:46:13 | ... .x | semmle.label | ... .x | +| implicit-self.swift:46:17:46:30 | source(...) | semmle.label | source(...) | +| implicit-self.swift:47:14:47:16 | box [x] | semmle.label | box [x] | +| implicit-self.swift:47:14:47:18 | ... .x | semmle.label | ... .x | +| implicit-self.swift:52:9:52:11 | [post] box [x] | semmle.label | [post] box [x] | +| implicit-self.swift:52:9:52:13 | ... .x | semmle.label | ... .x | +| implicit-self.swift:52:17:52:30 | source(...) | semmle.label | source(...) | +| implicit-self.swift:53:14:53:17 | self [box, x] | semmle.label | self [box, x] | +| implicit-self.swift:53:14:53:21 | ... .box [x] | semmle.label | ... .box [x] | +| implicit-self.swift:53:14:53:23 | ... .x | semmle.label | ... .x | +| implicit-self.swift:58:9:58:12 | [post] self [box, x] | semmle.label | [post] self [box, x] | +| implicit-self.swift:58:9:58:16 | [post] ... .box [x] | semmle.label | [post] ... .box [x] | +| implicit-self.swift:58:9:58:18 | ... .x | semmle.label | ... .x | +| implicit-self.swift:58:22:58:35 | source(...) | semmle.label | source(...) | +| implicit-self.swift:59:14:59:16 | box [x] | semmle.label | box [x] | +| implicit-self.swift:59:14:59:18 | ... .x | semmle.label | ... .x | +| implicit-self.swift:64:9:64:9 | [incoming] x | semmle.label | [incoming] x | +| implicit-self.swift:64:24:64:37 | source(...) | semmle.label | source(...) | +| implicit-self.swift:65:14:65:14 | x | semmle.label | x | +| implicit-self.swift:66:14:66:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:66:14:66:19 | ... .x | semmle.label | ... .x | +| implicit-self.swift:71:9:71:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:71:9:71:14 | [incoming] ... .x | semmle.label | [incoming] ... .x | +| implicit-self.swift:71:29:71:43 | source(...) | semmle.label | source(...) | +| implicit-self.swift:72:14:72:14 | x | semmle.label | x | +| implicit-self.swift:73:14:73:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:73:14:73:19 | ... .x | semmle.label | ... .x | +| implicit-self.swift:78:9:78:9 | [incoming] x | semmle.label | [incoming] x | +| implicit-self.swift:78:24:78:38 | source(...) | semmle.label | source(...) | +| implicit-self.swift:79:14:79:14 | x | semmle.label | x | +| implicit-self.swift:80:14:80:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:80:14:80:19 | ... .x | semmle.label | ... .x | +| implicit-self.swift:85:9:85:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:85:9:85:14 | [incoming] ... .x | semmle.label | [incoming] ... .x | +| implicit-self.swift:85:29:85:43 | source(...) | semmle.label | source(...) | +| implicit-self.swift:86:14:86:14 | x | semmle.label | x | +| implicit-self.swift:87:14:87:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:87:14:87:19 | ... .x | semmle.label | ... .x | +| test.swift:9:10:9:21 | source(...) | semmle.label | source(...) | +| test.swift:17:10:17:23 | source(...) | semmle.label | source(...) | +| test.swift:17:10:17:32 | ... + ... | semmle.label | ... + ... | +| test.swift:18:10:18:32 | ... + ... | semmle.label | ... + ... | +| test.swift:18:19:18:32 | source(...) | semmle.label | source(...) | +| test.swift:20:10:20:33 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| test.swift:20:13:20:26 | source(...) | semmle.label | source(...) | +| test.swift:21:10:21:33 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| test.swift:21:18:21:31 | source(...) | semmle.label | source(...) | +| test.swift:22:10:22:38 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| test.swift:22:18:22:31 | source(...) | semmle.label | source(...) | +| test.swift:27:10:27:33 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:27:10:27:35 | ... .0 | semmle.label | ... .0 | +| test.swift:27:11:27:24 | source(...) | semmle.label | source(...) | +| test.swift:30:10:30:33 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:30:10:30:35 | ... .1 | semmle.label | ... .1 | +| test.swift:30:19:30:32 | source(...) | semmle.label | source(...) | +| test.swift:34:9:34:9 | a | semmle.label | a | +| test.swift:34:13:34:26 | source(...) | semmle.label | source(...) | +| test.swift:35:10:35:10 | a | semmle.label | a | +| test.swift:39:9:39:14 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:39:10:39:10 | a | semmle.label | a | +| test.swift:39:18:39:41 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:39:19:39:32 | source(...) | semmle.label | source(...) | +| test.swift:40:10:40:10 | a | semmle.label | a | +| test.swift:43:9:43:14 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:43:13:43:13 | d | semmle.label | d | +| test.swift:43:18:43:41 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:43:27:43:40 | source(...) | semmle.label | source(...) | +| test.swift:45:10:45:10 | d | semmle.label | d | +| test.swift:49:9:49:9 | a | semmle.label | a | +| test.swift:49:13:49:26 | source(...) | semmle.label | source(...) | +| test.swift:50:10:50:10 | a | semmle.label | a | +| test.swift:57:5:57:9 | [post] tuple [0] | semmle.label | [post] tuple [0] | +| test.swift:57:5:57:11 | ... .0 | semmle.label | ... .0 | +| test.swift:57:15:57:28 | source(...) | semmle.label | source(...) | +| test.swift:58:10:58:14 | tuple [0] | semmle.label | tuple [0] | +| test.swift:58:10:58:16 | ... .0 | semmle.label | ... .0 | +| test.swift:64:5:64:14 | [post] deep_tuple [1, 0] | semmle.label | [post] deep_tuple [1, 0] | +| test.swift:64:5:64:16 | [post] ... .1 [0] | semmle.label | [post] ... .1 [0] | +| test.swift:64:5:64:18 | ... .0 | semmle.label | ... .0 | +| test.swift:64:22:64:35 | source(...) | semmle.label | source(...) | +| test.swift:69:10:69:19 | deep_tuple [1, 0] | semmle.label | deep_tuple [1, 0] | +| test.swift:69:10:69:21 | ... .1 [0] | semmle.label | ... .1 [0] | +| test.swift:69:10:69:23 | ... .0 | semmle.label | ... .0 | +| test.swift:75:5:75:16 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:75:6:75:10 | [post] tuple [1] | semmle.label | [post] tuple [1] | +| test.swift:75:6:75:12 | ... .1 | semmle.label | ... .1 | +| test.swift:75:20:75:51 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:75:21:75:34 | source(...) | semmle.label | source(...) | +| test.swift:77:10:77:14 | tuple [1] | semmle.label | tuple [1] | +| test.swift:77:10:77:16 | ... .1 | semmle.label | ... .1 | +| test.swift:85:5:85:9 | [post] tuple [0] | semmle.label | [post] tuple [0] | +| test.swift:85:5:85:11 | ... .0 | semmle.label | ... .0 | +| test.swift:85:15:85:29 | source(...) | semmle.label | source(...) | +| test.swift:86:10:86:14 | tuple [0] | semmle.label | tuple [0] | +| test.swift:86:10:86:16 | ... .0 | semmle.label | ... .0 | +| test.swift:97:9:97:9 | x | semmle.label | x | +| test.swift:97:13:97:27 | source(...) | semmle.label | source(...) | +| test.swift:101:10:101:10 | x | semmle.label | x | +| test.swift:105:9:105:9 | y | semmle.label | y | +| test.swift:105:13:105:27 | source(...) | semmle.label | source(...) | +| test.swift:107:10:107:10 | y | semmle.label | y | +| test.swift:110:14:110:14 | x | semmle.label | x | +| test.swift:111:14:111:14 | y | semmle.label | y | +| test.swift:118:9:118:13 | [post] tuple [0] | semmle.label | [post] tuple [0] | +| test.swift:118:9:118:15 | ... .0 | semmle.label | ... .0 | +| test.swift:118:19:118:33 | source(...) | semmle.label | source(...) | +| test.swift:123:10:123:14 | tuple [0] | semmle.label | tuple [0] | +| test.swift:123:10:123:16 | ... .0 | semmle.label | ... .0 | +| test.swift:128:9:128:13 | tuple [0] | semmle.label | tuple [0] | +| test.swift:128:9:128:13 | tuple [1] | semmle.label | tuple [1] | +| test.swift:128:17:128:50 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:128:17:128:50 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:128:18:128:32 | source(...) | semmle.label | source(...) | +| test.swift:128:35:128:49 | source(...) | semmle.label | source(...) | +| test.swift:131:9:131:14 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:131:9:131:14 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:131:10:131:10 | a | semmle.label | a | +| test.swift:131:13:131:13 | b | semmle.label | b | +| test.swift:131:18:131:22 | tuple [0] | semmle.label | tuple [0] | +| test.swift:131:18:131:22 | tuple [1] | semmle.label | tuple [1] | +| test.swift:136:10:136:10 | a | semmle.label | a | +| test.swift:137:10:137:10 | b | semmle.label | b | +| test.swift:142:5:142:5 | a | semmle.label | a | +| test.swift:142:19:142:33 | source(...) | semmle.label | source(...) | +| test.swift:143:10:143:10 | a | semmle.label | a | +| test.swift:148:5:148:5 | [incoming] a | semmle.label | [incoming] a | +| test.swift:148:10:148:24 | source(...) | semmle.label | source(...) | +| test.swift:149:10:149:10 | a | semmle.label | a | +| test.swift:154:5:154:5 | [incoming] a | semmle.label | [incoming] a | +| test.swift:154:20:154:34 | source(...) | semmle.label | source(...) | +| test.swift:155:10:155:10 | a | semmle.label | a | +| test.swift:160:5:160:5 | [post] a [0] | semmle.label | [post] a [0] | +| test.swift:160:5:160:7 | ... .0 | semmle.label | ... .0 | +| test.swift:160:23:160:37 | source(...) | semmle.label | source(...) | +| test.swift:161:10:161:10 | a [0] | semmle.label | a [0] | +| test.swift:161:10:161:12 | ... .0 | semmle.label | ... .0 | +| test.swift:167:5:167:12 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:167:6:167:6 | [post] a [0] | semmle.label | [post] a [0] | +| test.swift:167:6:167:8 | ... .0 | semmle.label | ... .0 | +| test.swift:167:16:167:61 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:167:17:167:43 | ... + ... | semmle.label | ... + ... | +| test.swift:167:29:167:43 | source(...) | semmle.label | source(...) | +| test.swift:168:10:168:10 | a [0] | semmle.label | a [0] | +| test.swift:168:10:168:12 | ... .0 | semmle.label | ... .0 | +| test.swift:175:5:175:10 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:175:5:175:10 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:175:6:175:6 | a | semmle.label | a | +| test.swift:175:9:175:9 | b | semmle.label | b | +| test.swift:175:14:175:67 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:175:14:175:67 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:175:15:175:39 | ... + ... | semmle.label | ... + ... | +| test.swift:175:25:175:39 | source(...) | semmle.label | source(...) | +| test.swift:175:42:175:66 | ... + ... | semmle.label | ... + ... | +| test.swift:175:52:175:66 | source(...) | semmle.label | source(...) | +| test.swift:176:10:176:10 | a | semmle.label | a | +| test.swift:177:10:177:10 | b | semmle.label | b | +| test.swift:182:9:182:9 | x | semmle.label | x | +| test.swift:182:13:182:27 | source(...) | semmle.label | source(...) | +| test.swift:183:9:183:9 | y | semmle.label | y | +| test.swift:183:13:183:27 | source(...) | semmle.label | source(...) | +| test.swift:185:10:185:10 | x | semmle.label | x | +| test.swift:186:10:186:10 | y | semmle.label | y | +| test.swift:189:22:189:22 | s | semmle.label | s | +| test.swift:189:58:189:58 | s | semmle.label | s | +| test.swift:191:25:191:25 | s | semmle.label | s | +| test.swift:191:62:191:62 | s | semmle.label | s | +| test.swift:193:30:193:30 | s | semmle.label | s | +| test.swift:193:73:193:73 | s | semmle.label | s | +| test.swift:196:10:196:45 | await ... | semmle.label | await ... | +| test.swift:196:16:196:45 | asyncIdentity(...) | semmle.label | asyncIdentity(...) | +| test.swift:196:30:196:44 | source(...) | semmle.label | source(...) | +| test.swift:200:10:200:46 | try ... | semmle.label | try ... | +| test.swift:200:14:200:46 | throwingIdentity(...) | semmle.label | throwingIdentity(...) | +| test.swift:200:31:200:45 | source(...) | semmle.label | source(...) | +| test.swift:201:9:201:11 | opt | semmle.label | opt | +| test.swift:201:20:201:52 | throwingIdentity(...) | semmle.label | throwingIdentity(...) | +| test.swift:201:37:201:51 | source(...) | semmle.label | source(...) | +| test.swift:202:8:202:14 | ... .some(...) | semmle.label | ... .some(...) | +| test.swift:202:12:202:14 | opt | semmle.label | opt | +| test.swift:202:12:202:14 | opt | semmle.label | opt | +| test.swift:203:14:203:16 | opt | semmle.label | opt | +| test.swift:205:10:205:47 | try! ... | semmle.label | try! ... | +| test.swift:205:15:205:47 | throwingIdentity(...) | semmle.label | throwingIdentity(...) | +| test.swift:205:32:205:46 | source(...) | semmle.label | source(...) | +| test.swift:209:10:209:57 | try ... | semmle.label | try ... | +| test.swift:209:20:209:57 | asyncThrowingIdentity(...) | semmle.label | asyncThrowingIdentity(...) | +| test.swift:209:42:209:56 | source(...) | semmle.label | source(...) | +| test.swift:210:9:210:11 | opt | semmle.label | opt | +| test.swift:210:26:210:63 | asyncThrowingIdentity(...) | semmle.label | asyncThrowingIdentity(...) | +| test.swift:210:48:210:62 | source(...) | semmle.label | source(...) | +| test.swift:211:8:211:14 | ... .some(...) | semmle.label | ... .some(...) | +| test.swift:211:12:211:14 | opt | semmle.label | opt | +| test.swift:211:12:211:14 | opt | semmle.label | opt | +| test.swift:212:14:212:16 | opt | semmle.label | opt | +| test.swift:214:10:214:58 | try! ... | semmle.label | try! ... | +| test.swift:214:21:214:58 | asyncThrowingIdentity(...) | semmle.label | asyncThrowingIdentity(...) | +| test.swift:214:43:214:57 | source(...) | semmle.label | source(...) | +| test.swift:218:9:218:9 | x | semmle.label | x | +| test.swift:218:13:218:27 | source(...) | semmle.label | source(...) | +| test.swift:219:10:219:10 | x | semmle.label | x | +| test.swift:219:10:219:20 | TypeCastExpr | semmle.label | TypeCastExpr | +| test.swift:220:10:220:10 | x | semmle.label | x | +| test.swift:220:10:220:21 | TypeCastExpr | semmle.label | TypeCastExpr | +| test.swift:221:8:221:12 | ... .some(...) | semmle.label | ... .some(...) | +| test.swift:221:12:221:12 | y | semmle.label | y | +| test.swift:221:16:221:16 | x | semmle.label | x | +| test.swift:222:14:222:14 | y | semmle.label | y | +| test.swift:227:9:227:9 | x [ArrayElement] | semmle.label | x [ArrayElement] | +| test.swift:227:13:227:46 | ArrayLiteral [ArrayElement] | semmle.label | ArrayLiteral [ArrayElement] | +| test.swift:227:14:227:28 | source(...) | semmle.label | source(...) | +| test.swift:227:31:227:45 | source(...) | semmle.label | source(...) | +| test.swift:228:9:228:15 | element | semmle.label | element | +| test.swift:228:20:228:20 | x [ArrayElement] | semmle.label | x [ArrayElement] | +| test.swift:229:14:229:20 | element | semmle.label | element | +| test.swift:243:16:243:45 | ... .some(...) | semmle.label | ... .some(...) | +| test.swift:243:30:243:44 | source(...) | semmle.label | source(...) | +| test.swift:246:9:246:9 | x | semmle.label | x | +| test.swift:246:18:246:30 | getOptional(...) | semmle.label | getOptional(...) | +| test.swift:247:8:247:12 | ... .some(...) | semmle.label | ... .some(...) | +| test.swift:247:12:247:12 | x | semmle.label | x | +| test.swift:247:12:247:12 | x | semmle.label | x | +| test.swift:248:14:248:14 | x | semmle.label | x | +| test.swift:254:16:254:45 | ... .some(...) | semmle.label | ... .some(...) | +| test.swift:254:30:254:44 | source(...) | semmle.label | source(...) | +| test.swift:256:10:256:22 | getOptional(...) | semmle.label | getOptional(...) | +| test.swift:256:10:256:35 | ... ?? ... | semmle.label | ... ?? ... | +| test.swift:257:10:257:32 | ... ?? ... | semmle.label | ... ?? ... | +| test.swift:257:20:257:32 | getOptional(...) | semmle.label | getOptional(...) | +subpaths +| calls.swift:31:17:31:30 | source(...) | calls.swift:28:19:28:19 | x | calls.swift:29:16:29:24 | ... + ... | calls.swift:31:10:31:31 | target(...) | +| calls.swift:32:17:32:30 | source(...) | calls.swift:28:19:28:19 | x | calls.swift:29:16:29:24 | ... + ... | calls.swift:32:10:32:31 | target(...) | +| capture.swift:37:5:37:11 | closure [x] | capture.swift:32:14:32:14 | x | capture.swift:32:9:32:10 | y1 | capture.swift:38:10:38:11 | y1 | +| capture.swift:37:5:37:11 | closure [x] | capture.swift:33:14:33:14 | x | capture.swift:33:9:33:10 | y2 | capture.swift:39:10:39:11 | y2 | +| capture.swift:49:13:49:13 | x | capture.swift:45:22:45:24 | arg | capture.swift:46:9:46:9 | y | capture.swift:50:10:50:10 | y | +| capture.swift:60:13:60:13 | x | capture.swift:56:22:56:24 | arg | capture.swift:57:9:57:9 | [post] y [0] | capture.swift:61:10:61:10 | y [0] | +| capture.swift:94:13:94:17 | local [x] | capture.swift:99:16:99:16 | x | capture.swift:99:16:99:16 | x | capture.swift:94:13:94:19 | local(...) | +| test.swift:196:30:196:44 | source(...) | test.swift:189:22:189:22 | s | test.swift:189:58:189:58 | s | test.swift:196:16:196:45 | asyncIdentity(...) | +| test.swift:200:31:200:45 | source(...) | test.swift:191:25:191:25 | s | test.swift:191:62:191:62 | s | test.swift:200:14:200:46 | throwingIdentity(...) | +| test.swift:201:37:201:51 | source(...) | test.swift:191:25:191:25 | s | test.swift:191:62:191:62 | s | test.swift:201:20:201:52 | throwingIdentity(...) | +| test.swift:205:32:205:46 | source(...) | test.swift:191:25:191:25 | s | test.swift:191:62:191:62 | s | test.swift:205:15:205:47 | throwingIdentity(...) | +| test.swift:209:42:209:56 | source(...) | test.swift:193:30:193:30 | s | test.swift:193:73:193:73 | s | test.swift:209:20:209:57 | asyncThrowingIdentity(...) | +| test.swift:210:48:210:62 | source(...) | test.swift:193:30:193:30 | s | test.swift:193:73:193:73 | s | test.swift:210:26:210:63 | asyncThrowingIdentity(...) | +| test.swift:214:43:214:57 | source(...) | test.swift:193:30:193:30 | s | test.swift:193:73:193:73 | s | test.swift:214:21:214:58 | asyncThrowingIdentity(...) | +testFailures +#select +| calls.swift:8:14:8:14 | x | calls.swift:10:12:10:25 | source(...) | calls.swift:8:14:8:14 | x | $@ | calls.swift:10:12:10:25 | source(...) | source(...) | +| calls.swift:17:10:17:17 | target(...) | calls.swift:15:16:15:29 | source(...) | calls.swift:17:10:17:17 | target(...) | $@ | calls.swift:15:16:15:29 | source(...) | source(...) | +| calls.swift:22:14:22:14 | x | calls.swift:24:15:24:28 | source(...) | calls.swift:22:14:22:14 | x | $@ | calls.swift:24:15:24:28 | source(...) | source(...) | +| calls.swift:31:10:31:31 | target(...) | calls.swift:31:17:31:30 | source(...) | calls.swift:31:10:31:31 | target(...) | $@ | calls.swift:31:17:31:30 | source(...) | source(...) | +| calls.swift:32:10:32:31 | target(...) | calls.swift:32:17:32:30 | source(...) | calls.swift:32:10:32:31 | target(...) | $@ | calls.swift:32:17:32:30 | source(...) | source(...) | +| calls.swift:38:14:38:14 | x | calls.swift:40:19:40:32 | source(...) | calls.swift:38:14:38:14 | x | $@ | calls.swift:40:19:40:32 | source(...) | source(...) | +| calls.swift:43:14:43:17 | name | calls.swift:45:19:45:32 | source(...) | calls.swift:43:14:43:17 | name | $@ | calls.swift:45:19:45:32 | source(...) | source(...) | +| calls.swift:50:14:50:14 | x | calls.swift:53:12:53:25 | source(...) | calls.swift:50:14:50:14 | x | $@ | calls.swift:53:12:53:25 | source(...) | source(...) | +| calls.swift:51:14:51:14 | y | calls.swift:53:28:53:41 | source(...) | calls.swift:51:14:51:14 | y | $@ | calls.swift:53:28:53:41 | source(...) | source(...) | +| calls.swift:67:10:67:16 | ... .field | calls.swift:62:19:62:32 | source(...) | calls.swift:67:10:67:16 | ... .field | $@ | calls.swift:62:19:62:32 | source(...) | source(...) | +| calls.swift:81:18:81:22 | field | calls.swift:75:21:75:34 | source(...) | calls.swift:81:18:81:22 | field | $@ | calls.swift:75:21:75:34 | source(...) | source(...) | +| calls.swift:87:18:87:27 | ... .field | calls.swift:75:21:75:34 | source(...) | calls.swift:87:18:87:27 | ... .field | $@ | calls.swift:75:21:75:34 | source(...) | source(...) | +| calls.swift:93:18:93:22 | field | calls.swift:75:21:75:34 | source(...) | calls.swift:93:18:93:22 | field | $@ | calls.swift:75:21:75:34 | source(...) | source(...) | +| calls.swift:99:18:99:27 | ... .field | calls.swift:75:21:75:34 | source(...) | calls.swift:99:18:99:27 | ... .field | $@ | calls.swift:75:21:75:34 | source(...) | source(...) | +| calls.swift:105:18:105:22 | field | calls.swift:75:21:75:34 | source(...) | calls.swift:105:18:105:22 | field | $@ | calls.swift:75:21:75:34 | source(...) | source(...) | +| calls.swift:111:18:111:27 | ... .field | calls.swift:75:21:75:34 | source(...) | calls.swift:111:18:111:27 | ... .field | $@ | calls.swift:75:21:75:34 | source(...) | source(...) | +| calls.swift:117:18:117:22 | field | calls.swift:75:21:75:34 | source(...) | calls.swift:117:18:117:22 | field | $@ | calls.swift:75:21:75:34 | source(...) | source(...) | +| calls.swift:123:18:123:27 | ... .field | calls.swift:75:21:75:34 | source(...) | calls.swift:123:18:123:27 | ... .field | $@ | calls.swift:75:21:75:34 | source(...) | source(...) | +| capture.swift:12:14:12:14 | x | capture.swift:10:13:10:26 | source(...) | capture.swift:12:14:12:14 | x | $@ | capture.swift:10:13:10:26 | source(...) | source(...) | +| capture.swift:24:10:24:10 | x | capture.swift:20:13:20:26 | source(...) | capture.swift:24:10:24:10 | x | $@ | capture.swift:20:13:20:26 | source(...) | source(...) | +| capture.swift:38:10:38:11 | y1 | capture.swift:28:13:28:26 | source(...) | capture.swift:38:10:38:11 | y1 | $@ | capture.swift:28:13:28:26 | source(...) | source(...) | +| capture.swift:39:10:39:11 | y2 | capture.swift:28:13:28:26 | source(...) | capture.swift:39:10:39:11 | y2 | $@ | capture.swift:28:13:28:26 | source(...) | source(...) | +| capture.swift:50:10:50:10 | y | capture.swift:43:13:43:26 | source(...) | capture.swift:50:10:50:10 | y | $@ | capture.swift:43:13:43:26 | source(...) | source(...) | +| capture.swift:61:10:61:12 | ... .0 | capture.swift:54:13:54:26 | source(...) | capture.swift:61:10:61:12 | ... .0 | $@ | capture.swift:54:13:54:26 | source(...) | source(...) | +| capture.swift:67:14:67:14 | x | capture.swift:69:9:69:22 | source(...) | capture.swift:67:14:67:14 | x | $@ | capture.swift:69:9:69:22 | source(...) | source(...) | +| capture.swift:76:14:76:14 | x | capture.swift:74:13:74:26 | source(...) | capture.swift:76:14:76:14 | x | $@ | capture.swift:74:13:74:26 | source(...) | source(...) | +| capture.swift:88:10:88:10 | x | capture.swift:84:13:84:26 | source(...) | capture.swift:88:10:88:10 | x | $@ | capture.swift:84:13:84:26 | source(...) | source(...) | +| capture.swift:95:10:95:10 | y | capture.swift:93:13:93:26 | source(...) | capture.swift:95:10:95:10 | y | $@ | capture.swift:93:13:93:26 | source(...) | source(...) | +| capture.swift:98:14:98:14 | x | capture.swift:93:13:93:26 | source(...) | capture.swift:98:14:98:14 | x | $@ | capture.swift:93:13:93:26 | source(...) | source(...) | +| capture.swift:106:14:106:15 | x1 | capture.swift:104:13:104:27 | source(...) | capture.swift:106:14:106:15 | x1 | $@ | capture.swift:104:13:104:27 | source(...) | source(...) | +| capture.swift:109:14:109:14 | x | capture.swift:104:13:104:27 | source(...) | capture.swift:109:14:109:14 | x | $@ | capture.swift:104:13:104:27 | source(...) | source(...) | +| capture.swift:118:14:118:14 | x | capture.swift:116:13:116:27 | source(...) | capture.swift:118:14:118:14 | x | $@ | capture.swift:116:13:116:27 | source(...) | source(...) | +| capture.swift:119:14:119:17 | blah | capture.swift:116:13:116:27 | source(...) | capture.swift:119:14:119:17 | blah | $@ | capture.swift:116:13:116:27 | source(...) | source(...) | +| capture.swift:143:14:143:14 | x | capture.swift:147:9:147:23 | source(...) | capture.swift:143:14:143:14 | x | $@ | capture.swift:147:9:147:23 | source(...) | source(...) | +| capture.swift:158:18:158:23 | ... .x | capture.swift:156:13:156:25 | source(...) | capture.swift:158:18:158:23 | ... .x | $@ | capture.swift:156:13:156:25 | source(...) | source(...) | +| capture.swift:166:18:166:23 | ... .x | capture.swift:164:13:164:25 | source(...) | capture.swift:166:18:166:23 | ... .x | $@ | capture.swift:164:13:164:25 | source(...) | source(...) | +| capture.swift:167:18:167:18 | x | capture.swift:164:13:164:25 | source(...) | capture.swift:167:18:167:18 | x | $@ | capture.swift:164:13:164:25 | source(...) | source(...) | +| capture.swift:176:18:176:23 | ... .x | capture.swift:173:13:173:25 | source(...) | capture.swift:176:18:176:23 | ... .x | $@ | capture.swift:173:13:173:25 | source(...) | source(...) | +| capture.swift:177:18:177:18 | x | capture.swift:173:13:173:25 | source(...) | capture.swift:177:18:177:18 | x | $@ | capture.swift:173:13:173:25 | source(...) | source(...) | +| capture.swift:185:18:185:23 | ... .x | capture.swift:183:13:183:25 | source(...) | capture.swift:185:18:185:23 | ... .x | $@ | capture.swift:183:13:183:25 | source(...) | source(...) | +| capture.swift:186:18:186:18 | x | capture.swift:183:13:183:25 | source(...) | capture.swift:186:18:186:18 | x | $@ | capture.swift:183:13:183:25 | source(...) | source(...) | +| enums.swift:16:14:16:14 | x | enums.swift:12:21:12:34 | source(...) | enums.swift:16:14:16:14 | x | $@ | enums.swift:12:21:12:34 | source(...) | source(...) | +| enums.swift:27:14:27:14 | x | enums.swift:23:21:23:34 | source(...) | enums.swift:27:14:27:14 | x | $@ | enums.swift:23:21:23:34 | source(...) | source(...) | +| enums.swift:36:10:36:10 | x | enums.swift:34:21:34:34 | source(...) | enums.swift:36:10:36:10 | x | $@ | enums.swift:34:21:34:34 | source(...) | source(...) | +| enums.swift:45:14:45:14 | x | enums.swift:40:21:40:34 | source(...) | enums.swift:45:14:45:14 | x | $@ | enums.swift:40:21:40:34 | source(...) | source(...) | +| enums.swift:50:14:50:14 | x | enums.swift:40:21:40:34 | source(...) | enums.swift:50:14:50:14 | x | $@ | enums.swift:40:21:40:34 | source(...) | source(...) | +| enums.swift:59:10:59:10 | x | enums.swift:57:31:57:44 | source(...) | enums.swift:59:10:59:10 | x | $@ | enums.swift:57:31:57:44 | source(...) | source(...) | +| enums.swift:65:10:65:14 | opt_x | enums.swift:63:31:63:44 | source(...) | enums.swift:65:10:65:14 | opt_x | $@ | enums.swift:63:31:63:44 | source(...) | source(...) | +| enums.swift:76:14:76:14 | x | enums.swift:73:34:73:47 | source(...) | enums.swift:76:14:76:14 | x | $@ | enums.swift:73:34:73:47 | source(...) | source(...) | +| enums.swift:84:14:84:14 | x | enums.swift:73:34:73:47 | source(...) | enums.swift:84:14:84:14 | x | $@ | enums.swift:73:34:73:47 | source(...) | source(...) | +| implicit-self.swift:17:14:17:19 | ... .x | implicit-self.swift:16:18:16:31 | source(...) | implicit-self.swift:17:14:17:19 | ... .x | $@ | implicit-self.swift:16:18:16:31 | source(...) | source(...) | +| implicit-self.swift:23:14:23:14 | x | implicit-self.swift:22:13:22:26 | source(...) | implicit-self.swift:23:14:23:14 | x | $@ | implicit-self.swift:22:13:22:26 | source(...) | source(...) | +| implicit-self.swift:29:14:29:19 | ... .x | implicit-self.swift:28:13:28:26 | source(...) | implicit-self.swift:29:14:29:19 | ... .x | $@ | implicit-self.swift:28:13:28:26 | source(...) | source(...) | +| implicit-self.swift:35:14:35:14 | x | implicit-self.swift:34:18:34:31 | source(...) | implicit-self.swift:35:14:35:14 | x | $@ | implicit-self.swift:34:18:34:31 | source(...) | source(...) | +| implicit-self.swift:41:14:41:23 | ... .x | implicit-self.swift:40:22:40:35 | source(...) | implicit-self.swift:41:14:41:23 | ... .x | $@ | implicit-self.swift:40:22:40:35 | source(...) | source(...) | +| implicit-self.swift:47:14:47:18 | ... .x | implicit-self.swift:46:17:46:30 | source(...) | implicit-self.swift:47:14:47:18 | ... .x | $@ | implicit-self.swift:46:17:46:30 | source(...) | source(...) | +| implicit-self.swift:53:14:53:23 | ... .x | implicit-self.swift:52:17:52:30 | source(...) | implicit-self.swift:53:14:53:23 | ... .x | $@ | implicit-self.swift:52:17:52:30 | source(...) | source(...) | +| implicit-self.swift:59:14:59:18 | ... .x | implicit-self.swift:58:22:58:35 | source(...) | implicit-self.swift:59:14:59:18 | ... .x | $@ | implicit-self.swift:58:22:58:35 | source(...) | source(...) | +| implicit-self.swift:65:14:65:14 | x | implicit-self.swift:64:24:64:37 | source(...) | implicit-self.swift:65:14:65:14 | x | $@ | implicit-self.swift:64:24:64:37 | source(...) | source(...) | +| implicit-self.swift:66:14:66:19 | ... .x | implicit-self.swift:64:24:64:37 | source(...) | implicit-self.swift:66:14:66:19 | ... .x | $@ | implicit-self.swift:64:24:64:37 | source(...) | source(...) | +| implicit-self.swift:72:14:72:14 | x | implicit-self.swift:71:29:71:43 | source(...) | implicit-self.swift:72:14:72:14 | x | $@ | implicit-self.swift:71:29:71:43 | source(...) | source(...) | +| implicit-self.swift:73:14:73:19 | ... .x | implicit-self.swift:71:29:71:43 | source(...) | implicit-self.swift:73:14:73:19 | ... .x | $@ | implicit-self.swift:71:29:71:43 | source(...) | source(...) | +| implicit-self.swift:79:14:79:14 | x | implicit-self.swift:78:24:78:38 | source(...) | implicit-self.swift:79:14:79:14 | x | $@ | implicit-self.swift:78:24:78:38 | source(...) | source(...) | +| implicit-self.swift:80:14:80:19 | ... .x | implicit-self.swift:78:24:78:38 | source(...) | implicit-self.swift:80:14:80:19 | ... .x | $@ | implicit-self.swift:78:24:78:38 | source(...) | source(...) | +| implicit-self.swift:86:14:86:14 | x | implicit-self.swift:85:29:85:43 | source(...) | implicit-self.swift:86:14:86:14 | x | $@ | implicit-self.swift:85:29:85:43 | source(...) | source(...) | +| implicit-self.swift:87:14:87:19 | ... .x | implicit-self.swift:85:29:85:43 | source(...) | implicit-self.swift:87:14:87:19 | ... .x | $@ | implicit-self.swift:85:29:85:43 | source(...) | source(...) | +| test.swift:9:10:9:21 | source(...) | test.swift:9:10:9:21 | source(...) | test.swift:9:10:9:21 | source(...) | $@ | test.swift:9:10:9:21 | source(...) | source(...) | +| test.swift:17:10:17:32 | ... + ... | test.swift:17:10:17:23 | source(...) | test.swift:17:10:17:32 | ... + ... | $@ | test.swift:17:10:17:23 | source(...) | source(...) | +| test.swift:18:10:18:32 | ... + ... | test.swift:18:19:18:32 | source(...) | test.swift:18:10:18:32 | ... + ... | $@ | test.swift:18:19:18:32 | source(...) | source(...) | +| test.swift:20:10:20:33 | StringInterpolationExpr | test.swift:20:13:20:26 | source(...) | test.swift:20:10:20:33 | StringInterpolationExpr | $@ | test.swift:20:13:20:26 | source(...) | source(...) | +| test.swift:21:10:21:33 | StringInterpolationExpr | test.swift:21:18:21:31 | source(...) | test.swift:21:10:21:33 | StringInterpolationExpr | $@ | test.swift:21:18:21:31 | source(...) | source(...) | +| test.swift:22:10:22:38 | StringInterpolationExpr | test.swift:22:18:22:31 | source(...) | test.swift:22:10:22:38 | StringInterpolationExpr | $@ | test.swift:22:18:22:31 | source(...) | source(...) | +| test.swift:27:10:27:35 | ... .0 | test.swift:27:11:27:24 | source(...) | test.swift:27:10:27:35 | ... .0 | $@ | test.swift:27:11:27:24 | source(...) | source(...) | +| test.swift:30:10:30:35 | ... .1 | test.swift:30:19:30:32 | source(...) | test.swift:30:10:30:35 | ... .1 | $@ | test.swift:30:19:30:32 | source(...) | source(...) | +| test.swift:35:10:35:10 | a | test.swift:34:13:34:26 | source(...) | test.swift:35:10:35:10 | a | $@ | test.swift:34:13:34:26 | source(...) | source(...) | +| test.swift:40:10:40:10 | a | test.swift:39:19:39:32 | source(...) | test.swift:40:10:40:10 | a | $@ | test.swift:39:19:39:32 | source(...) | source(...) | +| test.swift:45:10:45:10 | d | test.swift:43:27:43:40 | source(...) | test.swift:45:10:45:10 | d | $@ | test.swift:43:27:43:40 | source(...) | source(...) | +| test.swift:50:10:50:10 | a | test.swift:49:13:49:26 | source(...) | test.swift:50:10:50:10 | a | $@ | test.swift:49:13:49:26 | source(...) | source(...) | +| test.swift:58:10:58:16 | ... .0 | test.swift:57:15:57:28 | source(...) | test.swift:58:10:58:16 | ... .0 | $@ | test.swift:57:15:57:28 | source(...) | source(...) | +| test.swift:69:10:69:23 | ... .0 | test.swift:64:22:64:35 | source(...) | test.swift:69:10:69:23 | ... .0 | $@ | test.swift:64:22:64:35 | source(...) | source(...) | +| test.swift:77:10:77:16 | ... .1 | test.swift:75:21:75:34 | source(...) | test.swift:77:10:77:16 | ... .1 | $@ | test.swift:75:21:75:34 | source(...) | source(...) | +| test.swift:86:10:86:16 | ... .0 | test.swift:85:15:85:29 | source(...) | test.swift:86:10:86:16 | ... .0 | $@ | test.swift:85:15:85:29 | source(...) | source(...) | +| test.swift:101:10:101:10 | x | test.swift:97:13:97:27 | source(...) | test.swift:101:10:101:10 | x | $@ | test.swift:97:13:97:27 | source(...) | source(...) | +| test.swift:107:10:107:10 | y | test.swift:105:13:105:27 | source(...) | test.swift:107:10:107:10 | y | $@ | test.swift:105:13:105:27 | source(...) | source(...) | +| test.swift:110:14:110:14 | x | test.swift:97:13:97:27 | source(...) | test.swift:110:14:110:14 | x | $@ | test.swift:97:13:97:27 | source(...) | source(...) | +| test.swift:111:14:111:14 | y | test.swift:105:13:105:27 | source(...) | test.swift:111:14:111:14 | y | $@ | test.swift:105:13:105:27 | source(...) | source(...) | +| test.swift:123:10:123:16 | ... .0 | test.swift:118:19:118:33 | source(...) | test.swift:123:10:123:16 | ... .0 | $@ | test.swift:118:19:118:33 | source(...) | source(...) | +| test.swift:136:10:136:10 | a | test.swift:128:18:128:32 | source(...) | test.swift:136:10:136:10 | a | $@ | test.swift:128:18:128:32 | source(...) | source(...) | +| test.swift:137:10:137:10 | b | test.swift:128:35:128:49 | source(...) | test.swift:137:10:137:10 | b | $@ | test.swift:128:35:128:49 | source(...) | source(...) | +| test.swift:143:10:143:10 | a | test.swift:142:19:142:33 | source(...) | test.swift:143:10:143:10 | a | $@ | test.swift:142:19:142:33 | source(...) | source(...) | +| test.swift:149:10:149:10 | a | test.swift:148:10:148:24 | source(...) | test.swift:149:10:149:10 | a | $@ | test.swift:148:10:148:24 | source(...) | source(...) | +| test.swift:155:10:155:10 | a | test.swift:154:20:154:34 | source(...) | test.swift:155:10:155:10 | a | $@ | test.swift:154:20:154:34 | source(...) | source(...) | +| test.swift:161:10:161:12 | ... .0 | test.swift:160:23:160:37 | source(...) | test.swift:161:10:161:12 | ... .0 | $@ | test.swift:160:23:160:37 | source(...) | source(...) | +| test.swift:168:10:168:12 | ... .0 | test.swift:167:29:167:43 | source(...) | test.swift:168:10:168:12 | ... .0 | $@ | test.swift:167:29:167:43 | source(...) | source(...) | +| test.swift:176:10:176:10 | a | test.swift:175:25:175:39 | source(...) | test.swift:176:10:176:10 | a | $@ | test.swift:175:25:175:39 | source(...) | source(...) | +| test.swift:177:10:177:10 | b | test.swift:175:52:175:66 | source(...) | test.swift:177:10:177:10 | b | $@ | test.swift:175:52:175:66 | source(...) | source(...) | +| test.swift:185:10:185:10 | x | test.swift:182:13:182:27 | source(...) | test.swift:185:10:185:10 | x | $@ | test.swift:182:13:182:27 | source(...) | source(...) | +| test.swift:186:10:186:10 | y | test.swift:183:13:183:27 | source(...) | test.swift:186:10:186:10 | y | $@ | test.swift:183:13:183:27 | source(...) | source(...) | +| test.swift:196:10:196:45 | await ... | test.swift:196:30:196:44 | source(...) | test.swift:196:10:196:45 | await ... | $@ | test.swift:196:30:196:44 | source(...) | source(...) | +| test.swift:200:10:200:46 | try ... | test.swift:200:31:200:45 | source(...) | test.swift:200:10:200:46 | try ... | $@ | test.swift:200:31:200:45 | source(...) | source(...) | +| test.swift:203:14:203:16 | opt | test.swift:201:37:201:51 | source(...) | test.swift:203:14:203:16 | opt | $@ | test.swift:201:37:201:51 | source(...) | source(...) | +| test.swift:205:10:205:47 | try! ... | test.swift:205:32:205:46 | source(...) | test.swift:205:10:205:47 | try! ... | $@ | test.swift:205:32:205:46 | source(...) | source(...) | +| test.swift:209:10:209:57 | try ... | test.swift:209:42:209:56 | source(...) | test.swift:209:10:209:57 | try ... | $@ | test.swift:209:42:209:56 | source(...) | source(...) | +| test.swift:212:14:212:16 | opt | test.swift:210:48:210:62 | source(...) | test.swift:212:14:212:16 | opt | $@ | test.swift:210:48:210:62 | source(...) | source(...) | +| test.swift:214:10:214:58 | try! ... | test.swift:214:43:214:57 | source(...) | test.swift:214:10:214:58 | try! ... | $@ | test.swift:214:43:214:57 | source(...) | source(...) | +| test.swift:219:10:219:20 | TypeCastExpr | test.swift:218:13:218:27 | source(...) | test.swift:219:10:219:20 | TypeCastExpr | $@ | test.swift:218:13:218:27 | source(...) | source(...) | +| test.swift:220:10:220:21 | TypeCastExpr | test.swift:218:13:218:27 | source(...) | test.swift:220:10:220:21 | TypeCastExpr | $@ | test.swift:218:13:218:27 | source(...) | source(...) | +| test.swift:222:14:222:14 | y | test.swift:218:13:218:27 | source(...) | test.swift:222:14:222:14 | y | $@ | test.swift:218:13:218:27 | source(...) | source(...) | +| test.swift:229:14:229:20 | element | test.swift:227:14:227:28 | source(...) | test.swift:229:14:229:20 | element | $@ | test.swift:227:14:227:28 | source(...) | source(...) | +| test.swift:229:14:229:20 | element | test.swift:227:31:227:45 | source(...) | test.swift:229:14:229:20 | element | $@ | test.swift:227:31:227:45 | source(...) | source(...) | +| test.swift:248:14:248:14 | x | test.swift:243:30:243:44 | source(...) | test.swift:248:14:248:14 | x | $@ | test.swift:243:30:243:44 | source(...) | source(...) | +| test.swift:256:10:256:35 | ... ?? ... | test.swift:254:30:254:44 | source(...) | test.swift:256:10:256:35 | ... ?? ... | $@ | test.swift:254:30:254:44 | source(...) | source(...) | +| test.swift:257:10:257:32 | ... ?? ... | test.swift:254:30:254:44 | source(...) | test.swift:257:10:257:32 | ... ?? ... | $@ | test.swift:254:30:254:44 | source(...) | source(...) | diff --git a/unified/ql/test/library-tests/dataflow/test.ql b/unified/ql/test/library-tests/dataflow/test.ql new file mode 100644 index 000000000000..eccf3ccfd79d --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/test.ql @@ -0,0 +1,15 @@ +/** + * @kind path-problem + * @id unified/test/library-tests/dataflow + * @severity info + * @precision low + */ + +private import unified +private import utils.test.InlineFlowTest +import DefaultFlowTest +import TaintFlow::PathGraph + +from TaintFlow::PathNode source, TaintFlow::PathNode sink +where TaintFlow::flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/unified/ql/test/library-tests/dataflow/test.swift b/unified/ql/test/library-tests/dataflow/test.swift new file mode 100644 index 000000000000..27d103b937bc --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/test.swift @@ -0,0 +1,258 @@ +func source(_ s: String) -> String { return s } + +@discardableResult +func sink(_ s: Any) -> String { return "" } + +func foo() -> Bool { return 5 > 5 } + +func t1() { + sink(source("t1")) // $ hasValueFlow=t1 +} + +extension DefaultStringInterpolation { + mutating func appendInterpolation(escape value: String) {} +} + +func t2() { + sink(source("t2.1") + "blah") // $ hasTaintFlow=t2.1 + sink("blah" + source("t2.2")) // $ hasTaintFlow=t2.2 + + sink("\(source("t2.3")) blah") // $ hasTaintFlow=t2.3 + sink("blah \(source("t2.4"))") // $ hasTaintFlow=t2.4 + sink("blah \(source("t2.5")) blah") // $ hasTaintFlow=t2.5 + sink("blah \(escape: source("t2.6")) blah") // no flow +} + +func t3() { + sink((source("t3.1"), "safe").0) // $ hasValueFlow=t3.1 + sink((source("t3.2"), "safe").1) // no flow + sink(("safe", source("t3.3")).0) // no flow + sink(("safe", source("t3.4")).1) // $ hasValueFlow=t3.4 +} + +func t4() { + let a = source("t4.1") + sink(a) // $ hasValueFlow=t4.1 +} + +func t5() { + let (a, b) = (source("t5.1"), "safe") + sink(a) // $ hasValueFlow=t5.1 + sink(b) // no flow + + let (c, d) = ("safe", source("t5.2")) + sink(c) // no flow + sink(d) // $ hasValueFlow=t5.2 +} + +func t6() { + var a = source("t6.1") + sink(a) // $ hasValueFlow=t6.1 + a = "safe" + sink(a) +} + +func t7() { + var tuple = ("safe", "safe") + tuple.0 = source("t7.1") + sink(tuple.0) // $ hasValueFlow=t7.1 + sink(tuple.1) // no flow +} + +func t8() { + var deep_tuple = (("safe", "safe"), ("safe", "safe")) + deep_tuple.1.0 = source("t8.1") + sink(deep_tuple) // no flow + sink(deep_tuple.0) // no flow + sink(deep_tuple.1) // no flow + sink(deep_tuple.0.1) // no flow + sink(deep_tuple.1.0) // $ hasValueFlow=t8.1 + sink(deep_tuple.1.1) // no flow +} + +func t9() { + var tuple = ("safe", "safe") + (tuple.1, _) = (source("t9.1"), source("t9.2")) + sink(tuple.0) // no flow + sink(tuple.1) // $ hasValueFlow=t9.1 +} + +func t10() { + var tuple = ("safe", "safe") + sink(tuple.0) // no flow + sink(tuple.1) // no flow + + tuple.0 = source("t10.1") + sink(tuple.0) // $ hasValueFlow=t10.1 + sink(tuple.1) // no flow + + tuple = ("safe", "safe") + sink(tuple.0) // no flow + sink(tuple.1) // no flow +} + +func t11() { + var x = "safe" + if foo() { + x = source("t11.1") + } else { + sink(x) // no flow + } + sink(x) // $ hasValueFlow=t11.1 + + var y = "safe" + if foo() { + y = source("t11.2") + } + sink(y) // $ hasValueFlow=t11.2 + + if foo() { + sink(x) // $ hasValueFlow=t11.1 + sink(y) // $ hasValueFlow=t11.2 + } +} + +func t12() { + var tuple = ("safe", "safe") + if foo() { + tuple.0 = source("t12.1") + } else { + sink(tuple.0) // no flow + sink(tuple.1) // no flow + } + sink(tuple.0) // $ hasValueFlow=t12.1 + sink(tuple.1) // no flow +} + +func t13() { + let tuple = (source("t13.1"), source("t13.2")) + var (a, b) = ("safe", "safe") + if foo() { + (a, b) = tuple + } else { + sink(a) // no flow + sink(b) // no flow + } + sink(a) // $ hasValueFlow=t13.1 + sink(b) // $ hasValueFlow=t13.2 +} + +func t14() { + var a = "safe" + a = sink(a) + source("t14.1") + sink(a) // $ hasTaintFlow=t14.1 +} + +func t15() { + var a = "safe" + a += source("t15.1") + sink(a) // $ hasTaintFlow=t15.1 +} + +func t16() { + var a = "safe" + a += sink(a) + source("t16.1") + sink(a) // $ hasTaintFlow=t16.1 +} + +func t17() { + var a = ("safe", "safe") + a.0 = sink(a.0) + source("t17.1") + sink(a.0) // $ hasTaintFlow=t17.1 + sink(a.1) // no flow +} + +func t18() { + var a = ("safe", "safe") + (a.0, _) = (sink(a.0) + source("t18.1"), source("t18.2")) + sink(a.0) // $ hasTaintFlow=t18.1 + sink(a.1) // no flow +} + +func t19() { + var a = "safe" + var b = "safe" + (a, b) = (sink(a) + source("t19.1"), sink(b) + source("t19.2")) + sink(a) // $ hasTaintFlow=t19.1 + sink(b) // $ hasTaintFlow=t19.2 +} + +func t20() { + func foo(x: String, y: String) -> String { return x } + var x = source("t20.1") + var y = source("t20.2") + foo(x: x, y: y) + sink(x) // $ hasValueFlow=t20.1 + sink(y) // $ hasValueFlow=t20.2 +} + +func asyncIdentity(_ s: String) async -> String { return s } + +func throwingIdentity(_ s: String) throws -> String { return s } + +func asyncThrowingIdentity(_ s: String) async throws -> String { return s } + +func t21() async { + sink(await asyncIdentity(source("t21.1"))) // $ hasValueFlow=t21.1 +} + +func t22() throws { + sink(try throwingIdentity(source("t22.1"))) // $ hasValueFlow=t22.1 + let opt = try? throwingIdentity(source("t22.2")) + if let opt { + sink(opt) // $ hasValueFlow=t22.2 + } + sink(try! throwingIdentity(source("t22.3"))) // $ hasValueFlow=t22.3 +} + +func t23() async throws { + sink(try await asyncThrowingIdentity(source("t23.1"))) // $ hasValueFlow=t23.1 + let opt = try? await asyncThrowingIdentity(source("t23.2")) + if let opt { + sink(opt) // $ hasValueFlow=t23.2 + } + sink(try! await asyncThrowingIdentity(source("t23.3"))) // $ hasValueFlow=t23.3 +} + +func t24() { + let x = source("t24.1") + sink(x as String) // $ hasValueFlow=t24.1 + sink(x as! String) // $ hasValueFlow=t24.1 + if let y = x as? String { + sink(y) // $ hasValueFlow=t24.1 + } +} + +func t25() { + let x = [source("t25.1"), source("t25.2")] + for element in x { + sink(element) // $ hasValueFlow=t25.1 hasValueFlow=t25.2 + } + +} + +func t26() { + // TODO: This flow requires reverse-read through the "!" operator + var opt = Optional.some(("x", "y")) + opt!.0 = source("t26.1") + sink(opt!.0) // $ MISSING: hasValueFlow=t26.1 +} + +func t27() { + func getOptional() throws -> String? { + return Optional.some(source("t27.1")) + } + // try? should not double-wrap in Optional + let x = try? getOptional() + if let x { + sink(x) // $ hasValueFlow=t27.1 + } +} + +func t28() { + func getOptional() -> String? { + return Optional.some(source("t28.1")) + } + sink(getOptional() ?? "default") // $ hasValueFlow=t28.1 + sink("safe" ?? getOptional()) // $ hasValueFlow=t28.1 +} diff --git a/unified/ql/test/library-tests/definitions/test.ql b/unified/ql/test/library-tests/definitions/test.ql index 361a9fd6a03c..9479e756bc94 100644 --- a/unified/ql/test/library-tests/definitions/test.ql +++ b/unified/ql/test/library-tests/definitions/test.ql @@ -7,11 +7,11 @@ module DefinitionsTest implements TestSig { string getARelevantTag() { result = "definition" } predicate hasActualResult(Location location, string element, string tag, string value) { - exists(Identifier reference, NameDeclaration definition | + exists(Identifier reference, NameBinding definition | definitionOf(reference, definition, "name") and location = reference.getLocation() and element = reference.toString() and - nameDeclaration(definition, value) and + nameBinding(definition, value) and tag = "definition" ) } diff --git a/unified/ql/test/library-tests/definitions/test.swift b/unified/ql/test/library-tests/definitions/test.swift index 5bbbd59e21e8..d2597898f4f2 100644 --- a/unified/ql/test/library-tests/definitions/test.swift +++ b/unified/ql/test/library-tests/definitions/test.swift @@ -11,8 +11,8 @@ func test() { let local = 2 // name=local2 local // $ definition=local2 Derived.member // $ definition=Derived definition=Base.member - let _: Derived.Nested? // $ definition=Derived definition=Base.Nested + let _: Derived.Nested? // $ definition=Derived definition=Base.Nested definition=Optional } typealias Alias = Derived // $ definition=Derived -let _: Alias.Nested? // $ definition=Alias definition=Base.Nested +let _: Alias.Nested? // $ definition=Alias definition=Base.Nested definition=Optional diff --git a/unified/ql/test/library-tests/local-name-binding/class_scope.swift b/unified/ql/test/library-tests/local-name-binding/class_scope.swift index 5e251b8e6a0d..5c20bc19cbc1 100644 --- a/unified/ql/test/library-tests/local-name-binding/class_scope.swift +++ b/unified/ql/test/library-tests/local-name-binding/class_scope.swift @@ -5,8 +5,8 @@ class A { let b: B = nil // $ access=A.B let c: C = nil // $ access=A.C } - func instance_before() { - print(instanceVar) // $ access=instanceVar + func instance_before() { // implicit-self=instance_before.self + print(instanceVar) // $ access=instanceVar implicit-qualifier=instance_before.self B(); // $ access=A.B let b: B = nil // $ access=A.B let c: C = nil // $ access=A.C @@ -25,8 +25,8 @@ class A { let c: C = nil // $ access=A.C } - func instance_after() { - print(instanceVar) // $ access=instanceVar + func instance_after() { // implicit-self=instance_after.self + print(instanceVar) // $ access=instanceVar implicit-qualifier=instance_after.self B(); // $ access=A.B let b: B = nil // $ access=A.B let c: C = nil // $ access=A.C diff --git a/unified/ql/test/library-tests/local-name-binding/expr_patterns.swift b/unified/ql/test/library-tests/local-name-binding/expr_patterns.swift new file mode 100644 index 000000000000..6bc6cf99686a --- /dev/null +++ b/unified/ql/test/library-tests/local-name-binding/expr_patterns.swift @@ -0,0 +1,40 @@ +func t1() { + let a = 0 // name=a1 + let b = 1 // name=b1 + switch 1 { + case a + b: // $ access=a1 access=b1 + a; // $ access=a1 + b; // $ access=b1 + break + default: + break + } +} + +func t2() { + let b = 1 // name=b1 + class M { + static let b = 1 + } + switch 1 { + case let M.b: // $ access=M + b; // $ access=b1 + break + default: + break + } +} + +func t3() { + let b = 1 // name=b1 + class M { + static let b = 1 + } + switch 1 { + case let true ? M.b : M.b: // $ access=M + b; // $ access=b1 + break + default: + break + } +} diff --git a/unified/ql/test/library-tests/local-name-binding/self_access.swift b/unified/ql/test/library-tests/local-name-binding/self_access.swift new file mode 100644 index 000000000000..da1132f41913 --- /dev/null +++ b/unified/ql/test/library-tests/local-name-binding/self_access.swift @@ -0,0 +1,40 @@ +class C { + func t1() { // implicit-self=t1.self + print(self) // $ access=t1.self + } + + var instanceField = 123 + + func t2() { // implicit-self=t2.self + print(instanceField) // $ access=instanceField implicit-qualifier=t2.self + } + + func t3() { // implicit-self=t3.self + foo(123) { [self] in // $ captured=closure.self access=t3.self // name=closure.self + print(self) // $ access=closure.self + print(instanceField) // $ access=instanceField implicit-qualifier=closure.self + } + } + + func t4() { // implicit-self=t4.self + foo(123) { [weak self] in // $ captured=weak.self access=t4.self // name=weak.self + // Here, 'self' is an Option referring to .some() if it + // has not been GC'ed yet. Swift does not allow unqualified self access here. + + print(self) // $ access=weak.self + + // Unwrap the 'self' optional to get a strong reference. + guard let self else { return } // $ access=weak.self // name=guarded.self + + print(self) // $ access=guarded.self + print(instanceField) // $ access=instanceField implicit-qualifier=guarded.self + } + } + + func t5() { // implicit-self=t5.self + foo(123) { [unowned self] in // $ captured=unowned.self access=t5.self // name=unowned.self + print(self) // $ access=unowned.self + print(instanceField) // $ access=instanceField implicit-qualifier=unowned.self + } + } +} diff --git a/unified/ql/test/library-tests/local-name-binding/test.ql b/unified/ql/test/library-tests/local-name-binding/test.ql index e430f16ba48d..974322851944 100644 --- a/unified/ql/test/library-tests/local-name-binding/test.ql +++ b/unified/ql/test/library-tests/local-name-binding/test.ql @@ -1,27 +1,36 @@ import unified import utils.test.InlineExpectationsTest import utils.test.CommentUtil -import codeql.unified.internal.LocalNameBinding +import codeql.unified.internal.NameBinding module VariableAccessTest implements TestSig { - string getARelevantTag() { result = "access" } + string getARelevantTag() { result = ["access", "implicit-qualifier", "captured"] } additional predicate declAt(LocalName v, string filepath, int line) { v.getLocation().hasLocationInfo(filepath, line, _, _, _) } private predicate decl(LocalName v, string alias) { - exists(string filepath, int line | declAt(v, filepath, line) | - keyValueCommentAt(filepath, line, "name", alias) + exists(string filepath, int line, string tag | + declAt(v, filepath, line) and + if exists(v.getABinding()) + then + // explicit declarations must be annotated with 'name' + tag = "name" + else ( + // implicit declarations have their own tags + v.getName() = "self" and tag = "implicit-self" + ) + | + keyValueCommentAt(filepath, line, tag, alias) or - not keyValueCommentAt(filepath, line, "name", _) and + not keyValueCommentAt(filepath, line, tag, _) and alias = v.getName() ) } private PotentialLocalNameAccess getUniqueDeclarationSite(LocalName name) { - result = - unique(PotentialLocalNameAccess ac | ac.isDeclarationSite() and ac.getLocalName() = name) + result = unique(PotentialLocalNameAccess ac | ac.isBindingSite() and ac.getLocalName() = name) } predicate hasActualResult(Location location, string element, string tag, string value) { @@ -33,6 +42,23 @@ module VariableAccessTest implements TestSig { decl(v, value) and tag = "access" ) + or + exists(UnqualifiedMemberAccess access, LocalName v | + v = access.getImplicitQualifierVariable() and + location = access.getLocation() and + element = access.toString() and + decl(v, value) and + access.isInstanceAccess() and // For now, don't annotate receiver access in static methods. It technically exists, it's just not important yet. + tag = "implicit-qualifier" + ) + or + exists(LocalVariable v | + v.isCaptured() and + location = v.getLocation() and + element = v.toString() and + decl(v, value) and + tag = "captured" + ) } } diff --git a/unified/ql/test/library-tests/local-name-binding/test.swift b/unified/ql/test/library-tests/local-name-binding/test.swift index b5d0469e8a44..6de3cab47e3a 100644 --- a/unified/ql/test/library-tests/local-name-binding/test.swift +++ b/unified/ql/test/library-tests/local-name-binding/test.swift @@ -135,7 +135,7 @@ func t16() throws { // Closure captures func t17() { - let x = 1 // name=x1 + let x = 1 // $ captured=x1 // name=x1 let closure = { // name=closure1 print(x) // $ access=x1 } @@ -354,3 +354,11 @@ func t38(value: E38) { // $ access=E38 print(y) // $ access=y1 } } + +// A non-binding pattern in a guard refers to an existing variable +func t39(value: Int) { + let x = 1 // name=x1 + guard case x = value else { // $ access=value access=x1 + return + } +} diff --git a/unified/ql/test/library-tests/mad/test.expected b/unified/ql/test/library-tests/mad/test.expected new file mode 100644 index 000000000000..15c67b01654f --- /dev/null +++ b/unified/ql/test/library-tests/mad/test.expected @@ -0,0 +1,27 @@ +isSink +| test.swift:9:28:9:33 | string | path-injection | +| test.swift:11:25:11:30 | string | path-injection | +| test.swift:14:25:14:30 | string | path-injection | +| test.swift:18:17:18:22 | string | path-injection | +| test.swift:21:5:21:16 | [receiver arg] ... .md5(...) | weak-hash-input-MD5 | +| test.swift:23:20:23:25 | string | regex-use | +| test.swift:24:20:24:25 | string | regex-use | +| test.swift:71:37:71:49 | encodedOffset | string-length | +| test.swift:72:42:72:54 | encodedOffset | string-length | +| test.swift:76:24:76:36 | encryptionKey | encryption-key | +| test.swift:77:18:77:24 | fileURL | path-injection | +| test.swift:88:24:88:36 | encryptionKey | encryption-key | +| test.swift:89:18:89:24 | fileURL | path-injection | +| test.swift:100:24:100:36 | encryptionKey | encryption-key | +| test.swift:101:18:101:24 | fileURL | path-injection | +| test.swift:107:23:107:34 | seedFilePath | path-injection | +| test.swift:119:29:119:34 | string | path-injection | +isSource +| test.swift:4:5:4:27 | String(...) | remote | +| test.swift:5:5:5:44 | String(...) | remote | +| test.swift:6:5:6:48 | String(...) | remote | +| test.swift:7:5:7:32 | ... .init(...) | remote | +| test.swift:9:5:9:34 | String(...) | local | +| test.swift:10:5:12:24 | String(...) | local | +| test.swift:13:5:15:28 | String(...) | local | +| test.swift:29:29:29:32 | text | local | diff --git a/unified/ql/test/library-tests/mad/test.ql b/unified/ql/test/library-tests/mad/test.ql new file mode 100644 index 000000000000..970aaa22e27f --- /dev/null +++ b/unified/ql/test/library-tests/mad/test.ql @@ -0,0 +1,5 @@ +private import unified + +query predicate isSource = Models::isSource/2; + +query predicate isSink = Models::isSink/2; diff --git a/unified/ql/test/library-tests/mad/test.qlref b/unified/ql/test/library-tests/mad/test.qlref new file mode 100644 index 000000000000..ab6773f15f90 --- /dev/null +++ b/unified/ql/test/library-tests/mad/test.qlref @@ -0,0 +1,2 @@ +query: test.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/unified/ql/test/library-tests/mad/test.swift b/unified/ql/test/library-tests/mad/test.swift new file mode 100644 index 000000000000..fd1af8f38351 --- /dev/null +++ b/unified/ql/test/library-tests/mad/test.swift @@ -0,0 +1,120 @@ +func test(url: URL, string: String) { + String(url) // not a source + + String(contentsOf: url) // $ isSource=remote + String(contentsOf: url, encoding: .utf8) // $ isSource=remote + String(contentsOf: url, usedEncoding: .utf8) // $ isSource=remote + String.init(contentsOf: url) // $ isSource=remote + + String(contentsOfFile: string) // $ isSource=local isSink=path-injection + String( + contentsOfFile: string, // $ isSink=path-injection + encoding: .utf8) // $ isSource=local + String( + contentsOfFile: string, // $ isSink=path-injection + usedEncoding: .utf8) // $ isSource=local + + FileManager.default.createDirectory( + atPath: string, // $ isSink=path-injection + withIntermediateDirectories: true, attributes: nil) + + string.md5() // $ isSink=weak-hash-input-MD5 + + _ = try! Regex(string) // $ isSink=regex-use + _ = try! Regex(string, as: Substring.self) // $ isSink=regex-use + + class TestTextInput: UITextInput { + func shouldChangeText( + in range: UITextRange, + replacementText text: String // $ isSource=local // parameters not detected yet + ) -> Bool { + return true + } + } +} + +class UITextField { + var text: String = "" +} + +class URLSessionConfiguration { + var tlsMaximumSupportedProtocol: Int = 0 + var tlsMinimumSupportedProtocol: Int = 0 + var tlsMaximumSupportedProtocolVersion: Int = 0 + var tlsMinimumSupportedProtocolVersion: Int = 0 +} + +func testProperties( + string: String, + textField: UITextField, + configuration: URLSessionConfiguration +) { + _ = string.count // $ MISSING: isSource=string-length + _ = textField.text // $ MISSING: isSource=local + + configuration.tlsMaximumSupportedProtocol = 0 // $ MISSING: isSink=tls-protocol-version + configuration.tlsMinimumSupportedProtocol = 0 // $ MISSING: isSink=tls-protocol-version + configuration.tlsMaximumSupportedProtocolVersion = 0 // $ MISSING: isSink=tls-protocol-version + configuration.tlsMinimumSupportedProtocolVersion = 0 // $ MISSING: isSink=tls-protocol-version +} + +class Realm { + struct Configuration {} +} + +func testQualifiedConstructors( + encodedOffset: Int, + encryptionKey: String, + fileURL: String, + seedFilePath: String +) { + _ = String.Index(encodedOffset: encodedOffset) // $ isSink=string-length + _ = String.Index.init(encodedOffset: encodedOffset) // $ isSink=string-length + + _ = Realm.Configuration( + deleteRealmIfMigrationNeeded: false, + encryptionKey: encryptionKey, // $ isSink=encryption-key + fileURL: fileURL, // $ isSink=path-injection + inMemoryIdentifier: nil, + migrationBlock: nil, + objectTypes: nil, + readOnly: false, + schemaVersion: 0, + shouldCompactOnLaunch: nil, + syncConfiguration: nil) + + _ = Realm.Configuration.init( + deleteRealmIfMigrationNeeded: false, + encryptionKey: encryptionKey, // $ isSink=encryption-key + fileURL: fileURL, // $ isSink=path-injection + inMemoryIdentifier: nil, + migrationBlock: nil, + objectTypes: nil, + readOnly: false, + schemaVersion: 0, + shouldCompactOnLaunch: nil, + syncConfiguration: nil) + + _ = Realm.Configuration( + deleteRealmIfMigrationNeeded: false, + encryptionKey: encryptionKey, // $ isSink=encryption-key + fileURL: fileURL, // $ isSink=path-injection + inMemoryIdentifier: nil, + migrationBlock: nil, + objectTypes: nil, + readOnly: false, + schemaVersion: 0, + seedFilePath: seedFilePath, // $ isSink=path-injection + shouldCompactOnLaunch: nil, + syncConfiguration: nil) +} + +class Connection { + enum Location { + static func uri(_ path: String, parameters: String) {} + } +} + +func testConnectionLocation(string: String) { + Connection.Location.uri(string, parameters: "") // $ isSink=path-injection +} diff --git a/unified/ql/test/library-tests/static-name-binding/explicit-instance-field-access.swift b/unified/ql/test/library-tests/static-name-binding/explicit-instance-field-access.swift new file mode 100644 index 000000000000..a24ed7466903 --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/explicit-instance-field-access.swift @@ -0,0 +1,55 @@ +private class A { + let x = 123 // name=A.instance.x + + func getX() { + return self.x // not handled by static name binding + } + + static let y = 456 // name=A.type.y + + func getY1() { + return Self.y // $ access=A access=A.type.y + } + + static func getY2() { + return self.y // $ not handled by static name binding + } + + class func z() -> Int { // $ access=Int // name=A.type.z + return 789 + } + + class func getZ() { + return self.z // $ not handled by static name binding + } +} + +private class B : A { // $ access=A + func getX2() { + return self.x // not handled by static name binding + } + + func getY3() { + return Self.y // $ access=B access=A.type.y + } + + static func getY4() { + return self.y // $ not handled by static name binding + } + + class func z() -> Int { // $ access=Int // name=B.type.z + return 789 + } + + class func getZ2() { + return self.z // $ not handled by static name binding + } +} + +private class C { + static let x = 1 + class D { + static let x = 2 + static let foo = Self.x // $ access=C.D access=C.D.x + } +} diff --git a/unified/ql/test/library-tests/static-name-binding/extensions.swift b/unified/ql/test/library-tests/static-name-binding/extensions.swift new file mode 100644 index 000000000000..35c65dcb9a89 --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/extensions.swift @@ -0,0 +1,79 @@ +class A { + func ownMethod() { + ownMethod() // $ access=A.ownMethod + extensionMethod1() // $ access=A.extensionMethod1 + extensionMethod2() // $ access=A.extensionMethod2 + } +} + +extension A { // $ access=A + func extensionMethod1() { // name=A.extensionMethod1 + ownMethod() // $ access=A.ownMethod + extensionMethod1() // $ access=A.extensionMethod1 + extensionMethod2() // $ access=A.extensionMethod2 + } +} + +extension A { // $ access=A + func extensionMethod2() { // name=A.extensionMethod2 + ownMethod() // $ access=A.ownMethod + extensionMethod1() // $ access=A.extensionMethod1 + extensionMethod2() // $ access=A.extensionMethod2 + } +} + +class B { +} + +extension B { // $ access=B + class C { // name=B.C + class D {} // name=B.C.D + } +} +extension B { // $ access=B + class Nested : C { // $ access=B.C + let x : D // $ access=B.C.D + } +} + +// Protocol conformance through extension +protocol Base { + func baseMethod(); + func baseMethodNoImpl(); + func baseMethodDefaultImpl(); +} +extension Base { // $ access=Base + func baseMethodExt() {} // name=BaseImpl.baseMethodExt + func baseMethodDefaultImpl() {} // name=BaseImpl.baseMethodDefaultImpl +} +class X { + func xMethod() { + baseMethod() // $ access=X.baseMethod + baseMethodNoImpl() // $ access=Base.baseMethodNoImpl // with no visible implementation, just resolve to the signature + baseMethodExt() // $ access=BaseImpl.baseMethodExt + + // Static name binding may find multiple targets. Type inference should disambiguate. + baseMethodDefaultImpl() // $ access=Base.baseMethodDefaultImpl access=BaseImpl.baseMethodDefaultImpl + } +} + +extension X : Base { // $ access=X access=Base + func baseMethod() {} // name=X.baseMethod +} + +class Y { + func yMethod() { + baseMethod() // $ access=Y.baseMethod + baseMethodDefaultImpl() // $ access=Y.baseMethodDefaultImpl + } +} +extension Y : Base { // $ access=Y access=Base + func baseMethod() {} // name=Y.baseMethod + func baseMethodDefaultImpl() {} // name=Y.baseMethodDefaultImpl +} + +// Type parameters of the extended type should be in scope in the extension. +class GenericExtensionTarget {} +extension GenericExtensionTarget { // $ access=GenericExtensionTarget + func useTypeParameter(_: ExtensionTypeParameter) {} // $ MISSING: access=ExtensionTypeParameter +} diff --git a/unified/ql/test/library-tests/static-name-binding/generics.swift b/unified/ql/test/library-tests/static-name-binding/generics.swift new file mode 100644 index 000000000000..767cd5b2017b --- /dev/null +++ b/unified/ql/test/library-tests/static-name-binding/generics.swift @@ -0,0 +1,9 @@ +enum GenericEnum { + case novalue + case value(T) // $ access=T +} + +func testGenericEnum() { + let intValue = GenericEnum.value(42) // $ access=GenericEnum access=GenericEnum.value + let stringValue = GenericEnum.novalue // $ access=GenericEnum access=String access=GenericEnum.novalue +} diff --git a/unified/ql/test/library-tests/static-name-binding/inheritance.swift b/unified/ql/test/library-tests/static-name-binding/inheritance.swift index fcf1967d4842..c9dcd3bdf240 100644 --- a/unified/ql/test/library-tests/static-name-binding/inheritance.swift +++ b/unified/ql/test/library-tests/static-name-binding/inheritance.swift @@ -2,18 +2,113 @@ class A { class B { class C {} } + + static func f() {} +} + +class D: A { // $ access=A + static func f(x: Int) {} // $ access=Int +} +class E: D.B { // $ access=D access=A.B + override init() {} +} + +class F { + private init() {} } -class D: A {} // $ access=A -class E: D.B {} // $ access=D access=A.B +class G: F { // $ access=F + public init() {} +} + +class H: G { // $ access=G + public init(x: String) {} // $ access=String +} + +class I: H {} // $ access=H + +class J: I { // $ access=I + convenience init() { + self.init(x: "") + } +} + +protocol P { + init() +} + +final class K: P {} // $ access=P + +struct S: P {} // $ access=P + +class L { + init(x: Int) {} // $ access=Int // name=L.init1 + + init(x: Int, y: Int) {} // $ access=Int // name=L.init2 + + convenience init() { self.init(x: 0) } // name=L.init_conv +} + +class M: L { // $ access=L + override init(x: Int) { super.init(x: 0) } // $ access=Int + + override init(x: Int, y: Int) { super.init(x: 0, y: 0) } // $ access=Int +} + +class N: L { // $ access=L + override init(x: Int) { super.init(x: 0) } // $ access=Int + + convenience init // name=N.init_conv + (a: Int, b: Int, c: Int) // $ access=Int + { + self.init(x: a + b + c) // $ access=a access=b access=c + } +} + +class O: N { // $ access=N + override init(x: Int) { // $ access=Int + super.init(x: x) // $ access=x + } +} // Members of base classes can be accessed through derived classes func t1() { - let x1: D = nil; // $ access=D - let x2: D.B = nil; // $ access=D access=A.B - let x3: D.B.C = nil; // $ access=D access=A.B access=A.B.C + let x1: D = D() // $ access=D + let x2: D.B = D.B() // $ access=D access=A.B + let x3: D.B.C = D.B.C() // $ access=D access=A.B access=A.B.C // The base class of 'E' is itself resolved through inheritance - let x4: E = nil; // $ access=E - let x5: E.C = nil; // $ access=E access=A.B.C + let x4: E = E() // $ access=E + let x5: E.C = E.C() // $ access=E access=A.B.C + + let x6 = A.init() // $ access=A access=A.init + let x7 = D.init() // $ access=D access=A.init + + let x8 = A.f() // $ access=A access=A.f + let x9 = D.f() // $ access=D access=A.f access=D.f -- type inference should filter away the `D.f` target + let x10 = D.f(x: 0) // $ access=D access=A.f access=D.f -- type inference should filter away the `A.f` target + + let x11 = E.init() // $ access=E access=E.init + + let x12 = G.init() // $ access=G access=G.init + + let x13 = H.init(x: "String") // $ access=H access=H.init + + let x14 = I.init(x: "String") // $ access=I access=H.init + + let x15 = J.init() // $ access=J access=J.init access=H.init -- type inference should filter away the `H.init` target + + let x16 = K.init() // $ access=K access=K.init + + let x17 = S.init() // $ access=S access=S.init + + let x18 = M.init(x: 0) // $ access=M access=M.init access=L.init_conv -- type inference should filter away the `L.init_conv` target + + let x19 = M.init() // $ access=M access=M.init access=L.init_conv -- type inference should filter away the `M.init` target + + let x20 = N.init(x: 0) // $ access=N access=N.init access=N.init_conv access=L.init_conv -- type inference should filter away the `N.init_conv` and `L.init_conv` targets + + let x21 = O.init(x: 0) // $ access=O access=O.init access=N.init_conv access=L.init_conv -- type inference should filter away the `N.init_conv` and `L.init_conv` targets + + let x22 = O.init(a: 1, b: 2, c: 3) // $ access=O access=O.init access=N.init_conv access=L.init_conv -- type inference should filter away the `O.init` and `L.init_conv` targets } diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift index 6e807bcf5dba..c2a289cc989a 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target1/File1.swift @@ -1,2 +1,8 @@ let x: A; // $ access=Target1.A let y: Target2.A; // not a valid reference + +public class ScopedExtensionTarget { + func useExtensionFromUnimportedModule() { + target2ExtensionMethod() // $ SPURIOUS: access=Target1.ScopedExtensionTarget.target2ExtensionMethod + } +} diff --git a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift index 8309118a867b..1247d900be40 100644 --- a/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift +++ b/unified/ql/test/library-tests/static-name-binding/package1/Sources/Target2/File3.swift @@ -1,5 +1,11 @@ +import Target1 + public class A {} // name=Target2.A public class B { // name=Target2.B public class C {} // name=Target2.B.C } + +extension ScopedExtensionTarget { // $ access=ScopedExtensionTarget + func target2ExtensionMethod() {} // name=Target1.ScopedExtensionTarget.target2ExtensionMethod +} diff --git a/unified/ql/test/library-tests/static-name-binding/test.ql b/unified/ql/test/library-tests/static-name-binding/test.ql index e6dd7e64f6b3..3f9936d79efd 100644 --- a/unified/ql/test/library-tests/static-name-binding/test.ql +++ b/unified/ql/test/library-tests/static-name-binding/test.ql @@ -1,18 +1,18 @@ import unified import utils.test.InlineExpectationsTest import utils.test.TestUtils -import codeql.unified.internal.StaticNameBinding +import codeql.unified.internal.NameBinding module StaticDeclAccess implements TestSig { string getARelevantTag() { result = "access" } predicate hasActualResult(Location location, string element, string tag, string value) { - exists(NameDeclaration decl, Identifier access | - decl = getStaticBindingTarget(access) and - not access instanceof NameDeclaration and + exists(NameBinding decl, Identifier access | + decl = getStaticBindingTargetFromIdentifier(access) and + not access instanceof NameBinding and location = access.getLocation() and element = access.toString() and - nameDeclaration(decl, value) and + nameBinding(decl, value) and tag = "access" ) } diff --git a/unified/ql/test/library-tests/static-name-binding/test.swift b/unified/ql/test/library-tests/static-name-binding/test.swift index 0fc9ae1c42e2..9b18bc5ebf72 100644 --- a/unified/ql/test/library-tests/static-name-binding/test.swift +++ b/unified/ql/test/library-tests/static-name-binding/test.swift @@ -68,5 +68,9 @@ protocol P { } extension H // $ access=H1 : P { } // $ access=P -extension A.B.C // $ MISSING: access=A access=A.B access=A.B.C (`A.B.C` is currently parsed as a single identifier) - : P { } // $ access=P \ No newline at end of file +extension A.B.C // $ access=A access=A.B access=A.B.C + : P { } // $ access=P + +A() // $ access=A + +A.init() // $ access=A access=A.init \ No newline at end of file diff --git a/unified/ql/test/library-tests/type-inference/basics.swift b/unified/ql/test/library-tests/type-inference/basics.swift new file mode 100644 index 000000000000..029aa728fa53 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/basics.swift @@ -0,0 +1,63 @@ +var topLevelDecl: Int = 0 +0 +topLevelDecl + 1 // $ type=topLevelDecl:Int + +class C { + var myInt: Int + init(n: Int) { + myInt = n // $ type=n:Int field=C.myInt + } + + func getMyInt() -> Int { + return myInt // $ type=myInt:Int field=C.myInt + } +} + +class Derived: C { + init() { + super.init(n: 0) // $ type=super:C target=C.init + } + + func callGetMyInt() -> Int { + let x = getMyInt() // $ type=x:Int target=C.getMyInt + return x + } +} + +class Generic { + var value: T + init(v: T) { + value = v // $ type=v:T field=Generic.value + } + + func getValue() -> T { + return value // $ type=value:T field=Generic.value + } +} + +class GenericDerived: Generic { + init() { + super.init(v: 0) // $ type=super@Generic:Int target=Generic.init + } +} + +func testGeneric() { + let g = Generic(v: 42) // $ type=g@Generic:Int target=Generic.init + let x = g.getValue() // $ type=x:Int target=Generic.getValue + + let gd = GenericDerived() // $ type=gd:GenericDerived target=GenericDerived.init + let y = gd.getValue() // $ type=y:Int target=Generic.getValue +} + +// --- Extensions --- + +extension C { + func doubled() -> Int { + return myInt * 2 // $ type=myInt:Int field=C.myInt + } +} + +func testExtension() { + let obj = C(n: 10) // $ target=C.init + let d = obj.doubled() // $ type=d:Int target=C.doubled +} diff --git a/unified/ql/test/library-tests/type-inference/classes.swift b/unified/ql/test/library-tests/type-inference/classes.swift new file mode 100644 index 000000000000..018314791416 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/classes.swift @@ -0,0 +1,199 @@ +// --- Static methods --- + +class MathUtils { + static func square(x: Int) -> Int { + return x * x // $ type=x:Int + } + + class func cube(x: Int) -> Int { + return x * x * x // $ type=x:Int + } +} + +func testStaticMethods() { + let s = MathUtils.square(x: 4) // $ type=s:Int target=MathUtils.square + let cu = MathUtils.cube(x: 3) // $ type=cu:Int target=MathUtils.cube +} + +// --- Simple overloading --- + +class Overloaded { + func process(_ x: Int) -> Int { // name=process1 + return x + 1 // $ type=x:Int + } + + func process(_ s: String) -> String { // name=process2 + return s // $ type=s:String + } +} + +func testOverloading() { + let o = Overloaded() // $ target=Overloaded.init + let r1 = o.process(42) // $ type=r1:Int target=process1 $ SPURIOUS: target=process2 + let r2 = o.process("hello") // $ type=r2:String target=process2 $ SPURIOUS: target=process1 +} + +// --- Structs and methods --- + +struct Matrix { + var data: [[Int]] + + init(data: [[Int]]) { + self.data = data // $ field=Matrix.data + } + + func rowCount() -> Int { + return data.count // $ field=Matrix.data + } +} + +func testSubscripts() { + let m = Matrix(data: [[1, 2], [3, 4]]) // $ target=Matrix.init + let rc = m.rowCount() // $ type=rc:Int target=Matrix.rowCount +} + +// --- Nested types --- + +class Outer { + class Inner { + var value: Int + + init(value: Int) { + self.value = value // $ type=value:Int field=Outer.Inner.value + } + + func getValue() -> Int { + return self.value // $ type=.value:Int field=Outer.Inner.value + } + } +} + +func testNestedTypes() { + let inner = Outer.Inner(value: 99) // $ type=inner:Inner target=Outer.Inner.init + let v = inner.getValue() // $ type=v:Int target=Outer.Inner.getValue +} + +// --- Method chaining --- + +class Builder { + var value: Int = 0 + + func set(_ v: Int) -> Builder { + value = v // $ type=v:Int field=Builder.value + return self + } + + func add(_ v: Int) -> Builder { + value += v // $ type=v:Int field=Builder.value + return self + } + + func build() -> Int { + return value // $ type=value:Int field=Builder.value + } +} + +func testChaining() { + let b = Builder() // $ type=b:Builder target=Builder.init + let result = b.set(10).add(5).build() // $ type=result:Int target=Builder.set target=Builder.add target=Builder.build +} + +// --- Default parameter values --- + +class Config { + func setup(retries: Int = 3, timeout: Double = 30.0) -> Int { + return retries // $ type=retries:Int + } +} + +func testDefaultParams() { + let cfg = Config() // $ type=cfg:Config target=Config.init + let r1 = cfg.setup() // $ type=r1:Int target=Config.setup + let r2 = cfg.setup(retries: 5) // $ type=r2:Int target=Config.setup + let r3 = cfg.setup(retries: 2, timeout: 60.0) // $ type=r3:Int target=Config.setup +} + +// --- Computed properties accessed via methods --- + +class Temperature { + var celsius: Double + + init(celsius: Double) { + self.celsius = celsius // $ type=celsius:Double field=Temperature.celsius + } + + func toCelsius() -> Double { + return celsius // $ type=celsius:Double field=Temperature.celsius + } + + func toFahrenheit() -> Double { + return celsius * 9.0 / 5.0 + 32.0 // $ type=celsius:Double field=Temperature.celsius + } +} + +func testTemperature() { + let t = Temperature(celsius: 100.0) // $ type=t:Temperature target=Temperature.init + let c = t.toCelsius() // $ type=c:Double target=Temperature.toCelsius + let f = t.toFahrenheit() // $ type=f:Double target=Temperature.toFahrenheit +} + +// --- Inheritance with overriding --- + +class Animal { + func speak() -> String { + return "..." + } +} + +class Dog: Animal { + override init() { + super.init() // $ target=Animal.init + } + + override func speak() -> String { + return "Woof" + } + + func fetch() -> String { + return "ball" + } +} + +class Cat: Animal { + override init() { + super.init() // $ target=Animal.init + } + + override func speak() -> String { + return "Meow" + } +} + +func testOverriding() { + let d = Dog() // $ type=d:Dog target=Dog.init + let ds = d.speak() // $ type=ds:String target=Dog.speak + let df = d.fetch() // $ type=df:String target=Dog.fetch + + let ct = Cat() // $ type=ct:Cat target=Cat.init + let cs = ct.speak() // $ type=cs:String target=Cat.speak +} + +// --- Mutating methods on structs --- + +struct Counter { + var count: Int = 0 + + mutating func increment() { + count += 1 // $ type=count:Int field=Counter.count + } + + func getCount() -> Int { + return count // $ type=count:Int field=Counter.count + } +} + +func testMutating() { + var ctr = Counter() // $ type=ctr:Counter target=Counter.init + ctr.increment() // $ target=Counter.increment + let val = ctr.getCount() // $ type=val:Int target=Counter.getCount +} diff --git a/unified/ql/test/library-tests/type-inference/closures.swift b/unified/ql/test/library-tests/type-inference/closures.swift new file mode 100644 index 000000000000..b9f681bf1713 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/closures.swift @@ -0,0 +1,70 @@ +func testExplicitClosureCall() { + let addOne = { value in // $ type=value:Int + value + 1 + } + let result = addOne(41) // $ target=Function.callAsFunction + _ = result // $ type=result:Int +} + +func callWithIntCallback(_ callback: (Int) -> String) -> String { + callback(42) // $ target=Function.callAsFunction +} + +func callWithGenericCallback(_ callback: (T1) -> Void, _ arg: T1) -> T1 { + callback(arg) // $ target=Function.callAsFunction + return arg +} + +func testImplicitClosureCall() { + let result = callWithIntCallback { value in + String(value) // $ type=value:Int target=String.init + } // $ target=callWithIntCallback + _ = result // $ type=result:String + + let genericResult = callWithGenericCallback( + { value in // $ type=value:Bool + // do nothing + }, false) // $ target=callWithGenericCallback + _ = genericResult // $ type=genericResult:Bool +} + +class ClosureField { + var f: (Int) -> Int // name=f_closure + + func f(_ value: Int) -> Int { // name=f_method + return 0 + } + + var f2: (Int) -> Int // name=f2_closure + + init(f: @escaping (Int) -> Int) { + self.f = f // $ field=f_closure + self.f2 = f // $ field=f2_closure + } + + func callsMethod(_ value: Int) -> Int { + // when both a method and a closure have the same name, the method takes precedence + self.f(value) // $ target=f_method $ SPURIOUS: field=f_closure target=Function.callAsFunction + return self.f2(value) // $ field=f2_closure target=Function.callAsFunction + } +} + +func foo() { + let numbers = [1, 2, 3] // $ type=numbers@Array:Int + + let strings = numbers.map { x in // $ type=x:Int + String(x) // $ target=String.init + } // $ target=Array.map +} + +func apply(_ callback: (T1) -> T2, _ arg: T1) -> T2 { + callback(arg) // $ target=Function.callAsFunction +} + +func testApply() { + let result = apply( + { value in // $ type=value:Int + String(value) // $ target=String.init + }, 42) // $ target=apply + _ = result // $ type=result:String +} diff --git a/unified/ql/test/library-tests/type-inference/constructors.swift b/unified/ql/test/library-tests/type-inference/constructors.swift new file mode 100644 index 000000000000..eb1d4ae49d06 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/constructors.swift @@ -0,0 +1,20 @@ +class C1 { + init(_ x: Int) {} // name=C1.init + + convenience init() { // name=C1.init_conv + self.init(0) // $ target=C1.init $ SPURIOUS: target=C1.init_conv + } +} + +var c11 = C1() // $ type=c11:C1 target=C1.init_conv $ SPURIOUS: target=C1.init +var c12 = C1.init() // $ type=c12:C1 target=C1.init_conv $ SPURIOUS: target=C1.init + +struct S1 { // implicit `init(f1: T, f2: String = "default", f3: (T) -> T = { $0 })` + var f1: T + var f2: String = "default" + var f3: (T) -> T = { $0 } +} + +var s11 = S1(f1: 0) // $ target=S1.init type=s11@S1:Int +var s12 = S1(f1: true, f2: "") // $ target=S1.init type=s12@S1:Bool +S1(f1: 0, f2: "", f3: { x in x }) // $ target=S1.init type=x:Int diff --git a/unified/ql/test/library-tests/type-inference/fields.swift b/unified/ql/test/library-tests/type-inference/fields.swift new file mode 100644 index 000000000000..c45395e07a90 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/fields.swift @@ -0,0 +1,43 @@ +class FieldBase { + var inheritedField: Int = 0 +} + +class FieldContainer: FieldBase { + var storedField: String = "stored" + var genericField: T + + init(genericField: T) { + self.genericField = genericField // $ type=.genericField:T field=FieldContainer.genericField + } + + func getStoredField() -> String { + return storedField // $ type=storedField:String field=FieldContainer.storedField + } + + func getGenericField() -> T { + return self.genericField // $ type=.genericField:T field=FieldContainer.genericField + } +} + +struct StaticFieldContainer { + static var staticField: Bool = true +} + +struct NestedField { + var value: Double +} + +struct OuterField { + var nested: NestedField +} + +func testFieldAccesses() { + let container = FieldContainer(genericField: 42) // $ target=FieldContainer.init + let stored = container.storedField // $ type=.storedField:String field=FieldContainer.storedField + let generic = container.genericField // $ type=.genericField:Int field=FieldContainer.genericField + let inherited = container.inheritedField // $ type=.inheritedField:Int field=FieldBase.inheritedField + let staticValue = StaticFieldContainer.staticField // $ type=.staticField:Bool field=StaticFieldContainer.staticField + + let outer = OuterField(nested: NestedField(value: 1.0)) // $ target=OuterField.init target=NestedField.init + let nestedValue = outer.nested.value // $ type=.nested:NestedField field=OuterField.nested type=.value:Double field=NestedField.value +} diff --git a/unified/ql/test/library-tests/type-inference/generics.swift b/unified/ql/test/library-tests/type-inference/generics.swift new file mode 100644 index 000000000000..99269646e864 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/generics.swift @@ -0,0 +1,317 @@ +// --- Generic functions --- + +func identity(_ x: T) -> T { + return x // $ type=x:T +} + +func makePair(_ a: A, _ b: B) -> (A, B) { + return (a, b) // $ type=a:A +} + +func testGenericFunctions() { + let i = identity(42) // $ type=i:Int target=identity + let s = identity("hello") // $ type=s:String target=identity + let p = makePair(1, "two") // $ target=makePair +} + +// --- Generic structs --- + +struct Pair { + var first: A + var second: B + + init(first: A, second: B) { + self.first = first // $ type=first:A field=Pair.first + self.second = second // $ type=second:B field=Pair.second + } + + func getFirst() -> A { + return first // $ type=first:A field=Pair.first + } + + func getSecond() -> B { + return second // $ type=second:B field=Pair.second + } +} + +func testGenericStruct() { + let p = Pair(first: 1, second: "x") // $ target=Pair.init type=p@Pair:Int type=p@Pair:String + let f = p.getFirst() // $ type=f:Int target=Pair.getFirst + let sc = p.getSecond() // $ type=sc:String target=Pair.getSecond +} + +// --- Enums with associated values --- + +enum Result { + case success(T) + case failure(String) + + func getValue() -> T? { + switch self { + case .success(let v): // $ MISSING: target=Result.success + return v // $ MISSING: type=v:T + case .failure: // $ MISSING: target=Result.failure + return nil + } + } +} + +func testEnum() { + let r = Result.success(42) // $ type=r@Result:Int target=Result.success + let v = r.getValue() // $ target=Result.getValue + + let r2: Result = .success(42) // $ type=r2@Result:Int $ MISSING: target=Result.success + let v2 = r2.getValue() // $ target=Result.getValue +} + +// --- Closures and type inference --- + +func applyTransform(_ value: T, _ transform: (T) -> U) -> U { + let result = transform(value) // $ type=result:U target=Function.callAsFunction + return result +} + +func testClosures() { + let result = applyTransform(5, { x in x * 2 }) // $ target=applyTransform type=result:Int + let strings = applyTransform( // $ type=strings:String + 10, + { + x in String(x) // $ type=x:Int target=String.init + }) // $ target=applyTransform +} + +// --- Generic class with constraints --- + +protocol MyProtocol { + associatedtype MyType + + func foo() -> Self + + func bar() -> MyType +} + +class Wrapper { + var inner: T + + init(_ inner: T) { + self.inner = inner // $ type=inner:T field=Wrapper.inner + } + + func get() -> T { + return inner // $ type=inner:T field=Wrapper.inner + } + + func callFoo() -> T { + let x = inner.foo() // $ field=Wrapper.inner $ MISSING: type=x:T target=MyProtocol.foo + return x + } + + func callBar() -> T.MyType { + let x = inner.bar() // $ field=Wrapper.inner $ MISSING: type=x:MyType target=MyProtocol.bar + return x + } +} + +extension Int: MyProtocol { + typealias MyType = String + + func foo() -> Int { + return self * 2 // $ type=self:Int + } + + func bar() -> String { + return "number" + } +} + +func testConstrainedGeneric() { + let w = Wrapper(42) // $ type=w@Wrapper:Int target=Wrapper.init + let v = w.get() // $ type=v:Int target=Wrapper.get + let z = w.callFoo() // $ type=z:Int target=Wrapper.callFoo + let x = w.callBar() // $ target=Wrapper.callBar $ MISSING: type=x:String +} + +// --- Generics and inheritance --- + +class Base { + var value1: T1 + var value2: T2 + + init(_ v1: T1, _ v2: T2) { + self.value1 = v1 // $ type=v1:T1 field=Base.value1 + self.value2 = v2 // $ type=v2:T2 field=Base.value2 + } + + func getValue1() -> T1 { + return value1 // $ type=value1:T1 field=Base.value1 + } + + func getValue2() -> T2 { + return value2 // $ type=value2:T2 field=Base.value2 + } +} + +class Derived: Base { + init(_ v1: T1, _ v2: T2) { + super.init(v2, v1) // $ type=v2:T2 type=v1:T1 target=Base.init + } + + convenience init(_ v1: T1) { + fatalError() + } +} + +class DerivedDerived: Derived<[D], Bool> { + init(_ v: [D]) { + super.init(v, true) // $ type=v@Array:D target=Derived.init + } + + convenience init() { + fatalError() + } +} + +func foo>(_ value1: T1, _ value2: T2, _ base: T3) -> T3 { + return base +} + +func foo2(_ value1: T1, _ value2: T2, _ base: Base) { + +} + +func bar>(_ value1: A, _ value2: B, _ base: C) -> C { + return base + +} + +func bar2(_ value1: A, _ value2: B, _ base: Base) {} + +func baz>(_ value1: A, _ value2: B, _ base: C) -> C { + return base + +} + +func baz2(_ value1: A, _ value2: B, _ base: Base) {} + +func testDerived() { + let d = Derived(1, "x") // $ type=d@Derived:Int type=d@Derived:String target=Derived.init + let v1 = d.getValue1() // $ type=v1:String target=Base.getValue1 + let v2 = d.getValue2() // $ type=v2:Int target=Base.getValue2 + + let dd = DerivedDerived(["hello"]) // $ type=dd@DerivedDerived:String target=DerivedDerived.init + let vv1 = dd.getValue1() // $ type=vv1:Bool target=Base.getValue1 + let vv2 = dd.getValue2() // $ type=vv2@Array:String target=Base.getValue2 + + let x = foo(false, [2], DerivedDerived([])) // $ target=foo target=DerivedDerived.init type=x@DerivedDerived:Int + + foo2(false, [2], DerivedDerived([])) // $ target=foo2 target=DerivedDerived.init type=DerivedDerived(...)@DerivedDerived:Int + + let y = bar(false, 2, DerivedDerived([])) // $ type=y@DerivedDerived:Int target=bar target=DerivedDerived.init + + bar2(false, 2, DerivedDerived([])) // $ target=bar2 target=DerivedDerived.init type=DerivedDerived(...)@DerivedDerived:Int + + let w = baz(false, 2, Derived(Optional.none)) // $ type=w@Derived.Optional:Int target=baz target=Derived.init field=Optional.none + + baz2(false, 2, Derived(Optional.none)) // $ target=baz2 target=Derived.init field=Optional.none type=Derived(...)@Derived.Optional:Int +} + +// --- Generics and protocols --- + +protocol MyProtocol2 { + associatedtype MyType + + func baz() -> MyType +} + +extension MyProtocol2 { + func foo() -> Self { + return self // $ MISSING: type=self:Self + } +} + +class MyClass { + var value: T + + init(_ value: T) { + self.value = value // $ type=value:T field=MyClass.value + } +} + +extension MyClass: MyProtocol2 { + typealias MyType = T + + func baz() -> T { + return value // $ field=MyClass.value $ MISSING: type=value:T + } +} + +func callFoo(_ c: T) -> T { + return c.foo() // $ MISSING: target=MyProtocol2.foo +} + +func callBaz(_ c: T) -> T.MyType { + return c.baz() // $ MISSING: target=MyProtocol2.baz +} + +func testProtocolExtension() { + let c = MyClass(42) // $ type=c@MyClass:Int target=MyClass.init + let s = c.foo() // $ target=MyProtocol2.foo $ MISSING: type=s@MyClass:Int + let v = c.baz() // $ target=MyClass.baz $ MISSING: type=v:Int + let v2 = callBaz(c) // $ target=callBaz $ MISSING: type=v2:Int +} + +// --- Inherited associated types --- + +protocol BaseAssociatedTypeProtocol { + associatedtype Value + + func baseValue() -> Value +} + +protocol SubAssociatedTypeProtocol: BaseAssociatedTypeProtocol { + func subValue() -> Value +} + +struct StringAssociatedType: SubAssociatedTypeProtocol { + typealias Value = String + + func baseValue() -> String { + return "base" + } + + func subValue() -> String { + return "sub" + } +} + +func getInheritedAssociatedType(_ value: T) -> T.Value { + return value.subValue() // $ MISSING: target=SubAssociatedTypeProtocol.subValue +} + +func testInheritedAssociatedType() { + let value = getInheritedAssociatedType(StringAssociatedType()) // $ target=getInheritedAssociatedType target=StringAssociatedType.init $ MISSING: type=value:String +} + +// --- Primary associated types --- + +protocol PrimaryAssociatedTypeProtocol { + associatedtype Element + + func element() -> Element +} + +struct IntPrimaryAssociatedType: PrimaryAssociatedTypeProtocol { + typealias Element = Int + + func element() -> Int { + return 42 + } +} + +func getPrimaryAssociatedType(_ value: some PrimaryAssociatedTypeProtocol) -> Int { + return value.element() // $ MISSING: target=PrimaryAssociatedTypeProtocol.element +} + +func testPrimaryAssociatedType() { + let value = getPrimaryAssociatedType(IntPrimaryAssociatedType()) // $ type=value:Int target=getPrimaryAssociatedType target=IntPrimaryAssociatedType.init +} diff --git a/unified/ql/test/library-tests/type-inference/key_paths.swift b/unified/ql/test/library-tests/type-inference/key_paths.swift new file mode 100644 index 000000000000..b900888f095d --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/key_paths.swift @@ -0,0 +1,210 @@ +// --- Key-path expressions: basic property access --- + +struct Point { + var x: Double + var y: Double + + init(x: Double, y: Double) { + self.x = x // $ type=x:Double field=Point.x + self.y = y // $ type=y:Double field=Point.y + } + + func distanceFromOrigin() -> Double { + return (x * x + y * y).squareRoot() // $ field=Point.x field=Point.x field=Point.y field=Point.y + } +} + +struct Line { + var start: Point + var end: Point + + init(start: Point, end: Point) { + self.start = start // $ field=Line.start + self.end = end // $ field=Line.end + } +} + +func testBasicKeyPaths() { + let kpX = \Point.x + let kpY = \Point.y + + let p = Point(x: 3.0, y: 4.0) // $ type=p:Point target=Point.init + let xVal = p[keyPath: kpX] // $ MISSING: type=xVal:Double + let yVal = p[keyPath: kpY] // $ MISSING: type=yVal:Double +} + +// --- Key-path expressions: nested property access --- + +func testNestedKeyPaths() { + let kpStartX = \Line.start.x + let kpEndY = \Line.end.y + + let s = Point(x: 0.0, y: 0.0) // $ target=Point.init + let e = Point(x: 1.0, y: 1.0) // $ target=Point.init + let line = Line(start: s, end: e) // $ target=Line.init + let startX = line[keyPath: kpStartX] // $ MISSING: type=startX:Double + let endY = line[keyPath: kpEndY] // $ MISSING: type=endY:Double +} + +// --- Key-path expressions: identity (\.self) --- + +func testSelfKeyPath() { + let kpSelf = \Int.self + let val = 42[keyPath: kpSelf] // $ MISSING: type=val:Int +} + +// --- Key-path expressions: optional chaining --- + +struct Person { + var name: String + var address: Address? + + init(name: String, address: Address?) { + self.name = name // $ type=name:String field=Person.name + self.address = address // $ field=Person.address + } +} + +struct Address { + var city: String + var zip: String + + init(city: String, zip: String) { + self.city = city // $ type=city:String field=Address.city + self.zip = zip // $ type=zip:String field=Address.zip + } +} + +func testOptionalChainingKeyPaths() { + let kpCity = \Person.address?.city + let addr = Address(city: "NYC", zip: "10001") // $ target=Address.init + let person = Person(name: "Alice", address: addr) // $ target=Person.init + + let city = person[keyPath: kpCity] // $ MISSING: type=city@Optional:String +} + +// --- Key-path expressions: used as function arguments --- + +struct Employee { + var name: String + var salary: Int + + init(name: String, salary: Int) { + self.name = name // $ type=name:String field=Employee.name + self.salary = salary // $ type=salary:Int field=Employee.salary + } +} + +func extractField(_ items: [T], keyPath: KeyPath) -> [V] { + return items.map { $0[keyPath: keyPath] } // $ target=Array.map +} + +func testKeyPathAsArgument() { + let e1 = Employee(name: "Alice", salary: 100) // $ target=Employee.init + let e2 = Employee(name: "Bob", salary: 200) // $ target=Employee.init + let employees = [e1, e2] + let names = extractField(employees, keyPath: \.name) // $ target=extractField $ MISSING: target=extractField(_:keyPath:) + let name = names[0] // $ MISSING: type=name:String + let salaries = extractField(employees, keyPath: \.salary) // $ target=extractField $ MISSING: target=extractField(_:keyPath:) + let salary = salaries[0] // $ MISSING: type=salary:Int +} + +// --- Key-path expressions: with generics --- + +class KPContainer { + var item: T + + init(item: T) { + self.item = item // $ type=item:T field=KPContainer.item + } +} + +func testGenericKeyPaths() { + let kp = \KPContainer.item + let c = KPContainer(item: 42) // $ target=KPContainer.init + let v = c[keyPath: kp] // $ MISSING: type=v:Int +} + +// --- Key-path expressions: writable key paths and mutation --- + +func testWritableKeyPaths() { + var p = Point(x: 1.0, y: 2.0) // $ type=p:Point target=Point.init + let kpX = \Point.x + p[keyPath: kpX] = 10.0 + let newX = p[keyPath: kpX] // $ MISSING: type=newX:Double +} + +// --- Key-path expressions: appending key paths --- + +func testKeyPathAppending() { + let kpStart = \Line.start + let kpX = \Point.x + let kpStartX = kpStart.appending(path: kpX) + + let s = Point(x: 5.0, y: 6.0) // $ target=Point.init + let e = Point(x: 7.0, y: 8.0) // $ target=Point.init + let line = Line(start: s, end: e) // $ target=Line.init + let val = line[keyPath: kpStartX] // $ MISSING: type=val:Double +} + +// --- Key-path expressions: shorthand in higher-order functions --- + +func testKeyPathInMap() { + let e1 = Employee(name: "Alice", salary: 100) // $ target=Employee.init + let e2 = Employee(name: "Bob", salary: 200) // $ target=Employee.init + let employees = [e1, e2] + let names = employees.map(\.name) // $ target=Array.map + let name = names[0] // $ MISSING: type=name:String + let salaries = employees.map(\.salary) // $ target=Array.map + let salary = salaries[0] // $ MISSING: type=salary:Int +} + +// --- Key-path expressions: class hierarchy --- + +class Shape2 { + var color: String + + init(color: String) { + self.color = color // $ type=color:String field=Shape2.color + } +} + +class Circle2: Shape2 { + var radius: Double + + init(color: String, radius: Double) { + self.radius = radius // $ type=radius:Double field=Circle2.radius + super.init(color: color) // $ target=Shape2.init + } +} + +func testInheritedKeyPaths() { + let kpColor = \Circle2.color + let kpRadius = \Circle2.radius + + let c = Circle2(color: "red", radius: 5.0) // $ type=c:Circle2 target=Circle2.init + let col = c[keyPath: kpColor] // $ MISSING: type=col:String + let rad = c[keyPath: kpRadius] // $ MISSING: type=rad:Double +} + +// --- Key-path expressions: tuple element access --- + +func testTupleKeyPath() { + let kp0 = \(Int, String).0 + let kp1 = \(Int, String).1 + let tuple = (42, "hello") + let first = tuple[keyPath: kp0] // $ MISSING: type=first:Int + let second = tuple[keyPath: kp1] // $ MISSING: type=second:String +} + +// --- Key-path expressions: array/dictionary subscript --- + +func testSubscriptKeyPaths() { + let kpFirst = \[Int][0] + let arr = [10, 20, 30] + let first = arr[keyPath: kpFirst] // $ MISSING: type=first:Int + + let kpKey = \[String: Int]["x"] + let dict = ["x": 1, "y": 2] + let val = dict[keyPath: kpKey] // $ MISSING: type=val:Int? +} diff --git a/unified/ql/test/library-tests/type-inference/lub.swift b/unified/ql/test/library-tests/type-inference/lub.swift new file mode 100644 index 000000000000..f8f9ed711523 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/lub.swift @@ -0,0 +1,15 @@ +class A { + public init() {} +} + +class B: A { + public override init() {} +} + +class C: A {} + +func foo() { + let b = B() // $ type=b:B target=B.init + let c = C() // $ type=c:C target=C.init + let x = 2 > 3 ? b : c // $ MISSING: type=x:A +} diff --git a/unified/ql/test/library-tests/type-inference/overload_resolution.swift b/unified/ql/test/library-tests/type-inference/overload_resolution.swift new file mode 100644 index 000000000000..5c72e1483af9 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/overload_resolution.swift @@ -0,0 +1,427 @@ +// --- Overload by parameter type --- + +class OverloadByType { + func handle(_ x: Int) -> String { // name=OverloadByType.handle1 + return "int" + } + + func handle(_ x: Double) -> String { // name=OverloadByType.handle2 + return "double" + } + + func handle(_ x: String) -> String { // name=OverloadByType.handle3 + return "string" + } + + func handle(_ x: Bool) -> String { // name=OverloadByType.handle4 + return "bool" + } +} + +func testOverloadByType() { + let o = OverloadByType() // $ target=OverloadByType.init + let r1 = o.handle(42) // $ type=r1:String target=OverloadByType.handle1 $ SPURIOUS: target=OverloadByType.handle2 target=OverloadByType.handle3 target=OverloadByType.handle4 + let r2 = o.handle(3.14) // $ type=r2:String target=OverloadByType.handle2 $ SPURIOUS: target=OverloadByType.handle1 target=OverloadByType.handle3 target=OverloadByType.handle4 + let r3 = o.handle("hi") // $ type=r3:String target=OverloadByType.handle3 $ SPURIOUS: target=OverloadByType.handle1 target=OverloadByType.handle2 target=OverloadByType.handle4 + let r4 = o.handle(true) // $ type=r4:String target=OverloadByType.handle4 $ SPURIOUS: target=OverloadByType.handle1 target=OverloadByType.handle2 target=OverloadByType.handle3 +} + +// --- Overload by argument label --- + +class OverloadByLabel { + func configure(width: Int) -> String { // name=OverloadByLabel.configure1 + return "width" + } + + func configure(height: Int) -> String { // name=OverloadByLabel.configure2 + return "height" + } + + func configure(width: Int, height: Int) -> String { // name=OverloadByLabel.configure3 + return "both" + } + + func configure(size: Int) -> String { // name=OverloadByLabel.configure4 + return "size" + } +} + +func testOverloadByLabel() { + let o = OverloadByLabel() // $ target=OverloadByLabel.init + let r1 = o.configure(width: 10) // $ type=r1:String target=OverloadByLabel.configure1 $ SPURIOUS: target=OverloadByLabel.configure2 target=OverloadByLabel.configure3 target=OverloadByLabel.configure4 + let r2 = o.configure(height: 20) // $ type=r2:String target=OverloadByLabel.configure2 $ SPURIOUS: target=OverloadByLabel.configure1 target=OverloadByLabel.configure3 target=OverloadByLabel.configure4 + let r3 = o.configure(width: 10, height: 20) // $ type=r3:String target=OverloadByLabel.configure3 $ SPURIOUS: target=OverloadByLabel.configure1 target=OverloadByLabel.configure2 target=OverloadByLabel.configure4 + let r4 = o.configure(size: 30) // $ type=r4:String target=OverloadByLabel.configure4 $ SPURIOUS: target=OverloadByLabel.configure1 target=OverloadByLabel.configure2 target=OverloadByLabel.configure3 +} + +// --- Overload by arity (number of parameters) --- + +class OverloadByArity { + func compute() -> Int { // name=OverloadByArity.compute1 + return 0 + } + + func compute(_ x: Int) -> Int { // name=OverloadByArity.compute2 + return x + } + + func compute(_ x: Int, _ y: Int) -> Int { // name=OverloadByArity.compute3 + return x + y + } + + func compute(_ x: Int, _ y: Int, _ z: Int) -> Int { // name=OverloadByArity.compute4 + return x + y + z + } +} + +func testOverloadByArity() { + let o = OverloadByArity() // $ target=OverloadByArity.init + let r0 = o.compute() // $ type=r0:Int target=OverloadByArity.compute1 $ SPURIOUS: target=OverloadByArity.compute2 target=OverloadByArity.compute3 target=OverloadByArity.compute4 + let r1 = o.compute(1) // $ type=r1:Int target=OverloadByArity.compute2 $ SPURIOUS: target=OverloadByArity.compute1 target=OverloadByArity.compute3 target=OverloadByArity.compute4 + let r2 = o.compute(1, 2) // $ type=r2:Int target=OverloadByArity.compute3 $ SPURIOUS: target=OverloadByArity.compute1 target=OverloadByArity.compute2 target=OverloadByArity.compute4 + let r3 = o.compute(1, 2, 3) // $ type=r3:Int target=OverloadByArity.compute4 $ SPURIOUS: target=OverloadByArity.compute1 target=OverloadByArity.compute2 target=OverloadByArity.compute3 +} + +// --- Overload by return type (contextual type) --- + +class OverloadByReturn { + func create() -> Int { // name=OverloadByReturn.create1 + return 0 + } + + func create() -> String { // name=OverloadByReturn.create2 + return "" + } + + func create() -> Double { // name=OverloadByReturn.create3 + return 0.0 + } +} + +func testOverloadByReturn() { + let o = OverloadByReturn() // $ target=OverloadByReturn.init + let r1: Int = o.create() // $ type=r1:Int target=OverloadByReturn.create1 $ SPURIOUS: target=OverloadByReturn.create2 target=OverloadByReturn.create3 + let r2: String = o.create() // $ type=r2:String target=OverloadByReturn.create2 $ SPURIOUS: target=OverloadByReturn.create1 target=OverloadByReturn.create3 + let r3: Double = o.create() // $ type=r3:Double target=OverloadByReturn.create3 $ SPURIOUS: target=OverloadByReturn.create1 target=OverloadByReturn.create2 +} + +// --- Overload: generic vs non-generic (non-generic preferred) --- + +class OverloadGenericVsConcrete { + func process(_ x: Int) -> String { // name=OverloadGenericVsConcrete.process1 + return "concrete" + } + + func process(_ x: T) -> String { // name=OverloadGenericVsConcrete.process2 + return "generic" + } +} + +func testOverloadGenericVsConcrete() { + let o = OverloadGenericVsConcrete() // $ target=OverloadGenericVsConcrete.init + let r1 = o.process(42) // $ type=r1:String target=OverloadGenericVsConcrete.process1 $ SPURIOUS: target=OverloadGenericVsConcrete.process2 + let r2 = o.process("hello") // $ type=r2:String target=OverloadGenericVsConcrete.process2 $ SPURIOUS: target=OverloadGenericVsConcrete.process1 + let r3 = o.process(true) // $ type=r3:String target=OverloadGenericVsConcrete.process2 $ SPURIOUS: target=OverloadGenericVsConcrete.process1 +} + +// --- Overload: free functions by parameter type --- + +func freeOverload(_ x: Int) -> String { // name=freeOverload1 + return "int" +} + +func freeOverload(_ x: String) -> String { // name=freeOverload2 + return "string" +} + +func freeOverload(_ x: Double) -> String { // name=freeOverload3 + return "double" +} + +func testFreeOverload() { + let r1 = freeOverload(42) // $ type=r1:String target=freeOverload1 $ SPURIOUS: target=freeOverload2 target=freeOverload3 + let r2 = freeOverload("hi") // $ type=r2:String target=freeOverload2 $ SPURIOUS: target=freeOverload1 target=freeOverload3 + let r3 = freeOverload(1.5) // $ type=r3:String target=freeOverload3 $ SPURIOUS: target=freeOverload1 target=freeOverload2 +} + +// --- Overload: init overloading --- + +class MultiInit { + var value: String + + init() { // name=MultiInit.init1 + value = "default" // $ field=MultiInit.value + } + + init(int: Int) { // name=MultiInit.init2 + value = "int" // $ field=MultiInit.value + } + + init(str: String) { // name=MultiInit.init3 + value = str // $ type=str:String $ field=MultiInit.value + } + + init(x: Int, y: Int) { // name=MultiInit.init4 + value = "pair" // $ field=MultiInit.value + } + + func getValue() -> String { + return value // $ type=value:String $ field=MultiInit.value + } +} + +func testInitOverloading() { + let m1 = MultiInit() // $ type=m1:MultiInit target=MultiInit.init1 $ SPURIOUS: target=MultiInit.init2 target=MultiInit.init3 target=MultiInit.init4 + let m2 = MultiInit(int: 5) // $ type=m2:MultiInit target=MultiInit.init2 $ SPURIOUS: target=MultiInit.init1 target=MultiInit.init3 target=MultiInit.init4 + let m3 = MultiInit(str: "x") // $ type=m3:MultiInit target=MultiInit.init3 $ SPURIOUS: target=MultiInit.init1 target=MultiInit.init2 target=MultiInit.init4 + let m4 = MultiInit(x: 1, y: 2) // $ type=m4:MultiInit target=MultiInit.init4 $ SPURIOUS: target=MultiInit.init1 target=MultiInit.init2 target=MultiInit.init3 + let v = m1.getValue() // $ type=v:String target=MultiInit.getValue +} + +// --- Overload: static vs instance method --- + +class StaticVsInstance { + func action() -> String { // name=StaticVsInstance.action1 + return "instance" + } + + static func action() -> String { // name=StaticVsInstance.action2 + return "static" + } +} + +func testStaticVsInstance() { + let o = StaticVsInstance() // $ target=StaticVsInstance.init + let r1 = o.action() // $ type=r1:String target=StaticVsInstance.action1 + let r2 = StaticVsInstance.action() // $ type=r2:String target=StaticVsInstance.action2 +} + +// --- Overload: protocol extension default vs concrete implementation --- + +protocol Describable { + func describe() -> String // name=Describable.describe +} + +extension Describable { + func describe() -> String { // name=Describable.describe_default + return "default" + } + + func extra() -> String { + return "extra" + } +} + +class DescribableImpl: Describable { + init() {} // name=DescribableImpl.init + + func describe() -> String { // name=DescribableImpl.describe + return "concrete" + } +} + +func testProtocolExtensionOverload() { + let d = DescribableImpl() // $ target=DescribableImpl.init + let r1 = d.describe() // $ type=r1:String target=DescribableImpl.describe + let r2 = d.extra() // $ type=r2:String target=Describable.extra +} + +// --- Overload: subclass override resolution --- + +class Base { + init() {} + + func action() -> String { + return "base" + } + + func baseOnly() -> String { + return "baseOnly" + } +} + +class Sub: Base { + override init() { + super.init() // $ target=Base.init + } + + override func action() -> String { + return "sub" + } + + func subOnly() -> String { + return "subOnly" + } +} + +class SubSub: Sub { + override init() { + super.init() // $ target=Sub.init + } + + override func action() -> String { + return "subsub" + } +} + +func testOverrideResolution() { + let b = Base() // $ target=Base.init + let rb = b.action() // $ type=rb:String target=Base.action + + let s = Sub() // $ target=Sub.init + let rs = s.action() // $ type=rs:String target=Sub.action + let rbo = s.baseOnly() // $ type=rbo:String target=Base.baseOnly + let rso = s.subOnly() // $ type=rso:String target=Sub.subOnly + + let ss = SubSub() // $ target=SubSub.init + let rss = ss.action() // $ type=rss:String target=SubSub.action + let rbo2 = ss.baseOnly() // $ type=rbo2:String target=Base.baseOnly + let rso2 = ss.subOnly() // $ type=rso2:String target=Sub.subOnly +} + +// --- Overload: by external vs internal parameter names --- + +class LabelVariants { + func send(to target: String) -> String { // name=LabelVariants.send1 + return target // $ type=target:String + } + + func send(from source: String) -> String { // name=LabelVariants.send2 + return source // $ type=source:String + } + + func send(to target: String, from source: String) -> String { // name=LabelVariants.send3 + return target + source + } +} + +func testLabelVariants() { + let o = LabelVariants() // $ target=LabelVariants.init + let r1 = o.send(to: "x") // $ type=r1:String target=LabelVariants.send1 $ SPURIOUS: target=LabelVariants.send2 target=LabelVariants.send3 + let r2 = o.send(from: "y") // $ type=r2:String target=LabelVariants.send2 $ SPURIOUS: target=LabelVariants.send1 target=LabelVariants.send3 + let r3 = o.send(to: "x", from: "y") // $ type=r3:String target=LabelVariants.send3 $ SPURIOUS: target=LabelVariants.send1 target=LabelVariants.send2 +} + +// --- Overload: generic function with different constraint satisfaction --- + +protocol Numeric2: Equatable { + static func zero() -> Self +} + +extension Int: Numeric2 { + static func zero() -> Int { return 0 } +} + +extension Double: Numeric2 { + static func zero() -> Double { return 0.0 } +} + +func constrainedId(_ x: T) -> T { // name=constrainedId1 + return x +} + +func constrainedId(_ x: T) -> T { // name=constrainedId2 + return x +} + +func testConstrainedOverload() { + let r1 = constrainedId(42) // $ type=r1:Int target=constrainedId1 $ SPURIOUS: target=constrainedId2 + let r2 = constrainedId("hello") // $ type=r2:String target=constrainedId2 $ SPURIOUS: target=constrainedId1 +} + +// --- Overload: methods on generic type specialized differently --- + +class Box { + var item: T + + init(_ item: T) { + self.item = item // $ type=item:T field=Box.item + } + + func get() -> T { + return item // $ type=item:T field=Box.item + } + + func replace(_ newItem: T) { + item = newItem // $ type=newItem:T field=Box.item + } +} + +func testGenericMethodResolution() { + let intBox = Box(10) // $ type=intBox@Box:Int target=Box.init + let strBox = Box("hi") // $ type=strBox@Box:String target=Box.init + let v1 = intBox.get() // $ type=v1:Int target=Box.get + let v2 = strBox.get() // $ type=v2:String target=Box.get + intBox.replace(20) // $ target=Box.replace + strBox.replace("bye") // $ target=Box.replace +} + +// --- Overload: convenience init vs designated init --- + +class Widget { + var name: String + var size: Int + + init(name: String, size: Int) { // name=Widget.init1 + self.name = name // $ type=name:String field=Widget.name + self.size = size // $ type=size:Int field=Widget.size + } + + convenience init(name: String) { // name=Widget.init2 + self.init(name: name, size: 1) // $ target=Widget.init1 $ SPURIOUS: target=Widget.init2 target=Widget.init3 + } + + convenience init(size: Int) { // name=Widget.init3 + self.init(name: "default", size: size) // $ target=Widget.init1 $ SPURIOUS: target=Widget.init2 target=Widget.init3 + } +} + +func testConvenienceInit() { + let w1 = Widget(name: "a", size: 5) // $ type=w1:Widget target=Widget.init1 $ SPURIOUS: target=Widget.init2 target=Widget.init3 + let w2 = Widget(name: "b") // $ type=w2:Widget target=Widget.init2 $ SPURIOUS: target=Widget.init1 target=Widget.init3 + let w3 = Widget(size: 10) // $ type=w3:Widget target=Widget.init3 $ SPURIOUS: target=Widget.init1 target=Widget.init2 +} + +// --- Overload: methods with closure parameters of different signatures --- + +class Processor { + func apply(_ f: (Int) -> Int) -> Int { // name=Processor.apply1 + return f(0) // $ target=Function.callAsFunction + } + + func apply(_ f: (String) -> String) -> String { // name=Processor.apply2 + return f("") // $ target=Function.callAsFunction + } + + func apply(_ f: (Int, Int) -> Int) -> Int { // name=Processor.apply3 + return f(0, 0) // $ target=Function.callAsFunction + } +} + +func testClosureOverload() { + let p = Processor() // $ target=Processor.init + let r1 = p.apply({ x in x + 1 }) // $ type=r1:Int target=Processor.apply1 $ SPURIOUS: target=Processor.apply2 target=Processor.apply3 + let r2 = p.apply({ s in s + "!" }) // $ type=r2:String target=Processor.apply2 $ SPURIOUS: target=Processor.apply1 target=Processor.apply3 + let r3 = p.apply({ x, y in x + y }) // $ type=r3:Int target=Processor.apply3 $ SPURIOUS: target=Processor.apply1 target=Processor.apply2 +} + +// --- Overload: subscript-like method overloading --- + +class MultiSubscript { + var data: [Int] = [1, 2, 3] + var dict: [String: Int] = ["a": 1] + + func get(_ index: Int) -> Int { // name=MultiSubscript.get1 + return data[index] // $ field=MultiSubscript.data + } + + func get(_ key: String) -> Int { // name=MultiSubscript.get2 + return dict[key] ?? 0 // $ field=MultiSubscript.dict + } +} + +func testMethodSubscriptLike() { + let ms = MultiSubscript() // $ target=MultiSubscript.init + let r1 = ms.get(0) // $ type=r1:Int target=MultiSubscript.get1 $ SPURIOUS: target=MultiSubscript.get2 + let r2 = ms.get("a") // $ type=r2:Int target=MultiSubscript.get2 $ SPURIOUS: target=MultiSubscript.get1 +} diff --git a/unified/ql/test/library-tests/type-inference/pattern_matching.swift b/unified/ql/test/library-tests/type-inference/pattern_matching.swift new file mode 100644 index 000000000000..58a33aa043ce --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/pattern_matching.swift @@ -0,0 +1,33 @@ +func testSimplePattern(_ pair: (Int, String)) { + let (number, text) = pair + _ = number // $ MISSING: type=number:Int + _ = text // $ MISSING: type=text:String +} + +enum PatternMatch { + case novalue + case value(T) + case nested((T, (Int, String?))) +} + +func testComplexPattern(_ input: PatternMatch) { + switch input { + case .novalue: + break + case .value(let value): + _ = value // $ MISSING: type=value:T + case .nested((let value, (let count, let label?))): + _ = value // $ MISSING: type=value:T + _ = count // $ MISSING: type=count:Int + _ = label // $ MISSING: type=label:String + case .nested((let value, (let count, nil))): + _ = value // $ MISSING: type=value:T + _ = count // $ MISSING: type=count:Int + } +} + +func createValue() -> PatternMatch { + var x = PatternMatch.value(42) // $ type=x@PatternMatch:Int target=PatternMatch.value + var y = PatternMatch.novalue // $ type=y@PatternMatch:String field=PatternMatch.novalue + return PatternMatch.novalue // $ type=.novalue@PatternMatch:Bool field=PatternMatch.novalue +} diff --git a/unified/ql/test/library-tests/type-inference/protocols.swift b/unified/ql/test/library-tests/type-inference/protocols.swift new file mode 100644 index 000000000000..71d284d96816 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/protocols.swift @@ -0,0 +1,104 @@ +// --- Protocols and protocol conformance --- + +protocol Shape { + func area() -> Double +} + +struct Circle: Shape { + var radius: Double + + init(radius: Double) { + self.radius = radius // $ type=radius:Double field=Circle.radius + } + + func area() -> Double { + return 3.14159 * radius * radius // $ type=radius:Double field=Circle.radius + } +} + +struct Rectangle: Shape { + var width: Double + var height: Double + + init(width: Double, height: Double) { + self.width = width // $ type=width:Double field=Rectangle.width + self.height = height // $ type=height:Double field=Rectangle.height + } + + func area() -> Double { + return width * height // $ type=width:Double field=Rectangle.width field=Rectangle.height + } +} + +func testProtocol() { + let c = Circle(radius: 5.0) // $ type=c:Circle target=Circle.init + let a1 = c.area() // $ type=a1:Double target=Circle.area + + let r = Rectangle(width: 3.0, height: 4.0) // $ type=r:Rectangle target=Rectangle.init + let a2 = r.area() // $ type=a2:Double target=Rectangle.area +} + +// --- Protocol with associated types --- + +protocol Container { + associatedtype Item + func getItem() -> Item + func count() -> Int +} + +struct IntContainer: Container { + typealias Item = Int + var items: [Int] + + init(items: [Int]) { + self.items = items // $ field=IntContainer.items + } + + func getItem() -> Int { + return items[0] // $ field=IntContainer.items + } + + func count() -> Int { + return items.count // $ field=IntContainer.items + } +} + +func testAssociatedTypes() { + let ic = IntContainer(items: [1, 2, 3]) // $ type=ic:IntContainer target=IntContainer.init + let item = ic.getItem() // $ type=item:Int target=IntContainer.getItem + let cnt = ic.count() // $ type=cnt:Int target=IntContainer.count +} + +// --- Multiple protocol conformance --- + +protocol Printable { + func display() -> String +} + +protocol Identifiable { + func id() -> Int +} + +class Entity: Printable, Identifiable { + var name: String + var entityId: Int + + init(name: String, entityId: Int) { + self.name = name // $ type=name:String field=Entity.name + self.entityId = entityId // $ type=entityId:Int field=Entity.entityId + } + + func display() -> String { + return name // $ type=name:String field=Entity.name + } + + func id() -> Int { + return entityId // $ type=entityId:Int field=Entity.entityId + } +} + +func testMultipleProtocols() { + let e = Entity(name: "test", entityId: 42) // $ type=e:Entity target=Entity.init + let d = e.display() // $ type=d:String target=Entity.display + let eid = e.id() // $ type=eid:Int target=Entity.id +} diff --git a/unified/ql/test/library-tests/type-inference/tuples.swift b/unified/ql/test/library-tests/type-inference/tuples.swift new file mode 100644 index 000000000000..aeb949c7264e --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/tuples.swift @@ -0,0 +1,5 @@ +let tuple = (1, "hello", true) + +let a = tuple.0 // $ type=a:Int field=Tuple3.0 +let b = tuple.1 // $ type=b:String field=Tuple3.1 +let c = tuple.2 // $ type=c:Bool field=Tuple3.2 diff --git a/unified/ql/test/library-tests/type-inference/type-inference.expected b/unified/ql/test/library-tests/type-inference/type-inference.expected new file mode 100644 index 000000000000..ebd75b0b3ad3 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/type-inference.expected @@ -0,0 +1,2881 @@ +inferCertainType +| basics.swift:1:5:1:16 | topLevelDecl | | {EXTERNAL LOCATION} | Int | +| basics.swift:3:1:3:12 | topLevelDecl | | {EXTERNAL LOCATION} | Int | +| basics.swift:6:7:6:11 | myInt | | {EXTERNAL LOCATION} | Int | +| basics.swift:7:8:7:8 | n | | {EXTERNAL LOCATION} | Int | +| basics.swift:8:5:8:9 | myInt | | {EXTERNAL LOCATION} | Int | +| basics.swift:8:13:8:13 | n | | {EXTERNAL LOCATION} | Int | +| basics.swift:12:12:12:16 | myInt | | {EXTERNAL LOCATION} | Int | +| basics.swift:28:7:28:11 | value | | basics.swift:27:15:27:15 | T | +| basics.swift:29:8:29:8 | v | | basics.swift:27:15:27:15 | T | +| basics.swift:30:5:30:9 | value | | basics.swift:27:15:27:15 | T | +| basics.swift:30:13:30:13 | v | | basics.swift:27:15:27:15 | T | +| basics.swift:34:12:34:16 | value | | basics.swift:27:15:27:15 | T | +| classes.swift:4:22:4:22 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:5:12:5:12 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:5:16:5:16 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:8:19:8:19 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:9:12:9:12 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:9:16:9:16 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:9:20:9:20 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:21:18:21:18 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:22:12:22:12 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:25:18:25:18 | s | | {EXTERNAL LOCATION} | String | +| classes.swift:26:12:26:12 | s | | {EXTERNAL LOCATION} | String | +| classes.swift:39:7:39:10 | data | | {EXTERNAL LOCATION} | Array | +| classes.swift:39:7:39:10 | data | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:39:7:39:10 | data | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:41:8:41:11 | data | | {EXTERNAL LOCATION} | Array | +| classes.swift:41:8:41:11 | data | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:41:8:41:11 | data | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:42:5:42:8 | self | | classes.swift:38:1:48:1 | Matrix | +| classes.swift:42:17:42:20 | data | | {EXTERNAL LOCATION} | Array | +| classes.swift:42:17:42:20 | data | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:42:17:42:20 | data | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:46:12:46:15 | data | | {EXTERNAL LOCATION} | Array | +| classes.swift:46:12:46:15 | data | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:46:12:46:15 | data | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:51:24:51:39 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| classes.swift:51:25:51:30 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| classes.swift:51:33:51:38 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| classes.swift:59:9:59:13 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:61:10:61:14 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:62:7:62:10 | self | | classes.swift:58:3:68:3 | Inner | +| classes.swift:62:20:62:24 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:66:14:66:17 | self | | classes.swift:58:3:68:3 | Inner | +| classes.swift:79:7:79:11 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:81:14:81:14 | v | | {EXTERNAL LOCATION} | Int | +| classes.swift:82:5:82:9 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:82:13:82:13 | v | | {EXTERNAL LOCATION} | Int | +| classes.swift:83:12:83:15 | self | | classes.swift:78:1:94:1 | Builder | +| classes.swift:86:14:86:14 | v | | {EXTERNAL LOCATION} | Int | +| classes.swift:87:5:87:9 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:87:14:87:14 | v | | {EXTERNAL LOCATION} | Int | +| classes.swift:88:12:88:15 | self | | classes.swift:78:1:94:1 | Builder | +| classes.swift:92:12:92:16 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:104:14:104:20 | retries | | {EXTERNAL LOCATION} | Int | +| classes.swift:104:32:104:38 | timeout | | {EXTERNAL LOCATION} | Double | +| classes.swift:105:12:105:18 | retries | | {EXTERNAL LOCATION} | Int | +| classes.swift:119:7:119:13 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:121:8:121:14 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:122:5:122:8 | self | | classes.swift:118:1:132:1 | Temperature | +| classes.swift:122:20:122:26 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:126:12:126:18 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:130:12:130:18 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:184:7:184:11 | count | | {EXTERNAL LOCATION} | Int | +| classes.swift:187:5:187:9 | count | | {EXTERNAL LOCATION} | Int | +| classes.swift:191:12:191:16 | count | | {EXTERNAL LOCATION} | Int | +| closures.swift:2:9:2:14 | addOne | | {EXTERNAL LOCATION} | Function | +| closures.swift:2:9:2:14 | addOne | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:2:18:4:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:2:18:4:5 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:5:18:5:23 | addOne | | {EXTERNAL LOCATION} | Function | +| closures.swift:5:18:5:23 | addOne | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:9:28:9:35 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:9:28:9:35 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:9:28:9:35 | callback | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:9:28:9:35 | callback | Return | {EXTERNAL LOCATION} | String | +| closures.swift:10:5:10:12 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:10:5:10:12 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:10:5:10:12 | callback | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:10:5:10:12 | callback | Return | {EXTERNAL LOCATION} | String | +| closures.swift:13:36:13:43 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:13:36:13:43 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:13:36:13:43 | callback | Args.T0 | closures.swift:13:30:13:31 | T1 | +| closures.swift:13:36:13:43 | callback | Return | {EXTERNAL LOCATION} | Tuple0 | +| closures.swift:13:62:13:64 | arg | | closures.swift:13:30:13:31 | T1 | +| closures.swift:14:5:14:12 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:14:5:14:12 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:14:5:14:12 | callback | Args.T0 | closures.swift:13:30:13:31 | T1 | +| closures.swift:14:5:14:12 | callback | Return | {EXTERNAL LOCATION} | Tuple0 | +| closures.swift:14:14:14:16 | arg | | closures.swift:13:30:13:31 | T1 | +| closures.swift:15:12:15:14 | arg | | closures.swift:13:30:13:31 | T1 | +| closures.swift:19:38:21:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:19:38:21:5 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:25:9:27:9 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:25:9:27:9 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:32:9:32:9 | f | | {EXTERNAL LOCATION} | Function | +| closures.swift:32:9:32:9 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:32:9:32:9 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:32:9:32:9 | f | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:34:14:34:18 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:38:9:38:10 | f2 | | {EXTERNAL LOCATION} | Function | +| closures.swift:38:9:38:10 | f2 | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:38:9:38:10 | f2 | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:38:9:38:10 | f2 | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:41:9:41:12 | self | | closures.swift:31:1:50:1 | ClosureField | +| closures.swift:42:9:42:12 | self | | closures.swift:31:1:50:1 | ClosureField | +| closures.swift:45:24:45:28 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:47:9:47:12 | self | | closures.swift:31:1:50:1 | ClosureField | +| closures.swift:47:16:47:20 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:48:16:48:19 | self | | closures.swift:31:1:50:1 | ClosureField | +| closures.swift:48:24:48:28 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:53:9:53:15 | numbers | | {EXTERNAL LOCATION} | Array | +| closures.swift:53:19:53:27 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| closures.swift:55:19:55:25 | numbers | | {EXTERNAL LOCATION} | Array | +| closures.swift:55:31:57:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:55:31:57:5 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:60:22:60:29 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:60:22:60:29 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:60:22:60:29 | callback | Args.T0 | closures.swift:60:12:60:13 | T1 | +| closures.swift:60:22:60:29 | callback | Return | closures.swift:60:16:60:17 | T2 | +| closures.swift:60:46:60:48 | arg | | closures.swift:60:12:60:13 | T1 | +| closures.swift:61:5:61:12 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:61:5:61:12 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:61:5:61:12 | callback | Args.T0 | closures.swift:60:12:60:13 | T1 | +| closures.swift:61:5:61:12 | callback | Return | closures.swift:60:16:60:17 | T2 | +| closures.swift:61:14:61:16 | arg | | closures.swift:60:12:60:13 | T1 | +| closures.swift:66:9:68:9 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:66:9:68:9 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| constructors.swift:2:12:2:12 | x | | {EXTERNAL LOCATION} | Int | +| constructors.swift:5:9:5:12 | self | | constructors.swift:1:1:7:1 | C1 | +| constructors.swift:13:9:13:10 | f1 | | constructors.swift:12:11:12:11 | T | +| constructors.swift:14:9:14:10 | f2 | | {EXTERNAL LOCATION} | String | +| constructors.swift:15:9:15:10 | f3 | | {EXTERNAL LOCATION} | Function | +| constructors.swift:15:9:15:10 | f3 | Args | {EXTERNAL LOCATION} | Tuple1 | +| constructors.swift:15:9:15:10 | f3 | Args.T0 | constructors.swift:12:11:12:11 | T | +| constructors.swift:15:9:15:10 | f3 | Return | constructors.swift:12:11:12:11 | T | +| constructors.swift:15:24:15:29 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| constructors.swift:20:23:20:32 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| constructors.swift:20:23:20:32 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| fields.swift:2:7:2:20 | inheritedField | | {EXTERNAL LOCATION} | Int | +| fields.swift:6:7:6:17 | storedField | | {EXTERNAL LOCATION} | String | +| fields.swift:7:7:7:18 | genericField | | fields.swift:5:22:5:22 | T | +| fields.swift:9:8:9:19 | genericField | | fields.swift:5:22:5:22 | T | +| fields.swift:10:5:10:8 | self | | fields.swift:5:1:20:1 | FieldContainer | +| fields.swift:10:5:10:8 | self | T | fields.swift:5:22:5:22 | T | +| fields.swift:10:25:10:36 | genericField | | fields.swift:5:22:5:22 | T | +| fields.swift:14:12:14:22 | storedField | | {EXTERNAL LOCATION} | String | +| fields.swift:18:12:18:15 | self | | fields.swift:5:1:20:1 | FieldContainer | +| fields.swift:18:12:18:15 | self | T | fields.swift:5:22:5:22 | T | +| fields.swift:23:14:23:24 | staticField | | {EXTERNAL LOCATION} | Bool | +| fields.swift:27:7:27:11 | value | | {EXTERNAL LOCATION} | Double | +| fields.swift:31:7:31:12 | nested | | fields.swift:26:1:28:1 | NestedField | +| generics.swift:3:20:3:20 | x | | generics.swift:3:15:3:15 | T | +| generics.swift:4:10:4:10 | x | | generics.swift:3:15:3:15 | T | +| generics.swift:7:23:7:23 | a | | generics.swift:7:15:7:15 | A | +| generics.swift:7:31:7:31 | b | | generics.swift:7:18:7:18 | B | +| generics.swift:8:11:8:11 | a | | generics.swift:7:15:7:15 | A | +| generics.swift:8:14:8:14 | b | | generics.swift:7:18:7:18 | B | +| generics.swift:20:7:20:11 | first | | generics.swift:19:13:19:13 | A | +| generics.swift:21:7:21:12 | second | | generics.swift:19:16:19:16 | B | +| generics.swift:23:8:23:12 | first | | generics.swift:19:13:19:13 | A | +| generics.swift:23:18:23:23 | second | | generics.swift:19:16:19:16 | B | +| generics.swift:24:5:24:8 | self | | generics.swift:19:1:35:1 | Pair | +| generics.swift:24:5:24:8 | self | A | generics.swift:19:13:19:13 | A | +| generics.swift:24:5:24:8 | self | B | generics.swift:19:16:19:16 | B | +| generics.swift:24:18:24:22 | first | | generics.swift:19:13:19:13 | A | +| generics.swift:25:5:25:8 | self | | generics.swift:19:1:35:1 | Pair | +| generics.swift:25:5:25:8 | self | A | generics.swift:19:13:19:13 | A | +| generics.swift:25:5:25:8 | self | B | generics.swift:19:16:19:16 | B | +| generics.swift:25:19:25:24 | second | | generics.swift:19:16:19:16 | B | +| generics.swift:29:12:29:16 | first | | generics.swift:19:13:19:13 | A | +| generics.swift:33:12:33:17 | second | | generics.swift:19:16:19:16 | B | +| generics.swift:50:12:50:15 | self | | generics.swift:45:1:57:1 | Result | +| generics.swift:50:12:50:15 | self | T | generics.swift:45:13:45:13 | T | +| generics.swift:63:7:63:8 | r2 | | generics.swift:45:1:57:1 | Result | +| generics.swift:63:7:63:8 | r2 | T | {EXTERNAL LOCATION} | Int | +| generics.swift:64:12:64:13 | r2 | | generics.swift:45:1:57:1 | Result | +| generics.swift:64:12:64:13 | r2 | T | {EXTERNAL LOCATION} | Int | +| generics.swift:69:29:69:33 | value | | generics.swift:69:21:69:21 | T | +| generics.swift:69:41:69:49 | transform | | {EXTERNAL LOCATION} | Function | +| generics.swift:69:41:69:49 | transform | Args | {EXTERNAL LOCATION} | Tuple1 | +| generics.swift:69:41:69:49 | transform | Args.T0 | generics.swift:69:21:69:21 | T | +| generics.swift:69:41:69:49 | transform | Return | generics.swift:69:24:69:24 | U | +| generics.swift:70:16:70:24 | transform | | {EXTERNAL LOCATION} | Function | +| generics.swift:70:16:70:24 | transform | Args | {EXTERNAL LOCATION} | Tuple1 | +| generics.swift:70:16:70:24 | transform | Args.T0 | generics.swift:69:21:69:21 | T | +| generics.swift:70:16:70:24 | transform | Return | generics.swift:69:24:69:24 | U | +| generics.swift:70:26:70:30 | value | | generics.swift:69:21:69:21 | T | +| generics.swift:75:34:75:47 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| generics.swift:75:34:75:47 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| generics.swift:78:5:80:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| generics.swift:78:5:80:5 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| generics.swift:94:7:94:11 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:96:10:96:14 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:97:5:97:8 | self | | generics.swift:93:1:113:1 | Wrapper | +| generics.swift:97:5:97:8 | self | T | generics.swift:93:15:93:27 | T | +| generics.swift:97:18:97:22 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:101:12:101:16 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:105:13:105:17 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:110:13:110:17 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:119:12:119:15 | self | | {EXTERNAL LOCATION} | Int | +| generics.swift:137:7:137:12 | value1 | | generics.swift:136:12:136:13 | T1 | +| generics.swift:138:7:138:12 | value2 | | generics.swift:136:16:136:17 | T2 | +| generics.swift:140:10:140:11 | v1 | | generics.swift:136:12:136:13 | T1 | +| generics.swift:140:20:140:21 | v2 | | generics.swift:136:16:136:17 | T2 | +| generics.swift:141:5:141:8 | self | | generics.swift:136:1:152:1 | Base | +| generics.swift:141:5:141:8 | self | T1 | generics.swift:136:12:136:13 | T1 | +| generics.swift:141:5:141:8 | self | T2 | generics.swift:136:16:136:17 | T2 | +| generics.swift:141:19:141:20 | v1 | | generics.swift:136:12:136:13 | T1 | +| generics.swift:142:5:142:8 | self | | generics.swift:136:1:152:1 | Base | +| generics.swift:142:5:142:8 | self | T1 | generics.swift:136:12:136:13 | T1 | +| generics.swift:142:5:142:8 | self | T2 | generics.swift:136:16:136:17 | T2 | +| generics.swift:142:19:142:20 | v2 | | generics.swift:136:16:136:17 | T2 | +| generics.swift:146:12:146:17 | value1 | | generics.swift:136:12:136:13 | T1 | +| generics.swift:150:12:150:17 | value2 | | generics.swift:136:16:136:17 | T2 | +| generics.swift:155:10:155:11 | v1 | | generics.swift:154:15:154:16 | T1 | +| generics.swift:155:20:155:21 | v2 | | generics.swift:154:19:154:20 | T2 | +| generics.swift:156:16:156:17 | v2 | | generics.swift:154:19:154:20 | T2 | +| generics.swift:156:20:156:21 | v1 | | generics.swift:154:15:154:16 | T1 | +| generics.swift:159:22:159:23 | v1 | | generics.swift:154:15:154:16 | T1 | +| generics.swift:165:10:165:10 | v | | {EXTERNAL LOCATION} | Array | +| generics.swift:165:10:165:10 | v | Element | generics.swift:164:22:164:22 | D | +| generics.swift:166:16:166:16 | v | | {EXTERNAL LOCATION} | Array | +| generics.swift:166:16:166:16 | v | Element | generics.swift:164:22:164:22 | D | +| generics.swift:174:38:174:43 | value1 | | generics.swift:174:10:174:11 | T1 | +| generics.swift:174:52:174:57 | value2 | | generics.swift:174:14:174:15 | T2 | +| generics.swift:174:66:174:69 | base | | generics.swift:174:18:174:33 | T3 | +| generics.swift:175:10:175:13 | base | | generics.swift:174:18:174:33 | T3 | +| generics.swift:178:21:178:26 | value1 | | generics.swift:178:11:178:12 | T1 | +| generics.swift:178:35:178:40 | value2 | | generics.swift:178:15:178:16 | T2 | +| generics.swift:178:49:178:52 | base | | generics.swift:136:1:152:1 | Base | +| generics.swift:178:49:178:52 | base | T1 | generics.swift:178:11:178:12 | T1 | +| generics.swift:178:49:178:52 | base | T2 | generics.swift:178:15:178:16 | T2 | +| generics.swift:182:35:182:40 | value1 | | generics.swift:182:10:182:10 | A | +| generics.swift:182:48:182:53 | value2 | | generics.swift:182:13:182:13 | B | +| generics.swift:182:61:182:64 | base | | generics.swift:182:16:182:30 | C | +| generics.swift:183:10:183:13 | base | | generics.swift:182:16:182:30 | C | +| generics.swift:187:19:187:24 | value1 | | generics.swift:187:11:187:11 | A | +| generics.swift:187:32:187:37 | value2 | | generics.swift:187:14:187:14 | B | +| generics.swift:187:45:187:48 | base | | generics.swift:136:1:152:1 | Base | +| generics.swift:187:45:187:48 | base | T1 | generics.swift:187:11:187:11 | A | +| generics.swift:187:45:187:48 | base | T2 | {EXTERNAL LOCATION} | Array | +| generics.swift:187:45:187:48 | base | T2.Element | generics.swift:187:14:187:14 | B | +| generics.swift:189:34:189:39 | value1 | | generics.swift:189:10:189:10 | A | +| generics.swift:189:47:189:52 | value2 | | generics.swift:189:13:189:13 | B | +| generics.swift:189:60:189:63 | base | | generics.swift:189:16:189:29 | C | +| generics.swift:190:10:190:13 | base | | generics.swift:189:16:189:29 | C | +| generics.swift:194:19:194:24 | value1 | | generics.swift:194:11:194:11 | A | +| generics.swift:194:32:194:37 | value2 | | generics.swift:194:14:194:14 | B | +| generics.swift:194:45:194:48 | base | | generics.swift:136:1:152:1 | Base | +| generics.swift:194:45:194:48 | base | T1 | generics.swift:194:11:194:11 | A | +| generics.swift:194:45:194:48 | base | T2 | {EXTERNAL LOCATION} | Optional | +| generics.swift:194:45:194:48 | base | T2.Wrapped | generics.swift:194:14:194:14 | B | +| generics.swift:201:27:201:35 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:205:22:205:24 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:207:15:207:17 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:228:12:228:15 | self | | generics.swift:220:1:224:1 | MyProtocol2 | +| generics.swift:233:7:233:11 | value | | generics.swift:232:15:232:15 | T | +| generics.swift:235:10:235:14 | value | | generics.swift:232:15:232:15 | T | +| generics.swift:236:5:236:8 | self | | generics.swift:232:1:238:1 | MyClass | +| generics.swift:236:5:236:8 | self | T | generics.swift:232:15:232:15 | T | +| generics.swift:236:18:236:22 | value | | generics.swift:232:15:232:15 | T | +| generics.swift:248:32:248:32 | c | | generics.swift:248:14:248:27 | T | +| generics.swift:249:10:249:10 | c | | generics.swift:248:14:248:27 | T | +| generics.swift:252:32:252:32 | c | | generics.swift:252:14:252:27 | T | +| generics.swift:253:10:253:10 | c | | generics.swift:252:14:252:27 | T | +| generics.swift:287:65:287:69 | value | | generics.swift:287:33:287:60 | T | +| generics.swift:288:10:288:14 | value | | generics.swift:287:33:287:60 | T | +| key_paths.swift:4:7:4:7 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:5:7:5:7 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:7:8:7:8 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:7:19:7:19 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:8:5:8:8 | self | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:8:14:8:14 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:9:5:9:8 | self | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:9:14:9:14 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:13:13:13 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:17:13:17 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:21:13:21 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:25:13:25 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:18:7:18:11 | start | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:19:7:19:9 | end | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:21:8:21:12 | start | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:21:22:21:24 | end | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:22:5:22:8 | self | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:22:18:22:22 | start | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:23:5:23:8 | self | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:23:16:23:18 | end | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:59:7:59:10 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:60:7:60:13 | address | | {EXTERNAL LOCATION} | Optional | +| key_paths.swift:60:7:60:13 | address | Wrapped | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:62:8:62:11 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:62:22:62:28 | address | | {EXTERNAL LOCATION} | Optional | +| key_paths.swift:62:22:62:28 | address | Wrapped | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:63:5:63:8 | self | | key_paths.swift:58:1:66:1 | Person | +| key_paths.swift:63:17:63:20 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:64:5:64:8 | self | | key_paths.swift:58:1:66:1 | Person | +| key_paths.swift:64:20:64:26 | address | | {EXTERNAL LOCATION} | Optional | +| key_paths.swift:64:20:64:26 | address | Wrapped | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:69:7:69:10 | city | | {EXTERNAL LOCATION} | String | +| key_paths.swift:70:7:70:9 | zip | | {EXTERNAL LOCATION} | String | +| key_paths.swift:72:8:72:11 | city | | {EXTERNAL LOCATION} | String | +| key_paths.swift:72:22:72:24 | zip | | {EXTERNAL LOCATION} | String | +| key_paths.swift:73:5:73:8 | self | | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:73:17:73:20 | city | | {EXTERNAL LOCATION} | String | +| key_paths.swift:74:5:74:8 | self | | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:74:16:74:18 | zip | | {EXTERNAL LOCATION} | String | +| key_paths.swift:89:7:89:10 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:90:7:90:12 | salary | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:92:8:92:11 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:92:22:92:27 | salary | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:93:5:93:8 | self | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:93:17:93:20 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:94:5:94:8 | self | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:94:19:94:24 | salary | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:98:27:98:31 | items | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:98:27:98:31 | items | Element | key_paths.swift:98:19:98:19 | T | +| key_paths.swift:98:39:98:45 | keyPath | unknown type parameter 0 | key_paths.swift:98:19:98:19 | T | +| key_paths.swift:98:39:98:45 | keyPath | unknown type parameter 1 | key_paths.swift:98:22:98:22 | V | +| key_paths.swift:99:10:99:14 | items | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:99:10:99:14 | items | Element | key_paths.swift:98:19:98:19 | T | +| key_paths.swift:99:20:99:43 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| key_paths.swift:99:34:99:40 | keyPath | unknown type parameter 0 | key_paths.swift:98:19:98:19 | T | +| key_paths.swift:99:34:99:40 | keyPath | unknown type parameter 1 | key_paths.swift:98:22:98:22 | V | +| key_paths.swift:105:7:105:15 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:105:19:105:26 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:106:28:106:36 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:108:31:108:39 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:115:7:115:10 | item | | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:117:8:117:11 | item | | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:118:5:118:8 | self | | key_paths.swift:114:1:120:1 | KPContainer | +| key_paths.swift:118:5:118:8 | self | T | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:118:17:118:20 | item | | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:155:7:155:15 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:155:19:155:26 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:156:15:156:23 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:158:18:158:26 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:165:7:165:11 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:167:8:167:12 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:168:5:168:8 | self | | key_paths.swift:164:1:170:1 | Shape2 | +| key_paths.swift:168:18:168:22 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:173:7:173:12 | radius | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:175:8:175:12 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:175:23:175:28 | radius | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:176:5:176:8 | self | | key_paths.swift:172:1:179:1 | Circle2 | +| key_paths.swift:176:19:176:24 | radius | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:177:23:177:27 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:204:7:204:9 | arr | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:204:13:204:24 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:205:15:205:17 | arr | | {EXTERNAL LOCATION} | Array | +| overload_resolution.swift:4:17:4:17 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:8:17:8:17 | x | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:12:17:12:17 | x | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:16:17:16:17 | x | | {EXTERNAL LOCATION} | Bool | +| overload_resolution.swift:32:18:32:22 | width | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:36:18:36:23 | height | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:40:18:40:22 | width | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:40:30:40:35 | height | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:44:18:44:21 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:64:18:64:18 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:65:12:65:12 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:68:18:68:18 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:68:28:68:28 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:69:12:69:12 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:69:16:69:16 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:72:18:72:18 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:72:28:72:28 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:72:38:72:38 | z | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:73:12:73:12 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:73:16:73:16 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:73:20:73:20 | z | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:103:7:103:8 | r1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:104:7:104:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:105:7:105:8 | r3 | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:111:18:111:18 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:115:21:115:21 | x | | overload_resolution.swift:115:16:115:16 | T | +| overload_resolution.swift:129:21:129:21 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:133:21:133:21 | x | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:137:21:137:21 | x | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:150:7:150:11 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:153:5:153:9 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:156:8:156:10 | int | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:157:5:157:9 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:160:8:160:10 | str | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:161:5:161:9 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:161:13:161:15 | str | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:164:8:164:8 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:164:16:164:16 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:165:5:165:9 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:169:12:169:16 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:285:16:285:21 | target | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:286:12:286:17 | target | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:289:18:289:23 | source | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:290:12:290:17 | source | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:293:16:293:21 | target | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:293:37:293:42 | source | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:294:12:294:17 | target | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:294:21:294:26 | source | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:319:35:319:35 | x | | overload_resolution.swift:319:20:319:30 | T | +| overload_resolution.swift:320:10:320:10 | x | | overload_resolution.swift:319:20:319:30 | T | +| overload_resolution.swift:323:36:323:36 | x | | overload_resolution.swift:323:20:323:31 | T | +| overload_resolution.swift:324:10:324:10 | x | | overload_resolution.swift:323:20:323:31 | T | +| overload_resolution.swift:335:7:335:10 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:337:10:337:13 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:338:5:338:8 | self | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:338:5:338:8 | self | T | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:338:17:338:20 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:342:12:342:15 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:345:18:345:24 | newItem | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:346:5:346:8 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:346:12:346:18 | newItem | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:362:7:362:10 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:363:7:363:10 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:365:8:365:11 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:365:22:365:25 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:366:5:366:8 | self | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:366:17:366:20 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:367:5:367:8 | self | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:367:17:367:20 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:370:20:370:23 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:371:5:371:8 | self | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:371:21:371:24 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:374:20:374:23 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:375:5:375:8 | self | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:375:38:375:41 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:388:16:388:16 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:388:16:388:16 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:388:16:388:16 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:388:16:388:16 | f | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:389:12:389:12 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:389:12:389:12 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:389:12:389:12 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:389:12:389:12 | f | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:392:16:392:16 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:392:16:392:16 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:392:16:392:16 | f | Args.T0 | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:392:16:392:16 | f | Return | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:393:12:393:12 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:393:12:393:12 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:393:12:393:12 | f | Args.T0 | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:393:12:393:12 | f | Return | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:396:16:396:16 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:396:16:396:16 | f | Args | {EXTERNAL LOCATION} | Tuple2 | +| overload_resolution.swift:396:16:396:16 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:396:16:396:16 | f | Args.T1 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:396:16:396:16 | f | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:397:12:397:12 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:397:12:397:12 | f | Args | {EXTERNAL LOCATION} | Tuple2 | +| overload_resolution.swift:397:12:397:12 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:397:12:397:12 | f | Args.T1 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:397:12:397:12 | f | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:403:20:403:33 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:403:20:403:33 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:404:20:404:35 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:404:20:404:35 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:405:20:405:36 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:411:7:411:10 | data | | {EXTERNAL LOCATION} | Array | +| overload_resolution.swift:411:7:411:10 | data | Element | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:411:21:411:29 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| overload_resolution.swift:412:7:412:10 | dict | | {EXTERNAL LOCATION} | Dictionary | +| overload_resolution.swift:412:7:412:10 | dict | Key | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:412:7:412:10 | dict | Value | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:414:14:414:18 | index | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:415:12:415:15 | data | | {EXTERNAL LOCATION} | Array | +| overload_resolution.swift:415:12:415:15 | data | Element | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:415:17:415:21 | index | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:418:14:418:16 | key | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:419:12:419:15 | dict | | {EXTERNAL LOCATION} | Dictionary | +| overload_resolution.swift:419:12:419:15 | dict | Key | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:419:12:419:15 | dict | Value | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:419:17:419:19 | key | | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:1:26:1:29 | pair | | {EXTERNAL LOCATION} | Tuple2 | +| pattern_matching.swift:1:26:1:29 | pair | T0 | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:1:26:1:29 | pair | T1 | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:2:7:2:20 | TupleExpr | | {EXTERNAL LOCATION} | Tuple2 | +| pattern_matching.swift:2:7:2:20 | TupleExpr | T0 | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:2:7:2:20 | TupleExpr | T1 | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:2:24:2:27 | pair | | {EXTERNAL LOCATION} | Tuple2 | +| pattern_matching.swift:2:24:2:27 | pair | T0 | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:2:24:2:27 | pair | T1 | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:8:8:8:14 | novalue | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:8:8:8:14 | novalue | T | pattern_matching.swift:7:19:7:19 | T | +| pattern_matching.swift:13:30:13:34 | input | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:13:30:13:34 | input | T | pattern_matching.swift:13:25:13:25 | T | +| pattern_matching.swift:14:10:14:14 | input | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:14:10:14:14 | input | T | pattern_matching.swift:13:25:13:25 | T | +| protocols.swift:8:7:8:12 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:10:8:10:13 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:11:5:11:8 | self | | protocols.swift:7:1:17:1 | Circle | +| protocols.swift:11:19:11:24 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:15:22:15:27 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:15:31:15:36 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:20:7:20:11 | width | | {EXTERNAL LOCATION} | Double | +| protocols.swift:21:7:21:12 | height | | {EXTERNAL LOCATION} | Double | +| protocols.swift:23:8:23:12 | width | | {EXTERNAL LOCATION} | Double | +| protocols.swift:23:23:23:28 | height | | {EXTERNAL LOCATION} | Double | +| protocols.swift:24:5:24:8 | self | | protocols.swift:19:1:31:1 | Rectangle | +| protocols.swift:24:18:24:22 | width | | {EXTERNAL LOCATION} | Double | +| protocols.swift:25:5:25:8 | self | | protocols.swift:19:1:31:1 | Rectangle | +| protocols.swift:25:19:25:24 | height | | {EXTERNAL LOCATION} | Double | +| protocols.swift:29:12:29:16 | width | | {EXTERNAL LOCATION} | Double | +| protocols.swift:29:20:29:25 | height | | {EXTERNAL LOCATION} | Double | +| protocols.swift:51:7:51:11 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:51:7:51:11 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:53:8:53:12 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:53:8:53:12 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:54:5:54:8 | self | | protocols.swift:49:1:64:1 | IntContainer | +| protocols.swift:54:18:54:22 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:54:18:54:22 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:58:12:58:16 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:58:12:58:16 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:62:12:62:16 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:62:12:62:16 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:67:32:67:40 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| protocols.swift:83:7:83:10 | name | | {EXTERNAL LOCATION} | String | +| protocols.swift:84:7:84:14 | entityId | | {EXTERNAL LOCATION} | Int | +| protocols.swift:86:8:86:11 | name | | {EXTERNAL LOCATION} | String | +| protocols.swift:86:22:86:29 | entityId | | {EXTERNAL LOCATION} | Int | +| protocols.swift:87:5:87:8 | self | | protocols.swift:82:1:98:1 | Entity | +| protocols.swift:87:17:87:20 | name | | {EXTERNAL LOCATION} | String | +| protocols.swift:88:5:88:8 | self | | protocols.swift:82:1:98:1 | Entity | +| protocols.swift:88:21:88:28 | entityId | | {EXTERNAL LOCATION} | Int | +| protocols.swift:92:12:92:15 | name | | {EXTERNAL LOCATION} | String | +| protocols.swift:96:12:96:19 | entityId | | {EXTERNAL LOCATION} | Int | +| type_alias.swift:2:9:2:13 | value | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:3:10:3:14 | value | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:4:9:4:12 | self | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:4:9:4:12 | self | T | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:4:22:4:26 | value | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:7:16:7:19 | self | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:7:16:7:19 | self | T | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:17:13:17:14 | a1 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:17:13:17:14 | a1 | T | {EXTERNAL LOCATION} | Int | +| type_alias.swift:17:27:17:28 | a2 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:17:27:17:28 | a2 | T | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:17:27:17:28 | a2 | T.T0 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:17:27:17:28 | a2 | T.T1 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:17:47:17:48 | a3 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:17:47:17:48 | a3 | T | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:17:47:17:48 | a3 | T.T0 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:17:47:17:48 | a3 | T.T0.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:17:47:17:48 | a3 | T.T1 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:17:47:17:48 | a3 | T.T1.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:18:14:18:15 | a1 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:18:14:18:15 | a1 | T | {EXTERNAL LOCATION} | Int | +| type_alias.swift:19:14:19:15 | a2 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:19:14:19:15 | a2 | T | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:19:14:19:15 | a2 | T.T0 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:19:14:19:15 | a2 | T.T1 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:20:14:20:15 | a3 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:20:14:20:15 | a3 | T | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:20:14:20:15 | a3 | T.T0 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:20:14:20:15 | a3 | T.T0.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:20:14:20:15 | a3 | T.T1 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:20:14:20:15 | a3 | T.T1.Wrapped | {EXTERNAL LOCATION} | String | +| type_constraints.swift:3:29:3:29 | a | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:3:37:3:37 | b | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:4:6:4:6 | a | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:4:10:4:10 | b | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:4:21:4:21 | a | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:4:39:4:39 | b | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:7:17:7:17 | a | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:7:25:7:25 | b | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:8:6:8:6 | a | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:8:10:8:10 | b | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:8:21:8:21 | a | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:8:39:8:39 | b | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:29:7:29:9 | tag | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:30:7:30:14 | priority | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:32:8:32:10 | tag | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:32:21:32:28 | priority | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:33:5:33:8 | self | | type_constraints.swift:28:1:44:1 | TaggedItem | +| type_constraints.swift:33:16:33:18 | tag | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:34:5:34:8 | self | | type_constraints.swift:28:1:44:1 | TaggedItem | +| type_constraints.swift:34:21:34:28 | priority | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:38:12:38:14 | tag | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:42:12:42:19 | priority | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:46:48:46:51 | item | | type_constraints.swift:46:18:46:43 | T | +| type_constraints.swift:47:10:47:13 | item | | type_constraints.swift:46:18:46:43 | T | +| type_constraints.swift:50:30:50:30 | a | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:50:38:50:38 | b | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:52:10:52:10 | a | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:52:15:52:15 | b | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:64:7:64:11 | first | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:65:7:65:12 | second | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:67:8:67:12 | first | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:67:18:67:23 | second | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:68:5:68:8 | self | | type_constraints.swift:63:1:79:1 | SortedPair | +| type_constraints.swift:68:5:68:8 | self | T | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:68:5:68:8 | self | U | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:68:18:68:22 | first | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:69:5:69:8 | self | | type_constraints.swift:63:1:79:1 | SortedPair | +| type_constraints.swift:69:5:69:8 | self | T | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:69:5:69:8 | self | U | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:69:19:69:24 | second | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:72:28:72:32 | other | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:73:12:73:16 | first | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:73:20:73:24 | other | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:76:29:76:33 | other | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:77:12:77:17 | second | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:77:21:77:25 | other | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:96:7:96:11 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:96:7:96:11 | items | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:98:8:98:12 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:98:8:98:12 | items | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:99:5:99:8 | self | | type_constraints.swift:94:1:105:1 | IntArray | +| type_constraints.swift:99:18:99:22 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:99:18:99:22 | items | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:103:12:103:16 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:103:12:103:16 | items | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:109:7:109:11 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:109:7:109:11 | items | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:111:8:111:12 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:111:8:111:12 | items | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:112:5:112:8 | self | | type_constraints.swift:107:1:118:1 | StringArray | +| type_constraints.swift:112:18:112:22 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:112:18:112:22 | items | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:116:12:116:16 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:116:12:116:16 | items | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:120:45:120:53 | container | | type_constraints.swift:120:19:120:37 | C | +| type_constraints.swift:121:10:121:18 | container | | type_constraints.swift:120:19:120:37 | C | +| type_constraints.swift:124:45:124:53 | container | | type_constraints.swift:124:19:124:37 | C | +| type_constraints.swift:125:10:125:18 | container | | type_constraints.swift:124:19:124:37 | C | +| type_constraints.swift:129:28:129:35 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:130:31:130:45 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:138:7:138:11 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:140:8:140:12 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:141:5:141:8 | self | | type_constraints.swift:137:1:147:1 | Vehicle | +| type_constraints.swift:141:18:141:22 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:150:17:150:21 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:151:23:151:27 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:164:17:164:21 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:165:23:165:27 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:177:36:177:36 | v | | type_constraints.swift:177:22:177:31 | T | +| type_constraints.swift:178:10:178:10 | v | | type_constraints.swift:177:22:177:31 | T | +| type_constraints.swift:193:18:193:20 | lhs | | type_constraints.swift:192:1:194:1 | Summable | +| type_constraints.swift:193:29:193:31 | rhs | | type_constraints.swift:192:1:194:1 | Summable | +| type_constraints.swift:201:7:201:12 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:201:7:201:12 | values | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:203:8:203:13 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:203:8:203:13 | values | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:204:5:204:8 | self | | type_constraints.swift:200:1:210:1 | Accumulator | +| type_constraints.swift:204:5:204:8 | self | T | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:204:19:204:24 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:204:19:204:24 | values | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:208:12:208:17 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:208:12:208:17 | values | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:220:35:222:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| type_constraints.swift:227:36:227:44 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:236:33:236:37 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:236:33:236:37 | items | Element | type_constraints.swift:236:18:236:28 | T | +| type_constraints.swift:237:12:237:16 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:237:12:237:16 | items | Element | type_constraints.swift:236:18:236:28 | T | +| type_constraints.swift:237:23:237:27 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:237:23:237:27 | items | Element | type_constraints.swift:236:18:236:28 | T | +| type_constraints.swift:240:44:240:44 | a | | type_constraints.swift:240:14:240:25 | A | +| type_constraints.swift:240:52:240:52 | b | | type_constraints.swift:240:28:240:39 | B | +| type_constraints.swift:247:24:247:32 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:248:24:248:38 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:254:29:254:33 | value | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:254:43:254:47 | lower | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:254:57:254:61 | upper | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:255:6:255:10 | value | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:255:14:255:18 | lower | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:255:29:255:33 | lower | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:256:6:256:10 | value | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:256:14:256:18 | upper | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:256:29:256:33 | upper | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:257:10:257:14 | value | | type_constraints.swift:254:12:254:24 | T | +inferType +| basics.swift:1:5:1:16 | topLevelDecl | | {EXTERNAL LOCATION} | Int | +| basics.swift:1:25:1:25 | 0 | | {EXTERNAL LOCATION} | Int | +| basics.swift:2:1:2:1 | 0 | | {EXTERNAL LOCATION} | Int | +| basics.swift:3:1:3:12 | topLevelDecl | | {EXTERNAL LOCATION} | Int | +| basics.swift:3:1:3:16 | ... + ... | | {EXTERNAL LOCATION} | Int | +| basics.swift:3:16:3:16 | 1 | | {EXTERNAL LOCATION} | Int | +| basics.swift:6:7:6:11 | myInt | | {EXTERNAL LOCATION} | Int | +| basics.swift:7:8:7:8 | n | | {EXTERNAL LOCATION} | Int | +| basics.swift:7:16:9:3 | Block | | {EXTERNAL LOCATION} | Int | +| basics.swift:8:5:8:9 | myInt | | {EXTERNAL LOCATION} | Int | +| basics.swift:8:5:8:13 | ... = ... | | {EXTERNAL LOCATION} | Int | +| basics.swift:8:13:8:13 | n | | {EXTERNAL LOCATION} | Int | +| basics.swift:11:26:13:3 | Block | | {EXTERNAL LOCATION} | Int | +| basics.swift:12:12:12:16 | myInt | | {EXTERNAL LOCATION} | Int | +| basics.swift:17:10:19:3 | Block | | basics.swift:5:1:14:1 | C | +| basics.swift:18:5:18:9 | super | | basics.swift:5:1:14:1 | C | +| basics.swift:18:5:18:20 | ... .init(...) | | basics.swift:5:1:14:1 | C | +| basics.swift:18:19:18:19 | 0 | | {EXTERNAL LOCATION} | Int | +| basics.swift:21:30:24:3 | Block | | {EXTERNAL LOCATION} | Int | +| basics.swift:22:9:22:9 | x | | {EXTERNAL LOCATION} | Int | +| basics.swift:22:13:22:22 | getMyInt(...) | | {EXTERNAL LOCATION} | Int | +| basics.swift:23:12:23:12 | x | | {EXTERNAL LOCATION} | Int | +| basics.swift:28:7:28:11 | value | | basics.swift:27:15:27:15 | T | +| basics.swift:29:8:29:8 | v | | basics.swift:27:15:27:15 | T | +| basics.swift:29:14:31:3 | Block | | basics.swift:27:15:27:15 | T | +| basics.swift:30:5:30:9 | value | | basics.swift:27:15:27:15 | T | +| basics.swift:30:5:30:13 | ... = ... | | basics.swift:27:15:27:15 | T | +| basics.swift:30:13:30:13 | v | | basics.swift:27:15:27:15 | T | +| basics.swift:33:24:35:3 | Block | | basics.swift:27:15:27:15 | T | +| basics.swift:34:12:34:16 | value | | basics.swift:27:15:27:15 | T | +| basics.swift:39:10:41:3 | Block | | basics.swift:27:1:36:1 | Generic | +| basics.swift:39:10:41:3 | Block | T | {EXTERNAL LOCATION} | Int | +| basics.swift:40:5:40:9 | super | | basics.swift:27:1:36:1 | Generic | +| basics.swift:40:5:40:9 | super | T | {EXTERNAL LOCATION} | Int | +| basics.swift:40:5:40:20 | ... .init(...) | | basics.swift:27:1:36:1 | Generic | +| basics.swift:40:5:40:20 | ... .init(...) | T | {EXTERNAL LOCATION} | Int | +| basics.swift:40:19:40:19 | 0 | | {EXTERNAL LOCATION} | Int | +| basics.swift:45:7:45:7 | g | | basics.swift:27:1:36:1 | Generic | +| basics.swift:45:7:45:7 | g | T | {EXTERNAL LOCATION} | Int | +| basics.swift:45:11:45:24 | Generic(...) | | basics.swift:27:1:36:1 | Generic | +| basics.swift:45:11:45:24 | Generic(...) | T | {EXTERNAL LOCATION} | Int | +| basics.swift:45:22:45:23 | 42 | | {EXTERNAL LOCATION} | Int | +| basics.swift:46:7:46:7 | x | | {EXTERNAL LOCATION} | Int | +| basics.swift:46:11:46:11 | g | | basics.swift:27:1:36:1 | Generic | +| basics.swift:46:11:46:11 | g | T | {EXTERNAL LOCATION} | Int | +| basics.swift:46:11:46:22 | ... .getValue(...) | | {EXTERNAL LOCATION} | Int | +| basics.swift:48:7:48:8 | gd | | basics.swift:38:1:42:1 | GenericDerived | +| basics.swift:48:12:48:27 | GenericDerived(...) | | basics.swift:38:1:42:1 | GenericDerived | +| basics.swift:49:7:49:7 | y | | {EXTERNAL LOCATION} | Int | +| basics.swift:49:11:49:12 | gd | | basics.swift:38:1:42:1 | GenericDerived | +| basics.swift:49:11:49:23 | ... .getValue(...) | | {EXTERNAL LOCATION} | Int | +| basics.swift:55:25:57:3 | Block | | {EXTERNAL LOCATION} | Int | +| basics.swift:56:12:56:16 | myInt | | {EXTERNAL LOCATION} | Int | +| basics.swift:56:12:56:20 | ... * ... | | {EXTERNAL LOCATION} | Int | +| basics.swift:56:20:56:20 | 2 | | {EXTERNAL LOCATION} | Int | +| basics.swift:61:7:61:9 | obj | | basics.swift:5:1:14:1 | C | +| basics.swift:61:13:61:20 | C(...) | | basics.swift:5:1:14:1 | C | +| basics.swift:61:18:61:19 | 10 | | {EXTERNAL LOCATION} | Int | +| basics.swift:62:7:62:7 | d | | {EXTERNAL LOCATION} | Int | +| basics.swift:62:11:62:13 | obj | | basics.swift:5:1:14:1 | C | +| basics.swift:62:11:62:23 | ... .doubled(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:4:22:4:22 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:4:37:6:3 | Block | | {EXTERNAL LOCATION} | Int | +| classes.swift:5:12:5:12 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:5:12:5:16 | ... * ... | | {EXTERNAL LOCATION} | Int | +| classes.swift:5:16:5:16 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:8:19:8:19 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:8:34:10:3 | Block | | {EXTERNAL LOCATION} | Int | +| classes.swift:9:12:9:12 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:9:12:9:16 | ... * ... | | {EXTERNAL LOCATION} | Int | +| classes.swift:9:12:9:20 | ... * ... | | {EXTERNAL LOCATION} | Int | +| classes.swift:9:16:9:16 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:9:20:9:20 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:14:7:14:7 | s | | {EXTERNAL LOCATION} | Int | +| classes.swift:14:11:14:32 | ... .square(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:14:31:14:31 | 4 | | {EXTERNAL LOCATION} | Int | +| classes.swift:15:7:15:8 | cu | | {EXTERNAL LOCATION} | Int | +| classes.swift:15:12:15:31 | ... .cube(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:15:30:15:30 | 3 | | {EXTERNAL LOCATION} | Int | +| classes.swift:21:18:21:18 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:21:33:23:3 | Block | | {EXTERNAL LOCATION} | Int | +| classes.swift:22:12:22:12 | x | | {EXTERNAL LOCATION} | Int | +| classes.swift:22:12:22:16 | ... + ... | | {EXTERNAL LOCATION} | Int | +| classes.swift:22:16:22:16 | 1 | | {EXTERNAL LOCATION} | Int | +| classes.swift:25:18:25:18 | s | | {EXTERNAL LOCATION} | String | +| classes.swift:25:39:27:3 | Block | | {EXTERNAL LOCATION} | String | +| classes.swift:26:12:26:12 | s | | {EXTERNAL LOCATION} | String | +| classes.swift:31:7:31:7 | o | | classes.swift:20:1:28:1 | Overloaded | +| classes.swift:31:11:31:22 | Overloaded(...) | | classes.swift:20:1:28:1 | Overloaded | +| classes.swift:32:7:32:8 | r1 | | {EXTERNAL LOCATION} | Int | +| classes.swift:32:7:32:8 | r1 | | {EXTERNAL LOCATION} | String | +| classes.swift:32:12:32:12 | o | | classes.swift:20:1:28:1 | Overloaded | +| classes.swift:32:12:32:24 | ... .process(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:32:12:32:24 | ... .process(...) | | {EXTERNAL LOCATION} | String | +| classes.swift:32:22:32:23 | 42 | | {EXTERNAL LOCATION} | Int | +| classes.swift:33:7:33:8 | r2 | | {EXTERNAL LOCATION} | Int | +| classes.swift:33:7:33:8 | r2 | | {EXTERNAL LOCATION} | String | +| classes.swift:33:12:33:12 | o | | classes.swift:20:1:28:1 | Overloaded | +| classes.swift:33:12:33:29 | ... .process(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:33:12:33:29 | ... .process(...) | | {EXTERNAL LOCATION} | String | +| classes.swift:33:22:33:28 | "hello" | | {EXTERNAL LOCATION} | String | +| classes.swift:39:7:39:10 | data | | {EXTERNAL LOCATION} | Array | +| classes.swift:39:7:39:10 | data | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:39:7:39:10 | data | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:41:8:41:11 | data | | {EXTERNAL LOCATION} | Array | +| classes.swift:41:8:41:11 | data | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:41:8:41:11 | data | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:41:23:43:3 | Block | | {EXTERNAL LOCATION} | Array | +| classes.swift:41:23:43:3 | Block | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:41:23:43:3 | Block | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:42:5:42:8 | self | | classes.swift:38:1:48:1 | Matrix | +| classes.swift:42:5:42:13 | ... .data | | {EXTERNAL LOCATION} | Array | +| classes.swift:42:5:42:13 | ... .data | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:42:5:42:13 | ... .data | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:42:5:42:20 | ... = ... | | {EXTERNAL LOCATION} | Array | +| classes.swift:42:5:42:20 | ... = ... | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:42:5:42:20 | ... = ... | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:42:17:42:20 | data | | {EXTERNAL LOCATION} | Array | +| classes.swift:42:17:42:20 | data | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:42:17:42:20 | data | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:46:12:46:15 | data | | {EXTERNAL LOCATION} | Array | +| classes.swift:46:12:46:15 | data | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:46:12:46:15 | data | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:51:7:51:7 | m | | classes.swift:38:1:48:1 | Matrix | +| classes.swift:51:11:51:40 | Matrix(...) | | classes.swift:38:1:48:1 | Matrix | +| classes.swift:51:24:51:39 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| classes.swift:51:24:51:39 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Array | +| classes.swift:51:24:51:39 | ArrayLiteral | Element.Element | {EXTERNAL LOCATION} | Int | +| classes.swift:51:25:51:30 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| classes.swift:51:25:51:30 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| classes.swift:51:26:51:26 | 1 | | {EXTERNAL LOCATION} | Int | +| classes.swift:51:29:51:29 | 2 | | {EXTERNAL LOCATION} | Int | +| classes.swift:51:33:51:38 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| classes.swift:51:33:51:38 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| classes.swift:51:34:51:34 | 3 | | {EXTERNAL LOCATION} | Int | +| classes.swift:51:37:51:37 | 4 | | {EXTERNAL LOCATION} | Int | +| classes.swift:52:7:52:8 | rc | | {EXTERNAL LOCATION} | Int | +| classes.swift:52:12:52:12 | m | | classes.swift:38:1:48:1 | Matrix | +| classes.swift:52:12:52:23 | ... .rowCount(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:59:9:59:13 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:61:10:61:14 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:61:22:63:5 | Block | | {EXTERNAL LOCATION} | Int | +| classes.swift:62:7:62:10 | self | | classes.swift:58:3:68:3 | Inner | +| classes.swift:62:7:62:16 | ... .value | | {EXTERNAL LOCATION} | Int | +| classes.swift:62:7:62:24 | ... = ... | | {EXTERNAL LOCATION} | Int | +| classes.swift:62:20:62:24 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:65:28:67:5 | Block | | {EXTERNAL LOCATION} | Int | +| classes.swift:66:14:66:17 | self | | classes.swift:58:3:68:3 | Inner | +| classes.swift:66:14:66:23 | ... .value | | {EXTERNAL LOCATION} | Int | +| classes.swift:72:7:72:11 | inner | | classes.swift:58:3:68:3 | Inner | +| classes.swift:72:15:72:36 | ... .Inner(...) | | classes.swift:58:3:68:3 | Inner | +| classes.swift:72:34:72:35 | 99 | | {EXTERNAL LOCATION} | Int | +| classes.swift:73:7:73:7 | v | | {EXTERNAL LOCATION} | Int | +| classes.swift:73:11:73:15 | inner | | classes.swift:58:3:68:3 | Inner | +| classes.swift:73:11:73:26 | ... .getValue(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:79:7:79:11 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:79:20:79:20 | 0 | | {EXTERNAL LOCATION} | Int | +| classes.swift:81:14:81:14 | v | | {EXTERNAL LOCATION} | Int | +| classes.swift:81:33:84:3 | Block | | classes.swift:78:1:94:1 | Builder | +| classes.swift:82:5:82:9 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:82:5:82:13 | ... = ... | | {EXTERNAL LOCATION} | Int | +| classes.swift:82:13:82:13 | v | | {EXTERNAL LOCATION} | Int | +| classes.swift:83:12:83:15 | self | | classes.swift:78:1:94:1 | Builder | +| classes.swift:86:14:86:14 | v | | {EXTERNAL LOCATION} | Int | +| classes.swift:86:33:89:3 | Block | | classes.swift:78:1:94:1 | Builder | +| classes.swift:87:5:87:9 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:87:5:87:14 | ... += ... | | {EXTERNAL LOCATION} | Int | +| classes.swift:87:14:87:14 | v | | {EXTERNAL LOCATION} | Int | +| classes.swift:88:12:88:15 | self | | classes.swift:78:1:94:1 | Builder | +| classes.swift:91:23:93:3 | Block | | {EXTERNAL LOCATION} | Int | +| classes.swift:92:12:92:16 | value | | {EXTERNAL LOCATION} | Int | +| classes.swift:97:7:97:7 | b | | classes.swift:78:1:94:1 | Builder | +| classes.swift:97:11:97:19 | Builder(...) | | classes.swift:78:1:94:1 | Builder | +| classes.swift:98:7:98:12 | result | | {EXTERNAL LOCATION} | Int | +| classes.swift:98:16:98:16 | b | | classes.swift:78:1:94:1 | Builder | +| classes.swift:98:16:98:24 | ... .set(...) | | classes.swift:78:1:94:1 | Builder | +| classes.swift:98:16:98:31 | ... .add(...) | | classes.swift:78:1:94:1 | Builder | +| classes.swift:98:16:98:39 | ... .build(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:98:22:98:23 | 10 | | {EXTERNAL LOCATION} | Int | +| classes.swift:98:30:98:30 | 5 | | {EXTERNAL LOCATION} | Int | +| classes.swift:104:14:104:20 | retries | | {EXTERNAL LOCATION} | Int | +| classes.swift:104:29:104:29 | 3 | | {EXTERNAL LOCATION} | Int | +| classes.swift:104:32:104:38 | timeout | | {EXTERNAL LOCATION} | Double | +| classes.swift:104:50:104:53 | 30.0 | | {EXTERNAL LOCATION} | Double | +| classes.swift:104:63:106:3 | Block | | {EXTERNAL LOCATION} | Int | +| classes.swift:105:12:105:18 | retries | | {EXTERNAL LOCATION} | Int | +| classes.swift:110:7:110:9 | cfg | | classes.swift:103:1:107:1 | Config | +| classes.swift:110:13:110:20 | Config(...) | | classes.swift:103:1:107:1 | Config | +| classes.swift:111:7:111:8 | r1 | | {EXTERNAL LOCATION} | Int | +| classes.swift:111:12:111:14 | cfg | | classes.swift:103:1:107:1 | Config | +| classes.swift:111:12:111:22 | ... .setup(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:112:7:112:8 | r2 | | {EXTERNAL LOCATION} | Int | +| classes.swift:112:12:112:14 | cfg | | classes.swift:103:1:107:1 | Config | +| classes.swift:112:12:112:32 | ... .setup(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:112:31:112:31 | 5 | | {EXTERNAL LOCATION} | Int | +| classes.swift:113:7:113:8 | r3 | | {EXTERNAL LOCATION} | Int | +| classes.swift:113:12:113:14 | cfg | | classes.swift:103:1:107:1 | Config | +| classes.swift:113:12:113:47 | ... .setup(...) | | {EXTERNAL LOCATION} | Int | +| classes.swift:113:31:113:31 | 2 | | {EXTERNAL LOCATION} | Int | +| classes.swift:113:43:113:46 | 60.0 | | {EXTERNAL LOCATION} | Double | +| classes.swift:119:7:119:13 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:121:8:121:14 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:121:25:123:3 | Block | | {EXTERNAL LOCATION} | Double | +| classes.swift:122:5:122:8 | self | | classes.swift:118:1:132:1 | Temperature | +| classes.swift:122:5:122:16 | ... .celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:122:5:122:26 | ... = ... | | {EXTERNAL LOCATION} | Double | +| classes.swift:122:20:122:26 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:125:30:127:3 | Block | | {EXTERNAL LOCATION} | Double | +| classes.swift:126:12:126:18 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:129:33:131:3 | Block | | {EXTERNAL LOCATION} | Double | +| classes.swift:130:12:130:18 | celsius | | {EXTERNAL LOCATION} | Double | +| classes.swift:130:12:130:24 | ... * ... | | {EXTERNAL LOCATION} | Double | +| classes.swift:130:12:130:30 | ... / ... | | {EXTERNAL LOCATION} | Double | +| classes.swift:130:12:130:37 | ... + ... | | {EXTERNAL LOCATION} | Double | +| classes.swift:130:22:130:24 | 9.0 | | {EXTERNAL LOCATION} | Double | +| classes.swift:130:28:130:30 | 5.0 | | {EXTERNAL LOCATION} | Double | +| classes.swift:130:34:130:37 | 32.0 | | {EXTERNAL LOCATION} | Double | +| classes.swift:135:7:135:7 | t | | classes.swift:118:1:132:1 | Temperature | +| classes.swift:135:11:135:37 | Temperature(...) | | classes.swift:118:1:132:1 | Temperature | +| classes.swift:135:32:135:36 | 100.0 | | {EXTERNAL LOCATION} | Double | +| classes.swift:136:7:136:7 | c | | {EXTERNAL LOCATION} | Double | +| classes.swift:136:11:136:11 | t | | classes.swift:118:1:132:1 | Temperature | +| classes.swift:136:11:136:23 | ... .toCelsius(...) | | {EXTERNAL LOCATION} | Double | +| classes.swift:137:7:137:7 | f | | {EXTERNAL LOCATION} | Double | +| classes.swift:137:11:137:11 | t | | classes.swift:118:1:132:1 | Temperature | +| classes.swift:137:11:137:26 | ... .toFahrenheit(...) | | {EXTERNAL LOCATION} | Double | +| classes.swift:143:26:145:3 | Block | | {EXTERNAL LOCATION} | String | +| classes.swift:144:12:144:16 | "..." | | {EXTERNAL LOCATION} | String | +| classes.swift:149:19:151:3 | Block | | classes.swift:142:1:146:1 | Animal | +| classes.swift:150:5:150:9 | super | | classes.swift:142:1:146:1 | Animal | +| classes.swift:150:5:150:16 | ... .init(...) | | classes.swift:142:1:146:1 | Animal | +| classes.swift:153:35:155:3 | Block | | {EXTERNAL LOCATION} | String | +| classes.swift:154:12:154:17 | "Woof" | | {EXTERNAL LOCATION} | String | +| classes.swift:157:26:159:3 | Block | | {EXTERNAL LOCATION} | String | +| classes.swift:158:12:158:17 | "ball" | | {EXTERNAL LOCATION} | String | +| classes.swift:163:19:165:3 | Block | | classes.swift:142:1:146:1 | Animal | +| classes.swift:164:5:164:9 | super | | classes.swift:142:1:146:1 | Animal | +| classes.swift:164:5:164:16 | ... .init(...) | | classes.swift:142:1:146:1 | Animal | +| classes.swift:167:35:169:3 | Block | | {EXTERNAL LOCATION} | String | +| classes.swift:168:12:168:17 | "Meow" | | {EXTERNAL LOCATION} | String | +| classes.swift:173:7:173:7 | d | | classes.swift:148:1:160:1 | Dog | +| classes.swift:173:11:173:15 | Dog(...) | | classes.swift:148:1:160:1 | Dog | +| classes.swift:174:7:174:8 | ds | | {EXTERNAL LOCATION} | String | +| classes.swift:174:12:174:12 | d | | classes.swift:148:1:160:1 | Dog | +| classes.swift:174:12:174:20 | ... .speak(...) | | {EXTERNAL LOCATION} | String | +| classes.swift:175:7:175:8 | df | | {EXTERNAL LOCATION} | String | +| classes.swift:175:12:175:12 | d | | classes.swift:148:1:160:1 | Dog | +| classes.swift:175:12:175:20 | ... .fetch(...) | | {EXTERNAL LOCATION} | String | +| classes.swift:177:7:177:8 | ct | | classes.swift:162:1:170:1 | Cat | +| classes.swift:177:12:177:16 | Cat(...) | | classes.swift:162:1:170:1 | Cat | +| classes.swift:178:7:178:8 | cs | | {EXTERNAL LOCATION} | String | +| classes.swift:178:12:178:13 | ct | | classes.swift:162:1:170:1 | Cat | +| classes.swift:178:12:178:21 | ... .speak(...) | | {EXTERNAL LOCATION} | String | +| classes.swift:184:7:184:11 | count | | {EXTERNAL LOCATION} | Int | +| classes.swift:184:20:184:20 | 0 | | {EXTERNAL LOCATION} | Int | +| classes.swift:186:29:188:3 | Block | | {EXTERNAL LOCATION} | Int | +| classes.swift:187:5:187:9 | count | | {EXTERNAL LOCATION} | Int | +| classes.swift:187:5:187:14 | ... += ... | | {EXTERNAL LOCATION} | Int | +| classes.swift:187:14:187:14 | 1 | | {EXTERNAL LOCATION} | Int | +| classes.swift:190:26:192:3 | Block | | {EXTERNAL LOCATION} | Int | +| classes.swift:191:12:191:16 | count | | {EXTERNAL LOCATION} | Int | +| classes.swift:196:7:196:9 | ctr | | classes.swift:183:1:193:1 | Counter | +| classes.swift:196:13:196:21 | Counter(...) | | classes.swift:183:1:193:1 | Counter | +| classes.swift:197:3:197:5 | ctr | | classes.swift:183:1:193:1 | Counter | +| classes.swift:198:7:198:9 | val | | {EXTERNAL LOCATION} | Int | +| classes.swift:198:13:198:15 | ctr | | classes.swift:183:1:193:1 | Counter | +| classes.swift:198:13:198:26 | ... .getCount(...) | | {EXTERNAL LOCATION} | Int | +| closures.swift:1:32:7:1 | Block | | {EXTERNAL LOCATION} | Int | +| closures.swift:2:9:2:14 | addOne | | {EXTERNAL LOCATION} | Function | +| closures.swift:2:9:2:14 | addOne | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:2:9:2:14 | addOne | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:2:9:2:14 | addOne | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:2:18:4:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:2:18:4:5 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:2:18:4:5 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:2:18:4:5 | FunctionExpr | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:2:20:2:24 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:3:9:3:13 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:3:9:3:17 | ... + ... | | {EXTERNAL LOCATION} | Int | +| closures.swift:3:9:3:17 | Block | | {EXTERNAL LOCATION} | Int | +| closures.swift:3:17:3:17 | 1 | | {EXTERNAL LOCATION} | Int | +| closures.swift:5:9:5:14 | result | | {EXTERNAL LOCATION} | Int | +| closures.swift:5:18:5:23 | addOne | | {EXTERNAL LOCATION} | Function | +| closures.swift:5:18:5:23 | addOne | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:5:18:5:23 | addOne | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:5:18:5:23 | addOne | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:5:18:5:27 | addOne(...) | | {EXTERNAL LOCATION} | Int | +| closures.swift:5:25:5:26 | 41 | | {EXTERNAL LOCATION} | Int | +| closures.swift:6:5:6:5 | _ | | {EXTERNAL LOCATION} | Int | +| closures.swift:6:5:6:14 | ... = ... | | {EXTERNAL LOCATION} | Int | +| closures.swift:6:9:6:14 | result | | {EXTERNAL LOCATION} | Int | +| closures.swift:9:28:9:35 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:9:28:9:35 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:9:28:9:35 | callback | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:9:28:9:35 | callback | Return | {EXTERNAL LOCATION} | String | +| closures.swift:9:65:11:1 | Block | | {EXTERNAL LOCATION} | String | +| closures.swift:10:5:10:12 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:10:5:10:12 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:10:5:10:12 | callback | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:10:5:10:12 | callback | Return | {EXTERNAL LOCATION} | String | +| closures.swift:10:5:10:16 | callback(...) | | {EXTERNAL LOCATION} | String | +| closures.swift:10:14:10:15 | 42 | | {EXTERNAL LOCATION} | Int | +| closures.swift:13:36:13:43 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:13:36:13:43 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:13:36:13:43 | callback | Args.T0 | closures.swift:13:30:13:31 | T1 | +| closures.swift:13:36:13:43 | callback | Return | {EXTERNAL LOCATION} | Tuple0 | +| closures.swift:13:62:13:64 | arg | | closures.swift:13:30:13:31 | T1 | +| closures.swift:13:77:16:1 | Block | | closures.swift:13:30:13:31 | T1 | +| closures.swift:14:5:14:12 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:14:5:14:12 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:14:5:14:12 | callback | Args.T0 | closures.swift:13:30:13:31 | T1 | +| closures.swift:14:5:14:12 | callback | Return | {EXTERNAL LOCATION} | Tuple0 | +| closures.swift:14:5:14:17 | callback(...) | | {EXTERNAL LOCATION} | Tuple0 | +| closures.swift:14:14:14:16 | arg | | closures.swift:13:30:13:31 | T1 | +| closures.swift:15:12:15:14 | arg | | closures.swift:13:30:13:31 | T1 | +| closures.swift:18:32:29:1 | Block | | {EXTERNAL LOCATION} | Bool | +| closures.swift:19:9:19:14 | result | | {EXTERNAL LOCATION} | String | +| closures.swift:19:18:21:5 | callWithIntCallback(...) | | {EXTERNAL LOCATION} | String | +| closures.swift:19:38:21:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:19:38:21:5 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:19:38:21:5 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:19:38:21:5 | FunctionExpr | Return | {EXTERNAL LOCATION} | String | +| closures.swift:19:40:19:44 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:20:9:20:21 | Block | | {EXTERNAL LOCATION} | String | +| closures.swift:20:9:20:21 | String(...) | | {EXTERNAL LOCATION} | String | +| closures.swift:20:16:20:20 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:22:5:22:5 | _ | | {EXTERNAL LOCATION} | String | +| closures.swift:22:5:22:14 | ... = ... | | {EXTERNAL LOCATION} | String | +| closures.swift:22:9:22:14 | result | | {EXTERNAL LOCATION} | String | +| closures.swift:24:9:24:21 | genericResult | | {EXTERNAL LOCATION} | Bool | +| closures.swift:24:25:27:17 | callWithGenericCallback(...) | | {EXTERNAL LOCATION} | Bool | +| closures.swift:25:9:27:9 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:25:9:27:9 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:25:9:27:9 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Bool | +| closures.swift:25:11:25:15 | value | | {EXTERNAL LOCATION} | Bool | +| closures.swift:27:12:27:16 | false | | {EXTERNAL LOCATION} | Bool | +| closures.swift:28:5:28:5 | _ | | {EXTERNAL LOCATION} | Bool | +| closures.swift:28:5:28:21 | ... = ... | | {EXTERNAL LOCATION} | Bool | +| closures.swift:28:9:28:21 | genericResult | | {EXTERNAL LOCATION} | Bool | +| closures.swift:32:9:32:9 | f | | {EXTERNAL LOCATION} | Function | +| closures.swift:32:9:32:9 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:32:9:32:9 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:32:9:32:9 | f | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:34:14:34:18 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:34:33:36:5 | Block | | {EXTERNAL LOCATION} | Int | +| closures.swift:35:16:35:16 | 0 | | {EXTERNAL LOCATION} | Int | +| closures.swift:38:9:38:10 | f2 | | {EXTERNAL LOCATION} | Function | +| closures.swift:38:9:38:10 | f2 | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:38:9:38:10 | f2 | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:38:9:38:10 | f2 | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:41:9:41:12 | self | | closures.swift:31:1:50:1 | ClosureField | +| closures.swift:41:9:41:14 | ... .f | | {EXTERNAL LOCATION} | Function | +| closures.swift:41:9:41:14 | ... .f | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:41:9:41:14 | ... .f | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:41:9:41:14 | ... .f | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:42:9:42:12 | self | | closures.swift:31:1:50:1 | ClosureField | +| closures.swift:42:9:42:15 | ... .f2 | | {EXTERNAL LOCATION} | Function | +| closures.swift:42:9:42:15 | ... .f2 | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:42:9:42:15 | ... .f2 | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:42:9:42:15 | ... .f2 | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:45:24:45:28 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:45:43:49:5 | Block | | {EXTERNAL LOCATION} | Int | +| closures.swift:47:9:47:12 | self | | closures.swift:31:1:50:1 | ClosureField | +| closures.swift:47:9:47:14 | ... .f | | {EXTERNAL LOCATION} | Function | +| closures.swift:47:9:47:14 | ... .f | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:47:9:47:14 | ... .f | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:47:9:47:14 | ... .f | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:47:9:47:21 | ... .f(...) | | {EXTERNAL LOCATION} | Int | +| closures.swift:47:16:47:20 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:48:16:48:19 | self | | closures.swift:31:1:50:1 | ClosureField | +| closures.swift:48:16:48:22 | ... .f2 | | {EXTERNAL LOCATION} | Function | +| closures.swift:48:16:48:22 | ... .f2 | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:48:16:48:22 | ... .f2 | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:48:16:48:22 | ... .f2 | Return | {EXTERNAL LOCATION} | Int | +| closures.swift:48:16:48:29 | ... .f2(...) | | {EXTERNAL LOCATION} | Int | +| closures.swift:48:24:48:28 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:53:9:53:15 | numbers | | {EXTERNAL LOCATION} | Array | +| closures.swift:53:9:53:15 | numbers | Element | {EXTERNAL LOCATION} | Int | +| closures.swift:53:19:53:27 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| closures.swift:53:19:53:27 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| closures.swift:53:20:53:20 | 1 | | {EXTERNAL LOCATION} | Int | +| closures.swift:53:23:53:23 | 2 | | {EXTERNAL LOCATION} | Int | +| closures.swift:53:26:53:26 | 3 | | {EXTERNAL LOCATION} | Int | +| closures.swift:55:9:55:15 | strings | | {EXTERNAL LOCATION} | Array | +| closures.swift:55:9:55:15 | strings | Element | {EXTERNAL LOCATION} | String | +| closures.swift:55:19:55:25 | numbers | | {EXTERNAL LOCATION} | Array | +| closures.swift:55:19:55:25 | numbers | Element | {EXTERNAL LOCATION} | Int | +| closures.swift:55:19:57:5 | ... .map(...) | | {EXTERNAL LOCATION} | Array | +| closures.swift:55:19:57:5 | ... .map(...) | Element | {EXTERNAL LOCATION} | String | +| closures.swift:55:31:57:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:55:31:57:5 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:55:31:57:5 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:55:31:57:5 | FunctionExpr | Return | {EXTERNAL LOCATION} | String | +| closures.swift:55:33:55:33 | x | | {EXTERNAL LOCATION} | Int | +| closures.swift:56:9:56:17 | Block | | {EXTERNAL LOCATION} | String | +| closures.swift:56:9:56:17 | String(...) | | {EXTERNAL LOCATION} | String | +| closures.swift:56:16:56:16 | x | | {EXTERNAL LOCATION} | Int | +| closures.swift:60:22:60:29 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:60:22:60:29 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:60:22:60:29 | callback | Args.T0 | closures.swift:60:12:60:13 | T1 | +| closures.swift:60:22:60:29 | callback | Return | closures.swift:60:16:60:17 | T2 | +| closures.swift:60:46:60:48 | arg | | closures.swift:60:12:60:13 | T1 | +| closures.swift:60:61:62:1 | Block | | closures.swift:60:16:60:17 | T2 | +| closures.swift:61:5:61:12 | callback | | {EXTERNAL LOCATION} | Function | +| closures.swift:61:5:61:12 | callback | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:61:5:61:12 | callback | Args.T0 | closures.swift:60:12:60:13 | T1 | +| closures.swift:61:5:61:12 | callback | Return | closures.swift:60:16:60:17 | T2 | +| closures.swift:61:5:61:17 | callback(...) | | closures.swift:60:16:60:17 | T2 | +| closures.swift:61:14:61:16 | arg | | closures.swift:60:12:60:13 | T1 | +| closures.swift:64:18:70:1 | Block | | {EXTERNAL LOCATION} | String | +| closures.swift:65:9:65:14 | result | | {EXTERNAL LOCATION} | String | +| closures.swift:65:18:68:14 | apply(...) | | {EXTERNAL LOCATION} | String | +| closures.swift:66:9:68:9 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| closures.swift:66:9:68:9 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| closures.swift:66:9:68:9 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| closures.swift:66:9:68:9 | FunctionExpr | Return | {EXTERNAL LOCATION} | String | +| closures.swift:66:11:66:15 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:67:13:67:25 | Block | | {EXTERNAL LOCATION} | String | +| closures.swift:67:13:67:25 | String(...) | | {EXTERNAL LOCATION} | String | +| closures.swift:67:20:67:24 | value | | {EXTERNAL LOCATION} | Int | +| closures.swift:68:12:68:13 | 42 | | {EXTERNAL LOCATION} | Int | +| closures.swift:69:5:69:5 | _ | | {EXTERNAL LOCATION} | String | +| closures.swift:69:5:69:14 | ... = ... | | {EXTERNAL LOCATION} | String | +| closures.swift:69:9:69:14 | result | | {EXTERNAL LOCATION} | String | +| constructors.swift:1:1:20:33 | Block | | constructors.swift:12:1:16:1 | S1 | +| constructors.swift:1:1:20:33 | Block | T | {EXTERNAL LOCATION} | Int | +| constructors.swift:2:12:2:12 | x | | {EXTERNAL LOCATION} | Int | +| constructors.swift:4:24:6:5 | Block | | constructors.swift:1:1:7:1 | C1 | +| constructors.swift:5:9:5:12 | self | | constructors.swift:1:1:7:1 | C1 | +| constructors.swift:5:9:5:20 | ... .init(...) | | constructors.swift:1:1:7:1 | C1 | +| constructors.swift:5:19:5:19 | 0 | | {EXTERNAL LOCATION} | Int | +| constructors.swift:9:5:9:7 | c11 | | constructors.swift:1:1:7:1 | C1 | +| constructors.swift:9:11:9:14 | C1(...) | | constructors.swift:1:1:7:1 | C1 | +| constructors.swift:10:5:10:7 | c12 | | constructors.swift:1:1:7:1 | C1 | +| constructors.swift:10:11:10:19 | ... .init(...) | | constructors.swift:1:1:7:1 | C1 | +| constructors.swift:13:9:13:10 | f1 | | constructors.swift:12:11:12:11 | T | +| constructors.swift:14:9:14:10 | f2 | | {EXTERNAL LOCATION} | String | +| constructors.swift:14:22:14:30 | "default" | | {EXTERNAL LOCATION} | String | +| constructors.swift:15:9:15:10 | f3 | | {EXTERNAL LOCATION} | Function | +| constructors.swift:15:9:15:10 | f3 | Args | {EXTERNAL LOCATION} | Tuple1 | +| constructors.swift:15:9:15:10 | f3 | Args.T0 | constructors.swift:12:11:12:11 | T | +| constructors.swift:15:9:15:10 | f3 | Return | constructors.swift:12:11:12:11 | T | +| constructors.swift:15:24:15:29 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| constructors.swift:18:5:18:7 | s11 | | constructors.swift:12:1:16:1 | S1 | +| constructors.swift:18:5:18:7 | s11 | T | {EXTERNAL LOCATION} | Int | +| constructors.swift:18:11:18:19 | S1(...) | | constructors.swift:12:1:16:1 | S1 | +| constructors.swift:18:11:18:19 | S1(...) | T | {EXTERNAL LOCATION} | Int | +| constructors.swift:18:18:18:18 | 0 | | {EXTERNAL LOCATION} | Int | +| constructors.swift:19:5:19:7 | s12 | | constructors.swift:12:1:16:1 | S1 | +| constructors.swift:19:5:19:7 | s12 | T | {EXTERNAL LOCATION} | Bool | +| constructors.swift:19:11:19:30 | S1(...) | | constructors.swift:12:1:16:1 | S1 | +| constructors.swift:19:11:19:30 | S1(...) | T | {EXTERNAL LOCATION} | Bool | +| constructors.swift:19:18:19:21 | true | | {EXTERNAL LOCATION} | Bool | +| constructors.swift:19:28:19:29 | "" | | {EXTERNAL LOCATION} | String | +| constructors.swift:20:1:20:33 | S1(...) | | constructors.swift:12:1:16:1 | S1 | +| constructors.swift:20:1:20:33 | S1(...) | T | {EXTERNAL LOCATION} | Int | +| constructors.swift:20:8:20:8 | 0 | | {EXTERNAL LOCATION} | Int | +| constructors.swift:20:15:20:16 | "" | | {EXTERNAL LOCATION} | String | +| constructors.swift:20:23:20:32 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| constructors.swift:20:23:20:32 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| constructors.swift:20:23:20:32 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| constructors.swift:20:23:20:32 | FunctionExpr | Return | {EXTERNAL LOCATION} | Int | +| constructors.swift:20:25:20:25 | x | | {EXTERNAL LOCATION} | Int | +| constructors.swift:20:30:20:30 | Block | | {EXTERNAL LOCATION} | Int | +| constructors.swift:20:30:20:30 | x | | {EXTERNAL LOCATION} | Int | +| fields.swift:2:7:2:20 | inheritedField | | {EXTERNAL LOCATION} | Int | +| fields.swift:2:29:2:29 | 0 | | {EXTERNAL LOCATION} | Int | +| fields.swift:6:7:6:17 | storedField | | {EXTERNAL LOCATION} | String | +| fields.swift:6:29:6:36 | "stored" | | {EXTERNAL LOCATION} | String | +| fields.swift:7:7:7:18 | genericField | | fields.swift:5:22:5:22 | T | +| fields.swift:9:8:9:19 | genericField | | fields.swift:5:22:5:22 | T | +| fields.swift:9:25:11:3 | Block | | fields.swift:5:22:5:22 | T | +| fields.swift:10:5:10:8 | self | | fields.swift:5:1:20:1 | FieldContainer | +| fields.swift:10:5:10:8 | self | T | fields.swift:5:22:5:22 | T | +| fields.swift:10:5:10:21 | ... .genericField | | fields.swift:5:22:5:22 | T | +| fields.swift:10:5:10:36 | ... = ... | | fields.swift:5:22:5:22 | T | +| fields.swift:10:25:10:36 | genericField | | fields.swift:5:22:5:22 | T | +| fields.swift:13:35:15:3 | Block | | {EXTERNAL LOCATION} | String | +| fields.swift:14:12:14:22 | storedField | | {EXTERNAL LOCATION} | String | +| fields.swift:17:31:19:3 | Block | | fields.swift:5:22:5:22 | T | +| fields.swift:18:12:18:15 | self | | fields.swift:5:1:20:1 | FieldContainer | +| fields.swift:18:12:18:15 | self | T | fields.swift:5:22:5:22 | T | +| fields.swift:18:12:18:28 | ... .genericField | | fields.swift:5:22:5:22 | T | +| fields.swift:23:14:23:24 | staticField | | {EXTERNAL LOCATION} | Bool | +| fields.swift:23:34:23:37 | true | | {EXTERNAL LOCATION} | Bool | +| fields.swift:27:7:27:11 | value | | {EXTERNAL LOCATION} | Double | +| fields.swift:31:7:31:12 | nested | | fields.swift:26:1:28:1 | NestedField | +| fields.swift:35:7:35:15 | container | | fields.swift:5:1:20:1 | FieldContainer | +| fields.swift:35:7:35:15 | container | T | {EXTERNAL LOCATION} | Int | +| fields.swift:35:19:35:50 | FieldContainer(...) | | fields.swift:5:1:20:1 | FieldContainer | +| fields.swift:35:19:35:50 | FieldContainer(...) | T | {EXTERNAL LOCATION} | Int | +| fields.swift:35:48:35:49 | 42 | | {EXTERNAL LOCATION} | Int | +| fields.swift:36:7:36:12 | stored | | {EXTERNAL LOCATION} | String | +| fields.swift:36:16:36:24 | container | | fields.swift:5:1:20:1 | FieldContainer | +| fields.swift:36:16:36:24 | container | T | {EXTERNAL LOCATION} | Int | +| fields.swift:36:16:36:36 | ... .storedField | | {EXTERNAL LOCATION} | String | +| fields.swift:37:7:37:13 | generic | | {EXTERNAL LOCATION} | Int | +| fields.swift:37:17:37:25 | container | | fields.swift:5:1:20:1 | FieldContainer | +| fields.swift:37:17:37:25 | container | T | {EXTERNAL LOCATION} | Int | +| fields.swift:37:17:37:38 | ... .genericField | | {EXTERNAL LOCATION} | Int | +| fields.swift:38:7:38:15 | inherited | | {EXTERNAL LOCATION} | Int | +| fields.swift:38:19:38:27 | container | | fields.swift:5:1:20:1 | FieldContainer | +| fields.swift:38:19:38:27 | container | T | {EXTERNAL LOCATION} | Int | +| fields.swift:38:19:38:42 | ... .inheritedField | | {EXTERNAL LOCATION} | Int | +| fields.swift:39:7:39:17 | staticValue | | {EXTERNAL LOCATION} | Bool | +| fields.swift:39:21:39:52 | ... .staticField | | {EXTERNAL LOCATION} | Bool | +| fields.swift:41:7:41:11 | outer | | fields.swift:30:1:32:1 | OuterField | +| fields.swift:41:15:41:57 | OuterField(...) | | fields.swift:30:1:32:1 | OuterField | +| fields.swift:41:34:41:56 | NestedField(...) | | fields.swift:26:1:28:1 | NestedField | +| fields.swift:41:53:41:55 | 1.0 | | {EXTERNAL LOCATION} | Double | +| fields.swift:42:7:42:17 | nestedValue | | {EXTERNAL LOCATION} | Double | +| fields.swift:42:21:42:25 | outer | | fields.swift:30:1:32:1 | OuterField | +| fields.swift:42:21:42:32 | ... .nested | | fields.swift:26:1:28:1 | NestedField | +| fields.swift:42:21:42:38 | ... .value | | {EXTERNAL LOCATION} | Double | +| generics.swift:3:20:3:20 | x | | generics.swift:3:15:3:15 | T | +| generics.swift:3:31:5:1 | Block | | generics.swift:3:15:3:15 | T | +| generics.swift:4:10:4:10 | x | | generics.swift:3:15:3:15 | T | +| generics.swift:7:23:7:23 | a | | generics.swift:7:15:7:15 | A | +| generics.swift:7:31:7:31 | b | | generics.swift:7:18:7:18 | B | +| generics.swift:7:47:9:1 | Block | | {EXTERNAL LOCATION} | Tuple2 | +| generics.swift:7:47:9:1 | Block | T0 | generics.swift:7:15:7:15 | A | +| generics.swift:7:47:9:1 | Block | T1 | generics.swift:7:18:7:18 | B | +| generics.swift:8:10:8:15 | TupleExpr | | {EXTERNAL LOCATION} | Tuple2 | +| generics.swift:8:10:8:15 | TupleExpr | T0 | generics.swift:7:15:7:15 | A | +| generics.swift:8:10:8:15 | TupleExpr | T1 | generics.swift:7:18:7:18 | B | +| generics.swift:8:11:8:11 | a | | generics.swift:7:15:7:15 | A | +| generics.swift:8:14:8:14 | b | | generics.swift:7:18:7:18 | B | +| generics.swift:12:7:12:7 | i | | {EXTERNAL LOCATION} | Int | +| generics.swift:12:11:12:22 | identity(...) | | {EXTERNAL LOCATION} | Int | +| generics.swift:12:20:12:21 | 42 | | {EXTERNAL LOCATION} | Int | +| generics.swift:13:7:13:7 | s | | {EXTERNAL LOCATION} | String | +| generics.swift:13:11:13:27 | identity(...) | | {EXTERNAL LOCATION} | String | +| generics.swift:13:20:13:26 | "hello" | | {EXTERNAL LOCATION} | String | +| generics.swift:14:7:14:7 | p | | {EXTERNAL LOCATION} | Tuple2 | +| generics.swift:14:7:14:7 | p | T0 | {EXTERNAL LOCATION} | Int | +| generics.swift:14:7:14:7 | p | T1 | {EXTERNAL LOCATION} | String | +| generics.swift:14:11:14:28 | makePair(...) | | {EXTERNAL LOCATION} | Tuple2 | +| generics.swift:14:11:14:28 | makePair(...) | T0 | {EXTERNAL LOCATION} | Int | +| generics.swift:14:11:14:28 | makePair(...) | T1 | {EXTERNAL LOCATION} | String | +| generics.swift:14:20:14:20 | 1 | | {EXTERNAL LOCATION} | Int | +| generics.swift:14:23:14:27 | "two" | | {EXTERNAL LOCATION} | String | +| generics.swift:20:7:20:11 | first | | generics.swift:19:13:19:13 | A | +| generics.swift:21:7:21:12 | second | | generics.swift:19:16:19:16 | B | +| generics.swift:23:8:23:12 | first | | generics.swift:19:13:19:13 | A | +| generics.swift:23:18:23:23 | second | | generics.swift:19:16:19:16 | B | +| generics.swift:23:29:26:3 | Block | | generics.swift:19:16:19:16 | B | +| generics.swift:24:5:24:8 | self | | generics.swift:19:1:35:1 | Pair | +| generics.swift:24:5:24:8 | self | A | generics.swift:19:13:19:13 | A | +| generics.swift:24:5:24:8 | self | B | generics.swift:19:16:19:16 | B | +| generics.swift:24:5:24:14 | ... .first | | generics.swift:19:13:19:13 | A | +| generics.swift:24:5:24:22 | ... = ... | | generics.swift:19:13:19:13 | A | +| generics.swift:24:18:24:22 | first | | generics.swift:19:13:19:13 | A | +| generics.swift:25:5:25:8 | self | | generics.swift:19:1:35:1 | Pair | +| generics.swift:25:5:25:8 | self | A | generics.swift:19:13:19:13 | A | +| generics.swift:25:5:25:8 | self | B | generics.swift:19:16:19:16 | B | +| generics.swift:25:5:25:15 | ... .second | | generics.swift:19:16:19:16 | B | +| generics.swift:25:5:25:24 | ... = ... | | generics.swift:19:16:19:16 | B | +| generics.swift:25:19:25:24 | second | | generics.swift:19:16:19:16 | B | +| generics.swift:28:24:30:3 | Block | | generics.swift:19:13:19:13 | A | +| generics.swift:29:12:29:16 | first | | generics.swift:19:13:19:13 | A | +| generics.swift:32:25:34:3 | Block | | generics.swift:19:16:19:16 | B | +| generics.swift:33:12:33:17 | second | | generics.swift:19:16:19:16 | B | +| generics.swift:38:7:38:7 | p | | generics.swift:19:1:35:1 | Pair | +| generics.swift:38:7:38:7 | p | A | {EXTERNAL LOCATION} | Int | +| generics.swift:38:7:38:7 | p | B | {EXTERNAL LOCATION} | String | +| generics.swift:38:11:38:37 | Pair(...) | | generics.swift:19:1:35:1 | Pair | +| generics.swift:38:11:38:37 | Pair(...) | A | {EXTERNAL LOCATION} | Int | +| generics.swift:38:11:38:37 | Pair(...) | B | {EXTERNAL LOCATION} | String | +| generics.swift:38:23:38:23 | 1 | | {EXTERNAL LOCATION} | Int | +| generics.swift:38:34:38:36 | "x" | | {EXTERNAL LOCATION} | String | +| generics.swift:39:7:39:7 | f | | {EXTERNAL LOCATION} | Int | +| generics.swift:39:11:39:11 | p | | generics.swift:19:1:35:1 | Pair | +| generics.swift:39:11:39:11 | p | A | {EXTERNAL LOCATION} | Int | +| generics.swift:39:11:39:11 | p | B | {EXTERNAL LOCATION} | String | +| generics.swift:39:11:39:22 | ... .getFirst(...) | | {EXTERNAL LOCATION} | Int | +| generics.swift:40:7:40:8 | sc | | {EXTERNAL LOCATION} | String | +| generics.swift:40:12:40:12 | p | | generics.swift:19:1:35:1 | Pair | +| generics.swift:40:12:40:12 | p | A | {EXTERNAL LOCATION} | Int | +| generics.swift:40:12:40:12 | p | B | {EXTERNAL LOCATION} | String | +| generics.swift:40:12:40:24 | ... .getSecond(...) | | {EXTERNAL LOCATION} | String | +| generics.swift:50:12:50:15 | self | | generics.swift:45:1:57:1 | Result | +| generics.swift:50:12:50:15 | self | T | generics.swift:45:13:45:13 | T | +| generics.swift:51:10:51:24 | ... .success(...) | | generics.swift:45:1:57:1 | Result | +| generics.swift:51:10:51:24 | ... .success(...) | T | generics.swift:45:13:45:13 | T | +| generics.swift:53:10:53:17 | ... .failure | | generics.swift:45:1:57:1 | Result | +| generics.swift:53:10:53:17 | ... .failure | T | generics.swift:45:13:45:13 | T | +| generics.swift:60:7:60:7 | r | | generics.swift:45:1:57:1 | Result | +| generics.swift:60:7:60:7 | r | T | {EXTERNAL LOCATION} | Int | +| generics.swift:60:11:60:28 | ... .success(...) | | generics.swift:45:1:57:1 | Result | +| generics.swift:60:11:60:28 | ... .success(...) | T | {EXTERNAL LOCATION} | Int | +| generics.swift:60:26:60:27 | 42 | | {EXTERNAL LOCATION} | Int | +| generics.swift:61:7:61:7 | v | | {EXTERNAL LOCATION} | Optional | +| generics.swift:61:7:61:7 | v | Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:61:11:61:11 | r | | generics.swift:45:1:57:1 | Result | +| generics.swift:61:11:61:11 | r | T | {EXTERNAL LOCATION} | Int | +| generics.swift:61:11:61:22 | ... .getValue(...) | | {EXTERNAL LOCATION} | Optional | +| generics.swift:61:11:61:22 | ... .getValue(...) | Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:63:7:63:8 | r2 | | generics.swift:45:1:57:1 | Result | +| generics.swift:63:7:63:8 | r2 | T | {EXTERNAL LOCATION} | Int | +| generics.swift:63:34:63:35 | 42 | | {EXTERNAL LOCATION} | Int | +| generics.swift:64:7:64:8 | v2 | | {EXTERNAL LOCATION} | Optional | +| generics.swift:64:7:64:8 | v2 | Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:64:12:64:13 | r2 | | generics.swift:45:1:57:1 | Result | +| generics.swift:64:12:64:13 | r2 | T | {EXTERNAL LOCATION} | Int | +| generics.swift:64:12:64:24 | ... .getValue(...) | | {EXTERNAL LOCATION} | Optional | +| generics.swift:64:12:64:24 | ... .getValue(...) | Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:69:29:69:33 | value | | generics.swift:69:21:69:21 | T | +| generics.swift:69:41:69:49 | transform | | {EXTERNAL LOCATION} | Function | +| generics.swift:69:41:69:49 | transform | Args | {EXTERNAL LOCATION} | Tuple1 | +| generics.swift:69:41:69:49 | transform | Args.T0 | generics.swift:69:21:69:21 | T | +| generics.swift:69:41:69:49 | transform | Return | generics.swift:69:24:69:24 | U | +| generics.swift:69:67:72:1 | Block | | generics.swift:69:24:69:24 | U | +| generics.swift:70:7:70:12 | result | | generics.swift:69:24:69:24 | U | +| generics.swift:70:16:70:24 | transform | | {EXTERNAL LOCATION} | Function | +| generics.swift:70:16:70:24 | transform | Args | {EXTERNAL LOCATION} | Tuple1 | +| generics.swift:70:16:70:24 | transform | Args.T0 | generics.swift:69:21:69:21 | T | +| generics.swift:70:16:70:24 | transform | Return | generics.swift:69:24:69:24 | U | +| generics.swift:70:16:70:31 | transform(...) | | generics.swift:69:24:69:24 | U | +| generics.swift:70:26:70:30 | value | | generics.swift:69:21:69:21 | T | +| generics.swift:71:10:71:15 | result | | generics.swift:69:24:69:24 | U | +| generics.swift:75:7:75:12 | result | | {EXTERNAL LOCATION} | Int | +| generics.swift:75:16:75:48 | applyTransform(...) | | {EXTERNAL LOCATION} | Int | +| generics.swift:75:31:75:31 | 5 | | {EXTERNAL LOCATION} | Int | +| generics.swift:75:34:75:47 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| generics.swift:75:34:75:47 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| generics.swift:75:34:75:47 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| generics.swift:75:34:75:47 | FunctionExpr | Return | {EXTERNAL LOCATION} | Int | +| generics.swift:75:36:75:36 | x | | {EXTERNAL LOCATION} | Int | +| generics.swift:75:41:75:41 | x | | {EXTERNAL LOCATION} | Int | +| generics.swift:75:41:75:45 | ... * ... | | {EXTERNAL LOCATION} | Int | +| generics.swift:75:41:75:45 | Block | | {EXTERNAL LOCATION} | Int | +| generics.swift:75:45:75:45 | 2 | | {EXTERNAL LOCATION} | Int | +| generics.swift:76:7:76:13 | strings | | {EXTERNAL LOCATION} | String | +| generics.swift:76:17:80:6 | applyTransform(...) | | {EXTERNAL LOCATION} | String | +| generics.swift:77:5:77:6 | 10 | | {EXTERNAL LOCATION} | Int | +| generics.swift:78:5:80:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| generics.swift:78:5:80:5 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| generics.swift:78:5:80:5 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| generics.swift:78:5:80:5 | FunctionExpr | Return | {EXTERNAL LOCATION} | String | +| generics.swift:79:7:79:7 | x | | {EXTERNAL LOCATION} | Int | +| generics.swift:79:12:79:20 | Block | | {EXTERNAL LOCATION} | String | +| generics.swift:79:12:79:20 | String(...) | | {EXTERNAL LOCATION} | String | +| generics.swift:79:19:79:19 | x | | {EXTERNAL LOCATION} | Int | +| generics.swift:94:7:94:11 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:96:10:96:14 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:96:20:98:3 | Block | | generics.swift:93:15:93:27 | T | +| generics.swift:97:5:97:8 | self | | generics.swift:93:1:113:1 | Wrapper | +| generics.swift:97:5:97:8 | self | T | generics.swift:93:15:93:27 | T | +| generics.swift:97:5:97:14 | ... .inner | | generics.swift:93:15:93:27 | T | +| generics.swift:97:5:97:22 | ... = ... | | generics.swift:93:15:93:27 | T | +| generics.swift:97:18:97:22 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:100:19:102:3 | Block | | generics.swift:93:15:93:27 | T | +| generics.swift:101:12:101:16 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:105:13:105:17 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:110:13:110:17 | inner | | generics.swift:93:15:93:27 | T | +| generics.swift:118:21:120:3 | Block | | {EXTERNAL LOCATION} | Int | +| generics.swift:119:12:119:15 | self | | {EXTERNAL LOCATION} | Int | +| generics.swift:119:12:119:19 | ... * ... | | {EXTERNAL LOCATION} | Int | +| generics.swift:119:19:119:19 | 2 | | {EXTERNAL LOCATION} | Int | +| generics.swift:122:24:124:3 | Block | | {EXTERNAL LOCATION} | String | +| generics.swift:123:12:123:19 | "number" | | {EXTERNAL LOCATION} | String | +| generics.swift:128:7:128:7 | w | | generics.swift:93:1:113:1 | Wrapper | +| generics.swift:128:7:128:7 | w | T | {EXTERNAL LOCATION} | Int | +| generics.swift:128:11:128:21 | Wrapper(...) | | generics.swift:93:1:113:1 | Wrapper | +| generics.swift:128:11:128:21 | Wrapper(...) | T | {EXTERNAL LOCATION} | Int | +| generics.swift:128:19:128:20 | 42 | | {EXTERNAL LOCATION} | Int | +| generics.swift:129:7:129:7 | v | | {EXTERNAL LOCATION} | Int | +| generics.swift:129:11:129:11 | w | | generics.swift:93:1:113:1 | Wrapper | +| generics.swift:129:11:129:11 | w | T | {EXTERNAL LOCATION} | Int | +| generics.swift:129:11:129:17 | ... .get(...) | | {EXTERNAL LOCATION} | Int | +| generics.swift:130:7:130:7 | z | | {EXTERNAL LOCATION} | Int | +| generics.swift:130:11:130:11 | w | | generics.swift:93:1:113:1 | Wrapper | +| generics.swift:130:11:130:11 | w | T | {EXTERNAL LOCATION} | Int | +| generics.swift:130:11:130:21 | ... .callFoo(...) | | {EXTERNAL LOCATION} | Int | +| generics.swift:131:11:131:11 | w | | generics.swift:93:1:113:1 | Wrapper | +| generics.swift:131:11:131:11 | w | T | {EXTERNAL LOCATION} | Int | +| generics.swift:137:7:137:12 | value1 | | generics.swift:136:12:136:13 | T1 | +| generics.swift:138:7:138:12 | value2 | | generics.swift:136:16:136:17 | T2 | +| generics.swift:140:10:140:11 | v1 | | generics.swift:136:12:136:13 | T1 | +| generics.swift:140:20:140:21 | v2 | | generics.swift:136:16:136:17 | T2 | +| generics.swift:140:28:143:3 | Block | | generics.swift:136:16:136:17 | T2 | +| generics.swift:141:5:141:8 | self | | generics.swift:136:1:152:1 | Base | +| generics.swift:141:5:141:8 | self | T1 | generics.swift:136:12:136:13 | T1 | +| generics.swift:141:5:141:8 | self | T2 | generics.swift:136:16:136:17 | T2 | +| generics.swift:141:5:141:15 | ... .value1 | | generics.swift:136:12:136:13 | T1 | +| generics.swift:141:5:141:20 | ... = ... | | generics.swift:136:12:136:13 | T1 | +| generics.swift:141:19:141:20 | v1 | | generics.swift:136:12:136:13 | T1 | +| generics.swift:142:5:142:8 | self | | generics.swift:136:1:152:1 | Base | +| generics.swift:142:5:142:8 | self | T1 | generics.swift:136:12:136:13 | T1 | +| generics.swift:142:5:142:8 | self | T2 | generics.swift:136:16:136:17 | T2 | +| generics.swift:142:5:142:15 | ... .value2 | | generics.swift:136:16:136:17 | T2 | +| generics.swift:142:5:142:20 | ... = ... | | generics.swift:136:16:136:17 | T2 | +| generics.swift:142:19:142:20 | v2 | | generics.swift:136:16:136:17 | T2 | +| generics.swift:145:26:147:3 | Block | | generics.swift:136:12:136:13 | T1 | +| generics.swift:146:12:146:17 | value1 | | generics.swift:136:12:136:13 | T1 | +| generics.swift:149:26:151:3 | Block | | generics.swift:136:16:136:17 | T2 | +| generics.swift:150:12:150:17 | value2 | | generics.swift:136:16:136:17 | T2 | +| generics.swift:155:10:155:11 | v1 | | generics.swift:154:15:154:16 | T1 | +| generics.swift:155:20:155:21 | v2 | | generics.swift:154:19:154:20 | T2 | +| generics.swift:155:28:157:3 | Block | | generics.swift:136:1:152:1 | Base | +| generics.swift:155:28:157:3 | Block | T1 | generics.swift:154:19:154:20 | T2 | +| generics.swift:155:28:157:3 | Block | T2 | generics.swift:154:15:154:16 | T1 | +| generics.swift:156:5:156:9 | super | | generics.swift:136:1:152:1 | Base | +| generics.swift:156:5:156:9 | super | T1 | generics.swift:154:19:154:20 | T2 | +| generics.swift:156:5:156:9 | super | T2 | generics.swift:154:15:154:16 | T1 | +| generics.swift:156:5:156:22 | ... .init(...) | | generics.swift:136:1:152:1 | Base | +| generics.swift:156:5:156:22 | ... .init(...) | T1 | generics.swift:154:19:154:20 | T2 | +| generics.swift:156:5:156:22 | ... .init(...) | T2 | generics.swift:154:15:154:16 | T1 | +| generics.swift:156:16:156:17 | v2 | | generics.swift:154:19:154:20 | T2 | +| generics.swift:156:20:156:21 | v1 | | generics.swift:154:15:154:16 | T1 | +| generics.swift:159:22:159:23 | v1 | | generics.swift:154:15:154:16 | T1 | +| generics.swift:165:10:165:10 | v | | {EXTERNAL LOCATION} | Array | +| generics.swift:165:10:165:10 | v | Element | generics.swift:164:22:164:22 | D | +| generics.swift:165:18:167:3 | Block | | generics.swift:154:1:162:1 | Derived | +| generics.swift:165:18:167:3 | Block | T1 | {EXTERNAL LOCATION} | Array | +| generics.swift:165:18:167:3 | Block | T1.Element | generics.swift:164:22:164:22 | D | +| generics.swift:165:18:167:3 | Block | T2 | {EXTERNAL LOCATION} | Bool | +| generics.swift:166:5:166:9 | super | | generics.swift:154:1:162:1 | Derived | +| generics.swift:166:5:166:9 | super | T1 | {EXTERNAL LOCATION} | Array | +| generics.swift:166:5:166:9 | super | T1.Element | generics.swift:164:22:164:22 | D | +| generics.swift:166:5:166:9 | super | T2 | {EXTERNAL LOCATION} | Bool | +| generics.swift:166:5:166:23 | ... .init(...) | | generics.swift:154:1:162:1 | Derived | +| generics.swift:166:5:166:23 | ... .init(...) | T1 | {EXTERNAL LOCATION} | Array | +| generics.swift:166:5:166:23 | ... .init(...) | T1.Element | generics.swift:164:22:164:22 | D | +| generics.swift:166:5:166:23 | ... .init(...) | T2 | {EXTERNAL LOCATION} | Bool | +| generics.swift:166:16:166:16 | v | | {EXTERNAL LOCATION} | Array | +| generics.swift:166:16:166:16 | v | Element | generics.swift:164:22:164:22 | D | +| generics.swift:166:19:166:22 | true | | {EXTERNAL LOCATION} | Bool | +| generics.swift:174:38:174:43 | value1 | | generics.swift:174:10:174:11 | T1 | +| generics.swift:174:52:174:57 | value2 | | generics.swift:174:14:174:15 | T2 | +| generics.swift:174:66:174:69 | base | | generics.swift:174:18:174:33 | T3 | +| generics.swift:174:82:176:1 | Block | | generics.swift:174:18:174:33 | T3 | +| generics.swift:175:10:175:13 | base | | generics.swift:174:18:174:33 | T3 | +| generics.swift:178:21:178:26 | value1 | | generics.swift:178:11:178:12 | T1 | +| generics.swift:178:35:178:40 | value2 | | generics.swift:178:15:178:16 | T2 | +| generics.swift:178:49:178:52 | base | | generics.swift:136:1:152:1 | Base | +| generics.swift:178:49:178:52 | base | T1 | generics.swift:178:11:178:12 | T1 | +| generics.swift:178:49:178:52 | base | T2 | generics.swift:178:15:178:16 | T2 | +| generics.swift:182:35:182:40 | value1 | | generics.swift:182:10:182:10 | A | +| generics.swift:182:48:182:53 | value2 | | generics.swift:182:13:182:13 | B | +| generics.swift:182:61:182:64 | base | | generics.swift:182:16:182:30 | C | +| generics.swift:182:75:185:1 | Block | | generics.swift:182:16:182:30 | C | +| generics.swift:183:10:183:13 | base | | generics.swift:182:16:182:30 | C | +| generics.swift:187:19:187:24 | value1 | | generics.swift:187:11:187:11 | A | +| generics.swift:187:32:187:37 | value2 | | generics.swift:187:14:187:14 | B | +| generics.swift:187:45:187:48 | base | | generics.swift:136:1:152:1 | Base | +| generics.swift:187:45:187:48 | base | T1 | generics.swift:187:11:187:11 | A | +| generics.swift:187:45:187:48 | base | T2 | {EXTERNAL LOCATION} | Array | +| generics.swift:187:45:187:48 | base | T2.Element | generics.swift:187:14:187:14 | B | +| generics.swift:189:34:189:39 | value1 | | generics.swift:189:10:189:10 | A | +| generics.swift:189:47:189:52 | value2 | | generics.swift:189:13:189:13 | B | +| generics.swift:189:60:189:63 | base | | generics.swift:189:16:189:29 | C | +| generics.swift:189:74:192:1 | Block | | generics.swift:189:16:189:29 | C | +| generics.swift:190:10:190:13 | base | | generics.swift:189:16:189:29 | C | +| generics.swift:194:19:194:24 | value1 | | generics.swift:194:11:194:11 | A | +| generics.swift:194:32:194:37 | value2 | | generics.swift:194:14:194:14 | B | +| generics.swift:194:45:194:48 | base | | generics.swift:136:1:152:1 | Base | +| generics.swift:194:45:194:48 | base | T1 | generics.swift:194:11:194:11 | A | +| generics.swift:194:45:194:48 | base | T2 | {EXTERNAL LOCATION} | Optional | +| generics.swift:194:45:194:48 | base | T2.Wrapped | generics.swift:194:14:194:14 | B | +| generics.swift:197:7:197:7 | d | | generics.swift:154:1:162:1 | Derived | +| generics.swift:197:7:197:7 | d | T1 | {EXTERNAL LOCATION} | Int | +| generics.swift:197:7:197:7 | d | T2 | {EXTERNAL LOCATION} | String | +| generics.swift:197:11:197:25 | Derived(...) | | generics.swift:154:1:162:1 | Derived | +| generics.swift:197:11:197:25 | Derived(...) | T1 | {EXTERNAL LOCATION} | Int | +| generics.swift:197:11:197:25 | Derived(...) | T2 | {EXTERNAL LOCATION} | String | +| generics.swift:197:19:197:19 | 1 | | {EXTERNAL LOCATION} | Int | +| generics.swift:197:22:197:24 | "x" | | {EXTERNAL LOCATION} | String | +| generics.swift:198:7:198:8 | v1 | | {EXTERNAL LOCATION} | String | +| generics.swift:198:12:198:12 | d | | generics.swift:154:1:162:1 | Derived | +| generics.swift:198:12:198:12 | d | T1 | {EXTERNAL LOCATION} | Int | +| generics.swift:198:12:198:12 | d | T2 | {EXTERNAL LOCATION} | String | +| generics.swift:198:12:198:24 | ... .getValue1(...) | | {EXTERNAL LOCATION} | String | +| generics.swift:199:7:199:8 | v2 | | {EXTERNAL LOCATION} | Int | +| generics.swift:199:12:199:12 | d | | generics.swift:154:1:162:1 | Derived | +| generics.swift:199:12:199:12 | d | T1 | {EXTERNAL LOCATION} | Int | +| generics.swift:199:12:199:12 | d | T2 | {EXTERNAL LOCATION} | String | +| generics.swift:199:12:199:24 | ... .getValue2(...) | | {EXTERNAL LOCATION} | Int | +| generics.swift:201:7:201:8 | dd | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:201:7:201:8 | dd | D | {EXTERNAL LOCATION} | String | +| generics.swift:201:12:201:36 | DerivedDerived(...) | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:201:12:201:36 | DerivedDerived(...) | D | {EXTERNAL LOCATION} | String | +| generics.swift:201:27:201:35 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:201:27:201:35 | ArrayLiteral | Element | {EXTERNAL LOCATION} | String | +| generics.swift:201:28:201:34 | "hello" | | {EXTERNAL LOCATION} | String | +| generics.swift:202:7:202:9 | vv1 | | {EXTERNAL LOCATION} | Bool | +| generics.swift:202:13:202:14 | dd | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:202:13:202:14 | dd | D | {EXTERNAL LOCATION} | String | +| generics.swift:202:13:202:26 | ... .getValue1(...) | | {EXTERNAL LOCATION} | Bool | +| generics.swift:203:7:203:9 | vv2 | | {EXTERNAL LOCATION} | Array | +| generics.swift:203:7:203:9 | vv2 | Element | {EXTERNAL LOCATION} | String | +| generics.swift:203:13:203:14 | dd | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:203:13:203:14 | dd | D | {EXTERNAL LOCATION} | String | +| generics.swift:203:13:203:26 | ... .getValue2(...) | | {EXTERNAL LOCATION} | Array | +| generics.swift:203:13:203:26 | ... .getValue2(...) | Element | {EXTERNAL LOCATION} | String | +| generics.swift:205:7:205:7 | x | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:205:7:205:7 | x | D | {EXTERNAL LOCATION} | Int | +| generics.swift:205:11:205:45 | foo(...) | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:205:11:205:45 | foo(...) | D | {EXTERNAL LOCATION} | Int | +| generics.swift:205:15:205:19 | false | | {EXTERNAL LOCATION} | Bool | +| generics.swift:205:22:205:24 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:205:22:205:24 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| generics.swift:205:23:205:23 | 2 | | {EXTERNAL LOCATION} | Int | +| generics.swift:205:27:205:44 | DerivedDerived(...) | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:205:27:205:44 | DerivedDerived(...) | D | {EXTERNAL LOCATION} | Int | +| generics.swift:205:42:205:43 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:205:42:205:43 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| generics.swift:207:8:207:12 | false | | {EXTERNAL LOCATION} | Bool | +| generics.swift:207:15:207:17 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:207:15:207:17 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| generics.swift:207:16:207:16 | 2 | | {EXTERNAL LOCATION} | Int | +| generics.swift:207:20:207:37 | DerivedDerived(...) | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:207:20:207:37 | DerivedDerived(...) | D | {EXTERNAL LOCATION} | Int | +| generics.swift:207:35:207:36 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:207:35:207:36 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| generics.swift:209:7:209:7 | y | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:209:7:209:7 | y | D | {EXTERNAL LOCATION} | Int | +| generics.swift:209:11:209:43 | bar(...) | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:209:11:209:43 | bar(...) | D | {EXTERNAL LOCATION} | Int | +| generics.swift:209:15:209:19 | false | | {EXTERNAL LOCATION} | Bool | +| generics.swift:209:22:209:22 | 2 | | {EXTERNAL LOCATION} | Int | +| generics.swift:209:25:209:42 | DerivedDerived(...) | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:209:25:209:42 | DerivedDerived(...) | D | {EXTERNAL LOCATION} | Int | +| generics.swift:209:40:209:41 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:209:40:209:41 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| generics.swift:211:8:211:12 | false | | {EXTERNAL LOCATION} | Bool | +| generics.swift:211:15:211:15 | 2 | | {EXTERNAL LOCATION} | Int | +| generics.swift:211:18:211:35 | DerivedDerived(...) | | generics.swift:164:1:172:1 | DerivedDerived | +| generics.swift:211:18:211:35 | DerivedDerived(...) | D | {EXTERNAL LOCATION} | Int | +| generics.swift:211:33:211:34 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| generics.swift:211:33:211:34 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| generics.swift:213:7:213:7 | w | | generics.swift:154:1:162:1 | Derived | +| generics.swift:213:7:213:7 | w | T1 | {EXTERNAL LOCATION} | Optional | +| generics.swift:213:7:213:7 | w | T1.Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:213:7:213:7 | w | T2 | {EXTERNAL LOCATION} | Bool | +| generics.swift:213:11:213:47 | baz(...) | | generics.swift:154:1:162:1 | Derived | +| generics.swift:213:11:213:47 | baz(...) | T1 | {EXTERNAL LOCATION} | Optional | +| generics.swift:213:11:213:47 | baz(...) | T1.Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:213:11:213:47 | baz(...) | T2 | {EXTERNAL LOCATION} | Bool | +| generics.swift:213:15:213:19 | false | | {EXTERNAL LOCATION} | Bool | +| generics.swift:213:22:213:22 | 2 | | {EXTERNAL LOCATION} | Int | +| generics.swift:213:25:213:46 | Derived(...) | | generics.swift:154:1:162:1 | Derived | +| generics.swift:213:25:213:46 | Derived(...) | T1 | {EXTERNAL LOCATION} | Optional | +| generics.swift:213:25:213:46 | Derived(...) | T1.Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:213:33:213:45 | ... .none | | {EXTERNAL LOCATION} | Optional | +| generics.swift:213:33:213:45 | ... .none | Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:215:8:215:12 | false | | {EXTERNAL LOCATION} | Bool | +| generics.swift:215:15:215:15 | 2 | | {EXTERNAL LOCATION} | Int | +| generics.swift:215:18:215:39 | Derived(...) | | generics.swift:154:1:162:1 | Derived | +| generics.swift:215:18:215:39 | Derived(...) | T1 | {EXTERNAL LOCATION} | Optional | +| generics.swift:215:18:215:39 | Derived(...) | T1.Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:215:26:215:38 | ... .none | | {EXTERNAL LOCATION} | Optional | +| generics.swift:215:26:215:38 | ... .none | Wrapped | {EXTERNAL LOCATION} | Int | +| generics.swift:227:22:229:3 | Block | | generics.swift:220:1:224:1 | MyProtocol2 | +| generics.swift:228:12:228:15 | self | | generics.swift:220:1:224:1 | MyProtocol2 | +| generics.swift:233:7:233:11 | value | | generics.swift:232:15:232:15 | T | +| generics.swift:235:10:235:14 | value | | generics.swift:232:15:232:15 | T | +| generics.swift:235:20:237:3 | Block | | generics.swift:232:15:232:15 | T | +| generics.swift:236:5:236:8 | self | | generics.swift:232:1:238:1 | MyClass | +| generics.swift:236:5:236:8 | self | T | generics.swift:232:15:232:15 | T | +| generics.swift:236:5:236:14 | ... .value | | generics.swift:232:15:232:15 | T | +| generics.swift:236:5:236:22 | ... = ... | | generics.swift:232:15:232:15 | T | +| generics.swift:236:18:236:22 | value | | generics.swift:232:15:232:15 | T | +| generics.swift:248:32:248:32 | c | | generics.swift:248:14:248:27 | T | +| generics.swift:249:10:249:10 | c | | generics.swift:248:14:248:27 | T | +| generics.swift:252:32:252:32 | c | | generics.swift:252:14:252:27 | T | +| generics.swift:253:10:253:10 | c | | generics.swift:252:14:252:27 | T | +| generics.swift:257:7:257:7 | c | | generics.swift:232:1:238:1 | MyClass | +| generics.swift:257:7:257:7 | c | T | {EXTERNAL LOCATION} | Int | +| generics.swift:257:11:257:21 | MyClass(...) | | generics.swift:232:1:238:1 | MyClass | +| generics.swift:257:11:257:21 | MyClass(...) | T | {EXTERNAL LOCATION} | Int | +| generics.swift:257:19:257:20 | 42 | | {EXTERNAL LOCATION} | Int | +| generics.swift:258:11:258:11 | c | | generics.swift:232:1:238:1 | MyClass | +| generics.swift:258:11:258:11 | c | T | {EXTERNAL LOCATION} | Int | +| generics.swift:259:11:259:11 | c | | generics.swift:232:1:238:1 | MyClass | +| generics.swift:259:11:259:11 | c | T | {EXTERNAL LOCATION} | Int | +| generics.swift:260:20:260:20 | c | | generics.swift:232:1:238:1 | MyClass | +| generics.swift:260:20:260:20 | c | T | {EXTERNAL LOCATION} | Int | +| generics.swift:278:30:280:3 | Block | | {EXTERNAL LOCATION} | String | +| generics.swift:279:12:279:17 | "base" | | {EXTERNAL LOCATION} | String | +| generics.swift:282:29:284:3 | Block | | {EXTERNAL LOCATION} | String | +| generics.swift:283:12:283:16 | "sub" | | {EXTERNAL LOCATION} | String | +| generics.swift:287:65:287:69 | value | | generics.swift:287:33:287:60 | T | +| generics.swift:288:10:288:14 | value | | generics.swift:287:33:287:60 | T | +| generics.swift:292:42:292:63 | StringAssociatedType(...) | | generics.swift:275:1:285:1 | StringAssociatedType | +| generics.swift:306:25:308:3 | Block | | {EXTERNAL LOCATION} | Int | +| generics.swift:307:12:307:13 | 42 | | {EXTERNAL LOCATION} | Int | +| generics.swift:316:7:316:11 | value | | {EXTERNAL LOCATION} | Int | +| generics.swift:316:15:316:66 | getPrimaryAssociatedType(...) | | {EXTERNAL LOCATION} | Int | +| generics.swift:316:40:316:65 | IntPrimaryAssociatedType(...) | | generics.swift:303:1:309:1 | IntPrimaryAssociatedType | +| key_paths.swift:4:7:4:7 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:5:7:5:7 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:7:8:7:8 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:7:19:7:19 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:7:30:10:3 | Block | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:8:5:8:8 | self | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:8:5:8:10 | ... .x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:8:5:8:14 | ... = ... | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:8:14:8:14 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:9:5:9:8 | self | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:9:5:9:10 | ... .y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:9:5:9:14 | ... = ... | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:9:14:9:14 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:13:13:13 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:13:13:17 | ... * ... | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:13:13:25 | ... + ... | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:17:13:17 | x | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:21:13:21 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:21:13:25 | ... * ... | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:13:25:13:25 | y | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:18:7:18:11 | start | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:19:7:19:9 | end | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:21:8:21:12 | start | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:21:22:21:24 | end | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:21:34:24:3 | Block | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:22:5:22:8 | self | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:22:5:22:14 | ... .start | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:22:5:22:22 | ... = ... | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:22:18:22:22 | start | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:23:5:23:8 | self | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:23:5:23:12 | ... .end | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:23:5:23:18 | ... = ... | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:23:16:23:18 | end | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:31:7:31:7 | p | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:31:11:31:31 | Point(...) | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:31:20:31:22 | 3.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:31:28:31:30 | 4.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:32:14:32:14 | p | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:33:14:33:14 | p | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:42:7:42:7 | s | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:42:11:42:31 | Point(...) | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:42:20:42:22 | 0.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:42:28:42:30 | 0.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:43:7:43:7 | e | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:43:11:43:31 | Point(...) | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:43:20:43:22 | 1.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:43:28:43:30 | 1.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:44:7:44:10 | line | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:44:14:44:35 | Line(...) | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:44:26:44:26 | s | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:44:34:44:34 | e | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:45:16:45:19 | line | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:46:14:46:17 | line | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:53:13:53:14 | 42 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:59:7:59:10 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:60:7:60:13 | address | | {EXTERNAL LOCATION} | Optional | +| key_paths.swift:60:7:60:13 | address | Wrapped | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:62:8:62:11 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:62:22:62:28 | address | | {EXTERNAL LOCATION} | Optional | +| key_paths.swift:62:22:62:28 | address | Wrapped | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:62:41:65:3 | Block | | {EXTERNAL LOCATION} | Optional | +| key_paths.swift:62:41:65:3 | Block | Wrapped | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:63:5:63:8 | self | | key_paths.swift:58:1:66:1 | Person | +| key_paths.swift:63:5:63:13 | ... .name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:63:5:63:20 | ... = ... | | {EXTERNAL LOCATION} | String | +| key_paths.swift:63:17:63:20 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:64:5:64:8 | self | | key_paths.swift:58:1:66:1 | Person | +| key_paths.swift:64:5:64:16 | ... .address | | {EXTERNAL LOCATION} | Optional | +| key_paths.swift:64:5:64:16 | ... .address | Wrapped | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:64:5:64:26 | ... = ... | | {EXTERNAL LOCATION} | Optional | +| key_paths.swift:64:5:64:26 | ... = ... | Wrapped | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:64:20:64:26 | address | | {EXTERNAL LOCATION} | Optional | +| key_paths.swift:64:20:64:26 | address | Wrapped | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:69:7:69:10 | city | | {EXTERNAL LOCATION} | String | +| key_paths.swift:70:7:70:9 | zip | | {EXTERNAL LOCATION} | String | +| key_paths.swift:72:8:72:11 | city | | {EXTERNAL LOCATION} | String | +| key_paths.swift:72:22:72:24 | zip | | {EXTERNAL LOCATION} | String | +| key_paths.swift:72:35:75:3 | Block | | {EXTERNAL LOCATION} | String | +| key_paths.swift:73:5:73:8 | self | | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:73:5:73:13 | ... .city | | {EXTERNAL LOCATION} | String | +| key_paths.swift:73:5:73:20 | ... = ... | | {EXTERNAL LOCATION} | String | +| key_paths.swift:73:17:73:20 | city | | {EXTERNAL LOCATION} | String | +| key_paths.swift:74:5:74:8 | self | | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:74:5:74:12 | ... .zip | | {EXTERNAL LOCATION} | String | +| key_paths.swift:74:5:74:18 | ... = ... | | {EXTERNAL LOCATION} | String | +| key_paths.swift:74:16:74:18 | zip | | {EXTERNAL LOCATION} | String | +| key_paths.swift:80:7:80:10 | addr | | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:80:14:80:47 | Address(...) | | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:80:28:80:32 | "NYC" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:80:40:80:46 | "10001" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:81:7:81:12 | person | | key_paths.swift:58:1:66:1 | Person | +| key_paths.swift:81:16:81:51 | Person(...) | | key_paths.swift:58:1:66:1 | Person | +| key_paths.swift:81:29:81:35 | "Alice" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:81:47:81:50 | addr | | key_paths.swift:68:1:76:1 | Address | +| key_paths.swift:83:14:83:19 | person | | key_paths.swift:58:1:66:1 | Person | +| key_paths.swift:89:7:89:10 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:90:7:90:12 | salary | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:92:8:92:11 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:92:22:92:27 | salary | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:92:35:95:3 | Block | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:93:5:93:8 | self | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:93:5:93:13 | ... .name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:93:5:93:20 | ... = ... | | {EXTERNAL LOCATION} | String | +| key_paths.swift:93:17:93:20 | name | | {EXTERNAL LOCATION} | String | +| key_paths.swift:94:5:94:8 | self | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:94:5:94:15 | ... .salary | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:94:5:94:24 | ... = ... | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:94:19:94:24 | salary | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:98:27:98:31 | items | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:98:27:98:31 | items | Element | key_paths.swift:98:19:98:19 | T | +| key_paths.swift:98:39:98:45 | keyPath | unknown type parameter 0 | key_paths.swift:98:19:98:19 | T | +| key_paths.swift:98:39:98:45 | keyPath | unknown type parameter 1 | key_paths.swift:98:22:98:22 | V | +| key_paths.swift:98:70:100:1 | Block | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:98:70:100:1 | Block | Element | key_paths.swift:98:22:98:22 | V | +| key_paths.swift:99:10:99:14 | items | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:99:10:99:14 | items | Element | key_paths.swift:98:19:98:19 | T | +| key_paths.swift:99:10:99:43 | ... .map(...) | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:99:10:99:43 | ... .map(...) | Element | key_paths.swift:98:22:98:22 | V | +| key_paths.swift:99:20:99:43 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| key_paths.swift:99:34:99:40 | keyPath | unknown type parameter 0 | key_paths.swift:98:19:98:19 | T | +| key_paths.swift:99:34:99:40 | keyPath | unknown type parameter 1 | key_paths.swift:98:22:98:22 | V | +| key_paths.swift:103:7:103:8 | e1 | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:103:12:103:47 | Employee(...) | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:103:27:103:33 | "Alice" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:103:44:103:46 | 100 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:104:7:104:8 | e2 | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:104:12:104:45 | Employee(...) | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:104:27:104:31 | "Bob" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:104:42:104:44 | 200 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:105:7:105:15 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:105:7:105:15 | employees | Element | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:105:19:105:26 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:105:19:105:26 | ArrayLiteral | Element | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:105:20:105:21 | e1 | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:105:24:105:25 | e2 | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:106:7:106:11 | names | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:106:15:106:54 | extractField(...) | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:106:28:106:36 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:106:28:106:36 | employees | Element | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:107:14:107:18 | names | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:107:20:107:20 | 0 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:108:7:108:14 | salaries | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:108:18:108:59 | extractField(...) | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:108:31:108:39 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:108:31:108:39 | employees | Element | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:109:16:109:23 | salaries | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:109:25:109:25 | 0 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:115:7:115:10 | item | | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:117:8:117:11 | item | | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:117:17:119:3 | Block | | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:118:5:118:8 | self | | key_paths.swift:114:1:120:1 | KPContainer | +| key_paths.swift:118:5:118:8 | self | T | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:118:5:118:13 | ... .item | | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:118:5:118:20 | ... = ... | | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:118:17:118:20 | item | | key_paths.swift:114:19:114:19 | T | +| key_paths.swift:124:7:124:7 | c | | key_paths.swift:114:1:120:1 | KPContainer | +| key_paths.swift:124:7:124:7 | c | T | {EXTERNAL LOCATION} | Int | +| key_paths.swift:124:11:124:31 | KPContainer(...) | | key_paths.swift:114:1:120:1 | KPContainer | +| key_paths.swift:124:11:124:31 | KPContainer(...) | T | {EXTERNAL LOCATION} | Int | +| key_paths.swift:124:29:124:30 | 42 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:125:11:125:11 | c | | key_paths.swift:114:1:120:1 | KPContainer | +| key_paths.swift:125:11:125:11 | c | T | {EXTERNAL LOCATION} | Int | +| key_paths.swift:131:7:131:7 | p | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:131:11:131:31 | Point(...) | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:131:20:131:22 | 1.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:131:28:131:30 | 2.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:133:3:133:3 | p | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:133:3:133:17 | p(...) | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:133:3:133:24 | ... = ... | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:133:21:133:24 | 10.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:134:14:134:14 | p | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:144:7:144:7 | s | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:144:11:144:31 | Point(...) | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:144:20:144:22 | 5.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:144:28:144:30 | 6.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:145:7:145:7 | e | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:145:11:145:31 | Point(...) | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:145:20:145:22 | 7.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:145:28:145:30 | 8.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:146:7:146:10 | line | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:146:14:146:35 | Line(...) | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:146:26:146:26 | s | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:146:34:146:34 | e | | key_paths.swift:3:1:15:1 | Point | +| key_paths.swift:147:13:147:16 | line | | key_paths.swift:17:1:25:1 | Line | +| key_paths.swift:153:7:153:8 | e1 | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:153:12:153:47 | Employee(...) | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:153:27:153:33 | "Alice" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:153:44:153:46 | 100 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:154:7:154:8 | e2 | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:154:12:154:45 | Employee(...) | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:154:27:154:31 | "Bob" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:154:42:154:44 | 200 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:155:7:155:15 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:155:7:155:15 | employees | Element | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:155:19:155:26 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:155:19:155:26 | ArrayLiteral | Element | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:155:20:155:21 | e1 | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:155:24:155:25 | e2 | | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:156:7:156:11 | names | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:156:15:156:23 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:156:15:156:23 | employees | Element | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:156:15:156:35 | ... .map(...) | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:157:14:157:18 | names | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:157:20:157:20 | 0 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:158:7:158:14 | salaries | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:158:18:158:26 | employees | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:158:18:158:26 | employees | Element | key_paths.swift:88:1:96:1 | Employee | +| key_paths.swift:158:18:158:40 | ... .map(...) | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:159:16:159:23 | salaries | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:159:25:159:25 | 0 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:165:7:165:11 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:167:8:167:12 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:167:23:169:3 | Block | | {EXTERNAL LOCATION} | String | +| key_paths.swift:168:5:168:8 | self | | key_paths.swift:164:1:170:1 | Shape2 | +| key_paths.swift:168:5:168:14 | ... .color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:168:5:168:22 | ... = ... | | {EXTERNAL LOCATION} | String | +| key_paths.swift:168:18:168:22 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:173:7:173:12 | radius | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:175:8:175:12 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:175:23:175:28 | radius | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:175:39:178:3 | Block | | key_paths.swift:164:1:170:1 | Shape2 | +| key_paths.swift:176:5:176:8 | self | | key_paths.swift:172:1:179:1 | Circle2 | +| key_paths.swift:176:5:176:15 | ... .radius | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:176:5:176:24 | ... = ... | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:176:19:176:24 | radius | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:177:5:177:9 | super | | key_paths.swift:164:1:170:1 | Shape2 | +| key_paths.swift:177:5:177:28 | ... .init(...) | | key_paths.swift:164:1:170:1 | Shape2 | +| key_paths.swift:177:23:177:27 | color | | {EXTERNAL LOCATION} | String | +| key_paths.swift:185:7:185:7 | c | | key_paths.swift:172:1:179:1 | Circle2 | +| key_paths.swift:185:11:185:44 | Circle2(...) | | key_paths.swift:172:1:179:1 | Circle2 | +| key_paths.swift:185:26:185:30 | "red" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:185:41:185:43 | 5.0 | | {EXTERNAL LOCATION} | Double | +| key_paths.swift:186:13:186:13 | c | | key_paths.swift:172:1:179:1 | Circle2 | +| key_paths.swift:187:13:187:13 | c | | key_paths.swift:172:1:179:1 | Circle2 | +| key_paths.swift:195:7:195:11 | tuple | | {EXTERNAL LOCATION} | Tuple2 | +| key_paths.swift:195:7:195:11 | tuple | T0 | {EXTERNAL LOCATION} | Int | +| key_paths.swift:195:7:195:11 | tuple | T1 | {EXTERNAL LOCATION} | String | +| key_paths.swift:195:15:195:27 | TupleExpr | | {EXTERNAL LOCATION} | Tuple2 | +| key_paths.swift:195:15:195:27 | TupleExpr | T0 | {EXTERNAL LOCATION} | Int | +| key_paths.swift:195:15:195:27 | TupleExpr | T1 | {EXTERNAL LOCATION} | String | +| key_paths.swift:195:16:195:17 | 42 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:195:20:195:26 | "hello" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:196:15:196:19 | tuple | | {EXTERNAL LOCATION} | Tuple2 | +| key_paths.swift:196:15:196:19 | tuple | T0 | {EXTERNAL LOCATION} | Int | +| key_paths.swift:196:15:196:19 | tuple | T1 | {EXTERNAL LOCATION} | String | +| key_paths.swift:197:16:197:20 | tuple | | {EXTERNAL LOCATION} | Tuple2 | +| key_paths.swift:197:16:197:20 | tuple | T0 | {EXTERNAL LOCATION} | Int | +| key_paths.swift:197:16:197:20 | tuple | T1 | {EXTERNAL LOCATION} | String | +| key_paths.swift:204:7:204:9 | arr | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:204:7:204:9 | arr | Element | {EXTERNAL LOCATION} | Int | +| key_paths.swift:204:13:204:24 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:204:13:204:24 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| key_paths.swift:204:14:204:15 | 10 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:204:18:204:19 | 20 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:204:22:204:23 | 30 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:205:15:205:17 | arr | | {EXTERNAL LOCATION} | Array | +| key_paths.swift:205:15:205:17 | arr | Element | {EXTERNAL LOCATION} | Int | +| key_paths.swift:208:15:208:17 | "x" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:208:20:208:20 | 1 | | {EXTERNAL LOCATION} | Int | +| key_paths.swift:208:23:208:25 | "y" | | {EXTERNAL LOCATION} | String | +| key_paths.swift:208:28:208:28 | 2 | | {EXTERNAL LOCATION} | Int | +| lub.swift:12:7:12:7 | b | | lub.swift:5:1:7:1 | B | +| lub.swift:12:11:12:13 | B(...) | | lub.swift:5:1:7:1 | B | +| lub.swift:13:7:13:7 | c | | lub.swift:9:1:9:13 | C | +| lub.swift:13:11:13:13 | C(...) | | lub.swift:9:1:9:13 | C | +| lub.swift:14:7:14:7 | x | | lub.swift:5:1:7:1 | B | +| lub.swift:14:7:14:7 | x | | lub.swift:9:1:9:13 | C | +| lub.swift:14:11:14:11 | 2 | | {EXTERNAL LOCATION} | Int | +| lub.swift:14:11:14:15 | ... > ... | | {EXTERNAL LOCATION} | Int | +| lub.swift:14:11:14:23 | IfExpr | | lub.swift:5:1:7:1 | B | +| lub.swift:14:11:14:23 | IfExpr | | lub.swift:9:1:9:13 | C | +| lub.swift:14:15:14:15 | 3 | | {EXTERNAL LOCATION} | Int | +| lub.swift:14:19:14:19 | b | | lub.swift:5:1:7:1 | B | +| lub.swift:14:23:14:23 | c | | lub.swift:9:1:9:13 | C | +| overload_resolution.swift:4:17:4:17 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:4:35:6:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:5:12:5:16 | "int" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:8:17:8:17 | x | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:8:38:10:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:9:12:9:19 | "double" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:12:17:12:17 | x | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:12:38:14:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:13:12:13:19 | "string" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:16:17:16:17 | x | | {EXTERNAL LOCATION} | Bool | +| overload_resolution.swift:16:36:18:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:17:12:17:17 | "bool" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:22:7:22:7 | o | | overload_resolution.swift:3:1:19:1 | OverloadByType | +| overload_resolution.swift:22:11:22:26 | OverloadByType(...) | | overload_resolution.swift:3:1:19:1 | OverloadByType | +| overload_resolution.swift:23:7:23:8 | r1 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:23:12:23:12 | o | | overload_resolution.swift:3:1:19:1 | OverloadByType | +| overload_resolution.swift:23:12:23:23 | ... .handle(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:23:21:23:22 | 42 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:24:7:24:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:24:12:24:12 | o | | overload_resolution.swift:3:1:19:1 | OverloadByType | +| overload_resolution.swift:24:12:24:25 | ... .handle(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:24:21:24:24 | 3.14 | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:25:7:25:8 | r3 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:25:12:25:12 | o | | overload_resolution.swift:3:1:19:1 | OverloadByType | +| overload_resolution.swift:25:12:25:25 | ... .handle(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:25:21:25:24 | "hi" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:26:7:26:8 | r4 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:26:12:26:12 | o | | overload_resolution.swift:3:1:19:1 | OverloadByType | +| overload_resolution.swift:26:12:26:25 | ... .handle(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:26:21:26:24 | true | | {EXTERNAL LOCATION} | Bool | +| overload_resolution.swift:32:18:32:22 | width | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:32:40:34:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:33:12:33:18 | "width" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:36:18:36:23 | height | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:36:41:38:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:37:12:37:19 | "height" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:40:18:40:22 | width | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:40:30:40:35 | height | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:40:53:42:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:41:12:41:17 | "both" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:44:18:44:21 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:44:39:46:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:45:12:45:17 | "size" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:50:7:50:7 | o | | overload_resolution.swift:31:1:47:1 | OverloadByLabel | +| overload_resolution.swift:50:11:50:27 | OverloadByLabel(...) | | overload_resolution.swift:31:1:47:1 | OverloadByLabel | +| overload_resolution.swift:51:7:51:8 | r1 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:51:12:51:12 | o | | overload_resolution.swift:31:1:47:1 | OverloadByLabel | +| overload_resolution.swift:51:12:51:33 | ... .configure(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:51:31:51:32 | 10 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:52:7:52:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:52:12:52:12 | o | | overload_resolution.swift:31:1:47:1 | OverloadByLabel | +| overload_resolution.swift:52:12:52:34 | ... .configure(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:52:32:52:33 | 20 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:53:7:53:8 | r3 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:53:12:53:12 | o | | overload_resolution.swift:31:1:47:1 | OverloadByLabel | +| overload_resolution.swift:53:12:53:45 | ... .configure(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:53:31:53:32 | 10 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:53:43:53:44 | 20 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:54:7:54:8 | r4 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:54:12:54:12 | o | | overload_resolution.swift:31:1:47:1 | OverloadByLabel | +| overload_resolution.swift:54:12:54:32 | ... .configure(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:54:30:54:31 | 30 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:60:25:62:3 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:61:12:61:12 | 0 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:64:18:64:18 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:64:33:66:3 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:65:12:65:12 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:68:18:68:18 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:68:28:68:28 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:68:43:70:3 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:69:12:69:12 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:69:12:69:16 | ... + ... | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:69:16:69:16 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:72:18:72:18 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:72:28:72:28 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:72:38:72:38 | z | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:72:53:74:3 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:73:12:73:12 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:73:12:73:16 | ... + ... | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:73:12:73:20 | ... + ... | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:73:16:73:16 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:73:20:73:20 | z | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:78:7:78:7 | o | | overload_resolution.swift:59:1:75:1 | OverloadByArity | +| overload_resolution.swift:78:11:78:27 | OverloadByArity(...) | | overload_resolution.swift:59:1:75:1 | OverloadByArity | +| overload_resolution.swift:79:7:79:8 | r0 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:79:12:79:12 | o | | overload_resolution.swift:59:1:75:1 | OverloadByArity | +| overload_resolution.swift:79:12:79:22 | ... .compute(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:80:7:80:8 | r1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:80:12:80:12 | o | | overload_resolution.swift:59:1:75:1 | OverloadByArity | +| overload_resolution.swift:80:12:80:23 | ... .compute(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:80:22:80:22 | 1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:81:7:81:8 | r2 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:81:12:81:12 | o | | overload_resolution.swift:59:1:75:1 | OverloadByArity | +| overload_resolution.swift:81:12:81:26 | ... .compute(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:81:22:81:22 | 1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:81:25:81:25 | 2 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:82:7:82:8 | r3 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:82:12:82:12 | o | | overload_resolution.swift:59:1:75:1 | OverloadByArity | +| overload_resolution.swift:82:12:82:29 | ... .compute(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:82:22:82:22 | 1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:82:25:82:25 | 2 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:82:28:82:28 | 3 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:88:24:90:3 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:89:12:89:12 | 0 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:92:27:94:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:93:12:93:13 | "" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:96:27:98:3 | Block | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:97:12:97:14 | 0.0 | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:102:7:102:7 | o | | overload_resolution.swift:87:1:99:1 | OverloadByReturn | +| overload_resolution.swift:102:11:102:28 | OverloadByReturn(...) | | overload_resolution.swift:87:1:99:1 | OverloadByReturn | +| overload_resolution.swift:103:7:103:8 | r1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:103:17:103:17 | o | | overload_resolution.swift:87:1:99:1 | OverloadByReturn | +| overload_resolution.swift:103:17:103:26 | ... .create(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:103:17:103:26 | ... .create(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:103:17:103:26 | ... .create(...) | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:104:7:104:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:104:20:104:20 | o | | overload_resolution.swift:87:1:99:1 | OverloadByReturn | +| overload_resolution.swift:104:20:104:29 | ... .create(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:104:20:104:29 | ... .create(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:104:20:104:29 | ... .create(...) | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:105:7:105:8 | r3 | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:105:20:105:20 | o | | overload_resolution.swift:87:1:99:1 | OverloadByReturn | +| overload_resolution.swift:105:20:105:29 | ... .create(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:105:20:105:29 | ... .create(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:105:20:105:29 | ... .create(...) | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:111:18:111:18 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:111:36:113:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:112:12:112:21 | "concrete" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:115:21:115:21 | x | | overload_resolution.swift:115:16:115:16 | T | +| overload_resolution.swift:115:37:117:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:116:12:116:20 | "generic" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:121:7:121:7 | o | | overload_resolution.swift:110:1:118:1 | OverloadGenericVsConcrete | +| overload_resolution.swift:121:11:121:37 | OverloadGenericVsConcrete(...) | | overload_resolution.swift:110:1:118:1 | OverloadGenericVsConcrete | +| overload_resolution.swift:122:7:122:8 | r1 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:122:12:122:12 | o | | overload_resolution.swift:110:1:118:1 | OverloadGenericVsConcrete | +| overload_resolution.swift:122:12:122:24 | ... .process(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:122:22:122:23 | 42 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:123:7:123:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:123:12:123:12 | o | | overload_resolution.swift:110:1:118:1 | OverloadGenericVsConcrete | +| overload_resolution.swift:123:12:123:29 | ... .process(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:123:22:123:28 | "hello" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:124:7:124:8 | r3 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:124:12:124:12 | o | | overload_resolution.swift:110:1:118:1 | OverloadGenericVsConcrete | +| overload_resolution.swift:124:12:124:26 | ... .process(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:124:22:124:25 | true | | {EXTERNAL LOCATION} | Bool | +| overload_resolution.swift:129:21:129:21 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:129:39:131:1 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:130:10:130:14 | "int" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:133:21:133:21 | x | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:133:42:135:1 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:134:10:134:17 | "string" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:137:21:137:21 | x | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:137:42:139:1 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:138:10:138:17 | "double" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:142:7:142:8 | r1 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:142:12:142:27 | freeOverload(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:142:25:142:26 | 42 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:143:7:143:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:143:12:143:29 | freeOverload(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:143:25:143:28 | "hi" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:144:7:144:8 | r3 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:144:12:144:28 | freeOverload(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:144:25:144:27 | 1.5 | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:150:7:150:11 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:152:10:154:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:153:5:153:9 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:153:5:153:21 | ... = ... | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:153:13:153:21 | "default" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:156:8:156:10 | int | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:156:18:158:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:157:5:157:9 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:157:5:157:17 | ... = ... | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:157:13:157:17 | "int" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:160:8:160:10 | str | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:160:21:162:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:161:5:161:9 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:161:5:161:15 | ... = ... | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:161:13:161:15 | str | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:164:8:164:8 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:164:16:164:16 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:164:24:166:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:165:5:165:9 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:165:5:165:18 | ... = ... | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:165:13:165:18 | "pair" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:168:29:170:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:169:12:169:16 | value | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:174:7:174:8 | m1 | | overload_resolution.swift:149:1:171:1 | MultiInit | +| overload_resolution.swift:174:12:174:22 | MultiInit(...) | | overload_resolution.swift:149:1:171:1 | MultiInit | +| overload_resolution.swift:175:7:175:8 | m2 | | overload_resolution.swift:149:1:171:1 | MultiInit | +| overload_resolution.swift:175:12:175:28 | MultiInit(...) | | overload_resolution.swift:149:1:171:1 | MultiInit | +| overload_resolution.swift:175:27:175:27 | 5 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:176:7:176:8 | m3 | | overload_resolution.swift:149:1:171:1 | MultiInit | +| overload_resolution.swift:176:12:176:30 | MultiInit(...) | | overload_resolution.swift:149:1:171:1 | MultiInit | +| overload_resolution.swift:176:27:176:29 | "x" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:177:7:177:8 | m4 | | overload_resolution.swift:149:1:171:1 | MultiInit | +| overload_resolution.swift:177:12:177:32 | MultiInit(...) | | overload_resolution.swift:149:1:171:1 | MultiInit | +| overload_resolution.swift:177:25:177:25 | 1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:177:31:177:31 | 2 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:178:7:178:7 | v | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:178:11:178:12 | m1 | | overload_resolution.swift:149:1:171:1 | MultiInit | +| overload_resolution.swift:178:11:178:23 | ... .getValue(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:184:27:186:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:185:12:185:21 | "instance" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:188:34:190:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:189:12:189:19 | "static" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:194:7:194:7 | o | | overload_resolution.swift:183:1:191:1 | StaticVsInstance | +| overload_resolution.swift:194:11:194:28 | StaticVsInstance(...) | | overload_resolution.swift:183:1:191:1 | StaticVsInstance | +| overload_resolution.swift:195:7:195:8 | r1 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:195:12:195:12 | o | | overload_resolution.swift:183:1:191:1 | StaticVsInstance | +| overload_resolution.swift:195:12:195:21 | ... .action(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:196:7:196:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:196:12:196:36 | ... .action(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:206:29:208:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:207:12:207:20 | "default" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:210:26:212:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:211:12:211:18 | "extra" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:218:29:220:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:219:12:219:21 | "concrete" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:224:7:224:7 | d | | overload_resolution.swift:215:1:221:1 | DescribableImpl | +| overload_resolution.swift:224:11:224:27 | DescribableImpl(...) | | overload_resolution.swift:215:1:221:1 | DescribableImpl | +| overload_resolution.swift:225:7:225:8 | r1 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:225:12:225:12 | d | | overload_resolution.swift:215:1:221:1 | DescribableImpl | +| overload_resolution.swift:225:12:225:23 | ... .describe(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:226:7:226:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:226:12:226:12 | d | | overload_resolution.swift:215:1:221:1 | DescribableImpl | +| overload_resolution.swift:226:12:226:20 | ... .extra(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:234:27:236:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:235:12:235:17 | "base" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:238:29:240:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:239:12:239:21 | "baseOnly" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:244:19:246:3 | Block | | overload_resolution.swift:231:1:241:1 | Base | +| overload_resolution.swift:245:5:245:9 | super | | overload_resolution.swift:231:1:241:1 | Base | +| overload_resolution.swift:245:5:245:16 | ... .init(...) | | overload_resolution.swift:231:1:241:1 | Base | +| overload_resolution.swift:248:36:250:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:249:12:249:16 | "sub" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:252:28:254:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:253:12:253:20 | "subOnly" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:258:19:260:3 | Block | | overload_resolution.swift:243:1:255:1 | Sub | +| overload_resolution.swift:259:5:259:9 | super | | overload_resolution.swift:243:1:255:1 | Sub | +| overload_resolution.swift:259:5:259:16 | ... .init(...) | | overload_resolution.swift:243:1:255:1 | Sub | +| overload_resolution.swift:262:36:264:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:263:12:263:19 | "subsub" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:268:7:268:7 | b | | overload_resolution.swift:231:1:241:1 | Base | +| overload_resolution.swift:268:11:268:16 | Base(...) | | overload_resolution.swift:231:1:241:1 | Base | +| overload_resolution.swift:269:7:269:8 | rb | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:269:12:269:12 | b | | overload_resolution.swift:231:1:241:1 | Base | +| overload_resolution.swift:269:12:269:21 | ... .action(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:271:7:271:7 | s | | overload_resolution.swift:243:1:255:1 | Sub | +| overload_resolution.swift:271:11:271:15 | Sub(...) | | overload_resolution.swift:243:1:255:1 | Sub | +| overload_resolution.swift:272:7:272:8 | rs | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:272:12:272:12 | s | | overload_resolution.swift:243:1:255:1 | Sub | +| overload_resolution.swift:272:12:272:21 | ... .action(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:273:7:273:9 | rbo | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:273:13:273:13 | s | | overload_resolution.swift:243:1:255:1 | Sub | +| overload_resolution.swift:273:13:273:24 | ... .baseOnly(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:274:7:274:9 | rso | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:274:13:274:13 | s | | overload_resolution.swift:243:1:255:1 | Sub | +| overload_resolution.swift:274:13:274:23 | ... .subOnly(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:276:7:276:8 | ss | | overload_resolution.swift:257:1:265:1 | SubSub | +| overload_resolution.swift:276:12:276:19 | SubSub(...) | | overload_resolution.swift:257:1:265:1 | SubSub | +| overload_resolution.swift:277:7:277:9 | rss | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:277:13:277:14 | ss | | overload_resolution.swift:257:1:265:1 | SubSub | +| overload_resolution.swift:277:13:277:23 | ... .action(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:278:7:278:10 | rbo2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:278:14:278:15 | ss | | overload_resolution.swift:257:1:265:1 | SubSub | +| overload_resolution.swift:278:14:278:26 | ... .baseOnly(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:279:7:279:10 | rso2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:279:14:279:15 | ss | | overload_resolution.swift:257:1:265:1 | SubSub | +| overload_resolution.swift:279:14:279:25 | ... .subOnly(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:285:16:285:21 | target | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:285:42:287:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:286:12:286:17 | target | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:289:18:289:23 | source | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:289:44:291:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:290:12:290:17 | source | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:293:16:293:21 | target | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:293:37:293:42 | source | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:293:63:295:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:294:12:294:17 | target | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:294:12:294:26 | ... + ... | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:294:21:294:26 | source | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:299:7:299:7 | o | | overload_resolution.swift:284:1:296:1 | LabelVariants | +| overload_resolution.swift:299:11:299:25 | LabelVariants(...) | | overload_resolution.swift:284:1:296:1 | LabelVariants | +| overload_resolution.swift:300:7:300:8 | r1 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:300:12:300:12 | o | | overload_resolution.swift:284:1:296:1 | LabelVariants | +| overload_resolution.swift:300:12:300:26 | ... .send(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:300:23:300:25 | "x" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:301:7:301:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:301:12:301:12 | o | | overload_resolution.swift:284:1:296:1 | LabelVariants | +| overload_resolution.swift:301:12:301:28 | ... .send(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:301:25:301:27 | "y" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:302:7:302:8 | r3 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:302:12:302:12 | o | | overload_resolution.swift:284:1:296:1 | LabelVariants | +| overload_resolution.swift:302:12:302:37 | ... .send(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:302:23:302:25 | "x" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:302:34:302:36 | "y" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:312:29:312:40 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:312:38:312:38 | 0 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:316:32:316:45 | Block | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:316:41:316:43 | 0.0 | | {EXTERNAL LOCATION} | Double | +| overload_resolution.swift:319:35:319:35 | x | | overload_resolution.swift:319:20:319:30 | T | +| overload_resolution.swift:319:46:321:1 | Block | | overload_resolution.swift:319:20:319:30 | T | +| overload_resolution.swift:320:10:320:10 | x | | overload_resolution.swift:319:20:319:30 | T | +| overload_resolution.swift:323:36:323:36 | x | | overload_resolution.swift:323:20:323:31 | T | +| overload_resolution.swift:323:47:325:1 | Block | | overload_resolution.swift:323:20:323:31 | T | +| overload_resolution.swift:324:10:324:10 | x | | overload_resolution.swift:323:20:323:31 | T | +| overload_resolution.swift:328:7:328:8 | r1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:328:12:328:28 | constrainedId(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:328:26:328:27 | 42 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:329:7:329:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:329:12:329:33 | constrainedId(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:329:26:329:32 | "hello" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:335:7:335:10 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:337:10:337:13 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:337:19:339:3 | Block | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:338:5:338:8 | self | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:338:5:338:8 | self | T | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:338:5:338:13 | ... .item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:338:5:338:20 | ... = ... | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:338:17:338:20 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:341:19:343:3 | Block | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:342:12:342:15 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:345:18:345:24 | newItem | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:345:30:347:3 | Block | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:346:5:346:8 | item | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:346:5:346:18 | ... = ... | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:346:12:346:18 | newItem | | overload_resolution.swift:334:11:334:11 | T | +| overload_resolution.swift:351:7:351:12 | intBox | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:351:7:351:12 | intBox | T | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:351:16:351:22 | Box(...) | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:351:16:351:22 | Box(...) | T | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:351:20:351:21 | 10 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:352:7:352:12 | strBox | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:352:7:352:12 | strBox | T | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:352:16:352:24 | Box(...) | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:352:16:352:24 | Box(...) | T | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:352:20:352:23 | "hi" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:353:7:353:8 | v1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:353:12:353:17 | intBox | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:353:12:353:17 | intBox | T | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:353:12:353:23 | ... .get(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:354:7:354:8 | v2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:354:12:354:17 | strBox | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:354:12:354:17 | strBox | T | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:354:12:354:23 | ... .get(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:355:3:355:8 | intBox | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:355:3:355:8 | intBox | T | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:355:18:355:19 | 20 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:356:3:356:8 | strBox | | overload_resolution.swift:334:1:348:1 | Box | +| overload_resolution.swift:356:3:356:8 | strBox | T | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:356:18:356:22 | "bye" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:362:7:362:10 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:363:7:363:10 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:365:8:365:11 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:365:22:365:25 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:365:33:368:3 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:366:5:366:8 | self | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:366:5:366:13 | ... .name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:366:5:366:20 | ... = ... | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:366:17:366:20 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:367:5:367:8 | self | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:367:5:367:13 | ... .size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:367:5:367:20 | ... = ... | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:367:17:367:20 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:370:20:370:23 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:370:34:372:3 | Block | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:371:5:371:8 | self | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:371:5:371:34 | ... .init(...) | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:371:21:371:24 | name | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:371:33:371:33 | 1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:374:20:374:23 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:374:31:376:3 | Block | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:375:5:375:8 | self | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:375:5:375:42 | ... .init(...) | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:375:21:375:29 | "default" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:375:38:375:41 | size | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:380:7:380:8 | w1 | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:380:12:380:37 | Widget(...) | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:380:25:380:27 | "a" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:380:36:380:36 | 5 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:381:7:381:8 | w2 | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:381:12:381:28 | Widget(...) | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:381:25:381:27 | "b" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:382:7:382:8 | w3 | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:382:12:382:27 | Widget(...) | | overload_resolution.swift:361:1:377:1 | Widget | +| overload_resolution.swift:382:25:382:26 | 10 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:388:16:388:16 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:388:16:388:16 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:388:16:388:16 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:388:16:388:16 | f | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:388:40:390:3 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:389:12:389:12 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:389:12:389:12 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:389:12:389:12 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:389:12:389:12 | f | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:389:12:389:15 | f(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:389:14:389:14 | 0 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:392:16:392:16 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:392:16:392:16 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:392:16:392:16 | f | Args.T0 | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:392:16:392:16 | f | Return | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:392:49:394:3 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:393:12:393:12 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:393:12:393:12 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:393:12:393:12 | f | Args.T0 | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:393:12:393:12 | f | Return | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:393:12:393:16 | f(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:393:14:393:15 | "" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:396:16:396:16 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:396:16:396:16 | f | Args | {EXTERNAL LOCATION} | Tuple2 | +| overload_resolution.swift:396:16:396:16 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:396:16:396:16 | f | Args.T1 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:396:16:396:16 | f | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:396:45:398:3 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:397:12:397:12 | f | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:397:12:397:12 | f | Args | {EXTERNAL LOCATION} | Tuple2 | +| overload_resolution.swift:397:12:397:12 | f | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:397:12:397:12 | f | Args.T1 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:397:12:397:12 | f | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:397:12:397:18 | f(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:397:14:397:14 | 0 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:397:17:397:17 | 0 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:402:7:402:7 | p | | overload_resolution.swift:387:1:399:1 | Processor | +| overload_resolution.swift:402:11:402:21 | Processor(...) | | overload_resolution.swift:387:1:399:1 | Processor | +| overload_resolution.swift:403:7:403:8 | r1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:403:7:403:8 | r1 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:403:12:403:12 | p | | overload_resolution.swift:387:1:399:1 | Processor | +| overload_resolution.swift:403:12:403:34 | ... .apply(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:403:12:403:34 | ... .apply(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:403:20:403:33 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:403:20:403:33 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:403:20:403:33 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:403:20:403:33 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:403:20:403:33 | FunctionExpr | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:403:22:403:22 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:403:22:403:22 | x | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:403:27:403:27 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:403:27:403:27 | x | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:403:27:403:31 | ... + ... | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:403:27:403:31 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:403:31:403:31 | 1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:404:7:404:8 | r2 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:404:7:404:8 | r2 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:404:12:404:12 | p | | overload_resolution.swift:387:1:399:1 | Processor | +| overload_resolution.swift:404:12:404:36 | ... .apply(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:404:12:404:36 | ... .apply(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:404:20:404:35 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:404:20:404:35 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| overload_resolution.swift:404:20:404:35 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:404:20:404:35 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:404:20:404:35 | FunctionExpr | Return | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:404:22:404:22 | s | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:404:22:404:22 | s | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:404:27:404:27 | s | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:404:27:404:27 | s | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:404:27:404:33 | ... + ... | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:404:27:404:33 | Block | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:404:31:404:33 | "!" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:405:7:405:8 | r3 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:7:405:8 | r3 | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:405:12:405:12 | p | | overload_resolution.swift:387:1:399:1 | Processor | +| overload_resolution.swift:405:12:405:37 | ... .apply(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:12:405:37 | ... .apply(...) | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:405:20:405:36 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| overload_resolution.swift:405:20:405:36 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple2 | +| overload_resolution.swift:405:20:405:36 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:20:405:36 | FunctionExpr | Args.T1 | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:20:405:36 | FunctionExpr | Return | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:22:405:22 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:25:405:25 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:30:405:30 | x | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:30:405:34 | ... + ... | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:30:405:34 | Block | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:405:34:405:34 | y | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:411:7:411:10 | data | | {EXTERNAL LOCATION} | Array | +| overload_resolution.swift:411:7:411:10 | data | Element | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:411:21:411:29 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| overload_resolution.swift:411:21:411:29 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:411:22:411:22 | 1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:411:25:411:25 | 2 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:411:28:411:28 | 3 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:412:7:412:10 | dict | | {EXTERNAL LOCATION} | Dictionary | +| overload_resolution.swift:412:7:412:10 | dict | Key | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:412:7:412:10 | dict | Value | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:412:30:412:32 | "a" | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:412:35:412:35 | 1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:414:14:414:18 | index | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:415:12:415:15 | data | | {EXTERNAL LOCATION} | Array | +| overload_resolution.swift:415:12:415:15 | data | Element | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:415:17:415:21 | index | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:418:14:418:16 | key | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:419:12:419:15 | dict | | {EXTERNAL LOCATION} | Dictionary | +| overload_resolution.swift:419:12:419:15 | dict | Key | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:419:12:419:15 | dict | Value | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:419:17:419:19 | key | | {EXTERNAL LOCATION} | String | +| overload_resolution.swift:419:25:419:25 | 0 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:424:7:424:8 | ms | | overload_resolution.swift:410:1:421:1 | MultiSubscript | +| overload_resolution.swift:424:12:424:27 | MultiSubscript(...) | | overload_resolution.swift:410:1:421:1 | MultiSubscript | +| overload_resolution.swift:425:7:425:8 | r1 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:425:12:425:13 | ms | | overload_resolution.swift:410:1:421:1 | MultiSubscript | +| overload_resolution.swift:425:12:425:20 | ... .get(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:425:19:425:19 | 0 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:426:7:426:8 | r2 | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:426:12:426:13 | ms | | overload_resolution.swift:410:1:421:1 | MultiSubscript | +| overload_resolution.swift:426:12:426:22 | ... .get(...) | | {EXTERNAL LOCATION} | Int | +| overload_resolution.swift:426:19:426:21 | "a" | | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:1:26:1:29 | pair | | {EXTERNAL LOCATION} | Tuple2 | +| pattern_matching.swift:1:26:1:29 | pair | T0 | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:1:26:1:29 | pair | T1 | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:2:7:2:20 | TupleExpr | | {EXTERNAL LOCATION} | Tuple2 | +| pattern_matching.swift:2:7:2:20 | TupleExpr | T0 | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:2:7:2:20 | TupleExpr | T1 | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:2:24:2:27 | pair | | {EXTERNAL LOCATION} | Tuple2 | +| pattern_matching.swift:2:24:2:27 | pair | T0 | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:2:24:2:27 | pair | T1 | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:8:8:8:14 | novalue | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:8:8:8:14 | novalue | T | pattern_matching.swift:7:19:7:19 | T | +| pattern_matching.swift:13:30:13:34 | input | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:13:30:13:34 | input | T | pattern_matching.swift:13:25:13:25 | T | +| pattern_matching.swift:14:10:14:14 | input | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:14:10:14:14 | input | T | pattern_matching.swift:13:25:13:25 | T | +| pattern_matching.swift:15:8:15:15 | ... .novalue | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:15:8:15:15 | ... .novalue | T | pattern_matching.swift:13:25:13:25 | T | +| pattern_matching.swift:17:8:17:24 | ... .value(...) | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:17:8:17:24 | ... .value(...) | T | pattern_matching.swift:13:25:13:25 | T | +| pattern_matching.swift:19:8:19:52 | ... .nested(...) | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:19:8:19:52 | ... .nested(...) | T | pattern_matching.swift:13:25:13:25 | T | +| pattern_matching.swift:23:8:23:45 | ... .nested(...) | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:23:8:23:45 | ... .nested(...) | T | pattern_matching.swift:13:25:13:25 | T | +| pattern_matching.swift:29:42:33:1 | Block | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:29:42:33:1 | Block | T | {EXTERNAL LOCATION} | Bool | +| pattern_matching.swift:30:7:30:7 | x | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:30:7:30:7 | x | T | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:30:11:30:32 | ... .value(...) | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:30:11:30:32 | ... .value(...) | T | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:30:30:30:31 | 42 | | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:31:7:31:7 | y | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:31:7:31:7 | y | T | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:31:11:31:38 | ... .novalue | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:31:11:31:38 | ... .novalue | T | {EXTERNAL LOCATION} | String | +| pattern_matching.swift:32:10:32:29 | ... .novalue | | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:32:10:32:29 | ... .novalue | T | {EXTERNAL LOCATION} | Bool | +| protocols.swift:8:7:8:12 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:10:8:10:13 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:10:24:12:3 | Block | | {EXTERNAL LOCATION} | Double | +| protocols.swift:11:5:11:8 | self | | protocols.swift:7:1:17:1 | Circle | +| protocols.swift:11:5:11:15 | ... .radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:11:5:11:24 | ... = ... | | {EXTERNAL LOCATION} | Double | +| protocols.swift:11:19:11:24 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:14:25:16:3 | Block | | {EXTERNAL LOCATION} | Double | +| protocols.swift:15:12:15:18 | 3.14159 | | {EXTERNAL LOCATION} | Double | +| protocols.swift:15:12:15:27 | ... * ... | | {EXTERNAL LOCATION} | Double | +| protocols.swift:15:12:15:36 | ... * ... | | {EXTERNAL LOCATION} | Double | +| protocols.swift:15:22:15:27 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:15:31:15:36 | radius | | {EXTERNAL LOCATION} | Double | +| protocols.swift:20:7:20:11 | width | | {EXTERNAL LOCATION} | Double | +| protocols.swift:21:7:21:12 | height | | {EXTERNAL LOCATION} | Double | +| protocols.swift:23:8:23:12 | width | | {EXTERNAL LOCATION} | Double | +| protocols.swift:23:23:23:28 | height | | {EXTERNAL LOCATION} | Double | +| protocols.swift:23:39:26:3 | Block | | {EXTERNAL LOCATION} | Double | +| protocols.swift:24:5:24:8 | self | | protocols.swift:19:1:31:1 | Rectangle | +| protocols.swift:24:5:24:14 | ... .width | | {EXTERNAL LOCATION} | Double | +| protocols.swift:24:5:24:22 | ... = ... | | {EXTERNAL LOCATION} | Double | +| protocols.swift:24:18:24:22 | width | | {EXTERNAL LOCATION} | Double | +| protocols.swift:25:5:25:8 | self | | protocols.swift:19:1:31:1 | Rectangle | +| protocols.swift:25:5:25:15 | ... .height | | {EXTERNAL LOCATION} | Double | +| protocols.swift:25:5:25:24 | ... = ... | | {EXTERNAL LOCATION} | Double | +| protocols.swift:25:19:25:24 | height | | {EXTERNAL LOCATION} | Double | +| protocols.swift:28:25:30:3 | Block | | {EXTERNAL LOCATION} | Double | +| protocols.swift:29:12:29:16 | width | | {EXTERNAL LOCATION} | Double | +| protocols.swift:29:12:29:25 | ... * ... | | {EXTERNAL LOCATION} | Double | +| protocols.swift:29:20:29:25 | height | | {EXTERNAL LOCATION} | Double | +| protocols.swift:34:7:34:7 | c | | protocols.swift:7:1:17:1 | Circle | +| protocols.swift:34:11:34:29 | Circle(...) | | protocols.swift:7:1:17:1 | Circle | +| protocols.swift:34:26:34:28 | 5.0 | | {EXTERNAL LOCATION} | Double | +| protocols.swift:35:7:35:8 | a1 | | {EXTERNAL LOCATION} | Double | +| protocols.swift:35:12:35:12 | c | | protocols.swift:7:1:17:1 | Circle | +| protocols.swift:35:12:35:19 | ... .area(...) | | {EXTERNAL LOCATION} | Double | +| protocols.swift:37:7:37:7 | r | | protocols.swift:19:1:31:1 | Rectangle | +| protocols.swift:37:11:37:44 | Rectangle(...) | | protocols.swift:19:1:31:1 | Rectangle | +| protocols.swift:37:28:37:30 | 3.0 | | {EXTERNAL LOCATION} | Double | +| protocols.swift:37:41:37:43 | 4.0 | | {EXTERNAL LOCATION} | Double | +| protocols.swift:38:7:38:8 | a2 | | {EXTERNAL LOCATION} | Double | +| protocols.swift:38:12:38:12 | r | | protocols.swift:19:1:31:1 | Rectangle | +| protocols.swift:38:12:38:19 | ... .area(...) | | {EXTERNAL LOCATION} | Double | +| protocols.swift:51:7:51:11 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:51:7:51:11 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:53:8:53:12 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:53:8:53:12 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:53:22:55:3 | Block | | {EXTERNAL LOCATION} | Array | +| protocols.swift:53:22:55:3 | Block | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:54:5:54:8 | self | | protocols.swift:49:1:64:1 | IntContainer | +| protocols.swift:54:5:54:14 | ... .items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:54:5:54:14 | ... .items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:54:5:54:22 | ... = ... | | {EXTERNAL LOCATION} | Array | +| protocols.swift:54:5:54:22 | ... = ... | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:54:18:54:22 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:54:18:54:22 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:58:12:58:16 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:58:12:58:16 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:58:18:58:18 | 0 | | {EXTERNAL LOCATION} | Int | +| protocols.swift:62:12:62:16 | items | | {EXTERNAL LOCATION} | Array | +| protocols.swift:62:12:62:16 | items | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:67:7:67:8 | ic | | protocols.swift:49:1:64:1 | IntContainer | +| protocols.swift:67:12:67:41 | IntContainer(...) | | protocols.swift:49:1:64:1 | IntContainer | +| protocols.swift:67:32:67:40 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| protocols.swift:67:32:67:40 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| protocols.swift:67:33:67:33 | 1 | | {EXTERNAL LOCATION} | Int | +| protocols.swift:67:36:67:36 | 2 | | {EXTERNAL LOCATION} | Int | +| protocols.swift:67:39:67:39 | 3 | | {EXTERNAL LOCATION} | Int | +| protocols.swift:68:7:68:10 | item | | {EXTERNAL LOCATION} | Int | +| protocols.swift:68:14:68:15 | ic | | protocols.swift:49:1:64:1 | IntContainer | +| protocols.swift:68:14:68:25 | ... .getItem(...) | | {EXTERNAL LOCATION} | Int | +| protocols.swift:69:7:69:9 | cnt | | {EXTERNAL LOCATION} | Int | +| protocols.swift:69:13:69:14 | ic | | protocols.swift:49:1:64:1 | IntContainer | +| protocols.swift:69:13:69:22 | ... .count(...) | | {EXTERNAL LOCATION} | Int | +| protocols.swift:83:7:83:10 | name | | {EXTERNAL LOCATION} | String | +| protocols.swift:84:7:84:14 | entityId | | {EXTERNAL LOCATION} | Int | +| protocols.swift:86:8:86:11 | name | | {EXTERNAL LOCATION} | String | +| protocols.swift:86:22:86:29 | entityId | | {EXTERNAL LOCATION} | Int | +| protocols.swift:86:37:89:3 | Block | | {EXTERNAL LOCATION} | Int | +| protocols.swift:87:5:87:8 | self | | protocols.swift:82:1:98:1 | Entity | +| protocols.swift:87:5:87:13 | ... .name | | {EXTERNAL LOCATION} | String | +| protocols.swift:87:5:87:20 | ... = ... | | {EXTERNAL LOCATION} | String | +| protocols.swift:87:17:87:20 | name | | {EXTERNAL LOCATION} | String | +| protocols.swift:88:5:88:8 | self | | protocols.swift:82:1:98:1 | Entity | +| protocols.swift:88:5:88:17 | ... .entityId | | {EXTERNAL LOCATION} | Int | +| protocols.swift:88:5:88:28 | ... = ... | | {EXTERNAL LOCATION} | Int | +| protocols.swift:88:21:88:28 | entityId | | {EXTERNAL LOCATION} | Int | +| protocols.swift:91:28:93:3 | Block | | {EXTERNAL LOCATION} | String | +| protocols.swift:92:12:92:15 | name | | {EXTERNAL LOCATION} | String | +| protocols.swift:95:20:97:3 | Block | | {EXTERNAL LOCATION} | Int | +| protocols.swift:96:12:96:19 | entityId | | {EXTERNAL LOCATION} | Int | +| protocols.swift:101:7:101:7 | e | | protocols.swift:82:1:98:1 | Entity | +| protocols.swift:101:11:101:44 | Entity(...) | | protocols.swift:82:1:98:1 | Entity | +| protocols.swift:101:24:101:29 | "test" | | {EXTERNAL LOCATION} | String | +| protocols.swift:101:42:101:43 | 42 | | {EXTERNAL LOCATION} | Int | +| protocols.swift:102:7:102:7 | d | | {EXTERNAL LOCATION} | String | +| protocols.swift:102:11:102:11 | e | | protocols.swift:82:1:98:1 | Entity | +| protocols.swift:102:11:102:21 | ... .display(...) | | {EXTERNAL LOCATION} | String | +| protocols.swift:103:7:103:9 | eid | | {EXTERNAL LOCATION} | Int | +| protocols.swift:103:13:103:13 | e | | protocols.swift:82:1:98:1 | Entity | +| protocols.swift:103:13:103:18 | ... .id(...) | | {EXTERNAL LOCATION} | Int | +| tuples.swift:1:5:1:9 | tuple | | {EXTERNAL LOCATION} | Tuple3 | +| tuples.swift:1:5:1:9 | tuple | T0 | {EXTERNAL LOCATION} | Int | +| tuples.swift:1:5:1:9 | tuple | T1 | {EXTERNAL LOCATION} | String | +| tuples.swift:1:5:1:9 | tuple | T2 | {EXTERNAL LOCATION} | Bool | +| tuples.swift:1:13:1:30 | TupleExpr | | {EXTERNAL LOCATION} | Tuple3 | +| tuples.swift:1:13:1:30 | TupleExpr | T0 | {EXTERNAL LOCATION} | Int | +| tuples.swift:1:13:1:30 | TupleExpr | T1 | {EXTERNAL LOCATION} | String | +| tuples.swift:1:13:1:30 | TupleExpr | T2 | {EXTERNAL LOCATION} | Bool | +| tuples.swift:1:14:1:14 | 1 | | {EXTERNAL LOCATION} | Int | +| tuples.swift:1:17:1:23 | "hello" | | {EXTERNAL LOCATION} | String | +| tuples.swift:1:26:1:29 | true | | {EXTERNAL LOCATION} | Bool | +| tuples.swift:3:5:3:5 | a | | {EXTERNAL LOCATION} | Int | +| tuples.swift:3:9:3:13 | tuple | | {EXTERNAL LOCATION} | Tuple3 | +| tuples.swift:3:9:3:13 | tuple | T0 | {EXTERNAL LOCATION} | Int | +| tuples.swift:3:9:3:13 | tuple | T1 | {EXTERNAL LOCATION} | String | +| tuples.swift:3:9:3:13 | tuple | T2 | {EXTERNAL LOCATION} | Bool | +| tuples.swift:3:9:3:15 | ... .0 | | {EXTERNAL LOCATION} | Int | +| tuples.swift:4:5:4:5 | b | | {EXTERNAL LOCATION} | String | +| tuples.swift:4:9:4:13 | tuple | | {EXTERNAL LOCATION} | Tuple3 | +| tuples.swift:4:9:4:13 | tuple | T0 | {EXTERNAL LOCATION} | Int | +| tuples.swift:4:9:4:13 | tuple | T1 | {EXTERNAL LOCATION} | String | +| tuples.swift:4:9:4:13 | tuple | T2 | {EXTERNAL LOCATION} | Bool | +| tuples.swift:4:9:4:15 | ... .1 | | {EXTERNAL LOCATION} | String | +| tuples.swift:5:5:5:5 | c | | {EXTERNAL LOCATION} | Bool | +| tuples.swift:5:9:5:13 | tuple | | {EXTERNAL LOCATION} | Tuple3 | +| tuples.swift:5:9:5:13 | tuple | T0 | {EXTERNAL LOCATION} | Int | +| tuples.swift:5:9:5:13 | tuple | T1 | {EXTERNAL LOCATION} | String | +| tuples.swift:5:9:5:13 | tuple | T2 | {EXTERNAL LOCATION} | Bool | +| tuples.swift:5:9:5:15 | ... .2 | | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:2:9:2:13 | value | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:3:10:3:14 | value | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:3:20:5:5 | Block | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:4:9:4:12 | self | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:4:9:4:12 | self | T | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:4:9:4:18 | ... .value | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:4:9:4:26 | ... = ... | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:4:22:4:26 | value | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:6:26:8:5 | Block | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:7:16:7:19 | self | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:7:16:7:19 | self | T | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:7:16:7:25 | ... .value | | type_alias.swift:1:15:1:15 | T | +| type_alias.swift:17:13:17:14 | a1 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:17:13:17:14 | a1 | T | {EXTERNAL LOCATION} | Int | +| type_alias.swift:17:27:17:28 | a2 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:17:27:17:28 | a2 | T | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:17:27:17:28 | a2 | T.T0 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:17:27:17:28 | a2 | T.T1 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:17:47:17:48 | a3 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:17:47:17:48 | a3 | T | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:17:47:17:48 | a3 | T.T0 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:17:47:17:48 | a3 | T.T0.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:17:47:17:48 | a3 | T.T1 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:17:47:17:48 | a3 | T.T1.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:18:9:18:10 | v1 | | {EXTERNAL LOCATION} | Int | +| type_alias.swift:18:14:18:15 | a1 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:18:14:18:15 | a1 | T | {EXTERNAL LOCATION} | Int | +| type_alias.swift:18:14:18:26 | ... .getValue(...) | | {EXTERNAL LOCATION} | Int | +| type_alias.swift:19:9:19:10 | v2 | | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:19:9:19:10 | v2 | T0 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:19:9:19:10 | v2 | T1 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:19:14:19:15 | a2 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:19:14:19:15 | a2 | T | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:19:14:19:15 | a2 | T.T0 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:19:14:19:15 | a2 | T.T1 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:19:14:19:26 | ... .getValue(...) | | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:19:14:19:26 | ... .getValue(...) | T0 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:19:14:19:26 | ... .getValue(...) | T1 | {EXTERNAL LOCATION} | Bool | +| type_alias.swift:20:9:20:10 | v3 | | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:20:9:20:10 | v3 | T0 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:20:9:20:10 | v3 | T0.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:20:9:20:10 | v3 | T1 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:20:9:20:10 | v3 | T1.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:20:14:20:15 | a3 | | type_alias.swift:1:1:9:1 | MyClass | +| type_alias.swift:20:14:20:15 | a3 | T | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:20:14:20:15 | a3 | T.T0 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:20:14:20:15 | a3 | T.T0.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:20:14:20:15 | a3 | T.T1 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:20:14:20:15 | a3 | T.T1.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:20:14:20:26 | ... .getValue(...) | | {EXTERNAL LOCATION} | Tuple2 | +| type_alias.swift:20:14:20:26 | ... .getValue(...) | T0 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:20:14:20:26 | ... .getValue(...) | T0.Wrapped | {EXTERNAL LOCATION} | String | +| type_alias.swift:20:14:20:26 | ... .getValue(...) | T1 | {EXTERNAL LOCATION} | Optional | +| type_alias.swift:20:14:20:26 | ... .getValue(...) | T1.Wrapped | {EXTERNAL LOCATION} | String | +| type_constraints.swift:3:29:3:29 | a | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:3:37:3:37 | b | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:3:48:5:1 | Block | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:4:6:4:6 | a | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:4:6:4:10 | ... < ... | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:4:10:4:10 | b | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:4:21:4:21 | a | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:4:39:4:39 | b | | type_constraints.swift:3:12:3:24 | T | +| type_constraints.swift:7:17:7:17 | a | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:7:25:7:25 | b | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:7:56:9:1 | Block | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:8:6:8:6 | a | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:8:6:8:10 | ... > ... | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:8:10:8:10 | b | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:8:21:8:21 | a | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:8:39:8:39 | b | | type_constraints.swift:7:12:7:12 | T | +| type_constraints.swift:12:7:12:8 | m1 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:12:12:12:22 | minOf(...) | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:12:18:12:18 | 3 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:12:21:12:21 | 7 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:13:7:13:8 | m2 | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:13:12:13:26 | minOf(...) | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:13:18:13:20 | "a" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:13:23:13:25 | "z" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:14:7:14:8 | m3 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:14:12:14:22 | maxOf(...) | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:14:18:14:18 | 3 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:14:21:14:21 | 7 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:15:7:15:8 | m4 | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:15:12:15:26 | maxOf(...) | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:15:18:15:20 | "a" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:15:23:15:25 | "z" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:29:7:29:9 | tag | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:30:7:30:14 | priority | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:32:8:32:10 | tag | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:32:21:32:28 | priority | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:32:36:35:3 | Block | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:33:5:33:8 | self | | type_constraints.swift:28:1:44:1 | TaggedItem | +| type_constraints.swift:33:5:33:12 | ... .tag | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:33:5:33:18 | ... = ... | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:33:16:33:18 | tag | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:34:5:34:8 | self | | type_constraints.swift:28:1:44:1 | TaggedItem | +| type_constraints.swift:34:5:34:17 | ... .priority | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:34:5:34:28 | ... = ... | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:34:21:34:28 | priority | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:37:28:39:3 | Block | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:38:12:38:14 | tag | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:41:25:43:3 | Block | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:42:12:42:19 | priority | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:46:48:46:51 | item | | type_constraints.swift:46:18:46:43 | T | +| type_constraints.swift:47:10:47:13 | item | | type_constraints.swift:46:18:46:43 | T | +| type_constraints.swift:50:30:50:30 | a | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:50:38:50:38 | b | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:51:50:53:1 | Block | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:52:10:52:10 | a | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:52:10:52:15 | ... == ... | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:52:15:52:15 | b | | type_constraints.swift:50:25:50:25 | T | +| type_constraints.swift:56:7:56:10 | item | | type_constraints.swift:28:1:44:1 | TaggedItem | +| type_constraints.swift:56:14:56:46 | TaggedItem(...) | | type_constraints.swift:28:1:44:1 | TaggedItem | +| type_constraints.swift:56:30:56:32 | "x" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:56:45:56:45 | 1 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:57:7:57:7 | s | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:57:11:57:27 | showAndSort(...) | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:57:23:57:26 | item | | type_constraints.swift:28:1:44:1 | TaggedItem | +| type_constraints.swift:58:7:58:8 | eq | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:58:12:58:41 | showSortAndCompare(...) | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:58:31:58:34 | item | | type_constraints.swift:28:1:44:1 | TaggedItem | +| type_constraints.swift:58:37:58:40 | item | | type_constraints.swift:28:1:44:1 | TaggedItem | +| type_constraints.swift:64:7:64:11 | first | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:65:7:65:12 | second | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:67:8:67:12 | first | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:67:18:67:23 | second | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:67:29:70:3 | Block | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:68:5:68:8 | self | | type_constraints.swift:63:1:79:1 | SortedPair | +| type_constraints.swift:68:5:68:8 | self | T | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:68:5:68:8 | self | U | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:68:5:68:14 | ... .first | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:68:5:68:22 | ... = ... | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:68:18:68:22 | first | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:69:5:69:8 | self | | type_constraints.swift:63:1:79:1 | SortedPair | +| type_constraints.swift:69:5:69:8 | self | T | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:69:5:69:8 | self | U | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:69:5:69:15 | ... .second | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:69:5:69:24 | ... = ... | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:69:19:69:24 | second | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:72:28:72:32 | other | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:72:46:74:3 | Block | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:73:12:73:16 | first | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:73:12:73:24 | ... < ... | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:73:20:73:24 | other | | type_constraints.swift:63:18:63:30 | T | +| type_constraints.swift:76:29:76:33 | other | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:76:47:78:3 | Block | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:77:12:77:17 | second | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:77:12:77:25 | ... < ... | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:77:21:77:25 | other | | type_constraints.swift:63:33:63:45 | U | +| type_constraints.swift:82:7:82:8 | sp | | type_constraints.swift:63:1:79:1 | SortedPair | +| type_constraints.swift:82:7:82:8 | sp | T | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:82:7:82:8 | sp | U | {EXTERNAL LOCATION} | String | +| type_constraints.swift:82:12:82:44 | SortedPair(...) | | type_constraints.swift:63:1:79:1 | SortedPair | +| type_constraints.swift:82:12:82:44 | SortedPair(...) | T | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:82:12:82:44 | SortedPair(...) | U | {EXTERNAL LOCATION} | String | +| type_constraints.swift:82:30:82:30 | 3 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:82:41:82:43 | "b" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:83:7:83:8 | r1 | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:83:12:83:13 | sp | | type_constraints.swift:63:1:79:1 | SortedPair | +| type_constraints.swift:83:12:83:13 | sp | T | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:83:12:83:13 | sp | U | {EXTERNAL LOCATION} | String | +| type_constraints.swift:83:12:83:37 | ... .isFirstSmaller(...) | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:83:36:83:36 | 5 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:84:7:84:8 | r2 | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:84:12:84:13 | sp | | type_constraints.swift:63:1:79:1 | SortedPair | +| type_constraints.swift:84:12:84:13 | sp | T | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:84:12:84:13 | sp | U | {EXTERNAL LOCATION} | String | +| type_constraints.swift:84:12:84:40 | ... .isSecondSmaller(...) | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:84:37:84:39 | "z" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:96:7:96:11 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:96:7:96:11 | items | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:98:8:98:12 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:98:8:98:12 | items | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:98:22:100:3 | Block | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:98:22:100:3 | Block | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:99:5:99:8 | self | | type_constraints.swift:94:1:105:1 | IntArray | +| type_constraints.swift:99:5:99:14 | ... .items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:99:5:99:14 | ... .items | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:99:5:99:22 | ... = ... | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:99:5:99:22 | ... = ... | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:99:18:99:22 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:99:18:99:22 | items | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:103:12:103:16 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:103:12:103:16 | items | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:103:18:103:18 | 0 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:109:7:109:11 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:109:7:109:11 | items | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:111:8:111:12 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:111:8:111:12 | items | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:111:25:113:3 | Block | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:111:25:113:3 | Block | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:112:5:112:8 | self | | type_constraints.swift:107:1:118:1 | StringArray | +| type_constraints.swift:112:5:112:14 | ... .items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:112:5:112:14 | ... .items | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:112:5:112:22 | ... = ... | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:112:5:112:22 | ... = ... | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:112:18:112:22 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:112:18:112:22 | items | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:116:12:116:16 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:116:12:116:16 | items | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:116:18:116:18 | 0 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:120:45:120:53 | container | | type_constraints.swift:120:19:120:37 | C | +| type_constraints.swift:121:10:121:18 | container | | type_constraints.swift:120:19:120:37 | C | +| type_constraints.swift:124:45:124:53 | container | | type_constraints.swift:124:19:124:37 | C | +| type_constraints.swift:125:10:125:18 | container | | type_constraints.swift:124:19:124:37 | C | +| type_constraints.swift:129:7:129:8 | ia | | type_constraints.swift:94:1:105:1 | IntArray | +| type_constraints.swift:129:12:129:36 | IntArray(...) | | type_constraints.swift:94:1:105:1 | IntArray | +| type_constraints.swift:129:28:129:35 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:129:28:129:35 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:129:29:129:30 | 10 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:129:33:129:34 | 20 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:130:7:130:8 | sa | | type_constraints.swift:107:1:118:1 | StringArray | +| type_constraints.swift:130:12:130:46 | StringArray(...) | | type_constraints.swift:107:1:118:1 | StringArray | +| type_constraints.swift:130:31:130:45 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:130:31:130:45 | ArrayLiteral | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:130:32:130:35 | "hi" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:130:38:130:44 | "there" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:131:31:131:32 | ia | | type_constraints.swift:94:1:105:1 | IntArray | +| type_constraints.swift:132:31:132:32 | sa | | type_constraints.swift:107:1:118:1 | StringArray | +| type_constraints.swift:138:7:138:11 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:140:8:140:12 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:140:20:142:3 | Block | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:141:5:141:8 | self | | type_constraints.swift:137:1:147:1 | Vehicle | +| type_constraints.swift:141:5:141:14 | ... .speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:141:5:141:22 | ... = ... | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:141:18:141:22 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:144:29:146:3 | Block | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:145:12:145:20 | "vehicle" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:150:17:150:21 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:150:29:152:3 | Block | | type_constraints.swift:137:1:147:1 | Vehicle | +| type_constraints.swift:151:5:151:9 | super | | type_constraints.swift:137:1:147:1 | Vehicle | +| type_constraints.swift:151:5:151:28 | ... .init(...) | | type_constraints.swift:137:1:147:1 | Vehicle | +| type_constraints.swift:151:23:151:27 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:154:38:156:3 | Block | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:155:12:155:16 | "car" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:158:25:160:3 | Block | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:159:12:159:17 | "beep" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:164:17:164:21 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:164:29:166:3 | Block | | type_constraints.swift:137:1:147:1 | Vehicle | +| type_constraints.swift:165:5:165:9 | super | | type_constraints.swift:137:1:147:1 | Vehicle | +| type_constraints.swift:165:5:165:28 | ... .init(...) | | type_constraints.swift:137:1:147:1 | Vehicle | +| type_constraints.swift:165:23:165:27 | speed | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:168:38:170:3 | Block | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:169:12:169:18 | "truck" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:172:25:174:3 | Block | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:173:12:173:20 | "hauling" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:177:36:177:36 | v | | type_constraints.swift:177:22:177:31 | T | +| type_constraints.swift:178:10:178:10 | v | | type_constraints.swift:177:22:177:31 | T | +| type_constraints.swift:182:7:182:9 | car | | type_constraints.swift:149:1:161:1 | Car | +| type_constraints.swift:182:13:182:27 | Car(...) | | type_constraints.swift:149:1:161:1 | Car | +| type_constraints.swift:182:24:182:26 | 100 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:183:7:183:11 | truck | | type_constraints.swift:163:1:175:1 | Truck | +| type_constraints.swift:183:15:183:30 | Truck(...) | | type_constraints.swift:163:1:175:1 | Truck | +| type_constraints.swift:183:28:183:29 | 60 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:184:7:184:8 | d1 | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:184:12:184:31 | describeVehicle(...) | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:184:28:184:30 | car | | type_constraints.swift:149:1:161:1 | Car | +| type_constraints.swift:185:7:185:8 | d2 | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:185:12:185:33 | describeVehicle(...) | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:185:28:185:32 | truck | | type_constraints.swift:163:1:175:1 | Truck | +| type_constraints.swift:186:7:186:7 | h | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:186:11:186:13 | car | | type_constraints.swift:149:1:161:1 | Car | +| type_constraints.swift:186:11:186:20 | ... .honk(...) | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:187:7:187:8 | hl | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:187:12:187:16 | truck | | type_constraints.swift:163:1:175:1 | Truck | +| type_constraints.swift:187:12:187:23 | ... .haul(...) | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:193:18:193:20 | lhs | | type_constraints.swift:192:1:194:1 | Summable | +| type_constraints.swift:193:29:193:31 | rhs | | type_constraints.swift:192:1:194:1 | Summable | +| type_constraints.swift:201:7:201:12 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:201:7:201:12 | values | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:203:8:203:13 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:203:8:203:13 | values | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:203:21:205:3 | Block | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:203:21:205:3 | Block | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:204:5:204:8 | self | | type_constraints.swift:200:1:210:1 | Accumulator | +| type_constraints.swift:204:5:204:8 | self | T | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:204:5:204:15 | ... .values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:204:5:204:15 | ... .values | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:204:5:204:24 | ... = ... | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:204:5:204:24 | ... = ... | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:204:19:204:24 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:204:19:204:24 | values | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:208:12:208:17 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:208:12:208:17 | values | Element | type_constraints.swift:200:20:200:20 | T | +| type_constraints.swift:214:12:214:17 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:214:19:214:19 | 0 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:214:24:214:29 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:214:31:214:31 | 1 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:220:12:220:17 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:220:35:222:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| type_constraints.swift:227:7:227:12 | intAcc | | type_constraints.swift:200:1:210:1 | Accumulator | +| type_constraints.swift:227:7:227:12 | intAcc | T | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:227:16:227:45 | Accumulator(...) | | type_constraints.swift:200:1:210:1 | Accumulator | +| type_constraints.swift:227:16:227:45 | Accumulator(...) | T | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:227:36:227:44 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:227:36:227:44 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:227:37:227:37 | 1 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:227:40:227:40 | 2 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:227:43:227:43 | 3 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:228:7:228:9 | cnt | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:228:13:228:18 | intAcc | | type_constraints.swift:200:1:210:1 | Accumulator | +| type_constraints.swift:228:13:228:18 | intAcc | T | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:228:13:228:26 | ... .count(...) | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:229:13:229:18 | intAcc | | type_constraints.swift:200:1:210:1 | Accumulator | +| type_constraints.swift:229:13:229:18 | intAcc | T | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:230:7:230:9 | has | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:230:13:230:18 | intAcc | | type_constraints.swift:200:1:210:1 | Accumulator | +| type_constraints.swift:230:13:230:18 | intAcc | T | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:230:13:230:30 | ... .contains(...) | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:230:29:230:29 | 2 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:236:33:236:37 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:236:33:236:37 | items | Element | type_constraints.swift:236:18:236:28 | T | +| type_constraints.swift:237:12:237:16 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:237:12:237:16 | items | Element | type_constraints.swift:236:18:236:28 | T | +| type_constraints.swift:237:18:237:18 | 0 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:237:23:237:27 | items | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:237:23:237:27 | items | Element | type_constraints.swift:236:18:236:28 | T | +| type_constraints.swift:237:29:237:29 | 1 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:240:44:240:44 | a | | type_constraints.swift:240:14:240:25 | A | +| type_constraints.swift:240:52:240:52 | b | | type_constraints.swift:240:28:240:39 | B | +| type_constraints.swift:240:66:242:3 | Block | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:241:12:241:15 | true | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:246:7:246:7 | t | | type_constraints.swift:235:1:243:1 | Transformer | +| type_constraints.swift:246:11:246:23 | Transformer(...) | | type_constraints.swift:235:1:243:1 | Transformer | +| type_constraints.swift:247:7:247:8 | r1 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:247:12:247:12 | t | | type_constraints.swift:235:1:243:1 | Transformer | +| type_constraints.swift:247:12:247:33 | ... .transform(...) | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:247:24:247:32 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:247:24:247:32 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:247:25:247:25 | 3 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:247:28:247:28 | 1 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:247:31:247:31 | 2 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:248:7:248:8 | r2 | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:248:12:248:12 | t | | type_constraints.swift:235:1:243:1 | Transformer | +| type_constraints.swift:248:12:248:39 | ... .transform(...) | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:248:24:248:38 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:248:24:248:38 | ArrayLiteral | Element | {EXTERNAL LOCATION} | String | +| type_constraints.swift:248:25:248:27 | "c" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:248:30:248:32 | "a" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:248:35:248:37 | "b" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:249:7:249:8 | r3 | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:249:12:249:12 | t | | type_constraints.swift:235:1:243:1 | Transformer | +| type_constraints.swift:249:12:249:26 | ... .merge(...) | | {EXTERNAL LOCATION} | Bool | +| type_constraints.swift:249:20:249:20 | 1 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:249:23:249:25 | "x" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:254:29:254:33 | value | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:254:43:254:47 | lower | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:254:57:254:61 | upper | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:254:72:258:1 | Block | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:255:6:255:10 | value | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:255:6:255:18 | ... < ... | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:255:14:255:18 | lower | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:255:29:255:33 | lower | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:256:6:256:10 | value | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:256:6:256:18 | ... > ... | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:256:14:256:18 | upper | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:256:29:256:33 | upper | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:257:10:257:14 | value | | type_constraints.swift:254:12:254:24 | T | +| type_constraints.swift:261:7:261:8 | r1 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:261:12:261:36 | clamp(...) | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:261:18:261:18 | 5 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:261:26:261:26 | 0 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:261:34:261:35 | 10 | | {EXTERNAL LOCATION} | Int | +| type_constraints.swift:262:7:262:8 | r2 | | {EXTERNAL LOCATION} | Double | +| type_constraints.swift:262:12:262:41 | clamp(...) | | {EXTERNAL LOCATION} | Double | +| type_constraints.swift:262:18:262:20 | 3.5 | | {EXTERNAL LOCATION} | Double | +| type_constraints.swift:262:28:262:30 | 1.0 | | {EXTERNAL LOCATION} | Double | +| type_constraints.swift:262:38:262:40 | 2.0 | | {EXTERNAL LOCATION} | Double | +| type_constraints.swift:263:7:263:8 | r3 | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:263:12:263:41 | clamp(...) | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:263:18:263:20 | "m" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:263:28:263:30 | "a" | | {EXTERNAL LOCATION} | String | +| type_constraints.swift:263:38:263:40 | "z" | | {EXTERNAL LOCATION} | String | +testFailures diff --git a/unified/ql/test/library-tests/type-inference/type-inference.ql b/unified/ql/test/library-tests/type-inference/type-inference.ql new file mode 100644 index 000000000000..eab27d53c9ea --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/type-inference.ql @@ -0,0 +1,48 @@ +import utils.test.InlineExpectationsTest +import utils.test.TestUtils +import codeql.unified.internal.typeinference.Type +import codeql.unified.internal.typeinference.TypeInference as TypeInference +import codeql.unified.internal.StaticNameBinding +import TypeInference + +private predicate relevantNode(AstNode n) { n.fromSource() } + +query predicate inferCertainType(AstNode n, TypePath path, Type t) { + t = TypeInference::inferTypeCertain(n, path) and + not t instanceof PseudoType and + relevantNode(n) +} + +query predicate inferType(AstNode n, TypePath path, Type t) { + t = TypeInference::inferType(n, path) and + not t instanceof PseudoType and + relevantNode(n) +} + +module ResolveTest implements TestSig { + string getARelevantTag() { + result = "target" + or + result = "field" + } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(Callable c, CallExpr ce | + c = resolveCallTarget(ce) and + location = ce.getLocation() and + element = ce.toString() and + callableName(c, value) and + tag = "target" + ) + or + exists(VariableDeclaration field, Expr access | + field = resolveFieldAccess(access) and + location = access.getLocation() and + element = access.toString() and + nameBinding(field.getPattern(), value) and + tag = "field" + ) + } +} + +import MakeTest> diff --git a/unified/ql/test/library-tests/type-inference/type-inference.qlref b/unified/ql/test/library-tests/type-inference/type-inference.qlref new file mode 100644 index 000000000000..03d8a9288aab --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/type-inference.qlref @@ -0,0 +1,2 @@ +query: type-inference.ql +postprocess: utils/test/ExternalLocationPostProcessing.ql \ No newline at end of file diff --git a/unified/ql/test/library-tests/type-inference/type_alias.swift b/unified/ql/test/library-tests/type-inference/type_alias.swift new file mode 100644 index 000000000000..fc6cce56b7a6 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/type_alias.swift @@ -0,0 +1,21 @@ +class MyClass { + let value: T + init(value: T) { + self.value = value // $ field=MyClass.value + } + func getValue() -> T { + return self.value // $ field=MyClass.value + } +} + +typealias Alias1 = MyClass + +typealias Alias2 = MyClass<(T2, T2)> + +typealias Alias3 = Alias2 + +func test(_ a1: Alias1, _ a2: Alias2, _ a3: Alias3) { + let v1 = a1.getValue() // $ target=MyClass.getValue type=v1:Int + let v2 = a2.getValue() // $ target=MyClass.getValue type=v2@Tuple2:Bool + let v3 = a3.getValue() // $ target=MyClass.getValue type=v3@Tuple2.Optional:String +} diff --git a/unified/ql/test/library-tests/type-inference/type_constraints.swift b/unified/ql/test/library-tests/type-inference/type_constraints.swift new file mode 100644 index 000000000000..fd8f912870c2 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/type_constraints.swift @@ -0,0 +1,264 @@ +// --- where clause on generic function --- + +func minOf(_ a: T, _ b: T) -> T { + if a < b { return a } else { return b } +} + +func maxOf(_ a: T, _ b: T) -> T where T: Comparable { + if a > b { return a } else { return b } +} + +func testWhereClause() { + let m1 = minOf(3, 7) // $ type=m1:Int target=minOf + let m2 = minOf("a", "z") // $ type=m2:String target=minOf + let m3 = maxOf(3, 7) // $ type=m3:Int target=maxOf + let m4 = maxOf("a", "z") // $ type=m4:String target=maxOf +} + +// --- Multiple constraints on a single type parameter --- + +protocol Displayable2 { + func display() -> String +} + +protocol Sortable { + func sortKey() -> Int +} + +struct TaggedItem: Displayable2, Sortable, Equatable { + var tag: String + var priority: Int + + init(tag: String, priority: Int) { + self.tag = tag // $ type=tag:String field=TaggedItem.tag + self.priority = priority // $ type=priority:Int field=TaggedItem.priority + } + + func display() -> String { + return tag // $ type=tag:String field=TaggedItem.tag + } + + func sortKey() -> Int { + return priority // $ type=priority:Int field=TaggedItem.priority + } +} + +func showAndSort(_ item: T) -> String { + return item.display() // $ MISSING: target=Displayable2.display +} + +func showSortAndCompare(_ a: T, _ b: T) -> Bool +where T: Displayable2, T: Sortable, T: Equatable { + return a == b +} + +func testMultipleConstraints() { + let item = TaggedItem(tag: "x", priority: 1) // $ target=TaggedItem.init + let s = showAndSort(item) // $ type=s:String target=showAndSort + let eq = showSortAndCompare(item, item) // $ type=eq:Bool target=showSortAndCompare +} + +// --- Generic class with multiple constrained type parameters --- + +class SortedPair { + var first: T + var second: U + + init(first: T, second: U) { + self.first = first // $ type=first:T field=SortedPair.first + self.second = second // $ type=second:U field=SortedPair.second + } + + func isFirstSmaller(than other: T) -> Bool { + return first < other // $ type=other:T field=SortedPair.first + } + + func isSecondSmaller(than other: U) -> Bool { + return second < other // $ type=other:U field=SortedPair.second + } +} + +func testMultiConstrainedParams() { + let sp = SortedPair(first: 3, second: "b") // $ target=SortedPair.init + let r1 = sp.isFirstSmaller(than: 5) // $ type=r1:Bool target=SortedPair.isFirstSmaller + let r2 = sp.isSecondSmaller(than: "z") // $ type=r2:Bool target=SortedPair.isSecondSmaller +} + +// --- Associated type constraints (same-type constraint) --- + +protocol ElementContainer { + associatedtype Element + func first() -> Element +} + +struct IntArray: ElementContainer { + typealias Element = Int + var items: [Int] + + init(items: [Int]) { + self.items = items // $ field=IntArray.items + } + + func first() -> Int { + return items[0] // $ field=IntArray.items + } +} + +struct StringArray: ElementContainer { + typealias Element = String + var items: [String] + + init(items: [String]) { + self.items = items // $ field=StringArray.items + } + + func first() -> String { + return items[0] // $ field=StringArray.items + } +} + +func extractFirst(from container: C) -> C.Element where C.Element == Int { // name=extractFirst1 + return container.first() // $ MISSING: target=ElementContainer.first +} + +func extractFirst(from container: C) -> C.Element where C.Element == String { // name=extractFirst2 + return container.first() // $ MISSING: target=ElementContainer.first +} + +func testSameTypeConstraint() { + let ia = IntArray(items: [10, 20]) // $ target=IntArray.init + let sa = StringArray(items: ["hi", "there"]) // $ target=StringArray.init + let r1 = extractFirst(from: ia) // $ target=extractFirst1 $ MISSING: type=r1:Int $ SPURIOUS: target=extractFirst2 + let r2 = extractFirst(from: sa) // $ target=extractFirst2 $ MISSING: type=r2:String $ SPURIOUS: target=extractFirst1 +} + +// --- Superclass constraint on type parameter --- + +class Vehicle { + var speed: Int + + init(speed: Int) { + self.speed = speed // $ type=speed:Int field=Vehicle.speed + } + + func describe() -> String { + return "vehicle" + } +} + +class Car: Vehicle { + override init(speed: Int) { + super.init(speed: speed) // $ target=Vehicle.init + } + + override func describe() -> String { + return "car" + } + + func honk() -> String { + return "beep" + } +} + +class Truck: Vehicle { + override init(speed: Int) { + super.init(speed: speed) // $ target=Vehicle.init + } + + override func describe() -> String { + return "truck" + } + + func haul() -> String { + return "hauling" + } +} + +func describeVehicle(_ v: T) -> String { + return v.describe() // $ MISSING: target=Vehicle.describe +} + +func testSuperclassConstraint() { + let car = Car(speed: 100) // $ type=car:Car target=Car.init + let truck = Truck(speed: 60) // $ type=truck:Truck target=Truck.init + let d1 = describeVehicle(car) // $ type=d1:String target=describeVehicle + let d2 = describeVehicle(truck) // $ type=d2:String target=describeVehicle + let h = car.honk() // $ type=h:String target=Car.honk + let hl = truck.haul() // $ type=hl:String target=Truck.haul +} + +// --- Constrained extension methods --- + +protocol Summable { + static func + (lhs: Self, rhs: Self) -> Self +} + +extension Int: Summable {} +extension Double: Summable {} +extension String: Summable {} + +struct Accumulator { + var values: [T] + + init(values: [T]) { + self.values = values // $ field=Accumulator.values + } + + func count() -> Int { + return values.count // $ field=Accumulator.values + } +} + +extension Accumulator where T: Summable { + func total() -> T { + return values[0] + values[1] // $ field=Accumulator.values $ MISSING: target=Summable.+ + } +} + +extension Accumulator where T: Equatable { + func contains(_ item: T) -> Bool { + return values.contains(where: { // $ field=Accumulator.values + $0 == item // $ MISSING: target=Equatable.== + }) + } +} + +func testConstrainedExtensions() { + let intAcc = Accumulator(values: [1, 2, 3]) // $ target=Accumulator.init + let cnt = intAcc.count() // $ type=cnt:Int target=Accumulator.count + let tot = intAcc.total() // $ target=Accumulator.total $ MISSING: type=tot:Int + let has = intAcc.contains(2) // $ type=has:Bool target=Accumulator.contains +} + +// --- Generic method with its own constrained type parameter --- + +class Transformer { + func transform(_ items: [T]) -> T { + return items[0] + items[1] // $ MISSING: target=Summable.+ + } + + func merge(_ a: A, _ b: B) -> Bool { + return true + } +} + +func testMethodTypeParams() { + let t = Transformer() // $ target=Transformer.init + let r1 = t.transform([3, 1, 2]) // $ type=r1:Int target=Transformer.transform + let r2 = t.transform(["c", "a", "b"]) // $ type=r2:String target=Transformer.transform + let r3 = t.merge(1, "x") // $ type=r3:Bool target=Transformer.merge +} + +// --- Recursive constraint (Comparable requiring Equatable) --- + +func clamp(_ value: T, min lower: T, max upper: T) -> T { + if value < lower { return lower } + if value > upper { return upper } + return value +} + +func testRecursiveConstraint() { + let r1 = clamp(5, min: 0, max: 10) // $ type=r1:Int target=clamp + let r2 = clamp(3.5, min: 1.0, max: 2.0) // $ type=r2:Double target=clamp + let r3 = clamp("m", min: "a", max: "z") // $ type=r3:String target=clamp +} diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/PathInjectionTest.expected b/unified/ql/test/query-tests/security/CWE-022/PathInjection/PathInjectionTest.expected new file mode 100644 index 000000000000..45d502f8e647 --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/PathInjectionTest.expected @@ -0,0 +1,303 @@ +#select +| testPathInjection.swift:346:24:346:32 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:346:24:346:32 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:349:30:349:38 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:349:30:349:38 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:350:22:350:30 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:350:22:350:30 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:351:34:351:45 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:351:34:351:45 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:352:26:352:37 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:352:26:352:37 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:355:40:355:48 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:355:40:355:48 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:356:44:356:55 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:356:44:356:55 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:358:13:358:21 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:358:13:358:21 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:359:35:359:46 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:359:35:359:46 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:360:44:360:55 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:360:44:360:55 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:361:33:361:44 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:361:33:361:44 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:362:28:362:36 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:362:28:362:36 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:363:40:363:51 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:363:40:363:51 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:364:35:364:46 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:364:35:364:46 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:365:23:365:31 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:365:23:365:31 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:366:27:366:38 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:366:27:366:38 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:367:22:367:30 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:367:22:367:30 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:368:30:368:38 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:368:30:368:38 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:369:51:369:59 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:369:51:369:59 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:371:13:371:21 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:371:13:371:21 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:374:34:374:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:374:34:374:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:376:21:376:29 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:376:21:376:29 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:377:34:377:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:377:34:377:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:378:25:378:36 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:378:25:378:36 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:379:37:379:48 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:379:37:379:48 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:380:21:380:29 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:380:21:380:29 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:381:34:381:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:381:34:381:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:382:25:382:36 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:382:25:382:36 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:383:37:383:48 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:383:37:383:48 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:384:31:384:39 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:384:31:384:39 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:385:60:385:68 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:385:60:385:68 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:386:35:386:46 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:386:35:386:46 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:387:60:387:71 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:387:60:387:71 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:388:21:388:29 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:388:21:388:29 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:389:34:389:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:389:34:389:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:390:25:390:36 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:390:25:390:36 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:391:37:391:48 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:391:37:391:48 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:392:50:392:61 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:392:50:392:61 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:393:35:393:46 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:393:35:393:46 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:395:17:395:28 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:395:17:395:28 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:396:41:396:52 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:396:41:396:52 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:397:33:397:44 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:397:33:397:44 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:398:38:398:49 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:398:38:398:49 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:399:51:399:62 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:399:51:399:62 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:400:43:400:54 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:400:43:400:54 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:401:34:401:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:401:34:401:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:403:50:403:61 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:403:50:403:61 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:404:42:404:53 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:404:42:404:53 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:405:40:405:51 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:405:40:405:51 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:406:43:406:54 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:406:43:406:54 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:407:60:407:71 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:407:60:407:71 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:408:50:408:61 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:408:50:408:61 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:410:26:410:36 | remoteNsUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:410:26:410:36 | remoteNsUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:412:52:412:62 | remoteNsUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:412:52:412:62 | remoteNsUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:415:41:415:52 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:415:41:415:52 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:416:41:416:52 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:416:41:416:52 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:417:41:417:52 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:417:41:417:52 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:419:43:419:54 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:419:43:419:54 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:420:43:420:54 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:420:43:420:54 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:421:26:421:34 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:421:26:421:34 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:422:30:422:41 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:422:30:422:41 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:424:59:424:70 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:424:59:424:70 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:425:46:425:76 | TypeCastExpr | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:425:46:425:76 | TypeCastExpr | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:426:42:426:72 | TypeCastExpr | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:426:42:426:72 | TypeCastExpr | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:436:25:436:33 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:436:25:436:33 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:437:26:437:37 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:437:26:437:37 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:441:28:441:39 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:441:28:441:39 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:443:32:443:43 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:443:32:443:43 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:445:33:445:44 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:445:33:445:44 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:447:40:447:51 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:447:40:447:51 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:456:15:456:26 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:456:15:456:26 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:482:22:482:33 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:482:22:482:33 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:486:25:486:36 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:486:25:486:36 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:498:49:498:60 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:498:49:498:60 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | +| testPathInjection.swift:502:26:502:36 | remoteData2 | testPathInjection.swift:501:23:501:75 | Data(...) | testPathInjection.swift:502:26:502:36 | remoteData2 | This path depends on a $@. | testPathInjection.swift:501:23:501:75 | Data(...) | user-provided value | +| testPathInjection.swift:512:37:512:48 | remoteString | testPathInjection.swift:506:24:506:78 | String(...) | testPathInjection.swift:512:37:512:48 | remoteString | This path depends on a $@. | testPathInjection.swift:506:24:506:78 | String(...) | user-provided value | +| testPathInjection.swift:514:33:514:44 | remoteString | testPathInjection.swift:506:24:506:78 | String(...) | testPathInjection.swift:514:33:514:44 | remoteString | This path depends on a $@. | testPathInjection.swift:506:24:506:78 | String(...) | user-provided value | +| testPathInjection.swift:531:28:531:39 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:531:28:531:39 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | +| testPathInjection.swift:543:32:543:43 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:543:32:543:43 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | +| testPathInjection.swift:544:38:544:49 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:544:38:544:49 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | +| testPathInjection.swift:545:45:545:56 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:545:45:545:56 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | +| testPathInjection.swift:549:32:549:41 | ... .pointee | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:549:32:549:41 | ... .pointee | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | +| testPathInjection.swift:561:35:561:46 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:561:35:561:46 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | +| testPathInjection.swift:562:41:562:52 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:562:41:562:52 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | +| testPathInjection.swift:584:25:584:36 | remoteString | testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:584:25:584:36 | remoteString | This path depends on a $@. | testPathInjection.swift:582:24:582:78 | String(...) | user-provided value | +| testPathInjection.swift:586:41:586:52 | remoteString | testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:586:41:586:52 | remoteString | This path depends on a $@. | testPathInjection.swift:582:24:582:78 | String(...) | user-provided value | +| testPathInjection.swift:588:38:588:49 | remoteString | testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:588:38:588:49 | remoteString | This path depends on a $@. | testPathInjection.swift:582:24:582:78 | String(...) | user-provided value | +| testPathInjection.swift:590:22:590:33 | remoteString | testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:590:22:590:33 | remoteString | This path depends on a $@. | testPathInjection.swift:582:24:582:78 | String(...) | user-provided value | +edges +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:341:33:341:44 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:342:37:342:48 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:351:34:351:45 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:352:26:352:37 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:356:44:356:55 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:359:35:359:46 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:360:44:360:55 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:361:33:361:44 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:363:40:363:51 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:364:35:364:46 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:366:27:366:38 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:378:25:378:36 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:379:37:379:48 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:382:25:382:36 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:383:37:383:48 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:386:35:386:46 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:387:60:387:71 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:390:25:390:36 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:391:37:391:48 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:392:50:392:61 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:393:35:393:46 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:395:17:395:28 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:396:41:396:52 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:397:33:397:44 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:398:38:398:49 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:399:51:399:62 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:400:43:400:54 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:403:50:403:61 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:404:42:404:53 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:405:40:405:51 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:406:43:406:54 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:407:60:407:71 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:408:50:408:61 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:415:41:415:52 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:416:41:416:52 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:417:41:417:52 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:419:43:419:54 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:420:43:420:54 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:422:30:422:41 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:424:59:424:70 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:425:46:425:57 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:426:42:426:53 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:437:26:437:37 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:441:28:441:39 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:443:32:443:43 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:445:33:445:44 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:447:40:447:51 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:456:15:456:26 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:482:22:482:33 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:486:25:486:36 | remoteString | provenance | | +| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:498:49:498:60 | remoteString | provenance | | +| testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:340:9:340:20 | remoteString | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:346:24:346:32 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:349:30:349:38 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:350:22:350:30 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:355:40:355:48 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:358:13:358:21 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:362:28:362:36 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:365:23:365:31 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:367:22:367:30 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:368:30:368:38 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:369:51:369:59 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:371:13:371:21 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:374:34:374:42 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:376:21:376:29 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:377:34:377:42 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:380:21:380:29 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:381:34:381:42 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:384:31:384:39 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:385:60:385:68 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:388:21:388:29 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:389:34:389:42 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:401:34:401:42 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:421:26:421:34 | remoteUrl | provenance | | +| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:436:25:436:33 | remoteUrl | provenance | | +| testPathInjection.swift:341:33:341:44 | remoteString | testPathInjection.swift:341:9:341:17 | remoteUrl | provenance | | +| testPathInjection.swift:342:9:342:19 | remoteNsUrl | testPathInjection.swift:410:26:410:36 | remoteNsUrl | provenance | | +| testPathInjection.swift:342:9:342:19 | remoteNsUrl | testPathInjection.swift:412:52:412:62 | remoteNsUrl | provenance | | +| testPathInjection.swift:342:37:342:48 | remoteString | testPathInjection.swift:342:9:342:19 | remoteNsUrl | provenance | | +| testPathInjection.swift:425:46:425:57 | remoteString | testPathInjection.swift:425:46:425:76 | TypeCastExpr | provenance | | +| testPathInjection.swift:426:42:426:53 | remoteString | testPathInjection.swift:426:42:426:72 | TypeCastExpr | provenance | | +| testPathInjection.swift:501:9:501:19 | remoteData2 | testPathInjection.swift:502:26:502:36 | remoteData2 | provenance | | +| testPathInjection.swift:501:23:501:75 | Data(...) | testPathInjection.swift:501:9:501:19 | remoteData2 | provenance | | +| testPathInjection.swift:506:9:506:20 | remoteString | testPathInjection.swift:512:37:512:48 | remoteString | provenance | | +| testPathInjection.swift:506:9:506:20 | remoteString | testPathInjection.swift:514:33:514:44 | remoteString | provenance | | +| testPathInjection.swift:506:24:506:78 | String(...) | testPathInjection.swift:506:9:506:20 | remoteString | provenance | | +| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:531:28:531:39 | remoteString | provenance | | +| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:543:32:543:43 | remoteString | provenance | | +| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:544:38:544:49 | remoteString | provenance | | +| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:545:45:545:56 | remoteString | provenance | | +| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:548:18:548:29 | remoteString | provenance | | +| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:561:35:561:46 | remoteString | provenance | | +| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:562:41:562:52 | remoteString | provenance | | +| testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:521:9:521:20 | remoteString | provenance | | +| testPathInjection.swift:548:5:548:6 | [post] s1 [pointee] | testPathInjection.swift:549:32:549:33 | s1 [pointee] | provenance | | +| testPathInjection.swift:548:5:548:14 | ... .pointee | testPathInjection.swift:548:5:548:6 | [post] s1 [pointee] | provenance | | +| testPathInjection.swift:548:18:548:29 | remoteString | testPathInjection.swift:548:5:548:14 | ... .pointee | provenance | | +| testPathInjection.swift:549:32:549:33 | s1 [pointee] | testPathInjection.swift:549:32:549:41 | ... .pointee | provenance | | +| testPathInjection.swift:582:9:582:20 | remoteString | testPathInjection.swift:584:25:584:36 | remoteString | provenance | | +| testPathInjection.swift:582:9:582:20 | remoteString | testPathInjection.swift:586:41:586:52 | remoteString | provenance | | +| testPathInjection.swift:582:9:582:20 | remoteString | testPathInjection.swift:588:38:588:49 | remoteString | provenance | | +| testPathInjection.swift:582:9:582:20 | remoteString | testPathInjection.swift:590:22:590:33 | remoteString | provenance | | +| testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:582:9:582:20 | remoteString | provenance | | +nodes +| testPathInjection.swift:340:9:340:20 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:340:24:340:78 | String(...) | semmle.label | String(...) | +| testPathInjection.swift:341:9:341:17 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:341:33:341:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:342:9:342:19 | remoteNsUrl | semmle.label | remoteNsUrl | +| testPathInjection.swift:342:37:342:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:346:24:346:32 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:349:30:349:38 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:350:22:350:30 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:351:34:351:45 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:352:26:352:37 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:355:40:355:48 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:356:44:356:55 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:358:13:358:21 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:359:35:359:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:360:44:360:55 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:361:33:361:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:362:28:362:36 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:363:40:363:51 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:364:35:364:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:365:23:365:31 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:366:27:366:38 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:367:22:367:30 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:368:30:368:38 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:369:51:369:59 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:371:13:371:21 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:374:34:374:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:376:21:376:29 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:377:34:377:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:378:25:378:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:379:37:379:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:380:21:380:29 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:381:34:381:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:382:25:382:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:383:37:383:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:384:31:384:39 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:385:60:385:68 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:386:35:386:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:387:60:387:71 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:388:21:388:29 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:389:34:389:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:390:25:390:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:391:37:391:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:392:50:392:61 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:393:35:393:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:395:17:395:28 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:396:41:396:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:397:33:397:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:398:38:398:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:399:51:399:62 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:400:43:400:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:401:34:401:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:403:50:403:61 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:404:42:404:53 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:405:40:405:51 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:406:43:406:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:407:60:407:71 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:408:50:408:61 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:410:26:410:36 | remoteNsUrl | semmle.label | remoteNsUrl | +| testPathInjection.swift:412:52:412:62 | remoteNsUrl | semmle.label | remoteNsUrl | +| testPathInjection.swift:415:41:415:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:416:41:416:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:417:41:417:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:419:43:419:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:420:43:420:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:421:26:421:34 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:422:30:422:41 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:424:59:424:70 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:425:46:425:57 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:425:46:425:76 | TypeCastExpr | semmle.label | TypeCastExpr | +| testPathInjection.swift:426:42:426:53 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:426:42:426:72 | TypeCastExpr | semmle.label | TypeCastExpr | +| testPathInjection.swift:436:25:436:33 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:437:26:437:37 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:441:28:441:39 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:443:32:443:43 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:445:33:445:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:447:40:447:51 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:456:15:456:26 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:482:22:482:33 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:486:25:486:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:498:49:498:60 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:501:9:501:19 | remoteData2 | semmle.label | remoteData2 | +| testPathInjection.swift:501:23:501:75 | Data(...) | semmle.label | Data(...) | +| testPathInjection.swift:502:26:502:36 | remoteData2 | semmle.label | remoteData2 | +| testPathInjection.swift:506:9:506:20 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:506:24:506:78 | String(...) | semmle.label | String(...) | +| testPathInjection.swift:512:37:512:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:514:33:514:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:521:9:521:20 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:521:24:521:78 | String(...) | semmle.label | String(...) | +| testPathInjection.swift:531:28:531:39 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:543:32:543:43 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:544:38:544:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:545:45:545:56 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:548:5:548:6 | [post] s1 [pointee] | semmle.label | [post] s1 [pointee] | +| testPathInjection.swift:548:5:548:14 | ... .pointee | semmle.label | ... .pointee | +| testPathInjection.swift:548:18:548:29 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:549:32:549:33 | s1 [pointee] | semmle.label | s1 [pointee] | +| testPathInjection.swift:549:32:549:41 | ... .pointee | semmle.label | ... .pointee | +| testPathInjection.swift:561:35:561:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:562:41:562:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:582:9:582:20 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:582:24:582:78 | String(...) | semmle.label | String(...) | +| testPathInjection.swift:584:25:584:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:586:41:586:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:588:38:588:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:590:22:590:33 | remoteString | semmle.label | remoteString | +subpaths diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/PathInjectionTest.qlref b/unified/ql/test/query-tests/security/CWE-022/PathInjection/PathInjectionTest.qlref new file mode 100644 index 000000000000..1fab38d532b7 --- /dev/null +++ b/unified/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/unified/ql/test/query-tests/security/CWE-022/PathInjection/testPathInjection.swift b/unified/ql/test/query-tests/security/CWE-022/PathInjection/testPathInjection.swift new file mode 100644 index 000000000000..5474b426ec9f --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/testPathInjection.swift @@ -0,0 +1,597 @@ +// --- stubs --- + +struct URL { + enum DirectoryHint { + case inferFromPath + } + + init?(string: String) {} + init(fileURLWithPath path: String, isDirectory: Bool) {} + init( + filePath path: String, directoryHint: URL.DirectoryHint = .inferFromPath, + relativeTo base: URL? = nil + ) {} + + mutating func appendPathComponent(_ pathComponent: String) {} + func appendingPathComponent(_ pathComponent: String) -> URL { return self } +} + +class NSURL { + init?(string: String) {} + + func appendingPathComponent(_ pathComponent: String) -> URL? { return nil } + + var filePathURL: URL? { URL(string: "") } +} + +extension StringProtocol { + func completePath( + into outputName: UnsafeMutablePointer? = nil, + caseSensitive: Bool, + matchesInto outputArray: UnsafeMutablePointer<[String]>? = nil, + filterTypes: [String]? = nil + ) -> Int { 0 } +} + +extension String { + struct Encoding { + static let utf8 = Encoding() + } + + init(contentsOf: URL) { + let data = "" + self.init(data) + } + + init(contentsOfFile path: String) throws { + self.init("") + } + + init(contentsOfFile path: String, encoding enc: String.Encoding) throws { + self.init("") + } + + init(contentsOfFile path: String, usedEncoding: inout String.Encoding) throws { + self.init("") + } +} + +class NSString { + init() {} + init(string aString: String) {} + convenience init(contentsOfFile path: String, encoding enc: UInt) throws { self.init() } + convenience init(contentsOfFile path: String, usedEncoding enc: UnsafeMutablePointer?) + throws + { self.init() } + + func write(toFile: String, atomically: Bool, encoding: UInt) {} + func write(to: URL, atomically: Bool, encoding: UInt) {} + + var utf8String: UnsafePointer? { return nil } +} +protocol DataProtocol {} +class Data: DataProtocol { + struct ReadingOptions: OptionSet { let rawValue: Int } + struct WritingOptions: OptionSet { let rawValue: Int } + + init(_ elements: S) { count = 0 } + init(contentsOf: URL, options: ReadingOptions) { count = 0 } + + func copyBytes(to: UnsafeMutablePointer, count: Int) {} + + func write(to: URL, options: Data.WritingOptions = []) {} + + var count: Int +} + +class NSData { + init() {} + init?(contentsOfFile path: String) {} + init?(contentsOfMappedFile path: String) {} + init?(contentsOf url: URL) {} + class func dataWithContentsOfMappedFile(_ path: String) -> Any? { return nil } + + struct WritingOptions: OptionSet { let rawValue: Int } + func write(to: URL, atomically: Bool) -> Bool { return false } + func write(to: URL, options: NSData.WritingOptions) {} + func write(toFile: String, atomically: Bool) -> Bool { return false } + func write(toFile: String, options: NSData.WritingOptions) {} +} + +class NSKeyedUnarchiver { + func unarchiveObject(withFile: String) -> Any? { return nil } +} + +struct URLResourceKey {} + +struct FileAttributeKey: Hashable {} + +struct ObjCBool {} + +struct AutoreleasingUnsafeMutablePointer {} + +struct FilePath: ExpressibleByStringLiteral { + typealias StringLiteralType = String + init(stringLiteral: String) {} + func lexicallyNormalized() -> FilePath { return "" } + func starts(with: FilePath) -> Bool { return false } +} + +class FileManager { + class DirectoryEnumerator {} + struct DirectoryEnumerationOptions: OptionSet { let rawValue: Int } + struct ItemReplacementOptions: OptionSet { let rawValue: Int } + struct UnmountOptions: OptionSet { let rawValue: Int } + struct SearchPathDomainMask {} + enum SearchPathDirectory: UInt { case none } + enum URLRelationship: Int { case none } + + func contentsOfDirectory( + at: URL, includingPropertiesForKeys: [URLResourceKey]?, + options: FileManager.DirectoryEnumerationOptions + ) -> [URL] { return [] } + func contentsOfDirectory(atPath: String) -> [String] { return [] } + func enumerator( + at: URL, includingPropertiesForKeys: [URLResourceKey]?, + options: FileManager.DirectoryEnumerationOptions, errorHandler: ((URL, Error) -> Bool)? + ) -> FileManager.DirectoryEnumerator? { return nil } + func enumerator(atPath: String) -> FileManager.DirectoryEnumerator? { return nil } + func subpathsOfDirectory(atPath: String) -> [String] { return [] } + func subpaths(atPath: String) -> [String]? { return nil } + func createDirectory( + at: URL, withIntermediateDirectories: Bool, attributes: [FileAttributeKey: Any]? + ) {} + func createDirectory( + atPath: String, withIntermediateDirectories: Bool, attributes: [FileAttributeKey: Any]? + ) {} + func createFile(atPath: String, contents: Data?, attributes: [FileAttributeKey: Any]?) -> Bool { + return false + } + func removeItem(at: URL) {} + func removeItem(atPath: String) {} + func trashItem(at: URL, resultingItemURL: AutoreleasingUnsafeMutablePointer?) {} + func replaceItemAt( + _: URL, withItemAt: URL, backupItemName: String?, + options: FileManager.ItemReplacementOptions + ) -> URL? { return nil } + func replaceItem( + at: URL, withItemAt: URL, backupItemName: String?, + options: FileManager.ItemReplacementOptions, + resultingItemURL: AutoreleasingUnsafeMutablePointer? + ) {} + func copyItem(at: URL, to: URL) {} + func copyItem(atPath: String, toPath: String) {} + func moveItem(at: URL, to: URL) {} + func moveItem(atPath: String, toPath: String) {} + func createSymbolicLink(at: URL, withDestinationURL: URL) {} + func createSymbolicLink(atPath: String, withDestinationPath: String) {} + func linkItem(at: URL, to: URL) {} + func linkItem(atPath: String, toPath: String) {} + func destinationOfSymbolicLink(atPath: String) -> String { return "" } + func fileExists(atPath: String) -> Bool { return false } + func fileExists(atPath: String, isDirectory: UnsafeMutablePointer?) -> Bool { + return false + } + func setAttributes(_: [FileAttributeKey: Any], ofItemAtPath: String) {} + func contents(atPath: String) -> Data? { return nil } + func contentsEqual(atPath: String, andPath: String) -> Bool { return false } + func changeCurrentDirectoryPath(_: String) -> Bool { return false } + func unmountVolume( + at: URL, options: FileManager.UnmountOptions, completionHandler: (Error?) -> Void + ) {} + // Deprecated methods + func fileAttributes(atPath path: String, traverseLink yorn: Bool) -> [AnyHashable: Any]? { nil } + func changeFileAttributes(_: [AnyHashable: Any], atPath: String) -> Bool { return false } + func attributesOfItem(atPath path: String) throws -> [FileAttributeKey: Any] { return [:] } + func directoryContents(atPath: String) -> [Any]? { return nil } + func createDirectory(atPath: String, attributes: [AnyHashable: Any]) -> Bool { return false } + func createSymbolicLink(atPath: String, pathContent: String) -> Bool { return false } + func pathContentOfSymbolicLink(atPath: String) -> String? { return nil } + func replaceItemAtURL( + originalItemURL: NSURL, withItemAtURL: NSURL, backupItemName: String?, + options: FileManager.ItemReplacementOptions + ) -> NSURL? { return nil } +} + +struct FileDescriptor { + struct AccessMode: RawRepresentable { + static let readOnly = AccessMode(rawValue: 0) + let rawValue: UInt8 + init(rawValue: UInt8) { self.rawValue = rawValue } + } + + struct OpenOptions: RawRepresentable { + static let append = OpenOptions(rawValue: 0) + let rawValue: UInt8 + init(rawValue: UInt8) { self.rawValue = rawValue } + } +} + +struct FilePermissions: RawRepresentable { + static let ownerRead = FilePermissions(rawValue: 0) + let rawValue: UInt8 + init(rawValue: UInt8) { self.rawValue = rawValue } +} + +class ArchiveByteStream { + static func fileStream(fd: FileDescriptor, automaticClose: Bool = true) -> ArchiveByteStream? { + return nil + } + static func withFileStream( + fd: FileDescriptor, automaticClose: Bool = true, _ body: (ArchiveByteStream) -> E + ) -> E { return body(ArchiveByteStream()) } + static func fileStream( + path: FilePath, mode: FileDescriptor.AccessMode, options: FileDescriptor.OpenOptions, + permissions: FilePermissions + ) -> ArchiveByteStream? { return nil } + static func withFileStream( + path: FilePath, mode: FileDescriptor.AccessMode, options: FileDescriptor.OpenOptions, + permissions: FilePermissions, _ body: (ArchiveByteStream) -> E + ) -> E { return body(ArchiveByteStream()) } +} + +class Bundle { + init?(url: URL) {} + init?(path: String) {} +} + +class KeyPath { +} + +class NSSortDescriptor { + init(key: String?, ascending: Bool) {} + convenience init(keyPath: KeyPath, ascending: Bool) { + self.init(key: nil, ascending: ascending) + } +} + +// GRDB + +struct Configuration {} + +class Database { + init(path: String, description: String, configuration: Configuration) {} +} + +class DatabasePool { + init(path: String, configuration: Configuration) {} +} + +class DatabaseQueue { + init(path: String, configuration: Configuration) {} +} + +class DatabaseSnapshotPool { + init(path: String, configuration: Configuration) {} +} + +class SerializedDatabase { + init( + path: String, configuration: Configuration = Configuration(), defaultLabel: String, + purpose: String? = nil + ) {} +} + +// Realm + +class Realm { +} + +extension Realm { + struct Configuration { + init( + fileURL: URL? = URL(fileURLWithPath: "defaultFile", isDirectory: false), + inMemoryIdentifier: String? = nil, + syncConfiguration: Int = 0, + encryptionKey: Data? = nil, + readOnly: Bool = false, + schemaVersion: UInt64 = 0, + migrationBlock: Int = 0, + deleteRealmIfMigrationNeeded: Bool = false, + shouldCompactOnLaunch: Bool = false, + objectTypes: Int = 0, + seedFilePath: URL? = nil + ) {} + + var fileURL: URL? + var seedFilePath: URL? + } +} + +// sqlite3 + +func sqlite3_open( + _ filename: UnsafePointer?, + _ ppDb: UnsafeMutablePointer? +) -> Int32 { return 0 } + +func sqlite3_open16( + _ filename: UnsafeRawPointer?, + _ ppDb: UnsafeMutablePointer? +) -> Int32 { return 0 } + +func sqlite3_open_v2( + _ filename: UnsafePointer?, + _ ppDb: UnsafeMutablePointer?, + _ flags: Int32, + _ zVfs: UnsafePointer? +) -> Int32 { return 0 } + +var sqlite3_temp_directory: UnsafeMutablePointer? + +// SQLite.swift + +enum URIQueryParameter { +} + +class Connection { + enum Location { + case inMemory + case uri(String, parameters: [URIQueryParameter] = []) + } + + init(_ location: Location = .inMemory, readonly: Bool = false) throws {} + convenience init(_ filename: String, readonly: Bool = false) throws { try self.init() } +} + +// --- tests --- + +func test(buffer1: UnsafeMutablePointer, buffer2: UnsafeMutablePointer) { + 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: []) // $ Alert + + let nsData = NSData() + 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: []) // $ 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: [], // $ SPURIOUS: Alert + resultingItemURL: AutoreleasingUnsafeMutablePointer()) // $ MISSING: Alert + fm.replaceItem( + at: safeUrl, withItemAt: remoteUrl, backupItemName: nil, options: [], // $ SPURIOUS: Alert + resultingItemURL: AutoreleasingUnsafeMutablePointer()) // $ MISSING: 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) // $ 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) // $ 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) { // $ Alert + _ in + } + let _ = ArchiveByteStream.fileStream( + path: FilePath(stringLiteral: remoteString), mode: .readOnly, options: .append, + permissions: .ownerRead) // $ MISSING: Alert + ArchiveByteStream.withFileStream( + path: FilePath(stringLiteral: remoteString), mode: .readOnly, options: .append, + permissions: .ownerRead + ) { _ in } // $ MISSING: Alert + let _ = Bundle(url: remoteUrl) // $ Alert + let _ = Bundle(path: remoteString) // $ Alert + + // GRDB + + let _ = Database(path: remoteString, description: "", configuration: Configuration()) // $ Alert + let _ = Database(path: "", description: "", configuration: Configuration()) // Safe + let _ = DatabasePool(path: remoteString, configuration: Configuration()) // $ Alert + let _ = DatabasePool(path: "", configuration: Configuration()) // Safe + let _ = DatabaseQueue(path: remoteString, configuration: Configuration()) // $ Alert + let _ = DatabaseQueue(path: "", configuration: Configuration()) // Safe + let _ = DatabaseSnapshotPool(path: remoteString, configuration: Configuration()) // $ Alert + let _ = DatabaseSnapshotPool(path: "", configuration: Configuration()) // Safe + let _ = SerializedDatabase(path: remoteString, defaultLabel: "") // $ MISSING: Alert + let _ = SerializedDatabase(path: "", defaultLabel: "") // Safe + let _ = SerializedDatabase(path: remoteString, defaultLabel: "", purpose: nil) // $ MISSING: Alert + let _ = SerializedDatabase(path: "", defaultLabel: "", purpose: nil) // Safe + let _ = SerializedDatabase(path: remoteString, configuration: Configuration(), defaultLabel: "") // $ MISSING: Alert + let _ = SerializedDatabase(path: "", configuration: Configuration(), defaultLabel: "") // Safe + 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) // $ MISSING: Alert + _ = Realm.Configuration(seedFilePath: safeUrl) // GOOD + _ = Realm.Configuration(seedFilePath: remoteUrl) // $ MISSING: Alert + + var config = Realm.Configuration() // GOOD + config.fileURL = safeUrl // GOOD + config.fileURL = remoteUrl // $ MISSING: Alert + config.seedFilePath = safeUrl // GOOD + config.seedFilePath = remoteUrl // $ MISSING: Alert + + // sqlite3 + + var db: OpaquePointer? + let localData = Data(0) + let remoteData = Data(contentsOf: URL(string: "http://example.com/")!, options: []) // $ MISSING: 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) // $ Alert + _ = sqlite3_open16(buffer1, &db) // GOOD + _ = sqlite3_open16(buffer2, &db) // $ MISSING: Alert + _ = sqlite3_open_v2("myFile.sqlite3", &db, 0, nil) // GOOD + _ = 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: Alert // Originally missing + + // SQLite.swift + + try! _ = Connection() + try! _ = Connection(Connection.Location.uri("myFile.sqlite3")) // GOOD + try! _ = Connection(Connection.Location.uri(remoteString)) // $ MISSING: Alert + try! _ = Connection(Connection.Location.uri(remoteString, parameters: [])) // $ Alert + try! _ = Connection("myFile.sqlite3") // GOOD + try! _ = Connection(remoteString) // $ MISSING: Alert + let remoteData2 = Data(contentsOf: URL(string: "http://example.com/")!) // $ Source + nsData.write(toFile: remoteData2, options: []) // $ Alert +} + +func testBarriers() { + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source + + let fm = FileManager() + + let filePath = FilePath(stringLiteral: remoteString) + if filePath.lexicallyNormalized().starts(with: "/safe") { + let _ = fm.contents(atPath: remoteString) // $ SPURIOUS: Alert // Safe + } + 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/")!) // $ Source + + var u1 = URL(filePath: "") + _ = NSData(contentsOf: u1) + _ = NSData(contentsOf: u1.appendingPathComponent("")) + _ = NSData(contentsOf: u1.appendingPathComponent(remoteString)) // $ MISSING: Alert + _ = NSData(contentsOf: u1.appendingPathComponent(remoteString).appendingPathComponent("")) // $ MISSING: Alert + u1.appendPathComponent(remoteString) + _ = NSData(contentsOf: u1) // $ MISSING: Alert + + let u2 = URL(filePath: remoteString) // $ Alert + _ = NSData(contentsOf: u2) // $ MISSING: Alert + + let u3 = NSURL(string: "")! + Data("").write(to: u3.filePathURL!, options: []) + Data("").write(to: u3.appendingPathComponent("")!, options: []) + Data("").write(to: u3.appendingPathComponent(remoteString)!, options: []) // $ MISSING: Alert + + let u4 = NSURL(string: remoteString)! + Data("").write(to: u4.filePathURL!, options: []) // $ MISSING: Alert + Data("").write(to: u4.appendingPathComponent("")!, options: []) // $ MISSING: Alert + + _ = 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) // $ Alert + _ = NSData().write(toFile: s1[0], atomically: true) // $ MISSING: Alert // Originally missing + + _ = "".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: Alert // Originally missing + _ = NSData().write(toFile: s3[0], atomically: true) // $ MISSING: Alert + + _ = fm.fileAttributes(atPath: remoteString, traverseLink: true) // $ Alert + _ = try fm.attributesOfItem(atPath: remoteString) // $ Alert +} + +// --- + +func myOpenFile1(atPath path: String) {} +func myOpenFile2(_ filePath: String) {} +func myFindFiles(ofType type: Int, inDirectory dir: String) {} + +class MyClass { + init(contentsOfFile: String) {} + func doSomething(keyPath: String) {} + func write(toFile: String) {} +} + +class MyFile { + init(path: String) {} +} + +func testPathInjectionHeuristics() { + let remoteString = String(contentsOf: URL(string: "http://example.com/")!) // $ Source + + myOpenFile1(atPath: remoteString) // $ Alert + myOpenFile2(remoteString) // $ MISSING: Alert + myFindFiles(ofType: 0, inDirectory: remoteString) // $ Alert + + let mc = MyClass(contentsOfFile: remoteString) // $ Alert + mc.doSomething(keyPath: remoteString) // good - not a path + mc.write(toFile: remoteString) // $ Alert + + let mf1 = MyFile(path: "") + let mf2 = MyFile(path: remoteString) // $ MISSING: Alert // Originally missing + + _ = NSSortDescriptor(key: remoteString, ascending: true) // good - not a path + _ = NSSortDescriptor(keyPath: remoteString as! KeyPath, ascending: true) // good - not a path +} diff --git a/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLogging.expected b/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLogging.expected new file mode 100644 index 000000000000..cb3f1cb61f2f --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLogging.expected @@ -0,0 +1,8 @@ +#select +| CleartextLoggingBad.swift:2:7:2:44 | StringInterpolationExpr | CleartextLoggingBad.swift:2:35:2:42 | password | CleartextLoggingBad.swift:2:7:2:44 | StringInterpolationExpr | Logging of $@ | CleartextLoggingBad.swift:2:35:2:42 | password | sensitive data | +edges +| CleartextLoggingBad.swift:2:35:2:42 | password | CleartextLoggingBad.swift:2:7:2:44 | StringInterpolationExpr | provenance | | +nodes +| CleartextLoggingBad.swift:2:7:2:44 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| CleartextLoggingBad.swift:2:35:2:42 | password | semmle.label | password | +subpaths diff --git a/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLogging.qlref b/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLogging.qlref new file mode 100644 index 000000000000..53e950061f85 --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLogging.qlref @@ -0,0 +1,2 @@ +query: queries/security/CWE-312/CleartextLogging.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLoggingBad.swift b/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLoggingBad.swift new file mode 100644 index 000000000000..bb6e84d1892b --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLoggingBad.swift @@ -0,0 +1,2 @@ +let password = "P@ssw0rd" +NSLog("User password changed to \(password)") // $ Alert diff --git a/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLoggingGood.swift b/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLoggingGood.swift new file mode 100644 index 000000000000..1d90ac5e5656 --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-312/CleartextLogging/CleartextLoggingGood.swift @@ -0,0 +1,2 @@ +let password = "P@ssw0rd" +NSLog("User password changed") diff --git a/unified/ql/test/query-tests/unusedentities/UnusedVariable.expected b/unified/ql/test/query-tests/unusedentities/UnusedVariable.expected new file mode 100644 index 000000000000..41b89fbc987d --- /dev/null +++ b/unified/ql/test/query-tests/unusedentities/UnusedVariable.expected @@ -0,0 +1,2 @@ +| test.swift:2:9:2:9 | a | Unused local variable 'a' | +| test.swift:16:17:16:17 | b | Unused local variable 'b' | diff --git a/unified/ql/test/query-tests/unusedentities/UnusedVariable.qlref b/unified/ql/test/query-tests/unusedentities/UnusedVariable.qlref new file mode 100644 index 000000000000..67f81cd140b8 --- /dev/null +++ b/unified/ql/test/query-tests/unusedentities/UnusedVariable.qlref @@ -0,0 +1,2 @@ +query: queries/unusedentities/UnusedVariable.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/unified/ql/test/query-tests/unusedentities/test.swift b/unified/ql/test/query-tests/unusedentities/test.swift new file mode 100644 index 000000000000..117168664652 --- /dev/null +++ b/unified/ql/test/query-tests/unusedentities/test.swift @@ -0,0 +1,18 @@ +func t1() -> Int { + let a = 1 // $ Alert[unified/unused-variable] + let b = 2 + return b +} + +func t2() -> Int { + func foo(callback: (Int) -> Void) -> String { + callback() + return "df" + } + let a = 1 + print( + foo { _ in + print(a) + let b = 2 // $ Alert[unified/unused-variable] + }) +} diff --git a/unified/swift-syntax-rs/BUILD.bazel b/unified/swift-syntax-rs/BUILD.bazel index 553226143cbb..1eda8db26c1f 100644 --- a/unified/swift-syntax-rs/BUILD.bazel +++ b/unified/swift-syntax-rs/BUILD.bazel @@ -71,8 +71,7 @@ rust_library( exclude = ["src/main.rs"], ), edition = "2024", - target_compatible_with = UNIFIED_SUPPORTED_PLATFORMS, - deps = select({ + link_deps = select({ ":static_linux_runtime": [ # Keep these in linker order; sorting them produces an invalid group. ":static_runtime_group_start", @@ -87,6 +86,7 @@ rust_library( ":swift_syntax_ffi", ], }), + target_compatible_with = UNIFIED_SUPPORTED_PLATFORMS, ) # A debugging aid, for looking at the raw swift-syntax JSON for some input: diff --git a/unified/swift-syntax-rs/README.md b/unified/swift-syntax-rs/README.md index ee0e559820b4..32528952071d 100644 --- a/unified/swift-syntax-rs/README.md +++ b/unified/swift-syntax-rs/README.md @@ -10,69 +10,83 @@ builds that shim (via `build.rs`) and provides safe bindings on top of it. ## Output format The emitted JSON tree preserves the AST's named structure. Every node has a -`kind` and a `range` with `start`/`end` positions (UTF-8 `offset` plus 1-based -`line`/`column`). Beyond that: +`kind` and a half-open UTF-8 byte range encoded as 0-based `$pos`/`$end` +offsets. The root also has a `$lineStarts` array containing the UTF-8 byte +offset of every physical source line, so line/column positions can be +reconstructed without repeating them on every node. Beyond that: - **Tokens** carry `text`, `tokenKind`, and — only when non-empty — - `leadingTrivia`/`trailingTrivia` arrays of `{ kind, text }` pieces. + `leadingTrivia`/`trailingTrivia` arrays of `{ kind, text, $pos, $end }` + pieces. - **Layout nodes** (e.g. `functionDecl`) embed their children directly as members keyed by the child's name in the parent (`name`, `signature`, - `body`, …), alongside `kind`/`range`. Absent optional children are omitted. + `body`, …), alongside `kind`/`$pos`/`$end`. Absent optional children are + omitted. - **Collection nodes** (e.g. `codeBlockItemList`) are elided: a list-valued field is simply a JSON array of its elements (e.g. `parameters`, `statements`). - This drops the collection node's own `kind`/`range`. + This drops the collection node's own `kind`/location. Only meaningful trivia is kept — the four comment kinds (`lineComment`, `blockComment`, `docLineComment`, `docBlockComment`) and `unexpectedText` -(source the parser skipped). Whitespace trivia is dropped, since node ranges +(source the parser skipped). Whitespace trivia is dropped, since node offsets already encode positions. ### Example -Parsing `let x = 1 // c` produces the following (each `range` object is +Parsing `let x = 1 // c` produces the following (location offsets are abbreviated here as `…`): ```jsonc { + "$pos": 0, + "$end": …, + "$lineStarts": [0], "kind": "sourceFile", - "range": …, "statements": [ // collection node elided to an array { + "$pos": 0, + "$end": …, "kind": "codeBlockItem", - "range": …, "item": { + "$pos": 0, + "$end": …, "kind": "variableDecl", - "range": …, "attributes": [], // empty collection → empty array "modifiers": [], "bindingSpecifier": { // a token + "$pos": 0, + "$end": 3, "kind": "token", "text": "let", - "tokenKind": "keyword(SwiftSyntax.Keyword.let)", - "range": … + "tokenKind": "keyword(SwiftSyntax.Keyword.let)" }, "bindings": [ { + "$pos": …, + "$end": …, "kind": "patternBinding", - "range": …, "pattern": { + "$pos": …, + "$end": …, "kind": "identifierPattern", - "range": …, - "identifier": { "kind": "token", "text": "x", "tokenKind": "identifier(\"x\")", "range": … } + "identifier": { "$pos": …, "$end": …, "kind": "token", "text": "x", "tokenKind": "identifier(\"x\")" } }, "initializer": { + "$pos": …, + "$end": …, "kind": "initializerClause", - "range": …, - "equal": { "kind": "token", "text": "=", "tokenKind": "equal", "range": … }, + "equal": { "$pos": …, "$end": …, "kind": "token", "text": "=", "tokenKind": "equal" }, "value": { + "$pos": …, + "$end": …, "kind": "integerLiteralExpr", - "range": …, "literal": { + "$pos": …, + "$end": …, "kind": "token", "text": "1", "tokenKind": "integerLiteral(\"1\")", - "range": …, - "trailingTrivia": [ { "kind": "lineComment", "text": "// c" } ] + "trailingTrivia": [ { "$pos": …, "$end": …, "kind": "lineComment", "text": "// c" } ] } } } @@ -81,7 +95,7 @@ abbreviated here as `…`): } } ], - "endOfFileToken": { "kind": "token", "text": "", "tokenKind": "endOfFile", "range": … } + "endOfFileToken": { "$pos": …, "$end": …, "kind": "token", "text": "", "tokenKind": "endOfFile" } } ``` diff --git a/unified/swift-syntax-rs/src/lib.rs b/unified/swift-syntax-rs/src/lib.rs index a87c817a8935..db494f36a4fb 100644 --- a/unified/swift-syntax-rs/src/lib.rs +++ b/unified/swift-syntax-rs/src/lib.rs @@ -10,15 +10,15 @@ //! by the extractor's own pure-Rust adapter module, keeping the Swift toolchain //! out of the extractor's build. -use std::ffi::{CStr, CString}; +use std::ffi::CStr; use std::os::raw::c_char; // C ABI exported by the `SwiftSyntaxFFI` dynamic library. unsafe extern "C" { - /// Parse a NUL-terminated Swift source string, returning a heap-allocated + /// Parse a UTF-8 Swift source buffer, returning a heap-allocated /// NUL-terminated JSON string (or null on failure). The caller owns the /// returned pointer and must release it with `ssr_string_free`. - fn ssr_parse_json(source: *const c_char) -> *mut c_char; + fn ssr_parse_json(source: *const u8, source_len: usize) -> *mut c_char; /// Free a string previously returned by `ssr_parse_json`. fn ssr_string_free(ptr: *mut c_char); @@ -27,8 +27,6 @@ unsafe extern "C" { /// Errors that can occur while parsing Swift source. #[derive(Debug)] pub enum ParseError { - /// The provided source contained an interior NUL byte. - NulByte, /// The Swift shim returned no result. `SwiftParser` recovers from invalid /// syntax (it always produces a tree, possibly with error nodes), so this /// does *not* indicate a syntax error in the source — it means the shim @@ -39,7 +37,6 @@ pub enum ParseError { impl std::fmt::Display for ParseError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - ParseError::NulByte => write!(f, "source contained an interior NUL byte"), ParseError::SwiftFailure => { write!(f, "the swift-syntax shim failed to produce a JSON result") } @@ -58,13 +55,11 @@ impl std::error::Error for ParseError {} /// println!("{json}"); /// ``` pub fn parse_to_json(source: &str) -> Result { - let c_source = CString::new(source).map_err(|_| ParseError::NulByte)?; - - // SAFETY: `c_source` is a valid NUL-terminated string for the duration of - // the call. The returned pointer, if non-null, is owned by us and freed via - // `ssr_string_free` before returning. + // SAFETY: `source` is valid UTF-8 and its buffer remains alive for the + // duration of the call. The returned pointer, if non-null, is owned by us + // and freed via `ssr_string_free` before returning. unsafe { - let ptr = ssr_parse_json(c_source.as_ptr()); + let ptr = ssr_parse_json(source.as_ptr(), source.len()); if ptr.is_null() { return Err(ParseError::SwiftFailure); } @@ -86,12 +81,18 @@ mod tests { "unexpected tree: {json}" ); assert!(json.contains("\"text\":\"x\""), "unexpected tree: {json}"); - // Source ranges are emitted for every node. - assert!(json.contains("\"range\""), "missing ranges: {json}"); + // Compact UTF-8 source ranges are emitted for every node, with one + // source-wide line-start table. assert!( - json.contains("\"line\"") && json.contains("\"column\"") && json.contains("\"offset\""), + json.contains("\"$pos\"") + && json.contains("\"$end\"") + && json.contains("\"$lineStarts\""), "missing location fields: {json}" ); + assert!( + !json.contains("\"range\""), + "unexpected verbose range: {json}" + ); } #[test] @@ -126,6 +127,24 @@ mod tests { ); } + #[test] + fn parses_source_with_interior_nul() { + let json = parse_to_json("let x =\0 1").expect("parsing interior NUL should succeed"); + assert!( + json.contains(r#"\u0000"#), + "interior NUL should be preserved in the JSON tree: {json}" + ); + } + + #[test] + fn rejects_excessively_deep_syntax_tree() { + let source = format!("let x = a{}\n", ".a".repeat(2100)); + assert!( + matches!(parse_to_json(&source), Err(ParseError::SwiftFailure)), + "serialization should reject syntax trees beyond the supported depth" + ); + } + #[test] fn serializes_json_strings_and_keys_deterministically() { let source = "/* quote \" slash / backslash \\ tab \t newline\n emoji 😀 combining e\u{301} control \u{1} */\nlet x = 1"; @@ -138,11 +157,32 @@ mod tests { "JSON string was not escaped correctly: {json}" ); assert!( - json.contains(r#""start":{"column":1,"line":1,"offset":0}"#), + json.starts_with(r#"{"$end":"#) && json.contains(r#","$lineStarts":[0,"#), "JSON object keys were not sorted: {json}" ); } + #[test] + fn emits_utf8_offsets_with_swift_syntax_line_boundaries() { + let source = "// é😀\r\nlet x = 1\rlet y = 2\n"; + let json = parse_to_json(source).expect("parsing should succeed"); + + // SwiftSyntax recognizes LF, CR, and CRLF as physical line breaks. The + // offsets are UTF-8 bytes, so the first CRLF ends at byte 11. + assert!( + json.contains(r#""$lineStarts":[0,11,21,31]"#), + "unexpected line starts: {json}" + ); + assert!( + json.contains(r#""$end":16,"$pos":15,"kind":"token","text":"x""#), + "unexpected UTF-8 token range: {json}" + ); + assert!( + json.contains(r#""$end":26,"$pos":25,"kind":"token","text":"y""#), + "unexpected UTF-8 token range: {json}" + ); + } + #[test] fn captures_trivia() { // A leading comment is kept as trivia on the token it precedes. diff --git a/unified/swift-syntax-rs/swift/Sources/SwiftSyntaxFFI/SwiftSyntaxFFI.swift b/unified/swift-syntax-rs/swift/Sources/SwiftSyntaxFFI/SwiftSyntaxFFI.swift index e423e75cf33f..f62fffbaf28c 100644 --- a/unified/swift-syntax-rs/swift/Sources/SwiftSyntaxFFI/SwiftSyntaxFFI.swift +++ b/unified/swift-syntax-rs/swift/Sources/SwiftSyntaxFFI/SwiftSyntaxFFI.swift @@ -11,25 +11,24 @@ import SwiftParser import Darwin #endif -/// Convert an absolute position into an `{ offset, line, column }` dictionary. +/// Return the UTF-8 byte offset of the start of every physical source line. /// -/// `offset` is a UTF-8 byte offset; `line`/`column` are 1-based. -private func location( - _ position: AbsolutePosition, - _ converter: SourceLocationConverter -) -> [String: Any] { - let loc = converter.location(for: position) - return [ - "offset": position.utf8Offset, - "line": loc.line, - "column": loc.column, - ] +/// Deriving this from `SourceLocationConverter.sourceLines` keeps newline +/// handling exactly aligned with swift-syntax (`\n`, `\r`, and `\r\n`). +private func lineStarts(_ converter: SourceLocationConverter) -> [Any] { + var result: [Any] = [] + var offset = 0 + for line in converter.sourceLines { + result.append(offset) + offset += line.utf8.count + } + return result } /// Trivia kinds worth preserving in the serialized tree. Comments carry /// developer intent (including doc comments), and `unexpectedText` flags source /// the parser had to skip. Whitespace and multi-line-string escape markers are -/// dropped: node ranges already encode positions, so they would only bloat the +/// dropped: node offsets already encode positions, so they would only bloat the /// output. private let keptTriviaKinds: Set = [ "lineComment", @@ -39,7 +38,7 @@ private let keptTriviaKinds: Set = [ "unexpectedText", ] -/// Serialize a trivia collection into an array of `{ kind, text, range }` +/// Serialize a trivia collection into an array of `{ kind, text, $pos, $end }` /// pieces, keeping only the kinds in `keptTriviaKinds`. /// /// `start` is the absolute position of the first piece (a token's leading @@ -48,8 +47,7 @@ private let keptTriviaKinds: Set = [ /// accumulating piece lengths, so kept pieces carry an exact source location. private func serializeTrivia( _ trivia: Trivia, - startingAt start: AbsolutePosition, - _ converter: SourceLocationConverter + startingAt start: AbsolutePosition ) -> [Any] { var result: [Any] = [] var offset = start.utf8Offset @@ -61,12 +59,10 @@ private func serializeTrivia( let kind = Mirror(reflecting: piece).children.first?.label ?? "\(piece)" if keptTriviaKinds.contains(kind) { result.append([ + "$pos": offset, + "$end": offset + length, "kind": kind, "text": Trivia(pieces: [piece]).description, - "range": [ - "start": location(AbsolutePosition(utf8Offset: offset), converter), - "end": location(AbsolutePosition(utf8Offset: offset + length), converter), - ], ]) } offset += length @@ -76,55 +72,62 @@ private func serializeTrivia( /// Recursively convert a SwiftSyntax node into a JSON-serializable value. /// -/// * Tokens carry `kind`, `tokenKind`, `text`, and `range`, plus +/// * Tokens carry `kind`, `tokenKind`, `text`, `$pos`, and `$end`, plus /// `leadingTrivia`/`trailingTrivia` — but only when non-empty (after /// filtering, most tokens have no trivia, so the keys are simply absent). -/// * Layout nodes (e.g. `functionDecl`) carry `kind` and source `range`, and -/// additionally embed their children directly as members keyed by the +/// * Layout nodes (e.g. `functionDecl`) carry `kind`, `$pos`, and `$end`, +/// and additionally embed their children directly as members keyed by the /// child's name in the parent (e.g. `name`, `signature`, `body`); absent -/// optional children are omitted. Field names never collide with -/// `kind`/`range`. +/// optional children are omitted. /// * Collection nodes (e.g. `codeBlockItemList`) are *elided*: they become a /// plain array of their serialized elements, taking the place of the /// collection node itself. A list-valued layout field (e.g. `parameters`) is /// therefore simply a JSON array. This drops the collection node's own -/// `kind`/`range`, which are unnamed and largely recoverable from the +/// `kind`/location, which are unnamed and largely recoverable from the /// elements. -private func serialize( - _ node: Syntax, - _ converter: SourceLocationConverter -) -> Any { +private let maximumSerializationDepth = 2048 + +private struct SerializationDepthError: Error, CustomStringConvertible { + var description: String { + "syntax tree exceeds maximum serialization depth (\(maximumSerializationDepth))" + } +} + +private func serialize(_ node: Syntax, depth: Int = 1) throws -> Any { + if depth > maximumSerializationDepth { + throw SerializationDepthError() + } + if node.kind.isSyntaxCollection { - return node.children(viewMode: .sourceAccurate).map { - serialize($0, converter) + return try node.children(viewMode: .sourceAccurate).map { + try serialize($0, depth: depth + 1) } } - // Source range covering the node's content, excluding surrounding trivia. - let range: [String: Any] = [ - "start": location(node.positionAfterSkippingLeadingTrivia, converter), - "end": location(node.endPositionBeforeTrailingTrivia, converter), - ] + // Half-open UTF-8 byte range covering the node's content, excluding + // surrounding trivia. + let start = node.positionAfterSkippingLeadingTrivia.utf8Offset + let end = node.endPositionBeforeTrailingTrivia.utf8Offset if let token = node.as(TokenSyntax.self) { var result: [String: Any] = [ + "$pos": start, + "$end": end, "kind": "token", "tokenKind": "\(token.tokenKind)", "text": token.text, - "range": range, ] // Only emit trivia when present; after filtering, most tokens have none. // Leading trivia starts at the token's own position; trailing trivia // starts just after the token's content. let leading = serializeTrivia( - token.leadingTrivia, startingAt: token.position, converter) + token.leadingTrivia, startingAt: token.position) if !leading.isEmpty { result["leadingTrivia"] = leading } let trailing = serializeTrivia( token.trailingTrivia, - startingAt: token.endPositionBeforeTrailingTrivia, - converter) + startingAt: token.endPositionBeforeTrailingTrivia) if !trailing.isEmpty { result["trailingTrivia"] = trailing } @@ -132,8 +135,9 @@ private func serialize( } var result: [String: Any] = [ + "$pos": start, + "$end": end, "kind": "\(node.kind)", - "range": range, ] var unnamed = 0 for child in node.children(viewMode: .sourceAccurate) { @@ -141,10 +145,10 @@ private func serialize( // parent (the same mechanism SwiftSyntax uses for its debug dump). A // child that is a collection serializes to an array (see above). if let keyPath = child.keyPathInParent, let name = childName(keyPath) { - result[name] = serialize(child, converter) + result[name] = try serialize(child, depth: depth + 1) } else { // Defensive fallback for any unnamed layout child. - result["child\(unnamed)"] = serialize(child, converter) + result["child\(unnamed)"] = try serialize(child, depth: depth + 1) unnamed += 1 } } @@ -300,22 +304,36 @@ private func appendJSON(_ value: Any, to output: inout [UInt8]) throws { } } -/// Parse the given NUL-terminated Swift source string and return a -/// heap-allocated, NUL-terminated JSON representation of the syntax tree. +/// Parse the given UTF-8 Swift source buffer and return a heap-allocated, +/// NUL-terminated JSON representation of the syntax tree. /// /// The returned pointer is owned by the caller and MUST be released with /// `ssr_string_free`. Returns `nil` on failure. @_cdecl("ssr_parse_json") -public func ssr_parse_json(_ source: UnsafePointer?) -> UnsafeMutablePointer? { - guard let source = source else { return nil } - let code = String(cString: source) +public func ssr_parse_json( + _ source: UnsafePointer?, + _ sourceLength: Int +) -> UnsafeMutablePointer? { + guard sourceLength >= 0, source != nil || sourceLength == 0 else { return nil } + let sourceBytes = UnsafeBufferPointer(start: source, count: sourceLength) + let code = String(decoding: sourceBytes, as: UTF8.self) let tree = Parser.parse(source: code) // Fold operator sequences before serializing. Source positions are // preserved by folding (the same tokens, in the same places), so a // converter built from the original tree maps the folded tree correctly. let folded = foldOperators(in: tree) let converter = SourceLocationConverter(fileName: "", tree: tree) - let json = serialize(folded, converter) + let serialized: Any + do { + serialized = try serialize(folded) + } catch { + writeToStandardError("SwiftSyntaxFFI: JSON serialization failed: \(error)\n") + return nil + } + guard var json = serialized as? [String: Any] else { + return nil + } + json["$lineStarts"] = lineStarts(converter) var bytes: [UInt8] = [] do { diff --git a/unified/tools/BUILD.bazel b/unified/tools/BUILD.bazel index a4b4baed225c..103ded415c2d 100644 --- a/unified/tools/BUILD.bazel +++ b/unified/tools/BUILD.bazel @@ -6,6 +6,5 @@ codeql_pkg_files( "BUILD.bazel", ], exes = glob(["**/*"]), - prefix = "tools", visibility = ["//unified:__pkg__"], ) diff --git a/unified/tools/builtins/BUILD.bazel b/unified/tools/builtins/BUILD.bazel new file mode 100644 index 000000000000..666db59c0c12 --- /dev/null +++ b/unified/tools/builtins/BUILD.bazel @@ -0,0 +1,8 @@ +load("//misc/bazel:pkg.bzl", "codeql_pkg_files") + +codeql_pkg_files( + name = "builtins", + srcs = glob(["*.swift"]), + prefix = "builtins", + visibility = ["//unified:__subpackages__"], +) diff --git a/unified/tools/builtins/types.swift b/unified/tools/builtins/types.swift new file mode 100644 index 000000000000..5cdac835971a --- /dev/null +++ b/unified/tools/builtins/types.swift @@ -0,0 +1,220 @@ +// Provides built-in Swift types + +struct Bool {} + +struct Int {} + +struct String { + public init(_ value: T) where T: LosslessStringConvertible { + fatalError("Dummy implementation.") + } +} + +struct Character {} + +struct Substring {} + +struct Int8 {} + +struct Int16 {} + +struct Int32 {} + +struct Int64 {} + +struct UInt {} + +struct UInt8 {} + +struct UInt16 {} + +struct UInt32 {} + +struct UInt64 {} + +struct Float16 {} + +struct Float {} + +struct Double {} + +struct Float80 {} + +struct Array { + public func map(_ transform: (Element) throws(E) -> T) throws(E) -> [T] + where E: Error { + fatalError("Dummy implementation.") + } +} + +struct Dictionary {} + +struct Set {} + +enum Optional { + case none + case some(Wrapped) +} + +enum Result { + case success(Success) + case failure(Failure) +} + +struct Range {} + +struct ClosedRange {} + +struct PartialRangeFrom {} + +struct PartialRangeThrough {} + +struct PartialRangeUpTo {} + +enum Never {} + +struct UnsafePointer {} + +struct UnsafeMutablePointer {} + +struct UnsafeRawPointer {} + +struct UnsafeMutableRawPointer {} + +struct UnsafeBufferPointer {} + +struct UnsafeMutableBufferPointer {} + +struct UnsafeRawBufferPointer {} + +struct UnsafeMutableRawBufferPointer {} + +struct AutoreleasingUnsafeMutablePointer {} + +struct OpaquePointer {} + +struct Unmanaged {} + +struct Function { // `Args` is always instantiated as a tuple type + public func callAsFunction(args: Args) -> Return { + fatalError("Dummy implementation.") + } +} + +typealias Void = Tuple0 + +struct Tuple0 {} + +struct Tuple1 { + var _0: T0 +} + +struct Tuple2 { + var _0: T0 + var _1: T1 +} + +struct Tuple3 { + var _0: T0 + var _1: T1 + var _2: T2 +} + +struct Tuple4 { + var _0: T0 + var _1: T1 + var _2: T2 + var _3: T3 +} + +struct Tuple5 { + var _0: T0 + var _1: T1 + var _2: T2 + var _3: T3 + var _4: T4 +} + +struct Tuple6 { + var _0: T0 + var _1: T1 + var _2: T2 + var _3: T3 + var _4: T4 + var _5: T5 +} + +struct Tuple7 { + var _0: T0 + var _1: T1 + var _2: T2 + var _3: T3 + var _4: T4 + var _5: T5 + var _6: T6 +} + +struct Tuple8 { + var _0: T0 + var _1: T1 + var _2: T2 + var _3: T3 + var _4: T4 + var _5: T5 + var _6: T6 + var _7: T7 +} + +struct Tuple9 { + var _0: T0 + var _1: T1 + var _2: T2 + var _3: T3 + var _4: T4 + var _5: T5 + var _6: T6 + var _7: T7 + var _8: T8 +} + +struct Tuple10 { + var _0: T0 + var _1: T1 + var _2: T2 + var _3: T3 + var _4: T4 + var _5: T5 + var _6: T6 + var _7: T7 + var _8: T8 + var _9: T9 +} + +struct Tuple11 { + var _0: T0 + var _1: T1 + var _2: T2 + var _3: T3 + var _4: T4 + var _5: T5 + var _6: T6 + var _7: T7 + var _8: T8 + var _9: T9 + var _10: T10 +} + +struct Tuple12 { + var _0: T0 + var _1: T1 + var _2: T2 + var _3: T3 + var _4: T4 + var _5: T5 + var _6: T6 + var _7: T7 + var _8: T8 + var _9: T9 + var _10: T10 + var _11: T11 +}